It's christmas

This commit is contained in:
Fijxu 2023-12-23 18:42:02 -03:00
parent fc93251476
commit 690b2a109b
5 changed files with 1000 additions and 289 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

29
assets/js/snowstorm-min.js vendored Executable file
View File

@ -0,0 +1,29 @@
/** @license
DHTML Snowstorm! JavaScript-based snow for web pages
Making it snow on the internets since 2003. You're welcome.
-----------------------------------------------------------
Version 1.44.20131208 (Previous rev: 1.44.20131125)
Copyright (c) 2007, Scott Schiller. All rights reserved.
Code provided under the BSD License
http://schillmania.com/projects/snowstorm/license.txt
*/
var snowStorm=function(g,f){function k(a,d){isNaN(d)&&(d=0);return Math.random()*a+d}function x(){g.setTimeout(function(){a.start(!0)},20);a.events.remove(m?f:g,"mousemove",x)}function y(){(!a.excludeMobile||!D)&&x();a.events.remove(g,"load",y)}this.excludeMobile=this.autoStart=!0;this.flakesMax=128;this.flakesMaxActive=64;this.animationInterval=33;this.useGPU=!0;this.className=null;this.excludeMobile=!0;this.flakeBottom=null;this.followMouse=!0;this.snowColor="#fff";this.snowCharacter="•";this.snowStick=
!0;this.targetElement=null;this.useMeltEffect=!0;this.usePixelPosition=this.usePositionFixed=this.useTwinkleEffect=!1;this.freezeOnBlur=!0;this.flakeRightOffset=this.flakeLeftOffset=0;this.flakeHeight=this.flakeWidth=8;this.vMaxX=5;this.vMaxY=4;this.zIndex=0;var a=this,q,m=navigator.userAgent.match(/msie/i),E=navigator.userAgent.match(/msie 6/i),D=navigator.userAgent.match(/mobile|opera m(ob|in)/i),r=m&&"BackCompat"===f.compatMode||E,h=null,n=null,l=null,p=null,s=null,z=null,A=null,v=1,t=!1,w=!1,
u;a:{try{f.createElement("div").style.opacity="0.5"}catch(F){u=!1;break a}u=!0}var B=!1,C=f.createDocumentFragment();q=function(){function c(b){g.setTimeout(b,1E3/(a.animationInterval||20))}function d(a){return void 0!==h.style[a]?a:null}var e,b=g.requestAnimationFrame||g.webkitRequestAnimationFrame||g.mozRequestAnimationFrame||g.oRequestAnimationFrame||g.msRequestAnimationFrame||c;e=b?function(){return b.apply(g,arguments)}:null;var h;h=f.createElement("div");e={transform:{ie:d("-ms-transform"),
moz:d("MozTransform"),opera:d("OTransform"),webkit:d("webkitTransform"),w3:d("transform"),prop:null},getAnimationFrame:e};e.transform.prop=e.transform.w3||e.transform.moz||e.transform.webkit||e.transform.ie||e.transform.opera;h=null;return e}();this.timer=null;this.flakes=[];this.active=this.disabled=!1;this.meltFrameCount=20;this.meltFrames=[];this.setXY=function(c,d,e){if(!c)return!1;a.usePixelPosition||w?(c.style.left=d-a.flakeWidth+"px",c.style.top=e-a.flakeHeight+"px"):r?(c.style.right=100-100*
(d/h)+"%",c.style.top=Math.min(e,s-a.flakeHeight)+"px"):a.flakeBottom?(c.style.right=100-100*(d/h)+"%",c.style.top=Math.min(e,s-a.flakeHeight)+"px"):(c.style.right=100-100*(d/h)+"%",c.style.bottom=100-100*(e/l)+"%")};this.events=function(){function a(c){c=b.call(c);var d=c.length;e?(c[1]="on"+c[1],3<d&&c.pop()):3===d&&c.push(!1);return c}function d(a,b){var c=a.shift(),d=[f[b]];if(e)c[d](a[0],a[1]);else c[d].apply(c,a)}var e=!g.addEventListener&&g.attachEvent,b=Array.prototype.slice,f={add:e?"attachEvent":
"addEventListener",remove:e?"detachEvent":"removeEventListener"};return{add:function(){d(a(arguments),"add")},remove:function(){d(a(arguments),"remove")}}}();this.randomizeWind=function(){var c;c=k(a.vMaxX,0.2);z=1===parseInt(k(2),10)?-1*c:c;A=k(a.vMaxY,0.2);if(this.flakes)for(c=0;c<this.flakes.length;c++)this.flakes[c].active&&this.flakes[c].setVelocities()};this.scrollHandler=function(){var c;p=a.flakeBottom?0:parseInt(g.scrollY||f.documentElement.scrollTop||(r?f.body.scrollTop:0),10);isNaN(p)&&
(p=0);if(!t&&!a.flakeBottom&&a.flakes)for(c=0;c<a.flakes.length;c++)0===a.flakes[c].active&&a.flakes[c].stick()};this.resizeHandler=function(){g.innerWidth||g.innerHeight?(h=g.innerWidth-16-a.flakeRightOffset,l=a.flakeBottom||g.innerHeight):(h=(f.documentElement.clientWidth||f.body.clientWidth||f.body.scrollWidth)-(!m?8:0)-a.flakeRightOffset,l=a.flakeBottom||f.documentElement.clientHeight||f.body.clientHeight||f.body.scrollHeight);s=f.body.offsetHeight;n=parseInt(h/2,10)};this.resizeHandlerAlt=function(){h=
a.targetElement.offsetWidth-a.flakeRightOffset;l=a.flakeBottom||a.targetElement.offsetHeight;n=parseInt(h/2,10);s=f.body.offsetHeight};this.freeze=function(){if(a.disabled)return!1;a.disabled=1;a.timer=null};this.resume=function(){if(a.disabled)a.disabled=0;else return!1;a.timerInit()};this.toggleSnow=function(){a.flakes.length?(a.active=!a.active,a.active?(a.show(),a.resume()):(a.stop(),a.freeze())):a.start()};this.stop=function(){var c;this.freeze();for(c=0;c<this.flakes.length;c++)this.flakes[c].o.style.display=
"none";a.events.remove(g,"scroll",a.scrollHandler);a.events.remove(g,"resize",a.resizeHandler);a.freezeOnBlur&&(m?(a.events.remove(f,"focusout",a.freeze),a.events.remove(f,"focusin",a.resume)):(a.events.remove(g,"blur",a.freeze),a.events.remove(g,"focus",a.resume)))};this.show=function(){var a;for(a=0;a<this.flakes.length;a++)this.flakes[a].o.style.display="block"};this.SnowFlake=function(c,d,e){var b=this;this.type=c;this.x=d||parseInt(k(h-20),10);this.y=!isNaN(e)?e:-k(l)-12;this.vY=this.vX=null;
this.vAmpTypes=[1,1.2,1.4,1.6,1.8];this.vAmp=this.vAmpTypes[this.type]||1;this.melting=!1;this.meltFrameCount=a.meltFrameCount;this.meltFrames=a.meltFrames;this.twinkleFrame=this.meltFrame=0;this.active=1;this.fontSize=10+10*(this.type/5);this.o=f.createElement("div");this.o.innerHTML=a.snowCharacter;a.className&&this.o.setAttribute("class",a.className);this.o.style.color=a.snowColor;this.o.style.position=t?"fixed":"absolute";a.useGPU&&q.transform.prop&&(this.o.style[q.transform.prop]="translate3d(0px, 0px, 0px)");
this.o.style.width=a.flakeWidth+"px";this.o.style.height=a.flakeHeight+"px";this.o.style.fontFamily="arial,verdana";this.o.style.cursor="default";this.o.style.overflow="hidden";this.o.style.fontWeight="normal";this.o.style.zIndex=a.zIndex;C.appendChild(this.o);this.refresh=function(){if(isNaN(b.x)||isNaN(b.y))return!1;a.setXY(b.o,b.x,b.y)};this.stick=function(){r||a.targetElement!==f.documentElement&&a.targetElement!==f.body?b.o.style.top=l+p-a.flakeHeight+"px":a.flakeBottom?b.o.style.top=a.flakeBottom+
"px":(b.o.style.display="none",b.o.style.bottom="0%",b.o.style.position="fixed",b.o.style.display="block")};this.vCheck=function(){0<=b.vX&&0.2>b.vX?b.vX=0.2:0>b.vX&&-0.2<b.vX&&(b.vX=-0.2);0<=b.vY&&0.2>b.vY&&(b.vY=0.2)};this.move=function(){var c=b.vX*v;b.x+=c;b.y+=b.vY*b.vAmp;b.x>=h||h-b.x<a.flakeWidth?b.x=0:0>c&&b.x-a.flakeLeftOffset<-a.flakeWidth&&(b.x=h-a.flakeWidth-1);b.refresh();l+p-b.y+a.flakeHeight<a.flakeHeight?(b.active=0,a.snowStick?b.stick():b.recycle()):(a.useMeltEffect&&(b.active&&3>
b.type&&!b.melting&&0.998<Math.random())&&(b.melting=!0,b.melt()),a.useTwinkleEffect&&(0>b.twinkleFrame?0.97<Math.random()&&(b.twinkleFrame=parseInt(8*Math.random(),10)):(b.twinkleFrame--,u?b.o.style.opacity=b.twinkleFrame&&0===b.twinkleFrame%2?0:1:b.o.style.visibility=b.twinkleFrame&&0===b.twinkleFrame%2?"hidden":"visible")))};this.animate=function(){b.move()};this.setVelocities=function(){b.vX=z+k(0.12*a.vMaxX,0.1);b.vY=A+k(0.12*a.vMaxY,0.1)};this.setOpacity=function(a,b){if(!u)return!1;a.style.opacity=
b};this.melt=function(){!a.useMeltEffect||!b.melting?b.recycle():b.meltFrame<b.meltFrameCount?(b.setOpacity(b.o,b.meltFrames[b.meltFrame]),b.o.style.fontSize=b.fontSize-b.fontSize*(b.meltFrame/b.meltFrameCount)+"px",b.o.style.lineHeight=a.flakeHeight+2+0.75*a.flakeHeight*(b.meltFrame/b.meltFrameCount)+"px",b.meltFrame++):b.recycle()};this.recycle=function(){b.o.style.display="none";b.o.style.position=t?"fixed":"absolute";b.o.style.bottom="auto";b.setVelocities();b.vCheck();b.meltFrame=0;b.melting=
!1;b.setOpacity(b.o,1);b.o.style.padding="0px";b.o.style.margin="0px";b.o.style.fontSize=b.fontSize+"px";b.o.style.lineHeight=a.flakeHeight+2+"px";b.o.style.textAlign="center";b.o.style.verticalAlign="baseline";b.x=parseInt(k(h-a.flakeWidth-20),10);b.y=parseInt(-1*k(l),10)-a.flakeHeight;b.refresh();b.o.style.display="block";b.active=1};this.recycle();this.refresh()};this.snow=function(){var c=0,d=null,e,d=0;for(e=a.flakes.length;d<e;d++)1===a.flakes[d].active&&(a.flakes[d].move(),c++),a.flakes[d].melting&&
a.flakes[d].melt();c<a.flakesMaxActive&&(d=a.flakes[parseInt(k(a.flakes.length),10)],0===d.active&&(d.melting=!0));a.timer&&q.getAnimationFrame(a.snow)};this.mouseMove=function(c){if(!a.followMouse)return!0;c=parseInt(c.clientX,10);c<n?v=-2+2*(c/n):(c-=n,v=2*(c/n))};this.createSnow=function(c,d){var e;for(e=0;e<c;e++)if(a.flakes[a.flakes.length]=new a.SnowFlake(parseInt(k(6),10)),d||e>a.flakesMaxActive)a.flakes[a.flakes.length-1].active=-1;a.targetElement.appendChild(C)};this.timerInit=function(){a.timer=
!0;a.snow()};this.init=function(){var c;for(c=0;c<a.meltFrameCount;c++)a.meltFrames.push(1-c/a.meltFrameCount);a.randomizeWind();a.createSnow(a.flakesMax);a.events.add(g,"resize",a.resizeHandler);a.events.add(g,"scroll",a.scrollHandler);a.freezeOnBlur&&(m?(a.events.add(f,"focusout",a.freeze),a.events.add(f,"focusin",a.resume)):(a.events.add(g,"blur",a.freeze),a.events.add(g,"focus",a.resume)));a.resizeHandler();a.scrollHandler();a.followMouse&&a.events.add(m?f:g,"mousemove",a.mouseMove);a.animationInterval=
Math.max(20,a.animationInterval);a.timerInit()};this.start=function(c){if(B){if(c)return!0}else B=!0;if("string"===typeof a.targetElement&&(c=a.targetElement,a.targetElement=f.getElementById(c),!a.targetElement))throw Error('Snowstorm: Unable to get targetElement "'+c+'"');a.targetElement||(a.targetElement=f.body||f.documentElement);a.targetElement!==f.documentElement&&a.targetElement!==f.body&&(a.resizeHandler=a.resizeHandlerAlt,a.usePixelPosition=!0);a.resizeHandler();a.usePositionFixed=a.usePositionFixed&&
!r&&!a.flakeBottom;if(g.getComputedStyle)try{w="relative"===g.getComputedStyle(a.targetElement,null).getPropertyValue("position")}catch(d){w=!1}t=a.usePositionFixed;h&&(l&&!a.disabled)&&(a.init(),a.active=!0)};a.autoStart&&a.events.add(g,"load",y,!1);return this}(window,document);

666
assets/js/snowstorm.js Executable file
View File

@ -0,0 +1,666 @@
/** @license
* DHTML Snowstorm! JavaScript-based snow for web pages
* Making it snow on the internets since 2003. You're welcome.
* -----------------------------------------------------------
* Version 1.44.20131208 (Previous rev: 1.44.20131125)
* Copyright (c) 2007, Scott Schiller. All rights reserved.
* Code provided under the BSD License
* http://schillmania.com/projects/snowstorm/license.txt
*/
/*jslint nomen: true, plusplus: true, sloppy: true, vars: true, white: true */
/*global window, document, navigator, clearInterval, setInterval */
var snowStorm = (function(window, document) {
// --- common properties ---
this.autoStart = true; // Whether the snow should start automatically or not.
this.excludeMobile = true; // Snow is likely to be bad news for mobile phones' CPUs (and batteries.) Enable at your own risk.
this.flakesMax = 128; // Limit total amount of snow made (falling + sticking)
this.flakesMaxActive = 64; // Limit amount of snow falling at once (less = lower CPU use)
this.animationInterval = 33; // Theoretical "miliseconds per frame" measurement. 20 = fast + smooth, but high CPU use. 50 = more conservative, but slower
this.useGPU = true; // Enable transform-based hardware acceleration, reduce CPU load.
this.className = null; // CSS class name for further customization on snow elements
this.excludeMobile = true; // Snow is likely to be bad news for mobile phones' CPUs (and batteries.) By default, be nice.
this.flakeBottom = null; // Integer for Y axis snow limit, 0 or null for "full-screen" snow effect
this.followMouse = true; // Snow movement can respond to the user's mouse
this.snowColor = '#fff'; // Don't eat (or use?) yellow snow.
this.snowCharacter = '&bull;'; // &bull; = bullet, &middot; is square on some systems etc.
this.snowStick = true; // Whether or not snow should "stick" at the bottom. When off, will never collect.
this.targetElement = null; // element which snow will be appended to (null = document.body) - can be an element ID eg. 'myDiv', or a DOM node reference
this.useMeltEffect = true; // When recycling fallen snow (or rarely, when falling), have it "melt" and fade out if browser supports it
this.useTwinkleEffect = false; // Allow snow to randomly "flicker" in and out of view while falling
this.usePositionFixed = false; // true = snow does not shift vertically when scrolling. May increase CPU load, disabled by default - if enabled, used only where supported
this.usePixelPosition = false; // Whether to use pixel values for snow top/left vs. percentages. Auto-enabled if body is position:relative or targetElement is specified.
// --- less-used bits ---
this.freezeOnBlur = true; // Only snow when the window is in focus (foreground.) Saves CPU.
this.flakeLeftOffset = 0; // Left margin/gutter space on edge of container (eg. browser window.) Bump up these values if seeing horizontal scrollbars.
this.flakeRightOffset = 0; // Right margin/gutter space on edge of container
this.flakeWidth = 8; // Max pixel width reserved for snow element
this.flakeHeight = 8; // Max pixel height reserved for snow element
this.vMaxX = 5; // Maximum X velocity range for snow
this.vMaxY = 4; // Maximum Y velocity range for snow
this.zIndex = 0; // CSS stacking order applied to each snowflake
// --- "No user-serviceable parts inside" past this point, yadda yadda ---
var storm = this,
features,
// UA sniffing and backCompat rendering mode checks for fixed position, etc.
isIE = navigator.userAgent.match(/msie/i),
isIE6 = navigator.userAgent.match(/msie 6/i),
isMobile = navigator.userAgent.match(/mobile|opera m(ob|in)/i),
isBackCompatIE = (isIE && document.compatMode === 'BackCompat'),
noFixed = (isBackCompatIE || isIE6),
screenX = null, screenX2 = null, screenY = null, scrollY = null, docHeight = null, vRndX = null, vRndY = null,
windOffset = 1,
windMultiplier = 2,
flakeTypes = 6,
fixedForEverything = false,
targetElementIsRelative = false,
opacitySupported = (function(){
try {
document.createElement('div').style.opacity = '0.5';
} catch(e) {
return false;
}
return true;
}()),
didInit = false,
docFrag = document.createDocumentFragment();
features = (function() {
var getAnimationFrame;
/**
* hat tip: paul irish
* http://paulirish.com/2011/requestanimationframe-for-smart-animating/
* https://gist.github.com/838785
*/
function timeoutShim(callback) {
window.setTimeout(callback, 1000/(storm.animationInterval || 20));
}
var _animationFrame = (window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
timeoutShim);
// apply to window, avoid "illegal invocation" errors in Chrome
getAnimationFrame = _animationFrame ? function() {
return _animationFrame.apply(window, arguments);
} : null;
var testDiv;
testDiv = document.createElement('div');
function has(prop) {
// test for feature support
var result = testDiv.style[prop];
return (result !== undefined ? prop : null);
}
// note local scope.
var localFeatures = {
transform: {
ie: has('-ms-transform'),
moz: has('MozTransform'),
opera: has('OTransform'),
webkit: has('webkitTransform'),
w3: has('transform'),
prop: null // the normalized property value
},
getAnimationFrame: getAnimationFrame
};
localFeatures.transform.prop = (
localFeatures.transform.w3 ||
localFeatures.transform.moz ||
localFeatures.transform.webkit ||
localFeatures.transform.ie ||
localFeatures.transform.opera
);
testDiv = null;
return localFeatures;
}());
this.timer = null;
this.flakes = [];
this.disabled = false;
this.active = false;
this.meltFrameCount = 20;
this.meltFrames = [];
this.setXY = function(o, x, y) {
if (!o) {
return false;
}
if (storm.usePixelPosition || targetElementIsRelative) {
o.style.left = (x - storm.flakeWidth) + 'px';
o.style.top = (y - storm.flakeHeight) + 'px';
} else if (noFixed) {
o.style.right = (100-(x/screenX*100)) + '%';
// avoid creating vertical scrollbars
o.style.top = (Math.min(y, docHeight-storm.flakeHeight)) + 'px';
} else {
if (!storm.flakeBottom) {
// if not using a fixed bottom coordinate...
o.style.right = (100-(x/screenX*100)) + '%';
o.style.bottom = (100-(y/screenY*100)) + '%';
} else {
// absolute top.
o.style.right = (100-(x/screenX*100)) + '%';
o.style.top = (Math.min(y, docHeight-storm.flakeHeight)) + 'px';
}
}
};
this.events = (function() {
var old = (!window.addEventListener && window.attachEvent), slice = Array.prototype.slice,
evt = {
add: (old?'attachEvent':'addEventListener'),
remove: (old?'detachEvent':'removeEventListener')
};
function getArgs(oArgs) {
var args = slice.call(oArgs), len = args.length;
if (old) {
args[1] = 'on' + args[1]; // prefix
if (len > 3) {
args.pop(); // no capture
}
} else if (len === 3) {
args.push(false);
}
return args;
}
function apply(args, sType) {
var element = args.shift(),
method = [evt[sType]];
if (old) {
element[method](args[0], args[1]);
} else {
element[method].apply(element, args);
}
}
function addEvent() {
apply(getArgs(arguments), 'add');
}
function removeEvent() {
apply(getArgs(arguments), 'remove');
}
return {
add: addEvent,
remove: removeEvent
};
}());
function rnd(n,min) {
if (isNaN(min)) {
min = 0;
}
return (Math.random()*n)+min;
}
function plusMinus(n) {
return (parseInt(rnd(2),10)===1?n*-1:n);
}
this.randomizeWind = function() {
var i;
vRndX = plusMinus(rnd(storm.vMaxX,0.2));
vRndY = rnd(storm.vMaxY,0.2);
if (this.flakes) {
for (i=0; i<this.flakes.length; i++) {
if (this.flakes[i].active) {
this.flakes[i].setVelocities();
}
}
}
};
this.scrollHandler = function() {
var i;
// "attach" snowflakes to bottom of window if no absolute bottom value was given
scrollY = (storm.flakeBottom ? 0 : parseInt(window.scrollY || document.documentElement.scrollTop || (noFixed ? document.body.scrollTop : 0), 10));
if (isNaN(scrollY)) {
scrollY = 0; // Netscape 6 scroll fix
}
if (!fixedForEverything && !storm.flakeBottom && storm.flakes) {
for (i=0; i<storm.flakes.length; i++) {
if (storm.flakes[i].active === 0) {
storm.flakes[i].stick();
}
}
}
};
this.resizeHandler = function() {
if (window.innerWidth || window.innerHeight) {
screenX = window.innerWidth - 16 - storm.flakeRightOffset;
screenY = (storm.flakeBottom || window.innerHeight);
} else {
screenX = (document.documentElement.clientWidth || document.body.clientWidth || document.body.scrollWidth) - (!isIE ? 8 : 0) - storm.flakeRightOffset;
screenY = storm.flakeBottom || document.documentElement.clientHeight || document.body.clientHeight || document.body.scrollHeight;
}
docHeight = document.body.offsetHeight;
screenX2 = parseInt(screenX/2,10);
};
this.resizeHandlerAlt = function() {
screenX = storm.targetElement.offsetWidth - storm.flakeRightOffset;
screenY = storm.flakeBottom || storm.targetElement.offsetHeight;
screenX2 = parseInt(screenX/2,10);
docHeight = document.body.offsetHeight;
};
this.freeze = function() {
// pause animation
if (!storm.disabled) {
storm.disabled = 1;
} else {
return false;
}
storm.timer = null;
};
this.resume = function() {
if (storm.disabled) {
storm.disabled = 0;
} else {
return false;
}
storm.timerInit();
};
this.toggleSnow = function() {
if (!storm.flakes.length) {
// first run
storm.start();
} else {
storm.active = !storm.active;
if (storm.active) {
storm.show();
storm.resume();
} else {
storm.stop();
storm.freeze();
}
}
};
this.stop = function() {
var i;
this.freeze();
for (i=0; i<this.flakes.length; i++) {
this.flakes[i].o.style.display = 'none';
}
storm.events.remove(window,'scroll',storm.scrollHandler);
storm.events.remove(window,'resize',storm.resizeHandler);
if (storm.freezeOnBlur) {
if (isIE) {
storm.events.remove(document,'focusout',storm.freeze);
storm.events.remove(document,'focusin',storm.resume);
} else {
storm.events.remove(window,'blur',storm.freeze);
storm.events.remove(window,'focus',storm.resume);
}
}
};
this.show = function() {
var i;
for (i=0; i<this.flakes.length; i++) {
this.flakes[i].o.style.display = 'block';
}
};
this.SnowFlake = function(type,x,y) {
var s = this;
this.type = type;
this.x = x||parseInt(rnd(screenX-20),10);
this.y = (!isNaN(y)?y:-rnd(screenY)-12);
this.vX = null;
this.vY = null;
this.vAmpTypes = [1,1.2,1.4,1.6,1.8]; // "amplification" for vX/vY (based on flake size/type)
this.vAmp = this.vAmpTypes[this.type] || 1;
this.melting = false;
this.meltFrameCount = storm.meltFrameCount;
this.meltFrames = storm.meltFrames;
this.meltFrame = 0;
this.twinkleFrame = 0;
this.active = 1;
this.fontSize = (10+(this.type/5)*10);
this.o = document.createElement('div');
this.o.innerHTML = storm.snowCharacter;
if (storm.className) {
this.o.setAttribute('class', storm.className);
}
this.o.style.color = storm.snowColor;
this.o.style.position = (fixedForEverything?'fixed':'absolute');
if (storm.useGPU && features.transform.prop) {
// GPU-accelerated snow.
this.o.style[features.transform.prop] = 'translate3d(0px, 0px, 0px)';
}
this.o.style.width = storm.flakeWidth+'px';
this.o.style.height = storm.flakeHeight+'px';
this.o.style.fontFamily = 'arial,verdana';
this.o.style.cursor = 'default';
this.o.style.overflow = 'hidden';
this.o.style.fontWeight = 'normal';
this.o.style.zIndex = storm.zIndex;
docFrag.appendChild(this.o);
this.refresh = function() {
if (isNaN(s.x) || isNaN(s.y)) {
// safety check
return false;
}
storm.setXY(s.o, s.x, s.y);
};
this.stick = function() {
if (noFixed || (storm.targetElement !== document.documentElement && storm.targetElement !== document.body)) {
s.o.style.top = (screenY+scrollY-storm.flakeHeight)+'px';
} else if (storm.flakeBottom) {
s.o.style.top = storm.flakeBottom+'px';
} else {
s.o.style.display = 'none';
s.o.style.bottom = '0%';
s.o.style.position = 'fixed';
s.o.style.display = 'block';
}
};
this.vCheck = function() {
if (s.vX>=0 && s.vX<0.2) {
s.vX = 0.2;
} else if (s.vX<0 && s.vX>-0.2) {
s.vX = -0.2;
}
if (s.vY>=0 && s.vY<0.2) {
s.vY = 0.2;
}
};
this.move = function() {
var vX = s.vX*windOffset, yDiff;
s.x += vX;
s.y += (s.vY*s.vAmp);
if (s.x >= screenX || screenX-s.x < storm.flakeWidth) { // X-axis scroll check
s.x = 0;
} else if (vX < 0 && s.x-storm.flakeLeftOffset < -storm.flakeWidth) {
s.x = screenX-storm.flakeWidth-1; // flakeWidth;
}
s.refresh();
yDiff = screenY+scrollY-s.y+storm.flakeHeight;
if (yDiff<storm.flakeHeight) {
s.active = 0;
if (storm.snowStick) {
s.stick();
} else {
s.recycle();
}
} else {
if (storm.useMeltEffect && s.active && s.type < 3 && !s.melting && Math.random()>0.998) {
// ~1/1000 chance of melting mid-air, with each frame
s.melting = true;
s.melt();
// only incrementally melt one frame
// s.melting = false;
}
if (storm.useTwinkleEffect) {
if (s.twinkleFrame < 0) {
if (Math.random() > 0.97) {
s.twinkleFrame = parseInt(Math.random() * 8, 10);
}
} else {
s.twinkleFrame--;
if (!opacitySupported) {
s.o.style.visibility = (s.twinkleFrame && s.twinkleFrame % 2 === 0 ? 'hidden' : 'visible');
} else {
s.o.style.opacity = (s.twinkleFrame && s.twinkleFrame % 2 === 0 ? 0 : 1);
}
}
}
}
};
this.animate = function() {
// main animation loop
// move, check status, die etc.
s.move();
};
this.setVelocities = function() {
s.vX = vRndX+rnd(storm.vMaxX*0.12,0.1);
s.vY = vRndY+rnd(storm.vMaxY*0.12,0.1);
};
this.setOpacity = function(o,opacity) {
if (!opacitySupported) {
return false;
}
o.style.opacity = opacity;
};
this.melt = function() {
if (!storm.useMeltEffect || !s.melting) {
s.recycle();
} else {
if (s.meltFrame < s.meltFrameCount) {
s.setOpacity(s.o,s.meltFrames[s.meltFrame]);
s.o.style.fontSize = s.fontSize-(s.fontSize*(s.meltFrame/s.meltFrameCount))+'px';
s.o.style.lineHeight = storm.flakeHeight+2+(storm.flakeHeight*0.75*(s.meltFrame/s.meltFrameCount))+'px';
s.meltFrame++;
} else {
s.recycle();
}
}
};
this.recycle = function() {
s.o.style.display = 'none';
s.o.style.position = (fixedForEverything?'fixed':'absolute');
s.o.style.bottom = 'auto';
s.setVelocities();
s.vCheck();
s.meltFrame = 0;
s.melting = false;
s.setOpacity(s.o,1);
s.o.style.padding = '0px';
s.o.style.margin = '0px';
s.o.style.fontSize = s.fontSize+'px';
s.o.style.lineHeight = (storm.flakeHeight+2)+'px';
s.o.style.textAlign = 'center';
s.o.style.verticalAlign = 'baseline';
s.x = parseInt(rnd(screenX-storm.flakeWidth-20),10);
s.y = parseInt(rnd(screenY)*-1,10)-storm.flakeHeight;
s.refresh();
s.o.style.display = 'block';
s.active = 1;
};
this.recycle(); // set up x/y coords etc.
this.refresh();
};
this.snow = function() {
var active = 0, flake = null, i, j;
for (i=0, j=storm.flakes.length; i<j; i++) {
if (storm.flakes[i].active === 1) {
storm.flakes[i].move();
active++;
}
if (storm.flakes[i].melting) {
storm.flakes[i].melt();
}
}
if (active<storm.flakesMaxActive) {
flake = storm.flakes[parseInt(rnd(storm.flakes.length),10)];
if (flake.active === 0) {
flake.melting = true;
}
}
if (storm.timer) {
features.getAnimationFrame(storm.snow);
}
};
this.mouseMove = function(e) {
if (!storm.followMouse) {
return true;
}
var x = parseInt(e.clientX,10);
if (x<screenX2) {
windOffset = -windMultiplier+(x/screenX2*windMultiplier);
} else {
x -= screenX2;
windOffset = (x/screenX2)*windMultiplier;
}
};
this.createSnow = function(limit,allowInactive) {
var i;
for (i=0; i<limit; i++) {
storm.flakes[storm.flakes.length] = new storm.SnowFlake(parseInt(rnd(flakeTypes),10));
if (allowInactive || i>storm.flakesMaxActive) {
storm.flakes[storm.flakes.length-1].active = -1;
}
}
storm.targetElement.appendChild(docFrag);
};
this.timerInit = function() {
storm.timer = true;
storm.snow();
};
this.init = function() {
var i;
for (i=0; i<storm.meltFrameCount; i++) {
storm.meltFrames.push(1-(i/storm.meltFrameCount));
}
storm.randomizeWind();
storm.createSnow(storm.flakesMax); // create initial batch
storm.events.add(window,'resize',storm.resizeHandler);
storm.events.add(window,'scroll',storm.scrollHandler);
if (storm.freezeOnBlur) {
if (isIE) {
storm.events.add(document,'focusout',storm.freeze);
storm.events.add(document,'focusin',storm.resume);
} else {
storm.events.add(window,'blur',storm.freeze);
storm.events.add(window,'focus',storm.resume);
}
}
storm.resizeHandler();
storm.scrollHandler();
if (storm.followMouse) {
storm.events.add(isIE?document:window,'mousemove',storm.mouseMove);
}
storm.animationInterval = Math.max(20,storm.animationInterval);
storm.timerInit();
};
this.start = function(bFromOnLoad) {
if (!didInit) {
didInit = true;
} else if (bFromOnLoad) {
// already loaded and running
return true;
}
if (typeof storm.targetElement === 'string') {
var targetID = storm.targetElement;
storm.targetElement = document.getElementById(targetID);
if (!storm.targetElement) {
throw new Error('Snowstorm: Unable to get targetElement "'+targetID+'"');
}
}
if (!storm.targetElement) {
storm.targetElement = (document.body || document.documentElement);
}
if (storm.targetElement !== document.documentElement && storm.targetElement !== document.body) {
// re-map handler to get element instead of screen dimensions
storm.resizeHandler = storm.resizeHandlerAlt;
//and force-enable pixel positioning
storm.usePixelPosition = true;
}
storm.resizeHandler(); // get bounding box elements
storm.usePositionFixed = (storm.usePositionFixed && !noFixed && !storm.flakeBottom); // whether or not position:fixed is to be used
if (window.getComputedStyle) {
// attempt to determine if body or user-specified snow parent element is relatlively-positioned.
try {
targetElementIsRelative = (window.getComputedStyle(storm.targetElement, null).getPropertyValue('position') === 'relative');
} catch(e) {
// oh well
targetElementIsRelative = false;
}
}
fixedForEverything = storm.usePositionFixed;
if (screenX && screenY && !storm.disabled) {
storm.init();
storm.active = true;
}
};
function doDelayedStart() {
window.setTimeout(function() {
storm.start(true);
}, 20);
// event cleanup
storm.events.remove(isIE?document:window,'mousemove',doDelayedStart);
}
function doStart() {
if (!storm.excludeMobile || !isMobile) {
doDelayedStart();
}
// event cleanup
storm.events.remove(window, 'load', doStart);
}
// hooks for starting the snow
if (storm.autoStart) {
storm.events.add(window, 'load', doStart, false);
}
return this;
}(window, document));

View File

@ -13,6 +13,18 @@
<link rel="stylesheet" href="../style.css" type="text/css">
<link rel="icon" type="image/x-icon" href="../favicon.ico">
<a rel="me" href="https://noc.social/@fijxu"></a>
<script src="../assets/js/snowstorm-min.js"></script>
<script>
snowStorm.snowColor = '#ffffff'; // blue-ish snow!?
snowStorm.flakesMaxActive = 96; // show more snow on screen at once
snowStorm.useTwinkleEffect = false;
snowStorm.animationInterval = 33;
snowStorm.freezeOnBlur = false;
snowStorm.followMouse = false;
snowStorm.usePositionFixed = false;
snowStorm.vMaxX = 3;
snowStorm.vMaxY = 3;
</script>
<style>
.lol {
width: 300vh;
@ -37,33 +49,28 @@
<a href="https://zzls.xyz/trafficstats">Internet Traffic Stats</a> |
<a href="https://blog.zzls.xyz/en">Blog</a>
</div>
s
<div class="content">
<h1 class="tilttext">>.></h1>
<p class="lastupdate">Last Updated: 2023-12-07</p>
<p class="lastupdate">12-07 Changelog: Now I offer more ways to contact me, not only matrix. Server specs was
updated and IDK what more. I am getting really tired of modifying 2 webpages at the same time (The Spanish and
English translation) so I guess I will port this site to Hugo some day... This is not very fun to do</p>
<p class="lastupdate">12.23 : Now there is a page with the status of all services at <a href="https://status.zzls.xyz/">https://status.zzls.xyz</a></p>
<p>
<p class="lastupdate">12-16 Changelog: Privacy Policy has been updated!!! And a <a class="rainbowtext">IRC Bouncer</a> service is now available</p>
<p>
Hiiiiiii, I am dedicated on
hosting privacy related services and other types of services mainly for South
America and the rest of the internet. Very few people in South
America care about
their privacy (for mere ignorance and convenience) so here I am,
making it easier for those people who want to
start taking care of their personal data. Obviously, if you are from another country, such as the United States or from another region, feel free to use them, as long as they work for you, it's all good :D.
Hiiiiiii, I am dedicated on
hosting privacy related services and other types of services mainly for South
America and the rest of the internet. Very few people in South
America care about
their privacy (for mere ignorance and convenience) so here I am,
making it easier for those people who want to
start taking care of their personal data. Obviously, if you are from another country, such as the United States or from another region, feel free to use them, as long as they work for you, it's all good :D.
</p>
<h2>Services list</h2>
<p style="font-size: small; color: burlywood;">⚠️ <i>Before you consider
using my services on a daily
basis, the ones marked with <a class="selfhosted">(Self-Hosted)</a>
may be
go down at any time because they are
they are hosted with my own home internet. I don't rent dedicated
servers for these services (because I am not
able to afford it xD).</i>
using my services on a daily
basis, the ones marked with <a class="selfhosted">(Self-Hosted)</a>
may be
go down at any time because they are
they are hosted with my own home internet. I don't rent dedicated
servers for these services (because I am not
able to afford it xD).</i>
</p>
<h4>Privacy Oriented Ones:</h4>
<ul>
@ -72,66 +79,66 @@ s
🇨🇱 (<a href="http://librex.zzlsghu6mvvwyy75mvga6gaf4znbp3erk5xwfzedb4gg6qqh2j6rlvid.onion/">Tor</a>)
<a class="selfhosted">(Self-Hosted)</a>
<p class="rainbowtext">
"A
metasearch engine that gets
results from other engines, and strips away all of the tracking parameters and Microsoft/globohomo bullshit
they add" <a href="https://git.lolcat.ca/lolcat/4get">Source Code</a> </p>
"A
metasearch engine that gets
results from other engines, and strips away all of the tracking parameters and Microsoft/globohomo bullshit
they add" <a href="https://git.lolcat.ca/lolcat/4get">Source Code</a> </p>
</li>
<li>
<a class="THEYGLOW" style="color: greenyellow;" href="https://4getus.zzls.xyz">4get</a> @
🇺🇸 (<a href="http://4getus.zzls2vhse6jeahgdz5snle37dnngmbeh4jgug5xvsdpmlchaw3ieonid.onion/">Tor</a>)
<p>
The same as above but in the united states. It could be more
stable because it is in a VPS, but it has more
probability of getting rate limited as well...
The same as above but in the united states. It could be more
stable because it is in a VPS, but it has more
probability of getting rate limited as well...
</p>
</li>
<li>
<a style="color: greenyellow;"></a><a href="https://matrix.zzls.xyz">Matrix
Homeserver</a> @ 🇨🇱 <a class="selfhosted">(Self-Hosted)</a>
<p>
Matrix server running <a href="https://github.com/matrix-org/synapse">Synapse</a>, using a
NVME,
PostgreSQL and a good CPU. It has support for Spaces, Threading and
other experimental features. <b>You can request an account contacting me <a href="../contact/">here</a></b>
Matrix server running <a href="https://github.com/matrix-org/synapse">Synapse</a>, using a
NVME,
PostgreSQL and a good CPU. It has support for Spaces, Threading and
other experimental features. <b>You can request an account contacting me <a href="../contact/">here</a></b>
<p>It also has mautrix-whatsapp integration, which is a bot for sending and receiving messages from Whatsapp in
Matrix.</p>
Matrix.</p>
</li>
<li>
<a href="https://search.zzls.xyz">SearxNG</a> @ 🇨🇱
<p>
A metasearch
engine which aggregates results from more than 70
search services.
A metasearch
engine which aggregates results from more than 70
search services.
</p>
</li>
<li>
<a href="https://inv.zzls.xyz">Invidious</a> @ 🇨🇱 (<a
href="http://inv.zzls.i2p/?i2paddresshelper=6s3qhqcyth644rlssv2sajluvrx632uaucsmnwaowglg6hocxjfa.b32.i2p">I2P</a>)
<a class="selfhosted">(Self-Hosted)</a>
<p>
An alternative
frontend for Youtube, feel free to register.
</p>
href="http://inv.zzls.i2p/?i2paddresshelper=6s3qhqcyth644rlssv2sajluvrx632uaucsmnwaowglg6hocxjfa.b32.i2p">I2P</a>)
<a class="selfhosted">(Self-Hosted)</a>
<p>
An alternative
frontend for Youtube, feel free to register.
</p>
</li>
<li>
<a href="https://ri.zzls.xyz">Rimgo</a>
@ 🇨🇱 (<a href="http://rimgo.zzlsghu6mvvwyy75mvga6gaf4znbp3erk5xwfzedb4gg6qqh2j6rlvid.onion/">Tor</a>)
(<a
href="http://rimgo.zzls.i2p/?i2paddresshelper=p57356k2xwhxrg2lxrjajcftkrptv4zejeeblzfgkcvpzuetkz2a.b32.i2p">I2P</a>)
<p>
A Imgur
proxy that load images faster than the original imgur webpage.
<a href="https://codeberg.org/video-prize-ranch/rimgo">Source Code</a>
</p>
href="http://rimgo.zzls.i2p/?i2paddresshelper=p57356k2xwhxrg2lxrjajcftkrptv4zejeeblzfgkcvpzuetkz2a.b32.i2p">I2P</a>)
<p>
A Imgur
proxy that load images faster than the original imgur webpage.
<a href="https://codeberg.org/video-prize-ranch/rimgo">Source Code</a>
</p>
</li>
<li>
<a href="https://pbin.zzls.xyz">Privatebin</a> @ 🇨🇱 <a class="selfhosted">(Self-Hosted)</a>
<p>
A
pastebin where the server has 0 knowledge about the pastes, all the
data is encrypted in the client side.
A
pastebin where the server has 0 knowledge about the pastes, all the
data is encrypted in the client side.
</p>
</li>
</ul>
@ -140,100 +147,100 @@ s
<li>
<a style="color: greenyellow;">IRC Bouncer</a> @ 🇺🇸
<p>
An IRC Bouncer that allows you to stay connected on IRC networks without losing messages. If you want an account and instructions on how to use it, talk to me <a href="../contact/index-en.html">here</a>
A IRC bouncer that works Un bouncer IRC que sirve para mantenerte conectado en redes IRC sin perder los mensajes.
Si quieres una cuenta e
instrucciones de uso, háblame por <a href="./contact/index.html">aquí</a>
An IRC Bouncer that allows you to stay connected on IRC networks without losing messages. If you want an account and instructions on how to use it, talk to me <a href="../contact/index-en.html">here</a>
A IRC bouncer that works Un bouncer IRC que sirve para mantenerte conectado en redes IRC sin perder los mensajes.
Si quieres una cuenta e
instrucciones de uso, háblame por <a href="./contact/index.html">aquí</a>
</p>
</li>
<li>
<a href="https://ayaya.beauty">ayaya.beauty</a> @ 🇨🇱 <a class="selfhosted">(Self-Hosted)</a>
<p>
A
temporal media uploader using <a href="https://github.com/nokonoko/uguu">Uguu</a>. It allows you to
upload files up to <b>512MiB</b> (yes, 512MiB) and they are deleted
automatically in 7 days.
A
temporal media uploader using <a href="https://github.com/nokonoko/uguu">Uguu</a>. It allows you to
upload files up to <b>512MiB</b> (yes, 512MiB) and they are deleted
automatically in 7 days.
</p>
</li>
<li>
<a style="color: greenyellow;"></a><a href="https://git.zzls.xyz">Forgejo</a>
@ 🇨🇱 <a class="selfhosted">(Self-Hosted)</a>
<p>
A git
server where you can host
your personal projects or make mirrors of other git repositories
with the intention of archiving them.
A git
server where you can host
your personal projects or make mirrors of other git repositories
with the intention of archiving them.
</p>
</li>
</li>
<li>
<a href="https://logs.zzls.xyz">Twitch Logs</a> @ 🇺🇸
<p>
A bunch of
logs
from twitch streams (mainly spanish ones), currently using about
~400GiB of storage
A bunch of
logs
from twitch streams (mainly spanish ones), currently using about
~400GiB of storage
</p>
</li>
<li>
<a href="https://count.ayaya.beauty">Moe Counter</a> @ 🇨🇱
<p>
A
Gelbooru
like counter that you can embed in your webpage to count the visitors
of the page
A
Gelbooru
like counter that you can embed in your webpage to count the visitors
of the page
</p>
</li>
</ul>
<h2>Servers specifications</h2>
<p>You can find more information about the servers/computers running this
kind of services here -> <a href="../srvspecs">yes, here</a></p>
kind of services here -> <a href="../srvspecs">yes, here</a></p>
<h2>Q&A</h2>
<h4>Your services are running behind <a style="color:coral">Cloudflare?</a></h4>
<p>No</p>
<p>And here is the reason why</p>
<p>People shouldn't use Cloudflare for privacy related services, it
defeats the whole concept of online
privacy and freedom since Cloudflare is a man in the middle and can
decrypt all the data between the user and the
server. And nobody wants a hundred of Cloudflare captchas shit just to
access a site, that is supposed to stop bad
bots, not humans.
defeats the whole concept of online
privacy and freedom since Cloudflare is a man in the middle and can
decrypt all the data between the user and the
server. And nobody wants a hundred of Cloudflare captchas shit just to
access a site, that is supposed to stop bad
bots, not humans.
<h4>How I can ensure you are not collecting any data?</h4>
<p>The NGINX configs and other configs are available
<a href="https://git.zzls.xyz/Fijxu/etc-configs">here</a>, they are on
different branches so explore whatever you want, if you find something
that is not very privacy respecting into the Privacy Oriented services
configs, contact me via matrix:
<a href="https://matrix.to/#/@fijxu:zzls.xyz">@fijxu:zzls.xyz</a>
(I'am always available there, it's not dead).
<a href="https://git.zzls.xyz/Fijxu/etc-configs">here</a>, they are on
different branches so explore whatever you want, if you find something
that is not very privacy respecting into the Privacy Oriented services
configs, contact me via matrix:
<a href="https://matrix.to/#/@fijxu:zzls.xyz">@fijxu:zzls.xyz</a>
(I'am always available there, it's not dead).
</p>
<h4>How I can TRUST YOU?</h4>
<!-- TOO EXTREMIST LMAO -->
<!-- <p>Do you trust <b style="color: #4285f4">G</b><b style="color: #ea4335">O</b><b style="color: #fbbc05">O</b><b
style="color: #4285f4">G</b><b style="color: #35ae56">L</b><b style="color: #ea4335">E</b> with your data right?
style="color: #4285f4">G</b><b style="color: #35ae56">L</b><b style="color: #ea4335">E</b> with your data right?
So there is not
problem in trusting a random person of internet that fights for online
privacy rather than a big corporation selling your personal data for
advertisement purposes right?
</p> -->
<p>
</p> -->
<p>
I am a single person on the internet that focus on online privacy. I don't own any business, company or anything like that and my objetive is not about making money.
</p>
<p>I mainly thought of hosting the services only for myself and not leaving them public, but doing that doesn't make any sense at all since all the traffic that comes in and out from X service (Like Invidious) will come from a single person, me. Doing this is like just using a VPN.</p>
<p>So I said to myself "I should make this services public for anyone interested on privacy like me" and so I did it.</p>
<blockquote cite="https://cock.li/" style="font-family: monospace; font-style: italic;">
Administering a mail host is sort of like being a nurse; there's a
brief
period at the start when the thought of seeing people's privates might
be vaguely titillating in a theoretical sense, but that sort of thing
doesn't last long when it's up against the daily reality of shit,
piss,
blood, and vomit. Now that I think about it, administering a mail host
is exactly like being a nurse, only people die slightly less often.
</blockquote>
<!-- BELLOW COMMENTED TEXT IS JUST BULLSHIT (but true) -->
<!-- <h4>Why are your privacy oriented services running on Chile and not US?</h4>
</p>
<p>I mainly thought of hosting the services only for myself and not leaving them public, but doing that doesn't make any sense at all since all the traffic that comes in and out from X service (Like Invidious) will come from a single person, me. Doing this is like just using a VPN.</p>
<p>So I said to myself "I should make this services public for anyone interested on privacy like me" and so I did it.</p>
<blockquote cite="https://cock.li/" style="font-family: monospace; font-style: italic;">
Administering a mail host is sort of like being a nurse; there's a
brief
period at the start when the thought of seeing people's privates might
be vaguely titillating in a theoretical sense, but that sort of thing
doesn't last long when it's up against the daily reality of shit,
piss,
blood, and vomit. Now that I think about it, administering a mail host
is exactly like being a nurse, only people die slightly less often.
</blockquote>
<!-- BELLOW COMMENTED TEXT IS JUST BULLSHIT (but true) -->
<!-- <h4>Why are your privacy oriented services running on Chile and not US?</h4>
<p>Because of the <span class="THEYGLOW">3 letter agencies</span> (yes,
they <span class="THEYGLOW">glow</span> a lot) that exists on the US,
also i don't want everything running on the same country where i host
@ -246,29 +253,29 @@ s
by a long time, that services will not be available, but that happens
rarely.
</p> -->
<h4>Do you have any donations link?</h4>
<p><a href="../donate">Yes</a>.</p>
<h2 style="text-align: center;">buh</h2>
<p style="text-align: center;">Suggestions and thank you messages go here.</p>
<iframe src="https://lol.zzls.xyz" title="xD" style="width: 100%; height: 1080px; border: none;"></iframe>
<h4>Do you have any donations link?</h4>
<p><a href="../donate">Yes</a>.</p>
<h2 style="text-align: center;">buh</h2>
<p style="text-align: center;">Suggestions and thank you messages go here.</p>
<iframe src="https://lol.zzls.xyz" title="xD" style="width: 100%; height: 1080px; border: none;"></iframe>
</div>
<footer>
<div class="banners">
<a href="https://spyware.neocities.org/articles/discord_es.html"><img src="../assets/discord.gif"
alt="Discord?, No Thanks"></a>
alt="Discord?, No Thanks"></a>
<a href="https://commonterms.org/"><img src="../assets/notread.gif" alt="Do you read TOS right?"></a>
<a href="https://absurdismworld.cc/0x40/"><img src="../assets/rave.gif" alt="RAVIN'"></a>
<img src="../assets/seedyourtorrents.gif" alt="Sharing is caring <3">
<img src="../assets/nftbutton.gif" alt="NFTs? wtf">
<a><img src="../assets/08831.gif" alt="OOOOO"></a>
<a href="https://inv.zzls.xyz/watch?v=1pMDdKV8wCw"><img src="../assets/right2repair.gif"
alt="I support Right To Repair (Not like Apple)"></a>
alt="I support Right To Repair (Not like Apple)"></a>
<!-- <p style="margin: auto;"> -->
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License"
style="border-width: 0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png"></a>
style="border-width: 0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png"></a>
<a href="https://jigsaw.w3.org/css-validator/check/referer">
<img style="border:0;width:88px;height:31px" src="https://jigsaw.w3.org/css-validator/images/vcss"
alt="Valid CSS!">
alt="Valid CSS!">
</a>
<!-- </p> -->
</div>

View File

@ -6,19 +6,32 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Wuuuuu~</title>
<meta name="description"
content="Alojando servicios de privacidad online para el internet, y mas mierdas que me interesan">
content="Alojando servicios de privacidad online para el internet, y mas mierdas que me interesan">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="keywords" content="Privacy Services, Invidious, 4get, Matrix Federation">
<link rel="stylesheet" href="/style.css" type="text/css">
<link rel="icon" type="image/x-icon" href="./favicon.ico">
<a rel="me" href="https://noc.social/@fijxu"></a>
<!-- https://www.schillmania.com/projects/snowstorm/ -->
<script src="./assets/js/snowstorm-min.js"></script>
<script>
snowStorm.snowColor = '#ffffff'; // blue-ish snow!?
snowStorm.flakesMaxActive = 96; // show more snow on screen at once
snowStorm.useTwinkleEffect = false;
snowStorm.animationInterval = 33;
snowStorm.freezeOnBlur = false;
snowStorm.followMouse = false;
snowStorm.usePositionFixed = false;
snowStorm.vMaxX = 3;
snowStorm.vMaxY = 3;
</script>
<style>
.lol {
width: 300vh;
height: auto;
max-height: 100%;
max-width: 100%;
}
.lol {
width: 300vh;
height: auto;
max-height: 100%;
max-width: 100%;
}
</style>
</head>
@ -38,36 +51,32 @@
</div>
<div class="content">
<h1 class="tilttext">>.></h1>
<p class="lastupdate">Ultima Actualización: 2023-12-16</p>
<p class="lastupdate">Registro de Cambios 12-07: Ahora ofrezco mas opciones para contactarme, no solo matrix. Las
especificaciones de los servidores han sido actualizadas y no se que otra cosa más. Ya me estoy cansando de tener
que modificar 2 paginas al mismo tiempo (La española y la traduccion en Ingles) asi que creo que portare este
sitio a Hugo algún día... Hacer esto ya no es divertido.</p>
<p class="lastupdate">12-16 Changelog: La Política de Privacidad fue actualizada!!! Y un <a class="rainbowtext">Bouncer IRC</a> ahora esta disponible</p>
<p class="lastupdate">Ultima Actualización: 2023-12-23</p>
<p class="lastupdate">12.23 : Ahora hay una pagina para ver el estado de todos los servicios aquí: <a href="https://status.zzls.xyz/">https://status.zzls.xyz</a></p>
<p>
Holaalalalalalal, me dedico a alojar servicios
enfocados a
la
privacidad y otros tipos de servicios varios principalmente para
Latinoamérica y el resto del internet. A muy poca gente de Latinoamérica
le importa su privacidad (por mera ignorancia y
conveniencia) asi que aquí estoy yo, haciéndolo todo más
fácil para esa gente que quiere empezar a cuidar de
sus datos personales ante las grandes empresas que se benefician de ellos. Obviamente, si eres de otro país, como
Estados Unidos u de alguna que otra región, siéntete libre
de utilizarlos, mientras funcionen para ti, todo bien :D.
Holaalalalalalal, me dedico a alojar servicios
enfocados a
la
privacidad y otros tipos de servicios varios principalmente para
Latinoamérica y el resto del internet. A muy poca gente de Latinoamérica
le importa su privacidad (por mera ignorancia y
conveniencia) asi que aquí estoy yo, haciéndolo todo más
fácil para esa gente que quiere empezar a cuidar de
sus datos personales ante las grandes empresas que se benefician de ellos. Obviamente, si eres de otro país, como
Estados Unidos u de alguna que otra región, siéntete libre
de utilizarlos, mientras funcionen para ti, todo bien :D.
</p>
<h2>Lista de servicios</h2>
<p style="font-size: small; color: burlywood;">⚠️ <i>Por favor,
antes de que pienses usar mis servicios de forma
diaria, toma en cuenta que los que están marcados con
<a class="selfhosted">(Self-Hosted)</a>
pueden
caerse en cualquier momento porque
están alojados con mi propio internet, no arriendo
servidores dedicados para estos servicios.
(Porque no soy capaz de pagarlo xD)</i>
antes de que pienses usar mis servicios de forma
diaria, toma en cuenta que los que están marcados con
<a class="selfhosted">(Self-Hosted)</a>
pueden
caerse en cualquier momento porque
están alojados con mi propio internet, no arriendo
servidores dedicados para estos servicios.
(Porque no soy capaz de pagarlo xD)</i>
</p>
<h4>Servicios enfocados a la Privacidad:</h4>
<ul>
@ -76,249 +85,249 @@
🇨🇱 (<a href="http://4get.zzlsghu6mvvwyy75mvga6gaf4znbp3erk5xwfzedb4gg6qqh2j6rlvid.onion/">Tor</a>)
<a class="selfhosted">(Self-Hosted)</a>
<p class="rainbowtext">"Un
metabuscador que
obtiene resultados de otros motores y elimina todo
el rastreo y la mierda de Microsoft/globohomo que
añaden." <a href="https://git.lolcat.ca/lolcat/4get">Codigo fuente</a>
metabuscador que
obtiene resultados de otros motores y elimina todo
el rastreo y la mierda de Microsoft/globohomo que
añaden." <a href="https://git.lolcat.ca/lolcat/4get">Codigo fuente</a>
</p>
</li>
<li>
<a class="THEYGLOW" style="color: greenyellow;" href="https://4getus.zzls.xyz">4get</a> @
🇺🇸 (<a href="http://4getus.zzls2vhse6jeahgdz5snle37dnngmbeh4jgug5xvsdpmlchaw3ieonid.onion/">Tor</a>)
<p>
Lo mismo que el anterior pero en estados unidos.
Podría ser más estable porque está en un VPS, pero
tiene más probabilidad de conseguir "rate limit"
también.
Lo mismo que el anterior pero en estados unidos.
Podría ser más estable porque está en un VPS, pero
tiene más probabilidad de conseguir "rate limit"
también.
</p>
</li>
<li>
<a style="color: greenyellow;"></a><a href="https://matrix.zzls.xyz">Matrix</a> @ 🇨🇱
<a class="selfhosted">(Self-Hosted)</a>
<p>Servidor
de Matrix que usa <a href="https://github.com/matrix-org/synapse">Synapse</a>,
con un NVME, PostgreSQL y un buen CPU. Es compatible con
Spaces, Threading y otras funciones
experimentales. <b>Si quieres una cuenta, háblame por <a href="./contact/">aquí</a></b>
de Matrix que usa <a href="https://github.com/matrix-org/synapse">Synapse</a>,
con un NVME, PostgreSQL y un buen CPU. Es compatible con
Spaces, Threading y otras funciones
experimentales. <b>Si quieres una cuenta, háblame por <a href="./contact/">aquí</a></b>
<p>Tambien integra mautrix-whatsapp, un bot con el cual puedes enviar y recibir mensajes de whatsapp en Matrix
</p>
</p>
</li>
<li>
<a href="https://search.zzls.xyz">SearxNG</a> @ 🇨🇱 (<a
href="http://searxdr3pqz4nydgnqocsia2xbywptxbkympa2emn7zlgggrir4bkfad.onion/">Tor</a>)
<p>
Un metabuscador
que agrega resultados de más de 70
servicios de búsqueda.
<a href="https://github.com/searxng/searxng">Código
Fuente</a>,
<a href="https://searx.space">Otras Instancias</a>
</p>
href="http://searxdr3pqz4nydgnqocsia2xbywptxbkympa2emn7zlgggrir4bkfad.onion/">Tor</a>)
<p>
Un metabuscador
que agrega resultados de más de 70
servicios de búsqueda.
<a href="https://github.com/searxng/searxng">Código
Fuente</a>,
<a href="https://searx.space">Otras Instancias</a>
</p>
</li>
<li>
<a href="https://inv.zzls.xyz">Invidious</a> @ 🇨🇱 (<a
href="http://inv.zzls.i2p/?i2paddresshelper=6s3qhqcyth644rlssv2sajluvrx632uaucsmnwaowglg6hocxjfa.b32.i2p">I2P</a>)
<a class="selfhosted">(Self-Hosted)</a>
<p>
Un
front-end alternativo a YouTube.
Siéntete libre de usar las descargas y registrarte.
</p>
href="http://inv.zzls.i2p/?i2paddresshelper=6s3qhqcyth644rlssv2sajluvrx632uaucsmnwaowglg6hocxjfa.b32.i2p">I2P</a>)
<a class="selfhosted">(Self-Hosted)</a>
<p>
Un
front-end alternativo a YouTube.
Siéntete libre de usar las descargas y registrarte.
</p>
</li>
<!-- <li><s>
<a href="https://librex.zzls.xyz">LibreX</a>
@ 🇨🇱 (<a href="http://librex.zzlsghu6mvvwyy75mvga6gaf4znbp3erk5xwfzedb4gg6qqh2j6rlvid.onion/">Tor</a>)
(<a
href="http://librex.zzls.i2p/?i2paddresshelper=huurwog32tny663wkglrhozfoyqyqmsuxjbd7dtudccx44awjda.b32.i2p/">I2P</a>)
<a class="selfhosted">(Self-Hosted)</a> ⎯ "Metabuscador
libre de frameworks y javascript que
respeta tu privacidad". Usa google y
otros motores de búsqueda
para obtener los resultados, asi que ninguna de tu
información es revelada a hacia los motores de
búsqueda, se podría decir que actúa como un proxy. <a href="https://github.com/hnhx/librex">Codigo
Fuente</a></s> INSTANCIA MUERTA, ME ABURRI DE ALOJAR LIBREY XD.
</li> -->
<li>
<a href="https://ri.zzls.xyz">Rimgo</a> @ 🇨🇱 (<a
href="http://rimgo.zzlsghu6mvvwyy75mvga6gaf4znbp3erk5xwfzedb4gg6qqh2j6rlvid.onion/">Tor</a>)
<a href="https://librex.zzls.xyz">LibreX</a>
@ 🇨🇱 (<a href="http://librex.zzlsghu6mvvwyy75mvga6gaf4znbp3erk5xwfzedb4gg6qqh2j6rlvid.onion/">Tor</a>)
(<a
href="http://rimgo.zzls.i2p/?i2paddresshelper=p57356k2xwhxrg2lxrjajcftkrptv4zejeeblzfgkcvpzuetkz2a.b32.i2p">I2P</a>)
<p>
Un proxy de Imgur que es capaz de cargar
las imágenes mucho mas rápido que la pagina de Imgur
ocultando tu IP.
<a href="https://codeberg.org/video-prize-ranch/rimgo">Código
Fuente</a>
</p>
</li>
<li>
<a href="https://pbin.zzls.xyz">Privatebin</a> @ 🇨🇱
<a class="selfhosted">(Self-Hosted)</a>
<p>
href="http://librex.zzls.i2p/?i2paddresshelper=huurwog32tny663wkglrhozfoyqyqmsuxjbd7dtudccx44awjda.b32.i2p/">I2P</a>)
<a class="selfhosted">(Self-Hosted)</a> ⎯ "Metabuscador
libre de frameworks y javascript que
respeta tu privacidad". Usa google y
otros motores de búsqueda
para obtener los resultados, asi que ninguna de tu
información es revelada a hacia los motores de
búsqueda, se podría decir que actúa como un proxy. <a href="https://github.com/hnhx/librex">Codigo
Fuente</a></s> INSTANCIA MUERTA, ME ABURRI DE ALOJAR LIBREY XD.
</li> -->
<li>
<a href="https://ri.zzls.xyz">Rimgo</a> @ 🇨🇱 (<a
href="http://rimgo.zzlsghu6mvvwyy75mvga6gaf4znbp3erk5xwfzedb4gg6qqh2j6rlvid.onion/">Tor</a>)
(<a
href="http://rimgo.zzls.i2p/?i2paddresshelper=p57356k2xwhxrg2lxrjajcftkrptv4zejeeblzfgkcvpzuetkz2a.b32.i2p">I2P</a>)
<p>
Un proxy de Imgur que es capaz de cargar
las imágenes mucho mas rápido que la pagina de Imgur
ocultando tu IP.
<a href="https://codeberg.org/video-prize-ranch/rimgo">Código
Fuente</a>
</p>
</li>
<li>
<a href="https://pbin.zzls.xyz">Privatebin</a> @ 🇨🇱
<a class="selfhosted">(Self-Hosted)</a>
<p>
Un
pastebin donde el servidor tiene 0 conocimiento sobre
los pastes, todos los
datos están encriptados en el lado del cliente usando
AES-256.
</p>
</li>
</p>
</li>
</ul>
<h4>Servicios Varios:</h4>
<ul>
<li>
<a style="color: greenyellow;">IRC Bouncer</a> @ 🇺🇸
<p>
Un bouncer IRC que sirve para mantenerte conectado en redes IRC sin perder los mensajes.
Si quieres una cuenta e
instrucciones de uso, háblame por <a href="./contact/index.html">aquí</a>
Un bouncer IRC que sirve para mantenerte conectado en redes IRC sin perder los mensajes.
Si quieres una cuenta e
instrucciones de uso, háblame por <a href="./contact/index.html">aquí</a>
</p>
</li>
<li>
<a href="https://ayaya.beauty">ayaya.beauty</a> @ 🇨🇱
<a class="selfhosted">(Self-Hosted)</a>
<p>
Un subidor multimedia temporal
que usa <a href="https://github.com/nokonoko/uguu">Uguu</a>,
permite
subir archivos de hasta 512MB como máximo con una
duración de 7 Dias.
Un subidor multimedia temporal
que usa <a href="https://github.com/nokonoko/uguu">Uguu</a>,
permite
subir archivos de hasta 512MB como máximo con una
duración de 7 Dias.
</p>
</li>
<li>
<a style="color: greenyellow;"></a><a href="https://git.zzls.xyz">Forgejo</a> @ 🇨🇱
<a class="selfhosted">(Self-Hosted)</a>
<p>
Un
servidor git donde puedes alojar
tus proyectos personales o hacer mirrors de otros
repositorios git con la intención de archivarlos.
<i>Ya era publico hace un tiempo, pero ahora decido
destacarlo en la pagina web</i>
Un
servidor git donde puedes alojar
tus proyectos personales o hacer mirrors de otros
repositorios git con la intención de archivarlos.
<i>Ya era publico hace un tiempo, pero ahora decido
destacarlo en la pagina web</i>
</p>
</li>
<li>
<a href="https://logs.zzls.xyz">Logs de Twitch</a> @ 🇺🇸
<p>
Un montón de logs de varios streamers de
habla hispana, + de 400GiB de logs (en conjunto de todos
los canales dentro del listado) existen
actualmente.
Un montón de logs de varios streamers de
habla hispana, + de 400GiB de logs (en conjunto de todos
los canales dentro del listado) existen
actualmente.
</p>
</li>
<li>
<a href="https://logs.spanix.team">Logs de Twitch
(Spanixbot)</a> @ 🇺🇸
<p>
Logs que son usados por el
bot
<a href="https://spanix.team">Spanixbot</a>, hecho por
<a href="https://twitch.tv/ZonianMidian">ZonianMidian</a>.
Logs que son usados por el
bot
<a href="https://spanix.team">Spanixbot</a>, hecho por
<a href="https://twitch.tv/ZonianMidian">ZonianMidian</a>.
</p>
</li>
<li>
<a href="https://count.ayaya.beauty">Moe counter</a> @ 🇨🇱
<p>
Un contador de visitas como "Gelbooru" que
puedes integrar a tu pagina web a archivos markdown para
hacer un recuento de la cantidad de visitas.
Un contador de visitas como "Gelbooru" que
puedes integrar a tu pagina web a archivos markdown para
hacer un recuento de la cantidad de visitas.
</p>
</li>
</ul>
<h2>Servers!!!</h2>
<p>Puedes encontrar información acerca de los servidores que se
usan para alojar los servicios que proveo aquí
-> <a href="../srvspecs">si, aquí</a> (SOLO EN INGLES)</p>
usan para alojar los servicios que proveo aquí
-> <a href="../srvspecs">si, aquí</a> (SOLO EN INGLES)</p>
<h2>Preguntas y Respuestas</h2>
<h4>Tus servicios están corriendo detrás de <a style="color:coral">Cloudflare?</a></h4>
<p><b>No</b></p>
<p>Aqui esta la razon:</p>
<p>No se debería usar Cloudflare para servicios
relacionados con la privacidad, ya que
invalida todo el concepto de privacidad y libertad en
online. Cloudflare puede des-encriptar todo el trafico
entre el usuario y el servidor y eso no es privado ni
seguro. Al alojar varios servicios enfocados en la privacidad hay gente que prefiere utilizar
navegadores
con JavaScript desactivado o extensiones para solo permitir JavaScript "libre" y Cloudflare siempre usa
e
injecta codigo JavaScript en las paginas para analíticas y otras mierdas . Ademas que nadie quiere los
captchas de mierda
y pantallas de carga de más de 5 segundos solo por
cloudflare.</p>
relacionados con la privacidad, ya que
invalida todo el concepto de privacidad y libertad en
online. Cloudflare puede des-encriptar todo el trafico
entre el usuario y el servidor y eso no es privado ni
seguro. Al alojar varios servicios enfocados en la privacidad hay gente que prefiere utilizar
navegadores
con JavaScript desactivado o extensiones para solo permitir JavaScript "libre" y Cloudflare siempre usa
e
injecta codigo JavaScript en las paginas para analíticas y otras mierdas . Ademas que nadie quiere los
captchas de mierda
y pantallas de carga de más de 5 segundos solo por
cloudflare.</p>
<p> Creo que en toda mi vida he gastado al rededor de unas 2
horas gracias a los captchas de cloudflare que a
veces son infinitos y demasiado molestos. Se supone que
tienen que filtrar bots, no personas.</p>
horas gracias a los captchas de cloudflare que a
veces son infinitos y demasiado molestos. Se supone que
tienen que filtrar bots, no personas.</p>
<h4>Como puedo asegurarme de que no estas guardando datos
personales?</h4>
<p>
La configuraciones de NGINX y otras configuraciones de
los servidores están
<a href="https://git.zzls.xyz/Fijxu/etc-configs">aca</a>,
están en diferentes "ramas" asi que explora lo que
quieras, si encuentras que algo no es de tu gusto dentro
de las configuraciones, háblame por <a href="./contact/">aquí</a>
La configuraciones de NGINX y otras configuraciones de
los servidores están
<a href="https://git.zzls.xyz/Fijxu/etc-configs">aca</a>,
están en diferentes "ramas" asi que explora lo que
quieras, si encuentras que algo no es de tu gusto dentro
de las configuraciones, háblame por <a href="./contact/">aquí</a>
</p>
<!-- <b> - Como puedo <span style="color: red">CONFIAR EN TI</span>?</b>
<p>
> Confías en <b style="color: #4285f4">G</b><b style="color: #ea4335">O</b><b style="color: #fbbc05">O</b><b
style="color: #4285f4">G</b><b style="color: #35ae56">L</b><b style="color: #ea4335">E</b>,
<b>INSTAGRAM</b> y otros servicios con tus datos personales, cierto? Asi que no debería haber problema en
confiar en una persona independiente que lucha por la privacidad online a preferir a una gran empresa que se
lucra de la venta de datos personales cierto?
</p>
<blockquote cite="https://cock.li/" style="margin-bottom: 1px;">
Administrar un host de correo es algo así como ser enfermera.
Hay un breve período al principio cuando la idea de ver las partes privadas de la gente podría
ser vagamente excitante en un sentido teórico, pero ese tipo de cosas
no dura mucho cuando se enfrenta a la realidad diaria de mierda, orina,
sangre y vómito. Ahora que lo pienso, administrar un host de correo
es exactamente como ser enfermera, sólo que la gente muere un poco menos a menudo.
</blockquote>
<p style="text-align: center;font-size:0.5em;">
Traducido del Ingles al Español
</p> -->
<!-- <b>
- Porque los servicios enfocados a la privacidad están en Chile y no Estados Unidos?</b>
<p>
> Confías en <b style="color: #4285f4">G</b><b style="color: #ea4335">O</b><b style="color: #fbbc05">O</b><b
style="color: #4285f4">G</b><b style="color: #35ae56">L</b><b style="color: #ea4335">E</b>,
<b>INSTAGRAM</b> y otros servicios con tus datos personales, cierto? Asi que no debería haber problema en
confiar en una persona independiente que lucha por la privacidad online a preferir a una gran empresa que se
lucra de la venta de datos personales cierto?
</p>
<blockquote cite="https://cock.li/" style="margin-bottom: 1px;">
Administrar un host de correo es algo así como ser enfermera.
Hay un breve período al principio cuando la idea de ver las partes privadas de la gente podría
ser vagamente excitante en un sentido teórico, pero ese tipo de cosas
no dura mucho cuando se enfrenta a la realidad diaria de mierda, orina,
sangre y vómito. Ahora que lo pienso, administrar un host de correo
es exactamente como ser enfermera, sólo que la gente muere un poco menos a menudo.
</blockquote>
<p style="text-align: center;font-size:0.5em;">
Traducido del Ingles al Español
</p> -->
> Debido a las "<span class="THEYGLOW">agencias de 3 letras</span>" (Sí,
ellos <span class="THEYGLOW">brillan</span> demasiado) que existen en estados unidos, ademas, tampoco quiero
alojar todo en el mismo país donde ya alojo otros servicios. Sobre los servicios auto alojados, estos son
mucho mas seguros y confiables ya que están en mi casa, asi que tengo control total sobre ellos, y si sale
algo mal, no necesito contactar a algún tipo de soporte. Lo único malo es que si se me corta el internet por
un largo periodo de tiempo, esos servicios no estarán disponibles hasta que vuelva el internet, pero eso
para muy pocas veces.
</p>
<!-- <b>
- Porque los servicios enfocados a la privacidad están en Chile y no Estados Unidos?</b>
<p>
> Debido a las "<span class="THEYGLOW">agencias de 3 letras</span>" (Sí,
ellos <span class="THEYGLOW">brillan</span> demasiado) que existen en estados unidos, ademas, tampoco quiero
alojar todo en el mismo país donde ya alojo otros servicios. Sobre los servicios auto alojados, estos son
mucho mas seguros y confiables ya que están en mi casa, asi que tengo control total sobre ellos, y si sale
algo mal, no necesito contactar a algún tipo de soporte. Lo único malo es que si se me corta el internet por
un largo periodo de tiempo, esos servicios no estarán disponibles hasta que vuelva el internet, pero eso
para muy pocas veces.
</p>
SI LEES ESTO, ESTO ESTA COMENTADO PORQUE SUENA MUY AUTISTA PARA LA GENTE DE LATINO AMERICA Y ESTA MAS ENFOCADO A LOS USUARIOS DE HABLA INGLESA XDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD-->
<h4>Tienes un link para poder donar?</h4>
<p><a href="./donate/">Si</a>.</p>
<h2 style="text-align: center;">buh</h2>
<p style="text-align: center;">Sugerencias y mensajes de agradecimiento van aca.</p>
<iframe src="https://lol.zzls.xyz" title="xD" style="width: 100%; height: 1080px; border: none;"></iframe>
SI LEES ESTO, ESTO ESTA COMENTADO PORQUE SUENA MUY AUTISTA PARA LA GENTE DE LATINO AMERICA Y ESTA MAS ENFOCADO A LOS USUARIOS DE HABLA INGLESA XDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD-->
<h4>Tienes un link para poder donar?</h4>
<p><a href="./donate/">Si</a>.</p>
<h2 style="text-align: center;">buh</h2>
<p style="text-align: center;">Sugerencias y mensajes de agradecimiento van aca.</p>
<iframe src="https://lol.zzls.xyz" title="xD" style="width: 100%; height: 1080px; border: none;"></iframe>
</div>
<footer>
<div class="banners">
<a href="https://spyware.neocities.org/articles/discord_es.html"><img src="./assets/discord.gif"
alt="Discord?, No Thanks"></a>
alt="Discord?, No Thanks"></a>
<a href="https://commonterms.org/"><img src="./assets/notread.gif" alt="Do you read TOS right?"></a>
<a href="https://absurdismworld.cc/0x40/"><img src="./assets/rave.gif" alt="RAVIN'"></a>
<img src="./assets/seedyourtorrents.gif" alt="Sharing is caring <3">
<img src="./assets/nftbutton.gif" alt="NFTs? wtf">
<a><img src="./assets/08831.gif" alt="OOOOO"></a>
<a href="https://inv.zzls.xyz/watch?v=1pMDdKV8wCw"><img src="./assets/right2repair.gif"
alt="I support Right To Repair (Not like Apple)"></a>
alt="I support Right To Repair (Not like Apple)"></a>
<!-- <p style="margin: auto;"> -->
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License"
style="border-width: 0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png"></a>
style="border-width: 0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png"></a>
<a href="https://jigsaw.w3.org/css-validator/check/referer">
<img style="border:0;width:88px;height:31px" src="https://jigsaw.w3.org/css-validator/images/vcss"
alt="Valid CSS!">
alt="Valid CSS!">
</a>
<!-- </p> -->
</div>
@ -339,4 +348,4 @@
</footer>
</body>
</html>
</html>