>>6},
+dq(a){a=a+((a&67108863)<<3)&536870911
+a^=a>>>11
+return a+((a&16383)<<15)&536870911},
+eW(a,b,c){return a},
+f5(a){var s,r
+for(s=$.au.length,r=0;r").A(d).h("aZ<1,2>"))
+return new A.aj(a,b,c.h("@<0>").A(d).h("aj<1,2>"))},
+aE:function aE(){},
+bQ:function bQ(a,b){this.a=a
+this.$ti=b},
+bn:function bn(){},
+af:function af(a,b){this.a=a
+this.$ti=b},
+ai:function ai(a){this.a=a},
+dm:function dm(){},
+c:function c(){},
+Z:function Z(){},
+a6:function a6(a,b,c){var _=this
+_.a=a
+_.b=b
+_.c=0
+_.d=null
+_.$ti=c},
+aj:function aj(a,b,c){this.a=a
+this.b=b
+this.$ti=c},
+aZ:function aZ(a,b,c){this.a=a
+this.b=b
+this.$ti=c},
+aA:function aA(a,b,c){var _=this
+_.a=null
+_.b=a
+_.c=b
+_.$ti=c},
+bm:function bm(a,b,c){this.a=a
+this.b=b
+this.$ti=c},
+cv:function cv(a,b){this.a=a
+this.b=b},
+b0:function b0(){},
+bh:function bh(a,b){this.a=a
+this.$ti=b},
+bG:function bG(){},
+hc(a){var s=v.mangledGlobalNames[a]
+if(s!=null)return s
+return"minified:"+a},
+h3(a,b){var s
+if(b!=null){s=b.x
+if(s!=null)return s}return t.p.b(a)},
+o(a){var s
+if(typeof a=="string")return a
+if(typeof a=="number"){if(a!==0)return""+a}else if(!0===a)return"true"
+else if(!1===a)return"false"
+else if(a==null)return"null"
+s=J.a3(a)
+return s},
+ce(a){var s,r=$.fq
+if(r==null)r=$.fq=Symbol("identityHashCode")
+s=a[r]
+if(s==null){s=Math.random()*0x3fffffff|0
+a[r]=s}return s},
+cf(a){var s,r,q,p
+if(a instanceof A.h)return A.K(A.aQ(a),null)
+s=J.as(a)
+if(s===B.V||s===B.X||t.o.b(a)){r=B.j(a)
+if(r!=="Object"&&r!=="")return r
+q=a.constructor
+if(typeof q=="function"){p=q.name
+if(typeof p=="string"&&p!=="Object"&&p!=="")return p}}return A.K(A.aQ(a),null)},
+fr(a){var s,r,q
+if(a==null||typeof a=="number"||A.eR(a))return J.a3(a)
+if(typeof a=="string")return JSON.stringify(a)
+if(a instanceof A.ag)return a.i(0)
+if(a instanceof A.bw)return a.b4(!0)
+s=$.hq()
+for(r=0;r<1;++r){q=s[r].cz(a)
+if(q!=null)return q}return"Instance of '"+A.cf(a)+"'"},
+i_(a){var s=a.$thrownJsError
+if(s==null)return null
+return A.ab(s)},
+eZ(a,b){var s,r="index"
+if(!A.fT(b))return new A.U(!0,b,r,null)
+s=J.ev(a)
+if(b<0||b>=s)return A.ey(b,s,a,r)
+return new A.bg(null,null,!0,b,r,"Value not in range")},
+f(a){return A.z(a,new Error())},
+z(a,b){var s
+if(a==null)a=new A.a0()
+b.dartException=a
+s=A.jL
+if("defineProperty" in Object){Object.defineProperty(b,"message",{get:s})
+b.name=""}else b.toString=s
+return b},
+jL(){return J.a3(this.dartException)},
+M(a,b){throw A.z(a,b==null?new Error():b)},
+aU(a,b,c){var s
+if(b==null)b=0
+if(c==null)c=0
+s=Error()
+A.M(A.iQ(a,b,c),s)},
+iQ(a,b,c){var s,r,q,p,o,n,m,l,k
+if(typeof b=="string")s=b
+else{r="[]=;add;removeWhere;retainWhere;removeRange;setRange;setInt8;setInt16;setInt32;setUint8;setUint16;setUint32;setFloat32;setFloat64".split(";")
+q=r.length
+p=b
+if(p>q){c=p/q|0
+p%=q}s=r[p]}o=typeof c=="string"?c:"modify;remove from;add to".split(";")[c]
+n=t.j.b(a)?"list":"ByteData"
+m=a.$flags|0
+l="a "
+if((m&4)!==0)k="constant "
+else if((m&2)!==0){k="unmodifiable "
+l="an "}else k=(m&1)!==0?"fixed-length ":""
+return new A.bl("'"+s+"': Cannot "+o+" "+l+k+n)},
+aT(a){throw A.f(A.V(a))},
+a1(a){var s,r,q,p,o,n
+a=A.jI(a.replace(String({}),"$receiver$"))
+s=a.match(/\\\$[a-zA-Z]+\\\$/g)
+if(s==null)s=A.b([],t.s)
+r=s.indexOf("\\$arguments\\$")
+q=s.indexOf("\\$argumentsExpr\\$")
+p=s.indexOf("\\$expr\\$")
+o=s.indexOf("\\$method\\$")
+n=s.indexOf("\\$receiver\\$")
+return new A.dD(a.replace(new RegExp("\\\\\\$arguments\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$","g"),"((?:x|[^x])*)"),r,q,p,o,n)},
+dE(a){return function($expr$){var $argumentsExpr$="$arguments$"
+try{$expr$.$method$($argumentsExpr$)}catch(s){return s.message}}(a)},
+fw(a){return function($expr$){try{$expr$.$method$}catch(s){return s.message}}(a)},
+eB(a,b){var s=b==null,r=s?null:b.method
+return new A.c_(a,r,s?null:b.receiver)},
+ad(a){if(a==null)return new A.di(a)
+if(a instanceof A.b_)return A.ac(a,a.a)
+if(typeof a!=="object")return a
+if("dartException" in a)return A.ac(a,a.dartException)
+return A.jn(a)},
+ac(a,b){if(t.Q.b(b))if(b.$thrownJsError==null)b.$thrownJsError=a
+return b},
+jn(a){var s,r,q,p,o,n,m,l,k,j,i,h,g
+if(!("message" in a))return a
+s=a.message
+if("number" in a&&typeof a.number=="number"){r=a.number
+q=r&65535
+if((B.u.bM(r,16)&8191)===10)switch(q){case 438:return A.ac(a,A.eB(A.o(s)+" (Error "+q+")",null))
+case 445:case 5007:A.o(s)
+return A.ac(a,new A.be())}}if(a instanceof TypeError){p=$.hd()
+o=$.he()
+n=$.hf()
+m=$.hg()
+l=$.hj()
+k=$.hk()
+j=$.hi()
+$.hh()
+i=$.hm()
+h=$.hl()
+g=p.I(s)
+if(g!=null)return A.ac(a,A.eB(s,g))
+else{g=o.I(s)
+if(g!=null){g.method="call"
+return A.ac(a,A.eB(s,g))}else if(n.I(s)!=null||m.I(s)!=null||l.I(s)!=null||k.I(s)!=null||j.I(s)!=null||m.I(s)!=null||i.I(s)!=null||h.I(s)!=null)return A.ac(a,new A.be())}return A.ac(a,new A.ct(typeof s=="string"?s:""))}if(a instanceof RangeError){if(typeof s=="string"&&s.indexOf("call stack")!==-1)return new A.bk()
+s=function(b){try{return String(b)}catch(f){}return null}(a)
+return A.ac(a,new A.U(!1,null,null,typeof s=="string"?s.replace(/^RangeError:\s*/,""):s))}if(typeof InternalError=="function"&&a instanceof InternalError)if(typeof s=="string"&&s==="too much recursion")return new A.bk()
+return a},
+ab(a){var s
+if(a instanceof A.b_)return a.b
+if(a==null)return new A.bz(a)
+s=a.$cachedTrace
+if(s!=null)return s
+s=new A.bz(a)
+if(typeof a==="object")a.$cachedTrace=s
+return s},
+h7(a){if(a==null)return J.B(a)
+if(typeof a=="object")return A.ce(a)
+return J.B(a)},
+jv(a,b){var s,r,q,p=a.length
+for(s=0;s>>0!==a||a>=c)throw A.f(A.eZ(b,a))},
+c2:function c2(){},
+bc:function bc(){},
+c3:function c3(){},
+aB:function aB(){},
+ba:function ba(){},
+bb:function bb(){},
+c4:function c4(){},
+c5:function c5(){},
+c6:function c6(){},
+c7:function c7(){},
+c8:function c8(){},
+c9:function c9(){},
+ca:function ca(){},
+bd:function bd(){},
+cb:function cb(){},
+br:function br(){},
+bs:function bs(){},
+bt:function bt(){},
+bu:function bu(){},
+eE(a,b){var s=b.c
+return s==null?b.c=A.bD(a,"aw",[b.x]):s},
+ft(a){var s=a.w
+if(s===6||s===7)return A.ft(a.x)
+return s===11||s===12},
+i3(a){return a.as},
+cO(a){return A.e9(v.typeUniverse,a,!1)},
+ar(a1,a2,a3,a4){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0=a2.w
+switch(a0){case 5:case 1:case 2:case 3:case 4:return a2
+case 6:s=a2.x
+r=A.ar(a1,s,a3,a4)
+if(r===s)return a2
+return A.fJ(a1,r,!0)
+case 7:s=a2.x
+r=A.ar(a1,s,a3,a4)
+if(r===s)return a2
+return A.fI(a1,r,!0)
+case 8:q=a2.y
+p=A.aO(a1,q,a3,a4)
+if(p===q)return a2
+return A.bD(a1,a2.x,p)
+case 9:o=a2.x
+n=A.ar(a1,o,a3,a4)
+m=a2.y
+l=A.aO(a1,m,a3,a4)
+if(n===o&&l===m)return a2
+return A.eL(a1,n,l)
+case 10:k=a2.x
+j=a2.y
+i=A.aO(a1,j,a3,a4)
+if(i===j)return a2
+return A.fK(a1,k,i)
+case 11:h=a2.x
+g=A.ar(a1,h,a3,a4)
+f=a2.y
+e=A.jk(a1,f,a3,a4)
+if(g===h&&e===f)return a2
+return A.fH(a1,g,e)
+case 12:d=a2.y
+a4+=d.length
+c=A.aO(a1,d,a3,a4)
+o=a2.x
+n=A.ar(a1,o,a3,a4)
+if(c===d&&n===o)return a2
+return A.eM(a1,n,c,!0)
+case 13:b=a2.x
+if(b")
+for(r=1;r=0)p+=" "+r[q];++q}return p+"})"},
+fR(a1,a2,a3){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a=", ",a0=null
+if(a3!=null){s=a3.length
+if(a2==null)a2=A.b([],t.s)
+else a0=a2.length
+r=a2.length
+for(q=s;q>0;--q)a2.push("T"+(r+q))
+for(p=t.R,o="<",n="",q=0;q"}else o=""
+p=a1.x
+k=a1.y
+j=k.a
+i=j.length
+h=k.b
+g=h.length
+f=k.c
+e=f.length
+d=A.K(p,a2)
+for(c="",b="",q=0;q0){c+=b+"["
+for(b="",q=0;q0){c+=b+"{"
+for(b="",q=0;q "+d},
+K(a,b){var s,r,q,p,o,n,m=a.w
+if(m===5)return"erased"
+if(m===2)return"dynamic"
+if(m===3)return"void"
+if(m===1)return"Never"
+if(m===4)return"any"
+if(m===6){s=a.x
+r=A.K(s,b)
+q=s.w
+return(q===11||q===12?"("+r+")":r)+"?"}if(m===7)return"FutureOr<"+A.K(a.x,b)+">"
+if(m===8){p=A.jm(a.x)
+o=a.y
+return o.length>0?p+("<"+A.fX(o,b)+">"):p}if(m===10)return A.jd(a,b)
+if(m===11)return A.fR(a,b,null)
+if(m===12)return A.fR(a.x,b,a.y)
+if(m===13){n=a.x
+return b[b.length-1-n]}return"?"},
+jm(a){var s=v.mangledGlobalNames[a]
+if(s!=null)return s
+return"minified:"+a},
+iz(a,b){var s=a.tR[b]
+for(;typeof s=="string";)s=a.tR[s]
+return s},
+iy(a,b){var s,r,q,p,o,n=a.eT,m=n[b]
+if(m==null)return A.e9(a,b,!1)
+else if(typeof m=="number"){s=m
+r=A.bE(a,5,"#")
+q=A.ea(s)
+for(p=0;p0)p+="<"+A.bC(c)+">"
+s=a.eC.get(p)
+if(s!=null)return s
+r=new A.N(null,null)
+r.w=8
+r.x=b
+r.y=c
+if(c.length>0)r.c=c[0]
+r.as=p
+q=A.aa(a,r)
+a.eC.set(p,q)
+return q},
+eL(a,b,c){var s,r,q,p,o,n
+if(b.w===9){s=b.x
+r=b.y.concat(c)}else{r=c
+s=b}q=s.as+(";<"+A.bC(r)+">")
+p=a.eC.get(q)
+if(p!=null)return p
+o=new A.N(null,null)
+o.w=9
+o.x=s
+o.y=r
+o.as=q
+n=A.aa(a,o)
+a.eC.set(q,n)
+return n},
+fK(a,b,c){var s,r,q="+"+(b+"("+A.bC(c)+")"),p=a.eC.get(q)
+if(p!=null)return p
+s=new A.N(null,null)
+s.w=10
+s.x=b
+s.y=c
+s.as=q
+r=A.aa(a,s)
+a.eC.set(q,r)
+return r},
+fH(a,b,c){var s,r,q,p,o,n=b.as,m=c.a,l=m.length,k=c.b,j=k.length,i=c.c,h=i.length,g="("+A.bC(m)
+if(j>0){s=l>0?",":""
+g+=s+"["+A.bC(k)+"]"}if(h>0){s=l>0?",":""
+g+=s+"{"+A.ir(i)+"}"}r=n+(g+")")
+q=a.eC.get(r)
+if(q!=null)return q
+p=new A.N(null,null)
+p.w=11
+p.x=b
+p.y=c
+p.as=r
+o=A.aa(a,p)
+a.eC.set(r,o)
+return o},
+eM(a,b,c,d){var s,r=b.as+("<"+A.bC(c)+">"),q=a.eC.get(r)
+if(q!=null)return q
+s=A.it(a,b,c,r,d)
+a.eC.set(r,s)
+return s},
+it(a,b,c,d,e){var s,r,q,p,o,n,m,l
+if(e){s=c.length
+r=A.ea(s)
+for(q=0,p=0;p0){n=A.ar(a,b,r,0)
+m=A.aO(a,c,r,0)
+return A.eM(a,n,m,c!==m)}}l=new A.N(null,null)
+l.w=12
+l.x=b
+l.y=c
+l.as=d
+return A.aa(a,l)},
+fC(a,b,c,d){return{u:a,e:b,r:c,s:[],p:0,n:d}},
+fE(a){var s,r,q,p,o,n,m,l=a.r,k=a.s
+for(s=l.length,r=0;r=48&&q<=57)r=A.ij(r+1,q,l,k)
+else if((((q|32)>>>0)-97&65535)<26||q===95||q===36||q===124)r=A.fD(a,r,l,k,!1)
+else if(q===46)r=A.fD(a,r,l,k,!0)
+else{++r
+switch(q){case 44:break
+case 58:k.push(!1)
+break
+case 33:k.push(!0)
+break
+case 59:k.push(A.an(a.u,a.e,k.pop()))
+break
+case 94:k.push(A.iv(a.u,k.pop()))
+break
+case 35:k.push(A.bE(a.u,5,"#"))
+break
+case 64:k.push(A.bE(a.u,2,"@"))
+break
+case 126:k.push(A.bE(a.u,3,"~"))
+break
+case 60:k.push(a.p)
+a.p=k.length
+break
+case 62:A.il(a,k)
+break
+case 38:A.ik(a,k)
+break
+case 63:p=a.u
+k.push(A.fJ(p,A.an(p,a.e,k.pop()),a.n))
+break
+case 47:p=a.u
+k.push(A.fI(p,A.an(p,a.e,k.pop()),a.n))
+break
+case 40:k.push(-3)
+k.push(a.p)
+a.p=k.length
+break
+case 41:A.ii(a,k)
+break
+case 91:k.push(a.p)
+a.p=k.length
+break
+case 93:o=k.splice(a.p)
+A.fF(a.u,a.e,o)
+a.p=k.pop()
+k.push(o)
+k.push(-1)
+break
+case 123:k.push(a.p)
+a.p=k.length
+break
+case 125:o=k.splice(a.p)
+A.io(a.u,a.e,o)
+a.p=k.pop()
+k.push(o)
+k.push(-2)
+break
+case 43:n=l.indexOf("(",r)
+k.push(l.substring(r,n))
+k.push(-4)
+k.push(a.p)
+a.p=k.length
+r=n+1
+break
+default:throw"Bad character "+q}}}m=k.pop()
+return A.an(a.u,a.e,m)},
+ij(a,b,c,d){var s,r,q=b-48
+for(s=c.length;a=48&&r<=57))break
+q=q*10+(r-48)}d.push(q)
+return a},
+fD(a,b,c,d,e){var s,r,q,p,o,n,m=b+1
+for(s=c.length;m>>0)-97&65535)<26||r===95||r===36||r===124))q=r>=48&&r<=57
+else q=!0
+if(!q)break}}p=c.substring(b,m)
+if(e){s=a.u
+o=a.e
+if(o.w===9)o=o.x
+n=A.iz(s,o.x)[p]
+if(n==null)A.M('No "'+p+'" in "'+A.i3(o)+'"')
+d.push(A.bF(s,o,n))}else d.push(p)
+return m},
+il(a,b){var s,r=a.u,q=A.fB(a,b),p=b.pop()
+if(typeof p=="string")b.push(A.bD(r,p,q))
+else{s=A.an(r,a.e,p)
+switch(s.w){case 11:b.push(A.eM(r,s,q,a.n))
+break
+default:b.push(A.eL(r,s,q))
+break}}},
+ii(a,b){var s,r,q,p=a.u,o=b.pop(),n=null,m=null
+if(typeof o=="number")switch(o){case-1:n=b.pop()
+break
+case-2:m=b.pop()
+break
+default:b.push(o)
+break}else b.push(o)
+s=A.fB(a,b)
+o=b.pop()
+switch(o){case-3:o=b.pop()
+if(n==null)n=p.sEA
+if(m==null)m=p.sEA
+r=A.an(p,a.e,o)
+q=new A.cC()
+q.a=s
+q.b=n
+q.c=m
+b.push(A.fH(p,r,q))
+return
+case-4:b.push(A.fK(p,b.pop(),s))
+return
+default:throw A.f(A.bO("Unexpected state under `()`: "+A.o(o)))}},
+ik(a,b){var s=b.pop()
+if(0===s){b.push(A.bE(a.u,1,"0&"))
+return}if(1===s){b.push(A.bE(a.u,4,"1&"))
+return}throw A.f(A.bO("Unexpected extended operation "+A.o(s)))},
+fB(a,b){var s=b.splice(a.p)
+A.fF(a.u,a.e,s)
+a.p=b.pop()
+return s},
+an(a,b,c){if(typeof c=="string")return A.bD(a,c,a.sEA)
+else if(typeof c=="number"){b.toString
+return A.im(a,b,c)}else return c},
+fF(a,b,c){var s,r=c.length
+for(s=0;sn)return!1
+m=n-o
+l=s.b
+k=r.b
+j=l.length
+i=k.length
+if(o+j=d)return!1
+a1=f[b]
+b+=3
+if(a00?new Array(q):v.typeUniverse.sEA
+for(o=0;o0?new Array(a):v.typeUniverse.sEA},
+N:function N(a,b){var _=this
+_.a=a
+_.b=b
+_.r=_.f=_.d=_.c=null
+_.w=0
+_.as=_.Q=_.z=_.y=_.x=null},
+cC:function cC(){this.c=this.b=this.a=null},
+cL:function cL(a){this.a=a},
+cA:function cA(){},
+bA:function bA(a){this.a=a},
+ia(){var s,r,q
+if(self.scheduleImmediate!=null)return A.jp()
+if(self.MutationObserver!=null&&self.document!=null){s={}
+r=self.document.createElement("div")
+q=self.document.createElement("span")
+s.a=null
+new self.MutationObserver(A.cM(new A.dH(s),1)).observe(r,{childList:true})
+return new A.dG(s,r,q)}else if(self.setImmediate!=null)return A.jq()
+return A.jr()},
+ib(a){self.scheduleImmediate(A.cM(new A.dI(a),0))},
+ic(a){self.setImmediate(A.cM(new A.dJ(a),0))},
+id(a){A.iq(0,a)},
+iq(a,b){var s=new A.e7()
+s.bx(a,b)
+return s},
+eT(a){return new A.cx(new A.x($.t,a.h("x<0>")),a.h("cx<0>"))},
+eP(a,b){a.$2(0,null)
+b.b=!0
+return b.a},
+iM(a,b){A.iN(a,b)},
+eO(a,b){var s,r=a==null?b.$ti.c.a(a):a
+if(!b.b)b.a.aO(r)
+else{s=b.a
+if(b.$ti.h("aw<1>").b(r))s.aQ(r)
+else s.aU(r)}},
+eN(a,b){var s=A.ad(a),r=A.ab(a),q=b.a
+if(b.b)q.ao(new A.O(s,r))
+else q.aP(new A.O(s,r))},
+iN(a,b){var s,r,q=new A.ec(b),p=new A.ed(b)
+if(a instanceof A.x)a.b3(q,p,t.z)
+else{s=t.z
+if(a instanceof A.x)a.bh(q,p,s)
+else{r=new A.x($.t,t.aY)
+r.a=8
+r.c=a
+r.b3(q,p,s)}}},
+eV(a){var s=function(b,c){return function(d,e){while(true){try{b(d,e)
+break}catch(r){e=r
+d=c}}}}(a,1)
+return $.t.bg(new A.ek(s))},
+fG(a,b,c){return 0},
+ew(a){var s
+if(t.Q.b(a)){s=a.gah()
+if(s!=null)return s}return B.E},
+eF(a,b,c){var s,r,q,p={},o=p.a=a
+for(;s=o.a,(s&4)!==0;){o=o.c
+p.a=o}if(o===b){s=A.i4()
+b.aP(new A.O(new A.U(!0,o,null,"Cannot complete a future with itself"),s))
+return}r=b.a&1
+s=o.a=s|r
+if((s&24)===0){q=b.c
+b.a=b.a&1|4
+b.c=o
+o.b1(q)
+return}if(!c)if(b.c==null)o=(s&16)===0||r!==0
+else o=!1
+else o=!0
+if(o){q=b.a7()
+b.a4(p.a)
+A.aH(b,q)
+return}b.a^=2
+A.aN(null,null,b.b,new A.dS(p,b))},
+aH(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g={},f=g.a=a
+for(;!0;){s={}
+r=f.a
+q=(r&16)===0
+p=!q
+if(b==null){if(p&&(r&1)===0){f=f.c
+A.ei(f.a,f.b)}return}s.a=b
+o=b.a
+for(f=b;o!=null;f=o,o=n){f.a=null
+A.aH(g.a,f)
+s.a=o
+n=o.a}r=g.a
+m=r.c
+s.b=p
+s.c=m
+if(q){l=f.c
+l=(l&1)!==0||(l&15)===8}else l=!0
+if(l){k=f.b.b
+if(p){r=r.b===k
+r=!(r||r)}else r=!1
+if(r){A.ei(m.a,m.b)
+return}j=$.t
+if(j!==k)$.t=k
+else j=null
+f=f.c
+if((f&15)===8)new A.dW(s,g,p).$0()
+else if(q){if((f&1)!==0)new A.dV(s,m).$0()}else if((f&2)!==0)new A.dU(g,s).$0()
+if(j!=null)$.t=j
+f=s.c
+if(f instanceof A.x){r=s.a.$ti
+r=r.h("aw<2>").b(f)||!r.y[1].b(f)}else r=!1
+if(r){i=s.a.b
+if((f.a&24)!==0){h=i.c
+i.c=null
+b=i.a8(h)
+i.a=f.a&30|i.a&1
+i.c=f.c
+g.a=f
+continue}else A.eF(f,i,!0)
+return}}i=s.a.b
+h=i.c
+i.c=null
+b=i.a8(h)
+f=s.b
+r=s.c
+if(!f){i.a=8
+i.c=r}else{i.a=i.a&1|16
+i.c=r}g.a=i
+f=i}},
+je(a,b){if(t.C.b(a))return b.bg(a)
+if(t.w.b(a))return a
+throw A.f(A.fg(a,"onError",u.c))},
+jc(){var s,r
+for(s=$.aM;s!=null;s=$.aM){$.bI=null
+r=s.b
+$.aM=r
+if(r==null)$.bH=null
+s.a.$0()}},
+jj(){$.eS=!0
+try{A.jc()}finally{$.bI=null
+$.eS=!1
+if($.aM!=null)$.fa().$1(A.h_())}},
+fY(a){var s=new A.cy(a),r=$.bH
+if(r==null){$.aM=$.bH=s
+if(!$.eS)$.fa().$1(A.h_())}else $.bH=r.b=s},
+jg(a){var s,r,q,p=$.aM
+if(p==null){A.fY(a)
+$.bI=$.bH
+return}s=new A.cy(a)
+r=$.bI
+if(r==null){s.b=p
+$.aM=$.bI=s}else{q=r.b
+s.b=q
+$.bI=r.b=s
+if(q==null)$.bH=s}},
+jJ(a){var s=null,r=$.t
+if(B.a===r){A.aN(s,s,B.a,a)
+return}A.aN(s,s,r,r.b8(a))},
+jR(a){A.eW(a,"stream",t.K)
+return new A.cI()},
+ei(a,b){A.jg(new A.ej(a,b))},
+fV(a,b,c,d){var s,r=$.t
+if(r===c)return d.$0()
+$.t=c
+s=r
+try{r=d.$0()
+return r}finally{$.t=s}},
+fW(a,b,c,d,e){var s,r=$.t
+if(r===c)return d.$1(e)
+$.t=c
+s=r
+try{r=d.$1(e)
+return r}finally{$.t=s}},
+jf(a,b,c,d,e,f){var s,r=$.t
+if(r===c)return d.$2(e,f)
+$.t=c
+s=r
+try{r=d.$2(e,f)
+return r}finally{$.t=s}},
+aN(a,b,c,d){if(B.a!==c)d=c.b8(d)
+A.fY(d)},
+dH:function dH(a){this.a=a},
+dG:function dG(a,b,c){this.a=a
+this.b=b
+this.c=c},
+dI:function dI(a){this.a=a},
+dJ:function dJ(a){this.a=a},
+e7:function e7(){},
+e8:function e8(a,b){this.a=a
+this.b=b},
+cx:function cx(a,b){this.a=a
+this.b=!1
+this.$ti=b},
+ec:function ec(a){this.a=a},
+ed:function ed(a){this.a=a},
+ek:function ek(a){this.a=a},
+aK:function aK(a){var _=this
+_.a=a
+_.e=_.d=_.c=_.b=null},
+ap:function ap(a,b){this.a=a
+this.$ti=b},
+O:function O(a,b){this.a=a
+this.b=b},
+aG:function aG(a,b,c,d,e){var _=this
+_.a=null
+_.b=a
+_.c=b
+_.d=c
+_.e=d
+_.$ti=e},
+x:function x(a,b){var _=this
+_.a=0
+_.b=a
+_.c=null
+_.$ti=b},
+dP:function dP(a,b){this.a=a
+this.b=b},
+dT:function dT(a,b){this.a=a
+this.b=b},
+dS:function dS(a,b){this.a=a
+this.b=b},
+dR:function dR(a,b){this.a=a
+this.b=b},
+dQ:function dQ(a,b){this.a=a
+this.b=b},
+dW:function dW(a,b,c){this.a=a
+this.b=b
+this.c=c},
+dX:function dX(a,b){this.a=a
+this.b=b},
+dY:function dY(a){this.a=a},
+dV:function dV(a,b){this.a=a
+this.b=b},
+dU:function dU(a,b){this.a=a
+this.b=b},
+cy:function cy(a){this.a=a
+this.b=null},
+cI:function cI(){},
+eb:function eb(){},
+ej:function ej(a,b){this.a=a
+this.b=b},
+e3:function e3(){},
+e4:function e4(a,b){this.a=a
+this.b=b},
+e5:function e5(a,b,c){this.a=a
+this.b=b
+this.c=c},
+hI(a,b){return new A.bo(a.h("@<0>").A(b).h("bo<1,2>"))},
+eG(a,b){var s=a[b]
+return s===a?null:s},
+eI(a,b,c){if(c==null)a[b]=a
+else a[b]=c},
+eH(){var s=Object.create(null)
+A.eI(s,"",s)
+delete s[""]
+return s},
+hU(a,b){return new A.W(a.h("@<0>").A(b).h("W<1,2>"))},
+Q(a,b,c){return A.jv(a,new A.W(b.h("@<0>").A(c).h("W<1,2>")))},
+E(a,b){return new A.W(a.h("@<0>").A(b).h("W<1,2>"))},
+ax(a){return new A.bq(a.h("bq<0>"))},
+eJ(){var s=Object.create(null)
+s[""]=s
+delete s[""]
+return s},
+hV(a){return new A.am(a.h("am<0>"))},
+db(a){return new A.am(a.h("am<0>"))},
+eK(){var s=Object.create(null)
+s[""]=s
+delete s[""]
+return s},
+ih(a,b,c){var s=new A.aI(a,b,c.h("aI<0>"))
+s.c=a.e
+return s},
+hJ(a,b,c){var s=A.hI(b,c)
+a.H(0,new A.d5(s,b,c))
+return s},
+d6(a){var s=J.ae(a)
+if(s.j())return s.gk()
+return null},
+da(a,b,c){var s=A.hU(b,c)
+s.E(0,a)
+return s},
+eD(a){var s,r
+if(A.f5(a))return"{...}"
+s=new A.cn("")
+try{r={}
+$.au.push(a)
+s.a+="{"
+r.a=!0
+a.H(0,new A.de(r,s))
+s.a+="}"}finally{$.au.pop()}r=s.a
+return r.charCodeAt(0)==0?r:r},
+bo:function bo(a){var _=this
+_.a=0
+_.e=_.d=_.c=_.b=null
+_.$ti=a},
+bp:function bp(a,b){this.a=a
+this.$ti=b},
+cD:function cD(a,b,c){var _=this
+_.a=a
+_.b=b
+_.c=0
+_.d=null
+_.$ti=c},
+bq:function bq(a){var _=this
+_.a=0
+_.e=_.d=_.c=_.b=null
+_.$ti=a},
+a9:function a9(a,b,c){var _=this
+_.a=a
+_.b=b
+_.c=0
+_.d=null
+_.$ti=c},
+am:function am(a){var _=this
+_.a=0
+_.f=_.e=_.d=_.c=_.b=null
+_.r=0
+_.$ti=a},
+e0:function e0(a){this.a=a
+this.c=this.b=null},
+aI:function aI(a,b,c){var _=this
+_.a=a
+_.b=b
+_.d=_.c=null
+_.$ti=c},
+d5:function d5(a,b,c){this.a=a
+this.b=b
+this.c=c},
+m:function m(){},
+b9:function b9(){},
+de:function de(a,b){this.a=a
+this.b=b},
+ak:function ak(){},
+by:function by(){},
+hD(a,b){a=A.z(a,new Error())
+a.stack=b.i(0)
+throw a},
+eC(a,b,c,d){var s,r=c?J.hQ(a,d):J.hP(a,d)
+if(a!==0&&b!=null)for(s=0;s"))
+for(s=a.length,r=0;r"))
+s=A.b([],b.h("p<0>"))
+for(r=J.ae(a);r.j();)s.push(r.gk())
+return s},
+fu(a,b,c){var s=J.ae(b)
+if(!s.j())return a
+if(c.length===0){do a+=A.o(s.gk())
+while(s.j())}else{a+=A.o(s.gk())
+for(;s.j();)a=a+c+A.o(s.gk())}return a},
+i4(){return A.ab(new Error())},
+d3(a){if(typeof a=="number"||A.eR(a)||a==null)return J.a3(a)
+if(typeof a=="string")return JSON.stringify(a)
+return A.fr(a)},
+hE(a,b){A.eW(a,"error",t.K)
+A.eW(b,"stackTrace",t.l)
+A.hD(a,b)},
+bO(a){return new A.bN(a)},
+bL(a,b){return new A.U(!1,null,b,a)},
+fg(a,b,c){return new A.U(!0,a,b,c)},
+i1(a,b,c,d,e){return new A.bg(b,c,!0,a,d,"Invalid value")},
+fs(a,b){return a},
+ey(a,b,c,d){return new A.bV(b,!0,a,d,"Index out of range")},
+fy(a){return new A.bl(a)},
+fx(a){return new A.cs(a)},
+i5(a){return new A.cj(a)},
+V(a){return new A.bS(a)},
+hO(a,b,c){var s,r
+if(A.f5(a)){if(b==="("&&c===")")return"(...)"
+return b+"..."+c}s=A.b([],t.s)
+$.au.push(a)
+try{A.jb(a,s)}finally{$.au.pop()}r=A.fu(b,s,", ")+c
+return r.charCodeAt(0)==0?r:r},
+ez(a,b,c){var s,r
+if(A.f5(a))return b+"..."+c
+s=new A.cn(b)
+$.au.push(a)
+try{r=s
+r.a=A.fu(r.a,a,", ")}finally{$.au.pop()}s.a+=c
+r=s.a
+return r.charCodeAt(0)==0?r:r},
+jb(a,b){var s,r,q,p,o,n,m,l=a.gq(a),k=0,j=0
+while(!0){if(!(k<80||j<3))break
+if(!l.j())return
+s=A.o(l.gk())
+b.push(s)
+k+=s.length+2;++j}if(!l.j()){if(j<=5)return
+r=b.pop()
+q=b.pop()}else{p=l.gk();++j
+if(!l.j()){if(j<=4){b.push(A.o(p))
+return}r=A.o(p)
+q=b.pop()
+k+=r.length+2}else{o=l.gk();++j
+for(;l.j();p=o,o=n){n=l.gk();++j
+if(j>100){while(!0){if(!(k>75&&j>3))break
+k-=b.pop().length+2;--j}b.push("...")
+return}}q=A.o(p)
+r=A.o(o)
+k+=r.length+q.length+4}}if(j>b.length+2){k+=5
+m="..."}else m=null
+while(!0){if(!(k>80&&b.length>3))break
+k-=b.pop().length+2
+if(m==null){k+=5
+m="..."}}if(m!=null)b.push(m)
+b.push(q)
+b.push(r)},
+fp(a,b,c,d){var s
+if(B.e===c){s=J.B(a)
+b=J.B(b)
+return A.dq(A.a_(A.a_($.cP(),s),b))}if(B.e===d){s=J.B(a)
+b=J.B(b)
+c=J.B(c)
+return A.dq(A.a_(A.a_(A.a_($.cP(),s),b),c))}s=J.B(a)
+b=J.B(b)
+c=J.B(c)
+d=J.B(d)
+d=A.dq(A.a_(A.a_(A.a_(A.a_($.cP(),s),b),c),d))
+return d},
+hZ(a){var s,r,q=$.cP()
+for(s=a.length,r=0;r")
+return A.fn(new A.X(a,s),new A.df(b,c),s.h("k.E"),b.h("@<0>").A(c).h("+(1,2)"))},
+cq:function cq(a){this.a=a},
+aY:function aY(a){this.b=a},
+cr:function cr(a,b){var _=this
+_.d=a
+_.f=_.e=0
+_.r=b
+_.c=null},
+ds:function ds(a,b){this.a=a
+this.b=b},
+dC:function dC(a,b){this.a=a
+this.b=b},
+dB:function dB(a){this.a=a},
+dz:function dz(a,b){this.a=a
+this.b=b},
+dy:function dy(a){this.a=a},
+dx:function dx(){},
+dA:function dA(a,b){this.a=a
+this.b=b},
+dt:function dt(a){this.a=a},
+du:function du(a,b){this.a=a
+this.b=b},
+dv:function dv(a,b){this.a=a
+this.b=b},
+dw:function dw(a,b){this.a=a
+this.b=b},
+cc:function cc(a,b){this.c=a
+this.a=b},
+dg:function dg(a){this.a=a},
+df:function df(a,b){this.a=a
+this.b=b},
+ie(a,b,c,d){var s,r=A.jo(new A.dN(c),t.m),q=null
+if(r==null)r=q
+else{if(typeof r=="function")A.M(A.bL("Attempting to rewrap a JS function.",null))
+s=function(e,f){return function(g){return e(f,g,arguments.length)}}(A.iO,r)
+s[$.f9()]=r
+r=s}if(r!=null)a.addEventListener(b,r,!1)
+return new A.cB(a,b,r,!1)},
+jo(a,b){var s=$.t
+if(s===B.a)return a
+return s.bU(a,b)},
+ex:function ex(a,b){this.a=a
+this.$ti=b},
+cB:function cB(a,b,c,d){var _=this
+_.b=a
+_.c=b
+_.d=c
+_.e=d},
+dN:function dN(a){this.a=a},
+jH(a){if(typeof dartPrint=="function"){dartPrint(a)
+return}if(typeof console=="object"&&typeof console.log!="undefined"){console.log(a)
+return}if(typeof print=="function"){print(a)
+return}throw"Unable to print message: "+String(a)},
+iO(a,b,c){if(c>=1)return a.$1(b)
+return a.$0()},
+aL(a,b){return a[b]},
+dh(a){return new A.ap(A.hY(a),t.F)},
+hY(a){return function(){var s=a
+var r=0,q=1,p=[],o,n
+return function $async$dh(b,c,d){if(c===1){p.push(d)
+r=q}while(true)switch(r){case 0:o=0
+case 2:if(!(o").A(b).h("af<1,2>"))},
+B(a,b){var s
+a.$flags&1&&A.aU(a,"remove",1)
+for(s=0;s0){a[0]=q
+a[1]=r}return}p=0
+if(A.aq(a).c.b(null))for(o=0;o0)this.bH(a,p)},
+bH(a,b){var s,r=a.length
+for(;s=r-1,r>0;r=s)if(a[s]===null){a[s]=void 0;--b
+if(b===0)break}},
+i(a){return A.ez(a,"[","]")},
+gq(a){return new J.bM(a,a.length,A.aq(a).h("bM<1>"))},
+gu(a){return A.ce(a)},
+gl(a){return a.length},
+m(a,b){if(!(b>=0&&b=0&&b=p){r.d=null
+return!1}r.d=q[s]
+r.c=s+1
+return!0}}
+J.ay.prototype={
+bb(a,b){var s
+if(ab)return 1
+else if(a===b){if(a===0){s=this.gaD(b)
+if(this.gaD(a)===s)return 0
+if(this.gaD(a))return-1
+return 1}return 0}else if(isNaN(a)){if(isNaN(b))return 0
+return 1}else return-1},
+gaD(a){return a===0?1/a<0:a<0},
+cl(a){if(a>0){if(a!==1/0)return Math.round(a)}else if(a>-1/0)return 0-Math.round(0-a)
+throw A.f(A.fy(""+a+".round()"))},
+cm(a){if(a<0)return-Math.round(-a)
+else return Math.round(a)},
+i(a){if(a===0&&1/a<0)return"-0.0"
+else return""+a},
+gu(a){var s,r,q,p,o=a|0
+if(a===o)return o&536870911
+s=Math.abs(a)
+r=Math.log(s)/0.6931471805599453|0
+q=Math.pow(2,r)
+p=s<1?s/q:q/s
+return((p*9007199254740992|0)+(p*3542243181176521|0))*599197+r*1259&536870911},
+bM(a,b){var s
+if(a>0)s=this.bL(a,b)
+else{s=b>31?31:b
+s=a>>s>>>0}return s},
+bL(a,b){return b>31?0:a>>>b},
+gt(a){return A.L(t.n)},
+$iv:1}
+J.b1.prototype={
+gt(a){return A.L(t.S)},
+$ij:1,
+$ia:1}
+J.bZ.prototype={
+gt(a){return A.L(t.V)},
+$ij:1}
+J.az.prototype={
+bb(a,b){var s
+if(a===b)s=0
+else s=a>6}r=r+((r&67108863)<<3)&536870911
+r^=r>>11
+return r+((r&16383)<<15)&536870911},
+gt(a){return A.L(t.N)},
+gl(a){return a.length},
+$ij:1,
+$ie:1}
+A.aE.prototype={
+gq(a){return new A.bQ(J.ae(this.ga9()),A.u(this).h("bQ<1,2>"))},
+gl(a){return J.ev(this.ga9())},
+G(a,b){return A.u(this).y[1].a(J.hu(this.ga9(),b))},
+i(a){return J.a3(this.ga9())}}
+A.bQ.prototype={
+j(){return this.a.j()},
+gk(){return this.$ti.y[1].a(this.a.gk())}}
+A.bn.prototype={
+m(a,b){return this.$ti.y[1].a(J.hr(this.a,b))},
+p(a,b,c){J.hs(this.a,b,this.$ti.c.a(c))},
+$ic:1,
+$ii:1}
+A.af.prototype={
+ba(a,b){return new A.af(this.a,this.$ti.h("@<1>").A(b).h("af<1,2>"))},
+ga9(){return this.a}}
+A.ai.prototype={
+i(a){return"LateInitializationError: "+this.a}}
+A.dm.prototype={}
+A.c.prototype={}
+A.Z.prototype={
+gq(a){var s=this
+return new A.a6(s,s.gl(s),A.u(s).h("a6"))}}
+A.a6.prototype={
+gk(){var s=this.d
+return s==null?this.$ti.c.a(s):s},
+j(){var s,r=this,q=r.a,p=J.eo(q),o=p.gl(q)
+if(r.b!==o)throw A.f(A.V(q))
+s=r.c
+if(s>=o){r.d=null
+return!1}r.d=p.G(q,s);++r.c
+return!0}}
+A.aj.prototype={
+gq(a){var s=this.a
+return new A.aA(s.gq(s),this.b,A.u(this).h("aA<1,2>"))},
+gl(a){var s=this.a
+return s.gl(s)},
+G(a,b){var s=this.a
+return this.b.$1(s.G(s,b))}}
+A.aZ.prototype={$ic:1}
+A.aA.prototype={
+j(){var s=this,r=s.b
+if(r.j()){s.a=s.c.$1(r.gk())
+return!0}s.a=null
+return!1},
+gk(){var s=this.a
+return s==null?this.$ti.y[1].a(s):s}}
+A.bm.prototype={
+gq(a){return new A.cv(J.ae(this.a),this.b)}}
+A.cv.prototype={
+j(){var s,r
+for(s=this.a,r=this.b;s.j();)if(r.$1(s.gk()))return!0
+return!1},
+gk(){return this.a.gk()}}
+A.b0.prototype={}
+A.bh.prototype={
+gl(a){return J.ev(this.a)},
+G(a,b){var s=this.a,r=J.eo(s)
+return r.G(s,r.gl(s)-1-b)}}
+A.bG.prototype={}
+A.ao.prototype={$r:"+(1,2)",$s:1}
+A.aJ.prototype={$r:"+isActive,todo(1,2)",$s:2}
+A.bT.prototype={
+i(a){return A.eD(this)}}
+A.aX.prototype={
+gl(a){return this.b.length},
+gbG(){var s=this.$keys
+if(s==null){s=Object.keys(this.a)
+this.$keys=s}return s},
+R(a){if(typeof a!="string")return!1
+if("__proto__"===a)return!1
+return this.a.hasOwnProperty(a)},
+m(a,b){if(!this.R(b))return null
+return this.b[this.a[b]]},
+H(a,b){var s,r,q=this.gbG(),p=this.b
+for(s=q.length,r=0;r>>0},
+i(a){return"Closure '"+this.$_name+"' of "+("Instance of '"+A.cf(this.a)+"'")}}
+A.cg.prototype={
+i(a){return"RuntimeError: "+this.a}}
+A.W.prototype={
+gl(a){return this.a},
+ga_(){return new A.Y(this,A.u(this).h("Y<1>"))},
+R(a){var s=this.c5(a)
+return s},
+c5(a){var s=this.d
+if(s==null)return!1
+return this.ad(s[this.ac(a)],a)>=0},
+E(a,b){b.H(0,new A.d8(this))},
+m(a,b){var s,r,q,p,o=null
+if(typeof b=="string"){s=this.b
+if(s==null)return o
+r=s[b]
+q=r==null?o:r.b
+return q}else if(typeof b=="number"&&(b&0x3fffffff)===b){p=this.c
+if(p==null)return o
+r=p[b]
+q=r==null?o:r.b
+return q}else return this.c6(b)},
+c6(a){var s,r,q=this.d
+if(q==null)return null
+s=q[this.ac(a)]
+r=this.ad(s,a)
+if(r<0)return null
+return s[r].b},
+p(a,b,c){var s,r,q=this
+if(typeof b=="string"){s=q.b
+q.aN(s==null?q.b=q.au():s,b,c)}else if(typeof b=="number"&&(b&0x3fffffff)===b){r=q.c
+q.aN(r==null?q.c=q.au():r,b,c)}else q.c8(b,c)},
+c8(a,b){var s,r,q,p=this,o=p.d
+if(o==null)o=p.d=p.au()
+s=p.ac(a)
+r=o[s]
+if(r==null)o[s]=[p.av(a,b)]
+else{q=p.ad(r,a)
+if(q>=0)r[q].b=b
+else r.push(p.av(a,b))}},
+B(a,b){var s=this
+if(typeof b=="string")return s.b2(s.b,b)
+else if(typeof b=="number"&&(b&0x3fffffff)===b)return s.b2(s.c,b)
+else return s.c7(b)},
+c7(a){var s,r,q,p,o=this,n=o.d
+if(n==null)return null
+s=o.ac(a)
+r=n[s]
+q=o.ad(r,a)
+if(q<0)return null
+p=r.splice(q,1)[0]
+o.b5(p)
+if(r.length===0)delete n[s]
+return p.b},
+H(a,b){var s=this,r=s.e,q=s.r
+for(;r!=null;){b.$2(r.a,r.b)
+if(q!==s.r)throw A.f(A.V(s))
+r=r.c}},
+aN(a,b,c){var s=a[b]
+if(s==null)a[b]=this.av(b,c)
+else s.b=c},
+b2(a,b){var s
+if(a==null)return null
+s=a[b]
+if(s==null)return null
+this.b5(s)
+delete a[b]
+return s.b},
+b0(){this.r=this.r+1&1073741823},
+av(a,b){var s,r=this,q=new A.d9(a,b)
+if(r.e==null)r.e=r.f=q
+else{s=r.f
+s.toString
+q.d=s
+r.f=s.c=q}++r.a
+r.b0()
+return q},
+b5(a){var s=this,r=a.d,q=a.c
+if(r==null)s.e=q
+else r.c=q
+if(q==null)s.f=r
+else q.d=r;--s.a
+s.b0()},
+ac(a){return J.B(a)&1073741823},
+ad(a,b){var s,r
+if(a==null)return-1
+s=a.length
+for(r=0;r"]=s
+delete s[""]
+return s}}
+A.d8.prototype={
+$2(a,b){this.a.p(0,a,b)},
+$S(){return A.u(this.a).h("~(1,2)")}}
+A.d9.prototype={}
+A.Y.prototype={
+gl(a){return this.a.a},
+gq(a){var s=this.a
+return new A.b8(s,s.r,s.e)}}
+A.b8.prototype={
+gk(){return this.d},
+j(){var s,r=this,q=r.a
+if(r.b!==q.r)throw A.f(A.V(q))
+s=r.c
+if(s==null){r.d=null
+return!1}else{r.d=s.a
+r.c=s.c
+return!0}}}
+A.X.prototype={
+gl(a){return this.a.a},
+gq(a){var s=this.a
+return new A.c1(s,s.r,s.e,this.$ti.h("c1<1,2>"))}}
+A.c1.prototype={
+gk(){var s=this.d
+s.toString
+return s},
+j(){var s,r=this,q=r.a
+if(r.b!==q.r)throw A.f(A.V(q))
+s=r.c
+if(s==null){r.d=null
+return!1}else{r.d=new A.F(s.a,s.b,r.$ti.h("F<1,2>"))
+r.c=s.c
+return!0}}}
+A.ep.prototype={
+$1(a){return this.a(a)},
+$S:8}
+A.eq.prototype={
+$2(a,b){return this.a(a,b)},
+$S:9}
+A.er.prototype={
+$1(a){return this.a(a)},
+$S:10}
+A.bw.prototype={
+gt(a){return A.L(this.b_())},
+b_(){return A.ju(this.$r,this.aZ())},
+i(a){return this.b4(!1)},
+b4(a){var s,r,q,p,o,n=this.bD(),m=this.aZ(),l=(a?"Record ":"")+"("
+for(s=n.length,r="",q=0;q0;){--q;--s
+k[q]=r[s]}}k=A.hW(k,!1,t.K)
+k.$flags=3
+return k}}
+A.cG.prototype={
+aZ(){return[this.a,this.b]},
+L(a,b){if(b==null)return!1
+return b instanceof A.cG&&this.$s===b.$s&&J.q(this.a,b.a)&&J.q(this.b,b.b)},
+gu(a){return A.fp(this.$s,this.a,this.b,B.e)}}
+A.dK.prototype={
+J(){var s=this.b
+if(s===this)throw A.f(new A.ai("Local '' has not been initialized."))
+return s}}
+A.c2.prototype={
+gt(a){return B.a5},
+$ij:1}
+A.bc.prototype={}
+A.c3.prototype={
+gt(a){return B.a6},
+$ij:1}
+A.aB.prototype={
+gl(a){return a.length},
+$iJ:1}
+A.ba.prototype={
+m(a,b){A.a2(b,a,a.length)
+return a[b]},
+p(a,b,c){a.$flags&2&&A.aU(a)
+A.a2(b,a,a.length)
+a[b]=c},
+$ic:1,
+$ii:1}
+A.bb.prototype={
+p(a,b,c){a.$flags&2&&A.aU(a)
+A.a2(b,a,a.length)
+a[b]=c},
+$ic:1,
+$ii:1}
+A.c4.prototype={
+gt(a){return B.a7},
+$ij:1}
+A.c5.prototype={
+gt(a){return B.a8},
+$ij:1}
+A.c6.prototype={
+gt(a){return B.a9},
+m(a,b){A.a2(b,a,a.length)
+return a[b]},
+$ij:1}
+A.c7.prototype={
+gt(a){return B.aa},
+m(a,b){A.a2(b,a,a.length)
+return a[b]},
+$ij:1}
+A.c8.prototype={
+gt(a){return B.ab},
+m(a,b){A.a2(b,a,a.length)
+return a[b]},
+$ij:1}
+A.c9.prototype={
+gt(a){return B.af},
+m(a,b){A.a2(b,a,a.length)
+return a[b]},
+$ij:1}
+A.ca.prototype={
+gt(a){return B.ag},
+m(a,b){A.a2(b,a,a.length)
+return a[b]},
+$ij:1}
+A.bd.prototype={
+gt(a){return B.ah},
+gl(a){return a.length},
+m(a,b){A.a2(b,a,a.length)
+return a[b]},
+$ij:1}
+A.cb.prototype={
+gt(a){return B.ai},
+gl(a){return a.length},
+m(a,b){A.a2(b,a,a.length)
+return a[b]},
+$ij:1}
+A.br.prototype={}
+A.bs.prototype={}
+A.bt.prototype={}
+A.bu.prototype={}
+A.N.prototype={
+h(a){return A.bF(v.typeUniverse,this,a)},
+A(a){return A.fL(v.typeUniverse,this,a)}}
+A.cC.prototype={}
+A.cL.prototype={
+i(a){return A.K(this.a,null)},
+$ifv:1}
+A.cA.prototype={
+i(a){return this.a}}
+A.bA.prototype={$ia0:1}
+A.dH.prototype={
+$1(a){var s=this.a,r=s.a
+s.a=null
+r.$0()},
+$S:5}
+A.dG.prototype={
+$1(a){var s,r
+this.a.a=a
+s=this.b
+r=this.c
+s.firstChild?s.removeChild(r):s.appendChild(r)},
+$S:11}
+A.dI.prototype={
+$0(){this.a.$0()},
+$S:6}
+A.dJ.prototype={
+$0(){this.a.$0()},
+$S:6}
+A.e7.prototype={
+bx(a,b){if(self.setTimeout!=null)self.setTimeout(A.cM(new A.e8(this,b),0),a)
+else throw A.f(A.fy("`setTimeout()` not found."))}}
+A.e8.prototype={
+$0(){this.b.$0()},
+$S:0}
+A.cx.prototype={}
+A.ec.prototype={
+$1(a){return this.a.$2(0,a)},
+$S:2}
+A.ed.prototype={
+$2(a,b){this.a.$2(1,new A.b_(a,b))},
+$S:12}
+A.ek.prototype={
+$2(a,b){this.a(a,b)},
+$S:13}
+A.aK.prototype={
+gk(){return this.b},
+bI(a,b){var s,r,q
+a=a
+b=b
+s=this.a
+for(;!0;)try{r=s(this,a,b)
+return r}catch(q){b=q
+a=1}},
+j(){var s,r,q,p,o=this,n=null,m=0
+for(;!0;){s=o.d
+if(s!=null)try{if(s.j()){o.b=s.gk()
+return!0}else o.d=null}catch(r){n=r
+m=1
+o.d=null}q=o.bI(m,n)
+if(1===q)return!0
+if(0===q){o.b=null
+p=o.e
+if(p==null||p.length===0){o.a=A.fG
+return!1}o.a=p.pop()
+m=0
+n=null
+continue}if(2===q){m=0
+n=null
+continue}if(3===q){n=o.c
+o.c=null
+p=o.e
+if(p==null||p.length===0){o.b=null
+o.a=A.fG
+throw n
+return!1}o.a=p.pop()
+m=1
+continue}throw A.f(A.i5("sync*"))}return!1},
+cC(a){var s,r,q=this
+if(a instanceof A.ap){s=a.a()
+r=q.e
+if(r==null)r=q.e=[]
+r.push(q.a)
+q.a=s
+return 2}else{q.d=J.ae(a)
+return 2}}}
+A.ap.prototype={
+gq(a){return new A.aK(this.a())}}
+A.O.prototype={
+i(a){return A.o(this.a)},
+$ir:1,
+gah(){return this.b}}
+A.aG.prototype={
+cd(a){if((this.c&15)!==6)return!0
+return this.b.b.aF(this.d,a.a)},
+c4(a){var s,r=this.e,q=null,p=a.a,o=this.b.b
+if(t.C.b(r))q=o.cp(r,p,a.b)
+else q=o.aF(r,p)
+try{p=q
+return p}catch(s){if(t.c.b(A.ad(s))){if((this.c&1)!==0)throw A.f(A.bL("The error handler of Future.then must return a value of the returned future's type","onError"))
+throw A.f(A.bL("The error handler of Future.catchError must return a value of the future's type","onError"))}else throw s}}}
+A.x.prototype={
+bh(a,b,c){var s,r=$.t
+if(r===B.a){if(!t.C.b(b)&&!t.w.b(b))throw A.f(A.fg(b,"onError",u.c))}else b=A.je(b,r)
+s=new A.x(r,c.h("x<0>"))
+this.am(new A.aG(s,3,a,b,this.$ti.h("@<1>").A(c).h("aG<1,2>")))
+return s},
+b3(a,b,c){var s=new A.x($.t,c.h("x<0>"))
+this.am(new A.aG(s,19,a,b,this.$ti.h("@<1>").A(c).h("aG<1,2>")))
+return s},
+bK(a){this.a=this.a&1|16
+this.c=a},
+a4(a){this.a=a.a&30|this.a&1
+this.c=a.c},
+am(a){var s=this,r=s.a
+if(r<=3){a.a=s.c
+s.c=a}else{if((r&4)!==0){r=s.c
+if((r.a&24)===0){r.am(a)
+return}s.a4(r)}A.aN(null,null,s.b,new A.dP(s,a))}},
+b1(a){var s,r,q,p,o,n=this,m={}
+m.a=a
+if(a==null)return
+s=n.a
+if(s<=3){r=n.c
+n.c=a
+if(r!=null){q=a.a
+for(p=a;q!=null;p=q,q=o)o=q.a
+p.a=r}}else{if((s&4)!==0){s=n.c
+if((s.a&24)===0){s.b1(a)
+return}n.a4(s)}m.a=n.a8(a)
+A.aN(null,null,n.b,new A.dT(m,n))}},
+a7(){var s=this.c
+this.c=null
+return this.a8(s)},
+a8(a){var s,r,q
+for(s=a,r=null;s!=null;r=s,s=q){q=s.a
+s.a=r}return r},
+aU(a){var s=this,r=s.a7()
+s.a=8
+s.c=a
+A.aH(s,r)},
+bz(a){var s,r,q=this
+if((a.a&16)!==0){s=q.b===a.b
+s=!(s||s)}else s=!1
+if(s)return
+r=q.a7()
+q.a4(a)
+A.aH(q,r)},
+ao(a){var s=this.a7()
+this.bK(a)
+A.aH(this,s)},
+aO(a){if(this.$ti.h("aw<1>").b(a)){this.aQ(a)
+return}this.by(a)},
+by(a){this.a^=2
+A.aN(null,null,this.b,new A.dR(this,a))},
+aQ(a){A.eF(a,this,!1)
+return},
+aP(a){this.a^=2
+A.aN(null,null,this.b,new A.dQ(this,a))},
+$iaw:1}
+A.dP.prototype={
+$0(){A.aH(this.a,this.b)},
+$S:0}
+A.dT.prototype={
+$0(){A.aH(this.b,this.a.a)},
+$S:0}
+A.dS.prototype={
+$0(){A.eF(this.a.a,this.b,!0)},
+$S:0}
+A.dR.prototype={
+$0(){this.a.aU(this.b)},
+$S:0}
+A.dQ.prototype={
+$0(){this.a.ao(this.b)},
+$S:0}
+A.dW.prototype={
+$0(){var s,r,q,p,o,n,m,l,k=this,j=null
+try{q=k.a.a
+j=q.b.b.cn(q.d)}catch(p){s=A.ad(p)
+r=A.ab(p)
+if(k.c&&k.b.a.c.a===s){q=k.a
+q.c=k.b.a.c}else{q=s
+o=r
+if(o==null)o=A.ew(q)
+n=k.a
+n.c=new A.O(q,o)
+q=n}q.b=!0
+return}if(j instanceof A.x&&(j.a&24)!==0){if((j.a&16)!==0){q=k.a
+q.c=j.c
+q.b=!0}return}if(j instanceof A.x){m=k.b.a
+l=new A.x(m.b,m.$ti)
+j.bh(new A.dX(l,m),new A.dY(l),t.H)
+q=k.a
+q.c=l
+q.b=!1}},
+$S:0}
+A.dX.prototype={
+$1(a){this.a.bz(this.b)},
+$S:5}
+A.dY.prototype={
+$2(a,b){this.a.ao(new A.O(a,b))},
+$S:14}
+A.dV.prototype={
+$0(){var s,r,q,p,o,n
+try{q=this.a
+p=q.a
+q.c=p.b.b.aF(p.d,this.b)}catch(o){s=A.ad(o)
+r=A.ab(o)
+q=s
+p=r
+if(p==null)p=A.ew(q)
+n=this.a
+n.c=new A.O(q,p)
+n.b=!0}},
+$S:0}
+A.dU.prototype={
+$0(){var s,r,q,p,o,n,m,l=this
+try{s=l.a.a.c
+p=l.b
+if(p.a.cd(s)&&p.a.e!=null){p.c=p.a.c4(s)
+p.b=!1}}catch(o){r=A.ad(o)
+q=A.ab(o)
+p=l.a.a.c
+if(p.a===r){n=l.b
+n.c=p
+p=n}else{p=r
+n=q
+if(n==null)n=A.ew(p)
+m=l.b
+m.c=new A.O(p,n)
+p=m}p.b=!0}},
+$S:0}
+A.cy.prototype={}
+A.cI.prototype={}
+A.eb.prototype={}
+A.ej.prototype={
+$0(){A.hE(this.a,this.b)},
+$S:0}
+A.e3.prototype={
+cr(a){var s,r,q
+try{if(B.a===$.t){a.$0()
+return}A.fV(null,null,this,a)}catch(q){s=A.ad(q)
+r=A.ab(q)
+A.ei(s,r)}},
+ct(a,b){var s,r,q
+try{if(B.a===$.t){a.$1(b)
+return}A.fW(null,null,this,a,b)}catch(q){s=A.ad(q)
+r=A.ab(q)
+A.ei(s,r)}},
+cu(a,b){a.toString
+return this.ct(a,b,t.z)},
+b8(a){return new A.e4(this,a)},
+bU(a,b){return new A.e5(this,a,b)},
+co(a){if($.t===B.a)return a.$0()
+return A.fV(null,null,this,a)},
+cn(a){a.toString
+return this.co(a,t.z)},
+cs(a,b){if($.t===B.a)return a.$1(b)
+return A.fW(null,null,this,a,b)},
+aF(a,b){var s=t.z
+a.toString
+return this.cs(a,b,s,s)},
+cq(a,b,c){if($.t===B.a)return a.$2(b,c)
+return A.jf(null,null,this,a,b,c)},
+cp(a,b,c){var s=t.z
+a.toString
+return this.cq(a,b,c,s,s,s)},
+ci(a){return a},
+bg(a){var s=t.z
+a.toString
+return this.ci(a,s,s,s)}}
+A.e4.prototype={
+$0(){return this.a.cr(this.b)},
+$S:0}
+A.e5.prototype={
+$1(a){return this.a.cu(this.b,a)},
+$S(){return this.c.h("~(0)")}}
+A.bo.prototype={
+gl(a){return this.a},
+ga_(){return new A.bp(this,A.u(this).h("bp<1>"))},
+R(a){var s=this.bC(a)
+return s},
+bC(a){var s=this.d
+if(s==null)return!1
+return this.C(this.aY(s,a),a)>=0},
+m(a,b){var s,r,q
+if(typeof b=="string"&&b!=="__proto__"){s=this.b
+r=s==null?null:A.eG(s,b)
+return r}else if(typeof b=="number"&&(b&1073741823)===b){q=this.c
+r=q==null?null:A.eG(q,b)
+return r}else return this.bE(b)},
+bE(a){var s,r,q=this.d
+if(q==null)return null
+s=this.aY(q,a)
+r=this.C(s,a)
+return r<0?null:s[r+1]},
+p(a,b,c){var s,r,q=this
+if(typeof b=="string"&&b!=="__proto__"){s=q.b
+q.aR(s==null?q.b=A.eH():s,b,c)}else if(typeof b=="number"&&(b&1073741823)===b){r=q.c
+q.aR(r==null?q.c=A.eH():r,b,c)}else q.bJ(b,c)},
+bJ(a,b){var s,r,q,p=this,o=p.d
+if(o==null)o=p.d=A.eH()
+s=p.D(a)
+r=o[s]
+if(r==null){A.eI(o,s,[a,b]);++p.a
+p.e=null}else{q=p.C(r,a)
+if(q>=0)r[q+1]=b
+else{r.push(a,b);++p.a
+p.e=null}}},
+B(a,b){var s=this
+if(typeof b=="string"&&b!=="__proto__")return s.M(s.b,b)
+else if(typeof b=="number"&&(b&1073741823)===b)return s.M(s.c,b)
+else return s.X(b)},
+X(a){var s,r,q,p,o=this,n=o.d
+if(n==null)return null
+s=o.D(a)
+r=n[s]
+q=o.C(r,a)
+if(q<0)return null;--o.a
+o.e=null
+p=r.splice(q,2)[1]
+if(0===r.length)delete n[s]
+return p},
+H(a,b){var s,r,q,p,o,n=this,m=n.aV()
+for(s=m.length,r=A.u(n).y[1],q=0;q"))}}
+A.cD.prototype={
+gk(){var s=this.d
+return s==null?this.$ti.c.a(s):s},
+j(){var s=this,r=s.b,q=s.c,p=s.a
+if(r!==p.e)throw A.f(A.V(p))
+else if(q>=r.length){s.d=null
+return!1}else{s.d=r[q]
+s.c=q+1
+return!0}}}
+A.bq.prototype={
+gq(a){return new A.a9(this,this.ap(),A.u(this).h("a9<1>"))},
+gl(a){return this.a},
+aB(a,b){var s,r
+if(typeof b=="string"&&b!=="__proto__"){s=this.b
+return s==null?!1:s[b]!=null}else if(typeof b=="number"&&(b&1073741823)===b){r=this.c
+return r==null?!1:r[b]!=null}else return this.bB(b)},
+bB(a){var s=this.d
+if(s==null)return!1
+return this.C(s[this.D(a)],a)>=0},
+P(a,b){var s,r,q=this
+if(typeof b=="string"&&b!=="__proto__"){s=q.b
+return q.W(s==null?q.b=A.eJ():s,b)}else if(typeof b=="number"&&(b&1073741823)===b){r=q.c
+return q.W(r==null?q.c=A.eJ():r,b)}else return q.al(b)},
+al(a){var s,r,q=this,p=q.d
+if(p==null)p=q.d=A.eJ()
+s=q.D(a)
+r=p[s]
+if(r==null)p[s]=[a]
+else{if(q.C(r,a)>=0)return!1
+r.push(a)}++q.a
+q.e=null
+return!0},
+B(a,b){var s=this
+if(typeof b=="string"&&b!=="__proto__")return s.M(s.b,b)
+else if(typeof b=="number"&&(b&1073741823)===b)return s.M(s.c,b)
+else return s.X(b)},
+X(a){var s,r,q,p=this,o=p.d
+if(o==null)return!1
+s=p.D(a)
+r=o[s]
+q=p.C(r,a)
+if(q<0)return!1;--p.a
+p.e=null
+r.splice(q,1)
+if(0===r.length)delete o[s]
+return!0},
+F(a){var s=this
+if(s.a>0){s.b=s.c=s.d=s.e=null
+s.a=0}},
+ap(){var s,r,q,p,o,n,m,l,k,j,i=this,h=i.e
+if(h!=null)return h
+h=A.eC(i.a,null,!1,t.z)
+s=i.b
+r=0
+if(s!=null){q=Object.getOwnPropertyNames(s)
+p=q.length
+for(o=0;o=r.length){s.d=null
+return!1}else{s.d=r[q]
+s.c=q+1
+return!0}}}
+A.am.prototype={
+gq(a){var s=this,r=new A.aI(s,s.r,A.u(s).h("aI<1>"))
+r.c=s.e
+return r},
+gl(a){return this.a},
+H(a,b){var s=this,r=s.e,q=s.r
+for(;r!=null;){b.$1(r.a)
+if(q!==s.r)throw A.f(A.V(s))
+r=r.b}},
+P(a,b){var s,r,q=this
+if(typeof b=="string"&&b!=="__proto__"){s=q.b
+return q.W(s==null?q.b=A.eK():s,b)}else if(typeof b=="number"&&(b&1073741823)===b){r=q.c
+return q.W(r==null?q.c=A.eK():r,b)}else return q.al(b)},
+al(a){var s,r,q=this,p=q.d
+if(p==null)p=q.d=A.eK()
+s=q.D(a)
+r=p[s]
+if(r==null)p[s]=[q.an(a)]
+else{if(q.C(r,a)>=0)return!1
+r.push(q.an(a))}return!0},
+B(a,b){var s=this
+if(typeof b=="string"&&b!=="__proto__")return s.M(s.b,b)
+else if(typeof b=="number"&&(b&1073741823)===b)return s.M(s.c,b)
+else return s.X(b)},
+X(a){var s,r,q,p,o=this,n=o.d
+if(n==null)return!1
+s=o.D(a)
+r=n[s]
+q=o.C(r,a)
+if(q<0)return!1
+p=r.splice(q,1)[0]
+if(0===r.length)delete n[s]
+o.aT(p)
+return!0},
+W(a,b){if(a[b]!=null)return!1
+a[b]=this.an(b)
+return!0},
+M(a,b){var s
+if(a==null)return!1
+s=a[b]
+if(s==null)return!1
+this.aT(s)
+delete a[b]
+return!0},
+aS(){this.r=this.r+1&1073741823},
+an(a){var s,r=this,q=new A.e0(a)
+if(r.e==null)r.e=r.f=q
+else{s=r.f
+s.toString
+q.c=s
+r.f=s.b=q}++r.a
+r.aS()
+return q},
+aT(a){var s=this,r=a.c,q=a.b
+if(r==null)s.e=q
+else r.b=q
+if(q==null)s.f=r
+else q.c=r;--s.a
+s.aS()},
+D(a){return J.B(a)&1073741823},
+C(a,b){var s,r
+if(a==null)return-1
+s=a.length
+for(r=0;r"))},
+G(a,b){return this.m(a,b)},
+i(a){return A.ez(a,"[","]")}}
+A.b9.prototype={
+H(a,b){var s,r,q,p
+for(s=this.ga_(),s=s.gq(s),r=A.u(this).y[1];s.j();){q=s.gk()
+p=this.m(0,q)
+b.$2(q,p==null?r.a(p):p)}},
+cb(a,b,c,d){var s,r,q,p,o,n=A.E(c,d)
+for(s=this.ga_(),s=s.gq(s),r=A.u(this).y[1];s.j();){q=s.gk()
+p=this.m(0,q)
+o=b.$2(q,p==null?r.a(p):p)
+n.p(0,o.a,o.b)}return n},
+ck(a,b){var s,r,q,p,o=this,n=A.u(o),m=A.b([],n.h("p<1>"))
+for(s=o.ga_(),s=s.gq(s),n=n.y[1];s.j();){r=s.gk()
+q=o.m(0,r)
+if(b.$2(r,q==null?n.a(q):q))m.push(r)}for(n=m.length,p=0;pr)s=": Not in inclusive range "+A.o(r)+".."+A.o(q)
+else s=q0)for(s=new A.aK(A.dh(m.childNodes).a());s.j();){r=s.b
+o=c.b
+if(o===c)A.M(A.P(""))
+o.append(r)}d.b=A.db(t.N)}else{c.b=s
+d.b=A.db(t.N)
+n=0
+while(!0){s=c.b
+if(s===c)A.M(A.P(""))
+if(!(n")
+r=A.fn(new A.X(a2,r),new A.cX(),r.h("k.E"),t.N).c9(0,"; ")}A.cR(s,"style",r)
+s=a3==null
+if(!s&&a3.a!==0)for(r=new A.X(a3,A.u(a3).h("X<1,2>")).gq(0);r.j();){l=r.d
+o=l.a
+k=o==="value"
+j=!1
+if(k){i=c.b
+if(i===c)A.M(A.P(""))
+if(i==null?!1:i instanceof $.fb())j=!J.q(i.value,l.b)}if(j){o=c.b
+if(o===c)A.M(A.P(""))
+o.value=l.b
+continue}j=!1
+if(k){k=c.b
+if(k===c)A.M(A.P(""))
+if(k==null?!1:k instanceof $.fc())k=!J.q(k.value,l.b)
+else k=j}else k=j
+if(k){o=c.b
+if(o===c)A.M(A.P(""))
+o.value=l.b
+continue}k=c.b
+if(k===c)A.M(A.P(""))
+A.cR(k,o,l.b)}r=d.J()
+o=["id","class","style"]
+s=s?e:new A.Y(a3,A.u(a3).h("Y<1>"))
+if(s!=null)B.b.E(o,s)
+r.cj(o)
+if(d.J().a!==0)for(s=d.J(),s=A.ih(s,s.r,A.u(s).c),r=s.$ti.c;s.j();){o=s.d
+if(o==null)o=r.a(o)
+k=c.b
+if(k===c)A.M(A.P(""))
+k.removeAttribute(o)}if(a4!=null&&a4.a!==0){s=f.c
+if(s==null)h=e
+else{r=A.u(s).h("Y<1>")
+h=A.hV(r.h("k.E"))
+h.E(0,new A.Y(s,r))}g=f.c
+if(g==null)g=f.c=A.E(t.N,t.M)
+a4.H(0,new A.cY(h,g,c))
+if(h!=null)h.H(0,new A.cZ(g))}else f.bY()},
+bk(a){var s,r,q,p,o,n,m=this
+$label0$0:{s=m.a
+if(s==null){r=m.d.b
+s=r.length
+if(s!==0)for(q=0;q0?n[r-1].as:l))break;--r}}}}finally{for(n=j.a,l=n.length,k=0;k")),s=s.c;p.j();){r=p.d;(r==null?s.a(r):r).cD(q)}q.y=null
+q.w=B.aj},
+aG(){var s=this
+s.gn()
+s.z=s.e=s.ay=null
+s.w=B.ak},
+aw(){var s=this.a
+this.y=s==null?null:s.y},
+bP(){var s=this.a
+this.x=s==null?null:s.x},
+bS(){var s=this.a
+this.b=s==null?null:s.b},
+cc(){var s=this
+if(s.w!==B.d)return
+if(s.as)return
+s.as=!0
+s.r.bm(s)},
+a1(){var s=this
+if(s.w!==B.d||!s.as)return
+s.r.toString
+s.U()
+new A.d1(s).$0()
+s.aa()},
+aa(){},
+Y(){this.K(new A.d0())},
+aH(a){var s,r=this
+r.cx=a
+r.cy=a==null?null:a.gO()
+s=r.a
+if(J.q(s==null?null:s.cx,r)){s=r.a
+s=s==null?null:s.gO()
+s=!J.q(s,r.gO())}else s=!1
+if(s)r.a.aH(r)},
+bj(a){this.ch=a
+this.b7(!1)
+this.db=!1},
+a5(){},
+b7(a){var s,r=this,q=r.ch
+if(q==null){s=r.a
+if(t.X.b(s))q=null
+else{s=s==null?null:s.CW
+q=s}}if(a||!J.q(q,r.CW)){r.CW=q
+r.a5()
+if(!t.X.b(r))r.K(new A.d_())}},
+gO(){return this.cy}}
+A.d2.prototype={
+$1(a){return a!=null&&this.a.aB(0,a)?null:a},
+$S:23}
+A.d1.prototype={
+$0(){var s,r,q=this.a,p=q.z
+if(p!=null&&p.a!==0)for(s=A.u(p),p=new A.a9(p,p.ap(),s.h("a9<1>")),s=s.c;p.j();){r=p.d;(r==null?s.a(r):r).cE(q)}},
+$S:0}
+A.d0.prototype={
+$1(a){a.Y()},
+$S:3}
+A.d_.prototype={
+$1(a){return a.b7(!0)},
+$S:3}
+A.cE.prototype={
+b6(a){a.K(new A.dZ(this))
+a.aG()},
+bO(){var s,r,q=this.a,p=A.dc(q,A.u(q).c)
+B.b.ag(p,A.f1())
+q.F(0)
+for(q=A.aq(p).h("bh<1>"),s=new A.bh(p,q),s=new A.a6(s,s.gl(0),q.h("a6")),q=q.h("Z.E");s.j();){r=s.d
+this.b6(r==null?q.a(r):r)}}}
+A.dZ.prototype={
+$1(a){this.a.b6(a)},
+$S:3}
+A.c0.prototype={}
+A.dd.prototype={}
+A.cu.prototype={
+L(a,b){if(b==null)return!1
+return J.ff(b)===A.G(this)&&this.$ti.b(b)&&b.a===this.a},
+gu(a){return A.hZ([A.G(this),this.a])},
+i(a){var s=this.$ti,r=s.c,q=this.a,p=A.L(r)===B.ae?"<'"+q+"'>":"<"+q+">"
+if(A.G(this)===A.L(s))return"["+p+"]"
+return"["+A.L(r).i(0)+" "+p+"]"}}
+A.a7.prototype={
+S(){return A.i0(this)}}
+A.aC.prototype={
+a0(a,b){this.a3(a,b)},
+v(){this.a1()
+this.ai()},
+V(a){return!0},
+U(){var s,r,q,p,o=this
+o.as=!1
+s=t.E.a(o.gn())
+r=s.c
+if(r==null){q=A.b([],t.i)
+p=s.b
+if(p!=null)q.push(p)
+r=q}q=o.dx
+if(q==null)q=A.b([],t.k)
+p=o.dy
+o.dx=o.bi(q,r,p)
+p.F(0)},
+K(a){var s,r,q=this.dx
+q=J.ae(q==null?[]:q)
+s=this.dy
+for(;q.j();){r=q.gk()
+if(!s.aB(0,r))a.$1(r)}}}
+A.b6.prototype={
+a0(a,b){this.a3(a,b)},
+v(){this.a1()
+this.ai()},
+V(a){return!1},
+U(){this.as=!1},
+K(a){}}
+A.dj.prototype={}
+A.bf.prototype={
+v(){var s,r,q=this
+if(q.d$==null){s=q.ay.d$
+s.toString
+r=new A.ah(A.b([],t.O))
+r.d=s
+q.d$=r
+q.aI()}q.bv()},
+a2(a){if(this.aJ(a))this.e$=!0
+this.ak(a)},
+Z(a){var s=this
+if(s.e$){s.e$=!1
+s.aI()}s.aj(a)},
+a5(){this.aM()
+this.aa()}}
+A.b7.prototype={
+v(){var s,r,q=this
+if(q.d$==null){s=q.ay.d$
+s.toString
+r=new A.ah(A.b([],t.O))
+r.d=s
+q.d$=r
+s=q.e
+s.toString
+r.bk(t.x.a(s).b)}q.bt()},
+a2(a){var s=this.e
+s.toString
+if(t.x.a(s).b!==a.b)this.e$=!0
+this.ak(a)},
+Z(a){var s,r,q=this
+if(q.e$){q.e$=!1
+s=q.d$
+s.toString
+r=q.e
+r.toString
+s.bk(t.x.a(r).b)}q.aj(a)},
+a5(){this.aM()
+this.aa()}}
+A.R.prototype={
+aJ(a){return!0},
+aa(){var s,r,q,p,o=this.ay
+if(o==null)s=null
+else{o=o.d$
+o.toString
+s=o}if(s!=null){r=this.CW
+while(!0){o=r==null
+if(!(!o&&r.gO()==null))break
+r=r.CW}q=o?null:r.gO()
+o=this.d$
+o.toString
+if(q==null)p=null
+else{p=q.d$
+p.toString}s.az(o,p)}},
+Y(){var s,r,q=this.ay
+if(q==null)s=null
+else{q=q.d$
+q.toString
+s=q}if(s!=null){q=this.d$
+r=q.a
+if(r!=null)r.parentNode.removeChild(r)
+q.d=null}},
+gO(){return this}}
+A.ck.prototype={
+S(){var s=new A.cr(A.E(t.S,t._),B.l),r=A.ax(t.h),q=($.I+1)%16777215
+$.I=q
+return s.c=new A.cl(s,r,q,this,B.c)}}
+A.ci.prototype={
+N(a){a.$0()
+this.c.cc()}}
+A.cl.prototype={
+b9(){return this.y1.ab(this)},
+v(){var s=this
+if(s.r.c)s.y1.toString
+s.bF()
+s.aK()},
+bF(){try{this.y1.toString}finally{}this.y1.toString},
+U(){var s=this
+s.r.toString
+if(s.bd){s.y1.toString
+s.bd=!1}s.aL()},
+V(a){this.y1.toString
+return!0},
+a2(a){this.ak(a)
+this.y1.toString},
+Z(a){try{this.y1.toString}finally{}this.aj(a)},
+T(){this.y1.toString
+this.br()},
+aG(){this.bs()
+this.y1=this.y1.c=null}}
+A.al.prototype={
+S(){var s=A.ax(t.h),r=($.I+1)%16777215
+$.I=r
+return new A.cm(s,r,this,B.c)}}
+A.cm.prototype={
+gn(){return t.q.a(A.d.prototype.gn.call(this))},
+v(){if(this.r.c)this.f.toString
+this.aK()},
+V(a){t.q.a(A.d.prototype.gn.call(this))
+return!0},
+b9(){return t.q.a(A.d.prototype.gn.call(this)).ab(this)},
+U(){this.r.toString
+this.aL()}}
+A.bK.prototype={
+ab(a){var s,r=null,q=t.i,p=A.f7(A.b([new A.A("Double-click to edit a todo",r)],q)),o=A.f7(A.b([new A.A("Created by the Dart team",r)],q)),n=A.b([new A.A("TodoMVC",r)],q),m=t.N,l=A.da(A.E(m,m),m,m)
+l.p(0,"href","http://todomvc.com")
+m=A.E(m,t.v)
+s=t.z
+m.E(0,A.f0().$2$1$onClick(r,s,s))
+return A.b([new A.cq(r),A.h1(A.b([p,o,A.f7(A.b([new A.A("Part of ",r),new A.w("a",r,r,r,l,m,r,n,r)],q))],q),"info",r)],q)}}
+A.cq.prototype={}
+A.aY.prototype={
+a6(){return"DisplayState."+this.b}}
+A.cr.prototype={
+bR(a){this.N(new A.ds(this,a))},
+cv(a){this.N(new A.dC(this,a))},
+cw(){this.N(new A.dB(this))},
+c1(a){this.N(new A.dz(this,a))},
+bX(){this.N(new A.dy(this))},
+bn(a){this.N(new A.dA(this,a))},
+ab(a7){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e=this,d=null,c="none;",b="block;",a="toggle-all",a0=t.N,a1=A.Q(["data-testid","header"],a0,a0),a2=t.i,a3=A.b([new A.w("h1",d,d,d,d,d,d,A.b([new A.A("todos",d)],a2),d),A.f_(A.b([new A.cc(e.gbQ(),d)],a2),"input-container")],a2),a4=e.d,a5=A.Q(["display",a4.a===0?c:b],a0,a0),a6=e.f>0?d:A.Q(["checked",""],a0,a0)
+a6=A.f4(A.b([],a2),a6,a,a,d,new A.dt(e),B.f,d)
+s=A.Q(["for","toggle-all"],a0,a0)
+s=A.f_(A.b([a6,A.h4(A.b([new A.A("Mark all as complete",d)],a2),s,"toggle-all-label")],a2),"toggle-all-container")
+a6=A.b([],a2)
+for(r=A.hX(a4,t.S,t._),q=r.a,p=A.u(r),r=new A.aA(q.gq(q),r.b,p.h("aA<1,2>")),p=p.y[1],q=t.Y;r.j();){o={}
+n=r.a
+if(n==null)n=p.a(n)
+o.a=null
+m=n.a
+o.a=m
+l=n.b
+k=l.a
+if(!(k&&e.r!==B.n))n=!k&&e.r!==B.m
+else n=!0
+if(n){n=k?"":"completed"
+j=""+m
+i=A.Q(["data-id",j],a0,a0)
+h=k?d:A.Q(["checked",""],a0,a0)
+a6.push(A.h5(A.b([A.f_(A.b([A.f4(A.b([],a2),h,"toggle",d,new A.cu(j+"-"+k,q),new A.du(o,e),B.f,d),A.h4(A.b([new A.A(l.b,d)],a2),d,d),A.h0(A.b([],a2),"destroy",new A.dv(o,e),d)],a2),"view")],a2),i,n))}}a6=A.b([s,A.hb(a6,"todo-list")],a2)
+s=A.Q(["display",a4.a===0?c:b],a0,a0)
+r=A.b([new A.A(""+e.f,d)],a2)
+q=e.f===1?"":"s"
+q=A.ha(A.b([new A.w("strong",d,d,d,d,d,d,r,d),new A.A(" item"+q+" left",d)],a2),"todo-count",d)
+r=A.b([],a2)
+for(p=[B.a1,B.a0,B.a2],o=t.v,g=0;g<3;++g){n={}
+j=p[g]
+n.a=null
+f=j.b
+n.a=f
+i=e.r===f?"selected":""
+n=A.Q(["click",new A.dw(n,e)],a0,o)
+r.push(A.h5(A.b([A.ha(A.b([new A.A(j.a,d)],a2),i,n)],a2),d,d))}r=A.hb(r,"filters")
+a0=A.Q(["display",a4.a-e.f===0?c:b],a0,a0)
+return A.b([new A.w("section","root","todoapp",d,d,d,d,A.b([new A.w("header",d,"header",d,a1,d,d,a3,d),new A.w("main",d,"main",new A.bv(a5),d,d,d,a6,d),A.h1(A.b([q,r,A.h0(A.b([new A.A("Clear completed",d)],a2),"clear-completed",e.gbW(),new A.bv(a0))],a2),"footer",new A.bv(s))],a2),d)],a2)}}
+A.ds.prototype={
+$0(){var s=this.a
+s.d.p(0,++s.e,new A.aJ(!0,this.b));++s.f},
+$S:0}
+A.dC.prototype={
+$0(){var s=this.a,r=s.d,q=this.b,p=r.m(0,q),o=p.a
+r.p(0,q,new A.aJ(!o,p.b))
+r=s.f
+if(o)s.f=r-1
+else s.f=r+1},
+$S:0}
+A.dB.prototype={
+$0(){var s,r,q,p,o
+for(s=this.a,r=s.d,q=new A.b8(r,r.r,r.e);q.j();){p=q.d
+o=r.m(0,p).b
+r.p(0,p,new A.aJ(s.f===0,o))}s.f=s.f===0?r.a:0},
+$S:0}
+A.dz.prototype={
+$0(){var s=this.a
+if(s.d.B(0,this.b).a)--s.f},
+$S:0}
+A.dy.prototype={
+$0(){this.a.d.ck(0,new A.dx())},
+$S:0}
+A.dx.prototype={
+$2(a,b){return!b.a},
+$S:24}
+A.dA.prototype={
+$0(){this.a.r=this.b},
+$S:0}
+A.dt.prototype={
+$1(a){return this.a.cw()},
+$S:2}
+A.du.prototype={
+$1(a){return this.b.cv(this.a.a)},
+$S:2}
+A.dv.prototype={
+$0(){return this.b.c1(this.a.a)},
+$S:0}
+A.dw.prototype={
+$1(a){return this.b.bn(this.a.a)},
+$S:1}
+A.cc.prototype={
+ab(a){var s,r=t.N
+r=A.Q(["placeholder","What needs to be done?"],r,r)
+s=t.i
+return A.b([A.f4(A.b([],s),r,"new-todo",null,null,new A.dg(this),null,"")],s)}}
+A.dg.prototype={
+$1(a){return this.a.c.$1(A.fO(a))},
+$S:2}
+A.df.prototype={
+$1(a){return new A.ao(a.a,a.b)},
+$S(){return this.a.h("@<0>").A(this.b).h("+(1,2)(F<1,2>)")}}
+A.ex.prototype={}
+A.cB.prototype={
+bV(){var s,r,q=this,p=new A.x($.t,t.D)
+p.aO(null)
+s=q.b
+if(s==null)return p
+r=q.d
+if(r!=null)s.removeEventListener(q.c,r,!1)
+q.d=q.b=null
+return p}}
+A.dN.prototype={
+$1(a){return this.a.$1(a)},
+$S:1};(function aliases(){var s=J.a5.prototype
+s.bu=s.i
+s=A.ah.prototype
+s.bp=s.az
+s=A.aW.prototype
+s.aK=s.v
+s.aL=s.U
+s=A.bR.prototype
+s.bo=s.aA
+s=A.d.prototype
+s.a3=s.a0
+s.ai=s.v
+s.ak=s.a2
+s.aj=s.Z
+s.br=s.T
+s.bs=s.aG
+s.bq=s.aw
+s.aM=s.a5
+s=A.aC.prototype
+s.bv=s.v
+s=A.b6.prototype
+s.bt=s.v})();(function installTearOffs(){var s=hunkHelpers._static_2,r=hunkHelpers._static_1,q=hunkHelpers._static_0,p=hunkHelpers.installStaticTearOff,o=hunkHelpers._instance_0u,n=hunkHelpers._instance_1u
+s(J,"j_","hS",25)
+r(A,"jp","ib",4)
+r(A,"jq","ic",4)
+r(A,"jr","id",4)
+q(A,"h_","jj",0)
+p(A,"f0",0,null,["$2$3$onChange$onClick$onInput","$0","$2$0","$2$1$onClick","$2$2$onChange$onInput"],["cN",function(){var l=t.z
+return A.cN(null,null,null,l,l)},function(a,b){return A.cN(null,null,null,a,b)},function(a,b,c){return A.cN(null,a,null,b,c)},function(a,b,c,d){return A.cN(a,null,b,c,d)}],26,0)
+o(A.ch.prototype,"gbZ","c_",0)
+s(A,"f1","hC",27)
+r(A,"en","ig",3)
+o(A.bP.prototype,"gce","cf",0)
+o(A.cE.prototype,"gbN","bO",0)
+var m
+n(m=A.cr.prototype,"gbQ","bR",7)
+o(m,"gbW","bX",0)})();(function inheritance(){var s=hunkHelpers.mixin,r=hunkHelpers.mixinHard,q=hunkHelpers.inherit,p=hunkHelpers.inheritMany
+q(A.h,null)
+p(A.h,[A.eA,J.bW,A.bi,J.bM,A.k,A.bQ,A.r,A.dm,A.a6,A.aA,A.cv,A.b0,A.bw,A.bT,A.dD,A.di,A.b_,A.bz,A.ag,A.b9,A.d9,A.b8,A.c1,A.dK,A.N,A.cC,A.cL,A.e7,A.cx,A.aK,A.O,A.aG,A.x,A.cy,A.cI,A.eb,A.cD,A.ak,A.a9,A.e0,A.aI,A.m,A.dM,A.bk,A.dO,A.F,A.D,A.cJ,A.cn,A.cw,A.dj,A.av,A.ch,A.cF,A.dF,A.bB,A.cK,A.co,A.bP,A.d,A.bR,A.C,A.cE,A.c0,A.R,A.ci,A.ex,A.cB])
+p(J.bW,[J.bY,J.b2,J.b4,J.b3,J.b5,J.ay,J.az])
+p(J.b4,[J.a5,J.p,A.c2,A.bc])
+p(J.a5,[J.cd,J.aD,J.a4])
+q(J.bX,A.bi)
+q(J.d7,J.p)
+p(J.ay,[J.b1,J.bZ])
+p(A.k,[A.aE,A.c,A.aj,A.bm,A.ap])
+q(A.bG,A.aE)
+q(A.bn,A.bG)
+q(A.af,A.bn)
+p(A.r,[A.ai,A.a0,A.c_,A.ct,A.cg,A.cA,A.bN,A.U,A.bl,A.cs,A.cj,A.bS])
+p(A.c,[A.Z,A.Y,A.X,A.bp])
+q(A.aZ,A.aj)
+q(A.bh,A.Z)
+q(A.cG,A.bw)
+p(A.cG,[A.ao,A.aJ])
+q(A.aX,A.bT)
+q(A.be,A.a0)
+p(A.ag,[A.cU,A.cV,A.dr,A.ep,A.er,A.dH,A.dG,A.ec,A.dX,A.e5,A.cX,A.cZ,A.d4,A.em,A.eg,A.ee,A.d2,A.d0,A.d_,A.dZ,A.dt,A.du,A.dw,A.dg,A.df,A.dN])
+p(A.dr,[A.dn,A.aV])
+p(A.b9,[A.W,A.bo])
+p(A.cV,[A.d8,A.eq,A.ed,A.ek,A.dY,A.d5,A.de,A.cW,A.cY,A.eh,A.dx])
+p(A.bc,[A.c3,A.aB])
+p(A.aB,[A.br,A.bt])
+q(A.bs,A.br)
+q(A.ba,A.bs)
+q(A.bu,A.bt)
+q(A.bb,A.bu)
+p(A.ba,[A.c4,A.c5])
+p(A.bb,[A.c6,A.c7,A.c8,A.c9,A.ca,A.bd,A.cb])
+q(A.bA,A.cA)
+p(A.cU,[A.dI,A.dJ,A.e8,A.dP,A.dT,A.dS,A.dR,A.dQ,A.dW,A.dV,A.dU,A.ej,A.e4,A.ef,A.dl,A.cT,A.d1,A.ds,A.dC,A.dB,A.dz,A.dy,A.dA,A.dv])
+q(A.e3,A.eb)
+q(A.by,A.ak)
+p(A.by,[A.bq,A.am])
+p(A.U,[A.bg,A.bV])
+q(A.cQ,A.cw)
+q(A.cz,A.cQ)
+q(A.cS,A.cz)
+q(A.ah,A.dj)
+q(A.dk,A.ah)
+p(A.dM,[A.n,A.bj,A.aF,A.aY])
+p(A.bB,[A.dL,A.e2])
+q(A.dp,A.cK)
+p(A.dp,[A.e6,A.bv])
+p(A.d,[A.aW,A.aC,A.b6])
+p(A.C,[A.a7,A.A,A.ck,A.al])
+p(A.a7,[A.cH,A.w])
+q(A.bf,A.aC)
+p(A.bf,[A.bx,A.bU])
+q(A.b7,A.b6)
+q(A.cp,A.b7)
+q(A.dd,A.c0)
+q(A.cu,A.dd)
+p(A.aW,[A.cl,A.cm])
+p(A.al,[A.bK,A.cc])
+q(A.cq,A.ck)
+q(A.cr,A.ci)
+s(A.bG,A.m)
+s(A.br,A.m)
+s(A.bs,A.b0)
+s(A.bt,A.m)
+s(A.bu,A.b0)
+s(A.cz,A.bR)
+s(A.cw,A.ch)
+s(A.cK,A.co)
+r(A.bf,A.R)
+r(A.b7,A.R)})()
+var v={G:typeof self!="undefined"?self:globalThis,typeUniverse:{eC:new Map(),tR:{},eT:{},tPV:{},sEA:[]},mangledGlobalNames:{a:"int",v:"double",h6:"num",e:"String",T:"bool",D:"Null",i:"List",h:"Object",fm:"Map"},mangledNames:{},types:["~()","~(l)","~(@)","~(d)","~(~())","D(@)","D()","~(e)","@(@)","@(@,e)","@(e)","D(~())","D(@,a8)","~(a,@)","D(h,a8)","~(@,@)","~(h?,h?)","~(e,av)","e(F)","~(e,~(l))","h?()","T(n)","F(e,e)","d?(d?)","T(a,+isActive,todo(T,e))","a(@,@)","fm({onChange:~(1^)?,onClick:~()?,onInput:~(0^)?})","a(d,d)"],interceptorsByTag:null,leafTags:null,arrayRti:Symbol("$ti"),rttc:{"2;":(a,b)=>c=>c instanceof A.ao&&a.b(c.a)&&b.b(c.b),"2;isActive,todo":(a,b)=>c=>c instanceof A.aJ&&a.b(c.a)&&b.b(c.b)}}
+A.ix(v.typeUniverse,JSON.parse('{"cd":"a5","aD":"a5","a4":"a5","bY":{"T":[],"j":[]},"b2":{"j":[]},"b4":{"l":[]},"a5":{"l":[]},"p":{"i":["1"],"c":["1"],"l":[]},"bX":{"bi":[]},"d7":{"p":["1"],"i":["1"],"c":["1"],"l":[]},"ay":{"v":[]},"b1":{"v":[],"a":[],"j":[]},"bZ":{"v":[],"j":[]},"az":{"e":[],"j":[]},"aE":{"k":["2"]},"bn":{"m":["2"],"i":["2"],"aE":["1","2"],"c":["2"],"k":["2"]},"af":{"bn":["1","2"],"m":["2"],"i":["2"],"aE":["1","2"],"c":["2"],"k":["2"],"m.E":"2","k.E":"2"},"ai":{"r":[]},"c":{"k":["1"]},"Z":{"c":["1"],"k":["1"]},"aj":{"k":["2"],"k.E":"2"},"aZ":{"aj":["1","2"],"c":["2"],"k":["2"],"k.E":"2"},"bm":{"k":["1"],"k.E":"1"},"bh":{"Z":["1"],"c":["1"],"k":["1"],"k.E":"1","Z.E":"1"},"aX":{"bT":["1","2"]},"be":{"a0":[],"r":[]},"c_":{"r":[]},"ct":{"r":[]},"bz":{"a8":[]},"cg":{"r":[]},"W":{"b9":["1","2"]},"Y":{"c":["1"],"k":["1"],"k.E":"1"},"X":{"c":["F<1,2>"],"k":["F<1,2>"],"k.E":"F<1,2>"},"c2":{"l":[],"j":[]},"bc":{"l":[]},"c3":{"l":[],"j":[]},"aB":{"J":["1"],"l":[]},"ba":{"m":["v"],"i":["v"],"J":["v"],"c":["v"],"l":[]},"bb":{"m":["a"],"i":["a"],"J":["a"],"c":["a"],"l":[]},"c4":{"m":["v"],"i":["v"],"J":["v"],"c":["v"],"l":[],"j":[],"m.E":"v"},"c5":{"m":["v"],"i":["v"],"J":["v"],"c":["v"],"l":[],"j":[],"m.E":"v"},"c6":{"m":["a"],"i":["a"],"J":["a"],"c":["a"],"l":[],"j":[],"m.E":"a"},"c7":{"m":["a"],"i":["a"],"J":["a"],"c":["a"],"l":[],"j":[],"m.E":"a"},"c8":{"m":["a"],"i":["a"],"J":["a"],"c":["a"],"l":[],"j":[],"m.E":"a"},"c9":{"m":["a"],"i":["a"],"J":["a"],"c":["a"],"l":[],"j":[],"m.E":"a"},"ca":{"m":["a"],"i":["a"],"J":["a"],"c":["a"],"l":[],"j":[],"m.E":"a"},"bd":{"m":["a"],"i":["a"],"J":["a"],"c":["a"],"l":[],"j":[],"m.E":"a"},"cb":{"m":["a"],"i":["a"],"J":["a"],"c":["a"],"l":[],"j":[],"m.E":"a"},"cL":{"fv":[]},"cA":{"r":[]},"bA":{"a0":[],"r":[]},"ap":{"k":["1"],"k.E":"1"},"O":{"r":[]},"x":{"aw":["1"]},"bo":{"b9":["1","2"]},"bp":{"c":["1"],"k":["1"],"k.E":"1"},"bq":{"ak":["1"],"c":["1"]},"am":{"ak":["1"],"c":["1"]},"ak":{"c":["1"]},"by":{"ak":["1"],"c":["1"]},"i":{"c":["1"]},"bN":{"r":[]},"a0":{"r":[]},"U":{"r":[]},"bg":{"r":[]},"bV":{"r":[]},"bl":{"r":[]},"cs":{"r":[]},"cj":{"r":[]},"bS":{"r":[]},"bk":{"r":[]},"cJ":{"a8":[]},"iA":{"w":[],"a7":[],"C":[]},"hK":{"d":[]},"aW":{"d":[]},"cH":{"a7":[],"C":[]},"bx":{"R":[],"d":[]},"w":{"a7":[],"C":[]},"bU":{"R":[],"d":[]},"A":{"C":[]},"cp":{"R":[],"d":[]},"a7":{"C":[]},"aC":{"d":[]},"b6":{"d":[]},"bf":{"R":[],"d":[]},"b7":{"R":[],"d":[]},"ck":{"C":[]},"cl":{"d":[]},"al":{"C":[]},"cm":{"d":[]},"bK":{"al":[],"C":[]},"cq":{"C":[]},"cc":{"al":[],"C":[]},"hN":{"i":["a"],"c":["a"]},"i9":{"i":["a"],"c":["a"]},"i8":{"i":["a"],"c":["a"]},"hL":{"i":["a"],"c":["a"]},"i6":{"i":["a"],"c":["a"]},"hM":{"i":["a"],"c":["a"]},"i7":{"i":["a"],"c":["a"]},"hG":{"i":["v"],"c":["v"]},"hH":{"i":["v"],"c":["v"]}}'))
+A.iw(v.typeUniverse,JSON.parse('{"cv":1,"b0":1,"bG":2,"b8":1,"aB":1,"aK":1,"cI":1,"by":1,"co":1,"ci":1,"cB":1}'))
+var u={c:"Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type"}
+var t=(function rtii(){var s=A.cO
+return{e:s("C"),J:s("w"),U:s("c<@>"),h:s("d"),Q:s("r"),M:s("av"),Z:s("jP"),r:s("hK"),i:s("p"),k:s("p"),O:s("p"),f:s("p"),s:s("p"),b:s("p<@>"),u:s("p<~()>"),T:s("b2"),m:s("l"),g:s("a4"),p:s("J<@>"),B:s("c0"),j:s("i<@>"),W:s("F"),P:s("D"),K:s("h"),E:s("a7"),L:s("jQ"),t:s("+()"),_:s("+isActive,todo(T,e)"),X:s("R"),l:s("a8"),q:s("al"),N:s("e"),x:s("A"),A:s("j"),G:s("fv"),c:s("a0"),o:s("aD"),Y:s("cu"),a:s("bm"),aY:s("x<@>"),D:s("x<~>"),F:s("ap"),y:s("T"),V:s("v"),z:s("@"),w:s("@(h)"),C:s("@(h,a8)"),S:s("a"),d:s("d?"),bc:s("aw?"),R:s("h?"),aD:s("e?"),cG:s("T?"),I:s("v?"),a3:s("a?"),ae:s("h6?"),n:s("h6"),H:s("~"),aI:s("~()"),v:s("~(l)")}})();(function constants(){var s=hunkHelpers.makeConstList
+B.V=J.bW.prototype
+B.b=J.p.prototype
+B.u=J.b1.prototype
+B.h=J.ay.prototype
+B.W=J.a4.prototype
+B.X=J.b4.prototype
+B.v=J.cd.prototype
+B.i=J.aD.prototype
+B.j=function getTagFallback(o) {
+ var s = Object.prototype.toString.call(o);
+ return s.substring(8, s.length - 1);
+}
+B.y=function() {
+ var toStringFunction = Object.prototype.toString;
+ function getTag(o) {
+ var s = toStringFunction.call(o);
+ return s.substring(8, s.length - 1);
+ }
+ function getUnknownTag(object, tag) {
+ if (/^HTML[A-Z].*Element$/.test(tag)) {
+ var name = toStringFunction.call(object);
+ if (name == "[object Object]") return null;
+ return "HTMLElement";
+ }
+ }
+ function getUnknownTagGenericBrowser(object, tag) {
+ if (object instanceof HTMLElement) return "HTMLElement";
+ return getUnknownTag(object, tag);
+ }
+ function prototypeForTag(tag) {
+ if (typeof window == "undefined") return null;
+ if (typeof window[tag] == "undefined") return null;
+ var constructor = window[tag];
+ if (typeof constructor != "function") return null;
+ return constructor.prototype;
+ }
+ function discriminator(tag) { return null; }
+ var isBrowser = typeof HTMLElement == "function";
+ return {
+ getTag: getTag,
+ getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag,
+ prototypeForTag: prototypeForTag,
+ discriminator: discriminator };
+}
+B.D=function(getTagFallback) {
+ return function(hooks) {
+ if (typeof navigator != "object") return hooks;
+ var userAgent = navigator.userAgent;
+ if (typeof userAgent != "string") return hooks;
+ if (userAgent.indexOf("DumpRenderTree") >= 0) return hooks;
+ if (userAgent.indexOf("Chrome") >= 0) {
+ function confirm(p) {
+ return typeof window == "object" && window[p] && window[p].name == p;
+ }
+ if (confirm("Window") && confirm("HTMLElement")) return hooks;
+ }
+ hooks.getTag = getTagFallback;
+ };
+}
+B.z=function(hooks) {
+ if (typeof dartExperimentalFixupGetTag != "function") return hooks;
+ hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag);
+}
+B.C=function(hooks) {
+ if (typeof navigator != "object") return hooks;
+ var userAgent = navigator.userAgent;
+ if (typeof userAgent != "string") return hooks;
+ if (userAgent.indexOf("Firefox") == -1) return hooks;
+ var getTag = hooks.getTag;
+ var quickMap = {
+ "BeforeUnloadEvent": "Event",
+ "DataTransfer": "Clipboard",
+ "GeoGeolocation": "Geolocation",
+ "Location": "!Location",
+ "WorkerMessageEvent": "MessageEvent",
+ "XMLDocument": "!Document"};
+ function getTagFirefox(o) {
+ var tag = getTag(o);
+ return quickMap[tag] || tag;
+ }
+ hooks.getTag = getTagFirefox;
+}
+B.B=function(hooks) {
+ if (typeof navigator != "object") return hooks;
+ var userAgent = navigator.userAgent;
+ if (typeof userAgent != "string") return hooks;
+ if (userAgent.indexOf("Trident/") == -1) return hooks;
+ var getTag = hooks.getTag;
+ var quickMap = {
+ "BeforeUnloadEvent": "Event",
+ "DataTransfer": "Clipboard",
+ "HTMLDDElement": "HTMLElement",
+ "HTMLDTElement": "HTMLElement",
+ "HTMLPhraseElement": "HTMLElement",
+ "Position": "Geoposition"
+ };
+ function getTagIE(o) {
+ var tag = getTag(o);
+ var newTag = quickMap[tag];
+ if (newTag) return newTag;
+ if (tag == "Object") {
+ if (window.DataView && (o instanceof window.DataView)) return "DataView";
+ }
+ return tag;
+ }
+ function prototypeForTagIE(tag) {
+ var constructor = window[tag];
+ if (constructor == null) return null;
+ return constructor.prototype;
+ }
+ hooks.getTag = getTagIE;
+ hooks.prototypeForTag = prototypeForTagIE;
+}
+B.A=function(hooks) {
+ var getTag = hooks.getTag;
+ var prototypeForTag = hooks.prototypeForTag;
+ function getTagFixed(o) {
+ var tag = getTag(o);
+ if (tag == "Document") {
+ if (!!o.xmlVersion) return "!Document";
+ return "!HTMLDocument";
+ }
+ return tag;
+ }
+ function prototypeForTagFixed(tag) {
+ if (tag == "Document") return null;
+ return prototypeForTag(tag);
+ }
+ hooks.getTag = getTagFixed;
+ hooks.prototypeForTag = prototypeForTagFixed;
+}
+B.k=function(hooks) { return hooks; }
+
+B.e=new A.dm()
+B.a=new A.e3()
+B.E=new A.cJ()
+B.l=new A.aY("all")
+B.m=new A.aY("active")
+B.n=new A.aY("completed")
+B.o=new A.n("datetime-local","dateTimeLocal")
+B.f=new A.n("checkbox","checkbox")
+B.p=new A.n("date","date")
+B.q=new A.n("file","file")
+B.r=new A.n("number","number")
+B.t=new A.n("radio","radio")
+B.F=new A.n("button","button")
+B.G=new A.n("color","color")
+B.H=new A.n("email","email")
+B.I=new A.n("hidden","hidden")
+B.J=new A.n("image","image")
+B.K=new A.n("month","month")
+B.L=new A.n("password","password")
+B.M=new A.n("range","range")
+B.N=new A.n("reset","reset")
+B.O=new A.n("search","search")
+B.P=new A.n("submit","submit")
+B.Q=new A.n("tel","tel")
+B.R=new A.n("text","text")
+B.S=new A.n("time","time")
+B.T=new A.n("url","url")
+B.U=new A.n("week","week")
+B.Y=A.b(s([B.F,B.f,B.G,B.p,B.o,B.H,B.q,B.I,B.J,B.K,B.r,B.L,B.t,B.M,B.N,B.O,B.P,B.Q,B.R,B.S,B.T,B.U]),A.cO("p"))
+B.a_={svg:0,math:1}
+B.Z=new A.aX(B.a_,["http://www.w3.org/2000/svg","http://www.w3.org/1998/Math/MathML"],A.cO("aX"))
+B.a0=new A.ao("Active",B.m)
+B.a1=new A.ao("All",B.l)
+B.a2=new A.ao("Completed",B.n)
+B.w=new A.bj("idle")
+B.a3=new A.bj("midFrameCallback")
+B.a4=new A.bj("postFrameCallbacks")
+B.a5=A.H("jM")
+B.a6=A.H("jN")
+B.a7=A.H("hG")
+B.a8=A.H("hH")
+B.a9=A.H("hL")
+B.aa=A.H("hM")
+B.ab=A.H("hN")
+B.ac=A.H("l")
+B.ad=A.H("h")
+B.ae=A.H("e")
+B.af=A.H("i6")
+B.ag=A.H("i7")
+B.ah=A.H("i8")
+B.ai=A.H("i9")
+B.x=A.H("iA")
+B.c=new A.aF("initial")
+B.d=new A.aF("active")
+B.aj=new A.aF("inactive")
+B.ak=new A.aF("defunct")
+B.al=new A.cF("red")
+B.am=new A.cF("yellow")})();(function staticFields(){$.e_=null
+$.au=A.b([],t.f)
+$.fq=null
+$.fj=null
+$.fi=null
+$.h2=null
+$.fZ=null
+$.h9=null
+$.el=null
+$.es=null
+$.f3=null
+$.e1=A.b([],A.cO("p?>"))
+$.aM=null
+$.bH=null
+$.bI=null
+$.eS=!1
+$.t=B.a
+$.I=1})();(function lazyInitializers(){var s=hunkHelpers.lazyFinal
+s($,"jO","f9",()=>A.jx("_$dart_dartClosure"))
+s($,"ka","hq",()=>A.b([new J.bX()],A.cO("p")))
+s($,"jS","hd",()=>A.a1(A.dE({
+toString:function(){return"$receiver$"}})))
+s($,"jT","he",()=>A.a1(A.dE({$method$:null,
+toString:function(){return"$receiver$"}})))
+s($,"jU","hf",()=>A.a1(A.dE(null)))
+s($,"jV","hg",()=>A.a1(function(){var $argumentsExpr$="$arguments$"
+try{null.$method$($argumentsExpr$)}catch(r){return r.message}}()))
+s($,"jY","hj",()=>A.a1(A.dE(void 0)))
+s($,"jZ","hk",()=>A.a1(function(){var $argumentsExpr$="$arguments$"
+try{(void 0).$method$($argumentsExpr$)}catch(r){return r.message}}()))
+s($,"jX","hi",()=>A.a1(A.fw(null)))
+s($,"jW","hh",()=>A.a1(function(){try{null.$method$}catch(r){return r.message}}()))
+s($,"k0","hm",()=>A.a1(A.fw(void 0)))
+s($,"k_","hl",()=>A.a1(function(){try{(void 0).$method$}catch(r){return r.message}}()))
+s($,"k1","fa",()=>A.ia())
+s($,"k9","cP",()=>A.h7(B.ad))
+s($,"k2","eu",()=>A.aL(A.aS(),"Element"))
+s($,"k4","fb",()=>A.aL(A.aS(),"HTMLInputElement"))
+s($,"k3","hn",()=>A.aL(A.aS(),"HTMLAnchorElement"))
+s($,"k6","fc",()=>A.aL(A.aS(),"HTMLSelectElement"))
+s($,"k7","hp",()=>A.aL(A.aS(),"HTMLTextAreaElement"))
+s($,"k5","ho",()=>A.aL(A.aS(),"HTMLOptionElement"))
+s($,"k8","fd",()=>A.aL(A.aS(),"Text"))})();(function nativeSupport(){!function(){var s=function(a){var m={}
+m[a]=1
+return Object.keys(hunkHelpers.convertToFastObject(m))[0]}
+v.getIsolateTag=function(a){return s("___dart_"+a+v.isolateTag)}
+var r="___dart_isolate_tags_"
+var q=Object[r]||(Object[r]=Object.create(null))
+var p="_ZxYxX"
+for(var o=0;;o++){var n=s(p+"_"+o+"_")
+if(!(n in q)){q[n]=1
+v.isolateTag=n
+break}}v.dispatchPropertyName=v.getIsolateTag("dispatch_record")}()
+hunkHelpers.setOrUpdateInterceptorsByTag({ArrayBuffer:A.c2,ArrayBufferView:A.bc,DataView:A.c3,Float32Array:A.c4,Float64Array:A.c5,Int16Array:A.c6,Int32Array:A.c7,Int8Array:A.c8,Uint16Array:A.c9,Uint32Array:A.ca,Uint8ClampedArray:A.bd,CanvasPixelArray:A.bd,Uint8Array:A.cb})
+hunkHelpers.setOrUpdateLeafTags({ArrayBuffer:true,ArrayBufferView:false,DataView:true,Float32Array:true,Float64Array:true,Int16Array:true,Int32Array:true,Int8Array:true,Uint16Array:true,Uint32Array:true,Uint8ClampedArray:true,CanvasPixelArray:true,Uint8Array:false})
+A.aB.$nativeSuperclassTag="ArrayBufferView"
+A.br.$nativeSuperclassTag="ArrayBufferView"
+A.bs.$nativeSuperclassTag="ArrayBufferView"
+A.ba.$nativeSuperclassTag="ArrayBufferView"
+A.bt.$nativeSuperclassTag="ArrayBufferView"
+A.bu.$nativeSuperclassTag="ArrayBufferView"
+A.bb.$nativeSuperclassTag="ArrayBufferView"})()
+Function.prototype.$0=function(){return this()}
+Function.prototype.$1=function(a){return this(a)}
+Function.prototype.$2=function(a,b){return this(a,b)}
+Function.prototype.$3=function(a,b,c){return this(a,b,c)}
+Function.prototype.$4=function(a,b,c,d){return this(a,b,c,d)}
+Function.prototype.$1$0=function(){return this()}
+convertAllToFastObject(w)
+convertToFastObject($);(function(a){if(typeof document==="undefined"){a(null)
+return}if(typeof document.currentScript!="undefined"){a(document.currentScript)
+return}var s=document.scripts
+function onLoad(b){for(var q=0;q .learn {
+ position: absolute;
+ width: 272px;
+ top: 8px;
+ left: -300px;
+ padding: 10px;
+ border-radius: 5px;
+ background-color: rgba(255, 255, 255, 0.6);
+ transition-property: left;
+ transition-duration: 500ms;
+}
+
+@media (min-width: 899px) {
+ .learn-bar {
+ width: auto;
+ padding-left: 300px;
+ }
+
+ .learn-bar > .learn {
+ left: 8px;
+ }
+}
diff --git a/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/favicon.ico b/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/favicon.ico
new file mode 100644
index 000000000..bd829b4fc
Binary files /dev/null and b/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/favicon.ico differ
diff --git a/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/index.css b/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/index.css
new file mode 100644
index 000000000..fb6fb83ef
--- /dev/null
+++ b/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/index.css
@@ -0,0 +1,388 @@
+@charset "utf-8";
+
+html,
+body {
+ margin: 0;
+ padding: 0;
+}
+
+button {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ background: none;
+ font-size: 100%;
+ vertical-align: baseline;
+ font-family: inherit;
+ font-weight: inherit;
+ color: inherit;
+ -webkit-appearance: none;
+ appearance: none;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+body {
+ font: 14px "Helvetica Neue", Helvetica, Arial, sans-serif;
+ line-height: 1.4em;
+ background: #f5f5f5;
+ color: #111111;
+ min-width: 230px;
+ max-width: 550px;
+ margin: 0 auto;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-weight: 300;
+}
+
+.hidden {
+ display: none;
+}
+
+.todoapp {
+ background: #fff;
+ margin: 130px 0 40px 0;
+ position: relative;
+ box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);
+}
+
+.todoapp input::-webkit-input-placeholder {
+ font-style: italic;
+ font-weight: 400;
+ color: rgba(0, 0, 0, 0.4);
+}
+
+.todoapp input::-moz-placeholder {
+ font-style: italic;
+ font-weight: 400;
+ color: rgba(0, 0, 0, 0.4);
+}
+
+.todoapp input::input-placeholder {
+ font-style: italic;
+ font-weight: 400;
+ color: rgba(0, 0, 0, 0.4);
+}
+
+.todoapp h1 {
+ position: absolute;
+ top: -140px;
+ width: 100%;
+ font-size: 80px;
+ font-weight: 200;
+ text-align: center;
+ color: #b83f45;
+ -webkit-text-rendering: optimizeLegibility;
+ -moz-text-rendering: optimizeLegibility;
+ text-rendering: optimizeLegibility;
+}
+
+.new-todo,
+.edit {
+ position: relative;
+ margin: 0;
+ width: 100%;
+ font-size: 24px;
+ font-family: inherit;
+ font-weight: inherit;
+ line-height: 1.4em;
+ color: inherit;
+ padding: 6px;
+ border: 1px solid #999;
+ box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2);
+ box-sizing: border-box;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.new-todo {
+ padding: 16px 16px 16px 60px;
+ height: 65px;
+ border: none;
+ background: rgba(0, 0, 0, 0.003);
+ box-shadow: inset 0 -2px 1px rgba(0, 0, 0, 0.03);
+}
+
+.main {
+ position: relative;
+ z-index: 2;
+ border-top: 1px solid #e6e6e6;
+}
+
+.toggle-all {
+ width: 1px;
+ height: 1px;
+ border: none; /* Mobile Safari */
+ opacity: 0;
+ position: absolute;
+ right: 100%;
+ bottom: 100%;
+}
+
+.toggle-all + label {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 45px;
+ height: 65px;
+ font-size: 0;
+ position: absolute;
+ top: -65px;
+ left: -0;
+}
+
+.toggle-all + label:before {
+ content: "❯";
+ display: inline-block;
+ font-size: 22px;
+ color: #949494;
+ padding: 10px 27px 10px 27px;
+ -webkit-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+
+.toggle-all:checked + label:before {
+ color: #484848;
+}
+
+.todo-list {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+.todo-list li {
+ position: relative;
+ font-size: 24px;
+ border-bottom: 1px solid #ededed;
+}
+
+.todo-list li:last-child {
+ border-bottom: none;
+}
+
+.todo-list li.editing {
+ border-bottom: none;
+ padding: 0;
+}
+
+.todo-list li.editing .edit {
+ display: block;
+ width: calc(100% - 43px);
+ padding: 12px 16px;
+ margin: 0 0 0 43px;
+}
+
+.todo-list li.editing .view {
+ display: none;
+}
+
+.todo-list li .toggle {
+ text-align: center;
+ width: 40px;
+ /* auto, since non-WebKit browsers doesn't support input styling */
+ height: auto;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ margin: auto 0;
+ border: none; /* Mobile Safari */
+ -webkit-appearance: none;
+ appearance: none;
+}
+
+.todo-list li .toggle {
+ opacity: 0;
+}
+
+.todo-list li .toggle + label {
+ /*
+ Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433
+ IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/
+ */
+ background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23949494%22%20stroke-width%3D%223%22/%3E%3C/svg%3E");
+ background-repeat: no-repeat;
+ background-position: center left;
+}
+
+.todo-list li .toggle:checked + label {
+ background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%2359A193%22%20stroke-width%3D%223%22%2F%3E%3Cpath%20fill%3D%22%233EA390%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22%2F%3E%3C%2Fsvg%3E");
+}
+
+.todo-list li label {
+ word-break: break-all;
+ padding: 15px 15px 15px 60px;
+ display: block;
+ line-height: 1.2;
+ transition: color 0.4s;
+ font-weight: 400;
+ color: #484848;
+}
+
+.todo-list li.completed label {
+ color: #949494;
+ text-decoration: line-through;
+}
+
+.todo-list li .destroy {
+ display: none;
+ position: absolute;
+ top: 0;
+ right: 10px;
+ bottom: 0;
+ width: 40px;
+ height: 40px;
+ margin: auto 0;
+ font-size: 30px;
+ color: #949494;
+ transition: color 0.2s ease-out;
+}
+
+.todo-list li .destroy:hover,
+.todo-list li .destroy:focus {
+ color: #c18585;
+}
+
+.todo-list li .destroy:after {
+ content: "×";
+ display: block;
+ height: 100%;
+ line-height: 1.1;
+}
+
+.todo-list li:hover .destroy {
+ display: block;
+}
+
+.todo-list li .edit {
+ display: none;
+}
+
+.todo-list li.editing:last-child {
+ margin-bottom: -1px;
+}
+
+.footer {
+ padding: 10px 15px;
+ height: 20px;
+ text-align: center;
+ font-size: 15px;
+ border-top: 1px solid #e6e6e6;
+}
+
+.footer:before {
+ content: "";
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 50px;
+ overflow: hidden;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);
+}
+
+.todo-count {
+ float: left;
+ text-align: left;
+}
+
+.todo-count strong {
+ font-weight: 300;
+}
+
+.filters {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ position: absolute;
+ right: 0;
+ left: 0;
+}
+
+.filters li {
+ display: inline;
+}
+
+.filters li span {
+ color: inherit;
+ margin: 3px;
+ padding: 3px 7px;
+ text-decoration: none;
+ border: 1px solid transparent;
+ border-radius: 3px;
+}
+
+.filters li span:hover {
+ border-color: #db7676;
+}
+
+.filters li span.selected {
+ border-color: #ce4646;
+}
+
+.clear-completed,
+html .clear-completed:active {
+ float: right;
+ position: relative;
+ line-height: 19px;
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.clear-completed:hover {
+ text-decoration: underline;
+}
+
+.info {
+ margin: 65px auto 0;
+ color: #4d4d4d;
+ font-size: 11px;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ text-align: center;
+}
+
+.info p {
+ line-height: 1;
+}
+
+.info a {
+ color: inherit;
+ text-decoration: none;
+ font-weight: 400;
+}
+
+.info a:hover {
+ text-decoration: underline;
+}
+
+/*
+ Hack to remove background from Mobile Safari.
+ Can't use it globally since it destroys checkboxes in Firefox
+*/
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+ .toggle-all,
+ .todo-list li .toggle {
+ background: none;
+ }
+
+ .todo-list li .toggle {
+ height: 40px;
+ }
+}
+
+@media (max-width: 430px) {
+ .footer {
+ height: 50px;
+ }
+
+ .filters {
+ bottom: 10px;
+ }
+}
+
+:focus,
+.toggle:focus + label,
+.toggle-all:focus + label {
+ box-shadow: 0 0 2px 2px #cf7d7d;
+ outline: 0;
+}
diff --git a/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/index.html b/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/index.html
new file mode 100644
index 000000000..c9270857c
--- /dev/null
+++ b/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/index.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+ TodoMVC: Jaspr
+
+
+
+
+
+
+
+
+
+
+
diff --git a/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/main.dart.js b/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/main.dart.js
new file mode 100644
index 000000000..0ffea7608
--- /dev/null
+++ b/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/main.dart.js
@@ -0,0 +1,15 @@
+(async () => {
+const thisScript = document.currentScript;
+
+function relativeURL(ref) {
+ const base = thisScript?.src ?? document.baseURI;
+ return new URL(ref, base).toString();
+}
+
+let { compileStreaming } = await import("./main.mjs");
+
+let app = await compileStreaming(fetch(relativeURL("main.wasm")));
+let module = await app.instantiate({});
+module.invokeMain();
+
+})();
diff --git a/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/main.mjs b/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/main.mjs
new file mode 100644
index 000000000..846eb6f65
--- /dev/null
+++ b/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/main.mjs
@@ -0,0 +1,327 @@
+// Compiles a dart2wasm-generated main module from `source` which can then
+// instantiatable via the `instantiate` method.
+//
+// `source` needs to be a `Response` object (or promise thereof) e.g. created
+// via the `fetch()` JS API.
+export async function compileStreaming(source) {
+ const builtins = {builtins: ['js-string']};
+ return new CompiledApp(
+ await WebAssembly.compileStreaming(source, builtins), builtins);
+}
+
+// Compiles a dart2wasm-generated wasm modules from `bytes` which is then
+// instantiatable via the `instantiate` method.
+export async function compile(bytes) {
+ const builtins = {builtins: ['js-string']};
+ return new CompiledApp(await WebAssembly.compile(bytes, builtins), builtins);
+}
+
+// DEPRECATED: Please use `compile` or `compileStreaming` to get a compiled app,
+// use `instantiate` method to get an instantiated app and then call
+// `invokeMain` to invoke the main function.
+export async function instantiate(modulePromise, importObjectPromise) {
+ var moduleOrCompiledApp = await modulePromise;
+ if (!(moduleOrCompiledApp instanceof CompiledApp)) {
+ moduleOrCompiledApp = new CompiledApp(moduleOrCompiledApp);
+ }
+ const instantiatedApp = await moduleOrCompiledApp.instantiate(await importObjectPromise);
+ return instantiatedApp.instantiatedModule;
+}
+
+// DEPRECATED: Please use `compile` or `compileStreaming` to get a compiled app,
+// use `instantiate` method to get an instantiated app and then call
+// `invokeMain` to invoke the main function.
+export const invoke = (moduleInstance, ...args) => {
+ moduleInstance.exports.$invokeMain(args);
+}
+
+class CompiledApp {
+ constructor(module, builtins) {
+ this.module = module;
+ this.builtins = builtins;
+ }
+
+ // The second argument is an options object containing:
+ // `loadDeferredWasm` is a JS function that takes a module name matching a
+ // wasm file produced by the dart2wasm compiler and returns the bytes to
+ // load the module. These bytes can be in either a format supported by
+ // `WebAssembly.compile` or `WebAssembly.compileStreaming`.
+ // `loadDynamicModule` is a JS function that takes two string names matching,
+ // in order, a wasm file produced by the dart2wasm compiler during dynamic
+ // module compilation and a corresponding js file produced by the same
+ // compilation. It should return a JS Array containing 2 elements. The first
+ // should be the bytes for the wasm module in a format supported by
+ // `WebAssembly.compile` or `WebAssembly.compileStreaming`. The second
+ // should be the result of using the JS 'import' API on the js file path.
+ async instantiate(additionalImports, {loadDeferredWasm, loadDynamicModule} = {}) {
+ let dartInstance;
+
+ // Prints to the console
+ function printToConsole(value) {
+ if (typeof dartPrint == "function") {
+ dartPrint(value);
+ return;
+ }
+ if (typeof console == "object" && typeof console.log != "undefined") {
+ console.log(value);
+ return;
+ }
+ if (typeof print == "function") {
+ print(value);
+ return;
+ }
+
+ throw "Unable to print message: " + value;
+ }
+
+ // A special symbol attached to functions that wrap Dart functions.
+ const jsWrappedDartFunctionSymbol = Symbol("JSWrappedDartFunction");
+
+ function finalizeWrapper(dartFunction, wrapped) {
+ wrapped.dartFunction = dartFunction;
+ wrapped[jsWrappedDartFunctionSymbol] = true;
+ return wrapped;
+ }
+
+ // Imports
+ const dart2wasm = {
+ _4: (o, c) => o instanceof c,
+ _37: x0 => new Array(x0),
+ _42: (x0,x1,x2) => { x0[x1] = x2 },
+ _45: (x0,x1,x2) => new DataView(x0,x1,x2),
+ _47: x0 => new Int8Array(x0),
+ _48: (x0,x1,x2) => new Uint8Array(x0,x1,x2),
+ _49: x0 => new Uint8Array(x0),
+ _51: x0 => new Uint8ClampedArray(x0),
+ _53: x0 => new Int16Array(x0),
+ _55: x0 => new Uint16Array(x0),
+ _57: x0 => new Int32Array(x0),
+ _59: x0 => new Uint32Array(x0),
+ _61: x0 => new Float32Array(x0),
+ _63: x0 => new Float64Array(x0),
+ _78: () => {
+ let stackString = new Error().stack.toString();
+ let frames = stackString.split('\n');
+ let drop = 2;
+ if (frames[0] === 'Error') {
+ drop += 1;
+ }
+ return frames.slice(drop).join('\n');
+ },
+ _99: s => JSON.stringify(s),
+ _100: s => printToConsole(s),
+ _103: Function.prototype.call.bind(String.prototype.toLowerCase),
+ _109: Function.prototype.call.bind(String.prototype.indexOf),
+ _112: Object.is,
+ _129: (o, start, length) => new Uint8Array(o.buffer, o.byteOffset + start, length),
+ _130: (o, start, length) => new Int8Array(o.buffer, o.byteOffset + start, length),
+ _131: (o, start, length) => new Uint8ClampedArray(o.buffer, o.byteOffset + start, length),
+ _132: (o, start, length) => new Uint16Array(o.buffer, o.byteOffset + start, length),
+ _133: (o, start, length) => new Int16Array(o.buffer, o.byteOffset + start, length),
+ _134: (o, start, length) => new Uint32Array(o.buffer, o.byteOffset + start, length),
+ _135: (o, start, length) => new Int32Array(o.buffer, o.byteOffset + start, length),
+ _138: (o, start, length) => new Float32Array(o.buffer, o.byteOffset + start, length),
+ _139: (o, start, length) => new Float64Array(o.buffer, o.byteOffset + start, length),
+ _140: (t, s) => t.set(s),
+ _142: (o) => new DataView(o.buffer, o.byteOffset, o.byteLength),
+ _144: o => o.buffer,
+ _145: o => o.byteOffset,
+ _146: Function.prototype.call.bind(Object.getOwnPropertyDescriptor(DataView.prototype, 'byteLength').get),
+ _147: (b, o) => new DataView(b, o),
+ _148: (b, o, l) => new DataView(b, o, l),
+ _149: Function.prototype.call.bind(DataView.prototype.getUint8),
+ _150: Function.prototype.call.bind(DataView.prototype.setUint8),
+ _151: Function.prototype.call.bind(DataView.prototype.getInt8),
+ _152: Function.prototype.call.bind(DataView.prototype.setInt8),
+ _153: Function.prototype.call.bind(DataView.prototype.getUint16),
+ _154: Function.prototype.call.bind(DataView.prototype.setUint16),
+ _155: Function.prototype.call.bind(DataView.prototype.getInt16),
+ _156: Function.prototype.call.bind(DataView.prototype.setInt16),
+ _157: Function.prototype.call.bind(DataView.prototype.getUint32),
+ _158: Function.prototype.call.bind(DataView.prototype.setUint32),
+ _159: Function.prototype.call.bind(DataView.prototype.getInt32),
+ _160: Function.prototype.call.bind(DataView.prototype.setInt32),
+ _165: Function.prototype.call.bind(DataView.prototype.getFloat32),
+ _166: Function.prototype.call.bind(DataView.prototype.setFloat32),
+ _167: Function.prototype.call.bind(DataView.prototype.getFloat64),
+ _168: Function.prototype.call.bind(DataView.prototype.setFloat64),
+ _185: (c) =>
+ queueMicrotask(() => dartInstance.exports.$invokeCallback(c)),
+ _198: (x0,x1) => x0.createElement(x1),
+ _200: (x0,x1) => x0.querySelector(x1),
+ _201: f => finalizeWrapper(f, function(x0) { return dartInstance.exports._201(f,arguments.length,x0) }),
+ _203: (x0,x1,x2,x3) => x0.addEventListener(x1,x2,x3),
+ _204: (x0,x1,x2,x3) => x0.removeEventListener(x1,x2,x3),
+ _205: x0 => x0.preventDefault(),
+ _212: (x0,x1) => x0.item(x1),
+ _213: (x0,x1,x2) => x0.createElementNS(x1,x2),
+ _214: (x0,x1) => x0.item(x1),
+ _215: (x0,x1,x2) => x0.replaceChild(x1,x2),
+ _216: (x0,x1) => x0.append(x1),
+ _217: (x0,x1) => x0.removeAttribute(x1),
+ _218: x0 => new Text(x0),
+ _219: (x0,x1) => x0.replaceWith(x1),
+ _220: (x0,x1) => x0.item(x1),
+ _221: (x0,x1,x2) => x0.insertBefore(x1,x2),
+ _222: (x0,x1) => x0.removeChild(x1),
+ _223: (x0,x1) => x0.hasAttribute(x1),
+ _224: (x0,x1) => x0.getAttribute(x1),
+ _225: (x0,x1,x2) => x0.setAttribute(x1,x2),
+ _226: (x0,x1) => x0.error(x1),
+ _248: o => o === undefined,
+ _250: o => typeof o === 'function' && o[jsWrappedDartFunctionSymbol] === true,
+ _254: (l, r) => l === r,
+ _255: o => o,
+ _256: o => o,
+ _257: o => o,
+ _258: b => !!b,
+ _259: o => o.length,
+ _261: (o, i) => o[i],
+ _262: f => f.dartFunction,
+ _269: (o, p) => o[p],
+ _273: o => String(o),
+ _275: o => {
+ if (o === undefined) return 1;
+ var type = typeof o;
+ if (type === 'boolean') return 2;
+ if (type === 'number') return 3;
+ if (type === 'string') return 4;
+ if (o instanceof Array) return 5;
+ if (ArrayBuffer.isView(o)) {
+ if (o instanceof Int8Array) return 6;
+ if (o instanceof Uint8Array) return 7;
+ if (o instanceof Uint8ClampedArray) return 8;
+ if (o instanceof Int16Array) return 9;
+ if (o instanceof Uint16Array) return 10;
+ if (o instanceof Int32Array) return 11;
+ if (o instanceof Uint32Array) return 12;
+ if (o instanceof Float32Array) return 13;
+ if (o instanceof Float64Array) return 14;
+ if (o instanceof DataView) return 15;
+ }
+ if (o instanceof ArrayBuffer) return 16;
+ return 17;
+ },
+ _290: x0 => new ArrayBuffer(x0),
+ _305: x0 => x0.random(),
+ _308: () => globalThis.Math,
+ _309: Function.prototype.call.bind(Number.prototype.toString),
+ _310: Function.prototype.call.bind(BigInt.prototype.toString),
+ _311: Function.prototype.call.bind(Number.prototype.toString),
+ _1378: x0 => x0.checked,
+ _1385: x0 => x0.files,
+ _1428: x0 => x0.type,
+ _1432: x0 => x0.value,
+ _1433: (x0,x1) => { x0.value = x1 },
+ _1434: x0 => x0.valueAsDate,
+ _1436: x0 => x0.valueAsNumber,
+ _1519: x0 => x0.selectedOptions,
+ _1522: x0 => x0.value,
+ _1523: (x0,x1) => { x0.value = x1 },
+ _1542: x0 => x0.value,
+ _1581: x0 => x0.value,
+ _4715: x0 => x0.target,
+ _4765: x0 => x0.length,
+ _4767: x0 => x0.length,
+ _4811: x0 => x0.parentNode,
+ _4813: x0 => x0.childNodes,
+ _4816: x0 => x0.previousSibling,
+ _4817: x0 => x0.nextSibling,
+ _4820: x0 => x0.textContent,
+ _4821: (x0,x1) => { x0.textContent = x1 },
+ _4825: () => globalThis.document,
+ _5233: x0 => x0.namespaceURI,
+ _5236: x0 => x0.tagName,
+ _5244: x0 => x0.attributes,
+ _5370: x0 => x0.length,
+ _5374: x0 => x0.name,
+ _11638: () => globalThis.console,
+ _11662: () => globalThis.Element,
+ _11663: () => globalThis.HTMLInputElement,
+ _11664: () => globalThis.HTMLAnchorElement,
+ _11665: () => globalThis.HTMLSelectElement,
+ _11666: () => globalThis.HTMLTextAreaElement,
+ _11667: () => globalThis.HTMLOptionElement,
+ _11668: () => globalThis.Text,
+
+ };
+
+ const baseImports = {
+ dart2wasm: dart2wasm,
+ Math: Math,
+ Date: Date,
+ Object: Object,
+ Array: Array,
+ Reflect: Reflect,
+ S: new Proxy({}, { get(_, prop) { return prop; } }),
+
+ };
+
+ const jsStringPolyfill = {
+ "charCodeAt": (s, i) => s.charCodeAt(i),
+ "compare": (s1, s2) => {
+ if (s1 < s2) return -1;
+ if (s1 > s2) return 1;
+ return 0;
+ },
+ "concat": (s1, s2) => s1 + s2,
+ "equals": (s1, s2) => s1 === s2,
+ "fromCharCode": (i) => String.fromCharCode(i),
+ "length": (s) => s.length,
+ "substring": (s, a, b) => s.substring(a, b),
+ "fromCharCodeArray": (a, start, end) => {
+ if (end <= start) return '';
+
+ const read = dartInstance.exports.$wasmI16ArrayGet;
+ let result = '';
+ let index = start;
+ const chunkLength = Math.min(end - index, 500);
+ let array = new Array(chunkLength);
+ while (index < end) {
+ const newChunkLength = Math.min(end - index, 500);
+ for (let i = 0; i < newChunkLength; i++) {
+ array[i] = read(a, index++);
+ }
+ if (newChunkLength < chunkLength) {
+ array = array.slice(0, newChunkLength);
+ }
+ result += String.fromCharCode(...array);
+ }
+ return result;
+ },
+ "intoCharCodeArray": (s, a, start) => {
+ if (s === '') return 0;
+
+ const write = dartInstance.exports.$wasmI16ArraySet;
+ for (var i = 0; i < s.length; ++i) {
+ write(a, start++, s.charCodeAt(i));
+ }
+ return s.length;
+ },
+ };
+
+
+
+
+ dartInstance = await WebAssembly.instantiate(this.module, {
+ ...baseImports,
+ ...additionalImports,
+
+ "wasm:js-string": jsStringPolyfill,
+ });
+
+ return new InstantiatedApp(this, dartInstance);
+ }
+}
+
+class InstantiatedApp {
+ constructor(compiledApp, instantiatedModule) {
+ this.compiledApp = compiledApp;
+ this.instantiatedModule = instantiatedModule;
+ }
+
+ // Call the main function with the given arguments.
+ invokeMain(...args) {
+ this.instantiatedModule.exports.$invokeMain(args);
+ }
+}
diff --git a/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/main.wasm b/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/main.wasm
new file mode 100644
index 000000000..d20269311
Binary files /dev/null and b/experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/main.wasm differ
diff --git a/experimental/dart-jaspr-todomvc/lib/app.dart b/experimental/dart-jaspr-todomvc/lib/app.dart
new file mode 100644
index 000000000..d1f2fc715
--- /dev/null
+++ b/experimental/dart-jaspr-todomvc/lib/app.dart
@@ -0,0 +1,19 @@
+import 'package:jaspr/jaspr.dart';
+import 'components/todomvc.dart';
+
+class App extends StatelessComponent {
+ const App({super.key});
+
+ @override
+ Iterable build(BuildContext context) => [
+ TodoMVC(),
+ footer(classes: 'info', [
+ p([text('Double-click to edit a todo')]),
+ p([text('Created by the Dart team')]),
+ p([
+ text('Part of '),
+ a(href: 'http://todomvc.com', [text('TodoMVC')])
+ ]),
+ ]),
+ ];
+}
diff --git a/experimental/dart-jaspr-todomvc/lib/components/todomvc.dart b/experimental/dart-jaspr-todomvc/lib/components/todomvc.dart
new file mode 100644
index 000000000..8b411e857
--- /dev/null
+++ b/experimental/dart-jaspr-todomvc/lib/components/todomvc.dart
@@ -0,0 +1,188 @@
+import 'package:jaspr/jaspr.dart';
+
+@client
+class TodoMVC extends StatefulComponent {
+ @override
+ State createState() => TodoMVCState();
+}
+
+enum DisplayState {
+ all,
+ active,
+ completed,
+}
+
+// Todo string, active pair
+typedef Todo = ({bool isActive, String todo});
+
+class TodoMVCState extends State {
+ var todos = {};
+ var dataIdCount = 0;
+ var activeCount = 0;
+ var displayState = DisplayState.all;
+
+ void addTodo(String todo) {
+ setState(() {
+ todos[++dataIdCount] = (todo: todo, isActive: true);
+ activeCount++;
+ });
+ }
+
+ void toggle(int i) {
+ setState(() {
+ var (:isActive, :todo) = todos[i]!;
+ todos[i] = (todo: todo, isActive: !isActive);
+ if (isActive) {
+ activeCount--;
+ } else {
+ activeCount++;
+ }
+ });
+ }
+
+ void toggleAll() {
+ setState(() {
+ for (var i in todos.keys) {
+ var (isActive: _, :todo) = todos[i]!;
+ todos[i] = (todo: todo, isActive: activeCount == 0);
+ }
+ activeCount = (activeCount == 0) ? allCount : 0;
+ });
+ }
+
+ void destroy(int i) {
+ setState(() {
+ var (:isActive, :todo) = todos.remove(i)!;
+ if (isActive) {
+ activeCount--;
+ }
+ });
+ }
+
+ void clearCompleted() {
+ setState(() {
+ todos.removeWhere((dataId, todo) => !todo.isActive);
+ });
+ }
+
+ void setDisplayState(DisplayState state) {
+ setState(() {
+ displayState = state;
+ });
+ }
+
+ int get allCount => todos.length;
+
+ int get completedCount => allCount - activeCount;
+
+ @override
+ Iterable build(BuildContext context) => [
+ section(id: 'root', classes: 'todoapp', [
+ header(classes: 'header', attributes: {
+ 'data-testid': 'header'
+ }, [
+ h1([text('todos')]),
+ div(classes: 'input-container', [NewTodo(addTodo)]),
+ ]),
+ main_(
+ classes: 'main',
+ styles:
+ Styles.raw({'display': todos.isEmpty ? 'none;' : 'block;'}),
+ [
+ div(classes: 'toggle-all-container', [
+ input(
+ classes: 'toggle-all',
+ id: 'toggle-all',
+ type: InputType.checkbox,
+ attributes: activeCount > 0 ? null : {'checked': ''},
+ onChange: (_) => toggleAll(),
+ []),
+ label(classes: 'toggle-all-label', attributes: {
+ 'for': 'toggle-all'
+ }, [
+ text('Mark all as complete'),
+ ]),
+ ]),
+ ul(classes: 'todo-list', [
+ for (var (dataId, (:isActive, :todo)) in todos.keyValues)
+ if (isActive && displayState != DisplayState.completed ||
+ !isActive && displayState != DisplayState.active)
+ li(classes: isActive ? '' : 'completed', attributes: {
+ 'data-id': '$dataId'
+ }, [
+ div(classes: 'view', [
+ input(
+ classes: 'toggle',
+ key: Key('$dataId-$isActive'),
+ type: InputType.checkbox,
+ attributes: isActive ? null : {'checked': ''},
+ onChange: (_) => toggle(dataId),
+ []),
+ label([text(todo)]),
+ button(
+ classes: 'destroy',
+ onClick: () => destroy(dataId),
+ []),
+ ])
+ ]),
+ ]),
+ ]),
+ footer(
+ classes: 'footer',
+ styles:
+ Styles.raw({'display': todos.isEmpty ? 'none;' : 'block;'}),
+ [
+ span(classes: 'todo-count', [
+ strong([text('$activeCount')]),
+ text(' item${activeCount == 1 ? '' : 's'} left'),
+ ]),
+ ul(classes: 'filters', [
+ for (var (name, state) in [
+ ('All', DisplayState.all),
+ ('Active', DisplayState.active),
+ ('Completed', DisplayState.completed)
+ ])
+ li([
+ span(
+ classes: displayState == state ? 'selected' : '',
+ events: {
+ 'click': (_) => setDisplayState(state),
+ },
+ [
+ text(name)
+ ])
+ ]),
+ ]),
+ button(
+ classes: 'clear-completed',
+ styles: Styles.raw(
+ {'display': completedCount == 0 ? 'none;' : 'block;'}),
+ onClick: clearCompleted,
+ [text('Clear completed')]),
+ ]),
+ ]),
+ ];
+}
+
+class NewTodo extends StatelessComponent {
+ final void Function(String) handler;
+
+ NewTodo(this.handler);
+
+ @override
+ Iterable build(BuildContext context) => [
+ input(
+ classes: 'new-todo',
+ value: '',
+ onChange: (str) => handler(str as String),
+ attributes: {
+ 'placeholder': 'What needs to be done?',
+ },
+ []),
+ ];
+}
+
+extension MapExtensions on Map {
+ Iterable<(K, V)> get keyValues =>
+ entries.map((entry) => (entry.key, entry.value));
+}
diff --git a/experimental/dart-jaspr-todomvc/pubspec.lock b/experimental/dart-jaspr-todomvc/pubspec.lock
new file mode 100644
index 000000000..955d09748
--- /dev/null
+++ b/experimental/dart-jaspr-todomvc/pubspec.lock
@@ -0,0 +1,941 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+ _fe_analyzer_shared:
+ dependency: transitive
+ description:
+ name: _fe_analyzer_shared
+ sha256: dc27559385e905ad30838356c5f5d574014ba39872d732111cd07ac0beff4c57
+ url: "https://pub.dev"
+ source: hosted
+ version: "80.0.0"
+ analyzer:
+ dependency: transitive
+ description:
+ name: analyzer
+ sha256: "192d1c5b944e7e53b24b5586db760db934b177d4147c42fbca8c8c5f1eb8d11e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.3.0"
+ analyzer_plugin:
+ dependency: transitive
+ description:
+ name: analyzer_plugin
+ sha256: "1d460d14e3c2ae36dc2b32cef847c4479198cf87704f63c3c3c8150ee50c3916"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.12.0"
+ ansi_styles:
+ dependency: transitive
+ description:
+ name: ansi_styles
+ sha256: "9c656cc12b3c27b17dd982b2cc5c0cfdfbdabd7bc8f3ae5e8542d9867b47ce8a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.3.2+1"
+ archive:
+ dependency: transitive
+ description:
+ name: archive
+ sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.7"
+ args:
+ dependency: transitive
+ description:
+ name: args
+ sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.7.0"
+ async:
+ dependency: transitive
+ description:
+ name: async
+ sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.13.0"
+ bazel_worker:
+ dependency: transitive
+ description:
+ name: bazel_worker
+ sha256: "373a6ef07caa6c674c1cf144a5fe1e0f712c040552031ce669f298e35f7e110a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.3"
+ binary_codec:
+ dependency: transitive
+ description:
+ name: binary_codec
+ sha256: "368144225d749e1e33f2f4628d0c70bffff99b99b1d6c0777b039f8967365b07"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.3"
+ boolean_selector:
+ dependency: transitive
+ description:
+ name: boolean_selector
+ sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ browser_launcher:
+ dependency: transitive
+ description:
+ name: browser_launcher
+ sha256: ca2557663d3033845f2ef2b60f94fc249528324fd1affddccb7c63ac0ccd6c67
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.3"
+ build:
+ dependency: transitive
+ description:
+ name: build
+ sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.2"
+ build_config:
+ dependency: transitive
+ description:
+ name: build_config
+ sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.2"
+ build_daemon:
+ dependency: transitive
+ description:
+ name: build_daemon
+ sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.4"
+ build_modules:
+ dependency: transitive
+ description:
+ name: build_modules
+ sha256: b1fc29a603669b25a5d95cc9610ed649e9f00e6075e5b6b721aa1a095cff13de
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.0.13"
+ build_resolvers:
+ dependency: transitive
+ description:
+ name: build_resolvers
+ sha256: b9e4fda21d846e192628e7a4f6deda6888c36b5b69ba02ff291a01fd529140f0
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.4"
+ build_runner:
+ dependency: "direct dev"
+ description:
+ name: build_runner
+ sha256: "058fe9dce1de7d69c4b84fada934df3e0153dd000758c4d65964d0166779aa99"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.15"
+ build_runner_core:
+ dependency: transitive
+ description:
+ name: build_runner_core
+ sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021"
+ url: "https://pub.dev"
+ source: hosted
+ version: "8.0.0"
+ build_web_compilers:
+ dependency: "direct dev"
+ description:
+ name: build_web_compilers
+ sha256: "0713ad9045ae0ee7f97187ae7bd2f42bdec929c22f32caa78e031338d4894bd7"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.1.4"
+ built_collection:
+ dependency: transitive
+ description:
+ name: built_collection
+ sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100"
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.1.1"
+ built_value:
+ dependency: transitive
+ description:
+ name: built_value
+ sha256: ea90e81dc4a25a043d9bee692d20ed6d1c4a1662a28c03a96417446c093ed6b4
+ url: "https://pub.dev"
+ source: hosted
+ version: "8.9.5"
+ checked_yaml:
+ dependency: transitive
+ description:
+ name: checked_yaml
+ sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.3"
+ ci:
+ dependency: transitive
+ description:
+ name: ci
+ sha256: "145d095ce05cddac4d797a158bc4cf3b6016d1fe63d8c3d2fbd7212590adca13"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.1.0"
+ cli_completion:
+ dependency: transitive
+ description:
+ name: cli_completion
+ sha256: "72e8ccc4545f24efa7bbdf3bff7257dc9d62b072dee77513cc54295575bc9220"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.5.1"
+ cli_util:
+ dependency: transitive
+ description:
+ name: cli_util
+ sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.4.2"
+ clock:
+ dependency: transitive
+ description:
+ name: clock
+ sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.2"
+ code_builder:
+ dependency: transitive
+ description:
+ name: code_builder
+ sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.10.1"
+ collection:
+ dependency: transitive
+ description:
+ name: collection
+ sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.19.1"
+ convert:
+ dependency: transitive
+ description:
+ name: convert
+ sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.2"
+ crypto:
+ dependency: transitive
+ description:
+ name: crypto
+ sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.6"
+ csslib:
+ dependency: transitive
+ description:
+ name: csslib
+ sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.2"
+ custom_lint:
+ dependency: transitive
+ description:
+ name: custom_lint
+ sha256: "021897cce2b6c783b2521543e362e7fe1a2eaab17bf80514d8de37f99942ed9e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.7.3"
+ custom_lint_builder:
+ dependency: transitive
+ description:
+ name: custom_lint_builder
+ sha256: e4235b9d8cef59afe621eba086d245205c8a0a6c70cd470be7cb17494d6df32d
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.7.3"
+ custom_lint_core:
+ dependency: transitive
+ description:
+ name: custom_lint_core
+ sha256: "6dcee8a017181941c51a110da7e267c1d104dc74bec8862eeb8c85b5c8759a9e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.7.1"
+ custom_lint_visitor:
+ dependency: transitive
+ description:
+ name: custom_lint_visitor
+ sha256: "36282d85714af494ee2d7da8c8913630aa6694da99f104fb2ed4afcf8fc857d8"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.0+7.3.0"
+ dap:
+ dependency: transitive
+ description:
+ name: dap
+ sha256: "42b0b083a09c59a118741769e218fc3738980ab591114f09d1026241d2b9c290"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.0"
+ dart_style:
+ dependency: transitive
+ description:
+ name: dart_style
+ sha256: "27eb0ae77836989a3bc541ce55595e8ceee0992807f14511552a898ddd0d88ac"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.1"
+ dds:
+ dependency: transitive
+ description:
+ name: dds
+ sha256: c90723eb1f1402429c57f717550ce5af80288d74a27c45ccbe754a0e3e038f95
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.2.7"
+ dds_service_extensions:
+ dependency: transitive
+ description:
+ name: dds_service_extensions
+ sha256: "5a5f0f9af646505f5bb21159c78ae5c275cd8bdb99e1a8e27f2f395c49568743"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.1"
+ devtools_shared:
+ dependency: transitive
+ description:
+ name: devtools_shared
+ sha256: "72369878105eccd563547afbad97407a2431b96bd4c04a1d6da75cb068437f50"
+ url: "https://pub.dev"
+ source: hosted
+ version: "10.0.2"
+ dtd:
+ dependency: transitive
+ description:
+ name: dtd
+ sha256: "14a0360d898ded87c3d99591fc386b8a6ea5d432927bee709b22130cd25b993a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.5.1"
+ dwds:
+ dependency: transitive
+ description:
+ name: dwds
+ sha256: "1c192079b0e62ae1be032340a2ed073d678ab3d5ca7ded7954d1aa2d4643df02"
+ url: "https://pub.dev"
+ source: hosted
+ version: "24.3.5"
+ equatable:
+ dependency: transitive
+ description:
+ name: equatable
+ sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.7"
+ extension_discovery:
+ dependency: transitive
+ description:
+ name: extension_discovery
+ sha256: de1fce715ab013cdfb00befc3bdf0914bea5e409c3a567b7f8f144bc061611a7
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.0"
+ ffi:
+ dependency: transitive
+ description:
+ name: ffi
+ sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.4"
+ file:
+ dependency: transitive
+ description:
+ name: file
+ sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.0.1"
+ fixnum:
+ dependency: transitive
+ description:
+ name: fixnum
+ sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ freezed_annotation:
+ dependency: transitive
+ description:
+ name: freezed_annotation
+ sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.4"
+ frontend_server_client:
+ dependency: transitive
+ description:
+ name: frontend_server_client
+ sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.0"
+ glob:
+ dependency: transitive
+ description:
+ name: glob
+ sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.3"
+ graphs:
+ dependency: transitive
+ description:
+ name: graphs
+ sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.3.2"
+ hotreloader:
+ dependency: transitive
+ description:
+ name: hotreloader
+ sha256: bc167a1163807b03bada490bfe2df25b0d744df359227880220a5cbd04e5734b
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.3.0"
+ html:
+ dependency: transitive
+ description:
+ name: html
+ sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.15.6"
+ http:
+ dependency: transitive
+ description:
+ name: http
+ sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.0"
+ http_multi_server:
+ dependency: transitive
+ description:
+ name: http_multi_server
+ sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.2.2"
+ http_parser:
+ dependency: transitive
+ description:
+ name: http_parser
+ sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.1.2"
+ io:
+ dependency: transitive
+ description:
+ name: io
+ sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.5"
+ jaspr:
+ dependency: "direct main"
+ description:
+ name: jaspr
+ sha256: "768484411c5d572ca3612c337e74f6df8f8463c23ad5e8cde290af62650fb470"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.18.2"
+ jaspr_builder:
+ dependency: "direct dev"
+ description:
+ name: jaspr_builder
+ sha256: "2e3724da1fd0402fa1400d9bbdfeb66854ee2920eacfdfc6b2762740bef33899"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.18.2"
+ jaspr_cli:
+ dependency: "direct dev"
+ description:
+ name: jaspr_cli
+ sha256: "6ed17985be557304d200c50a5e718c0d581f35a65d4a6fc7eb26c59ce6a7fec2"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.18.2"
+ jaspr_lints:
+ dependency: "direct dev"
+ description:
+ name: jaspr_lints
+ sha256: "17e73c818c409454ea150e0641928bf1d340c2704016aba5efd223302bee72f7"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.3.1"
+ js:
+ dependency: transitive
+ description:
+ name: js
+ sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.7.2"
+ json_annotation:
+ dependency: transitive
+ description:
+ name: json_annotation
+ sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.9.0"
+ json_rpc_2:
+ dependency: transitive
+ description:
+ name: json_rpc_2
+ sha256: "246b321532f0e8e2ba474b4d757eaa558ae4fdd0688fdbc1e1ca9705f9b8ca0e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.3"
+ lints:
+ dependency: "direct dev"
+ description:
+ name: lints
+ sha256: a5e2b223cb7c9c8efdc663ef484fdd95bb243bff242ef5b13e26883547fce9a0
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.0.0"
+ logging:
+ dependency: transitive
+ description:
+ name: logging
+ sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.0"
+ mason:
+ dependency: transitive
+ description:
+ name: mason
+ sha256: de5681849fd49bb4f53f703f439b1d9dac64ff472e49b5dfb23ad5d837185780
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.1.1"
+ mason_logger:
+ dependency: transitive
+ description:
+ name: mason_logger
+ sha256: "6d5a989ff41157915cb5162ed6e41196d5e31b070d2f86e1c2edf216996a158c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.3.3"
+ matcher:
+ dependency: transitive
+ description:
+ name: matcher
+ sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.12.17"
+ meta:
+ dependency: transitive
+ description:
+ name: meta
+ sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.16.0"
+ mime:
+ dependency: transitive
+ description:
+ name: mime
+ sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.6"
+ mustache_template:
+ dependency: transitive
+ description:
+ name: mustache_template
+ sha256: a46e26f91445bfb0b60519be280555b06792460b27b19e2b19ad5b9740df5d1c
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.0"
+ package_config:
+ dependency: transitive
+ description:
+ name: package_config
+ sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.0"
+ path:
+ dependency: transitive
+ description:
+ name: path
+ sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.9.1"
+ platform:
+ dependency: transitive
+ description:
+ name: platform
+ sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.6"
+ pool:
+ dependency: transitive
+ description:
+ name: pool
+ sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.5.1"
+ posix:
+ dependency: transitive
+ description:
+ name: posix
+ sha256: f0d7856b6ca1887cfa6d1d394056a296ae33489db914e365e2044fdada449e62
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.0.2"
+ process:
+ dependency: transitive
+ description:
+ name: process
+ sha256: "107d8be718f120bbba9dcd1e95e3bd325b1b4a4f07db64154635ba03f2567a0d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.0.3"
+ protobuf:
+ dependency: transitive
+ description:
+ name: protobuf
+ sha256: fbb0c37d435641d0b84813c1dad41e6fa61ddc880a320bce16b3063ecec35aa6
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.0"
+ pub_semver:
+ dependency: transitive
+ description:
+ name: pub_semver
+ sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.0"
+ pub_updater:
+ dependency: transitive
+ description:
+ name: pub_updater
+ sha256: "739a0161d73a6974c0675b864fb0cf5147305f7b077b7f03a58fa7a9ab3e7e7d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.5.0"
+ pubspec_parse:
+ dependency: transitive
+ description:
+ name: pubspec_parse
+ sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.5.0"
+ rxdart:
+ dependency: transitive
+ description:
+ name: rxdart
+ sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.28.0"
+ scratch_space:
+ dependency: transitive
+ description:
+ name: scratch_space
+ sha256: "8510fbff458d733a58fc427057d1ac86303b376d609d6e1bc43f240aad9aa445"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.2"
+ shelf:
+ dependency: transitive
+ description:
+ name: shelf
+ sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.2"
+ shelf_gzip:
+ dependency: transitive
+ description:
+ name: shelf_gzip
+ sha256: "4f4b793c0f969f348aece1ab4cc05fceba9fea431c1ce76b1bc0fa369cecfc15"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.1.0"
+ shelf_packages_handler:
+ dependency: transitive
+ description:
+ name: shelf_packages_handler
+ sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.2"
+ shelf_proxy:
+ dependency: transitive
+ description:
+ name: shelf_proxy
+ sha256: a71d2307f4393211930c590c3d2c00630f6c5a7a77edc1ef6436dfd85a6a7ee3
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.4"
+ shelf_static:
+ dependency: transitive
+ description:
+ name: shelf_static
+ sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.3"
+ shelf_web_socket:
+ dependency: transitive
+ description:
+ name: shelf_web_socket
+ sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.1"
+ source_gen:
+ dependency: transitive
+ description:
+ name: source_gen
+ sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.0"
+ source_maps:
+ dependency: transitive
+ description:
+ name: source_maps
+ sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.10.13"
+ source_span:
+ dependency: transitive
+ description:
+ name: source_span
+ sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.10.1"
+ sprintf:
+ dependency: transitive
+ description:
+ name: sprintf
+ sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23"
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.0.0"
+ sse:
+ dependency: transitive
+ description:
+ name: sse
+ sha256: "4389a01d5bc7ef3e90fbc645f8e7c6d8711268adb1f511e14ae9c71de47ee32b"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.1.7"
+ stack_trace:
+ dependency: transitive
+ description:
+ name: stack_trace
+ sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.12.1"
+ stream_channel:
+ dependency: transitive
+ description:
+ name: stream_channel
+ sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.4"
+ stream_transform:
+ dependency: transitive
+ description:
+ name: stream_transform
+ sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.1"
+ string_scanner:
+ dependency: transitive
+ description:
+ name: string_scanner
+ sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.1"
+ term_glyph:
+ dependency: transitive
+ description:
+ name: term_glyph
+ sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.2"
+ test_api:
+ dependency: transitive
+ description:
+ name: test_api
+ sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.7.4"
+ timing:
+ dependency: transitive
+ description:
+ name: timing
+ sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.2"
+ typed_data:
+ dependency: transitive
+ description:
+ name: typed_data
+ sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.0"
+ unified_analytics:
+ dependency: transitive
+ description:
+ name: unified_analytics
+ sha256: c8abdcad84b55b78f860358aae90077b8f54f98169a75e16d97796a1b3c95590
+ url: "https://pub.dev"
+ source: hosted
+ version: "8.0.1"
+ universal_web:
+ dependency: transitive
+ description:
+ name: universal_web
+ sha256: fd161c6424fd78625097429b0050c2ea967304fb2b8b5ea0c0f51cd41b915053
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0+2"
+ uuid:
+ dependency: transitive
+ description:
+ name: uuid
+ sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.5.1"
+ vm_service:
+ dependency: transitive
+ description:
+ name: vm_service
+ sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
+ url: "https://pub.dev"
+ source: hosted
+ version: "14.3.1"
+ vm_service_interface:
+ dependency: transitive
+ description:
+ name: vm_service_interface
+ sha256: "503c92c26cf9f77d688bf8fca27fa9ec40450adbf02ec1ec5f12828ded508ac0"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.1"
+ watcher:
+ dependency: transitive
+ description:
+ name: watcher
+ sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ web:
+ dependency: transitive
+ description:
+ name: web
+ sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
+ web_socket:
+ dependency: transitive
+ description:
+ name: web_socket
+ sha256: bfe6f435f6ec49cb6c01da1e275ae4228719e59a6b067048c51e72d9d63bcc4b
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.0"
+ web_socket_channel:
+ dependency: transitive
+ description:
+ name: web_socket_channel
+ sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.3"
+ webdev:
+ dependency: transitive
+ description:
+ name: webdev
+ sha256: efcb8230c9d40c75118b57e10e59936c40f02f232b27fdfae91a9f00ca470d9d
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.7.1"
+ webkit_inspection_protocol:
+ dependency: transitive
+ description:
+ name: webkit_inspection_protocol
+ sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.1"
+ win32:
+ dependency: transitive
+ description:
+ name: win32
+ sha256: dc6ecaa00a7c708e5b4d10ee7bec8c270e9276dfcab1783f57e9962d7884305f
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.12.0"
+ yaml:
+ dependency: transitive
+ description:
+ name: yaml
+ sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.3"
+ yaml_edit:
+ dependency: transitive
+ description:
+ name: yaml_edit
+ sha256: fb38626579fb345ad00e674e2af3a5c9b0cc4b9bfb8fd7f7ff322c7c9e62aef5
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.2"
+sdks:
+ dart: ">=3.8.0-0 <3.9.0-z"
diff --git a/experimental/dart-jaspr-todomvc/pubspec.yaml b/experimental/dart-jaspr-todomvc/pubspec.yaml
new file mode 100644
index 000000000..59ff6b699
--- /dev/null
+++ b/experimental/dart-jaspr-todomvc/pubspec.yaml
@@ -0,0 +1,20 @@
+name: todomvc
+description: A TodoMVC app created using the Jaspr Dart web framework.
+version: 0.1.0
+
+environment:
+ sdk: ^3.7.0
+
+dependencies:
+ jaspr: ^0.18.2
+
+dev_dependencies:
+ build_runner:
+ build_web_compilers: ^4.1.0
+ jaspr_builder:
+ jaspr_lints:
+ jaspr_cli:
+ lints:
+
+jaspr:
+ mode: client
diff --git a/experimental/dart-jaspr-todomvc/web/base.css b/experimental/dart-jaspr-todomvc/web/base.css
new file mode 100644
index 000000000..d3938100c
--- /dev/null
+++ b/experimental/dart-jaspr-todomvc/web/base.css
@@ -0,0 +1,141 @@
+hr {
+ margin: 20px 0;
+ border: 0;
+ border-top: 1px dashed #c5c5c5;
+ border-bottom: 1px dashed #f7f7f7;
+}
+
+.learn a {
+ font-weight: normal;
+ text-decoration: none;
+ color: #b83f45;
+}
+
+.learn a:hover {
+ text-decoration: underline;
+ color: #787e7e;
+}
+
+.learn h3,
+.learn h4,
+.learn h5 {
+ margin: 10px 0;
+ font-weight: 500;
+ line-height: 1.2;
+ color: #000;
+}
+
+.learn h3 {
+ font-size: 24px;
+}
+
+.learn h4 {
+ font-size: 18px;
+}
+
+.learn h5 {
+ margin-bottom: 0;
+ font-size: 14px;
+}
+
+.learn ul {
+ padding: 0;
+ margin: 0 0 30px 25px;
+}
+
+.learn li {
+ line-height: 20px;
+}
+
+.learn p {
+ font-size: 15px;
+ font-weight: 300;
+ line-height: 1.3;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+#issue-count {
+ display: none;
+}
+
+.quote {
+ border: none;
+ margin: 20px 0 60px 0;
+}
+
+.quote p {
+ font-style: italic;
+}
+
+.quote p:before {
+ content: "“";
+ font-size: 50px;
+ opacity: 0.15;
+ position: absolute;
+ top: -20px;
+ left: 3px;
+}
+
+.quote p:after {
+ content: "”";
+ font-size: 50px;
+ opacity: 0.15;
+ position: absolute;
+ bottom: -42px;
+ right: 3px;
+}
+
+.quote footer {
+ position: absolute;
+ bottom: -40px;
+ right: 0;
+}
+
+.quote footer img {
+ border-radius: 3px;
+}
+
+.quote footer a {
+ margin-left: 5px;
+ vertical-align: middle;
+}
+
+.speech-bubble {
+ position: relative;
+ padding: 10px;
+ background: rgba(0, 0, 0, 0.04);
+ border-radius: 5px;
+}
+
+.speech-bubble:after {
+ content: "";
+ position: absolute;
+ top: 100%;
+ right: 30px;
+ border: 13px solid transparent;
+ border-top-color: rgba(0, 0, 0, 0.04);
+}
+
+.learn-bar > .learn {
+ position: absolute;
+ width: 272px;
+ top: 8px;
+ left: -300px;
+ padding: 10px;
+ border-radius: 5px;
+ background-color: rgba(255, 255, 255, 0.6);
+ transition-property: left;
+ transition-duration: 500ms;
+}
+
+@media (min-width: 899px) {
+ .learn-bar {
+ width: auto;
+ padding-left: 300px;
+ }
+
+ .learn-bar > .learn {
+ left: 8px;
+ }
+}
diff --git a/experimental/dart-jaspr-todomvc/web/favicon.ico b/experimental/dart-jaspr-todomvc/web/favicon.ico
new file mode 100644
index 000000000..bd829b4fc
Binary files /dev/null and b/experimental/dart-jaspr-todomvc/web/favicon.ico differ
diff --git a/experimental/dart-jaspr-todomvc/web/index.css b/experimental/dart-jaspr-todomvc/web/index.css
new file mode 100644
index 000000000..fb6fb83ef
--- /dev/null
+++ b/experimental/dart-jaspr-todomvc/web/index.css
@@ -0,0 +1,388 @@
+@charset "utf-8";
+
+html,
+body {
+ margin: 0;
+ padding: 0;
+}
+
+button {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ background: none;
+ font-size: 100%;
+ vertical-align: baseline;
+ font-family: inherit;
+ font-weight: inherit;
+ color: inherit;
+ -webkit-appearance: none;
+ appearance: none;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+body {
+ font: 14px "Helvetica Neue", Helvetica, Arial, sans-serif;
+ line-height: 1.4em;
+ background: #f5f5f5;
+ color: #111111;
+ min-width: 230px;
+ max-width: 550px;
+ margin: 0 auto;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-weight: 300;
+}
+
+.hidden {
+ display: none;
+}
+
+.todoapp {
+ background: #fff;
+ margin: 130px 0 40px 0;
+ position: relative;
+ box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);
+}
+
+.todoapp input::-webkit-input-placeholder {
+ font-style: italic;
+ font-weight: 400;
+ color: rgba(0, 0, 0, 0.4);
+}
+
+.todoapp input::-moz-placeholder {
+ font-style: italic;
+ font-weight: 400;
+ color: rgba(0, 0, 0, 0.4);
+}
+
+.todoapp input::input-placeholder {
+ font-style: italic;
+ font-weight: 400;
+ color: rgba(0, 0, 0, 0.4);
+}
+
+.todoapp h1 {
+ position: absolute;
+ top: -140px;
+ width: 100%;
+ font-size: 80px;
+ font-weight: 200;
+ text-align: center;
+ color: #b83f45;
+ -webkit-text-rendering: optimizeLegibility;
+ -moz-text-rendering: optimizeLegibility;
+ text-rendering: optimizeLegibility;
+}
+
+.new-todo,
+.edit {
+ position: relative;
+ margin: 0;
+ width: 100%;
+ font-size: 24px;
+ font-family: inherit;
+ font-weight: inherit;
+ line-height: 1.4em;
+ color: inherit;
+ padding: 6px;
+ border: 1px solid #999;
+ box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2);
+ box-sizing: border-box;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.new-todo {
+ padding: 16px 16px 16px 60px;
+ height: 65px;
+ border: none;
+ background: rgba(0, 0, 0, 0.003);
+ box-shadow: inset 0 -2px 1px rgba(0, 0, 0, 0.03);
+}
+
+.main {
+ position: relative;
+ z-index: 2;
+ border-top: 1px solid #e6e6e6;
+}
+
+.toggle-all {
+ width: 1px;
+ height: 1px;
+ border: none; /* Mobile Safari */
+ opacity: 0;
+ position: absolute;
+ right: 100%;
+ bottom: 100%;
+}
+
+.toggle-all + label {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 45px;
+ height: 65px;
+ font-size: 0;
+ position: absolute;
+ top: -65px;
+ left: -0;
+}
+
+.toggle-all + label:before {
+ content: "❯";
+ display: inline-block;
+ font-size: 22px;
+ color: #949494;
+ padding: 10px 27px 10px 27px;
+ -webkit-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+
+.toggle-all:checked + label:before {
+ color: #484848;
+}
+
+.todo-list {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+.todo-list li {
+ position: relative;
+ font-size: 24px;
+ border-bottom: 1px solid #ededed;
+}
+
+.todo-list li:last-child {
+ border-bottom: none;
+}
+
+.todo-list li.editing {
+ border-bottom: none;
+ padding: 0;
+}
+
+.todo-list li.editing .edit {
+ display: block;
+ width: calc(100% - 43px);
+ padding: 12px 16px;
+ margin: 0 0 0 43px;
+}
+
+.todo-list li.editing .view {
+ display: none;
+}
+
+.todo-list li .toggle {
+ text-align: center;
+ width: 40px;
+ /* auto, since non-WebKit browsers doesn't support input styling */
+ height: auto;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ margin: auto 0;
+ border: none; /* Mobile Safari */
+ -webkit-appearance: none;
+ appearance: none;
+}
+
+.todo-list li .toggle {
+ opacity: 0;
+}
+
+.todo-list li .toggle + label {
+ /*
+ Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433
+ IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/
+ */
+ background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23949494%22%20stroke-width%3D%223%22/%3E%3C/svg%3E");
+ background-repeat: no-repeat;
+ background-position: center left;
+}
+
+.todo-list li .toggle:checked + label {
+ background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%2359A193%22%20stroke-width%3D%223%22%2F%3E%3Cpath%20fill%3D%22%233EA390%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22%2F%3E%3C%2Fsvg%3E");
+}
+
+.todo-list li label {
+ word-break: break-all;
+ padding: 15px 15px 15px 60px;
+ display: block;
+ line-height: 1.2;
+ transition: color 0.4s;
+ font-weight: 400;
+ color: #484848;
+}
+
+.todo-list li.completed label {
+ color: #949494;
+ text-decoration: line-through;
+}
+
+.todo-list li .destroy {
+ display: none;
+ position: absolute;
+ top: 0;
+ right: 10px;
+ bottom: 0;
+ width: 40px;
+ height: 40px;
+ margin: auto 0;
+ font-size: 30px;
+ color: #949494;
+ transition: color 0.2s ease-out;
+}
+
+.todo-list li .destroy:hover,
+.todo-list li .destroy:focus {
+ color: #c18585;
+}
+
+.todo-list li .destroy:after {
+ content: "×";
+ display: block;
+ height: 100%;
+ line-height: 1.1;
+}
+
+.todo-list li:hover .destroy {
+ display: block;
+}
+
+.todo-list li .edit {
+ display: none;
+}
+
+.todo-list li.editing:last-child {
+ margin-bottom: -1px;
+}
+
+.footer {
+ padding: 10px 15px;
+ height: 20px;
+ text-align: center;
+ font-size: 15px;
+ border-top: 1px solid #e6e6e6;
+}
+
+.footer:before {
+ content: "";
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 50px;
+ overflow: hidden;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2);
+}
+
+.todo-count {
+ float: left;
+ text-align: left;
+}
+
+.todo-count strong {
+ font-weight: 300;
+}
+
+.filters {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ position: absolute;
+ right: 0;
+ left: 0;
+}
+
+.filters li {
+ display: inline;
+}
+
+.filters li span {
+ color: inherit;
+ margin: 3px;
+ padding: 3px 7px;
+ text-decoration: none;
+ border: 1px solid transparent;
+ border-radius: 3px;
+}
+
+.filters li span:hover {
+ border-color: #db7676;
+}
+
+.filters li span.selected {
+ border-color: #ce4646;
+}
+
+.clear-completed,
+html .clear-completed:active {
+ float: right;
+ position: relative;
+ line-height: 19px;
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.clear-completed:hover {
+ text-decoration: underline;
+}
+
+.info {
+ margin: 65px auto 0;
+ color: #4d4d4d;
+ font-size: 11px;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ text-align: center;
+}
+
+.info p {
+ line-height: 1;
+}
+
+.info a {
+ color: inherit;
+ text-decoration: none;
+ font-weight: 400;
+}
+
+.info a:hover {
+ text-decoration: underline;
+}
+
+/*
+ Hack to remove background from Mobile Safari.
+ Can't use it globally since it destroys checkboxes in Firefox
+*/
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+ .toggle-all,
+ .todo-list li .toggle {
+ background: none;
+ }
+
+ .todo-list li .toggle {
+ height: 40px;
+ }
+}
+
+@media (max-width: 430px) {
+ .footer {
+ height: 50px;
+ }
+
+ .filters {
+ bottom: 10px;
+ }
+}
+
+:focus,
+.toggle:focus + label,
+.toggle-all:focus + label {
+ box-shadow: 0 0 2px 2px #cf7d7d;
+ outline: 0;
+}
diff --git a/experimental/dart-jaspr-todomvc/web/index.html b/experimental/dart-jaspr-todomvc/web/index.html
new file mode 100644
index 000000000..c9270857c
--- /dev/null
+++ b/experimental/dart-jaspr-todomvc/web/index.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+ TodoMVC: Jaspr
+
+
+
+
+
+
+
+
+
+
+
diff --git a/experimental/dart-jaspr-todomvc/web/main.dart b/experimental/dart-jaspr-todomvc/web/main.dart
new file mode 100644
index 000000000..e7284b369
--- /dev/null
+++ b/experimental/dart-jaspr-todomvc/web/main.dart
@@ -0,0 +1,13 @@
+// The entrypoint for the **client** environment.
+//
+// This file is compiled to javascript and executed in the browser.
+
+// Client-specific jaspr import.
+import 'package:jaspr/browser.dart';
+// Imports the [App] component.
+import 'package:todomvc/app.dart';
+
+void main() {
+ // Attaches the [App] component to the of the page.
+ runApp(App());
+}
diff --git a/resources/tests.mjs b/resources/tests.mjs
index d7cf6794a..3cfb7e69a 100644
--- a/resources/tests.mjs
+++ b/resources/tests.mjs
@@ -853,6 +853,66 @@ Suites.push({
],
});
+Suites.push({
+ name: "TodoMVC-Jaspr-Dart2JS-O4",
+ url: "experimental/dart-jaspr-todomvc/dist/out-dart2js-O4/index.html",
+ tags: ["todomvc", "experimental"],
+ disabled: true,
+ async prepare(page) {
+ (await page.waitForElement(".new-todo")).focus();
+ },
+ tests: [
+ new BenchmarkTestStep(`Adding${numberOfItemsToAdd}Items`, (page) => {
+ const newTodo = page.querySelector(".new-todo");
+ for (let i = 0; i < numberOfItemsToAdd; i++) {
+ newTodo.setValue(getTodoText("ja", i));
+ newTodo.dispatchEvent("change");
+ newTodo.enter("keypress");
+ }
+ }),
+ new BenchmarkTestStep("CompletingAllItems", (page) => {
+ const checkboxes = page.querySelectorAll(".toggle");
+ for (let i = 0; i < numberOfItemsToAdd; i++)
+ checkboxes[i].click();
+ }),
+ new BenchmarkTestStep("DeletingAllItems", (page) => {
+ const deleteButtons = page.querySelectorAll(".destroy");
+ for (let i = numberOfItemsToAdd - 1; i >= 0; i--)
+ deleteButtons[i].click();
+ }),
+ ],
+});
+
+Suites.push({
+ name: "TodoMVC-Jaspr-Dart2Wasm-O2",
+ url: "experimental/dart-jaspr-todomvc/dist/out-dart2wasm-O2/index.html",
+ tags: ["todomvc", "experimental"],
+ disabled: true,
+ async prepare(page) {
+ (await page.waitForElement(".new-todo")).focus();
+ },
+ tests: [
+ new BenchmarkTestStep(`Adding${numberOfItemsToAdd}Items`, (page) => {
+ const newTodo = page.querySelector(".new-todo");
+ for (let i = 0; i < numberOfItemsToAdd; i++) {
+ newTodo.setValue(getTodoText("ja", i));
+ newTodo.dispatchEvent("change");
+ newTodo.enter("keypress");
+ }
+ }),
+ new BenchmarkTestStep("CompletingAllItems", (page) => {
+ const checkboxes = page.querySelectorAll(".toggle");
+ for (let i = 0; i < numberOfItemsToAdd; i++)
+ checkboxes[i].click();
+ }),
+ new BenchmarkTestStep("DeletingAllItems", (page) => {
+ const deleteButtons = page.querySelectorAll(".destroy");
+ for (let i = numberOfItemsToAdd - 1; i >= 0; i--)
+ deleteButtons[i].click();
+ }),
+ ],
+});
+
Suites.push({
name: "NewsSite-Next",
url: "resources/newssite/news-next/dist/index.html",