diff --git a/apps/assets/index.xml b/apps/assets/index.xml
new file mode 100644
index 0000000..53e4288
--- /dev/null
+++ b/apps/assets/index.xml
@@ -0,0 +1,294 @@
+
| \n | Name | \nDescription | \nSource | \n
|---|---|---|---|
| {{item.name}} | \n{{item.desc}} | \nSource | \n
>16&255,u[l++]=e>>8&255,u[l++]=255&e;return 2===a&&(e=o[t.charCodeAt(n)]<<2|o[t.charCodeAt(n+1)]>>4,u[l++]=255&e),1===a&&(e=o[t.charCodeAt(n)]<<10|o[t.charCodeAt(n+1)]<<4|o[t.charCodeAt(n+2)]>>2,u[l++]=e>>8&255,u[l++]=255&e),u}function h(t){return r[t>>18&63]+r[t>>12&63]+r[t>>6&63]+r[63&t]}function d(t,e,n){for(var r,o=[],i=e;i f?H(t,i,s,!0,!1,p):D(e,n,o,i,s,a,u,c,p)},V=(t,e,n,o,i,s,a,u,c)=>{let l=0;const f=e.length;let p=t.length-1,h=f-1;while(l<=p&&l<=h){const r=t[l],o=e[l]=c?Jn(e[l]):Kn(e[l]);if(!Un(r,o))break;g(r,o,n,null,i,s,a,u,c),l++}while(l<=p&&l<=h){const r=t[p],o=e[h]=c?Jn(e[h]):Kn(e[h]);if(!Un(r,o))break;g(r,o,n,null,i,s,a,u,c),p--,h--}if(l>p){if(l<=h){const t=h+1,r=t "+this.endline(t,n,o),n.state=r.InsideTag,v=t.children,f=0,h=v.length;fn)switch(o[i]){case"textNode":A(t);break;case"cdata":D(t,"oncdata",t.cdata),t.cdata="";break;case"script":D(t,"onscript",t.script),t.script="";break;default:N(t,"Max buffer length exceeded: "+o[i])}r=Math.max(r,a)}var u=e.MAX_BUFFER_LENGTH-r;t.bufferCheckPosition=u+t.position}function a(t){for(var e=0,n=o.length;e",void(t.state=j.TEXT);if(t.script){if("script"!==t.tagName)return t.script+=""+t.tagName+">",t.tagName="",void(t.state=j.SCRIPT);D(t,"onscript",t.script),t.script=""}var e=t.tags.length,n=t.tagName;t.strict||(n=n[t.looseCase]());var r=n;while(e--){var o=t.tags[e];if(o.name===r)break;R(t,"Unexpected close tag")}if(e<0)return R(t,"Unmatched closing tag: "+t.tagName),t.textNode+=""+t.tagName+">",void(t.state=j.TEXT);t.tagName=n;var i=t.tags.length;while(i-- >e){var s=t.tag=t.tags.pop();t.tagName=t.tag.name,D(t,"onclosetag",t.tagName);var a={};for(var u in s.ns)a[u]=s.ns[u];var c=t.tags[t.tags.length-1]||t;t.opt.xmlns&&s.ns!==c.ns&&Object.keys(s.ns).forEach((function(e){var n=s.ns[e];D(t,"onclosenamespace",{prefix:e,uri:n})}))}0===e&&(t.closedRoot=!0),t.tagName=t.attribValue=t.attribName="",t.attribList.length=0,t.state=j.TEXT}function U(t){var e,n=t.entity,r=n.toLowerCase(),o="";return t.ENTITIES[n]?t.ENTITIES[n]:t.ENTITIES[r]?t.ENTITIES[r]:(n=r,"#"===n.charAt(0)&&("x"===n.charAt(1)?(n=n.slice(2),e=parseInt(n,16),o=e.toString(16)):(n=n.slice(1),e=parseInt(n,10),o=e.toString(10))),n=n.replace(/^0+/,""),isNaN(e)||o.toLowerCase()!==n?(R(t,"Invalid character entity"),"&"+t.entity+";"):String.fromCodePoint(e))}function V(t,e){"<"===e?(t.state=j.OPEN_WAKA,t.startTagPosition=t.position):_(e)||(R(t,"Non-whitespace before first tag."),t.textNode=e,t.state=j.TEXT)}function q(t,e){var n="";return e",a+=this.endline(t,e,n),e.state=r.None,this.closeNode(t,e,n),a},t.prototype.element=function(t,n,o){var s,a,u,c,l,f,p,h,d,y,m,g,b,v;for(d in o||(o=0),y=!1,m="",this.openNode(t,n,o),n.state=r.OpenTag,m+=this.indent(t,n,o)+"<"+t.name,g=t.attribs,g)i.call(g,d)&&(s=g[d],m+=this.attribute(s,n,o));if(u=t.children.length,c=0===u?null:t.children[0],0===u||t.children.every((function(t){return(t.type===e.Text||t.type===e.Raw)&&""===t.value})))n.allowEmpty?(m+=">",n.state=r.CloseTag,m+=""+t.name+">"+this.endline(t,n,o)):(n.state=r.CloseTag,m+=n.spaceBeforeSlash+"/>"+this.endline(t,n,o));else if(!n.pretty||1!==u||c.type!==e.Text&&c.type!==e.Raw||null==c.value){if(n.dontPrettyTextNodes)for(b=t.children,l=0,p=b.length;l0){for(this.stream.write(" ["),this.stream.write(this.endline(t,e,n)),e.state=r.InsideTag,a=t.children,i=0,s=a.length;i"),this.stream.write(this.endline(t,e,n)),e.state=r.None,this.closeNode(t,e,n)},n.prototype.element=function(t,n,o){var i,a,u,c,l,f,p,h,d;for(p in o||(o=0),this.openNode(t,n,o),n.state=r.OpenTag,this.stream.write(this.indent(t,n,o)+"<"+t.name),h=t.attribs,h)s.call(h,p)&&(i=h[p],this.attribute(i,n,o));if(u=t.children.length,c=0===u?null:t.children[0],0===u||t.children.every((function(t){return(t.type===e.Text||t.type===e.Raw)&&""===t.value})))n.allowEmpty?(this.stream.write(">"),n.state=r.CloseTag,this.stream.write(""+t.name+">")):(n.state=r.CloseTag,this.stream.write(n.spaceBeforeSlash+"/>"));else if(!n.pretty||1!==u||c.type!==e.Text&&c.type!==e.Raw||null==c.value){for(this.stream.write(">"+this.endline(t,n,o)),n.state=r.InsideTag,d=t.children,l=0,f=d.length;l=1;--i)if(e=t.charCodeAt(i),47===e){if(!o){r=i;break}}else o=!1;return-1===r?n?"/":".":n&&1===r?"/":t.slice(0,r)},e.basename=function(t,e){var n=r(t);return e&&n.substr(-1*e.length)===e&&(n=n.substr(0,n.length-e.length)),n},e.extname=function(t){"string"!==typeof t&&(t+="");for(var e=-1,n=0,r=-1,o=!0,i=0,s=t.length-1;s>=0;--s){var a=t.charCodeAt(s);if(47!==a)-1===r&&(o=!1,r=s+1),46===a?-1===e?e=s:1!==i&&(i=1):-1!==e&&(i=-1);else if(!o){n=s+1;break}}return-1===e||-1===r||0===i||1===i&&e===r-1&&e===n+1?"":t.slice(e,r)};var i="b"==="ab".substr(-1)?function(t,e,n){return t.substr(e,n)}:function(t,e,n){return e<0&&(e=t.length+e),t.substr(e,n)}}).call(this,n("4362"))},e163:function(t,e,n){var r=n("da84"),o=n("1a2d"),i=n("1626"),s=n("7b0b"),a=n("f772"),u=n("e177"),c=a("IE_PROTO"),l=r.Object,f=l.prototype;t.exports=u?l.getPrototypeOf:function(t){var e=s(t);if(o(e,c))return e[c];var n=e.constructor;return i(n)&&e instanceof n?n.prototype:e instanceof l?f:null}},e177:function(t,e,n){var r=n("d039");t.exports=!r((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},e260:function(t,e,n){"use strict";var r=n("fc6a"),o=n("44d2"),i=n("3f8c"),s=n("69f3"),a=n("9bf2").f,u=n("7dd0"),c=n("c430"),l=n("83ab"),f="Array Iterator",p=s.set,h=s.getterFor(f);t.exports=u(Array,"Array",(function(t,e){p(this,{type:f,target:r(t),index:0,kind:e})}),(function(){var t=h(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values");var d=i.Arguments=i.Array;if(o("keys"),o("values"),o("entries"),!c&&l&&"values"!==d.name)try{a(d,"name",{value:"values"})}catch(y){}},e2cc:function(t,e,n){var r=n("6eeb");t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},e330:function(t,e){var n=Function.prototype,r=n.bind,o=n.call,i=r&&r.bind(o,o);t.exports=r?function(t){return t&&i(t)}:function(t){return t&&function(){return o.apply(t,arguments)}}},e372:function(t,e,n){e=t.exports=n("ad71"),e.Stream=e,e.Readable=e,e.Writable=n("dc14"),e.Duplex=n("b19a"),e.Transform=n("27bf"),e.PassThrough=n("780f")},e3db:function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},e667:function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},e683:function(t,e,n){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},e6cf:function(t,e,n){"use strict";var r,o,i,s,a=n("23e7"),u=n("c430"),c=n("da84"),l=n("d066"),f=n("c65b"),p=n("fea9"),h=n("6eeb"),d=n("e2cc"),y=n("d2bb"),m=n("d44e"),g=n("2626"),b=n("59ed"),v=n("1626"),w=n("861d"),_=n("19aa"),O=n("8925"),E=n("2266"),T=n("1c7e"),x=n("4840"),j=n("2cf4").set,S=n("b575"),C=n("cdf9"),D=n("44de"),A=n("f069"),I=n("e667"),N=n("01b4"),P=n("69f3"),R=n("94ca"),k=n("b622"),L=n("6069"),M=n("605d"),F=n("2d00"),B=k("species"),U="Promise",V=P.getterFor(U),q=P.set,Y=P.getterFor(U),W=p&&p.prototype,z=p,G=W,H=c.TypeError,X=c.document,$=c.process,K=A.f,J=K,Q=!!(X&&X.createEvent&&c.dispatchEvent),Z=v(c.PromiseRejectionEvent),tt="unhandledrejection",et="rejectionhandled",nt=0,rt=1,ot=2,it=1,st=2,at=!1,ut=R(U,(function(){var t=O(z),e=t!==String(z);if(!e&&66===F)return!0;if(u&&!G["finally"])return!0;if(F>=51&&/native code/.test(t))return!1;var n=new z((function(t){t(1)})),r=function(t){t((function(){}),(function(){}))},o=n.constructor={};return o[B]=r,at=n.then((function(){}))instanceof r,!at||!e&&L&&!Z})),ct=ut||!T((function(t){z.all(t)["catch"]((function(){}))})),lt=function(t){var e;return!(!w(t)||!v(e=t.then))&&e},ft=function(t,e){var n,r,o,i=e.value,s=e.state==rt,a=s?t.ok:t.fail,u=t.resolve,c=t.reject,l=t.domain;try{a?(s||(e.rejection===st&&mt(e),e.rejection=it),!0===a?n=i:(l&&l.enter(),n=a(i),l&&(l.exit(),o=!0)),n===t.promise?c(H("Promise-chain cycle")):(r=lt(n))?f(r,n,u,c):u(n)):c(i)}catch(p){l&&!o&&l.exit(),c(p)}},pt=function(t,e){t.notified||(t.notified=!0,S((function(){var n,r=t.reactions;while(n=r.get())ft(n,t);t.notified=!1,e&&!t.rejection&&dt(t)})))},ht=function(t,e,n){var r,o;Q?(r=X.createEvent("Event"),r.promise=e,r.reason=n,r.initEvent(t,!1,!0),c.dispatchEvent(r)):r={promise:e,reason:n},!Z&&(o=c["on"+t])?o(r):t===tt&&D("Unhandled promise rejection",n)},dt=function(t){f(j,c,(function(){var e,n=t.facade,r=t.value,o=yt(t);if(o&&(e=I((function(){M?$.emit("unhandledRejection",r,n):ht(tt,n,r)})),t.rejection=M||yt(t)?st:it,e.error))throw e.value}))},yt=function(t){return t.rejection!==it&&!t.parent},mt=function(t){f(j,c,(function(){var e=t.facade;M?$.emit("rejectionHandled",e):ht(et,e,t.value)}))},gt=function(t,e,n){return function(r){t(e,r,n)}},bt=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=ot,pt(t,!0))},vt=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw H("Promise can't be resolved itself");var r=lt(e);r?S((function(){var n={done:!1};try{f(r,e,gt(vt,n,t),gt(bt,n,t))}catch(o){bt(n,o,t)}})):(t.value=e,t.state=rt,pt(t,!1))}catch(o){bt({done:!1},o,t)}}};if(ut&&(z=function(t){_(this,G),b(t),f(r,this);var e=V(this);try{t(gt(vt,e),gt(bt,e))}catch(n){bt(e,n)}},G=z.prototype,r=function(t){q(this,{type:U,done:!1,notified:!1,parent:!1,reactions:new N,rejection:!1,state:nt,value:void 0})},r.prototype=d(G,{then:function(t,e){var n=Y(this),r=K(x(this,z));return n.parent=!0,r.ok=!v(t)||t,r.fail=v(e)&&e,r.domain=M?$.domain:void 0,n.state==nt?n.reactions.add(r):S((function(){ft(r,n)})),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r,e=V(t);this.promise=t,this.resolve=gt(vt,e),this.reject=gt(bt,e)},A.f=K=function(t){return t===z||t===i?new o(t):J(t)},!u&&v(p)&&W!==Object.prototype)){s=W.then,at||(h(W,"then",(function(t,e){var n=this;return new z((function(t,e){f(s,n,t,e)})).then(t,e)}),{unsafe:!0}),h(W,"catch",G["catch"],{unsafe:!0}));try{delete W.constructor}catch(wt){}y&&y(W,G)}a({global:!0,wrap:!0,forced:ut},{Promise:z}),m(z,U,!1,!0),g(U),i=l(U),a({target:U,stat:!0,forced:ut},{reject:function(t){var e=K(this);return f(e.reject,void 0,t),e.promise}}),a({target:U,stat:!0,forced:u||ut},{resolve:function(t){return C(u&&this===i?z:this,t)}}),a({target:U,stat:!0,forced:ct},{all:function(t){var e=this,n=K(e),r=n.resolve,o=n.reject,i=I((function(){var n=b(e.resolve),i=[],s=0,a=1;E(t,(function(t){var u=s++,c=!1;a++,f(n,e,t).then((function(t){c||(c=!0,i[u]=t,--a||r(i))}),o)})),--a||r(i)}));return i.error&&o(i.value),n.promise},race:function(t){var e=this,n=K(e),r=n.reject,o=I((function(){var o=b(e.resolve);E(t,(function(t){f(o,e,t).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},e893:function(t,e,n){var r=n("1a2d"),o=n("56ef"),i=n("06cf"),s=n("9bf2");t.exports=function(t,e,n){for(var a=o(e),u=s.f,c=i.f,l=0;l