let cp = ["#E29C4A", "#CF643C", "#8D38E3", "#0F76EE", "#1FBEA3"];
w = min(windowWidth, windowHeight);
for (let x = g / 2; x <= w - g / 2; x += g) {
for (let y = -g * 2; y <= w + g * 2; y += g) {
rotate(int(random(4)) * 90);
scale(random([-1, 1]), random([-1, 1]));
let mxlr = random(g / 80, g / 20);
stroke(random([random(cp), random(80, 255)]));
strokeWeight(random(1, mxlr));
arc(-g / 2, -g / 2, g, g, 0, 90);
strokeWeight(random(1, mxlr));
arc(g / 4, g / 4, g, g, 150, 300);
strokeWeight(random(1, mxlr));
arc(-g / 2, g / 2, g, g, 305, 360);
strokeWeight(random(1, mxlr));
arc(g / 2, -g / 2, g, g, 146, 180);
strokeWeight(random(1, mxlr));
strokeWeight(random(1, mxlr));
arc(-g / 2, 0, g, g, 330, 30);
strokeWeight(random(1, mxlr));
arc(-g / 4, 0, g / 2, g / 2, 55, 180);
strokeWeight(random(1, mxlr));
arc(0, 0, g / 2, g / 2, 305, 90);
strokeWeight(random(1, mxlr));
arc(-g / 2, -g / 2, g / 2, g / 2, 0, 90);
line(random([0, -g / 2]), 0, g / 2, 0);
line(0, 0, g / 2, g / 2);
line(0, -g / 2 + er / 1.5, g / 2, -g / 2 + er / 1.5);
ellipse(0, 0, er / 1.5, er / 1.5);
ellipse(er / 1.2, 0, er / 1.5, er / 1.5);
ellipse(-g / 2 + er / 2, -g / 2 + er / 2, er / 1.3, er / 1.3);
ellipse(g / 2 - er * 1.4, g / 2 - er * 1.4, er, er);
ellipse(er, -g / 2 + er / 1.5, er, er);
ellipse(er * 2.2, -g / 2 + er / 1.5, er, er);
ellipse(-g / 2 + er / 1.4, g / 2 - er / 1.4, er, er);
rakkan(rw/2.5, w-rw/1.25, rw, 0);
function addGlitch(blockCount) {
for (let i = 0; i < blockCount; i++) {
let gx = int(random(-w / 2, w + w / 2));
let gy = int(random(-w / 2, w + w / 2));
let gw = int(random(w / 10, w / 2));
let off = int(random(-w / 40, w / 40));
copy(gx, gy, gw, gh, gx + off, gy, gw, gh);
function rakkan(posx, posy, r, csw) {
rect(0, 0, r / 1.4, r * 1.5, r / 5);
for (let i = 0; i < 10; i++) {
let z = random(lr / 20, lr / 2);
vertex(nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(random(-z, z), -nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), random(-z, z));
vertex(random(-z, z), nr / 2 + random(-z, z));
vertex(nr / 2 + random(-z, z), nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), random(-z, z));
vertex(nr / 2 + random(-z, z), random(-z, z));
vertex(nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(random(-z, z), -nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), random(-z, z));
vertex(random(-z, z), nr / 2 + random(-z, z));
vertex(nr / 2 + random(-z, z), nr / 2 + random(-z, z));
vertex(nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), nr / 2 + random(-z, z));
vertex(nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(nr / 2 + random(-z, z), nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), random(-z, z));
vertex(nr / 2 + random(-z, z), random(-z, z));
vertex(nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), nr / 2 + random(-z, z));