=0;--i)o.insertBefore(Q(a[i],!0),ee(e))}return ht(e),!0}return e instanceof s&&!dt(e)?(ht(e),!0):"noscript"!==n&&"noembed"!==n||!S(/<\/no(script|embed)/i,e.innerHTML)?(Ce&&3===e.nodeType&&(t=e.textContent,t=E(t,ge," "),t=E(t,ye," "),e.textContent!==t&&(T(r.removed,{element:e.cloneNode()}),e.textContent=t)),Nt("afterSanitizeElements",e,null),!1):(ht(e),!0)},Et=function(e,t,n){if(je&&("id"===t||"name"===t)&&(n in i||n in it))return!1;if(Re&&!Oe[t]&&S(be,t));else if(De&&S(ve,t));else if(!xe[t]||Oe[t]){if(!(wt(e)&&(ke.tagNameCheck instanceof RegExp&&S(ke.tagNameCheck,e)||ke.tagNameCheck instanceof Function&&ke.tagNameCheck(e))&&(ke.attributeNameCheck instanceof RegExp&&S(ke.attributeNameCheck,t)||ke.attributeNameCheck instanceof Function&&ke.attributeNameCheck(t))||"is"===t&&ke.allowCustomizedBuiltInElements&&(ke.tagNameCheck instanceof RegExp&&S(ke.tagNameCheck,n)||ke.tagNameCheck instanceof Function&&ke.tagNameCheck(n))))return!1}else if(Xe[t]);else if(S(Ae,E(n,Ne,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==w(n,"data:")||!Ve[e]){if(Me&&!S(Te,E(n,Ne,"")));else if(n)return!1}else;return!0},wt=function(e){return e.indexOf("-")>0},xt=function(t){var n,o,a,i;Nt("beforeSanitizeAttributes",t,null);var l=t.attributes;if(l){var c={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:xe};for(i=l.length;i--;){var u=n=l[i],s=u.name,m=u.namespaceURI;if(o="value"===s?n.value:x(n.value),a=he(s),c.attrName=a,c.attrValue=o,c.keepAttr=!0,c.forceKeepAttr=void 0,Nt("uponSanitizeAttribute",t,c),o=c.attrValue,!c.forceKeepAttr&&(gt(s,t),c.keepAttr))if(S(/\/>/i,o))gt(s,t);else{Ce&&(o=E(o,ge," "),o=E(o,ye," "));var f=he(t.nodeName);if(Et(f,a,o)){if(!Be||"id"!==a&&"name"!==a||(gt(s,t),o=Pe+o),oe&&"object"===e(y)&&"function"==typeof y.getAttributeType)if(m);else switch(y.getAttributeType(f,a)){case"TrustedHTML":o=oe.createHTML(o);break;case"TrustedScriptURL":o=oe.createScriptURL(o)}try{m?t.setAttributeNS(m,s,o):t.setAttribute(s,o),v(r.removed)}catch(e){}}}}Nt("afterSanitizeAttributes",t,null)}},St=function e(t){var n,r=bt(t);for(Nt("beforeSanitizeShadowDOM",t,null);n=r.nextNode();)Nt("uponSanitizeShadowNode",n,null),At(n)||(n.content instanceof l&&e(n.content),xt(n));Nt("afterSanitizeShadowDOM",t,null)};return r.sanitize=function(t){var o,i,c,s,m,f=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if((nt=!t)&&(t="\x3c!--\x3e"),"string"!=typeof t&&!Tt(t)){if("function"!=typeof t.toString)throw k("toString is not a function");if("string"!=typeof(t=t.toString()))throw k("dirty is not a string, aborting")}if(!r.isSupported){if("object"===e(n.toStaticHTML)||"function"==typeof n.toStaticHTML){if("string"==typeof t)return n.toStaticHTML(t);if(Tt(t))return n.toStaticHTML(t.outerHTML)}return t}if(Ie||ct(f),r.removed=[],"string"==typeof t&&(We=!1),We){if(t.nodeName){var p=he(t.nodeName);if(!Ee[p]||_e[p])throw k("root node is forbidden and cannot be sanitized in-place")}}else if(t instanceof u)1===(i=(o=yt("\x3c!----\x3e")).ownerDocument.importNode(t,!0)).nodeType&&"BODY"===i.nodeName||"HTML"===i.nodeName?o=i:o.appendChild(i);else{if(!He&&!Ce&&!Le&&-1===t.indexOf("<"))return oe&&ze?oe.createHTML(t):t;if(!(o=yt(t)))return He?null:ze?ae:""}o&&Fe&&ht(o.firstChild);for(var d=bt(We?t:o);c=d.nextNode();)3===c.nodeType&&c===s||At(c)||(c.content instanceof l&&St(c.content),xt(c),s=c);if(s=null,We)return t;if(He){if(Ue)for(m=ue.call(o.ownerDocument);o.firstChild;)m.appendChild(o.firstChild);else m=o;return xe.shadowroot&&(m=me.call(a,m,!0)),m}var h=Le?o.outerHTML:o.innerHTML;return Le&&Ee["!doctype"]&&o.ownerDocument&&o.ownerDocument.doctype&&o.ownerDocument.doctype.name&&S(X,o.ownerDocument.doctype.name)&&(h="\n"+h),Ce&&(h=E(h,ge," "),h=E(h,ye," ")),oe&&ze?oe.createHTML(h):h},r.setConfig=function(e){ct(e),Ie=!0},r.clearConfig=function(){at=null,Ie=!1},r.isValidAttribute=function(e,t,n){at||ct({});var r=he(e),o=he(t);return Et(r,o,n)},r.addHook=function(e,t){"function"==typeof t&&(pe[e]=pe[e]||[],T(pe[e],t))},r.removeHook=function(e){if(pe[e])return v(pe[e])},r.removeHooks=function(e){pe[e]&&(pe[e]=[])},r.removeAllHooks=function(){pe={}},r}();return Q}));
+//# sourceMappingURL=purify.min.js.map
diff --git a/themes/red/layouts/_default/_markup/render-link.html b/themes/red/layouts/_default/_markup/render-link.html
new file mode 100644
index 0000000..6b8bab3
--- /dev/null
+++ b/themes/red/layouts/_default/_markup/render-link.html
@@ -0,0 +1,6 @@
+{{ $icon := resources.Get "external-link.svg" }}
+
+{{ .PlainText }}
+{{ if strings.HasPrefix .Destination "http" }}
+{{ end -}}
diff --git a/themes/red/layouts/_default/single.html b/themes/red/layouts/_default/single.html
index 104e779..24db6b0 100644
--- a/themes/red/layouts/_default/single.html
+++ b/themes/red/layouts/_default/single.html
@@ -12,4 +12,70 @@
{{ end }}
{{ end }}
+
+ Contact Me
+
+ You can send me an e-mail.
+
+ {{ with .Params.comments }}
+ Comments
+ I posted this to my Mastodon! You can use any Fediverse account (Mastodon, Pleroma, etc) to reply.
+
+
+ {{ $domscript := resources.Get "js/purify.min.js" }}
+
+
+ {{ end }}
{{ end }}