diff --git a/files/__main__.py b/files/__main__.py
index 2b251b290..c1121e5b5 100644
--- a/files/__main__.py
+++ b/files/__main__.py
@@ -134,6 +134,7 @@ def teardown_request(error):
@app.after_request
def after_request(response):
+ if session.get("favorite_emojis"): del session["favorite_emojis"]
response.headers.add("Strict-Transport-Security", "max-age=31536000")
response.headers.add("X-Frame-Options", "deny")
diff --git a/files/assets/js/ban_modal.js b/files/assets/js/ban_modal.js
index 2880d1cd7..c5d22f901 100644
--- a/files/assets/js/ban_modal.js
+++ b/files/assets/js/ban_modal.js
@@ -1,4 +1,4 @@
-const banModal = function(link, id, name) {
+function banModal(link, id, name) {
document.getElementById("banModalTitle").innerHTML = `Ban @${name}`;
document.getElementById("ban-modal-link").value = link;
document.getElementById("banUserButton").innerHTML = `Ban @${name}`;
diff --git a/files/assets/js/bugs.js b/files/assets/js/bugs.js
index 7ac88b10f..5ec7dae7b 100644
--- a/files/assets/js/bugs.js
+++ b/files/assets/js/bugs.js
@@ -1,37 +1,3 @@
-var BugDispatch={options:{minDelay:500,maxDelay:1E4,minBugs:2,maxBugs:20,minSpeed:5,maxSpeed:10,maxLargeTurnDeg:150,maxSmallTurnDeg:10,maxWiggleDeg:5,imageSprite:"fly-sprite.webp",bugWidth:13,bugHeight:14,num_frames:5,zoom:10,canFly:!0,canDie:!0,numDeathTypes:3,monitorMouseMovement:!1,eventDistanceToBug:40,minTimeBetweenMultipy:1E3,mouseOver:"random"},initialize:function(a){this.options=mergeOptions(this.options,a);this.options.minBugs>this.options.maxBugs&&(this.options.minBugs=this.options.maxBugs);
-this.modes=["multiply","nothing"];this.options.canFly&&this.modes.push("fly","flyoff");this.options.canDie&&this.modes.push("die");-1==this.modes.indexOf(this.options.mouseOver)&&(this.options.mouseOver="random");this.transform=null;this.transforms={Moz:function(a){this.bug.style.MozTransform=a},webkit:function(a){this.bug.style.webkitTransform=a},O:function(a){this.bug.style.OTransform=a},ms:function(a){this.bug.style.msTransform=a},Khtml:function(a){this.bug.style.KhtmlTransform=a},w3c:function(a){this.bug.style.transform=
-a}};if("transform"in document.documentElement.style)this.transform=this.transforms.w3c;else{var b=["Moz","webkit","O","ms","Khtml"],c=0;for(c=0;c "+e+"")
- } else if (remoji.startsWith("#"))
- {
- input = input.replace(emoji, "
")
- } else if (remoji.startsWith("!"))
- {
- input = input.replace(emoji, "
")
- } else {
- input = input.replace(emoji, "
")
- }
- }
- }
-
- if (!first.includes('edit'))
- {
- var options = Array.from(input.matchAll(/\s*\$\$([^\$\n]+)\$\$\s*/gi))
- if(options != null){
- for(i = 0; i < options.length; i++){
- var option = options[i][0];
- var option2 = option.replace(/\$\$/g, '').replace(/\n/g, '')
- input = input.replace(option, '');
- input += '';
- }
- }
- }
-
- document.getElementById(second).innerHTML = marked(input)
-}
-
-function charLimit(form, text) {
-
- var input = document.getElementById(form);
-
- var text = document.getElementById(text);
-
- var length = input.value.length;
-
- var maxLength = input.getAttribute("maxlength");
-
- if (length >= maxLength) {
- text.style.color = "#E53E3E";
- }
- else if (length >= maxLength * .72){
- text.style.color = "#FFC107";
- }
- else {
- text.style.color = "#A0AEC0";
- }
-
- text.innerText = length + ' / ' + maxLength;
-
-}
-
function poll_vote(cid, parentid) {
for(let el of document.getElementsByClassName('presult-'+parentid)) {
el.classList.remove('d-none');
diff --git a/files/assets/js/critters.js b/files/assets/js/critters.js
new file mode 100644
index 000000000..6a773f778
--- /dev/null
+++ b/files/assets/js/critters.js
@@ -0,0 +1,33 @@
+var BugDispatch={options:{minDelay:500,maxDelay:1E4,minBugs:2,maxBugs:20,minSpeed:5,maxSpeed:10,maxLargeTurnDeg:150,maxSmallTurnDeg:10,maxWiggleDeg:5,imageSprite:"fireflies.webp",bugWidth:13,bugHeight:14,num_frames:5,zoom:10,canFly:!0,canDie:!0,numDeathTypes:3,monitorMouseMovement:!1,eventDistanceToBug:40,minTimeBetweenMultipy:1E3,mouseOver:"random"},initialize:function(a){this.options=mergeOptions(this.options,a);this.options.minBugs>this.options.maxBugs&&(this.options.minBugs=this.options.maxBugs);
+this.modes=["multiply","nothing"];this.options.canFly&&this.modes.push("fly","flyoff");this.options.canDie&&this.modes.push("die");-1==this.modes.indexOf(this.options.mouseOver)&&(this.options.mouseOver="random");this.transform=null;this.transforms={Moz:function(a){this.bug.style.MozTransform=a},webkit:function(a){this.bug.style.webkitTransform=a},O:function(a){this.bug.style.OTransform=a},ms:function(a){this.bug.style.msTransform=a},Khtml:function(a){this.bug.style.KhtmlTransform=a},w3c:function(a){this.bug.style.transform=
+a}};if("transform"in document.documentElement.style)this.transform=this.transforms.w3c;else{var b=["Moz","webkit","O","ms","Khtml"],c=0;for(c=0;c
\n":"'+(u?e:ue(e,!0))+"
\n"},t.blockquote=function(e){return""+(u?e:ue(e,!0))+"
\n"+e+"
\n"},t.html=function(e){return e},t.heading=function(e,t,u,n){return this.options.headerIds?"
\n":"
\n"},t.list=function(e,t,u){var n=t?"ol":"ul";return"<"+n+(t&&1!==u?' start="'+u+'"':"")+">\n"+e+""+n+">\n"},t.listitem=function(e){return"\n\n"+e+"\n"+t+"
\n"},t.tablerow=function(e){return"\n"+e+" \n"},t.tablecell=function(e,t){var u=t.header?"th":"td";return(t.align?"<"+u+' align="'+t.align+'">':"<"+u+">")+e+""+u+">\n"},t.strong=function(e){return""+e+""},t.em=function(e){return""+e+""},t.codespan=function(e){return""+e+"
"},t.br=function(){return this.options.xhtml?"
":"
"},t.del=function(e){return""+e+""},t.link=function(e,t,u){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return u;var n='"+u+""},t.image=function(e,t,u){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return u;var n='":">"},t.text=function(e){return e},e}(),re=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,u){return""+u},t.image=function(e,t,u){return""+u},t.br=function(){return""},e}(),ie=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var u=e,n=0;if(this.seen.hasOwnProperty(u)){n=this.seen[e];do{u=e+"-"+ ++n}while(this.seen.hasOwnProperty(u))}return t||(this.seen[e]=n,this.seen[u]=0),u},t.slug=function(e,t){void 0===t&&(t={});var u=this.serialize(e);return this.getNextSafeSlug(u,t.dryrun)},e}(),se=ne,le=re,ae=ie,oe=n.exports.defaults,De=m,ce=Y,he=function(){function e(e){this.options=e||oe,this.options.renderer=this.options.renderer||new se,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new le,this.slugger=new ae}e.parse=function(t,u){return new e(u).parse(t)},e.parseInline=function(t,u){return new e(u).parseInline(t)};var t=e.prototype;return t.parse=function(e,t){void 0===t&&(t=!0);var u,n,r,i,s,l,a,o,D,c,h,p,f,g,F,A,d,C,k,E="",x=e.length;for(u=0;u
"+Ce(e.message+"",!0)+"";throw e}}return me.options=me.setOptions=function(e){return Ae(me.defaults,e),Ee(me.defaults),me},me.getDefaults=ke,me.defaults=xe,me.use=function(){for(var e=arguments.length,t=new Array(e),u=0;u
"+Ce(e.message+"",!0)+"";throw e}},me.Parser=he,me.parser=he.parse,me.Renderer=fe,me.TextRenderer=ge,me.Lexer=ce,me.lexer=ce.lex,me.Tokenizer=pe,me.Slugger=Fe,me.parse=me,me})); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).marked=t()}(this,(function(){"use strict";function e(e,t){for(var u=0;u
'+(u?e:ue(e,!0))+"
\n":""+(u?e:ue(e,!0))+"
\n"},t.blockquote=function(e){return"\n"+e+"\n"},t.html=function(e){return e},t.heading=function(e,t,u,n){return this.options.headerIds?"
"+e+"
\n"},t.table=function(e,t){return t&&(t=""+t+""),""+e+"
"},t.br=function(){return this.options.xhtml?""+Ce(e.message+"",!0)+"";throw e}}return me.options=me.setOptions=function(e){return Ae(me.defaults,e),Ee(me.defaults),me},me.getDefaults=ke,me.defaults=xe,me.use=function(){for(var e=arguments.length,t=new Array(e),u=0;u
"+Ce(e.message+"",!0)+"";throw e}},me.Parser=he,me.parser=he.parse,me.Renderer=fe,me.TextRenderer=ge,me.Lexer=ce,me.lexer=ce.lex,me.Tokenizer=pe,me.Slugger=Fe,me.parse=me,me})); + +function markdown(first, second) { + var input = document.getElementById(first).value; + input = input.replace(/\|\|(.*?)\|\|/g, '$1') + + var emojis = Array.from(input.matchAll(/:(.{1,30}?):/gi)) + if(emojis != null){ + for(i = 0; i < emojis.length; i++){ + var emoji = emojis[i][0] + var remoji = emoji.replace(/:/g,''); + if (remoji.startsWith("!#") || remoji.startsWith("#!")) + { + input = input.replace(emoji, "