PageSourceSearch

https://jackgiffin.com/res/main.min.js

js jackgiffin.com collected 2026-10-04 20:15:08 UTC 33,036 bytes, 769 lines download raw bytes

1// ==ClosureCompiler==
2// @output_file_name default.js
3// @compilation_level SIMPLE_OPTIMIZATIONS
4// @language_out ECMASCRIPT5_STRICT
5// ==/ClosureCompiler==
6"use strict";
7(function afterWindowLoads(isFirstTime){
8	var window = typeof self !== "undefined" ? self : Function("return window")(), document = window.document;
9	var documentBody = document.getElementsByTagName("body")[0];
10	var documentHead = document.getElementsByTagName("head")[0];
11	var Date = window.Date;
12	var requestAnimationFrame = window.requestAnimationFrame || function(f){
13		return setTimeout(f, new Date%(50/3));
14	};
15	var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;
16	var navigator = window.navigator;
17	if (isFirstTime === "yes") {
18		/*if ('serviceWorker' in navigator) {
19			var serviceWorker = navigator.serviceWorker;
20			serviceWorker.getRegistrations().then(function(registrations){
21				if (registrations.length === 0) {
22					serviceWorker.register('/service-worker.min.js', {scope: "/"});
23				}
24			});
25		}*/ // the server is now sending 304 not modifieds correctly without the help of this script
26	} else {
27		document.onreadystatechange = null;
28	}
29	if (document.readyState === "loading") {
30		document.onreadystatechange = afterWindowLoads;
31		return;
32	}
33	function listenTo(object, eventName, handler, options) {
34		if (object.addEventListener) {
35			object.addEventListener(eventName, handler, options);
36		} else {
37			object.attachEvent("on" + eventName, handler);
38		}
39	}
40	var UAstr = navigator.userAgent;
41	if (!/bot|googlebot|crawler|spider|robot|crawling|\.com|\.net|\.org|s:\/\/|mail|@/i.test(UAstr)) { // this shuld take care of most crawlers
42		var cascadeDownEles = document.getElementsByClassName("cascadedown");
43		for (var cascadeIndex=0, cascadeLen=cascadeDownEles.length; cascadeIndex !== cascadeLen; ++cascadeIndex) {
44			var ele = cascadeDownEles[cascadeIndex];
45			var i = 0, arrToDo = ele.children, dur=100, nxt = function(arrToDo, ele, i, alreadyGone){
46				var start=0, initial=0, curVal=0;
47				if (arrToDo[i]){
48					arrToDo[i].style.zIndex = -i;
49					initial = -arrToDo[i].firstElementChild.clientHeight;
50					arrToDo[i].firstElementChild.style.marginTop = initial + "px";
51					start = performance.now();
52					requestAnimationFrame(function transitionToNext(){
53						curVal = initial - (performance.now()-start)/dur*initial;
54						if ((curVal > initial/1.65) && !alreadyGone){
55							alreadyGone = true;
56							requestAnimationFrame(nxt.bind(undefined, arrToDo, ele, i+1, false));
57						}
58						if (curVal <= 0){
59							arrToDo[i].firstElementChild.style.marginTop = curVal + "px";
60							requestAnimationFrame(transitionToNext);
61						} else {
62							arrToDo[i].firstElementChild.style.marginTop = "0px";
63							arrToDo[i].style.height = "";
64						}
65					});
66					arrToDo[i].style.visibility = "visible";
67				}
68			};
69			while (i < arrToDo.length){
70				arrToDo[i].style.height = arrToDo[i].clientHeight + 1 + "px";
71				++i;
72			}
73			requestAnimationFrame(nxt.bind(undefined, arrToDo, ele, 0, false));
74		};
75	}
76
77	function afterDoneLoading() {
78		var undoTextManager = [],
79			originalSentenceList = "I am so blue I'm greener than purple | I stepped on a Corn Flake, now I'm a Cereal Killer | llamas eat sexy paper clips | on a scale from one to ten what is your favourite colour of the alphabet | bananna error | everyday a grape licks a friendly cow | the red hexagon mmm'ed a prickly seahorse | when your canoe is stuck in a tree with the headlights on, how many pancakes will it be to the moon | what do you think about the magical yellow unicorn who dances on the rainbow with a spoonful of blue cheese dressing | gumball Watterson never likes chicken pot pies | there's a purple mushroom in my backyard, screaming Taco's | mustard gas my maternal mass | it has been hacked by DDoS | when life gives you lemons, chuck them at people you hate | what comes around goes vanish | a Zebra licked a DVD | LOL Lots of love | cute fluffy puppies prancing bout painbows | wretched world peace, I just wana pony | my nose is a communist | a hotdog on a bridge | thank you for noticing this list | your noticing has been noticed | a fuzzy snake ate the clouds | a blonde pony ate a shiny shoe then punched Dale | I mean, tree | the China connects the Furby and the toilet | that duck over there | Gurklebob is eating eyes with Schadenfreude | a cherry is also a red bullfrog | the prim pirannah's pencil | crickets vaping in the grassroom | smoked | sexy | what the | dog | Brutus and Cassius | lust | passion | ancient | free | bondage | fairest | crazy | penetrate | pleasure | white trashcan | erects | bloody | die | embarrass | feed | having had been | will be | Hester | moist | sadistic | alienation | like | like | like | like | like | like | like | like | like | like | lip | cinnamon | sweet | spicy | hot | ENED bad | Christ-like-ping | mingle | satanic | strip | phlegm | ointment | with panties | lugubrious | curd | rural | dollop | slur | mucus | pulp | clogged | slacks | dripping | slur | slur | hubby and wifey | wellness | discharge | impactful | beautiful | handsome | smooth | prideful | sputum | goiter | poop | Chuck Norris | remonstrates | wants to kill | pisses | chemical | acidic | basic | cancer | toxic | pull down your | rides | ridden | marriage | clock | bit | till | milk of | mind wipe | ICUP | sin | bad | dank meme | streak | cringy ".split("|"),
80			randomSentenceList = originalSentenceList.slice();
81		function RandomNumberGenerator(seed){
82			var d = new Date();
83			seed = seed || 2345678901 + (d.getSeconds() * 0xFFFFFF) + (d.getMinutes() * 0xFFFF);
84			var A = 48271;
85			var M = 2147483647;
86			var Q = M / A;
87			var R = M % A;
88			var oneOverM = 1.0 / M;
89			return function(){
90				var hi = seed / Q;
91				var lo = seed % Q;
92				var test = A * lo - R * hi;
93				if(test > 0){
94					seed = test;
95				} else {
96					seed = test + M;
97				}
98				return (seed * oneOverM);
99			};
100		}
101		try {
102			// Make it so you get the same reults going to the same page, but other people get different results going to that same page. Mwhahaha.....
103			randomSentenceList = localStorage["rSL"].split("").map(function(x){
104				return originalSentenceList[x.charCodeAt(0) % originalSentenceList.length |0];
105			});
106		} catch(e) {
107			var getRand = RandomNumberGenerator();
108			for (var i = randomSentenceList.length - 1; i > 0; i=i-1|0) {
109				var j = getRand * (i + 1|0)|0;
110				var temp = randomSentenceList[i];
111				randomSentenceList[i] = randomSentenceList[j];
112				randomSentenceList[j] = temp;
113			}
114			localStorage["rSL"] = randomSentenceList.reduce(function(acc, cur){
115				return acc + String.fromCharCode( originalSentenceList.indexOf(cur) );
116			}, "");
117		}
118		var txtNodeType = Node.TEXT_NODE;
119		function hashFnv32a(str) {
120			/*jshint bitwise:false */
121			var i, l, hval = 0x811c9dc5;
122
123			for (i = 0, l = str.length; i < l; i++) {
124				hval ^= str.charCodeAt(i);
125				hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24);
126			}
127			return hval >>> 0;
128		}
129		function selectRandomNode(){
130			var nodes = [];
131			var hashCode = 0;
132			(function recurse(element) {
133				if (element.childNodes.length > 0)
134					for (var i = 0; i < element.childNodes.length; i++)
135						recurse(element.childNodes[i]);
136
137
138				if (element.nodeType == txtNodeType && element.nodeValue.trim() !== '') {
139					hashCode ^= hashFnv32a(element.nodeValue);
140					nodes.push(element);
141				}
142			})( documentBody );
143			var resultingArray = [], randomSentencesCur = randomSentenceList.slice();
144			var i = randomSentencesCur.length, rand = RandomNumberGenerator( hashCode );
145			while (i && nodes.length) {
146				resultingArray.push(
147					[
148						nodes.splice((rand()*nodes.length), 1)[0],
149						randomSentencesCur.splice((rand()*i|0)%i, 1)[0]
150					]
151				);
152				i -= 1;
153			}
154			return {
155				rand: rand,
156				res: resultingArray
157			};
158		}
159		var keysCurDown = 0x0, isCurrentlyInTheMode;
160		function getRandPos(rand, str){
161			var reg = /\s+/g, indexs = [];
162			while (reg.exec(str)) indexs.push( reg.lastIndex );
163			return indexs[ rand()*indexs.length|0 ] || 0;
164		}
165		listenTo(window, "keydown", function(evt){
166			var index = [/*"alt", "control",*/ "shift"].indexOf(evt.key && evt.key.toLowerCase());
167			if (/*evt.repeat ||*/ index === -1) {
168				return;
169			}
170			keysCurDown |= (
171				!evt.location ? 0x3 : evt.location === 1 ? 1 : 2
172			) << index;
173			if (keysCurDown === 0x3/*0x3f*/ && !isCurrentlyInTheMode) {
174				// do into the magic
175				isCurrentlyInTheMode = true;
176				var rawQuery = selectRandomNode();
177				var randNodes = rawQuery.res, getRand = rawQuery.rand, i = 0, Len = randNodes.length;
178				while(i !== Len){
179					var curNode = randNodes[i];
180					var textNode = curNode[0], insertText = curNode[1];
181					var newPos = getRandPos(getRand, textNode.nodeValue);
182					var newText = textNode.nodeValue.substring(0, newPos) + insertText + textNode.nodeValue.substring(newPos);
183					undoTextManager.push([
184						textNode,
185						newText,
186						textNode.nodeValue
187					]);
188					textNode.nodeValue = newText;
189					++i;
190				}
191			}
192		}, {passive:1});
193		listenTo(window, "keyup", function(evt){
194			var index = [/*"alt", "control",*/ "shift"].indexOf(evt.key && evt.key.toLowerCase());
195			if (/*!evt.key || evt.repeat ||*/ index === -1) {
196				return;
197			}
198			keysCurDown &= ~((
199				!evt.location ? 0x3 : evt.location === 1 ? 1 : 2
200			) << index);
201			if (keysCurDown !== 0x3f && isCurrentlyInTheMode) {
202				// undo out the magic
203				isCurrentlyInTheMode = false;
204				undoTextManager.forEach(function(x) {
205					var textNode = x[ 0 ];
206					var current  = x[ 1 ];
207					var original = x[ 2 ];
208					if (textNode.nodeValue === current) {
209						textNode.nodeValue = original;
210					}
211				});
212				undoTextManager.length = 0;
213			}
214		}, {passive:1, capture: true});
215		
216		
217		
218		
219		var triggerColorChangeText = "Jack Giffin";
220		var triggerColorChangeRegExp = /(?:\b|^)Jack\s+Giffin(?:\b|$)/i;
221		
222		var isCurrentlyRandomizingColors = false;
223		var originalElementColors = new Map;
224		var randomizeColorsId = -1;
225		
226		var Math_random = Math.random;
227		
228
229		listenTo(document, "selectionchange", function() {
230			const selectionObject = window.getSelection();
231			const selectedText = selectionObject.toString();
232			
233			if (
234				selectedText.length < (triggerColorChangeText.length + 5) &&
235				triggerColorChangeRegExp.test( selectedText )
236			) {
237				// Begin randomly changing the colors of all the elements on the page
238				
239				isCurrentlyRandomizingColors = !isCurrentlyRandomizingColors;
240				if (randomizeColorsId !== -1) clearInterval( randomizeColorsId );
241				
242				selectionObject.removeAllRanges();
243				
244				if (isCurrentlyRandomizingColors) {
245					const allCollection = document.getElementsByTagName("*");
246					for (var i=0, len=allCollection.length|0, j=0, children, childCount, hasTextNodes=false; i<len; i=i+1|0) {
247						
248						children = allCollection[i].childNodes;
249						hasTextNodes = false;
250						
251						for (j=0, childCount = children.length|0; j<childCount; j=j+1|0) {
252							if (children[j].nodeType === 3 && /\S/.test(children[j].data)) { // 3 is Node.TEXT_NODE
253								hasTextNodes = true;
254								break;
255							}
256						}
257						
258						if (hasTextNodes) {
259							originalElementColors.set(allCollection[i], allCollection[i].style.color || null);
260						}
261					}
262					
263					
264					
265					randomizeColorsId = setInterval(function randomizeColorChoices() {
266						originalElementColors.forEach(function(value, key) {
267							key.style.color = "hsl(" + Math_random()*360 + ",67%,67%)";
268						});
269					}, 667);
270				} else {
271					originalElementColors.forEach(function(value, key) {
272						key.style.color = value === null ? "" : value;
273					});
274					
275					originalElementColors.clear();
276					
277					randomizeColorsId = -1;
278				}
279					
280			}
281		}, {passive:1});
282		
283		
284		
285
286		var mrs_h_owlEle = document.getElementById("mrs_h_owl");
287		if (mrs_h_owlEle && window.HTMLMediaElement && ("play" in HTMLMediaElement.prototype)) {
288			var audioTracks = [
289				"mrsH0.mp4",
290				"mrsH1.mp4",
291				"donnavan_a_0.mp4"
292			];
293			var curTracks = [];
294			var mrsH_SoundEle;
295			var isSoundOpenNow = false;
296			var isSoundLoaded = false;
297			/*function getRand_Four(upperVal) {
298				return Math.random()*upperVal ^ Math.random()*upperVal ^ Math.random()*upperVal ^ Math.random()*upperVal;
299			}
300			function getRand_0x0f(upperVal) {
301				return getRand_Four(upperVal) ^ getRand_Four(upperVal) ^ getRand_Four(upperVal) ^ getRand_Four(upperVal);
302			}
303			function getRandom(upperVal) {
304				return getRand_0x0f(upperVal) ^ getRand_0x0f(upperVal) ^ getRand_0x0f(upperVal) ^ getRand_0x0f(upperVal);
305			}*/
306			var supportsCrypto = typeof crypto !== "undefined";
307			var randArrTMP = supportsCrypto && new Uint32Array(64);
308			//var randResF64TMP = supportsCrypto && new Float64Array(1);
309			//var randResU32TMP = supportsCrypto && new Uint32Array(randResF64TMP.buffer);
310			var randResU32TMP = supportsCrypto && new Uint32Array(1);
311			var lastRandom = 0;
312			try { lastRandom = parseInt(localStorage.getItem("lastRandomAudio")) || 0; } catch(e){}
313			function getRandom(upperVal) {
314				if (supportsCrypto) {
315					/*for (var i = 0; i !== randArrTMP.length; ++i) {
316						resV
317					}*/
318					var newRandom;
319					do {
320						crypto.getRandomValues( randResU32TMP );
321						newRandom = randResU32TMP[0] % upperVal;
322					} while (lastRandom === newRandom);
323					lastRandom = newRandom;
324					try { localStorage.setItem("lastRandomAudio", ""+newRandom) } catch(e) {}
325					return newRandom;
326				}
327				return (Math_random()*upperVal|0)%upperVal;
328			}
329			var isCurrentlyTryingToPlay = false;
330			var doPauseAfterTryToPlay = false;
331			function tryToPauseMrsHAudio(){
332				if (isCurrentlyTryingToPlay) {
333					doPauseAfterTryToPlay = true;
334				} else {
335					mrsH_SoundEle.pause();
336				}
337			}
338			function whenPlaysSuccessfully(){
339			// success playing!
340				isCurrentlyTryingToPlay = false;
341				if (doPauseAfterTryToPlay) {
342					setTimeout(tryToPauseMrsHAudio, 3);
343				}
344			}
345			function playCurrentMrsHAudio() {
346				var playPromise = mrsH_SoundEle.play();
347				if (playPromise) {
348					doPauseAfterTryToPlay = false;
349					isCurrentlyTryingToPlay = true;
350					playPromise.then(whenPlaysSuccessfully, function(){
351						mrsH_SoundEle.play().finally(whenPlaysSuccessfully); // try again one more time
352					}); // failure playing
353				}
354			}
355			function loadNewAudio(){
356				if (!curTracks.length) {
357					curTracks = audioTracks.slice();//.concat(audioTracks);
358					if (!curTracks.length) return;
359				}
360				var curRandVal = getRandom(curTracks.length);
361				var URLString = curTracks[curRandVal];
362				curTracks.splice(curRandVal,1);
363				isSoundLoaded = false;
364				if (mrsH_SoundEle) {
365					mrsH_SoundEle.src = "res/mrsH/" + URLString;
366				} else {
367					mrsH_SoundEle = new Audio("res/mrsH/" + URLString);
368					var passiveEvent = {passive:1};
369					listenTo(mrsH_SoundEle, "ended", function(){
370						mrsH_SoundEle.currentTime = 0;
371						loadNewAudio();
372					}, passiveEvent);
373					listenTo(mrsH_SoundEle, "canplaythrough", function(){
374						if (isSoundOpenNow !== !mrsH_SoundEle.paused) {
375							if (isSoundOpenNow/*mrsH_SoundEle.paused*/) {
376								playCurrentMrsHAudio();
377							} else {
378								tryToPauseMrsHAudio();
379							}
380						}
381						isSoundLoaded = true;
382					}, passiveEvent);
383				}
384				mrsH_SoundEle.loop = mrsH_SoundEle.autoplay = mrsH_SoundEle.controls = false;
385				mrsH_SoundEle.autoplay = isSoundOpenNow;
386				if (isSoundOpenNow) playCurrentMrsHAudio();
387			}
388			var from=1, to=1, isTransitioning = false, firstTimeOwlId = -2, setTimeout = window.setTimeout, Math_sqrt = Math.sqrt;
389			function overrideTransSound(){
390				isTransitioning = false;
391				transitionSoundVolume();
392			}
393			function transitionSoundVolume(timeWaited){
394				if (isTransitioning) return;
395				isTransitioning = false;
396				if (to === 0) {
397					from -= 1/270;
398					if (from > 0) {
399						isTransitioning = true;
400						setTimeout(overrideTransSound, 5);
401					} else {
402						from = 0;
403						tryToPauseMrsHAudio();
404					}
405					mrsH_SoundEle.volume = Math_sqrt(from);
406				} else { // to === 1
407					from += 1/270;
408					if (from < 1) {
409						isTransitioning = true;
410						setTimeout(overrideTransSound, 5);
411					} else {
412						from = 1;
413					}
414					mrsH_SoundEle.volume = Math_sqrt(from);
415				}
416			}
417			listenTo(mrs_h_owlEle, "mouseout", function(){
418				if (0 <= firstTimeOwlId) {
419					clearTimeout(firstTimeOwlId);
420					firstTimeOwlId = -1;
421				}
422				isSoundOpenNow = false;
423				if (isSoundLoaded && !mrsH_SoundEle.paused) {
424					to = 0;
425					setTimeout(transitionSoundVolume, 5);
426				}
427			});
428			listenTo(mrs_h_owlEle, "mouseover", function whenMouseOver(){
429				if (firstTimeOwlId === -2) {
430					loadNewAudio();
431					mrsH_SoundEle.volume = 0;
432					documentBody.appendChild(mrsH_SoundEle);
433					firstTimeOwlId = setTimeout(whenMouseOver, 333);
434				} else {
435					if (0 <= firstTimeOwlId) {
436						clearTimeout(firstTimeOwlId);
437						firstTimeOwlId = -1;
438					}
439					isSoundOpenNow = true;
440					if (isSoundLoaded && mrsH_SoundEle.paused) {
441						playCurrentMrsHAudio();
442						to = 1;
443						setTimeout(transitionSoundVolume, 5);
444					}
445				}
446			});
447			/*********************************************************************************/
448			var pongIsLoaded = false;
449			listenTo(mrs_h_owlEle, "dblclick", function(){
450				// bring up the pong game!
451				function afterPongLoads(){
452					if ("Game" in window) {
453						pongscript.onload = pongscript.onreadystatechange = null;
454						pongIsLoaded = true;
455						window["Game"]["ready"](function() {
456							var pong = window["Game"].start('game', null, {
457								"sound":       false,
458								"stats":       false,
459								"footprints":  false,
460								"predictions": false
461							});
462							documentBody.appendChild( window["renderPongCanvas"] );
463						});
464					}
465				}
466				if (!pongIsLoaded) {
467					var pongscript = document.createElement("script");
468					pongscript.onload = pongscript.onreadystatechange = afterPongLoads;
469					documentHead.appendChild(pongscript);
470					pongscript.src = "res/ponggame.js";
471				} else {
472					afterPongLoads();
473				}
474			});
475		} else if (mrs_h_owlEle) {
476			mrs_h_owlEle.style.display = "none";
477		}
478		
479		var mainbodycontentEle = document.getElementById("mainbodycontent");
480		if (mainbodycontentEle) (function(){
481			var font_size = 128;
482			var canvas=document.getElementById('myCanvas');
483			var width=canvas.width=window.innerWidth, height=canvas.height=window.innerHeight;
484			var _logb2=Math.log(2), _logsqrt2=Math.log(Math.sqrt(2));
485			listenTo(window, "resize", function(){
486				width = canvas.width = window.innerWidth;
487				height = canvas.height = window.innerHeight;
488			});
489			var bounce_elements=[];
490			function new_pepper(url) {
491				var dimensions = Math.pow(2, 6+Math.round(Math_random()*4)/2);
492
493				var outer_marquee = document.createElement('marquee');
494				outer_marquee.setAttribute('direction', ['down','up'][Math.round(Math_random())]);
495				outer_marquee.setAttribute('width', '100%');
496				outer_marquee.setAttribute('height', '100%');
497				outer_marquee.setAttribute('behavior', 'alternate');
498				outer_marquee.setAttribute('scrollamount', (1+Math_random()*3).toString());
499				outer_marquee.setAttribute('scrolldelay', '30');
500				outer_marquee.style = 'position:absolute;top:0px;left:0px;direction:rtl';
501				var inner_marquee = document.createElement('marquee');
502				inner_marquee.setAttribute('direction', ['right','left'][Math.round(Math_random())]);
503				inner_marquee.setAttribute('behavior', 'alternate');
504				inner_marquee.setAttribute('scrollamount', (1+Math_random()*3).toString());
505				inner_marquee.setAttribute('scrolldelay', '30');
506				inner_marquee.style = 'direction:ltr';
507				var img = new Image();
508				img.width = img.height = dimensions;
509				outer_marquee.appendChild(inner_marquee);
510				canvas.appendChild(outer_marquee);
511				img.onload = function(){
512					inner_marquee.appendChild(img);
513					bounce_elements[bounce_elements.length] = {
514						'outer': outer_marquee,
515						'inner': inner_marquee,
516						'img': img
517					};
518				};
519				img.src=url;
520			}
521			canvas.parentNode.removeChild(canvas);
522
523			var on=false, easteregg = document.getElementById('easteregg'), top_marquee = document.getElementById('top_marquee');
524			var marqueeSupported = easteregg.offsetHeight > 0 || easteregg.offsetTop > 9;
525			function polyfillMarquee() {
526				
527			}
528			var initial_HTML = easteregg.innerHTML;
529
530			/*window.onresize = function() {
531				var font_size = (window.innerWidth/90 + 30); //(Math.log(Math.min(window.innerHeight,window.innerWidth))/_logsqrt2+12)*2;
532				//easteregg.setAttribute('style', "direction:ltr;font-size:" + Math.round(font_size).toString() + "px;line-height:" + Math.round(font_size*0.875).toString() + "px;");
533				//top_marquee.setAttribute('height', Math.round(font_size*4).toString());
534			}*/
535			/*try {
536				window.onresize();	// Setting it all up
537			} catch(e) {}*/
538			function start_bouncing() {
539				if (!window.bouncing){
540					window.bouncing = true;
541					mainbodycontentEle.appendChild(canvas);
542				}
543			}
544			function stop_bouncing() {
545				if (window.bouncing){
546					window.bouncing = false;
547					mainbodycontentEle.removeChild(canvas);
548				}
549			}
550			window.bouncing = false;
551			var clickAttempts = 0;
552			var startedRunning = -1;
553			listenTo(easteregg, "click", function() {
554				//easteregg.removeAttribute('class');
555				clickAttempts = clickAttempts + 1 |0;
556				if (startedRunning !== -1 && startedRunning >= Date.now()) {
557					// ignore click events if the show awas started sooner than 3 seconds after it started
558					return;
559				}
560				if (clickAttempts > 1 && Math_random() > .4) {
561					// 2 in 5 chance
562					easteregg.innerHTML = "<b>!!! PEPPER !!!</b>";
563					if (clickAttempts > 2 && Math_random() > .4) {
564						// 4 in 25 chance (or 1 in 6.25 chance)
565						//console.log("Running...");
566						if (startedRunning === -1) {
567							new_pepper('res/pepper_stretched.png'), new_pepper('res/pepper_relaxed.png'), new_pepper('res/pepper_waiting.png');
568						}
569						start_bouncing();
570						startedRunning = Date.now() + 3000; // give a 3s lee-way during which click events are ignored
571					} else if (startedRunning !== -1) {
572						startedRunning = -1;
573						stop_bouncing();
574					}
575				} else {
576					easteregg.innerHTML = initial_HTML;
577					if (startedRunning !== -1) {
578						startedRunning = -1;
579						stop_bouncing();
580					}
581				}
582			});
583		})();
584		var allLinks = document.links || document.getElementsByTagName("a");
585		for (var i=(allLinks.length|0)-1|0; i>=0; i=i-1|0) {
586			if (allLinks[i].getAttribute("target") === "_blank" && !allLinks[i].hasAttribute("rel")) allLinks[i].setAttribute("rel", "noopener");
587		}
588		allLinks = null;
589		var allDeferedLoadings = document.getElementsByName("lazy-load");
590		var len = allDeferedLoadings.length|0;
591		for (var i=0; i<len; i=i+1|0) {
592			var lazilyLoaded = allDeferedLoadings[i];
593			
594			var lazySrc = lazilyLoaded.getAttribute("data-lazy-src");
595			var lazyHref = lazilyLoaded.getAttribute("data-lazy-href");
596			
597			if (lazySrc !== null) lazilyLoaded.setAttribute("src", lazySrc);
598			if (lazyHref !== null) lazilyLoaded.setAttribute("href", lazyHref);
599		}
600		allDeferedLoadings = null;
601		/*********************************************************************************/
602		var GoogleAnalyticsObject = window["GoogleAnalyticsObject"] = "ga";
603		window[GoogleAnalyticsObject] = window[GoogleAnalyticsObject] || function() {
604			window[GoogleAnalyticsObject].q.push(arguments);
605		};
606		window[GoogleAnalyticsObject].l = new Date;
607		window[GoogleAnalyticsObject].q = [["create", 'UA-112322498-2', {
608			siteSpeedSampleRate: 0
609		}], ["send", "pageview"]];
610		var scriptElement = document.createElement("script");
611		scriptElement.src = "https://www.google-analytics.com/analytics.js";
612		document.getElementsByTagName("head")[0].appendChild(scriptElement);
613		/*********************************************************************************/
614	}
615	
616	if (document.readyState === "complete") {
617		afterDoneLoading();
618	} else {
619		listenTo(window, "load", afterDoneLoading, {once:1});
620	}
621	function generatePossibleTablesForTheGame() {
622		var LEN = 24, dic="abcd";
623		var strings = "012301320213023103120321102310321203123013021320201320312103213023012310301230213102312032013210".match(/..../g);
624		var arr = strings.map(function(s) {
625			return (1 << +s[0]) | (16 << +s[1]) | (256 << +s[2]) | (4096 << +s[3]);
626		});
627		var valids = [], asString = "";
628		
629		for (var i0=0; i0 < LEN; i0=i0+1|0) {
630			var row0 = arr[i0] | 0;
631			for (var i1=0; i1 < LEN; i1=i1+1|0) {
632				var row1 = arr[i1] | 0;
633				if (row0 & row1) continue;
634				for (var i2=0; i2 < LEN; i2=i2+1|0) {
635					var row2 = arr[i2] | 0;
636					if (row0 & row2) continue;
637					if (row1 & row2) continue;
638					for (var i3=0; i3 < LEN; i3=i3+1|0) {
639						var row3 = arr[i3] | 0;
640						if (row0 & row3) continue;
641						if (row1 & row3) continue;
642						if (row2 & row3) continue;
643						valids.push(strings[i0] + strings[i1] + strings[i2] + strings[i3]);
644					}
645				}
646			}
647		}
648		
649		return valids;
650	}
651	function generateRandomPlayField(valids) {
652		var targetIndex = Math_random() * valids.length | 0;
653		var targetBoard = valids[targetIndex].split("");
654		var coveredBoard = targetBoard.slice();
655		var joinedList = valids.slice(0, targetIndex).concat(valids.slice(targetIndex+1)).join("\n");
656		
657		for (var i=0; i < 128; i=i+1|0) {
658			var pos = Math_random() * 16 | 0;
659			if (coveredBoard[pos] === ".") continue;
660			
661			coveredBoard[pos] = ".";
662			var reg = new RegExp("^" + coveredBoard.join(""), "m");
663			if (reg.test(joinedList)) {
664				// Invalid board configuration due to multiple valid choices
665				coveredBoard[pos] = targetBoard[pos];
666			}
667		}
668		
669		return coveredBoard.join("");
670	}
671	var activeCaptureOption = {"passive": false, "capture": true};
672	var xOffset = 0, yOffset = 0, dragContainer = null, startX = 0, startY = 0, isDragging = false, origHref = "", movedTarget = null, supportsButtons = false;
673	function hypot(x, y) {
674		return Math.sqrt(x*x+y*y);
675	}
676	function preventClick(evt) {
677		evt.stopPropagation();
678		evt.preventDefault();
679	}
680	function whenDraggingUpdate(evt) {
681		evt.stopPropagation();
682		evt.preventDefault();
683		
684		if (supportsButtons) {
685			if (!(evt.buttons & 1)) {
686				return stopDragging(evt);
687			}
688		} else {
689			supportsButtons = !!(evt.buttons & 1);
690		}
691		
692		if (!isDragging) {
693			isDragging = hypot(startX - evt.clientX, startY - evt.clientY) > 8;
694			if (isDragging) {
695				origHref = dragContainer.getAttribute("href");
696				dragContainer.setAttribute("href", "javascript:void(0)");
697				dragContainer.addEventListener("click", preventClick, activeCaptureOption);
698			}
699		}
700		if (isDragging) {
701			var bBox = dragContainer.getBoundingClientRect();
702			var targetStyle = movedTarget.style;
703			targetStyle.left = (evt.clientX - xOffset - bBox.left) + "px";
704			targetStyle.top = (evt.clientY - yOffset - bBox.top) + "px";
705		}
706	}
707	function startDrag(evt) {
708		if (isDragging || evt.button !== 0) return;
709		
710		evt.stopPropagation();
711		evt.preventDefault();
712
713		movedTarget = evt.target;
714		dragContainer = evt.currentTarget || evt.target.parentNode;
715		
716		if (movedTarget.tagName === "A" || movedTarget.tagName === "a") {
717			dragContainer = movedTarget;
718			movedTarget = dragContainer.querySelector(".draggable-number");
719		}
720		
721		var bBox = dragContainer.getBoundingClientRect();
722		var targetComputedStyle = getComputedStyle(movedTarget);
723		startX = evt.clientX;
724		startY = evt.clientY;
725		xOffset = startX - (parseInt(targetComputedStyle.left)|0) - bBox.left;
726		yOffset = startY - (parseInt(targetComputedStyle.top)|0) - bBox.top;
727		
728		isDragging = false;
729		
730		documentBody.addEventListener("mousemove", whenDraggingUpdate, activeCaptureOption);
731		documentBody.addEventListener("touchmove", whenDraggingUpdate, activeCaptureOption);
732	}
733	function stopDragging(evt) {
734		evt.stopPropagation();
735		evt.preventDefault();
736		
737		if (isDragging) {
738			setTimeout(function(dragContainer) {
739				dragContainer.setAttribute("href", origHref);
740				dragContainer.removeEventListener("click", preventClick, activeCaptureOption);
741			}, 500, dragContainer);
742			isDragging = false;
743		}
744		
745		dragContainer = null;
746		
747		documentBody.removeEventListener("mousemove", whenDraggingUpdate, activeCaptureOption);
748		documentBody.removeEventListener("touchmove", whenDraggingUpdate, activeCaptureOption);
749	}
750	function setUpDraggableIcons() {
751		var draggables = document.getElementsByClassName("draggable-epicicon");
752		for (var i=0; i < draggables.length; i++) {
753			draggables[i].addEventListener("mousedown", startDrag, activeCaptureOption);
754			draggables[i].addEventListener("mouseup", stopDragging, activeCaptureOption);
755			draggables[i].addEventListener("touchstart", startDrag, activeCaptureOption);
756			draggables[i].addEventListener("touchend", stopDragging, activeCaptureOption);
757		}
758	}
759	setUpDraggableIcons();
760})("yes");
761'use strict';setTimeout(function(g){function n(a,b){if(a in e)return e[a]=b,!0}function d(a,b,c){var d=m+"px ";e.font="string"===typeof a?d+a:a.join(", "+d).substring(2);e.fillText(b,q+c,r+c);15>m?(m+=11/7,m+=1/13,q+=m%t,r+=m/t):(m-=5,q%=1,r%=1)}try{var p=g.localStorage;if("V"===p["--_s"])return;p["--_s"]="V"}catch(v){return}p=Date.now;var h=document.firstElementChild,c=document.createElement("canvas");c.width=256;c.height=32;c.style.cssText="position:fixed;top:100%;left:100%;width:1px";h.appendChild(c);
762var a={antialias:!0,desynchronized:!0,powerPreference:"low-power"};
762if(a=c.getContext("webgl",a)||c.getContext("experimental-webgl",a)||c.getContext("moz-webgl",a)){a.enable(a.SAMPLE_ALPHA_TO_COVERAGE);a.bindBuffer(a.ARRAY_BUFFER,a.createBuffer());a.bufferData(a.ARRAY_BUFFER,new Float32Array([-.2,-.9,-.01,.57,.4,-.26,0,.7,0,.7321,.5,1/3,1,-.81,-.1,2/7,-2,.89,-.1,.31,-1,1,.07,.76]),a.STATIC_DRAW);var b=a.createProgram(),f=a.createShader(a.VERTEX_SHADER),k=a.createShader(a.FRAGMENT_SHADER);a.shaderSource(f,
763"#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#define highp \n#endif\nattribute vec4 a;varying vec3 v;void main(){v=vec3(a.x+1.0,a.y+1.0,a.w);gl_Position=vec4(a.xyz,1.0);}");a.compileShader(f);a.shaderSource(k,"#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#define highp \n#endif\nvarying vec3 v;void main(){gl_FragColor=vec4(v.xy,fract(v.x*256.0),v.z);}");a.compileShader(k);a.attachShader(b,f);a.attachShader(b,
764k);a.linkProgram(b);a.useProgram(b);b=a.getAttribLocation(b,"a");a.enableVertexAttribArray(b);a.vertexAttribPointer(b,4,a.FLOAT,!1,0,0);a.drawArrays(a.TRIANGLE_STRIP,0,6);a.flush()}b=document.createElement("canvas");b.width=256;b.height=32;b.style.cssText="position:fixed;top:100%;left:100%;width:1px";h.appendChild(b);var e=b.getContext("2d",{alpha:!1,desynchronized:!0});e.fillStyle="#000";e.fillRect(0,0,256,32);n("imageSmoothingEnabled",!0)||n("msImageSmoothingEnabled",!0)||n("mozImageSmoothingEnabled",
765!0)||n("webkitImageSmoothingEnabled",!0);n("imageSmoothingQuality","medium");var m=9.9,q=0,r=0,t=Math.PI;e.textBaseline="top";e.fillStyle="rgba(199,0,0,0.5)";d(["","-apple-system","bold 'Courier New'"],"\u30fd(\u00b4\u0414\uff40)\u4eba(\u00b4\u0414\uff40 )\u4eba(\u00b4\u0414\uff40)\u30ce\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffe",-5.1);d(["","Helvetica","'Nimbus Sans L'","'Liberation Sans'","Arial"],"|li\u046eJd\u00dcSWNtnt\ud801\udef7a\u34dddC\u06c2YRcI\u0a01kPA\u00f4I",
766-5.1);d("Marion-Italic","vkulR\u08a3\u0cc4Rf^mN\u026ay\u304fODx\u259ajb~qCi\u7435tIB\u0299\u6fc9",-5.1);d("Emoji","\u2d40\u0098rJDwYjq\u3354}oVxJTur\b\u001cKDhc\ud808\udcb6",-5.1);e.fillStyle="rgba(0,199,0,0.5)";d(["","'Bradly Hand'","'Century Gothic'","'Apple Gothic'","'URW Gothic L'"],"\u30fd(\u00b4\u0414\uff40)\u4eba(\u00b4\u0414\uff40 )\u4eba(\u00b4\u0414\uff40)\u30ce\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffe",.03);d("Fantasy","\u00e5x`LeTh]hC~k{lea@ZwE`Er_YTx",-.91);
767d("Monospace","Cwm fjordbankvextiz\u276f\u00e1\u00e9\u0295\u2022\u032b\u0361\u2022\u0294\ud83e\uddb0\ud83c\udffe",.07);d("Math","\u0c69plk^\u03c8Z`\u00bf\u2ba9~J\ud84f\ude8aV_]",-.97);e.fillStyle="rgba(0,0,199,0.5)";d("Cursive","\tp\ub442n@\u178ca\u4c24N\u558bM\ud835\udec0\u00c2\u62fcHDAi\u50e4z>\u037b^\u6b2cn[}cjqidJ\u4dc0",4.7);d("Serif","\u225en\ua05er]p_hExG\u4540\u0dbb[\u000fwLEpfYYUX\ud85f\uddff~U\u41bcbqh^rq\u34c8",4.7);d(["","HiraKakuProN-W6","Fangsong"],"\u017bK\u0001\faU\u1be9\u1f44b\u000fkQn\u0001PqLzbR\bq\u0655LicArM\u0001QhQ jSG\u0935\u0003",
7684.7);d(" ui-rounded ui-monospace ui-serif System-ui Georgia".split(" "),"\u6faea\u5cd2\u0126\u0001q\ud73f\u0013cf\u0004&FDKZoC~be\u1b76;",4.7);g=""+(1+(navigator.deviceMemory|0))*(1+(g.devicePixelRatio|0));try{g+=""+navigator.platform}catch(v){}f=[];if(k=navigator.languages){a=0;for(var w=k.length|0,l,u=0;a<w;a=a+1|0)if(l=k[a])u=l.indexOf("-"),l=(-1===u?l:l.substring(0,l)).toLowerCase(),-1===f.indexOf(l)&&f.push(l)}g+=f.sort().join(",");e.drawImage(c,0,0);h.removeChild(c);h.removeChild(b);h=new Uint8Array(e.getImageData(0,
7690,256,32).data.buffer);f=b=c=a=0;for(k=g.length|0;32768>a;a=a+1|0)b=h[a]|0,0!==b&&255!==b?(h[c]=b,c=c+1|0):f<k&&(h[c]=g.charCodeAt(f)&255,c=c+1|0,f=f+1|0);g=new XMLHttpRequest;g.open("POST","/_r.php?v="+(p()/36E5|0));g.send(h.buffer.slice(0,c))},2300,window);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.