0xd7e1…cc26

All memos sent from and to 0xd7e1…cc26.

0xd7e1bc51…cc26·#19,036,711·0xa0fd6338…064eeb
[PPPPPPPP[PPPPPbAddress: call to non-contractAddress: call to non-contractAddress: low-level delegate call failedAddress: low-level delegate call failedhttps://arweave.net/ov-_hiSqlILxvuUS_-D4frYTZ0E5PuMXAvdYAprZx6IDigital Bath: High Gainhttps://arweave.net/__vy_MZi_zXSAyVFBRfCwVQN2to3pbx0ikOU4uAZa0chttps://highlight-creator-assets.highlight.xyz/main/base-dir/9e135714-49b6-461a-b271-889e957b0427/onChainDir
0xd7e1bc51…cc26·#19,036,505·0xa3faf809…e4e771
[PPPPPPPP[PPPPPbAddress: call to non-contractAddress: call to non-contractAddress: low-level delegate call failedAddress: low-level delegate call failedhttps://arweave.net/c6wbbUnKll7U5g8rhtEiaDXXub9AFgPtBf7W3QfHSpAGewgaw: Spotlighthttps://arweave.net/bhzWT7C6xQ296MbXkV2DKQjINof4-vwFoqyZ_B-DiBQhttps://highlight-creator-assets.highlight.xyz/main/base-dir/7173f509-e72f-4258-acd9-acb4c244e673/onChainDir
0xd7e1bc51…cc26·#18,858,441·0xc4e9ca86…ac79bb
[PPPPPPPP[PPPPPbAddress: call to non-contractAddress: call to non-contractAddress: low-level delegate call failedAddress: low-level delegate call failedhttps://arweave.net/tdWZMzxgN8j2zobphaAW9hr2eAzXYoVYOQ5tTnX_MCshttps://arweave.net/kYccPLrQfTKHC6n8C4kveU0hy2bE2suo9DT3bJO-HPshttps://highlight-creator-assets.highlight.xyz/main/base-dir/92a9dcfc-8517-41cf-ab88-dfe76caafcdc/onChainDir
0xd7e1bc51…cc26·#18,535,905·0xb43f094f…a9f275
[PPPPPPPPPPPPP[PPPPbAddress: call to non-contractRoGenerativeSeries`Address: call to non-contractAddress: low-level delegate call failedAddress: low-level delegate call failedhttps://arweave.net/Faa55az6vxlyG6nywVIbFAq48_noEmZw5TN0HEZzvoghttps://arweave.net/bc9o1Bd0SCyYfTiG-3EDrD-87Os7bZez31ZesWBVP38https://highlight-creator-assets.highlight.xyz/main/base-dir/2a84abaa-90c7-4c92-985d-fbd3949e567d/onChainDir
0xd7e1bc51…cc26·#18,401,227·0x890dfe4d…72207a
[PPPPPPPPPPPPP[PPPPbAddress: call to non-contractRoGenerativeSeries`Address: call to non-contractAddress: low-level delegate call failedAddress: low-level delegate call failedhttps://arweave.net/ddptvkuUT2LX6Noju91-cHl8ov1Pc30gzD-MO03WMLQhttps://arweave.net/IfJEjmq4hY21f0-qzpF4sDO3rJqG3RQxdaxkpoLTOiUhttps://highlight-creator-assets.highlight.xyz/main/base-dir/7088e297-631a-427b-af8e-8f2a1f8930b9/onChainDir
From chaos we find order. With Dead Air I hope to find just enough order in a form of chaos that I've worked with from my earliest code-based artworks: analog video and television noise, or static. Static is chaos at its simplest and finest; random, confused pixels with no organization fighting across the screen. But amongst this chaos, a beauty can be found. Even in the act of giving it a name, we start to turn the chaos into order, the random pixels into static. The individual pixels, looked at closely, still show the characteristic trait of disorder, but as a whole, its an idea we understand. Dead air is the concept of silence during a broadcast, and here I imagine it to represent the loss of a signal, the static taking over to kill the order that was present before. All individual blocks in these outputs are made up of static: random pixels with just a hint of order to turn them into art. In the end, we have a grid of squares, with each square made up of its own square grid. The entire work is created from these small individual squares or pixels, over a half a million tiny pixels building up to the full work. Zoom in and you can see the chaos, zoom out and you see the order. Each square of the larger grid can be seen as its own separate generative work, with a random mix of pixels drawn for each. There are three types of patterns used: random, shaded, and gradient. Random patterns are absolute static: random pixels of two colors, four colors, or any random rgb value. Shaded patterns are random individual shades of a single base color. Gradient patterns can be straight or centered. Straight patterns increase or decrase randomly from the top or left, while centered patterns randomly select more or less pixels near the center. As these patterns are selected for each output, a layer of order is needed to give some meaning to the work. Bitwise operations, Perlin noise, and trigonometric functions are used to create a flow between patterns, building on my knowledge from past grid based works like Over the Air, Ode to Untitled, and Mellifera. Once the final work is drawn, we are left with static static: a still image, made up of individual chaotic pixels, with just enough order to make art. Each work can be oriented in four different configurations using the S (Spin) and M (Mirror) keys. High-resolution, print-ready outputs are available with the 1 (3000 x 4500), 2 (6000 x 9000), and 3 (9000 x 13500) keys. See Display Notes for more information.
console.log("Dead Air\nAugust 2023\nartplusbrad\n\nID: "+tokenData.tokenId+"\nHash: "+tokenData.hash);class Rm{constructor(){this.useA=!1;let t=function(t){let i=parseInt(t.substr(0,8),16),s=parseInt(t.substr(8,8),16),n=parseInt(t.substr(16,8),16),c=parseInt(t.substr(24,8),16);return function(){let t=((i|=0)+(s|=0)|0)+(c|=0)|0;return c=c+1|0,i=s^s>>>9,s=(n|=0)+(n<<3)|0,n=(n=n<<21|n>>>11)+t|0,(t>>>0)/4294967296}};this.prngA=new t(tokenData.hash.substr(2,32)),this.prngB=new t(tokenData.hash.substr(34,32));for(let t=0;t<1e6;t+=2)this.prngA(),this.prngB()}r_d(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}r_n(t,i){return t+(i-t)*this.r_d()}r_i(t,i){return Math.floor(this.r_n(t,i+1))}r_b(t){return this.r_d()<t}r_c(t){return t[this.r_i(0,t.length-1)]}}let ps,xc,yc,ws,hs,w,h,gZ,sqZ,gxCt,gyCt,aP,pID,aR,scP,niB,aN,ni,iSH,iSS,tB,aXID,sF,f2,f3,half,fl,qtr,td,bO,pX,hZ,ckCt,lP,hO,skM,csSqZ,nsSqCt,nsSqZ,nsSW,nTT,exMu,tanD,iCh,nA,bop,ckp,ckpb,iRot,iRot2,yii,xii,iEnd,dCt,bina,BITS,BLIM,INTM,bisc,spP,ips,ibs,R=new Rm,nsq=[],sCt=0,apG=[],apS=[],apP=[],atC=new Array(5),aGF=[],aX=[],cr=[],lnT=-1;for(let t=0;t<5;t++)apG.push(()=>{gr(cr[t],t)});for(let t=0;t<5;t++)apP.push(()=>{sk(cr[t])});for(let t=1;t<=2;t++)apS[apS.length]=function(t,i){st(1)};apS[apS.length]=function(t,i){st(2)};for(let t=0;t<4;t++)apS.push(()=>{st(3,cr[t],t)});for(let t=1;t<=2;t++)apS[apS.length]=function(t,i){st(4)};function ck(t,i){let s;strokeWeight(sF/ckCt);for(let i=0;i<ckCt;i++)for(let n=0;n<ckCt;n++)(i%2==0&&n%2==0||i%2==1&&n%2==1)&&R.r_b(.15)&&(s=!0),s?(stroke(t),fill(t)):(stroke(tB),fill(tB)),rect(n*csSqZ,i*csSqZ,csSqZ,csSqZ)}function gr(t,i){let s;strokeWeight(sF/ckCt);for(let n=0;n<ckCt;n++)for(let c=0;c<ckCt;c++){if(0===ckpb){let t=0===ckp[i]?n:c;s=R.r_b(t/ckCt)}else s=0===ckp[i]?R.r_b((abs(n-ckCt/2)+abs(c-ckCt/2))/2/(ckCt/2)):R.r_b((ckCt/2-(abs(ckCt/2-n)+abs(ckCt/2-c))/2)/(ckCt/2));s?(stroke(t),fill(t)):(stroke(tB),fill(tB)),rect(c*csSqZ,n*csSqZ,csSqZ,csSqZ)}}function st(t,i,s){let n;strokeWeight(nsSW);for(let e=0;e<nsSqCt;e++)for(let r=0;r<nsSqCt;r++)1===t?n=c(R.r_i(0,255)):2===t?n=color(R.r_i(0,255),R.r_i(0,255),R.r_i(0,255)):3===t?n=lerpColor(i,c(255),R.r_n(0,scP[s])):4===t&&(n=R.r_c([cr[0],cr[1],cr[2],cr[3]])),fill(n),stroke(n),rect(r*nsSqZ,e*nsSqZ,nsSqZ,nsSqZ)}function sk(t){let i;strokeWeight(sF/ckCt);for(let s=0;s<ckCt;s++)for(let n=0;n<ckCt;n++)(i=R.r_b(spP))?(stroke(t),fill(t)):(stroke(tB),fill(tB)),rect(n*csSqZ,s*csSqZ,csSqZ,csSqZ)}function sFt(){gZ=pS([8,30,53,76,89,100],[8,10,12.5,16,20,25]),(aP=[])[0]=[c(40),c(80),c(120),c(160)],aP[1]=[c("#DE2121"),c(0),c("#DEDE21"),c("#2121DE")],aP[2]=[c("#2e7daf"),c("#ffd507"),c("#2897ff"),c("#ff665b")],aP[3]=[c("#FFC800"),c("#E0AC00"),c(30),c(60)],aP[4]=[c("#efe5a7"),c("#002972"),c("#f7e038"),c("#852129")],aP[5]=[c("#6465a5"),c("#6975a6"),c("#f2e44b"),c("#ff4d35")],aP[6]=[c("#a3586d"),c("#5c4a72"),c("#f2be46"),c("#ef4e26")],aP[7]=[c("#FF00D4"),c("#D0FF00"),c("#00F7FF"),c("#6B0DFF")],aP[8]=[c("#D3002D"),c("#0D1156"),c("#4C2B56"),c("#C68419")],aP[9]=[c(40),c("#E04641"),c("#41C3E0"),c("#41E09E")],aP[10]=[c("#FF3255"),c("#FF32C5"),c("#7332FF"),c("#3281FF")],aP[11]=[c("#164849"),c("#02aca3"),c("#2a2833"),c("#970126")],aP[12]=[c("#55d9c0"),c("#ff60d2"),c("#107050"),c("#02231c")],aP[13]=[c("#1f3330"),c("#212027"),c("#f22f08"),c("#ff6f3f")],aP[14]=[c("#192e5b"),c("#2c42a5"),c("#4d52bc"),c("#00743f")],aP[15]=[c("#6F706F"),c("#65A547"),c("#f4ba18"),c("#f4650c")],aP[16]=[c(45),c("#FF353C"),c("#FF5E66"),c("#A53E44")],aP[17]=[c("#FF0F0F"),c("#0052FF"),c("#94B9EF"),c("#52607F")];let t=R.r_d();pID=t<.67?R.r_c([0,1,2,6,8,10,17]):R.r_c([3,4,5,7,9,11,12,13,14,15,16]);bO=R.r_b(.8)?1:0,aX.push([5,8,4]),aXID=0,ckpb=pS([40,100],[0,1]),iSH=R.r_b(.97),iSS=R.r_b(.4),noiseCt=pS([5,11,18,26,35,45,55,65,75,82,89,96,100],[4,5,6,7,8,9,11,13,15,19,23,27,49]),iRot=R.r_b(.5),iRot2=R.r_b(.5),ips=R.r_b(.2),ibs=R.r_b(.25)&&bO>0,spP=R.r_c([.33,.45,.5,.6,.7,.8])}function preload(){ps=getURLParams(),sFt(),iCh=R.r_b(.15),stC(),stCa(),stG(),half=.5*sqZ,fl=sqZ,qtr=.25*sqZ,td=.3333*sqZ,ckCt=2*Math.floor(gZ/2.5),csSqZ=sqZ/ckCt,nsSqZ=sqZ/(nsSqCt=ckCt),nsSW=f3/nsSqCt,ckp=[];for(let t=0;t<5;t++)ckp[t]=R.r_i(0,1);pX=0;for(let t=0;t<aX[aXID].length;t++)pX+=aX[aXID][t];aR=new Array(pX);let t=2.5+.25*R.r_i(0,3);aR[0]=R.r_n(0,1/aR.length*t);for(let i=1;i<aR.length-1;i++)aR[i]=R.r_n(aR[i-1],aR[i-1]+(1-aR[i-1])/(aR.length-1)*t);aR[aR.length-1]=1,SH(aGF=[...apG,...apS,...apP]),skM=1,gZ<=20&&(skM=1.6),stN(),stBG(),stB()}function c(t){return color(t)}function stC(){cr[0]=aP[pID][0],cr[1]=aP[pID][1],cr[2]=aP[pID][2],cr[3]=aP[pID][3],cr[4]=color(0),scP=[];for(let t=0;t<4;t++)scP[t]=.1*R.r_n(3,9)}function stBG(){tB=pS([40,65,85,100],[c(255),c(247),c("#F0F0DC"),c("#E1E6EB")])}function stCa(){let t=window.innerWidth,i=window.innerHeight;ws=800,hs=1200,ps.size?(pixelDensity(1),w=ps.size,h=1.5*ps.size):1.5*t>=i?(w=.6667*i,h=i):(w=t,h=1.5*t)}function stF(){}function stG(){gyCt=hs/gZ,hZ=.05*(sqZ=w/(gxCt=ws/gZ)),f2=sF=.06*sqZ,f3=.5*sqZ,hO=.008*sqZ,gZ>=50?f2=.02*sqZ:gZ>=25?f2=.03*sqZ:gZ>=8&&(f2=.06*sqZ)}function stB(){bO>0&&(bop=aGF[R.r_i(0,aGF.length-1)])}function stN(){aN=[],nTT=pS([67,100],[1,2]),stNT();let t=pS([15,45,65,80,90,100],[.9,.8,.65,.5,.25,.05]);for(let i=0;i<noiseCt;i++)if(aN.push(stNI()),0===i)nsq[i]=0;else{let s=Math.floor(gxCt*gyCt/noiseCt);do{nsq[i]=s*(i-1)+R.r_i(s*(1-t),s*(1+t))}while(nsq[i]<=nsq[i-1])}niB=R.r_n(0,1e5),noiseSeed(R.r_i(0,1e5)),ni=0,BITS=R.r_i(10,31),BLIM=Math.pow(2,BITS),INTM=(1<<BITS)-1,bisc=R.r_i(1,BITS-1),bina=R.r_i(1,BLIM)}function stNT(){do{1===nTT?nT=R.r_c([0,2,5,8,14]):2===nTT&&(nT=R.r_c([5,8,14]))}while(lnT===nT);lnT=nT,ips&&SH(aGF),ibs&&stB(),0===nT||2===nT?(exMu=R.r_i(1,6),tanD=R.r_i(1,6)):(tanD=R.r_i(1,4),exMu=R.r_i(1,tanD))}function stNI(){return pS([22,45,68,90,100],[.005,.0075,.01,.05,.01])}function SH(t){for(let i=t.length-1;i>0;i--){let s=R.r_i(0,i),n=t[i];t[i]=t[s],t[s]=n}}function pS(t,i){let s=R.r_d();for(let n=0;n<t.length;n++)if(s<=t[n]/100)return i[n]}function setup(){createCanvas(w,h),strokeCap(SQUARE),xc=width/2,yc=height/2,frameRate(60),ps.size?dCt=1e4:25===gZ?dCt=2:20===gZ?dCt=4:16===gZ?dCt=8:10===gZ?dCt=12:8===gZ?dCt=15:gZ<13&&(dCt=10)}function draw(){1===frameCount&&(background(tB),xii=0,yii=0),translate(xc,yc),iRot&&rotate(PI),iRot2&&scale(-1,1),ps.spin&&rotate(PI),ps.mirror&&scale(-1,1);for(let t=0;t<dCt&&!iEnd;t++)iSH?((xii===gxCt||iSS&yii%2==1&&-1===xii)&&(iCh&&(aN[ni]=stNI()),xii=iSS&++yii%2==1?gxCt-1:0),yii===gyCt?(noLoop(),iEnd=!0):grid(yii,xii),xii+=iSS&yii%2==1?-1:1):((yii===gyCt||iSS&xii%2==1&&-1===yii)&&(iCh&&(aN[ni]=stNI()),yii=iSS&++xii%2==1?gyCt-1:0),xii===gxCt?(noLoop(),iEnd=!0):grid(yii,xii),yii+=iSS&xii%2==1?-1:1);iEnd&&savC()}function noiseCheck(t,i){return 0===nT?noise(niB)+Math.pow(sin(niB),exMu)/tanD:2===nT?Math.pow(cos(niB)*cos(niB),exMu):5===nT?sin(sin(niB)):8===nT?i%(hs/gZ)*(noise(niB)/tanD)/(t%(hs/gZ))*exMu:14===nT?(bina=leftRotate(bina,bisc))/BLIM:void 0}function leftRotate(t,i){return INTM&(t<<i|t>>>BITS-i)}function rightRotate(t,i){return INTM&(t<<BITS-i|t>>>i)}function grid(t,i){if(sCt++,push(),translate(i*sqZ-xc,t*sqZ-yc),bO>0&&(0===i||i===gxCt-1||0===t||t===gyCt-1))bop(t,i);else{let s=!1;for(let n=0;n<aR.length;n++)if(noiseCheck(t,i)<aR[n]){aGF[n](t,i),s=!0;break}s||aGF[aGF.length-1](t,i)}pop(),niB+=aN[ni],ni<aN.length-1&&nsq[ni+1]===sCt&&(stNT(),ni++,bisc=R.r_i(1,BITS-1))}function keyPressed(){let t=keyCode,i=!1,s=!1,n=new URL(window.location.href),c=n.searchParams;if(c.delete("size"),49!==t&&50!==t&&51!==t||(i=!0),i){let i=3e3;50===t?i*=2:51===t&&(i*=3),c.set("size",i),s=!0}if(83===t&&iEnd&&(ps.spin?c.delete("spin"):c.set("spin","true"),s=!0),77===t&&iEnd&&(ps.mirror?c.delete("mirror"):c.set("mirror","true"),s=!0),s)return n.search=c.toString(),window.location.href=n.toString(),!1}function savC(){ps.size&&saveCanvas("DeadAir_"+tokenData.tokenId+"_"+tokenData.hash,"png")}
From the Insecta Class and Apidae Family, we find the Species Apis Mellifera: the western honey bee. One of the more iconic aspects of honey bees is their hive, the hexagonal grid we call honeycomb; an efficient use of resources and space, and a beautiful representation of a geometric shape found in nature. The humble grid has also been a mainstay of generative art from its earliest days. Code up a loop or two and see what you can do. What I've done with grids has been seen in many of my projects over the past year; in *Polka*, *Over the Air*, *Ode to Untitled*, and now *Mellifera*. Breaking from the rectangular and square grid, and embracing the complexities of the hexagonal grid, *Mellifera* creates patterns working within the points and sides of a hexagon while laying out those patterns across a honeycomb like structure. While working through this series of grid based projects, one main area of study has been finding ways to move off the grid, at least in appearance. A recent move to a rural home has left me much more off the grid, and there's been a parallel through my projects. Increasingly, I've explored ways to make the overall aesthetic not appear grid-like, to have a more organic feel, all the while though still centering elements perfectly in their place across the grid. *Mellifera*, with its use of hexagons, imperfections, unique symbols, rotation, and negative space, is another step in this evolution, and the largest one yet. While most of my work has embraced the digital and machine-like feel that computers and code are so easily capable of (again influenced from my appreciation of Roy), *Mellifera* moves in a new direction, introducing a more imperfect and human feel to the lines, shapes, and symbols. These imperfections change the overall aesthetic drastically and are a main component in helping break away from the grid, visually. While honey bees are incredible in their ability to create beautiful hexagonal geometric patterns, there's still a natural, lived-in feel to their creations, and *Mellifera* uses this organic quality as inspiration. *** **High-Resolution Downloads** * Press 1 for 3000 x 4500 * Press 2 for 6000 x 9000 * Press 3 for 9000 x 13500 See download limitations under Display Notes.
F.push(()=>{hxOut(bgst),hx6TriLine(bgst),hx6TriFill([R.RC(p),R.RC(p),R.RC(p),R.RC(p),R.RC(p),R.RC(p)])}),F.push(()=>{let h=[];for(let t=0;t<5;t++)h[t]=R.RC(p);hxRepeat(h,.1)}),F.push(()=>{hxSingDiam(R.RC(p),bgst)}),F.push(()=>{hxDoubDiam(R.RC(p),R.RC(p),bgst)}),F.push(()=>{hxSingSq(R.RC(p)),hxDoubTail(bgst)}),F.push(()=>{hxDoubSq(R.RC(p),R.RC(p)),hxDoubTail(bgst)}),F.push(()=>{hxFill(R.RC(p))}),F.push(()=>{static(function(){return R.RC(p)})}),F.push(()=>{static(function(){return stct%2==0?color(0):bg},apsCkSz)}),F.push(()=>{static(function(){return stct%2==0?color(0):bg},100*R.RI(apsCkMn,apsCkMx))}),F.push(()=>{static(function(){return stct%2==0?R.RC(p):bg},apsCkSz)}),F.push(()=>{let h=R.RC(p);static(function(){return stct%2==0?h:bg},apsCkSz)}),F.push(()=>{push();for(let h=0;h<=2;h++)d3Diam(R.RC(p)),rotate(p23);pop(),hx3dOut(bgst)})}let L=[];function SAL(){for(let h=0;h<p.length;h++)L.push(()=>{hxOut(p[h])}),L.push(()=>{hxMultLine(p[h],13)}),L.push(()=>{hxMultLine(p[h])}),L.push(()=>{hxMultLine(p[h],7)}),L.push(()=>{hxFiveLine(p[h])}),L.push(()=>{push(),rotate(p23),hxFiveLine(p[h]),pop()}),L.push(()=>{push(),rotate(2*p23),hxFiveLine(p[h]),pop()}),L.push(()=>{hxTwoLine(p[h])}),L.push(()=>{push(),rotate(p23),hxTwoLine(p[h]),pop()}),L.push(()=>{push(),rotate(2*p23),hxTwoLine(p[h]),pop()}),L.push(()=>{hxFiveLineTwice(p[h])}),L.push(()=>{hxDiamond(p[h])}),L.push(()=>{push(),rotate(p23),hxDiamond(p[h]),pop()}),L.push(()=>{push(),rotate(2*p23),hxDiamond(p[h]),pop()}),L.push(()=>{hxParBig(p[h])}),L.push(()=>{hxMer(p[h])}),L.push(()=>{hx3Line(p[h])}),L.push(()=>{hxT(p[h])}),L.push(()=>{hxFigure8(p[h])}),L.push(()=>{hx12TriLine(p[h])}),L.push(()=>{hxZ(p[h])}),L.push(()=>{hxX(p[h])}),L.push(()=>{hxPlus(p[h])}),L.push(()=>{hxRect(p[h])}),L.push(()=>{hxTripTail(p[h])}),L.push(()=>{hxDoubTail(p[h])}),L.push(()=>{hxCentFlip(p[h])}),L.push(()=>{hxDoubRect(p[h])}),L.push(()=>{hx3dOut(p[h])}),L.push(()=>{hx3dHash(p[h])})}let B=[];function SAB(){B.push(()=>{hxOut(bgst)}),B.push(()=>{hxMultLine(bgst,13)}),B.push(()=>{hxMultLine(bgst)}),B.push(()=>{hxMultLine(bgst,7)}),B.push(()=>{hxFiveLine(bgst)}),B.push(()=>{push(),rotate(p23),hxFiveLine(bgst),pop()}),B.push(()=>{push(),rotate(2*p23),hxFiveLine(bgst),pop()}),B.push(()=>{hxTwoLine(bgst)}),B.push(()=>{push(),rotate(p23),hxTwoLine(bgst),pop()}),B.push(()=>{push(),rotate(2*p23),hxTwoLine(bgst),pop()}),B.push(()=>{hxMer(bgst)}),B.push(()=>{hxT(bgst)}),B.push(()=>{hx3Line(bgst)}),B.push(()=>{hxDiamond(bgst)}),B.push(()=>{push(),rotate(p23),hxDiamond(bgst),pop()}),B.push(()=>{push(),rotate(2*p23),hxDiamond(bgst),pop()}),B.push(()=>{hxParBig(bgst)}),B.push(()=>{hxFiveLineTwice(bgst)}),B.push(()=>{hxFigure8(bgst)}),B.push(()=>{hx12TriLine(bgst)}),B.push(()=>{hxZ(bgst)}),B.push(()=>{hxX(bgst)}),B.push(()=>{hxPlus(bgst)}),B.push(()=>{hxRect(bgst)}),B.push(()=>{hxTripTail(bgst)}),B.push(()=>{hxDoubTail(bgst)}),B.push(()=>{hxCentFlip(bgst)}),B.push(()=>{hxDoubRect(bgst)}),B.push(()=>{hxFan(bgst)}),B.push(()=>{hxChev(bgst)}),B.push(()=>{hxShortLn(bgst)}),B.push(()=>{hxLongLn(bgst)}),B.push(()=>{hxShortLong(bgst)}),B.push(()=>{hx3dOut(bgst)}),B.push(()=>{hx3dHash(bgst)})}let stA=R.RB(.5)?0:1,stB=0===stA?1:0;function static(h,t=600){stct=0,hxMaskInit();let a=z/w*t;a=ckClose(a);let s=int(a);s+=s%2==0?stA:stB;let p=pa.width/s;for(let t=0;t<s;t++)for(let a=0;a<s;a++)pa.fill(h()),pa.rect(a*p-z,t*p-z,p,p),stct++;hxMask(),hxImgMask()}function dHexMa(h,t,a=0,s=0){ma.beginShape();for(let t=0;t<TWO_PI;t+=p3)iFlat?ma.vertex(a+h*cos(t)+gO(),s+h*sin(t)+gO()):ma.vertex(a+h*sin(t)+gO(),s+h*cos(t)+gO());ma.endShape(CLOSE)}function hxMaskInit(){pa.clear(),pa.noStroke()}function hxMask(){ma.clear(),ma.fill(0),ma.noStroke(),dHexMa(z,0)}function hxImgMask(){(im=pa.get()).mask(ma),image(im,-z,-z)}function hxFill(h,t=z){noStroke(),fill(h),dHex(t)}function hxStroke(h,t,a,s=z,p=o){a=1-a,noStroke(),fill(h),dHex(s,p*(s/z),0,0),fill(t),dHex(s*a,p*(s*a/z),0,0)}function hxParallel(h){let t=0===o?1:5;for(let h=1;h<=t;h++)hxParallelDraw(bgst,!1);hxParallelDraw(h,!0)}function hxParallelDraw(h,t){t?(fill(h),noStroke()):(noFill(),S(h)),beginShape(),vertex(ahc[0].x+gO(),ahc[0].y+gO()),vertex(ahc[1].x+gO(),ahc[1].y+gO()),vertex(ahc[2].x+gO(),ahc[2].y+gO()),vertex(ahc[3].x+gO(),ahc[3].y+gO()),endShape(CLOSE)}function hxOut(h){S(h),push();for(let h=1;h<=6;h++)H(ahc[0],ahc[1]),rotate(p3);pop()}function hxMultLine(h,t=10){S(h),tsz=iFlat?hxH/t:hxW/t,push();for(let h=1;h<=t;h++)H(ahc[5],ahc[4]),iFlat?translate(0,tsz):translate(tsz,0);pop()}function hxFiveLine(h){S(h),H(ahc[0],ahc[3]),H(ahs[5],ahs[3]),H(ahs[0],ahs[2]),H(ahc[1],ahc[2]),H(ahc[5],ahc[4])}function hxFiveLineTwice(h){hxFiveLine(h),push(),rotate(p3),hxFiveLine(h,w),pop()}function hxTwoLine(h){S(h),H(ahs[0],ahs[2]),H(ahs[3],ahs[5])}function hxFigure8(h){S(h),H(ahc[0],ahc[3]),H(ahc[1],ahc[4]),H(ahc[0],ahc[5]),H(ahc[5],ahc[4]),H(ahc[3],ahc[2]),H(ahc[2],ahc[1])}function hx6TriLine(h){S(h),push();for(let h=1;h<=6;h++)H(ahc[0],ahc[3]),rotate(p3);pop()}function hx12TriLine(h){S(h),push();for(let h=1;h<=6;h++)H(ahc[0],ahc[3]),H(ahs[0],ahs[3]),rotate(p3);pop()}function hxZ(h){S(h),H(ahs[2],ahc[4]),H(ahc[4],ahc[1]),H(ahc[1],ahs[5])}function hxX(h){S(h),H(ahs[0],ahs[3]),H(ahs[2],ahs[5])}function hxPlus(h){S(h),H(ahc[0],ahc[3]),H(ahs[1],ahs[4])}function hxRect(h){S(h),dRect()}function hxParBig(h){S(h),push(),hct%2==0&&rotate(PI),H(ahc[1],ahs[2]),H(ahs[2],ahs[3]),H(ahs[3],ahc[5]),H(ahc[5],ahc[1]),pop()}let iMero=R.RB(.5);function hxMer(h){push(),hct%2==0&&iMero&&rotate(PI),S(h),H(ahs[1],p0),H(ahs[3],p0),H(ahs[5],p0),pop()}function hxT(h){push(),hct%2==0&&rotate(PI),S(h),H(ahs[1],ahs[4]),H(ahc[3],p0),pop()}function hxShortLn(h){S(h),H(ahc[1],ahc[2],2*ic)}function hxLongLn(h){S(h),H(ahc[0],ahc[3],2*ic)}function hxShortLong(h){S(h),H(ahc[0],ahc[3],2*ic),H(ahc[1],ahc[2],2*ic)}function hxChev(h){S(h),H(ahc[0],ahs[1]),H(ahs[1],ahc[3]),H(ahs[5],p0),H(ahs[3],p0)}function hxFan(h){S(h),push(),rotate(PI*(hct%2)),H(ahc[0],ahs[1]),H(ahc[0],ahs[4]),H(ahc[0],ahs[2]),H(ahc[0],ahs[3]),pop()}let i3lo=R.RB(.5);function hx3Line(h){S(h),hx3LineHelp(),i3lo&&(push(),rotate(PI/2),hx3LineHelp(),pop())}function hx3LineHelp(){H(ahc[0],ahc[4]),H(ahs[0],ahs[3]),H(ahc[1],ahc[3])}function hxDiamond(h){S(h),H(ahc[0],ahs[1]),H(ahc[0],ahs[4]),H(ahc[3],ahs[1]),H(ahc[3],ahs[4])}function hxTripTail(h){S(h),H(ahc[0],ahc[3]),H(ahc[1],ahc[4]),H(ahc[2],ahc[5]),H(ahc[0],ahc[1]),H(ahc[2],ahc[3]),H(ahc[5],ahc[4])}function hxDoubTail(h){S(h),H(ahc[0],ahc[1]),H(ahc[0],ahc[4]),H(ahc[5],ahc[2]),H(ahc[4],ahc[3]),H(ahc[3],ahc[1])}function hxCentFlip(h){S(h),H(ahc[0],ahc[1]),H(ahc[0],ahc[2]),H(ahc[5],ahc[1]),H(ahc[5],ahc[3]),H(ahc[4],ahc[3]),H(ahc[4],ahc[2])}function hxDoubRect(h){S(h),dRect(),push(),rotate(PI/2),dRect(),pop()}function hx3dOut(h){hxOut(h),H(ahc[0],p0),H(ahc[2],p0),H(ahc[4],p0)}function hx3dHash(h){hxOut(h),S(h),push();for(let h=1;h<=3;h++){push();for(let h=1;h<=3;h++)H(ahc[0],p0),iFlat?translate(1/6*-z,Math.sqrt(3)/2*z*.33):translate(Math.sqrt(3)/2*z*.33,1/6*-z);pop(),rotate(p23)}pop()}function hx6TriFill(h){push();for(let t=0;t<=5;t++)noStroke(),fill(h[t]),triangle(ahc[0].x+gO(),ahc[0].y+gO(),ahc[1].x+gO(),ahc[1].y+gO(),p0.x+gO(),p0.y+gO()),rotate(p3);pop()}function hxRepeat(h,t=.1){let a=h.length,s=z*t;for(let t=0;t<a;t++){let p=z-z/a*t;hxStroke(h[t],bg,s/p,p)}}function hxSingDiam(h,t=h){hxFigure8(t),push(),rotate(p23),d3Diam(h),pop()}function hxDoubDiam(h,t,a=h){hxFigure8(a),push(),rotate(p23),d3Diam(h),rotate(PI),d3Diam(t),pop()}function hxSingSq(h){rectMode(CENTER),fill(h),noStroke(),push(),rotate(p3),rect(hxr/2,0,z,z),pop(),rectMode(CORNER)}function hxDoubSq(h,t){hxSingSq(h),push(),rotate(PI),hxSingSq(t),pop()}function dHex(h,t=o,a=0,s=0){beginShape();for(let p=0;p<TWO_PI;p+=p3)iFlat?vertex(a+h*cos(p)+gO(t),s+h*sin(p)+gO(t)):vertex(a+h*sin(p)+gO(t),s+h*cos(p)+gO(t));endShape(CLOSE)}function dRect(){H(ahs[0],ahs[2]),H(ahs[2],ahs[3]),H(ahs[3],ahs[5]),H(ahs[5],ahs[0])}function d3Diam(h){noStroke(),fill(h),quad(ahc[0].x+gO(),ahc[0].y+gO(),ahc[1].x+gO(),ahc[1].y+gO(),ahc[2].x+gO(),ahc[2].y+gO(),p0.x+gO(),p0.y+gO())}function gO(h=o){return R.RN(-h,h)}function S(h,t=l){stroke(h),strokeWeight(t)}function hxCorner(h,t){let a=p3*h;return iFlat?createVector(t*cos(a),t*sin(a)):createVector(t*sin(a),t*cos(a))}function hxSideMid(h,t){let a=p3*h+p3/2;return iFlat?createVector(Math.sqrt(3)/2*t*cos(a),Math.sqrt(3)/2*t*sin(a)):createVector(Math.sqrt(3)/2*t*sin(a),Math.sqrt(3)/2*t*cos(a))}function H(h,t,a=ic){for(let s=0;s<a;s++)line(h.x+gO(),h.y+gO(),t.x+gO(),t.y+gO())}function PS(h,t){let a=R.RD();for(let s=0;s<h.length;s++)if(a<=h[s]/100)return t[s]}function keyPressed(){let h=keyCode;if(49===h||50===h||51===h){let t=new URL(window.location.href),a=t.searchParams,s=3e3;return a.delete("size"),50===h?s*=2:51===h&&(s*=3),a.set("size",s),t.search=a.toString(),window.location.href=t.toString(),!1}}function SV(){up.size&&saveCanvas("Mellifera"+tokenData.tokenId,"png")}
console.log("Mellifera\nFebruary 2023\nartplusbrad\n\nID: "+tokenData.tokenId+"\nHash: "+tokenData.hash);class RM{constructor(){this.useA=!1;let h=function(h){let t=parseInt(h.substr(0,8),16),a=parseInt(h.substr(8,8),16),s=parseInt(h.substr(16,8),16),p=parseInt(h.substr(24,8),16);return function(){let h=((t|=0)+(a|=0)|0)+(p|=0)|0;return p=p+1|0,t=a^a>>>9,a=(s|=0)+(s<<3)|0,s=(s=s<<21|s>>>11)+h|0,(h>>>0)/4294967296}};this.prngA=new h(tokenData.hash.substr(2,32)),this.prngB=new h(tokenData.hash.substr(34,32));for(let h=0;h<1e6;h+=2)this.prngA(),this.prngB()}RD(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}RN(h,t){return h+(t-h)*this.RD()}RI(h,t){return Math.floor(this.RN(h,t+1))}RB(h){return this.RD()<h}RC(h){return h[this.RI(0,h.length-1)]}}let p3,p23,w,h,wc,hc,wih,wiw,up,ap,pi,p,bg,iq,ir,is,z,hxW,hxH,hxr,hxCtW,hxCtH,qAbsCt,rAbsCt,ax,axid,ar,aGF,ni,nv,ahc,ahs,p0,flow,shift,shiftR,iFlat,hct,l,o,pa,ma,im,stct,niChPct,clChPct,iClCh,clChAm,iNiCh,nzTy,iNzCh,nzChPct,gsz,ani,ic,bgst,hash=tokenData.hash,R=new RM,sq3=Math.sqrt(3),sq3d2=sq3/2;function preload(){p3=PI/3,p23=TWO_PI/3,up=getURLParams(),SC(),SS(),SF(),SP(),SA(),SN()}function SC(){let t=window.innerHeight,a=window.innerWidth;up.size?(w=up.size,h=1.5*up.size):1.5*a>=t?(w=.66667*t,h=t):(w=a,h=1.5*a),wc=w/2,hc=h/2}function SS(){if(iFlat=R.RB(.5),gsz=PS([40,72,92,100],[0,1,2,3]),z=0===gsz?w*PS([20,48,73,100],[.0067,.008,.01,.012]):1===gsz?w*PS([28,55,80,100],[.015,.018,.021,.024]):2===gsz?w*PS([28,55,80,100],[.03,.035,.04,.05]):w*PS([45,80,95,100],[.06,.08,.1,.2]),hxr=sq3d2*z,iFlat?(hxW=2*z,hxH=sq3*z):(hxW=sq3*z,hxH=2*z),iFlat){let t=w/hxW*1.5;t=ckClose(t),hxCtW=int(t);let a=h/hxH;a=ckClose(a),hxCtH=int(a)+2,qAbsCt=int(hxCtW/2),rAbsCt=int(hxCtH/2)}else{let t=w/hxW;t=ckClose(t),hxCtW=int(t)+2;let a=h/hxH*1.5;a=ckClose(a),hxCtH=int(a),qAbsCt=int(hxCtW/2),rAbsCt=int(hxCtH/2)}ahc=[];for(let h=0;h<=5;h++)ahc[h]=hxCorner(h,z);ahs=[];for(let h=0;h<=5;h++)ahs[h]=hxSideMid(h,z);p0=createVector(0,0),0===gsz?(l=z*PS([5,15,45,75,90,100],[.02,.04,.06,.08,.1,.16]),o=z*PS([10,40,52,64,76,88,100],[.06,.09,.15,.2,.25,.33,.4])):1===gsz?(l=z*PS([5,15,45,75,90,100],[.02,.04,.06,.08,.1,.16]),o=z*PS([10,45,60,70,80,90,100],[.06,.09,.15,.2,.25,.33,.4])):2===gsz?(l=z*PS([5,15,45,75,90,100],[.02,.04,.06,.08,.1,.16]),o=z*PS([10,55,80,100],[.06,.09,.15,.2])):(l=z*PS([5,15,45,75,100],[.02,.04,.06,.08,.1]),o=z*PS([10,70,100],[.06,.09,.15])),ic=PS([5,55,80,100],[3,5,7,9]);let t=iFlat?hxW:hxH;pa=createGraphics(t,t,WEBGL),ma=createGraphics(t,t),im=createImage(t,t),ma.translate(z,z)}function ckClose(h){return Math.ceil(h)-h<1e-4?h+=.01:h}function SF(){flow=R.RI(0,1),flow+=iFlat?2:0,4===(shift=PS([12,25,40,70,85,100],[0,1,2,3,4,5]))&&(shiftR=R.RN(0,PI))}function SP(){let h=PS([85,100],[0,2]);if(0===h?(bg=color(250,251,255),bgst=color(0)):1===h?(bg=C("#F0F0CB"),bgst=color(0)):(bg=color(50),bgst=color(255)),(ap=[]).push([C("#000"),C("#00F"),C("#F00"),C("#FF0")]),ap.push([C("#E5DBA0"),C("#002972"),C("#EDD436"),C("#C82129")]),ap.push([C("#FF0048"),C("#00A5FF"),C("#FFFA00"),C("#0E050B")]),ap.push([C("#3F8CFF"),C("#7C3FFF"),C("#FF3F59"),C("#FF5C3F")]),ap.push([C("#D2405C"),C("#F435BE"),C("#9521D3"),C("#D8E03A")]),ap.push([C("#FF0"),C("#DD0"),C("#000"),C("#666")]),ap.push([C("#191318"),C("#298A9E"),C("#814387"),C("#BC4553")]),ap.push([C("#222"),C("#777"),C("#E00"),C("#EE0")]),ap.push([C("#222"),C("#777"),C("#0EE"),C("#EE0")]),ap.push([C("#6465A5"),C("#6975A6"),C("#F2E44B"),C("#FF4D35")]),ap.push([C("#A3586D"),C("#5C4A72"),C("#F2BE46"),C("#EF4E26")]),ap.push([C("#FF00D4"),C("#D0FF00"),C("#005DFF"),C("#777")]),0===h?ap.push([C("#000"),C("#222"),C("#444"),C("#666")]):2===h&&ap.push([C("#FFF"),C("#DDD"),C("#BBB"),C("#999")]),pi=R.RI(0,ap.length-1),p=ap[pi],iClCh=R.RB(.5)){clChAm=PS([20,35,50,65,80,90,100],[2,3,4,5,6,7,ap.length]);let h=R.RI(0,ap.length-clChAm);ap.splice(0,h),ap.splice(clChAm),clChPct=0===gsz?R.RC([5e-4,.001,.01,.1,.5]):1===gsz?R.RC([.003,.008,.03,.1,.5]):2===gsz?R.RC([.01,.05,.1,.5]):R.RC([.02,.07,.2,.5])}}function C(h){return color(h)}function pn0(h=1){return 10*R.RI(0,h)}function pn1(h=1){return 10*R.RI(1,h)}function SA(){SAF(),SAL(),SAB(),(ax=[]).push([pn1(2),pn0(),pn0()]),ax.push([pn0(),pn1(2),pn0()]),ax.push([pn0(),pn0(),pn1(2)]),ax.push([pn1(3),pn1(),pn1()]),ax.push([pn1(),pn1(3),pn1()]),ax.push([pn1(),pn1(),pn1(3)]),ax.push([F.length,L.length,B.length]),R.RB(.3)&&(ax.push([F.length,0,0]),ax.push([0,L.length,0]),ax.push([0,0,B.length]),ax.push([R.RI(3,5),0,0]),ax.push([0,R.RI(3,5),0]),ax.push([0,0,R.RI(3,5)])),ax.push([R.RI(2,4),R.RI(2,4),0]),ax.push([R.RI(2,4),0,R.RI(2,4)]),ax.push([0,R.RI(2,4),R.RI(2,4)]),ax.push([R.RI(4,16),R.RI(4,16),0]),ax.push([R.RI(4,16),0,R.RI(4,16)]),ax.push([0,R.RI(4,16),R.RI(4,16)]),ax.push([0,L.length,B.length]),ax.push([F.length,0,B.length]),ax.push([F.length,L.length,0]),ax.push([R.RI(1,3),R.RI(1,3),R.RI(1,3)]),ax.push([R.RI(4,8),R.RI(4,8),R.RI(4,8)]),ax.push([R.RI(4,20),R.RI(4,20),R.RI(4,20)]),ax.push([R.RI(10,30),R.RI(10,30),R.RI(10,30)]),ax.push([R.RI(1,35),R.RI(1,35),R.RI(1,35)]),axid=R.RI(0,ax.length-1),aD(F,0),aD(L,1),aD(B,2),agf=[...F,...L,...B],aGF=[];let h=agf.length;for(let t=0;t<h;t++){let h=R.RI(0,agf.length-1);aGF[t]=agf[h],agf.splice(h,1)}ar=new Array(aGF.length),aro=new Array(ar.length);let t=.3*R.RI(0,3),a=1/ar.length,s=a*t,p=0,e=PS([15,30,45,100],[0,1,2,3]);for(let h=0;h<ar.length-1;h++)ar[h]=p+R.RN(a-s,a+s),p=ar[h],aro[h]=3===e?R.RI(0,2):e;ar[ar.length-1]=1}function aD(h,t){aLen=h.length;for(let a=0;a<aLen-ax[axid][t];a++){let t=R.RI(0,h.length-1);h.splice(t,1)}}function SN(){noiseSeed(R.RI(0,1e5)),nv=R.RN(0,1e5),SNZ(),iNzCh=R.RB(.4),iNiCh=R.RB(.8),0===gsz?(ani=[5e-4,.001,.002,.004,.008,.015,.05,.1,1],niChPct=R.RC([5e-4,.001,.005,.01])):1===gsz?(ani=[.003,.008,.015,.03,.07,.12,.3,.5,1],niChPct=R.RC([.005,.015,.04])):2===gsz?(ani=[.01,.03,.06,.12,.3,.7,1.5,5],niChPct=R.RC([.01,.03,.06])):(ani=[.03,.06,.15,.5,1.5,5],niChPct=R.RC([.05,.1])),nzChPct=niChPct,SNI()}function SNI(){ni=R.RC(ani)}function SNZ(){nzTy=3===gsz?R.RI(0,4):PS([10,23,36,52,68,84,100],[0,1,2,3,4,5,6])}function setup(){noLoop(),smooth(),strokeCap(ROUND),up.size&&pixelDensity(1),createCanvas(w,h,WEBGL)}function draw(){if(hct=0,background(bg),push(),R.RB(.5)&&rotate(PI),0===flow)for(ir=-rAbsCt;ir<=rAbsCt;ir++)for(iq=-qAbsCt;iq<=qAbsCt;iq++){drP(int(ir/-2)+iq,ir)}else if(1===flow)for(iq=-qAbsCt;iq<=qAbsCt;iq++)for(ir=-rAbsCt;ir<=rAbsCt;ir++){drP(int(ir/-2)+iq,ir)}else if(2===flow)for(iq=-qAbsCt;iq<=qAbsCt;iq++)for(ir=-rAbsCt;ir<=rAbsCt;ir++){let h=int(iq/-2)+ir;drP(iq,h)}else if(3===flow)for(ir=-rAbsCt;ir<=rAbsCt;ir++)for(iq=-qAbsCt;iq<=qAbsCt;iq++){let h=int(iq/-2)+ir;drP(iq,h)}if(pop(),R.RB(.4)&&3!==gsz){let t;t=0===gsz?3*z:1===gsz?1.5*z:2===gsz?.9*z:.6*z,noFill(),stroke(bg),strokeWeight(t),rect(-wc,-hc,w,h)}SV()}function drP(h,t){let a,s;hct++,push(),iFlat?(a=1.5*h*z,s=(sq3d2*h+sq3*t)*z):(a=(sq3*h+sq3d2*t)*z,s=1.5*t*z),translate(a,s),1===shift?rotate(PI/6):2===shift?rotate(PI/4):3===shift?rotate(R.RN(0,PI)):4===shift?rotate(shiftR):5===shift&&rotate(PI/5),iNiCh&&R.RB(niChPct)&&SNI(),iClCh&&R.RB(clChPct)&&(p=R.RC(ap)),iNzCh&&R.RB(nzChPct)&&SNZ();let e=NVR();for(let h=0;h<ar.length;h++)if(e<ar[h]){rotate(p23*aro[h]),aGF[h]();break}nv+=ni,pop()}let exMu=R.RI(6,10),tanD=PS([50,65,80,90,100],[1,2,3,4,5]);function NVR(){let h;switch(nzTy){case 0:h=noise(nv);break;case 1:h=sin(nv);break;case 2:h=sin(sin(nv));break;case 3:h=Math.pow(sin(nv)*sin(nv),exMu);break;case 4:h=Math.pow(cos(nv)*cos(nv),exMu);break;case 5:h=Math.pow(tan(nv)*tan(nv),exMu)/tanD;break;case 6:h=tan(nv)/tanD}return h}let F=[],apsCkSz=100*PS([15,30,80,100],[3,4,5,6]),apsCkMn=R.RI(2,5),apsCkMx=R.RI(5,8);function SAF(){for(let h=0;h<p.length;h++){if(F.push(()=>{hxSingSq(p[h]),hxDoubTail(bgst)}),F.push(()=>{hxDoubSq(p[h],R.RC(p)),hxDoubTail(bgst)}),R.RB(.4))for(let t=1;t<8;t++)F.push(()=>{hxStroke(p[h],bg,.1+t/10)});F.push(()=>{hxStroke(p[h],bg,.1*R.RI(2,8))}),F.push(()=>{hxParallel(p[h]),push(),rotate(PI),hxParallel(R.RC(p)),pop()}),F.push(()=>{hxParallel(p[h])}),F.push(()=>{hxOut(p[h]),hx6TriLine(p[h]),hx6TriFill([p[h],R.RC(p),R.RC(p),p[h],R.RC(p),R.RC(p)])}),F.push(()=>{let t=(h+1)%p.length;hxOut(p[h]),hx6TriLine(p[h]),hx6TriFill([p[h],p[t],p[h],p[t],p[h],p[t]])}),F.push(()=>{p.length;hxOut(p[h]),hx6TriLine(p[h]),hx6TriFill([p[h],bg,p[h],bg,p[h],bg])}),F.push(()=>{let t=(h+1)%p.length,a=(h+2)%p.length;hx6TriLine(bgst),hx6TriFill([p[h],p[h],p[t],p[t],p[a],p[a]])}),F.push(()=>{let t=[];for(let a=0;a<5;a++)t[a]=p[h];hxRepeat(t,.1)}),F.push(()=>{hxSingDiam(p[h])}),F.push(()=>{hxDoubDiam(p[h],p[h])}),F.push(()=>{let t=[];for(let a=0;a<=5;a++)t[a]=lerpColor(p[h],bg,.15*a);hxOut(bgst),hx6TriLine(bgst),hx6TriFill(t)}),F.push(()=>{let t=[];for(let a=0;a<7;a++)t[a]=lerpColor(p[h],bg,.75-1/7*a);hxRepeat(t)}),F.push(()=>{static(function(){return stct%2==0?p[h]:bg},apsCkSz)}),F.push(()=>{static(function(){return stct%2==0?p[h]:bg},100*R.RI(apsCkMn,apsCkMx))}),F.push(()=>{push();for(let t=0;t<=2;t++)d3Diam(lerpColor(p[h],color(255),.25*t)),rotate(p23);pop(),hx3dOut(p[h])}),F.push(()=>{hxFill(p[h]),hx3dOut(bg)}),F.push(()=>{hxFill(p[h]),hx3dHash(bg)}),F.push(()=>{hxFill(p[h]),hxOut(bg)}),F.push(()=>{hxFill(p[h]),hx12TriLine(bg)}),F.push(()=>{hxFill(p[h]),hxFiveLine(bg)})}
console.log("Ode to Untitled\nAugust 2022\nartplusbrad\n\nID: "+tokenData.tokenId+"\nHash: "+tokenData.hash);class Rm{constructor(){this.useA=!1;let t=function(t){let s=parseInt(t.substr(0,8),16),a=parseInt(t.substr(8,8),16),c=parseInt(t.substr(16,8),16),e=parseInt(t.substr(24,8),16);return function(){let t=((s|=0)+(a|=0)|0)+(e|=0)|0;return e=e+1|0,s=a^a>>>9,a=(c|=0)+(c<<3)|0,c=(c=c<<21|c>>>11)+t|0,(t>>>0)/4294967296}};this.prngA=new t(tokenData.hash.substr(2,32)),this.prngB=new t(tokenData.hash.substr(34,32));for(let t=0;t<1e6;t+=2)this.prngA(),this.prngB()}r_d(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}r_n(t,s){return t+(s-t)*this.r_d()}r_i(t,s){return Math.floor(this.r_n(t,s+1))}r_b(t){return this.r_d()<t}r_c(t){return t[this.r_i(0,t.length-1)]}}let ps,xc,yc,ws,hs,w,h,gZ,sqZ,gxCt,gyCt,aP,pID,aR,scP,niB,aN,iNChg,ni,iSH,iSS,tB,aXID,sF,f2,f3,half,fl,qtr,td,bO,pX,hZ,ckCt,hD,lP,hO,skM,csSqZ,nsSqCt,nsSqZ,nsSW,R=new Rm,nsq=[],sCt=0,apF=[],apC=[],apS=[],apE=[],apN=[],apP=[],atC=new Array(5),aGF=[],aX=[],aNTi=[],aNTc=[],aNTd=[],cr=[];apF.push(()=>{hi(tB)}),apF.push(()=>{hi(tB)});for(let t=0;t<4;t++)apF.push(()=>{hi(cr[t])});apC[apC.length]=function(t,s){ck(c(0),0)};for(let t=0;t<4;t++)apC.push(()=>{ck(cr[t],1)});for(let t=0;t<4;t++)apN.push(()=>{nT(cr[t],t)});for(let t=0;t<4;t++)apP.push(()=>{sk(cr[t])});apS[apS.length]=function(t,s){st(1)},apS[apS.length]=function(t,s){st(2)};for(let t=0;t<4;t++)apS.push(()=>{st(3,cr[t],t)});apS[apS.length]=function(t,s){st(4)};for(let t=0;t<4;t++)apE.push(()=>{hh(cr[t])});function hi(t){noStroke(),fill(t),rect(0-f2,0-f2,sqZ+2*f2,sqZ+2*f2)}function ck(t){strokeWeight(sF/ckCt);for(let s=0;s<ckCt;s++)for(let a=0;a<ckCt;a++)s%2==0&&a%2==0||s%2==1&&a%2==1?(stroke(t),fill(t)):(stroke(tB),fill(tB)),rect(a*csSqZ,s*csSqZ,csSqZ,csSqZ)}function hh(t){strokeCap(ROUND),noFill(),stroke(t),strokeWeight(hZ),1===hD?(line(0+hO,0+hO,fl-hO,fl-hO),line(0+hO,td+hO,2*td-hO,fl-hO),line(0+hO,2*td+hO,td-hO,fl-hO),line(td+hO,0+hO,fl-hO,2*td-hO),line(2*td+hO,0+hO,fl-hO,td-hO)):(line(0+hO,fl-hO,fl-hO,0+hO),line(0+hO,2*td-hO,2*td-hO,0+hO),line(0+hO,td-hO,td-hO,0+hO),line(td+hO,fl-hO,fl-hO,td+hO),line(2*td+hO,fl-hO,fl-hO,2*td+hO)),strokeCap(SQUARE)}function nT(t,s){let a,c=R.r_n(0,1e5);strokeWeight(nsSW);for(let e=0;e<nsSqCt;e++)for(let n=0;n<nsSqCt;n++){let r,h;a=lerpColor(t,aNTc[s],noise(c)),c+=aNTi[s],fill(a),stroke(a),1===aNTd[s]?(r=e,h=n):(r=n,h=e),rect(r*nsSqZ,h*nsSqZ,nsSqZ,nsSqZ)}}function st(t,s,a){let e;strokeWeight(nsSW);for(let n=0;n<nsSqCt;n++)for(let r=0;r<nsSqCt;r++)1===t?e=c(R.r_i(0,255)):2===t?e=color(R.r_i(0,255),R.r_i(0,255),R.r_i(0,255)):3===t?e=lerpColor(s,c(255),R.r_n(0,scP[a])):4===t&&(e=R.r_c([cr[0],cr[1],cr[2],cr[3]])),fill(e),stroke(e),rect(r*nsSqZ,n*nsSqZ,nsSqZ,nsSqZ)}function sk(t){rectMode(CENTER),noStroke(),fill(t);for(let t=1;t<=8*gZ;t++){let t=sqZ*R.r_n(.01,.05)*skM,s=t/3,a=sqZ-s-s;gZ>=40?ellipse(R.r_d()*a+s,R.r_d()*a+s,t,t):rect(R.r_d()*a+s,R.r_d()*a+s,t,t)}rectMode(CORNER)}function preload(){ps=getURLParams(),stC(),stCa(),stF(),stG(),gZ>=40&&apF.splice(0,1),stB(),half=.5*sqZ,fl=sqZ,qtr=.25*sqZ,td=.3333*sqZ,ckCt=2*Math.floor(gZ/5),csSqZ=sqZ/ckCt,nsSqCt=Math.floor(gZ/2),nsSqZ=sqZ/nsSqCt,nsSW=f3/nsSqCt;let t=R.r_d();t<.15?(aX.push([5,5,7,4,4,4]),aX.push([2,2,2,2,2,2]),aX.push([5,5,7,4,4,0]),aX.push([5,5,7,4,0,4]),aX.push([0,5,7,4,4,4])):t<.31?(aX.push([5,5,7,4,0,0]),aX.push([5,5,7,0,4,0]),aX.push([5,5,7,0,0,4]),aX.push([0,5,7,4,4,0]),aX.push([0,5,7,4,0,4]),aX.push([0,5,7,0,0,4]),aX.push([0,0,7,4,4,4])):t<.685?(aX.push([5,5,7,0,0,0]),aX.push([5,5,0,4,0,0]),aX.push([5,5,0,0,4,0]),aX.push([5,5,0,0,0,4]),aX.push([5,0,7,4,0,0]),aX.push([5,0,7,0,4,0]),aX.push([5,0,7,0,0,4]),aX.push([5,0,0,4,4,0]),aX.push([5,0,0,4,0,4]),aX.push([5,0,0,0,4,4]),aX.push([0,5,7,4,0,0]),aX.push([0,5,7,0,4,0]),aX.push([0,5,7,0,0,4]),aX.push([0,5,0,4,4,0]),aX.push([0,5,0,4,0,4]),aX.push([0,5,0,0,4,4]),aX.push([0,0,7,4,4,0]),aX.push([0,0,7,4,0,4]),aX.push([0,0,7,0,4,4]),aX.push([0,0,0,4,4,4])):t<.985?(aX.push([5,5,0,0,0,0]),aX.push([5,0,7,0,0,0]),aX.push([0,5,7,0,0,0]),aX.push([5,0,0,4,0,0]),aX.push([0,5,0,4,0,0]),aX.push([0,0,7,4,0,0]),aX.push([5,0,0,0,4,0]),aX.push([0,5,0,0,4,0]),aX.push([0,0,7,0,4,0]),aX.push([0,0,0,4,4,0]),aX.push([5,0,0,0,0,4]),aX.push([0,5,0,0,0,4]),aX.push([0,0,0,4,0,4]),aX.push([0,0,0,0,4,4]),aX.push([0,0,7,0,0,4])):aX.push([0,0,7,0,0,0]),aXID=R.r_i(0,aX.length-1),pX=0;for(let t=0;t<aX[aXID].length;t++)pX+=aX[aXID][t];aD(apF,0),aD(apC,1),aD(apS,2),aD(apE,3),aD(apN,4),aD(apP,5),aR=new Array(pX);let s=2.5+.25*R.r_i(0,3);aR[0]=R.r_n(0,1/aR.length*s);for(let t=1;t<aR.length-1;t++)aR[t]=R.r_n(aR[t-1],aR[t-1]+(1-aR[t-1])/(aR.length-1)*s);aR[aR.length-1]=1;let a=[...apF,...apC,...apS,...apE,...apN,...apP],e=a.length;for(let t=0;t<e;t++){let s=R.r_i(0,a.length-1);aGF[t]=a[s],a.splice(s,1)}let n=R.r_b(.5),r=R.r_b(.5);for(let t=0;t<4;t++){if(aNTi[t]=.05,0!==t&&n)aNTc[t]=aNTc[0];else{let s;do{s=R.r_i(0,5)}while(s===t);aNTc[t]=s<4?cr[s]:R.r_c([c(33),c(200)])}aNTd[t]=0!==t&&r?aNTd[0]:R.r_i(1,2)}hD=R.r_i(1,2),skM=1,gZ<=3?skM=3.6:gZ<=5?skM=3:gZ<=10?skM=2:gZ<=20&&(skM=1.6),gZ>=120?skM=.65:gZ>=80&&(skM=.8),stN(),stBG()}function aD(t,s){aLen=t.length;for(let a=0;a<aLen-aX[aXID][s];a++){let s=R.r_i(0,t.length-1);t.splice(s,1)}}function c(t){return color(t)}function stC(){(aP=[])[0]=[c(40),c(80),c(120),c(160)],aP[1]=[c("#d75b66"),c("#23345c"),c("#a36142"),c("#54493f")],aP[2]=[c("#FF3255"),c("#FF32C5"),c("#7332FF"),c("#3281FF")],aP[3]=[c("#DE2121"),c(0),c("#DEDE21"),c("#2121DE")],aP[4]=[c("#2e7daf"),c("#ffd507"),c("#2897ff"),c("#ff665b")],aP[5]=[c("#FFC800"),c("#E0AC00"),c(30),c(60)],aP[6]=[c("#1AE0BF"),c("#1EFFD9"),c("#129982"),c("#E588E2")],aP[7]=[c("#164849"),c("#02aca3"),c("#2a2833"),c("#970126")],aP[8]=[c("#cbd5ee"),c("#eb8b01"),c("#eee00b"),c("#012c9f")],aP[9]=[c("#899194"),c("#e5d503"),c("#2b7260"),c("#0c1885")],aP[10]=[c("#efe5a7"),c("#002972"),c("#f7e038"),c("#852129")],aP[11]=[c("#55d9c0"),c("#ff60d2"),c("#107050"),c("#02231c")],aP[12]=[c("#1f3330"),c("#212027"),c("#f22f08"),c("#ff6f3f")],aP[13]=[c("#0444bf"),c("#0584f2"),c("#0aaff1"),c("#ae5cb2")],aP[14]=[c("#6465a5"),c("#6975a6"),c("#f2e44b"),c("#ff4d35")],aP[15]=[c("#f4ed71"),c("#9e2504"),c("#767287"),c("#04030c")],aP[16]=[c("#192e5b"),c("#2c42a5"),c("#4d52bc"),c("#00743f")],aP[17]=[c("#6F706F"),c("#65A547"),c("#f4ba18"),c("#f4650c")],aP[18]=[c("#a3586d"),c("#5c4a72"),c("#f2be46"),c("#ef4e26")],aP[19]=[c("#2b87d8"),c("#0abda0"),c("#2ef487"),c("#d4e83c")],aP[20]=[c("#040627"),c("#03353e"),c("#0294a5"),c("#374351")],aP[21]=[c("#FF00D4"),c("#D0FF00"),c("#00F7FF"),c("#6B0DFF")],aP[22]=[c("#D3002D"),c("#0D1156"),c("#4C2B56"),c("#C68419")],aP[23]=[c("#25C9DB"),c(30),c("#513920"),c("#D89956")],aP[24]=[c("#D80056"),c("#D8FF56"),c("#27A756"),c("#7884FF")],aP[25]=[c(90),c("#FFE83D"),c("#17705E"),c("#182944")],aP[26]=[c(45),c("#FF353C"),c("#FF5E66"),c("#A53E44")],aP[27]=[c(30),c("#0059FF"),c("#357CFF"),c("#669BFF")],aP[28]=[c("#238250"),c("#40A7B7"),c("#000C07"),c("#9E4722")],aP[29]=[c("#FF0F0F"),c("#0026FF"),c("#C9D8FF"),c("#828CA5")],aP[30]=[c(40),c("#E04641"),c("#41C3E0"),c("#41E09E")];let t=R.r_d();pID=t<.01?0:t<.04?R.r_i(1,2):t<.09?3:t<.13?4:R.r_i(5,30),cr[0]=aP[pID][0],cr[1]=aP[pID][1],cr[2]=aP[pID][2],cr[3]=aP[pID][3],scP=[];for(let t=0;t<4;t++)scP[t]=.1*R.r_n(3,9)}function stBG(){tB=pS([40,65,85,100],[c(255),c(247),c("#F0F0DC"),c("#E1E6EB")])}function stCa(){ws=1200,hs=1200;let t=Math.min(window.innerWidth,window.innerHeight);ps.size?(w=ps.size,h=ps.size):(w=t,h=t)}function stF(){iSH=R.r_b(.6),iSS=R.r_b(.22)}function stG(){gZ=pS([.7,1.6,3.2,6,10,15,25,37,49,61,73,83,92,95,97.5,99,100],[3,4,5,8,10,16,20,25,30,40,50,60,80,100,120,150,200]),gyCt=hs/gZ,hZ=.05*(sqZ=w/(gxCt=ws/gZ)),f2=sF=.06*sqZ,f3=.5*sqZ,hO=.008*sqZ,f2=gZ>=100?.01*sqZ:gZ>=50?.02*sqZ:gZ>=25?.03*sqZ:gZ>=8?.06*sqZ:.11*sqZ}function stB(){let t=Math.max(gxCt,gyCt);bO=Math.floor(t*R.r_n(.01,.04))}function stN(){if(aN=[],R.r_b(.71))aN.push(stNI()),iNChg=!1;else{iNChg=!0;let t=pS([10,24,40,58,75,81,86,90,93.5,96.5,98.5,100],[2,3,4,5,6,7,9,11,13,15,21,25]);for(let s=0;s<t;s++)if(aN.push(stNI()),0===s)nsq[s]=0;else{let a=Math.floor((gxCt-2*bO)*(gyCt-2*bO)/t);do{nsq[s]=a*(s-1)+R.r_i(.2*a,1.8*a)}while(nsq[s]<=nsq[s-1])}}niB=R.r_n(0,1e5),noiseSeed(R.r_i(0,1e5)),ni=0}function stNI(){let t=pS([4,16,28,38,48,60,68,76,86,94,98,100],[.003,.005,.0075,.01,.015,.022,.03,.05,.1,.2,1,3]);return gZ>=50&&t<.02&&(t=R.r_c([.03,.05,.1,.2,1,3])),gZ<=5&&t>.02&&(t=R.r_c([.003,.005,.0075,.01,.015])),t}function pS(t,s){let a=R.r_d();for(let c=0;c<t.length;c++)if(a<=t[c]/100)return s[c]}function setup(){noLoop(),createCanvas(w,h),strokeCap(SQUARE),xc=width/2,yc=height/2}function draw(){background(tB),translate(xc,yc),R.r_b(.5)&&rotate(PI),iSH||rotate(HALF_PI);for(let t=bO;t<gyCt-bO;t++)if(iSS&&t%2==0)for(let s=gxCt-bO-1;s>=bO;s--)grid(t,s);else for(let s=bO;s<gxCt-bO;s++)grid(t,s);savC()}function grid(t,s){sCt++,push(),translate(s*sqZ-xc,t*sqZ-yc);for(let a=0;a<aR.length;a++)if(noise(niB)<aR[a]){aGF[a](t,s);break}if(pop(),niB+=aN[ni],iNChg&&ni<aN.length-1&&nsq[ni+1]===sCt){for(lP=pID;lP===pID;)stC();ni++}}function keyPressed(){let t=keyCode,s=!1;if(49!==t&&50!==t&&51!==t||(s=!0),s){let s=new URL(window.location.href),a=s.searchParams,c=3e3;return a.delete("size"),49===t||(50===t?c*=2:51===t&&(c*=3)),a.set("size",c),s.search=a.toString(),window.location.href=s.toString(),!1}}function savC(){ps.size&&saveCanvas("OdeToUntitled_"+tokenData.tokenId,"png")}
***"Ode to Untitled"*** is a culmination of inspiration from the color field and minimalist painters of the 20th century. While my medium has changed from disc golf discs, to canvas, to digital canvas, to digital photography, and finally to code editor - the inspiration and output has remained abstract. Seeing the works of Clyfford Still, Morris Louis, Agnes Martin, Barnett Newman, Mark Rothko, Ellsworth Kelly, Frank Stella, and Kenneth Noland (among others - hi Roy) seeded my desire to create visual art. What many of these artists have in common, sometimes for differing reasons, was a fondness for naming their works *"Untitled"*. Clyfford Still was entirely dedicated to this practice, while others came and went. When other titles were used, often they were nondescript cataloging values or a rote description of the colors or shapes found in the work. And, of course, abstract art history in general, and our current day, is littered with *"Untitled"* works. Whether a desire to leave interpretation open to the viewer, not wanting to sully their visual work with words, a dedication to minimalism, or laziness - it's all fine with me. While "Ode to Untitled" is not a direct reflection of any particular works, you will see influences shining through: zips of color streaking across the canvas, an appreciation of the simple square and grids, a focus on texture, large fields of color, and a love of minimalism. This one goes out to all the *"Untitled"* works. **High Resolution Downloads:** * Press 1 for a resolution of 3000px * Press 2 for a resolution of 6000px * Press 3 for a resolution of 9000px *Resolutions may vary if you scale your display*
While rotating and morphing, an undercover shape blends in with criss-crossing layers of color blocks. WARNING: Contains flashing imagery. Interactive Controls: Use the arrow keys (or WASD) to move the undercover shape around the screen Press F to toggle on/off the flashing color blocks Press R to toggle on/off the rotation of the shape Press M to toggle on/off the morphing of the shape Press C to center the shape on the canvas Press B to return the shape to its beginning location Press spacebar to toggle on/off all animations
class Rm{constructor(){this.useA=!1;let r=function(r){let p=parseInt(r.substr(0,8),16),s=parseInt(r.substr(8,8),16),t=parseInt(r.substr(16,8),16),e=parseInt(r.substr(24,8),16);return function(){let r=((p|=0)+(s|=0)|0)+(e|=0)|0;return e=e+1|0,p=s^s>>>9,s=(t|=0)+(t<<3)|0,t=(t=t<<21|t>>>11)+r|0,(r>>>0)/4294967296}};this.prngA=new r(tokenData.hash.substr(2,32)),this.prngB=new r(tokenData.hash.substr(34,32));for(let r=0;r<1e6;r+=2)this.prngA(),this.prngB()}rd(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}rn(r,p){return r+(p-r)*this.rd()}ri(r,p){return Math.floor(this.rn(r,p+1))}rb(r){return this.rd()<r}rc(r){return r[this.ri(0,r.length-1)]}}class P{constructor(r,p,s,t,e,n,i){this.rS=r,this.rR=p,this.gS=s,this.gR=t,this.bS=e,this.bR=n,this.iG=i}}let d,xc,yc,gC,gI,gP,rH,rV,p,pG,iL,aT,tR,tR2,tX,tY,tM,pI,lP,rA,rd,ra,iSU,sC,sS,sqS,sX,sY,sBX,sBY,sCX,sCY,sDX,sDY,sCR,sD,mP,tS,tS2,tA,tW,tRo,aD,aDB,fM,spX,spY,aAA,aAB,cR,iFl,iFl2,xSw,oSz,oSzA,oSzB,oSw,lSw,lPxA,lPyA,lPxB,lPyB,iSa,iSb,iF,isM,isF,isT,rscr,rsor,irscr,irsor,rscrB,irscrB,bO,wO,loA,loB,loC,loD,R=new Rm,k=[];function rsS(){rS(rH,pG[pI]),rS(rV,pG[pI])}function rS(r,p){let s,t;irscr||(rscr=R.rd()),irsor||(rsor=R.rd()),irscrB||(rscrB=R.rd());for(let e=0;e<r.length;e++){r[e]=[],s=-xc;for(let n=0;s<xc;n++)r[e][n]={},r[e][n].x=s,r[e][n].y=e*gI-gI/2-yc,t=rsor<.2?R.rb(.5)?0:1:rsor<.4?n%2==0?0:1:rsor<.6?n%3==0?1:0:rsor<.8?e%2==0?0:1:e%3==0?1:0,rSR(r[e][n],0===t?p[0]:p[1]),rssS(r,e,n,e%2==0?rscr:rscrB),s+=r[e][n].l}}function rssS(r,p,s,t){r[p][s].l=t<.4?R.ri(2*gI,gI*(gC/3)):t<.5?.1*d:t<.6?.175*d:t<.7?.2*d:t<.8?.25*d:t<.9?.33*d:.5*d}function rSR(r,p){r.r=p.rS+R.ri(0,p.rR),p.iG?(r.g=r.r,r.b=r.r):(r.g=p.gS+R.ri(0,p.gR),r.b=p.bS+R.ri(0,p.bR))}function setup(){noCursor(),iL=!0,frameRate(30),fM=2,d=Math.floor(Math.min(window.innerWidth,window.innerHeight)),createCanvas(d,d),xc=width/2,yc=height/2,p=[new P(64,127,0,0,0,0,!0),new P(255,0,127,127,0,255,!1),new P(64,0,0,255,127,127,!1),new P(0,255,127,127,255,0,!1),new P(127,64,0,0,0,255,!1),new P(227,28,200,55,0,255,!1),new P(0,0,0,0,0,0,!0),new P(0,0,127,64,162,93,!1),new P(0,255,0,255,0,255,!1),new P(0,64,64,127,64,187,!1),new P(127,127,0,127,187,64,!1),new P(255,0,0,0,0,0,!1),new P(255,0,0,255,0,0,!1),new P(255,0,255,0,0,0,!1),new P(0,0,187,0,100,0,!1),new P(45,0,45,0,255,0,!1),new P(0,0,0,0,0,0,!0),new P(255,0,0,0,0,0,!0),new P(135,0,0,187,200,55,!1),new P(255,0,0,0,255,0,!1),new P(0,0,255,0,255,0,!1),new P(125,50,0,100,255,0,!1),new P(0,255,127,64,162,93,!1),new P(0,0,64,0,64,127,!1),new P(200,55,0,0,0,0,!1),new P(255,0,200,0,100,0,!1),new P(0,255,183,0,127,64,!1),new P(127,0,73,0,0,255,!1),new P(0,255,137,0,143,0,!1),new P(127,127,130,125,64,64,!1),new P(180,75,80,175,155,100,!1),new P(R.ri(0,255),R.ri(0,255),R.ri(0,255),R.ri(0,255),R.ri(0,255),R.ri(0,255),!1)],pG=[[p[R.ri(0,p.length-1)],p[R.ri(0,p.length-1)]],[p[1],p[0]],[p[2],p[0]],[p[3],p[0]],[p[4],p[0]],[p[5],p[0]],[p[1],p[6]],[p[2],p[6]],[p[3],p[6]],[p[4],p[6]],[p[5],p[6]],[p[0],p[6]],[p[7],p[0]],[p[8],p[0]],[p[8],p[6]],[p[9],p[0]],[p[9],p[6]],[p[10],p[0]],[p[10],p[6]],[p[11],p[0]],[p[11],p[6]],[p[12],p[0]],[p[12],p[6]],[p[13],p[0]],[p[13],p[6]],[p[14],p[0]],[p[14],p[6]],[p[13],p[14]],[p[11],p[12]],[p[15],p[6]],[p[15],p[12]],[p[15],p[13]],[p[15],p[14]],[p[15],p[11]],[p[11],p[8]],[p[12],p[8]],[p[13],p[8]],[p[14],p[8]],[p[15],p[8]],[p[1],p[8]],[p[4],p[8]],[p[5],p[8]],[p[9],p[8]],[p[16],p[6]],[p[17],p[24]],[p[17],p[22]],[p[17],p[19]],[p[17],p[15]],[p[17],p[14]],[p[17],p[12]],[p[17],p[10]],[p[17],p[1]],[p[17],p[3]],[p[17],p[23]],[p[17],p[20]],[p[17],p[13]],[p[16],p[17]],[p[16],p[1]],[p[16],p[16]],[p[16],p[0]],[p[16],p[12]],[p[17],p[17]],[p[17],p[0]],[p[17],p[6]],[p[17],p[11]],[p[11],p[11]],[p[18],p[13]],[p[18],p[11]],[p[1],p[2]],[p[13],p[13]],[p[14],p[14]],[p[15],p[15]],[p[16],p[15]],[p[19],p[20]],[p[20],p[6]],[p[19],p[8]],[p[20],p[20]],[p[19],p[19]],[p[21],p[21]],[p[21],p[17]],[p[22],p[6]],[p[22],p[0]],[p[22],p[7]],[p[23],p[0]],[p[23],p[6]],[p[24],p[24]],[p[25],p[25]],[p[25],p[6]],[p[26],p[17]],[p[26],p[6]],[p[26],p[13]],[p[26],p[11]],[p[27],p[16]],[p[28],p[6]],[p[28],p[17]],[p[30],p[20]],[p[30],p[17]],[p[30],p[16]],[p[29],p[12]],[p[31],p[31]]],pI=R.rb(.2)?0:R.ri(0,pG.length-1),3===(lP=R.ri(0,8))&&(lP=0),gP=R.rd(),gC=gP<.25?2*R.ri(1,10):gP<.5?4*R.ri(6,15):gP<.75?8*R.ri(8,17):16*R.ri(9,18),gI=d/gC,rH=new Array(gC+1),rV=new Array(gC+1),rA=R.rb(.8)?R.ri(1,5):R.rb(.67)?.5:R.rb(.67)?.25:.125,rd=R.rb(.5)?-1:1,ra=6,mP=R.ri(0,7),sC=1,cR=0,iSU=!0,sCR=R.rb(.8)?30*R.ri(2,10):R.rb(.67)?750:R.rb(.67)?3e3:12e3,loA=33*R.ri(3,5),loB=33*R.ri(3,5),loC=33*R.ri(3,5),loD=33*R.ri(3,5),spX=R.rb(.46)?0:d/(2*R.ri(1,2))*R.ri(-1,1),spY=R.rb(.46)?0:d/(2*R.ri(1,2))*R.ri(-1,1),tX=spX,tY=spY,wO=255-10*R.ri(0,3),bO=10*R.ri(0,4),iFl=R.rb(.5),iFl2=R.rb(.5),aT=new Array(R.ri(4,19));for(let r=0;r<aT.length;r++)aT[r]=R.ri(0,119);tR=R.rn(.1,.5),tR2=d*R.rn(tR+.1,tR+.1+R.rn(.5,1.05)),tR*=d,sS=d*R.rn(.1,1),sqS=d*R.rn(.1,sS/d),sX=d*R.rn(sS/d,sS/d+R.rn(.5,2)),sY=d*R.rn(sS/d,sS/d+R.rn(.5,2)),sBX=d*R.rn(sS/d,sS/d+R.rn(.5,2)),sBY=d*R.rn(sS/d,sS/d+R.rn(.5,2)),sCX=d*R.rn(sS/d,sS/d+R.rn(.5,2)),sCY=d*R.rn(sS/d,sS/d+R.rn(.5,2)),sDX=d*R.rn(sS/d,sS/d+R.rn(.5,2)),sDY=d*R.rn(sS/d,sS/d+R.rn(.5,2)),tS=R.rn(.1,.99),tS2=d*R.rn(tS+.1,tS+.1+R.rn(.67,2)),tS*=d,tA=R.rn(.25,.5),tW=d*R.rn(.1,tS/d),tRo=R.rn(0,TWO_PI);let r=R.rn(.2,1.4);aD=d*r;let s=r;r<.67&&(s=.67);let t=R.rn(s+.1,s+.1+R.rn(.5,1.4));aDB=d*t,aAA=R.rn(-TWO_PI,TWO_PI),aAB=R.rb(.5)?aAA-TWO_PI+.001:aAA+TWO_PI,xSw=R.rn(.1,.4),xSw2=d*R.rn(xSw+.1,xSw+.1+R.rn(.4,.8)),xSw*=d,oSz=R.rn(.5,.9),oSw=d*R.rn(.25,oSz-.25),oSzA=d*R.rn(oSz+.2,oSz+.2+R.rn(.5,1.5)),oSzB=d*R.rn(oSz+.2,oSz+.2+R.rn(.5,1.5)),oSz*=d,lSw=R.rn(.2,.67),lPxA=R.rn(0,.2),lPyA=R.rn(-.2,.8),lPxB=R.rn(.5,1),lPyB=R.rn(-.2,.8),lPxA*=d,lPyA*=d,lPxB*=d,lPyB*=d,lSw*=d,iSa=R.rn(.3,.5),iSb=d*R.rn(iSa+.1,iSa+.1+R.rn(.5,.8)),iSa*=d,iF=1,isF=!0,isT=!0,isM=!0,R.rb(.33)?(irscr=!0,irscrB=!0,irsor=!0,rscr=0,rsor=0,rscrB=0):(irscr=R.rb(.5),irscrB=R.rb(.5),irsor=R.rb(.5),irscr&&(rscr=R.rd()),irsor&&(rsor=R.rd()),irscrB&&(rscrB=R.rd())),tM=.005*d}function draw(){isF&&((iF-1)*fM%ra==0&&rsS(),iF++),background(255),noStroke(),push(),translate(xc,yc),iFl&&rotate(PI),iFl2&&rotate(PI/2),0!==lP&&1!==lP&&3!==lP&&5!==lP&&7!==lP&&8!==lP||rD(0,rH,loA),0!==lP&&2!==lP&&3!==lP&&6!=lP&&7!==lP&&8!==lP||(push(),rotate(PI/2),rD(0,rV,loB),pop()),isM&&(iSU?((sC+=fM)>=sCR||2===fM&&sC===sCR-1)&&(iSU=!1):(sC-=fM)<=1&&(iSU=!0),sD=sC/sCR),push(),translate(tX,tY),isT&&(cR+=rA*rd*fM),rotate(radians(cR)),0===mP?mB():1===mP?mC():2===mP?(push(),rotate(tRo),mD(),pop()):3===mP?mE():4===mP?mF():5===mP?mG():6===mP?mH():7===mP&&mI(),pop(),0!==lP&&1!==lP&&4!==lP&&6!==lP&&7!==lP||rD(1,rH,loC),0!==lP&&2!==lP&&4!==lP&&5!=lP&&8!==lP||(push(),rotate(PI/2),rD(1,rV,loD),pop()),pop(),cK()}function rD(r,p,s){for(let t=r;t<p.length;t+=2)for(let r=0;r<p[t].length;r++)fill(p[t][r].r,p[t][r].g,p[t][r].b,s),rect(p[t][r].x,p[t][r].y,p[t][r].l,gI)}function mB(){let r;noStroke();for(let p=1;p<=2;p++){1===p?(fill(wO),r=1.33*lerp(tR,tR2,sD)):(fill(bO),r=lerp(tR,tR2,sD));for(let p=0;p<aT.length;p++)push(),rotate(radians(aT[p])),triangle(r*sin(0),r*cos(0),r*sin(TWO_PI/3),r*cos(TWO_PI/3),r*sin(TWO_PI/3*2),r*cos(TWO_PI/3*2)),pop()}}function mC(){rectMode(CENTER),noFill();for(let r=1;r<=2;r++)1===r?(stroke(wO),strokeWeight(1.33*sqS)):(stroke(bO),strokeWeight(sqS)),quad(lerp(-sS/2,-sX/2,sD),lerp(-sS/2,-sY/2,sD),lerp(sS/2,sBX/2,sD),lerp(-sS/2,-sBY/2,sD),lerp(sS/2,sCX/2,sD),lerp(sS/2,sCY/2,sD),lerp(-sS/2,-sDX/2,sD),lerp(sS/2,sDY/2,sD));rectMode(CORNER)}function mD(){noFill();let r=lerp(tS,tS2,sD),p=lerp(-tA,tA,sD);for(let s=1;s<=2;s++)1===s?(stroke(wO),strokeWeight(1.33*tW)):(stroke(bO),strokeWeight(tW)),triangle(r*sin(p),r*cos(0),r*sin(TWO_PI/3),r*cos(TWO_PI/3),r*sin(TWO_PI/3*2),r*cos(TWO_PI/3*2))}function mE(){let r;noStroke();for(let p=1;p<=2;p++)1===p?(fill(wO),r=1.33*lerp(aD,aDB,sD)):(fill(bO),r=lerp(aD,aDB,sD)),arc(0,0,r,r,aAA,lerp(aAA,aAB,sD))}function mF(){noFill();let r=lerp(xSw,xSw2,sD);for(let p=1;p<=2;p++)1===p?(stroke(wO),strokeWeight(1.33*r)):(stroke(bO),strokeWeight(r)),line(-d/2,-d/2,d/2,d/2),line(d/2,-d/2,-d/2,d/2)}function mG(){noFill();for(let r=1;r<=2;r++)1===r?(stroke(wO),strokeWeight(1.33*oSw)):(stroke(bO),strokeWeight(oSw)),ellipse(0,0,lerp(oSz,oSzA,sD),lerp(oSz,oSzB,sD))}function mH(){noFill();let r=lerp(lPxA,lPxB,sD),p=lerp(lPyA,lPyB,sD);for(let s=1;s<=2;s++)1===s?(stroke(wO),strokeWeight(1.33*lSw)):(stroke(bO),strokeWeight(lSw)),line(-d,d,-r,-p),line(-r,-p,r,p),line(r,p,d,-d)}function mI(){rectMode(CENTER),noStroke();let r=lerp(iSa,iSb,sD);for(let p=1;p<=2;p++)1===p?(fill(wO),nS2=1.33*r):(fill(bO),nS2=r),rect(-d/2,-d/2,nS2,nS2),rect(d/2,-d/2,nS2,nS2),rect(d/2,d/2,nS2,nS2),rect(-d/2,d/2,nS2,nS2);rectMode(CORNER)}function keyPressed(){let r=keyCode;return 32===r?(iL?noLoop():loop(),iL=!iL,!1):70===r?(isF=!isF,!1):82===r?(isT=!isT,!1):77===r?(isM=!isM,!1):87===r||65===r||83===r||68===r||r===UP_ARROW||r===LEFT_ARROW||r===DOWN_ARROW||r===RIGHT_ARROW?(k.indexOf(r)<0&&k.push(r),!1):void 0}function keyReleased(){let r=keyCode;return 87===r||65===r||83===r||68===r||r===UP_ARROW||r===LEFT_ARROW||r===DOWN_ARROW||r===RIGHT_ARROW?(k.splice(k.indexOf(r),1),!1):67===r?(tX=0,tY=0,!1):66===r?(tX=spX,tY=spY,!1):void 0}function cK(){let r=iFl?-1:1,p=0,s=0;if(keyIsPressed)for(let t=0;t<k.length;t++)87!==k[t]&&k[t]!==UP_ARROW||(s=-tM*r),65!==k[t]&&k[t]!==LEFT_ARROW||(p=-tM*r),83!==k[t]&&k[t]!==DOWN_ARROW||(s=tM*r),68!==k[t]&&k[t]!==RIGHT_ARROW||(p=tM*r),iFl2?(tY-=p,tX+=s):(tX+=p,tY+=s)}
An ode to Roy Lichtenstein, incorporating his iconic version of Ben-Day dots, halftone dots, angled stripes, and solid color patches. Inspired by Roy's sea and landscape paintings, each artwork generates a unique combination of patterns, shapes, and colors.
let ov, ma, im, cP, nC, bag, oC, hPa = [], hDa = [], s = parseInt(tokenData.hash.slice(0, 16), 16), cn = 0, dim = 0, cl = [[]], dC = 0, iR = !1, iL = !1, iVB = !1, pI = 0, pH = 0, cPI = 0, aL = [], li = -1, oCt = 0; function setup() { dim = Math.floor(Math.min(window.innerWidth, window.innerHeight)), createCanvas(dim, dim), noLoop(); for (let c = 0; c < 32; c++)hPa.push(tokenData.hash.slice(2 + 2 * c, 4 + 2 * c)); hDa = hPa.map(c => parseInt(c, 16)), cn = dim / 2, ov = createGraphics(dim, dim), ma = createGraphics(dim, dim), im = createImage(dim, dim), pH = rnd() < .2 ? .9 : .4, dC = hDa[0] < 21 ? 11 : hDa[0] < 41 ? 121 : hDa[0] < 72 ? 31 : hDa[0] < 122 ? 61 : 91, cl[0][0] = c(150), cl[0][1] = c(125), cl[0][2] = c(100), cl[0][3] = c(65), cl[0][4] = c(30), cl.push([]), cl[1][0] = c("#164849"), cl[1][1] = c("#02aca3"), cl[1][2] = c("#2a2833"), cl[1][3] = c("#970126"), cl[1][4] = c("#cbd5ee"), cl[1][5] = c("#eb8b01"), cl[1][6] = c("#eee00b"), cl[1][7] = c("#012c9f"), cl.push([]), cl[2][0] = c("#899194"), cl[2][1] = c("#e5d503"), cl[2][2] = c("#2b7260"), cl[2][3] = c("#0c1885"), cl[2][4] = c("#5d71b3"), cl[2][5] = c("#141717"), cl[2][6] = c("#9f2317"), cl.push([]), cl[3][0] = c("#efe5a7"), cl[3][1] = c("#002972"), cl[3][2] = c("#f7e038"), cl[3][3] = c("#852129"), cl[3][4] = c("#2e2721"), cl.push([]), cl[4][0] = c("#f2d83d"), cl[4][1] = c("#e52d21"), cl[4][2] = c("#3f3083"), cl.push([]), cl[5][0] = c("#d75b66"), cl[5][1] = c("#23345c"), cl[5][2] = c("#fc1"), cl[5][3] = c("#a36142"), cl[5][4] = c("#54493f"), cl.push([]), cl[6][0] = c("#1f3330"), cl[6][1] = c("#212027"), cl[6][2] = c("#f22f08"), cl[6][3] = c("#ff6f3f"), cl[6][4] = c("#b23136"), cl.push([]), cl[7][0] = c("#2e7daf"), cl[7][1] = c("#ffd507"), cl[7][2] = c("#2897ff"), cl[7][3] = c("#ff665b"), cl[7][4] = c("#66395d"), cl.push([]), cl[8][0] = c("#0444bf"), cl[8][1] = c("#0584f2"), cl[8][2] = c("#0aaff1"), cl[8][3] = c("#e3ef3b"), cl[8][4] = c("#ae5cb2"), cl.push([]), cl[9][0] = c("#6465a5"), cl[9][1] = c("#6975a6"), cl[9][2] = c("#f2e44b"), cl[9][3] = c("#ff4d35"), cl[9][4] = c("#f05837"), cl.push([]), cl[10][0] = c("#f4ed71"), cl[10][1] = c("#9e2504"), cl[10][2] = c("#767287"), cl[10][3] = c("#04030c"), cl[10][4] = c("#383140"), cl.push([]), cl[11][0] = c("#192e5b"), cl[11][1] = c("#2c42a5"), cl[11][2] = c("#4d52bc"), cl[11][3] = c("#00743f"), cl[11][4] = c("#efb700"), cl.push([]), cl[12][0] = c("#6F706F"), cl[12][1] = c("#65A547"), cl[12][2] = c("#f4ba18"), cl[12][3] = c("#f4650c"), cl[12][4] = c("#8b281f"), cl.push([]), cl[13][0] = c("#a3586d"), cl[13][1] = c("#5c4a72"), cl[13][2] = c("#f2be46"), cl[13][3] = c("#ef4e26"), cl[13][4] = c("#f25252"), cl.push([]), cl[14][0] = c("#2b87d8"), cl[14][1] = c("#0abda0"), cl[14][2] = c("#2ef487"), cl[14][3] = c("#d4e83c"), cl[14][4] = c("#c64837"), cl.push([]), cl[15][0] = c("#040627"), cl[15][1] = c("#03353e"), cl[15][2] = c("#0294a5"), cl[15][3] = c("#374351"), cl[15][4] = c("#c1403d"), cl.push([]), cl[16][0] = c("#55d9c0"), cl[16][1] = c("#ff60d2"), cl[16][2] = c("#107050"), cl[16][3] = c("#02231c"), cl[16][4] = c("#4dd8ad"), cl.push([]), cl[17][0] = c("#f55"), cl[17][1] = c("#29e"), cl[17][2] = c("#f24"), cl[17][3] = c("#70f"), cl[17][4] = c("#99d"), cl[17][5] = c("#3ac"), cl.push([]), cl[18][0] = c("#f01"), cl[18][1] = c("#16f"), cl[18][2] = c("#f11"), cl[18][3] = c("#75f"), cl[18][4] = c("#f67"), cl[18][5] = c("#fd1"), cPI = hDa[1] < 7 ? 0 : int(map(hDa[1], 7, 256, 1, cl.length)), cP = cl[cPI], bag = hDa[2] < 64 ? c(0) : c(255), iVB = hDa[2] > 128, pI = hDa[3] < 24 ? .7 : hDa[3] < 152 ? .15 : .4; let l = tokenData.hash.toLowerCase(); iR = l.indexOf("52") >= 0 && l.indexOf("4f") >= 0 && l.indexOf("59") >= 0, aL.push({ id: 76, ltr: "L" }), aL.push({ id: 149, ltr: "I" }), aL.push({ id: 216, ltr: "C" }), aL.push({ id: 288, ltr: "H" }), aL.push({ id: 372, ltr: "T" }), aL.push({ id: 441, ltr: "E" }), aL.push({ id: 519, ltr: "N" }), aL.push({ id: 602, ltr: "S" }), aL.push({ id: 686, ltr: "T" }), aL.push({ id: 755, ltr: "E" }), aL.push({ id: 828, ltr: "I" }), aL.push({ id: 906, ltr: "N" }); let e = tokenData.tokenId % 1e6; for (let c = 0; c < aL.length; c++)aL[c].id - 1 === e && (iL = !0, li = c) } function draw() { background(255), push(), translate(cn, cn), pS(), pop(), ov.remove(), ma.remove() } function pS() { sL(), iL ? sLi() : iR && sR() } function vB() { iVB && (bag = rnd() < .5 ? c(0) : c(255)) } function nCl() { return cP[int(map(rnd(), 0, 1, 0, cP.length))] } function oP() { (im = ov.get()).mask(ma), image(im, -cn, -cn) } function sR() { oC = 9; for (let c = 0; c < oC; c++) { nC = nCl(), vB(); let l = pPN(); ov = pP(l, nC, bag, !1, !0, !0), ma = mR(ma, c), oP() } } function sLi() { nC = nCl(), vB(); let c = pPN(); ov = pP(c, nC, bag, !1, !0, !0), ma = mLi(ma), oP() } function sL() { let c, l; oC = hDa[4] < 11 ? 2 : int(map(hDa[4], 11, 256, 3, 13)); let e = dim / 1e3, t = 0, a = 0, n = [], i = new Array(oC + 1); i[0] = new Array(1e3); let o = 0; iR || iL || (hDa[5] < 75 ? (rotate(PI / 2), o = 1) : hDa[5] < 150 ? (rotate(3 * PI / 2), o = 3) : hDa[5] < 205 && (rotate(PI), o = 2)); for (let c = 0; c <= dim; c += e)i[0][t] = 0, t++; noiseSeed(map(rnd(), 0, 1, 0, 1e3)); let r = hDa[6] < 11 ? .008 : hDa[6] < 26 ? .005 : .002; for (let d = 0; d < oC; d++) { let f = map(rnd(), 0, 1, 0, 1e3); n.push({ h: a }); let h = map(rnd(), 0, 1, .1 * (dim - a), (dim - a) / map(oC, 2, 16, 1.2, 2.5)); t = 0, i[d + 1] = new Array(1e3); for (let c = 0; c <= dim; c += e)d === oC - 1 ? i[d + 1][t] = dim : (i[d + 1][t] = n[d].h + map(noise(f), 0, 1, 0, h), f += r), i[d + 1][t] > a && (a = i[d + 1][t]), t++; nC = nCl(), vB(); let s = pPN(); nC === c && s === l && (nC = lerpColor(nC, bag, .4)), c = nC, l = s, ov = pP(s, nC, bag, o, !iR && !iL, !1), ma = mPC(ma, i[d], i[d + 1], e), oP() } } function pPN() { return hDa[6 + ++oCt] < 66 ? 0 : hDa[6 + oCt] < 140 ? 1 : hDa[6 + oCt] < 176 ? 2 : 3 } function pP(c, l, e, t, a, n) { if (0 === c) ov = pSo(ov, l); else { if (a && (rnd() < pI || n)) { let c = l; l = e, e = c } 1 === c ? ov = pSt(ov, l, e, t) : 2 === c ? ov = pDo(ov, l, e, dC, !0) : 3 === c && (ov = pDo(ov, l, e, dC, !1)) } return ov } function pDo(c, l, e, t, a) { t % 2 == 0 && (t += 1); let n = dim / (1.25 * t), i = t + 1, o = dim / t, r = o / 2, d = -r - cn, f = -r - cn, h = 0, s = n / t * pH, p = n; c.clear(), c.background(e), c.noStroke(), c.fill(l), c.push(), c.translate(cn, cn); let m = rnd() < .5; a && m && c.rotate(PI); for (let l = 1; l <= i; l++)for (let e = 1; e <= t; e++)h = e % 2 == 0 ? r : 0, a && (p = n - (l - 1) * s), c.ellipse(l * o + d - h, e * o + f, p, p); return c.pop(), c } function pSo(c, l) { return c.clear(), c.background(l), c.noStroke(), c.fill(l), c } function pSt(c, l, e, t) { let a = 100, n = dim / a; a *= 3, c.clear(), c.background(l), c.noFill(), c.stroke(e), c.strokeWeight(n), c.push(), c.translate(cn, cn), c.rotate(PI / 6), 1 === t ? c.rotate(-PI / 2) : 2 === t ? c.rotate(-PI) : 3 === t && c.rotate(-3 * PI / 2); for (let l = 0; l <= a; l++)l % 2 == 0 && c.line(l * n - 3 * cn - 0, 3 * -cn, l * n - 3 * cn - 0, 3 * cn); return c.pop(), c } function mPC(c, l, e, t) { c.clear(), c.fill(0, 255), c.stroke(0, 255), c.strokeWeight(.01 * dim), c.beginShape(); let a = 0; for (let e = 0; e <= dim; e += t)c.vertex(e, l[a]), a++; c.vertex(dim, e[e.length - 1]), a = e.length - 1; for (let l = dim; l >= 0; l -= t)c.vertex(l, e[a]), a--; return c.vertex(0, l[0]), c.endShape(), c } function mR(c, l) { c.clear(), c.fill(0, 255), c.stroke(0, 255), c.strokeWeight(.05 * dim); let e = dim / 3 * (l % 3) + dim / 3 / 2, t = dim / 3 * int(l / 3) + dim / 3 / 2 + dim / 37; c.textFont("sans-serif", .33 * dim), c.textAlign(CENTER, CENTER); let a = 0 == l || 8 == l ? "R" : 2 == l || 6 == l ? "Y" : 4 == l ? "" : "O"; return c.text(a, e, t), c } function mLi(c) { return c.clear(), c.fill(0, 255), c.stroke(0, 255), c.strokeWeight(.05 * dim), c.textFont("sans-serif", dim), c.textAlign(CENTER, CENTER), c.text(aL[li].ltr, dim / 2, dim / 2 + dim / 13), c } function c(c) { return color(c) } function rnd() { return s ^= s << 13, s ^= s >> 17, ((s ^= s << 5) < 0 ? 1 + ~s : s) % 1e3 / 1e3 }