const HTMLLinkElement=function(tag){const proxy={},link=document.querySelector("link#"+tag+"[rel\x3dimport], link[href*\x3d"+tag+"][rel\x3dimport]"),register=(event,handler)=>HTMLImports&&!!!HTMLImports.useNative?HTMLImports.whenReady((_)=>handler({target:link})):link.addEventListener(event,handler);Object.defineProperties(proxy,{"addEventListener":{writable:false,value:function(event,handler){!!!link?handler({target:proxy}):register(event,handler)}}});return proxy};
class TokenList{constructor(node){const tokenize=(node)=>(node.text=node.textContent)&&node.textContent.match(/{(\w+|#)}/g).map((symbol)=>symbol.match(/(\w+|#)/g)[0]).map(insert(node)),insert=(token)=>(symbol)=>(this[symbol]=this[symbol]||[])&&this[symbol].push(token);this.sift(node).map(tokenize)}sift(node){const nodes=[],visit=(node)=>node.nodeType===Node.TEXT_NODE?TEXT_NODE(node)&&NodeFilter.FILTER_ACCEPT:ELEMENT_NODE(node.attributes)&&NodeFilter.FILTER_REJECT,TEXT_NODE=(node)=>/{(\w+|#)}/.test(node.textContent),
ELEMENT_NODE=(attributes)=>Array.from(attributes).filter((attr)=>/{(\w+|#)}/g.test(attr.value)).map((attribute)=>nodes.push(attribute)),walker=document.createNodeIterator(node,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,visit);while(node=walker.nextNode())nodes.push(node);return nodes}bind(context){const replace=(symbol)=>this[symbol].map((token)=>token.textContent=token.text)&&this[symbol].map(replacement(symbol)),replacement=(symbol)=>(item)=>item.textContent=item.textContent.replace("{"+symbol+
"}",context[symbol]);Object.keys(this).filter((key)=>context[key]!==undefined).map(replace)}}
const HTMLTemplateElement=Template=function(name){return Object.assign(document.querySelector("template[name\x3d"+name+"]"),{bind});function bind(context){contexts=[].concat(...[context]);let clone,template=this.cloneNode(false);void(this.dependents||[]).map((dependent)=>dependent.remove());template.innerHTML=contexts.map((context,index)=>{context=typeof context==="object"?context:{self:context};context["#"]=index;clone=this.cloneNode(true);void(new TokenList(clone.content)).bind(context);return clone.innerHTML}).join("");
this.dependents=Array.from(template.content.childNodes);this.after(template.content);return this}};const EventTarget=(Element)=>class extends Element{connectedCallback(){(new HTMLLinkElement(this.tagName.toLowerCase())).addEventListener("load",this.onimport.bind(this))}on(event,handler){this.addEventListener(event,handler)}};const ParentNode=(Element)=>class extends Element{selectAll(selector){return this.querySelectorAll(selector)}select(selector){return this.selectAll(selector)[0]}};
const GlobalEventHandlers=(Element)=>class extends Element{onimport(event,root=event.target.import){root&&this.clone(root.querySelector("template"));Element.onconnect&&Element.onconnect.call(this);this.render()}register(onevents=(attr)=>/^on/.test(attr.name||attr)){const mirror=(handler)=>this[handler]===null&&(this[handler]=Element[handler].bind(this)),nodes=":not(script):not(template):not(style):not(link)",children=Array.from(this.querySelectorAll(nodes)),registered=(node)=>Array.from(node.attributes).filter(onevents),
reflect=(node)=>Array.from(node.attributes).filter(onevents).map(reflection(node)),reflection=(node)=>(event)=>node[event]=handle(node[event]),handle=(handler,[_,event]=/{\s*(\w+)\s*}/.exec(handler)||[])=>event&&Element[event]&&Element[event].bind(this)||handler||null;Object.getOwnPropertyNames(Element).filter(onevents).map(mirror);void[this].concat(children).filter(registered).map(reflect)}};
const Component=(Element)=>class extends EventTarget(ParentNode(GlobalEventHandlers(Element))){constructor(){super();this.context={};this.initialize&&this.initialize();this.tokens=new TokenList(this)}render(){this.tokens.bind(this);this.register();Element.onidle}clone(template){const fragment=template.content.cloneNode(true),slots=Array.from(fragment.querySelectorAll("slot")),replace=(replacement)=>slots.filter(match(replacement)).map(exchange(replacement)),match=(replacement)=>(slot)=>replacement.getAttribute("slot")===
slot.getAttribute("name"),exchange=(replacement)=>(slot)=>slot.parentNode.replaceChild(replacement,slot);Array.from(template.attributes).map((attribute)=>this.setAttribute(attribute.name,attribute.value));Array.from(this.querySelectorAll("[slot]")).map(replace);this.innerHTML=template.innerHTML}};const ElementPrototype=window.Element.prototype;const Element=(tag,CustomElementRegistry=window.customElements)=>(Element)=>CustomElementRegistry.define(...tag,Component(Element));Element.prototype=ElementPrototype;

@@ -3757,24 +3757,167 @@
 .bind(this);
+Array.from(this.selectAll(%22template%5Bname%5D%22)).map((template)=%3Etemplate.getAttribute(%22name%22)).map((name)=%3E(new Template(name)).bind(this%5Bname%5D));
 this.registe
@@ -4051,16 +4051,17 @@
 slot%22)),
+%0A
 replace=
@@ -4199,17 +4199,16 @@
 lot%22)===
-%0A
 slot.get
@@ -4545,16 +4545,17 @@
 ototype;
+%0A
 const El

bump distribution for ./snuggsi.min.js