diff --git a/build/web/index.html b/build/web/index.html
new file mode 100644
index 00000000..f3621c7a
--- /dev/null
+++ b/build/web/index.html
@@ -0,0 +1,37 @@
+
+
+
+
+ angel_validate
+
+
+
+
+Passport Registration
+Validation Example
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/web/main.dart.js b/build/web/main.dart.js
new file mode 100644
index 00000000..5e551593
--- /dev/null
+++ b/build/web/main.dart.js
@@ -0,0 +1,4518 @@
+(function(){var supportsDirectProtoAccess=function(){var z=function(){}
+z.prototype={p:{}}
+var y=new z()
+if(!(y.__proto__&&y.__proto__.p===z.prototype.p))return false
+try{if(typeof navigator!="undefined"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Chrome/")>=0)return true
+if(typeof version=="function"&&version.length==0){var x=version()
+if(/^\d+\.\d+\.\d+\.\d+$/.test(x))return true}}catch(w){}return false}()
+function map(a){a=Object.create(null)
+a.x=0
+delete a.x
+return a}var A=map()
+var B=map()
+var C=map()
+var D=map()
+var E=map()
+var F=map()
+var G=map()
+var H=map()
+var J=map()
+var K=map()
+var L=map()
+var M=map()
+var N=map()
+var O=map()
+var P=map()
+var Q=map()
+var R=map()
+var S=map()
+var T=map()
+var U=map()
+var V=map()
+var W=map()
+var X=map()
+var Y=map()
+var Z=map()
+function I(){}init()
+function setupProgram(a,b){"use strict"
+function generateAccessor(a9,b0,b1){var g=a9.split("-")
+var f=g[0]
+var e=f.length
+var d=f.charCodeAt(e-1)
+var c
+if(g.length>1)c=true
+else c=false
+d=d>=60&&d<=64?d-59:d>=123&&d<=126?d-117:d>=37&&d<=43?d-27:0
+if(d){var a0=d&3
+var a1=d>>2
+var a2=f=f.substring(0,e-1)
+var a3=f.indexOf(":")
+if(a3>0){a2=f.substring(0,a3)
+f=f.substring(a3+1)}if(a0){var a4=a0&2?"r":""
+var a5=a0&1?"this":"r"
+var a6="return "+a5+"."+f
+var a7=b1+".prototype.g"+a2+"="
+var a8="function("+a4+"){"+a6+"}"
+if(c)b0.push(a7+"$reflectable("+a8+");\n")
+else b0.push(a7+a8+";\n")}if(a1){var a4=a1&2?"r,v":"v"
+var a5=a1&1?"this":"r"
+var a6=a5+"."+f+"=v"
+var a7=b1+".prototype.s"+a2+"="
+var a8="function("+a4+"){"+a6+"}"
+if(c)b0.push(a7+"$reflectable("+a8+");\n")
+else b0.push(a7+a8+";\n")}}return f}function defineClass(a2,a3){var g=[]
+var f="function "+a2+"("
+var e=""
+var d=""
+for(var c=0;c0){var a6=a5.split("+")
+a5=a6[0]
+var a7=a6[1]
+finishClass(a7)
+var a8=g[a7]
+var a9=a8.prototype
+var b0=g[c1].prototype
+var b1=Object.keys(a9)
+for(var b2=0;b2")addStubs(g,a0,d,false,[])}convertToFastObject(g)
+g=g.__proto__
+g.$deferredAction()}function mixinDeferredActionHelper(c,d){var g
+if(d.hasOwnProperty("$deferredAction"))g=d.$deferredAction
+return function foo(){var f=this
+while(!f.hasOwnProperty("$deferredAction"))f=f.__proto__
+if(g)f.$deferredAction=g
+else{delete f.$deferredAction
+convertToFastObject(f)}c.$deferredAction()
+f.$deferredAction()}}function processClassData(b1,b2,b3){b2=convertToSlowObject(b2)
+var g
+var f=Object.keys(b2)
+var e=false
+var d=supportsDirectProtoAccess&&b1!="c"
+for(var c=0;c0)b2[g].$reflectable=a2}else if(a1===42){b2[g].$defaultValues=b2[a0]
+var a3=b2.$methodsWithOptionalArguments
+if(!a3)b2.$methodsWithOptionalArguments=a3={}
+a3[a0]=g}else{var a4=b2[a0]
+if(a0!=="^"&&a4!=null&&a4.constructor===Array&&a0!=="<>")if(d)e=true
+else addStubs(b2,a4,a0,false,[])
+else g=a0}}if(e)b2.$deferredAction=finishAddStubsHelper
+var a5=b2["^"],a6,a7,a8=a5
+var a9=a8.split(";")
+a8=a9[1]?a9[1].split(","):[]
+a7=a9[0]
+a6=a7.split(":")
+if(a6.length==2){a7=a6[0]
+var b0=a6[1]
+if(b0)b2.$signature=function(b4){return function(){return init.types[b4]}}(b0)}if(a7)b3.pending[b1]=a7
+b3.combinedConstructorFunction+=defineClass(b1,a8)
+b3.constructorsList.push(b1)
+b3.collected[b1]=[m,b2]
+i.push(b1)}function processStatics(a3,a4){var g=Object.keys(a3)
+for(var f=0;f0)a3[a0].$reflectable=a1
+if(d&&d.length)init.typeInformation[a0]=d}else if(c===42){m[a0].$defaultValues=d
+var a2=a3.$methodsWithOptionalArguments
+if(!a2)a3.$methodsWithOptionalArguments=a2={}
+a2[e]=a0}else if(typeof d==="function"){m[a0=e]=d
+h.push(e)
+init.globalFunctions[e]=d}else if(d.constructor===Array)addStubs(m,d,e,true,h)
+else{a0=e
+processClassData(e,d,a4)}}}function addStubs(b2,b3,b4,b5,b6){var g=0,f=b3[g],e
+if(typeof f=="string")e=b3[++g]
+else{e=f
+f=b4}var d=[b2[b4]=b2[f]=e]
+e.$stubName=b4
+b6.push(b4)
+for(g++;g>1
+var a3=(a1&1)===1
+var a4=a1===3
+var a5=a1===1
+var a6=b3[1]
+var a7=a6>>1
+var a8=(a6&1)===1
+var a9=a2+a7!=d[0].length
+var b0=b3[2]
+if(typeof b0=="number")b3[2]=b0+b
+var b1=2*a7+a2+3
+if(a0){e=tearOff(d,b3,b5,b4,a9)
+b2[b4].$getter=e
+e.$getterStub=true
+if(b5){init.globalFunctions[b4]=e
+b6.push(a0)}b2[a0]=e
+d.push(e)
+e.$stubName=a0
+e.$callName=null}}function tearOffGetter(c,d,e,f){return f?new Function("funcs","reflectionInfo","name","H","c","return function tearOff_"+e+y+++"(x) {"+"if (c === null) c = "+"H.bP"+"("+"this, funcs, reflectionInfo, false, [x], name);"+"return new c(this, funcs[0], x, name);"+"}")(c,d,e,H,null):new Function("funcs","reflectionInfo","name","H","c","return function tearOff_"+e+y+++"() {"+"if (c === null) c = "+"H.bP"+"("+"this, funcs, reflectionInfo, false, [], name);"+"return new c(this, funcs[0], null, name);"+"}")(c,d,e,H,null)}function tearOff(c,d,e,f,a0){var g
+return e?function(){if(g===void 0)g=H.bP(this,c,d,true,[],f).prototype
+return g}:tearOffGetter(c,d,f,a0)}var y=0
+if(!init.libraries)init.libraries=[]
+if(!init.mangledNames)init.mangledNames=map()
+if(!init.mangledGlobalNames)init.mangledGlobalNames=map()
+if(!init.statics)init.statics=map()
+if(!init.typeInformation)init.typeInformation=map()
+if(!init.globalFunctions)init.globalFunctions=map()
+var x=init.libraries
+var w=init.mangledNames
+var v=init.mangledGlobalNames
+var u=Object.prototype.hasOwnProperty
+var t=a.length
+var s=map()
+s.collected=map()
+s.pending=map()
+s.constructorsList=[]
+s.combinedConstructorFunction="function $reflectable(fn){fn.$reflectable=1;return fn};\n"+"var $desc;\n"
+for(var r=0;r=z)return H.j(y,x)
+y[x]=w}return y.join(b)},
+C:function(a,b){if(b>>>0!==b||b>=a.length)return H.j(a,b)
+return a[b]},
+gbH:function(a){if(a.length>0)return a[0]
+throw H.b(H.bv())},
+G:function(a,b,c,d,e){var z,y,x
+this.bC(a,"set range")
+P.bG(b,c,a.length,null,null,null)
+z=c-b
+if(z===0)return
+if(e<0)H.r(P.L(e,0,null,"skipCount",null))
+if(e+z>d.length)throw H.b(H.eM())
+if(e=0;--y){x=e+y
+if(x<0||x>=d.length)return H.j(d,x)
+a[b+y]=d[x]}else for(y=0;y=d.length)return H.j(d,x)
+a[b+y]=d[x]}},
+b1:function(a,b,c,d){return this.G(a,b,c,d,0)},
+bQ:function(a,b,c,d){var z,y,x,w,v
+this.at(a,"replace range")
+P.bG(b,c,a.length,null,null,null)
+z=c-b
+y=a.length
+x=b+1
+if(z>=1){w=z-1
+v=y-w
+this.b1(a,b,x,d)
+if(w!==0){this.G(a,x,v,a,c)
+this.si(a,v)}}else{v=y+(1-z)
+this.si(a,v)
+this.G(a,x,v,a,c)
+this.b1(a,b,x,d)}},
+H:function(a,b){var z
+for(z=0;z=a.length||b<0)throw H.b(H.u(a,b))
+return a[b]},
+p:function(a,b,c){this.bC(a,"indexed set")
+if(typeof b!=="number"||Math.floor(b)!==b)throw H.b(H.u(a,b))
+if(b>=a.length||b<0)throw H.b(H.u(a,b))
+a[b]=c},
+$isB:1,
+$asB:I.x,
+$isi:1,
+$asi:null,
+$ise:1,
+$ase:null,
+$isd:1,
+$asd:null,
+q:{
+eO:function(a,b){var z
+if(typeof a!=="number"||Math.floor(a)!==a)throw H.b(P.aF(a,"length","is not an integer"))
+if(a<0||a>4294967295)throw H.b(P.L(a,0,4294967295,"length",null))
+z=H.K(new Array(a),[b])
+z.fixed$length=Array
+return z}}},
+jq:{"^":"aL;$ti"},
+aX:{"^":"c;a,b,c,d,$ti",
+gl:function(){return this.d},
+k:function(){var z,y,x
+z=this.a
+y=z.length
+if(this.b!==y)throw H.b(H.aa(z))
+x=this.c
+if(x>=y){this.d=null
+return!1}this.d=z[x]
+this.c=x+1
+return!0}},
+aM:{"^":"h;",
+aW:function(a,b){return a%b},
+dB:function(a){var z
+if(a>=-2147483648&&a<=2147483647)return a|0
+if(isFinite(a)){z=a<0?Math.ceil(a):Math.floor(a)
+return z+0}throw H.b(new P.q(""+a+".toInt()"))},
+dC:function(a,b){var z,y,x,w
+if(b<2||b>36)throw H.b(P.L(b,2,36,"radix",null))
+z=a.toString(b)
+if(C.b.V(z,z.length-1)!==41)return z
+y=/^([\da-z]+)(?:\.([\da-z]+))?\(e\+(\d+)\)$/.exec(z)
+if(y==null)H.r(new P.q("Unexpected toString result: "+z))
+x=J.F(y)
+z=x.h(y,1)
+w=+x.h(y,3)
+if(x.h(y,2)!=null){z+=x.h(y,2)
+w-=x.h(y,2).length}return z+C.b.b0("0",w)},
+j:function(a){if(a===0&&1/a<0)return"-0.0"
+else return""+a},
+gD:function(a){return a&0x1FFFFFFF},
+F:function(a,b){if(typeof b!=="number")throw H.b(H.M(b))
+return a+b},
+ca:function(a,b){if(typeof b!=="number")throw H.b(H.M(b))
+return a-b},
+a9:function(a,b){return(a|0)===a?a/b|0:this.cO(a,b)},
+cO:function(a,b){var z=a/b
+if(z>=-2147483648&&z<=2147483647)return z|0
+if(z>0){if(z!==1/0)return Math.floor(z)}else if(z>-1/0)return Math.ceil(z)
+throw H.b(new P.q("Result of truncating division is "+H.a(z)+": "+H.a(a)+" ~/ "+b))},
+aL:function(a,b){var z
+if(a>0)z=b>31?0:a>>>b
+else{z=b>31?31:b
+z=a>>z>>>0}return z},
+a3:function(a,b){if(typeof b!=="number")throw H.b(H.M(b))
+return a=a.length)throw H.b(H.u(a,b))
+return a.charCodeAt(b)},
+F:function(a,b){if(typeof b!=="string")throw H.b(P.aF(b,null,null))
+return a+b},
+ds:function(a,b,c){H.dy(c)
+return H.bX(a,b,c)},
+dt:function(a,b,c){return H.iJ(a,b,c,null)},
+c9:function(a,b,c){var z
+if(c>a.length)throw H.b(P.L(c,0,a.length,null,null))
+z=c+b.length
+if(z>a.length)return!1
+return b===a.substring(c,z)},
+c8:function(a,b){return this.c9(a,b,0)},
+al:function(a,b,c){if(c==null)c=a.length
+if(typeof c!=="number"||Math.floor(c)!==c)H.r(H.M(c))
+if(b<0)throw H.b(P.b7(b,null,null))
+if(typeof c!=="number")return H.a9(c)
+if(b>c)throw H.b(P.b7(b,null,null))
+if(c>a.length)throw H.b(P.b7(c,null,null))
+return a.substring(b,c)},
+b3:function(a,b){return this.al(a,b,null)},
+aj:function(a){var z,y,x,w,v
+z=a.trim()
+y=z.length
+if(y===0)return z
+if(this.V(z,0)===133){x=J.eR(z,1)
+if(x===y)return""}else x=0
+w=y-1
+v=this.V(z,w)===133?J.eS(z,w):y
+if(x===0&&v===y)return z
+return z.substring(x,v)},
+b0:function(a,b){var z,y
+if(0>=b)return""
+if(b===1||a.length===0)return a
+if(b!==b>>>0)throw H.b(C.o)
+for(z=a,y="";!0;){if((b&1)===1)y=z+y
+b=b>>>1
+if(b===0)break
+z+=z}return y},
+dj:function(a,b,c){var z=b-a.length
+if(z<=0)return a
+return this.b0(c,z)+a},
+gdz:function(a){return new P.fe(a)},
+cW:function(a,b,c){if(c>a.length)throw H.b(P.L(c,0,a.length,null,null))
+return H.iI(a,b,c)},
+H:function(a,b){return this.cW(a,b,0)},
+gI:function(a){return a.length!==0},
+j:function(a){return a},
+gD:function(a){var z,y,x
+for(z=a.length,y=0,x=0;x>6}y=536870911&y+((67108863&y)<<3)
+y^=y>>11
+return 536870911&y+((16383&y)<<15)},
+gw:function(a){return C.L},
+gi:function(a){return a.length},
+h:function(a,b){if(typeof b!=="number"||Math.floor(b)!==b)throw H.b(H.u(a,b))
+if(b>=a.length||b<0)throw H.b(H.u(a,b))
+return a[b]},
+$isB:1,
+$asB:I.x,
+$isp:1,
+$isbD:1,
+q:{
+ct:function(a){if(a<256)switch(a){case 9:case 10:case 11:case 12:case 13:case 32:case 133:case 160:return!0
+default:return!1}switch(a){case 5760:case 6158:case 8192:case 8193:case 8194:case 8195:case 8196:case 8197:case 8198:case 8199:case 8200:case 8201:case 8202:case 8232:case 8233:case 8239:case 8287:case 12288:case 65279:return!0
+default:return!1}},
+eR:function(a,b){var z,y
+for(z=a.length;b0;b=z){z=b-1
+y=C.b.V(a,z)
+if(y!==32&&y!==13&&!J.ct(y))break}return b}}}}],["","",,H,{"^":"",
+bv:function(){return new P.ba("No element")},
+eN:function(){return new P.ba("Too many elements")},
+eM:function(){return new P.ba("Too few elements")},
+e:{"^":"d;$ti",$ase:null},
+af:{"^":"e;$ti",
+gn:function(a){return new H.bz(this,this.gi(this),0,null,[H.t(this,"af",0)])},
+B:function(a,b){var z,y
+z=this.gi(this)
+for(y=0;y=z.length)return H.j(z,y)
+z[y]=x}return z},
+a1:function(a){return this.ai(a,!0)}},
+bz:{"^":"c;a,b,c,d,$ti",
+gl:function(){return this.d},
+k:function(){var z,y,x,w
+z=this.a
+y=J.F(z)
+x=y.gi(z)
+if(this.b!==x)throw H.b(new P.D(z))
+w=this.c
+if(w>=x){this.d=null
+return!1}this.d=y.C(z,w);++this.c
+return!0}},
+b2:{"^":"d;a,b,$ti",
+gn:function(a){return new H.f3(null,J.Z(this.a),this.b,this.$ti)},
+gi:function(a){return J.O(this.a)},
+gt:function(a){return J.e_(this.a)},
+C:function(a,b){return this.b.$1(J.aW(this.a,b))},
+$asd:function(a,b){return[b]},
+q:{
+b3:function(a,b,c,d){if(!!J.m(a).$ise)return new H.bt(a,b,[c,d])
+return new H.b2(a,b,[c,d])}}},
+bt:{"^":"b2;a,b,$ti",$ise:1,
+$ase:function(a,b){return[b]},
+$asd:function(a,b){return[b]}},
+f3:{"^":"aK;a,b,c,$ti",
+k:function(){var z=this.b
+if(z.k()){this.a=this.c.$1(z.gl())
+return!0}this.a=null
+return!1},
+gl:function(){return this.a},
+$asaK:function(a,b){return[b]}},
+a2:{"^":"af;a,b,$ti",
+gi:function(a){return J.O(this.a)},
+C:function(a,b){return this.b.$1(J.aW(this.a,b))},
+$asaf:function(a,b){return[b]},
+$ase:function(a,b){return[b]},
+$asd:function(a,b){return[b]}},
+fJ:{"^":"d;a,b,$ti",
+gn:function(a){return new H.fK(J.Z(this.a),this.b,this.$ti)},
+J:function(a,b){return new H.b2(this,b,[H.J(this,0),null])}},
+fK:{"^":"aK;a,b,$ti",
+k:function(){var z,y
+for(z=this.a,y=this.b;z.k();)if(y.$1(z.gl())===!0)return!0
+return!1},
+gl:function(){return this.a.gl()}},
+cR:{"^":"d;a,b,$ti",
+gn:function(a){return new H.fz(J.Z(this.a),this.b,this.$ti)},
+q:{
+fy:function(a,b,c){if(b<0)throw H.b(P.ac(b))
+if(!!J.m(a).$ise)return new H.ep(a,b,[c])
+return new H.cR(a,b,[c])}}},
+ep:{"^":"cR;a,b,$ti",
+gi:function(a){var z,y
+z=J.O(this.a)
+y=this.b
+if(z>y)return y
+return z},
+$ise:1,
+$ase:null,
+$asd:null},
+fz:{"^":"aK;a,b,$ti",
+k:function(){if(--this.b>=0)return this.a.k()
+this.b=-1
+return!1},
+gl:function(){if(this.b<0)return
+return this.a.gl()}},
+cN:{"^":"d;a,b,$ti",
+gn:function(a){return new H.fn(J.Z(this.a),this.b,this.$ti)},
+b4:function(a,b,c){var z=this.b
+if(z<0)H.r(P.L(z,0,null,"count",null))},
+q:{
+fm:function(a,b,c){var z
+if(!!J.m(a).$ise){z=new H.eo(a,b,[c])
+z.b4(a,b,c)
+return z}return H.fl(a,b,c)},
+fl:function(a,b,c){var z=new H.cN(a,b,[c])
+z.b4(a,b,c)
+return z}}},
+eo:{"^":"cN;a,b,$ti",
+gi:function(a){var z=J.O(this.a)-this.b
+if(z>=0)return z
+return 0},
+$ise:1,
+$ase:null,
+$asd:null},
+fn:{"^":"aK;a,b,$ti",
+k:function(){var z,y
+for(z=this.a,y=0;y=y)return H.j(z,-1)
+x=z.pop()
+y=init.globalState.f.a
+w=y.b
+v=y.a
+u=v.length
+w=(w-1&u-1)>>>0
+y.b=w
+if(w<0||w>=u)return H.j(v,w)
+v[w]=x
+if(w===y.c)y.bf();++y.d}this.y=!1}this.aN()},
+cT:function(a,b){var z,y,x
+if(this.ch==null)this.ch=[]
+for(z=J.m(a),y=0;x=this.ch,y=z.length)return H.j(z,x)
+z[x]=b
+return}x.push(a)
+this.ch.push(b)},
+dn:function(a){var z,y,x
+if(this.ch==null)return
+for(z=J.m(a),y=0;x=this.ch,y0||this.y||!this.x)init.globalState.z.p(0,this.a,this)
+else this.aR()},
+aR:[function(){var z,y,x,w,v
+z=this.cx
+if(z!=null)z.R(0)
+for(z=this.b,y=z.gbX(z),y=y.gn(y);y.k();)y.gl().cs()
+z.R(0)
+this.c.R(0)
+init.globalState.z.ag(0,this.a)
+this.dx.R(0)
+if(this.ch!=null){for(x=0;z=this.ch,y=z.length,x=y)return H.j(z,v)
+w.W(z[v])}this.ch=null}},"$0","gdh",0,0,2]},
+hk:{"^":"f:2;a,b",
+$0:function(){this.a.W(this.b)}},
+h2:{"^":"c;a,b",
+cY:function(){var z=this.a
+if(z.b===z.c)return
+return z.bP()},
+bU:function(){var z,y,x
+z=this.cY()
+if(z==null){if(init.globalState.e!=null)if(init.globalState.z.E(init.globalState.e.a))if(init.globalState.r===!0){y=init.globalState.e.b
+y=y.gt(y)}else y=!1
+else y=!1
+else y=!1
+if(y)H.r(P.b0("Program exited with open ReceivePorts."))
+y=init.globalState
+if(y.x===!0){x=y.z
+x=x.gt(x)&&y.f.b===0}else x=!1
+if(x){y=y.Q
+x=P.W(["command","close"])
+x=new H.ak(!0,new P.dg(0,null,null,null,null,null,0,[null,P.k])).L(x)
+y.toString
+self.postMessage(x)}return!1}z.dl()
+return!0},
+br:function(){if(self.window!=null)new H.h3(this).$0()
+else for(;this.bU(););},
+ah:function(){var z,y,x,w,v
+if(init.globalState.x!==!0)this.br()
+else try{this.br()}catch(x){w=H.y(x)
+z=w
+y=H.H(x)
+w=init.globalState.Q
+v=P.W(["command","error","msg",H.a(z)+"\n"+H.a(y)])
+v=new H.ak(!0,P.at(null,P.k)).L(v)
+w.toString
+self.postMessage(v)}}},
+h3:{"^":"f:2;a",
+$0:function(){if(!this.a.bU())return
+P.fF(C.i,this)}},
+aT:{"^":"c;a,b,c",
+dl:function(){var z=this.a
+if(z.y){z.z.push(this)
+return}z.ac(this.b)}},
+ho:{"^":"c;"},
+eG:{"^":"f:1;a,b,c,d,e,f",
+$0:function(){H.eH(this.a,this.b,this.c,this.d,this.e,this.f)}},
+eI:{"^":"f:2;a,b,c,d,e",
+$0:function(){var z,y,x
+z=this.e
+z.x=!0
+if(this.d!==!0)this.a.$1(this.c)
+else{y=this.a
+x=H.a7()
+if(H.T(x,[x,x]).M(y))y.$2(this.b,this.c)
+else if(H.T(x,[x]).M(y))y.$1(this.b)
+else y.$0()}z.aN()}},
+d8:{"^":"c;"},
+bf:{"^":"d8;b,a",
+W:function(a){var z,y,x
+z=init.globalState.z.h(0,this.a)
+if(z==null)return
+y=this.b
+if(y.gbi())return
+x=H.hJ(a)
+if(z.gcX()===y){y=J.F(x)
+switch(y.h(x,0)){case"pause":z.by(y.h(x,1),y.h(x,2))
+break
+case"resume":z.dq(y.h(x,1))
+break
+case"add-ondone":z.cT(y.h(x,1),y.h(x,2))
+break
+case"remove-ondone":z.dn(y.h(x,1))
+break
+case"set-errors-fatal":z.c6(y.h(x,1),y.h(x,2))
+break
+case"ping":z.d5(y.h(x,1),y.h(x,2),y.h(x,3))
+break
+case"kill":z.d4(y.h(x,1),y.h(x,2))
+break
+case"getErrors":y=y.h(x,1)
+z.dx.m(0,y)
+break
+case"stopErrors":y=y.h(x,1)
+z.dx.ag(0,y)
+break}return}init.globalState.f.a.P(new H.aT(z,new H.ht(this,x),"receive"))},
+v:function(a,b){if(b==null)return!1
+return b instanceof H.bf&&J.N(this.b,b.b)},
+gD:function(a){return this.b.gaF()}},
+ht:{"^":"f:1;a,b",
+$0:function(){var z=this.a.b
+if(!z.gbi())z.cn(this.b)}},
+bM:{"^":"d8;b,c,a",
+W:function(a){var z,y,x
+z=P.W(["command","message","port",this,"msg",a])
+y=new H.ak(!0,P.at(null,P.k)).L(z)
+if(init.globalState.x===!0){init.globalState.Q.toString
+self.postMessage(y)}else{x=init.globalState.ch.h(0,this.b)
+if(x!=null)x.postMessage(y)}},
+v:function(a,b){if(b==null)return!1
+return b instanceof H.bM&&J.N(this.b,b.b)&&J.N(this.a,b.a)&&J.N(this.c,b.c)},
+gD:function(a){var z,y,x
+z=this.b
+if(typeof z!=="number")return z.b2()
+y=this.a
+if(typeof y!=="number")return y.b2()
+x=this.c
+if(typeof x!=="number")return H.a9(x)
+return(z<<16^y<<8^x)>>>0}},
+b8:{"^":"c;aF:a<,b,bi:c<",
+cs:function(){this.c=!0
+this.b=null},
+cn:function(a){if(this.c)return
+this.b.$1(a)},
+$isfa:1},
+fB:{"^":"c;a,b,c",
+cg:function(a,b){var z,y
+if(a===0)z=self.setTimeout==null||init.globalState.x===!0
+else z=!1
+if(z){this.c=1
+z=init.globalState.f
+y=init.globalState.d
+z.a.P(new H.aT(y,new H.fD(this,b),"timer"))
+this.b=!0}else if(self.setTimeout!=null){++init.globalState.f.b
+this.c=self.setTimeout(H.az(new H.fE(this,b),0),a)}else throw H.b(new P.q("Timer greater than 0."))},
+q:{
+fC:function(a,b){var z=new H.fB(!0,!1,null)
+z.cg(a,b)
+return z}}},
+fD:{"^":"f:2;a,b",
+$0:function(){this.a.c=null
+this.b.$0()}},
+fE:{"^":"f:2;a,b",
+$0:function(){this.a.c=null;--init.globalState.f.b
+this.b.$0()}},
+ad:{"^":"c;aF:a<",
+gD:function(a){var z=this.a
+if(typeof z!=="number")return z.dE()
+z=C.e.aL(z,0)^C.e.a9(z,4294967296)
+z=(~z>>>0)+(z<<15>>>0)&4294967295
+z=((z^z>>>12)>>>0)*5&4294967295
+z=((z^z>>>4)>>>0)*2057&4294967295
+return(z^z>>>16)>>>0},
+v:function(a,b){var z,y
+if(b==null)return!1
+if(b===this)return!0
+if(b instanceof H.ad){z=this.a
+y=b.a
+return z==null?y==null:z===y}return!1}},
+ak:{"^":"c;a,b",
+L:[function(a){var z,y,x,w,v
+if(a==null||typeof a==="string"||typeof a==="number"||typeof a==="boolean")return a
+z=this.b
+y=z.h(0,a)
+if(y!=null)return["ref",y]
+z.p(0,a,z.gi(z))
+z=J.m(a)
+if(!!z.$iscy)return["buffer",a]
+if(!!z.$isb4)return["typed",a]
+if(!!z.$isB)return this.c2(a)
+if(!!z.$iseD){x=this.gc_()
+w=a.gS()
+w=H.b3(w,x,H.t(w,"d",0),null)
+w=P.Y(w,!0,H.t(w,"d",0))
+z=z.gbX(a)
+z=H.b3(z,x,H.t(z,"d",0),null)
+return["map",w,P.Y(z,!0,H.t(z,"d",0))]}if(!!z.$iscs)return this.c3(a)
+if(!!z.$ish)this.bW(a)
+if(!!z.$isfa)this.ak(a,"RawReceivePorts can't be transmitted:")
+if(!!z.$isbf)return this.c4(a)
+if(!!z.$isbM)return this.c5(a)
+if(!!z.$isf){v=a.$static_name
+if(v==null)this.ak(a,"Closures can't be transmitted:")
+return["function",v]}if(!!z.$isad)return["capability",a.a]
+if(!(a instanceof P.c))this.bW(a)
+return["dart",init.classIdExtractor(a),this.c1(init.classFieldsExtractor(a))]},"$1","gc_",2,0,0],
+ak:function(a,b){throw H.b(new P.q(H.a(b==null?"Can't transmit:":b)+" "+H.a(a)))},
+bW:function(a){return this.ak(a,null)},
+c2:function(a){var z=this.c0(a)
+if(!!a.fixed$length)return["fixed",z]
+if(!a.fixed$length)return["extendable",z]
+if(!a.immutable$list)return["mutable",z]
+if(a.constructor===Array)return["const",z]
+this.ak(a,"Can't serialize indexable: ")},
+c0:function(a){var z,y,x
+z=[]
+C.a.si(z,a.length)
+for(y=0;y=z.length)return H.j(z,y)
+z[y]=x}return z},
+c1:function(a){var z
+for(z=0;z=y.length)return H.j(y,x)
+y[x]=w}return["js-object",z,y]},
+c5:function(a){if(this.a)return["sendport",a.b,a.a,a.c]
+return["raw sendport",a]},
+c4:function(a){if(this.a)return["sendport",init.globalState.b,a.a,a.b.gaF()]
+return["raw sendport",a]}},
+bd:{"^":"c;a,b",
+Y:[function(a){var z,y,x,w,v,u
+if(a==null||typeof a==="string"||typeof a==="number"||typeof a==="boolean")return a
+if(typeof a!=="object"||a===null||a.constructor!==Array)throw H.b(P.ac("Bad serialized message: "+H.a(a)))
+switch(C.a.gbH(a)){case"ref":if(1>=a.length)return H.j(a,1)
+z=a[1]
+y=this.b
+if(z>>>0!==z||z>=y.length)return H.j(y,z)
+return y[z]
+case"buffer":if(1>=a.length)return H.j(a,1)
+x=a[1]
+this.b.push(x)
+return x
+case"typed":if(1>=a.length)return H.j(a,1)
+x=a[1]
+this.b.push(x)
+return x
+case"fixed":if(1>=a.length)return H.j(a,1)
+x=a[1]
+this.b.push(x)
+y=H.K(this.ab(x),[null])
+y.fixed$length=Array
+return y
+case"extendable":if(1>=a.length)return H.j(a,1)
+x=a[1]
+this.b.push(x)
+return H.K(this.ab(x),[null])
+case"mutable":if(1>=a.length)return H.j(a,1)
+x=a[1]
+this.b.push(x)
+return this.ab(x)
+case"const":if(1>=a.length)return H.j(a,1)
+x=a[1]
+this.b.push(x)
+y=H.K(this.ab(x),[null])
+y.fixed$length=Array
+return y
+case"map":return this.d0(a)
+case"sendport":return this.d1(a)
+case"raw sendport":if(1>=a.length)return H.j(a,1)
+x=a[1]
+this.b.push(x)
+return x
+case"js-object":return this.d_(a)
+case"function":if(1>=a.length)return H.j(a,1)
+x=init.globalFunctions[a[1]]()
+this.b.push(x)
+return x
+case"capability":if(1>=a.length)return H.j(a,1)
+return new H.ad(a[1])
+case"dart":y=a.length
+if(1>=y)return H.j(a,1)
+w=a[1]
+if(2>=y)return H.j(a,2)
+v=a[2]
+u=init.instanceFromClassId(w)
+this.b.push(u)
+this.ab(v)
+return init.initializeEmptyInstance(w,u,v)
+default:throw H.b("couldn't deserialize: "+H.a(a))}},"$1","gcZ",2,0,0],
+ab:function(a){var z,y,x
+z=J.F(a)
+y=0
+while(!0){x=z.gi(a)
+if(typeof x!=="number")return H.a9(x)
+if(!(y=z)return H.j(a,1)
+y=a[1]
+if(2>=z)return H.j(a,2)
+x=a[2]
+w=P.a1()
+this.b.push(w)
+y=J.c3(y,this.gcZ()).a1(0)
+for(z=J.F(y),v=J.F(x),u=0;u=y.length)return H.j(y,u)
+w.p(0,y[u],this.Y(v.h(x,u)))}return w},
+d1:function(a){var z,y,x,w,v,u,t
+z=a.length
+if(1>=z)return H.j(a,1)
+y=a[1]
+if(2>=z)return H.j(a,2)
+x=a[2]
+if(3>=z)return H.j(a,3)
+w=a[3]
+if(J.N(y,init.globalState.b)){v=init.globalState.z.h(0,x)
+if(v==null)return
+u=v.aT(w)
+if(u==null)return
+t=new H.bf(u,x)}else t=new H.bM(y,w,x)
+this.b.push(t)
+return t},
+d_:function(a){var z,y,x,w,v,u,t
+z=a.length
+if(1>=z)return H.j(a,1)
+y=a[1]
+if(2>=z)return H.j(a,2)
+x=a[2]
+w={}
+this.b.push(w)
+z=J.F(y)
+v=J.F(x)
+u=0
+while(!0){t=z.gi(y)
+if(typeof t!=="number")return H.a9(t)
+if(!(u=z.length)return H.j(z,3)
+y=z[3]
+if(y!=null)return parseInt(a,10)
+if(z[2]!=null)return parseInt(a,16)
+return H.cG(a,c)},
+cF:function(a,b){return b.$1(a)},
+f8:function(a,b){var z,y
+if(!/^\s*[+-]?(?:Infinity|NaN|(?:\.\d+|\d+(?:\.\d*)?)(?:[eE][+-]?\d+)?)\s*$/.test(a))return H.cF(a,b)
+z=parseFloat(a)
+if(isNaN(z)){y=C.b.aj(a)
+if(y==="NaN"||y==="+NaN"||y==="-NaN")return z
+return H.cF(a,b)}return z},
+bF:function(a){var z,y,x,w,v,u,t,s
+z=J.m(a)
+y=z.constructor
+if(typeof y=="function"){x=y.name
+w=typeof x==="string"?x:null}else w=null
+if(w==null||z===C.q||!!J.m(a).$isaS){v=C.k(a)
+if(v==="Object"){u=a.constructor
+if(typeof u=="function"){t=String(u).match(/^\s*function\s*([\w$]*)\s*\(/)
+s=t==null?null:t[1]
+if(typeof s==="string"&&/^\w+$/.test(s))w=s}if(w==null)w=v}else w=v}w=w
+if(w.length>1&&C.b.V(w,0)===36)w=C.b.b3(w,1)
+return function(b,c){return b.replace(/[^<,> ]+/g,function(d){return c[d]||d})}(w+H.bU(H.bR(a),0,null),init.mangledGlobalNames)},
+b6:function(a){return"Instance of '"+H.bF(a)+"'"},
+bE:function(a,b){if(a==null||typeof a==="boolean"||typeof a==="number"||typeof a==="string")throw H.b(H.M(a))
+return a[b]},
+cJ:function(a,b,c){if(a==null||typeof a==="boolean"||typeof a==="number"||typeof a==="string")throw H.b(H.M(a))
+a[b]=c},
+a9:function(a){throw H.b(H.M(a))},
+j:function(a,b){if(a==null)J.O(a)
+throw H.b(H.u(a,b))},
+u:function(a,b){var z,y
+if(typeof b!=="number"||Math.floor(b)!==b)return new P.a_(!0,b,"index",null)
+z=J.O(a)
+if(!(b<0)){if(typeof z!=="number")return H.a9(z)
+y=b>=z}else y=!0
+if(y)return P.ae(b,a,"index",null,z)
+return P.b7(b,"index",null)},
+M:function(a){return new P.a_(!0,a,null,null)},
+dy:function(a){if(typeof a!=="string")throw H.b(H.M(a))
+return a},
+b:function(a){var z
+if(a==null)a=new P.cE()
+z=new Error()
+z.dartException=a
+if("defineProperty" in Object){Object.defineProperty(z,"message",{get:H.dT})
+z.name=""}else z.toString=H.dT
+return z},
+dT:function(){return J.P(this.dartException)},
+r:function(a){throw H.b(a)},
+aa:function(a){throw H.b(new P.D(a))},
+y:function(a){var z,y,x,w,v,u,t,s,r,q,p,o,n,m,l
+z=new H.iL(a)
+if(a==null)return
+if(typeof a!=="object")return a
+if("dartException" in a)return z.$1(a.dartException)
+else if(!("message" in a))return a
+y=a.message
+if("number" in a&&typeof a.number=="number"){x=a.number
+w=x&65535
+if((C.c.aL(x,16)&8191)===10)switch(w){case 438:return z.$1(H.by(H.a(y)+" (Error "+w+")",null))
+case 445:case 5007:v=H.a(y)+" (Error "+w+")"
+return z.$1(new H.cD(v,null))}}if(a instanceof TypeError){u=$.$get$cT()
+t=$.$get$cU()
+s=$.$get$cV()
+r=$.$get$cW()
+q=$.$get$d_()
+p=$.$get$d0()
+o=$.$get$cY()
+$.$get$cX()
+n=$.$get$d2()
+m=$.$get$d1()
+l=u.N(y)
+if(l!=null)return z.$1(H.by(y,l))
+else{l=t.N(y)
+if(l!=null){l.method="call"
+return z.$1(H.by(y,l))}else{l=s.N(y)
+if(l==null){l=r.N(y)
+if(l==null){l=q.N(y)
+if(l==null){l=p.N(y)
+if(l==null){l=o.N(y)
+if(l==null){l=r.N(y)
+if(l==null){l=n.N(y)
+if(l==null){l=m.N(y)
+v=l!=null}else v=!0}else v=!0}else v=!0}else v=!0}else v=!0}else v=!0}else v=!0
+if(v)return z.$1(new H.cD(y,l==null?null:l.method))}}return z.$1(new H.fH(typeof y==="string"?y:""))}if(a instanceof RangeError){if(typeof y==="string"&&y.indexOf("call stack")!==-1)return new P.cO()
+y=function(b){try{return String(b)}catch(k){}return null}(a)
+return z.$1(new P.a_(!1,null,null,typeof y==="string"?y.replace(/^RangeError:\s*/,""):y))}if(typeof InternalError=="function"&&a instanceof InternalError)if(typeof y==="string"&&y==="too much recursion")return new P.cO()
+return a},
+H:function(a){var z
+if(a==null)return new H.di(a,null)
+z=a.$cachedTrace
+if(z!=null)return z
+return a.$cachedTrace=new H.di(a,null)},
+iw:function(a){if(a==null||typeof a!='object')return J.U(a)
+else return H.a4(a)},
+i9:function(a,b){var z,y,x,w
+z=a.length
+for(y=0;y=27
+if(v)return H.ed(y,!w,z,b)
+if(y===0){w=$.Q
+$.Q=J.aC(w,1)
+u="self"+H.a(w)
+w="return function(){var "+u+" = this."
+v=$.ap
+if(v==null){v=H.aZ("self")
+$.ap=v}return new Function(w+H.a(v)+";return "+u+"."+H.a(z)+"();}")()}t="abcdefghijklmnopqrstuvwxyz".split("").splice(0,y).join(",")
+w=$.Q
+$.Q=J.aC(w,1)
+t+=H.a(w)
+w="return function("+t+"){return this."
+v=$.ap
+if(v==null){v=H.aZ("self")
+$.ap=v}return new Function(w+H.a(v)+"."+H.a(z)+"("+t+");}")()},
+ee:function(a,b,c,d){var z,y
+z=H.bs
+y=H.c9
+switch(b?-1:a){case 0:throw H.b(new H.ff("Intercepted function with no arguments."))
+case 1:return function(e,f,g){return function(){return f(this)[e](g(this))}}(c,z,y)
+case 2:return function(e,f,g){return function(h){return f(this)[e](g(this),h)}}(c,z,y)
+case 3:return function(e,f,g){return function(h,i){return f(this)[e](g(this),h,i)}}(c,z,y)
+case 4:return function(e,f,g){return function(h,i,j){return f(this)[e](g(this),h,i,j)}}(c,z,y)
+case 5:return function(e,f,g){return function(h,i,j,k){return f(this)[e](g(this),h,i,j,k)}}(c,z,y)
+case 6:return function(e,f,g){return function(h,i,j,k,l){return f(this)[e](g(this),h,i,j,k,l)}}(c,z,y)
+default:return function(e,f,g,h){return function(){h=[g(this)]
+Array.prototype.push.apply(h,arguments)
+return e.apply(f(this),h)}}(d,z,y)}},
+ef:function(a,b){var z,y,x,w,v,u,t,s
+z=H.ea()
+y=$.c8
+if(y==null){y=H.aZ("receiver")
+$.c8=y}x=b.$stubName
+w=b.length
+v=a[x]
+u=b==null?v==null:b===v
+t=!u||w>=28
+if(t)return H.ee(w,!u,x,b)
+if(w===1){y="return function(){return this."+H.a(z)+"."+H.a(x)+"(this."+H.a(y)+");"
+u=$.Q
+$.Q=J.aC(u,1)
+return new Function(y+H.a(u)+"}")()}s="abcdefghijklmnopqrstuvwxyz".split("").splice(0,w-1).join(",")
+y="return function("+s+"){return this."+H.a(z)+"."+H.a(x)+"(this."+H.a(y)+", "+s+");"
+u=$.Q
+$.Q=J.aC(u,1)
+return new Function(y+H.a(u)+"}")()},
+bP:function(a,b,c,d,e,f){var z
+b.fixed$length=Array
+if(!!J.m(c).$isi){c.fixed$length=Array
+z=c}else z=c
+return H.eg(a,b,z,!!d,e,f)},
+iF:function(a,b){var z=J.F(b)
+throw H.b(H.ec(H.bF(a),z.al(b,3,z.gi(b))))},
+dF:function(a,b){var z
+if(a!=null)z=(typeof a==="object"||typeof a==="function")&&J.m(a)[b]
+else z=!0
+if(z)return a
+H.iF(a,b)},
+iK:function(a){throw H.b(new P.ek("Cyclic initialization for static "+H.a(a)))},
+T:function(a,b,c){return new H.fg(a,b,c,null)},
+bg:function(a,b){var z=a.builtin$cls
+if(b==null||b.length===0)return new H.fi(z)
+return new H.fh(z,b,null)},
+a7:function(){return C.n},
+bo:function(){return(Math.random()*0x100000000>>>0)+(Math.random()*0x100000000>>>0)*4294967296},
+dB:function(a){return init.getIsolateTag(a)},
+w:function(a){return new H.bc(a,null)},
+K:function(a,b){a.$ti=b
+return a},
+bR:function(a){if(a==null)return
+return a.$ti},
+dC:function(a,b){return H.dS(a["$as"+H.a(b)],H.bR(a))},
+t:function(a,b,c){var z=H.dC(a,b)
+return z==null?null:z[c]},
+J:function(a,b){var z=H.bR(a)
+return z==null?null:z[b]},
+dP:function(a,b){if(a==null)return"dynamic"
+else if(typeof a==="object"&&a!==null&&a.constructor===Array)return a[0].builtin$cls+H.bU(a,1,b)
+else if(typeof a=="function")return a.builtin$cls
+else if(typeof a==="number"&&Math.floor(a)===a)return C.c.j(a)
+else return},
+bU:function(a,b,c){var z,y,x,w,v,u
+if(a==null)return""
+z=new P.aR("")
+for(y=b,x=!0,w=!0,v="";y"},
+dD:function(a){var z=J.m(a).constructor.builtin$cls
+if(a==null)return z
+return z+H.bU(a.$ti,0,null)},
+dS:function(a,b){if(a==null)return b
+a=a.apply(null,b)
+if(a==null)return
+if(typeof a==="object"&&a!==null&&a.constructor===Array)return a
+if(typeof a=="function")return a.apply(null,b)
+return b},
+hU:function(a,b){var z,y
+if(a==null||b==null)return!0
+z=a.length
+for(y=0;ys)return!1
+if(t+r":z.$1(a))},
+kn:function(a){return H.a4(a)},
+km:function(a,b,c){Object.defineProperty(a,b,{value:c,enumerable:false,writable:true,configurable:true})},
+iq:function(a){var z,y,x,w,v,u
+z=$.bS.$1(a)
+y=$.bi[z]
+if(y!=null){Object.defineProperty(a,init.dispatchPropertyName,{value:y,enumerable:false,writable:true,configurable:true})
+return y.i}x=$.bk[z]
+if(x!=null)return x
+w=init.interceptorsByTag[z]
+if(w==null){z=$.dv.$2(a,z)
+if(z!=null){y=$.bi[z]
+if(y!=null){Object.defineProperty(a,init.dispatchPropertyName,{value:y,enumerable:false,writable:true,configurable:true})
+return y.i}x=$.bk[z]
+if(x!=null)return x
+w=init.interceptorsByTag[z]}}if(w==null)return
+x=w.prototype
+v=z[0]
+if(v==="!"){y=H.bV(x)
+$.bi[z]=y
+Object.defineProperty(a,init.dispatchPropertyName,{value:y,enumerable:false,writable:true,configurable:true})
+return y.i}if(v==="~"){$.bk[z]=x
+return x}if(v==="-"){u=H.bV(x)
+Object.defineProperty(Object.getPrototypeOf(a),init.dispatchPropertyName,{value:u,enumerable:false,writable:true,configurable:true})
+return u.i}if(v==="+")return H.dM(a,x)
+if(v==="*")throw H.b(new P.d3(z))
+if(init.leafTags[z]===true){u=H.bV(x)
+Object.defineProperty(Object.getPrototypeOf(a),init.dispatchPropertyName,{value:u,enumerable:false,writable:true,configurable:true})
+return u.i}else return H.dM(a,x)},
+dM:function(a,b){var z=Object.getPrototypeOf(a)
+Object.defineProperty(z,init.dispatchPropertyName,{value:J.bm(b,z,null,null),enumerable:false,writable:true,configurable:true})
+return b},
+bV:function(a){return J.bm(a,!1,null,!!a.$isE)},
+iu:function(a,b,c){var z=b.prototype
+if(init.leafTags[a]===true)return J.bm(z,!1,null,!!z.$isE)
+else return J.bm(z,c,null,null)},
+ih:function(){if(!0===$.bT)return
+$.bT=!0
+H.ii()},
+ii:function(){var z,y,x,w,v,u,t,s
+$.bi=Object.create(null)
+$.bk=Object.create(null)
+H.ic()
+z=init.interceptorsByTag
+y=Object.getOwnPropertyNames(z)
+if(typeof window!="undefined"){window
+x=function(){}
+for(w=0;w=0},
+bX:function(a,b,c){var z,y,x,w
+H.dy(c)
+if(typeof b==="string")if(b==="")if(a==="")return c
+else{z=a.length
+y=H.a(c)
+for(x=0;x>1,x>>1,(x&1)===1,z[2],null)}}},
+fG:{"^":"c;a,b,c,d,e,f",
+N:function(a){var z,y,x
+z=new RegExp(this.a).exec(a)
+if(z==null)return
+y=Object.create(null)
+x=this.b
+if(x!==-1)y.arguments=z[x+1]
+x=this.c
+if(x!==-1)y.argumentsExpr=z[x+1]
+x=this.d
+if(x!==-1)y.expr=z[x+1]
+x=this.e
+if(x!==-1)y.method=z[x+1]
+x=this.f
+if(x!==-1)y.receiver=z[x+1]
+return y},
+q:{
+S:function(a){var z,y,x,w,v,u
+a=a.replace(String({}),'$receiver$').replace(/[[\]{}()*+?.\\^$|]/g,"\\$&")
+z=a.match(/\\\$[a-zA-Z]+\\\$/g)
+if(z==null)z=[]
+y=z.indexOf("\\$arguments\\$")
+x=z.indexOf("\\$argumentsExpr\\$")
+w=z.indexOf("\\$expr\\$")
+v=z.indexOf("\\$method\\$")
+u=z.indexOf("\\$receiver\\$")
+return new H.fG(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])*)'),y,x,w,v,u)},
+bb:function(a){return function($expr$){var $argumentsExpr$='$arguments$'
+try{$expr$.$method$($argumentsExpr$)}catch(z){return z.message}}(a)},
+cZ:function(a){return function($expr$){try{$expr$.$method$}catch(z){return z.message}}(a)}}},
+cD:{"^":"z;a,b",
+j:function(a){var z=this.b
+if(z==null)return"NullError: "+H.a(this.a)
+return"NullError: method not found: '"+H.a(z)+"' on null"}},
+eV:{"^":"z;a,b,c",
+j:function(a){var z,y
+z=this.b
+if(z==null)return"NoSuchMethodError: "+H.a(this.a)
+y=this.c
+if(y==null)return"NoSuchMethodError: method not found: '"+H.a(z)+"' ("+H.a(this.a)+")"
+return"NoSuchMethodError: method not found: '"+H.a(z)+"' on '"+H.a(y)+"' ("+H.a(this.a)+")"},
+q:{
+by:function(a,b){var z,y
+z=b==null
+y=z?null:b.method
+return new H.eV(a,y,z?null:b.receiver)}}},
+fH:{"^":"z;a",
+j:function(a){var z=this.a
+return z.length===0?"Error":"Error: "+z}},
+iL:{"^":"f:0;a",
+$1:function(a){if(!!J.m(a).$isz)if(a.$thrownJsError==null)a.$thrownJsError=this.a
+return a}},
+di:{"^":"c;a,b",
+j:function(a){var z,y
+z=this.b
+if(z!=null)return z
+z=this.a
+y=z!==null&&typeof z==="object"?z.stack:null
+z=y==null?"":y
+this.b=z
+return z}},
+ik:{"^":"f:1;a",
+$0:function(){return this.a.$0()}},
+il:{"^":"f:1;a,b",
+$0:function(){return this.a.$1(this.b)}},
+im:{"^":"f:1;a,b,c",
+$0:function(){return this.a.$2(this.b,this.c)}},
+io:{"^":"f:1;a,b,c,d",
+$0:function(){return this.a.$3(this.b,this.c,this.d)}},
+ip:{"^":"f:1;a,b,c,d,e",
+$0:function(){return this.a.$4(this.b,this.c,this.d,this.e)}},
+f:{"^":"c;",
+j:function(a){return"Closure '"+H.bF(this)+"'"},
+gbZ:function(){return this},
+$isbu:1,
+gbZ:function(){return this}},
+cS:{"^":"f;"},
+fo:{"^":"cS;",
+j:function(a){var z=this.$static_name
+if(z==null)return"Closure of unknown static method"
+return"Closure '"+z+"'"}},
+br:{"^":"cS;a,b,c,d",
+v:function(a,b){if(b==null)return!1
+if(this===b)return!0
+if(!(b instanceof H.br))return!1
+return this.a===b.a&&this.b===b.b&&this.c===b.c},
+gD:function(a){var z,y
+z=this.c
+if(z==null)y=H.a4(this.a)
+else y=typeof z!=="object"?J.U(z):H.a4(z)
+z=H.a4(this.b)
+if(typeof y!=="number")return y.dF()
+return(y^z)>>>0},
+j:function(a){var z=this.c
+if(z==null)z=this.a
+return"Closure '"+H.a(this.d)+"' of "+H.b6(z)},
+q:{
+bs:function(a){return a.a},
+c9:function(a){return a.c},
+ea:function(){var z=$.ap
+if(z==null){z=H.aZ("self")
+$.ap=z}return z},
+aZ:function(a){var z,y,x,w,v
+z=new H.br("self","target","receiver","name")
+y=Object.getOwnPropertyNames(z)
+y.fixed$length=Array
+x=y
+for(y=x.length,w=0;w "+H.a(this.a))},
+q:{
+cL:function(a){var z,y,x
+a=a
+z=[]
+for(y=a.length,x=0;x=y.length)return H.j(y,0)
+if(y[0]==null)throw H.b("no type for '"+z+"<...>'")
+for(z=this.b,x=z.length,w=0;w"}},
+bc:{"^":"c;a,b",
+j:function(a){var z,y
+z=this.b
+if(z!=null)return z
+y=function(b,c){return b.replace(/[^<,> ]+/g,function(d){return c[d]||d})}(this.a,init.mangledGlobalNames)
+this.b=y
+return y},
+gD:function(a){return J.U(this.a)},
+v:function(a,b){if(b==null)return!1
+return b instanceof H.bc&&J.N(this.a,b.a)}},
+V:{"^":"c;a,b,c,d,e,f,r,$ti",
+gi:function(a){return this.a},
+gt:function(a){return this.a===0},
+gI:function(a){return!this.gt(this)},
+gS:function(){return new H.eX(this,[H.J(this,0)])},
+gbX:function(a){return H.b3(this.gS(),new H.eU(this),H.J(this,0),H.J(this,1))},
+E:function(a){var z,y
+if(typeof a==="string"){z=this.b
+if(z==null)return!1
+return this.ba(z,a)}else if(typeof a==="number"&&(a&0x3ffffff)===a){y=this.c
+if(y==null)return!1
+return this.ba(y,a)}else return this.da(a)},
+da:function(a){var z=this.d
+if(z==null)return!1
+return this.ae(this.ap(z,this.ad(a)),a)>=0},
+u:function(a,b){b.B(0,new H.eT(this))},
+h:function(a,b){var z,y,x
+if(typeof b==="string"){z=this.b
+if(z==null)return
+y=this.a8(z,b)
+return y==null?null:y.ga_()}else if(typeof b==="number"&&(b&0x3ffffff)===b){x=this.c
+if(x==null)return
+y=this.a8(x,b)
+return y==null?null:y.ga_()}else return this.dc(b)},
+dc:function(a){var z,y,x
+z=this.d
+if(z==null)return
+y=this.ap(z,this.ad(a))
+x=this.ae(y,a)
+if(x<0)return
+return y[x].ga_()},
+p:function(a,b,c){var z,y
+if(typeof b==="string"){z=this.b
+if(z==null){z=this.aH()
+this.b=z}this.b5(z,b,c)}else if(typeof b==="number"&&(b&0x3ffffff)===b){y=this.c
+if(y==null){y=this.aH()
+this.c=y}this.b5(y,b,c)}else this.de(b,c)},
+de:function(a,b){var z,y,x,w
+z=this.d
+if(z==null){z=this.aH()
+this.d=z}y=this.ad(a)
+x=this.ap(z,y)
+if(x==null)this.aK(z,y,[this.av(a,b)])
+else{w=this.ae(x,a)
+if(w>=0)x[w].sa_(b)
+else x.push(this.av(a,b))}},
+ag:function(a,b){if(typeof b==="string")return this.bq(this.b,b)
+else if(typeof b==="number"&&(b&0x3ffffff)===b)return this.bq(this.c,b)
+else return this.dd(b)},
+dd:function(a){var z,y,x,w
+z=this.d
+if(z==null)return
+y=this.ap(z,this.ad(a))
+x=this.ae(y,a)
+if(x<0)return
+w=y.splice(x,1)[0]
+this.bv(w)
+return w.ga_()},
+R:function(a){if(this.a>0){this.f=null
+this.e=null
+this.d=null
+this.c=null
+this.b=null
+this.a=0
+this.r=this.r+1&67108863}},
+B:function(a,b){var z,y
+z=this.e
+y=this.r
+for(;z!=null;){b.$2(z.a,z.b)
+if(y!==this.r)throw H.b(new P.D(this))
+z=z.c}},
+b5:function(a,b,c){var z=this.a8(a,b)
+if(z==null)this.aK(a,b,this.av(b,c))
+else z.sa_(c)},
+bq:function(a,b){var z
+if(a==null)return
+z=this.a8(a,b)
+if(z==null)return
+this.bv(z)
+this.bb(a,b)
+return z.ga_()},
+av:function(a,b){var z,y
+z=new H.eW(a,b,null,null,[null,null])
+if(this.e==null){this.f=z
+this.e=z}else{y=this.f
+z.d=y
+y.c=z
+this.f=z}++this.a
+this.r=this.r+1&67108863
+return z},
+bv:function(a){var z,y
+z=a.gcJ()
+y=a.c
+if(z==null)this.e=y
+else z.c=y
+if(y==null)this.f=z
+else y.d=z;--this.a
+this.r=this.r+1&67108863},
+ad:function(a){return J.U(a)&0x3ffffff},
+ae:function(a,b){var z,y
+if(a==null)return-1
+z=a.length
+for(y=0;y",z)
+this.bb(z,"")
+return z},
+$iseD:1,
+$iscw:1},
+eU:{"^":"f:0;a",
+$1:function(a){return this.a.h(0,a)}},
+eT:{"^":"f;a",
+$2:function(a,b){this.a.p(0,a,b)},
+$signature:function(){return H.bh(function(a,b){return{func:1,args:[a,b]}},this.a,"V")}},
+eW:{"^":"c;bK:a<,a_:b@,c,cJ:d<,$ti"},
+eX:{"^":"e;a,$ti",
+gi:function(a){return this.a.a},
+gt:function(a){return this.a.a===0},
+gn:function(a){var z,y
+z=this.a
+y=new H.eY(z,z.r,null,null,this.$ti)
+y.c=z.e
+return y},
+B:function(a,b){var z,y,x
+z=this.a
+y=z.e
+x=z.r
+for(;y!=null;){b.$1(y.a)
+if(x!==z.r)throw H.b(new P.D(z))
+y=y.c}}},
+eY:{"^":"c;a,b,c,d,$ti",
+gl:function(){return this.d},
+k:function(){var z=this.a
+if(this.b!==z.r)throw H.b(new P.D(z))
+else{z=this.c
+if(z==null){this.d=null
+return!1}else{this.d=z.a
+this.c=z.c
+return!0}}}},
+id:{"^":"f:0;a",
+$1:function(a){return this.a(a)}},
+ie:{"^":"f:8;a",
+$2:function(a,b){return this.a(a,b)}},
+ig:{"^":"f:9;a",
+$1:function(a){return this.a(a)}},
+cu:{"^":"c;a,b,c,d",
+j:function(a){return"RegExp/"+this.a+"/"},
+gbj:function(){var z=this.c
+if(z!=null)return z
+z=this.b
+z=H.cv(this.a,z.multiline,!z.ignoreCase,!0)
+this.c=z
+return z},
+cz:function(a,b){var z,y
+z=this.gbj()
+z.lastIndex=b
+y=z.exec(a)
+if(y==null)return
+return new H.hs(this,y)},
+$isbD:1,
+q:{
+cv:function(a,b,c,d){var z,y,x,w
+z=b?"m":""
+y=c?"":"i"
+x=d?"g":""
+w=function(e,f){try{return new RegExp(e,f)}catch(v){return v}}(a,z+y+x)
+if(w instanceof RegExp)return w
+throw H.b(new P.cm("Illegal RegExp pattern ("+String(w)+")",a,null))}}},
+hs:{"^":"c;a,b",
+h:function(a,b){var z=this.b
+if(b>>>0!==b||b>=z.length)return H.j(z,b)
+return z[b]}},
+fM:{"^":"c;a,b,c,d",
+gl:function(){return this.d},
+k:function(){var z,y,x,w
+z=this.b
+if(z==null)return!1
+y=this.c
+if(y<=z.length){x=this.a.cz(z,y)
+if(x!=null){this.d=x
+z=x.b
+y=z.index
+w=y+z[0].length
+this.c=y===w?w+1:w
+return!0}}this.d=null
+this.b=null
+return!1}}}],["","",,H,{"^":"",
+dz:function(a){var z=H.K(a?Object.keys(a):[],[null])
+z.fixed$length=Array
+return z}}],["","",,H,{"^":"",
+iE:function(a){if(typeof dartPrint=="function"){dartPrint(a)
+return}if(typeof console=="object"&&typeof console.log!="undefined"){console.log(a)
+return}if(typeof window=="object")return
+if(typeof print=="function"){print(a)
+return}throw"Unable to print message: "+String(a)}}],["","",,H,{"^":"",cy:{"^":"h;",
+gw:function(a){return C.C},
+$iscy:1,
+"%":"ArrayBuffer"},b4:{"^":"h;",$isb4:1,"%":";ArrayBufferView;bB|cz|cB|bC|cA|cC|a3"},jz:{"^":"b4;",
+gw:function(a){return C.D},
+"%":"DataView"},bB:{"^":"b4;",
+gi:function(a){return a.length},
+$isE:1,
+$asE:I.x,
+$isB:1,
+$asB:I.x},bC:{"^":"cB;",
+h:function(a,b){if(b>>>0!==b||b>=a.length)H.r(H.u(a,b))
+return a[b]},
+p:function(a,b,c){if(b>>>0!==b||b>=a.length)H.r(H.u(a,b))
+a[b]=c}},cz:{"^":"bB+X;",$asE:I.x,$asB:I.x,
+$asi:function(){return[P.C]},
+$ase:function(){return[P.C]},
+$asd:function(){return[P.C]},
+$isi:1,
+$ise:1,
+$isd:1},cB:{"^":"cz+ck;",$asE:I.x,$asB:I.x,
+$asi:function(){return[P.C]},
+$ase:function(){return[P.C]},
+$asd:function(){return[P.C]}},a3:{"^":"cC;",
+p:function(a,b,c){if(b>>>0!==b||b>=a.length)H.r(H.u(a,b))
+a[b]=c},
+$isi:1,
+$asi:function(){return[P.k]},
+$ise:1,
+$ase:function(){return[P.k]},
+$isd:1,
+$asd:function(){return[P.k]}},cA:{"^":"bB+X;",$asE:I.x,$asB:I.x,
+$asi:function(){return[P.k]},
+$ase:function(){return[P.k]},
+$asd:function(){return[P.k]},
+$isi:1,
+$ise:1,
+$isd:1},cC:{"^":"cA+ck;",$asE:I.x,$asB:I.x,
+$asi:function(){return[P.k]},
+$ase:function(){return[P.k]},
+$asd:function(){return[P.k]}},jA:{"^":"bC;",
+gw:function(a){return C.E},
+$isi:1,
+$asi:function(){return[P.C]},
+$ise:1,
+$ase:function(){return[P.C]},
+$isd:1,
+$asd:function(){return[P.C]},
+"%":"Float32Array"},jB:{"^":"bC;",
+gw:function(a){return C.F},
+$isi:1,
+$asi:function(){return[P.C]},
+$ise:1,
+$ase:function(){return[P.C]},
+$isd:1,
+$asd:function(){return[P.C]},
+"%":"Float64Array"},jC:{"^":"a3;",
+gw:function(a){return C.G},
+h:function(a,b){if(b>>>0!==b||b>=a.length)H.r(H.u(a,b))
+return a[b]},
+$isi:1,
+$asi:function(){return[P.k]},
+$ise:1,
+$ase:function(){return[P.k]},
+$isd:1,
+$asd:function(){return[P.k]},
+"%":"Int16Array"},jD:{"^":"a3;",
+gw:function(a){return C.H},
+h:function(a,b){if(b>>>0!==b||b>=a.length)H.r(H.u(a,b))
+return a[b]},
+$isi:1,
+$asi:function(){return[P.k]},
+$ise:1,
+$ase:function(){return[P.k]},
+$isd:1,
+$asd:function(){return[P.k]},
+"%":"Int32Array"},jE:{"^":"a3;",
+gw:function(a){return C.I},
+h:function(a,b){if(b>>>0!==b||b>=a.length)H.r(H.u(a,b))
+return a[b]},
+$isi:1,
+$asi:function(){return[P.k]},
+$ise:1,
+$ase:function(){return[P.k]},
+$isd:1,
+$asd:function(){return[P.k]},
+"%":"Int8Array"},jF:{"^":"a3;",
+gw:function(a){return C.M},
+h:function(a,b){if(b>>>0!==b||b>=a.length)H.r(H.u(a,b))
+return a[b]},
+$isi:1,
+$asi:function(){return[P.k]},
+$ise:1,
+$ase:function(){return[P.k]},
+$isd:1,
+$asd:function(){return[P.k]},
+"%":"Uint16Array"},jG:{"^":"a3;",
+gw:function(a){return C.N},
+h:function(a,b){if(b>>>0!==b||b>=a.length)H.r(H.u(a,b))
+return a[b]},
+$isi:1,
+$asi:function(){return[P.k]},
+$ise:1,
+$ase:function(){return[P.k]},
+$isd:1,
+$asd:function(){return[P.k]},
+"%":"Uint32Array"},jH:{"^":"a3;",
+gw:function(a){return C.O},
+gi:function(a){return a.length},
+h:function(a,b){if(b>>>0!==b||b>=a.length)H.r(H.u(a,b))
+return a[b]},
+$isi:1,
+$asi:function(){return[P.k]},
+$ise:1,
+$ase:function(){return[P.k]},
+$isd:1,
+$asd:function(){return[P.k]},
+"%":"CanvasPixelArray|Uint8ClampedArray"},jI:{"^":"a3;",
+gw:function(a){return C.P},
+gi:function(a){return a.length},
+h:function(a,b){if(b>>>0!==b||b>=a.length)H.r(H.u(a,b))
+return a[b]},
+$isi:1,
+$asi:function(){return[P.k]},
+$ise:1,
+$ase:function(){return[P.k]},
+$isd:1,
+$asd:function(){return[P.k]},
+"%":";Uint8Array"}}],["","",,P,{"^":"",
+fN:function(){var z,y,x
+z={}
+if(self.scheduleImmediate!=null)return P.hV()
+if(self.MutationObserver!=null&&self.document!=null){y=self.document.createElement("div")
+x=self.document.createElement("span")
+z.a=null
+new self.MutationObserver(H.az(new P.fP(z),1)).observe(y,{childList:true})
+return new P.fO(z,y,x)}else if(self.setImmediate!=null)return P.hW()
+return P.hX()},
+k4:[function(a){++init.globalState.f.b
+self.scheduleImmediate(H.az(new P.fQ(a),0))},"$1","hV",2,0,4],
+k5:[function(a){++init.globalState.f.b
+self.setImmediate(H.az(new P.fR(a),0))},"$1","hW",2,0,4],
+k6:[function(a){P.bH(C.i,a)},"$1","hX",2,0,4],
+dn:function(a,b){var z=H.a7()
+if(H.T(z,[z,z]).M(a)){b.toString
+return a}else{b.toString
+return a}},
+hO:function(){var z,y
+for(;z=$.al,z!=null;){$.av=null
+y=z.ga6()
+$.al=y
+if(y==null)$.au=null
+z.gcV().$0()}},
+kk:[function(){$.bN=!0
+try{P.hO()}finally{$.av=null
+$.bN=!1
+if($.al!=null)$.$get$bI().$1(P.dx())}},"$0","dx",0,0,2],
+ds:function(a){var z=new P.d7(a,null)
+if($.al==null){$.au=z
+$.al=z
+if(!$.bN)$.$get$bI().$1(P.dx())}else{$.au.b=z
+$.au=z}},
+hS:function(a){var z,y,x
+z=$.al
+if(z==null){P.ds(a)
+$.av=$.au
+return}y=new P.d7(a,null)
+x=$.av
+if(x==null){y.b=z
+$.av=y
+$.al=y}else{y.b=x.b
+x.b=y
+$.av=y
+if(y.b==null)$.au=y}},
+dQ:function(a){var z=$.n
+if(C.d===z){P.ax(null,null,C.d,a)
+return}z.toString
+P.ax(null,null,z,z.aO(a,!0))},
+ki:[function(a){},"$1","hY",2,0,16],
+hP:[function(a,b){var z=$.n
+z.toString
+P.aw(null,null,z,a,b)},function(a){return P.hP(a,null)},"$2","$1","i_",2,2,5,0],
+kj:[function(){},"$0","hZ",0,0,2],
+hR:function(a,b,c){var z,y,x,w,v,u,t
+try{b.$1(a.$0())}catch(u){t=H.y(u)
+z=t
+y=H.H(u)
+$.n.toString
+x=null
+if(x==null)c.$2(z,y)
+else{t=J.ao(x)
+w=t
+v=x.gU()
+c.$2(w,v)}}},
+hF:function(a,b,c,d){var z=a.aP()
+if(!!J.m(z).$isa0&&z!==$.$get$aH())z.b_(new P.hI(b,c,d))
+else b.a7(c,d)},
+hG:function(a,b){return new P.hH(a,b)},
+hE:function(a,b,c){$.n.toString
+a.aw(b,c)},
+fF:function(a,b){var z=$.n
+if(z===C.d){z.toString
+return P.bH(a,b)}return P.bH(a,z.aO(b,!0))},
+bH:function(a,b){var z=C.c.a9(a.a,1000)
+return H.fC(z<0?0:z,b)},
+fL:function(){return $.n},
+aw:function(a,b,c,d,e){var z={}
+z.a=d
+P.hS(new P.hQ(z,e))},
+dp:function(a,b,c,d){var z,y
+y=$.n
+if(y===c)return d.$0()
+$.n=c
+z=y
+try{y=d.$0()
+return y}finally{$.n=z}},
+dr:function(a,b,c,d,e){var z,y
+y=$.n
+if(y===c)return d.$1(e)
+$.n=c
+z=y
+try{y=d.$1(e)
+return y}finally{$.n=z}},
+dq:function(a,b,c,d,e,f){var z,y
+y=$.n
+if(y===c)return d.$2(e,f)
+$.n=c
+z=y
+try{y=d.$2(e,f)
+return y}finally{$.n=z}},
+ax:function(a,b,c,d){var z=C.d!==c
+if(z)d=c.aO(d,!(!z||!1))
+P.ds(d)},
+fP:{"^":"f:0;a",
+$1:function(a){var z,y;--init.globalState.f.b
+z=this.a
+y=z.a
+z.a=null
+y.$0()}},
+fO:{"^":"f:10;a,b,c",
+$1:function(a){var z,y;++init.globalState.f.b
+this.a.a=a
+z=this.b
+y=this.c
+z.firstChild?z.removeChild(y):z.appendChild(y)}},
+fQ:{"^":"f:1;a",
+$0:function(){--init.globalState.f.b
+this.a.$0()}},
+fR:{"^":"f:1;a",
+$0:function(){--init.globalState.f.b
+this.a.$0()}},
+a0:{"^":"c;$ti"},
+dd:{"^":"c;aJ:a<,b,c,d,e,$ti",
+gcS:function(){return this.b.b},
+gbJ:function(){return(this.c&1)!==0},
+gd9:function(){return(this.c&2)!==0},
+gbI:function(){return this.c===8},
+d7:function(a){return this.b.b.aX(this.d,a)},
+di:function(a){if(this.c!==6)return!0
+return this.b.b.aX(this.d,J.ao(a))},
+d3:function(a){var z,y,x,w
+z=this.e
+y=H.a7()
+x=J.G(a)
+w=this.b.b
+if(H.T(y,[y,y]).M(z))return w.dv(z,x.gZ(a),a.gU())
+else return w.aX(z,x.gZ(a))},
+d8:function(){return this.b.b.bS(this.d)}},
+a5:{"^":"c;as:a<,b,cN:c<,$ti",
+gcG:function(){return this.a===2},
+gaG:function(){return this.a>=4},
+bV:function(a,b){var z,y,x
+z=$.n
+if(z!==C.d){z.toString
+if(b!=null)b=P.dn(b,z)}y=new P.a5(0,z,null,[null])
+x=b==null?1:3
+this.ax(new P.dd(null,y,x,a,b,[null,null]))
+return y},
+dA:function(a){return this.bV(a,null)},
+b_:function(a){var z,y
+z=$.n
+y=new P.a5(0,z,null,this.$ti)
+if(z!==C.d)z.toString
+this.ax(new P.dd(null,y,8,a,null,[null,null]))
+return y},
+ax:function(a){var z,y
+z=this.a
+if(z<=1){a.a=this.c
+this.c=a}else{if(z===2){y=this.c
+if(!y.gaG()){y.ax(a)
+return}this.a=y.a
+this.c=y.c}z=this.b
+z.toString
+P.ax(null,null,z,new P.h7(this,a))}},
+bp:function(a){var z,y,x,w,v
+z={}
+z.a=a
+if(a==null)return
+y=this.a
+if(y<=1){x=this.c
+this.c=a
+if(x!=null){for(w=a;w.gaJ()!=null;)w=w.a
+w.a=x}}else{if(y===2){v=this.c
+if(!v.gaG()){v.bp(a)
+return}this.a=v.a
+this.c=v.c}z.a=this.ar(a)
+y=this.b
+y.toString
+P.ax(null,null,y,new P.he(z,this))}},
+aq:function(){var z=this.c
+this.c=null
+return this.ar(z)},
+ar:function(a){var z,y,x
+for(z=a,y=null;z!=null;y=z,z=x){x=z.gaJ()
+z.a=y}return y},
+am:function(a){var z
+if(!!J.m(a).$isa0)P.be(a,this)
+else{z=this.aq()
+this.a=4
+this.c=a
+P.ai(this,z)}},
+a7:[function(a,b){var z=this.aq()
+this.a=8
+this.c=new P.aY(a,b)
+P.ai(this,z)},function(a){return this.a7(a,null)},"dG","$2","$1","gaC",2,2,5,0],
+cq:function(a){var z
+if(!!J.m(a).$isa0){if(a.a===8){this.a=1
+z=this.b
+z.toString
+P.ax(null,null,z,new P.h8(this,a))}else P.be(a,this)
+return}this.a=1
+z=this.b
+z.toString
+P.ax(null,null,z,new P.h9(this,a))},
+cm:function(a,b){this.cq(a)},
+$isa0:1,
+q:{
+ha:function(a,b){var z,y,x,w
+b.a=1
+try{a.bV(new P.hb(b),new P.hc(b))}catch(x){w=H.y(x)
+z=w
+y=H.H(x)
+P.dQ(new P.hd(b,z,y))}},
+be:function(a,b){var z,y,x
+for(;a.gcG();)a=a.c
+z=a.gaG()
+y=b.c
+if(z){b.c=null
+x=b.ar(y)
+b.a=a.a
+b.c=a.c
+P.ai(b,x)}else{b.a=2
+b.c=a
+a.bp(y)}},
+ai:function(a,b){var z,y,x,w,v,u,t,s,r,q,p,o
+z={}
+z.a=a
+for(y=a;!0;){x={}
+w=y.a===8
+if(b==null){if(w){v=y.c
+z=y.b
+y=J.ao(v)
+x=v.gU()
+z.toString
+P.aw(null,null,z,y,x)}return}for(;b.gaJ()!=null;b=u){u=b.a
+b.a=null
+P.ai(z.a,b)}t=z.a.c
+x.a=w
+x.b=t
+y=!w
+if(!y||b.gbJ()||b.gbI()){s=b.gcS()
+if(w){r=z.a.b
+r.toString
+r=r==null?s==null:r===s
+if(!r)s.toString
+else r=!0
+r=!r}else r=!1
+if(r){y=z.a
+v=y.c
+y=y.b
+x=J.ao(v)
+r=v.gU()
+y.toString
+P.aw(null,null,y,x,r)
+return}q=$.n
+if(q==null?s!=null:q!==s)$.n=s
+else q=null
+if(b.gbI())new P.hh(z,x,w,b).$0()
+else if(y){if(b.gbJ())new P.hg(x,b,t).$0()}else if(b.gd9())new P.hf(z,x,b).$0()
+if(q!=null)$.n=q
+y=x.b
+r=J.m(y)
+if(!!r.$isa0){p=b.b
+if(!!r.$isa5)if(y.a>=4){o=p.c
+p.c=null
+b=p.ar(o)
+p.a=y.a
+p.c=y.c
+z.a=y
+continue}else P.be(y,p)
+else P.ha(y,p)
+return}}p=b.b
+b=p.aq()
+y=x.a
+x=x.b
+if(!y){p.a=4
+p.c=x}else{p.a=8
+p.c=x}z.a=p
+y=p}}}},
+h7:{"^":"f:1;a,b",
+$0:function(){P.ai(this.a,this.b)}},
+he:{"^":"f:1;a,b",
+$0:function(){P.ai(this.b,this.a.a)}},
+hb:{"^":"f:0;a",
+$1:function(a){var z=this.a
+z.a=0
+z.am(a)}},
+hc:{"^":"f:11;a",
+$2:function(a,b){this.a.a7(a,b)},
+$1:function(a){return this.$2(a,null)}},
+hd:{"^":"f:1;a,b,c",
+$0:function(){this.a.a7(this.b,this.c)}},
+h8:{"^":"f:1;a,b",
+$0:function(){P.be(this.b,this.a)}},
+h9:{"^":"f:1;a,b",
+$0:function(){var z,y
+z=this.a
+y=z.aq()
+z.a=4
+z.c=this.b
+P.ai(z,y)}},
+hh:{"^":"f:2;a,b,c,d",
+$0:function(){var z,y,x,w,v,u,t
+z=null
+try{z=this.d.d8()}catch(w){v=H.y(w)
+y=v
+x=H.H(w)
+if(this.c){v=J.ao(this.a.a.c)
+u=y
+u=v==null?u==null:v===u
+v=u}else v=!1
+u=this.b
+if(v)u.b=this.a.a.c
+else u.b=new P.aY(y,x)
+u.a=!0
+return}if(!!J.m(z).$isa0){if(z instanceof P.a5&&z.gas()>=4){if(z.gas()===8){v=this.b
+v.b=z.gcN()
+v.a=!0}return}t=this.a.a
+v=this.b
+v.b=z.dA(new P.hi(t))
+v.a=!1}}},
+hi:{"^":"f:0;a",
+$1:function(a){return this.a}},
+hg:{"^":"f:2;a,b,c",
+$0:function(){var z,y,x,w
+try{this.a.b=this.b.d7(this.c)}catch(x){w=H.y(x)
+z=w
+y=H.H(x)
+w=this.a
+w.b=new P.aY(z,y)
+w.a=!0}}},
+hf:{"^":"f:2;a,b,c",
+$0:function(){var z,y,x,w,v,u,t,s
+try{z=this.a.a.c
+w=this.c
+if(w.di(z)===!0&&w.e!=null){v=this.b
+v.b=w.d3(z)
+v.a=!1}}catch(u){w=H.y(u)
+y=w
+x=H.H(u)
+w=this.a
+v=J.ao(w.a.c)
+t=y
+s=this.b
+if(v==null?t==null:v===t)s.b=w.a.c
+else s.b=new P.aY(y,x)
+s.a=!0}}},
+d7:{"^":"c;cV:a<,a6:b<"},
+ah:{"^":"c;$ti",
+J:function(a,b){return new P.hr(b,this,[H.t(this,"ah",0),null])},
+B:function(a,b){var z,y
+z={}
+y=new P.a5(0,$.n,null,[null])
+z.a=null
+z.a=this.a5(new P.fs(z,this,b,y),!0,new P.ft(y),y.gaC())
+return y},
+gi:function(a){var z,y
+z={}
+y=new P.a5(0,$.n,null,[P.k])
+z.a=0
+this.a5(new P.fu(z),!0,new P.fv(z,y),y.gaC())
+return y},
+a1:function(a){var z,y,x
+z=H.t(this,"ah",0)
+y=H.K([],[z])
+x=new P.a5(0,$.n,null,[[P.i,z]])
+this.a5(new P.fw(this,y),!0,new P.fx(y,x),x.gaC())
+return x}},
+fs:{"^":"f;a,b,c,d",
+$1:function(a){P.hR(new P.fq(this.c,a),new P.fr(),P.hG(this.a.a,this.d))},
+$signature:function(){return H.bh(function(a){return{func:1,args:[a]}},this.b,"ah")}},
+fq:{"^":"f:1;a,b",
+$0:function(){return this.a.$1(this.b)}},
+fr:{"^":"f:0;",
+$1:function(a){}},
+ft:{"^":"f:1;a",
+$0:function(){this.a.am(null)}},
+fu:{"^":"f:0;a",
+$1:function(a){++this.a.a}},
+fv:{"^":"f:1;a,b",
+$0:function(){this.b.am(this.a.a)}},
+fw:{"^":"f;a,b",
+$1:function(a){this.b.push(a)},
+$signature:function(){return H.bh(function(a){return{func:1,args:[a]}},this.a,"ah")}},
+fx:{"^":"f:1;a,b",
+$0:function(){this.b.am(this.a)}},
+fp:{"^":"c;$ti"},
+ka:{"^":"c;$ti"},
+d9:{"^":"c;as:e<,$ti",
+aU:function(a,b){var z=this.e
+if((z&8)!==0)return
+this.e=(z+128|4)>>>0
+if(z<128&&this.r!=null)this.r.bA()
+if((z&4)===0&&(this.e&32)===0)this.bg(this.gbl())},
+bO:function(a){return this.aU(a,null)},
+bR:function(){var z=this.e
+if((z&8)!==0)return
+if(z>=128){z-=128
+this.e=z
+if(z<128){if((z&64)!==0){z=this.r
+z=!z.gt(z)}else z=!1
+if(z)this.r.au(this)
+else{z=(this.e&4294967291)>>>0
+this.e=z
+if((z&32)===0)this.bg(this.gbn())}}}},
+aP:function(){var z=(this.e&4294967279)>>>0
+this.e=z
+if((z&8)===0)this.aA()
+z=this.f
+return z==null?$.$get$aH():z},
+aA:function(){var z=(this.e|8)>>>0
+this.e=z
+if((z&64)!==0)this.r.bA()
+if((this.e&32)===0)this.r=null
+this.f=this.bk()},
+az:["cd",function(a){var z=this.e
+if((z&8)!==0)return
+if(z<32)this.bs(a)
+else this.ay(new P.fY(a,null,[null]))}],
+aw:["ce",function(a,b){var z=this.e
+if((z&8)!==0)return
+if(z<32)this.bu(a,b)
+else this.ay(new P.h_(a,b,null))}],
+cp:function(){var z=this.e
+if((z&8)!==0)return
+z=(z|2)>>>0
+this.e=z
+if(z<32)this.bt()
+else this.ay(C.p)},
+bm:[function(){},"$0","gbl",0,0,2],
+bo:[function(){},"$0","gbn",0,0,2],
+bk:function(){return},
+ay:function(a){var z,y
+z=this.r
+if(z==null){z=new P.hC(null,null,0,[null])
+this.r=z}z.m(0,a)
+y=this.e
+if((y&64)===0){y=(y|64)>>>0
+this.e=y
+if(y<128)this.r.au(this)}},
+bs:function(a){var z=this.e
+this.e=(z|32)>>>0
+this.d.aY(this.a,a)
+this.e=(this.e&4294967263)>>>0
+this.aB((z&4)!==0)},
+bu:function(a,b){var z,y,x
+z=this.e
+y=new P.fU(this,a,b)
+if((z&1)!==0){this.e=(z|16)>>>0
+this.aA()
+z=this.f
+if(!!J.m(z).$isa0){x=$.$get$aH()
+x=z==null?x!=null:z!==x}else x=!1
+if(x)z.b_(y)
+else y.$0()}else{y.$0()
+this.aB((z&4)!==0)}},
+bt:function(){var z,y,x
+z=new P.fT(this)
+this.aA()
+this.e=(this.e|16)>>>0
+y=this.f
+if(!!J.m(y).$isa0){x=$.$get$aH()
+x=y==null?x!=null:y!==x}else x=!1
+if(x)y.b_(z)
+else z.$0()},
+bg:function(a){var z=this.e
+this.e=(z|32)>>>0
+a.$0()
+this.e=(this.e&4294967263)>>>0
+this.aB((z&4)!==0)},
+aB:function(a){var z,y
+if((this.e&64)!==0){z=this.r
+z=z.gt(z)}else z=!1
+if(z){z=(this.e&4294967231)>>>0
+this.e=z
+if((z&4)!==0)if(z<128){z=this.r
+z=z==null||z.gt(z)}else z=!1
+else z=!1
+if(z)this.e=(this.e&4294967291)>>>0}for(;!0;a=y){z=this.e
+if((z&8)!==0){this.r=null
+return}y=(z&4)!==0
+if(a===y)break
+this.e=(z^32)>>>0
+if(y)this.bm()
+else this.bo()
+this.e=(this.e&4294967263)>>>0}z=this.e
+if((z&64)!==0&&z<128)this.r.au(this)},
+ck:function(a,b,c,d,e){var z,y
+z=a==null?P.hY():a
+y=this.d
+y.toString
+this.a=z
+this.b=P.dn(b==null?P.i_():b,y)
+this.c=c==null?P.hZ():c}},
+fU:{"^":"f:2;a,b,c",
+$0:function(){var z,y,x,w,v,u
+z=this.a
+y=z.e
+if((y&8)!==0&&(y&16)===0)return
+z.e=(y|32)>>>0
+y=z.b
+x=H.T(H.a7(),[H.bg(P.c),H.bg(P.ag)]).M(y)
+w=z.d
+v=this.b
+u=z.b
+if(x)w.dw(u,v,this.c)
+else w.aY(u,v)
+z.e=(z.e&4294967263)>>>0}},
+fT:{"^":"f:2;a",
+$0:function(){var z,y
+z=this.a
+y=z.e
+if((y&16)===0)return
+z.e=(y|42)>>>0
+z.d.bT(z.c)
+z.e=(z.e&4294967263)>>>0}},
+bJ:{"^":"c;a6:a@,$ti"},
+fY:{"^":"bJ;b,a,$ti",
+aV:function(a){a.bs(this.b)}},
+h_:{"^":"bJ;Z:b>,U:c<,a",
+aV:function(a){a.bu(this.b,this.c)},
+$asbJ:I.x},
+fZ:{"^":"c;",
+aV:function(a){a.bt()},
+ga6:function(){return},
+sa6:function(a){throw H.b(new P.ba("No events after a done."))}},
+hw:{"^":"c;as:a<,$ti",
+au:function(a){var z=this.a
+if(z===1)return
+if(z>=1){this.a=1
+return}P.dQ(new P.hx(this,a))
+this.a=1},
+bA:function(){if(this.a===1)this.a=3}},
+hx:{"^":"f:1;a,b",
+$0:function(){var z,y,x,w
+z=this.a
+y=z.a
+z.a=0
+if(y===3)return
+x=z.b
+w=x.ga6()
+z.b=w
+if(w==null)z.c=null
+x.aV(this.b)}},
+hC:{"^":"hw;b,c,a,$ti",
+gt:function(a){return this.c==null},
+m:function(a,b){var z=this.c
+if(z==null){this.c=b
+this.b=b}else{z.sa6(b)
+this.c=b}}},
+hI:{"^":"f:1;a,b,c",
+$0:function(){return this.a.a7(this.b,this.c)}},
+hH:{"^":"f:12;a,b",
+$2:function(a,b){P.hF(this.a,this.b,a,b)}},
+bK:{"^":"ah;$ti",
+a5:function(a,b,c,d){return this.cv(a,d,c,!0===b)},
+bL:function(a,b,c){return this.a5(a,null,b,c)},
+cv:function(a,b,c,d){return P.h6(this,a,b,c,d,H.t(this,"bK",0),H.t(this,"bK",1))},
+bh:function(a,b){b.az(a)},
+cE:function(a,b,c){c.aw(a,b)},
+$asah:function(a,b){return[b]}},
+dc:{"^":"d9;x,y,a,b,c,d,e,f,r,$ti",
+az:function(a){if((this.e&2)!==0)return
+this.cd(a)},
+aw:function(a,b){if((this.e&2)!==0)return
+this.ce(a,b)},
+bm:[function(){var z=this.y
+if(z==null)return
+z.bO(0)},"$0","gbl",0,0,2],
+bo:[function(){var z=this.y
+if(z==null)return
+z.bR()},"$0","gbn",0,0,2],
+bk:function(){var z=this.y
+if(z!=null){this.y=null
+return z.aP()}return},
+dH:[function(a){this.x.bh(a,this)},"$1","gcB",2,0,function(){return H.bh(function(a,b){return{func:1,v:true,args:[a]}},this.$receiver,"dc")}],
+dJ:[function(a,b){this.x.cE(a,b,this)},"$2","gcD",4,0,13],
+dI:[function(){this.cp()},"$0","gcC",0,0,2],
+cl:function(a,b,c,d,e,f,g){this.y=this.x.a.bL(this.gcB(),this.gcC(),this.gcD())},
+$asd9:function(a,b){return[b]},
+q:{
+h6:function(a,b,c,d,e,f,g){var z,y
+z=$.n
+y=e?1:0
+y=new P.dc(a,null,null,null,null,z,y,null,null,[f,g])
+y.ck(b,c,d,e,g)
+y.cl(a,b,c,d,e,f,g)
+return y}}},
+hr:{"^":"bK;b,a,$ti",
+bh:function(a,b){var z,y,x,w,v
+z=null
+try{z=this.b.$1(a)}catch(w){v=H.y(w)
+y=v
+x=H.H(w)
+P.hE(b,y,x)
+return}b.az(z)}},
+aY:{"^":"c;Z:a>,U:b<",
+j:function(a){return H.a(this.a)},
+$isz:1},
+hD:{"^":"c;"},
+hQ:{"^":"f:1;a,b",
+$0:function(){var z,y,x
+z=this.a
+y=z.a
+if(y==null){x=new P.cE()
+z.a=x
+z=x}else z=y
+y=this.b
+if(y==null)throw H.b(z)
+x=H.b(z)
+x.stack=J.P(y)
+throw x}},
+hy:{"^":"hD;",
+bT:function(a){var z,y,x,w
+try{if(C.d===$.n){x=a.$0()
+return x}x=P.dp(null,null,this,a)
+return x}catch(w){x=H.y(w)
+z=x
+y=H.H(w)
+return P.aw(null,null,this,z,y)}},
+aY:function(a,b){var z,y,x,w
+try{if(C.d===$.n){x=a.$1(b)
+return x}x=P.dr(null,null,this,a,b)
+return x}catch(w){x=H.y(w)
+z=x
+y=H.H(w)
+return P.aw(null,null,this,z,y)}},
+dw:function(a,b,c){var z,y,x,w
+try{if(C.d===$.n){x=a.$2(b,c)
+return x}x=P.dq(null,null,this,a,b,c)
+return x}catch(w){x=H.y(w)
+z=x
+y=H.H(w)
+return P.aw(null,null,this,z,y)}},
+aO:function(a,b){if(b)return new P.hz(this,a)
+else return new P.hA(this,a)},
+cU:function(a,b){return new P.hB(this,a)},
+h:function(a,b){return},
+bS:function(a){if($.n===C.d)return a.$0()
+return P.dp(null,null,this,a)},
+aX:function(a,b){if($.n===C.d)return a.$1(b)
+return P.dr(null,null,this,a,b)},
+dv:function(a,b,c){if($.n===C.d)return a.$2(b,c)
+return P.dq(null,null,this,a,b,c)}},
+hz:{"^":"f:1;a,b",
+$0:function(){return this.a.bT(this.b)}},
+hA:{"^":"f:1;a,b",
+$0:function(){return this.a.bS(this.b)}},
+hB:{"^":"f:0;a,b",
+$1:function(a){return this.a.aY(this.b,a)}}}],["","",,P,{"^":"",
+a1:function(){return new H.V(0,null,null,null,null,null,0,[null,null])},
+W:function(a){return H.i9(a,new H.V(0,null,null,null,null,null,0,[null,null]))},
+eL:function(a,b,c){var z,y
+if(P.bO(a)){if(b==="("&&c===")")return"(...)"
+return b+"..."+c}z=[]
+y=$.$get$ay()
+y.push(a)
+try{P.hM(a,z)}finally{if(0>=y.length)return H.j(y,-1)
+y.pop()}y=P.cP(b,z,", ")+c
+return y.charCodeAt(0)==0?y:y},
+b1:function(a,b,c){var z,y,x
+if(P.bO(a))return b+"..."+c
+z=new P.aR(b)
+y=$.$get$ay()
+y.push(a)
+try{x=z
+x.a=P.cP(x.ga4(),a,", ")}finally{if(0>=y.length)return H.j(y,-1)
+y.pop()}y=z
+y.a=y.ga4()+c
+y=z.ga4()
+return y.charCodeAt(0)==0?y:y},
+bO:function(a){var z,y
+for(z=0;y=$.$get$ay(),z=b.length)return H.j(b,-1)
+v=b.pop()
+if(0>=b.length)return H.j(b,-1)
+u=b.pop()}else{t=z.gl();++x
+if(!z.k()){if(x<=4){b.push(H.a(t))
+return}v=H.a(t)
+if(0>=b.length)return H.j(b,-1)
+u=b.pop()
+y+=v.length+2}else{s=z.gl();++x
+for(;z.k();t=s,s=r){r=z.gl();++x
+if(x>100){while(!0){if(!(y>75&&x>3))break
+if(0>=b.length)return H.j(b,-1)
+y-=b.pop().length+2;--x}b.push("...")
+return}}u=H.a(t)
+v=H.a(s)
+y+=v.length+u.length+4}}if(x>b.length+2){y+=5
+q="..."}else q=null
+while(!0){if(!(y>80&&b.length>3))break
+if(0>=b.length)return H.j(b,-1)
+y-=b.pop().length+2
+if(q==null){y+=5
+q="..."}}if(q!=null)b.push(q)
+b.push(u)
+b.push(v)},
+eZ:function(a,b,c,d,e){return new H.V(0,null,null,null,null,null,0,[d,e])},
+f_:function(a,b,c){var z=P.eZ(null,null,null,b,c)
+J.dZ(a,new P.i2(z))
+return z},
+R:function(a,b,c,d){return new P.df(0,null,null,null,null,null,0,[d])},
+f0:function(a,b){var z,y
+z=P.R(null,null,null,b)
+for(y=J.Z(a);y.k();)z.m(0,y.gl())
+return z},
+cx:function(a){var z,y,x
+z={}
+if(P.bO(a))return"{...}"
+y=new P.aR("")
+try{$.$get$ay().push(a)
+x=y
+x.a=x.ga4()+"{"
+z.a=!0
+a.B(0,new P.f4(z,y))
+z=y
+z.a=z.ga4()+"}"}finally{z=$.$get$ay()
+if(0>=z.length)return H.j(z,-1)
+z.pop()}z=y.ga4()
+return z.charCodeAt(0)==0?z:z},
+dg:{"^":"V;a,b,c,d,e,f,r,$ti",
+ad:function(a){return H.iw(a)&0x3ffffff},
+ae:function(a,b){var z,y,x
+if(a==null)return-1
+z=a.length
+for(y=0;y=0},
+aT:function(a){var z
+if(!(typeof a==="string"&&a!=="__proto__"))z=typeof a==="number"&&(a&0x3ffffff)===a
+else z=!0
+if(z)return this.H(0,a)?a:null
+else return this.cH(a)},
+cH:function(a){var z,y,x
+z=this.d
+if(z==null)return
+y=z[this.an(a)]
+x=this.ao(y,a)
+if(x<0)return
+return J.an(y,x).gbc()},
+B:function(a,b){var z,y
+z=this.e
+y=this.r
+for(;z!=null;){b.$1(z.a)
+if(y!==this.r)throw H.b(new P.D(this))
+z=z.b}},
+m:function(a,b){var z,y,x
+if(typeof b==="string"&&b!=="__proto__"){z=this.b
+if(z==null){y=Object.create(null)
+y[""]=y
+delete y[""]
+this.b=y
+z=y}return this.b6(z,b)}else if(typeof b==="number"&&(b&0x3ffffff)===b){x=this.c
+if(x==null){y=Object.create(null)
+y[""]=y
+delete y[""]
+this.c=y
+x=y}return this.b6(x,b)}else return this.P(b)},
+P:function(a){var z,y,x
+z=this.d
+if(z==null){z=P.hm()
+this.d=z}y=this.an(a)
+x=z[y]
+if(x==null)z[y]=[this.aI(a)]
+else{if(this.ao(x,a)>=0)return!1
+x.push(this.aI(a))}return!0},
+ag:function(a,b){if(typeof b==="string"&&b!=="__proto__")return this.b8(this.b,b)
+else if(typeof b==="number"&&(b&0x3ffffff)===b)return this.b8(this.c,b)
+else return this.cK(b)},
+cK:function(a){var z,y,x
+z=this.d
+if(z==null)return!1
+y=z[this.an(a)]
+x=this.ao(y,a)
+if(x<0)return!1
+this.b9(y.splice(x,1)[0])
+return!0},
+R:function(a){if(this.a>0){this.f=null
+this.e=null
+this.d=null
+this.c=null
+this.b=null
+this.a=0
+this.r=this.r+1&67108863}},
+b6:function(a,b){if(a[b]!=null)return!1
+a[b]=this.aI(b)
+return!0},
+b8:function(a,b){var z
+if(a==null)return!1
+z=a[b]
+if(z==null)return!1
+this.b9(z)
+delete a[b]
+return!0},
+aI:function(a){var z,y
+z=new P.hl(a,null,null)
+if(this.e==null){this.f=z
+this.e=z}else{y=this.f
+z.c=y
+y.b=z
+this.f=z}++this.a
+this.r=this.r+1&67108863
+return z},
+b9:function(a){var z,y
+z=a.gct()
+y=a.b
+if(z==null)this.e=y
+else z.b=y
+if(y==null)this.f=z
+else y.c=z;--this.a
+this.r=this.r+1&67108863},
+an:function(a){return J.U(a)&0x3ffffff},
+ao:function(a,b){var z,y
+if(a==null)return-1
+z=a.length
+for(y=0;y"]=z
+delete z[""]
+return z}}},
+hl:{"^":"c;bc:a<,b,ct:c<"},
+aj:{"^":"c;a,b,c,d,$ti",
+gl:function(){return this.d},
+k:function(){var z=this.a
+if(this.b!==z.r)throw H.b(new P.D(z))
+else{z=this.c
+if(z==null){this.d=null
+return!1}else{this.d=z.a
+this.c=z.b
+return!0}}}},
+hj:{"^":"fj;$ti"},
+i2:{"^":"f:6;a",
+$2:function(a,b){this.a.p(0,a,b)}},
+aq:{"^":"b5;$ti"},
+b5:{"^":"c+X;$ti",$asi:null,$ase:null,$asd:null,$isi:1,$ise:1,$isd:1},
+X:{"^":"c;$ti",
+gn:function(a){return new H.bz(a,this.gi(a),0,null,[H.t(a,"X",0)])},
+C:function(a,b){return this.h(a,b)},
+B:function(a,b){var z,y
+z=this.gi(a)
+for(y=0;y=z.length)return H.j(z,y)
+z[y]=x}return z},
+a1:function(a){return this.ai(a,!0)},
+m:function(a,b){var z=this.gi(a)
+this.si(a,z+1)
+this.p(a,z,b)},
+u:function(a,b){var z,y,x,w
+z=this.gi(a)
+for(y=b.gn(b);y.k();z=w){x=y.gl()
+w=z+1
+this.si(a,w)
+this.p(a,z,x)}},
+j:function(a){return P.b1(a,"[","]")},
+$isi:1,
+$asi:null,
+$ise:1,
+$ase:null,
+$isd:1,
+$asd:null},
+f4:{"^":"f:6;a,b",
+$2:function(a,b){var z,y
+z=this.a
+if(!z.a)this.b.a+=", "
+z.a=!1
+z=this.b
+y=z.a+=H.a(a)
+z.a=y+": "
+z.a+=H.a(b)}},
+f1:{"^":"af;a,b,c,d,$ti",
+gn:function(a){return new P.hn(this,this.c,this.d,this.b,null,this.$ti)},
+B:function(a,b){var z,y,x
+z=this.d
+for(y=this.b;y!==this.c;y=(y+1&this.a.length-1)>>>0){x=this.a
+if(y<0||y>=x.length)return H.j(x,y)
+b.$1(x[y])
+if(z!==this.d)H.r(new P.D(this))}},
+gt:function(a){return this.b===this.c},
+gi:function(a){return(this.c-this.b&this.a.length-1)>>>0},
+C:function(a,b){var z,y,x,w
+z=(this.c-this.b&this.a.length-1)>>>0
+if(typeof b!=="number")return H.a9(b)
+if(0>b||b>=z)H.r(P.ae(b,this,"index",null,z))
+y=this.a
+x=y.length
+w=(this.b+b&x-1)>>>0
+if(w<0||w>=x)return H.j(y,w)
+return y[w]},
+m:function(a,b){this.P(b)},
+u:function(a,b){var z,y,x,w,v,u,t,s
+z=b.gi(b)
+y=this.gi(this)
+x=C.c.F(y,z)
+w=this.a.length
+if(x>=w){x=C.c.F(y,z)
+v=P.f2(x+C.e.aL(x,1))
+if(typeof v!=="number")return H.a9(v)
+x=new Array(v)
+x.fixed$length=Array
+u=H.K(x,this.$ti)
+this.c=this.cR(u)
+this.a=u
+this.b=0
+C.a.G(u,y,C.c.F(y,z),b,0)
+this.c=C.c.F(this.c,z)}else{t=w-this.c
+if(z.a3(0,t)){x=this.a
+w=this.c
+C.a.G(x,w,C.c.F(w,z),b,0)
+this.c=C.c.F(this.c,z)}else{s=z.ca(0,t)
+x=this.a
+w=this.c
+C.a.G(x,w,w+t,b,0)
+C.a.G(this.a,0,s,b,t)
+this.c=s}}++this.d},
+R:function(a){var z,y,x,w,v
+z=this.b
+y=this.c
+if(z!==y){for(x=this.a,w=x.length,v=w-1;z!==y;z=(z+1&v)>>>0){if(z<0||z>=w)return H.j(x,z)
+x[z]=null}this.c=0
+this.b=0;++this.d}},
+j:function(a){return P.b1(this,"{","}")},
+bP:function(){var z,y,x,w
+z=this.b
+if(z===this.c)throw H.b(H.bv());++this.d
+y=this.a
+x=y.length
+if(z>=x)return H.j(y,z)
+w=y[z]
+y[z]=null
+this.b=(z+1&x-1)>>>0
+return w},
+P:function(a){var z,y,x
+z=this.a
+y=this.c
+x=z.length
+if(y<0||y>=x)return H.j(z,y)
+z[y]=a
+x=(y+1&x-1)>>>0
+this.c=x
+if(this.b===x)this.bf();++this.d},
+bf:function(){var z,y,x,w
+z=new Array(this.a.length*2)
+z.fixed$length=Array
+y=H.K(z,this.$ti)
+z=this.a
+x=this.b
+w=z.length-x
+C.a.G(y,0,w,z,x)
+C.a.G(y,w,w+this.b,this.a,0)
+this.b=0
+this.c=this.a.length
+this.a=y},
+cR:function(a){var z,y,x,w,v
+z=this.b
+y=this.c
+x=this.a
+if(z<=y){w=y-z
+C.a.G(a,0,w,x,z)
+return w}else{v=x.length-z
+C.a.G(a,0,v,x,z)
+C.a.G(a,v,v+this.c,this.a,0)
+return this.c+v}},
+cf:function(a,b){var z=new Array(8)
+z.fixed$length=Array
+this.a=H.K(z,[b])},
+$ase:null,
+$asd:null,
+q:{
+bA:function(a,b){var z=new P.f1(null,0,0,0,[b])
+z.cf(a,b)
+return z},
+f2:function(a){var z
+a=C.r.b2(a,1)-1
+for(;!0;a=z)z=(a&a-1)>>>0}}},
+hn:{"^":"c;a,b,c,d,e,$ti",
+gl:function(){return this.e},
+k:function(){var z,y,x
+z=this.a
+if(this.c!==z.d)H.r(new P.D(z))
+y=this.d
+if(y===this.b){this.e=null
+return!1}z=z.a
+x=z.length
+if(y>=x)return H.j(z,y)
+this.e=z[y]
+this.d=(y+1&x-1)>>>0
+return!0}},
+fk:{"^":"c;$ti",
+gt:function(a){return this.a===0},
+gI:function(a){return this.a!==0},
+u:function(a,b){var z
+for(z=new P.aj(b,b.r,null,null,[null]),z.c=b.e;z.k();)this.m(0,z.d)},
+J:function(a,b){return new H.bt(this,b,[H.J(this,0),null])},
+j:function(a){return P.b1(this,"{","}")},
+B:function(a,b){var z
+for(z=new P.aj(this,this.r,null,null,[null]),z.c=this.e;z.k();)b.$1(z.d)},
+A:function(a,b){var z,y
+z=new P.aj(this,this.r,null,null,[null])
+z.c=this.e
+if(!z.k())return""
+if(b===""){y=""
+do y+=H.a(z.d)
+while(z.k())}else{y=H.a(z.d)
+for(;z.k();)y=y+b+H.a(z.d)}return y.charCodeAt(0)==0?y:y},
+C:function(a,b){var z,y,x
+if(typeof b!=="number"||Math.floor(b)!==b)throw H.b(P.c7("index"))
+if(b<0)H.r(P.L(b,0,null,"index",null))
+for(z=new P.aj(this,this.r,null,null,[null]),z.c=this.e,y=0;z.k();){x=z.d
+if(b===y)return x;++y}throw H.b(P.ae(b,this,"index",null,y))},
+$ise:1,
+$ase:null,
+$isd:1,
+$asd:null},
+fj:{"^":"fk;$ti"}}],["","",,P,{"^":"",
+ch:function(a){if(typeof a==="number"||typeof a==="boolean"||null==a)return J.P(a)
+if(typeof a==="string")return JSON.stringify(a)
+return P.eq(a)},
+eq:function(a){var z=J.m(a)
+if(!!z.$isf)return z.j(a)
+return H.b6(a)},
+b0:function(a){return new P.h5(a)},
+ar:function(a,b,c,d){var z,y,x
+z=J.eO(a,d)
+if(a!==0&&!0)for(y=z.length,x=0;x=1e5)return""+a
+if(a>=1e4)return"0"+a
+if(a>=1000)return"00"+a
+if(a>=100)return"000"+a
+if(a>=10)return"0000"+a
+return"00000"+a}},
+en:{"^":"f:7;",
+$1:function(a){if(a>=10)return""+a
+return"0"+a}},
+z:{"^":"c;",
+gU:function(){return H.H(this.$thrownJsError)}},
+cE:{"^":"z;",
+j:function(a){return"Throw of null."}},
+a_:{"^":"z;a,b,c,d",
+gaE:function(){return"Invalid argument"+(!this.a?"(s)":"")},
+gaD:function(){return""},
+j:function(a){var z,y,x,w,v,u
+z=this.c
+y=z!=null?" ("+H.a(z)+")":""
+z=this.d
+x=z==null?"":": "+H.a(z)
+w=this.gaE()+y+x
+if(!this.a)return w
+v=this.gaD()
+u=P.ch(this.b)
+return w+v+": "+H.a(u)},
+q:{
+ac:function(a){return new P.a_(!1,null,null,a)},
+aF:function(a,b,c){return new P.a_(!0,a,b,c)},
+c7:function(a){return new P.a_(!1,null,a,"Must not be null")}}},
+cK:{"^":"a_;e,f,a,b,c,d",
+gaE:function(){return"RangeError"},
+gaD:function(){var z,y,x
+z=this.e
+if(z==null){z=this.f
+y=z!=null?": Not less than or equal to "+H.a(z):""}else{x=this.f
+if(x==null)y=": Not greater than or equal to "+H.a(z)
+else{if(typeof x!=="number")return x.dD()
+if(typeof z!=="number")return H.a9(z)
+if(x>z)y=": Not in range "+z+".."+x+", inclusive"
+else y=xa||a>c)throw H.b(P.L(a,0,c,"start",f))
+if(a>b||b>c)throw H.b(P.L(b,a,c,"end",f))
+return b}}},
+ew:{"^":"a_;e,i:f>,a,b,c,d",
+gaE:function(){return"RangeError"},
+gaD:function(){if(J.dU(this.b,0))return": index must not be negative"
+var z=this.f
+if(z===0)return": no indices are valid"
+return": index should be less than "+H.a(z)},
+q:{
+ae:function(a,b,c,d,e){var z=e!=null?e:J.O(b)
+return new P.ew(b,z,!0,a,c,"Index out of range")}}},
+q:{"^":"z;a",
+j:function(a){return"Unsupported operation: "+this.a}},
+d3:{"^":"z;a",
+j:function(a){var z=this.a
+return z!=null?"UnimplementedError: "+H.a(z):"UnimplementedError"}},
+ba:{"^":"z;a",
+j:function(a){return"Bad state: "+this.a}},
+D:{"^":"z;a",
+j:function(a){var z=this.a
+if(z==null)return"Concurrent modification during iteration."
+return"Concurrent modification during iteration: "+H.a(P.ch(z))+"."}},
+f6:{"^":"c;",
+j:function(a){return"Out of Memory"},
+gU:function(){return},
+$isz:1},
+cO:{"^":"c;",
+j:function(a){return"Stack Overflow"},
+gU:function(){return},
+$isz:1},
+ek:{"^":"z;a",
+j:function(a){return"Reading static variable '"+this.a+"' during its initialization"}},
+h5:{"^":"c;a",
+j:function(a){var z=this.a
+if(z==null)return"Exception"
+return"Exception: "+H.a(z)}},
+cm:{"^":"c;a,b,c",
+j:function(a){var z,y
+z=""!==this.a?"FormatException: "+this.a:"FormatException"
+y=this.b
+if(typeof y!=="string")return z
+if(y.length>78)y=J.e8(y,0,75)+"..."
+return z+"\n"+H.a(y)}},
+er:{"^":"c;a,b,$ti",
+j:function(a){return"Expando:"+H.a(this.a)},
+h:function(a,b){var z,y
+z=this.b
+if(typeof z!=="string"){if(b==null||typeof b==="boolean"||typeof b==="number"||typeof b==="string")H.r(P.aF(b,"Expandos are not allowed on strings, numbers, booleans or null",null))
+return z.get(b)}y=H.bE(b,"expando$values")
+return y==null?null:H.bE(y,z)},
+p:function(a,b,c){var z,y
+z=this.b
+if(typeof z!=="string")z.set(b,c)
+else{y=H.bE(b,"expando$values")
+if(y==null){y=new P.c()
+H.cJ(b,"expando$values",y)}H.cJ(y,z,c)}}},
+k:{"^":"aB;"},
+"+int":0,
+d:{"^":"c;$ti",
+J:function(a,b){return H.b3(this,b,H.t(this,"d",0),null)},
+B:function(a,b){var z
+for(z=this.gn(this);z.k();)b.$1(z.gl())},
+A:function(a,b){var z,y
+z=this.gn(this)
+if(!z.k())return""
+if(b===""){y=""
+do y+=H.a(z.gl())
+while(z.k())}else{y=H.a(z.gl())
+for(;z.k();)y=y+b+H.a(z.gl())}return y.charCodeAt(0)==0?y:y},
+dg:function(a){return this.A(a,"")},
+ai:function(a,b){return P.Y(this,!0,H.t(this,"d",0))},
+a1:function(a){return this.ai(a,!0)},
+gi:function(a){var z,y
+z=this.gn(this)
+for(y=0;z.k();)++y
+return y},
+gt:function(a){return!this.gn(this).k()},
+gI:function(a){return!this.gt(this)},
+gc7:function(a){var z,y
+z=this.gn(this)
+if(!z.k())throw H.b(H.bv())
+y=z.gl()
+if(z.k())throw H.b(H.eN())
+return y},
+C:function(a,b){var z,y,x
+if(typeof b!=="number"||Math.floor(b)!==b)throw H.b(P.c7("index"))
+if(b<0)H.r(P.L(b,0,null,"index",null))
+for(z=this.gn(this),y=0;z.k();){x=z.gl()
+if(b===y)return x;++y}throw H.b(P.ae(b,this,"index",null,y))},
+j:function(a){return P.eL(this,"(",")")},
+$asd:null},
+aK:{"^":"c;$ti"},
+i:{"^":"c;$ti",$asi:null,$ise:1,$ase:null,$isd:1,$asd:null},
+"+List":0,
+f5:{"^":"c;",
+j:function(a){return"null"}},
+"+Null":0,
+aB:{"^":"c;"},
+"+num":0,
+c:{"^":";",
+v:function(a,b){return this===b},
+gD:function(a){return H.a4(this)},
+j:function(a){return H.b6(this)},
+gw:function(a){return new H.bc(H.dD(this),null)},
+toString:function(){return this.j(this)}},
+jv:{"^":"c;"},
+cM:{"^":"e;$ti"},
+ag:{"^":"c;"},
+p:{"^":"c;",$isbD:1},
+"+String":0,
+fe:{"^":"d;a",
+gn:function(a){return new P.fd(this.a,0,0,null)},
+$asd:function(){return[P.k]}},
+fd:{"^":"c;a,b,c,d",
+gl:function(){return this.d},
+k:function(){var z,y,x,w,v,u
+z=this.c
+this.b=z
+y=this.a
+x=y.length
+if(z===x){this.d=null
+return!1}w=C.b.V(y,z)
+v=z+1
+if((w&64512)===55296&&v>>6},
+de:function(a){a=536870911&a+((67108863&a)<<3)
+a^=a>>>11
+return 536870911&a+((16383&a)<<15)},
+du:function(a){var z=$.n
+if(z===C.d)return a
+if(a==null)return
+return z.cU(a,!0)},
+bW:function(a){return document.querySelector(a)},
+A:{"^":"v;","%":"HTMLAppletElement|HTMLBRElement|HTMLBaseElement|HTMLCanvasElement|HTMLContentElement|HTMLDListElement|HTMLDataListElement|HTMLDetailsElement|HTMLDialogElement|HTMLDirectoryElement|HTMLDivElement|HTMLEmbedElement|HTMLFieldSetElement|HTMLFontElement|HTMLFrameElement|HTMLHRElement|HTMLHeadElement|HTMLHeadingElement|HTMLHtmlElement|HTMLIFrameElement|HTMLImageElement|HTMLKeygenElement|HTMLLabelElement|HTMLLegendElement|HTMLLinkElement|HTMLMapElement|HTMLMarqueeElement|HTMLMenuElement|HTMLMenuItemElement|HTMLMetaElement|HTMLModElement|HTMLOListElement|HTMLObjectElement|HTMLOptGroupElement|HTMLParagraphElement|HTMLPictureElement|HTMLPreElement|HTMLQuoteElement|HTMLScriptElement|HTMLShadowElement|HTMLSourceElement|HTMLSpanElement|HTMLStyleElement|HTMLTableCaptionElement|HTMLTableCellElement|HTMLTableColElement|HTMLTableDataCellElement|HTMLTableElement|HTMLTableHeaderCellElement|HTMLTableRowElement|HTMLTableSectionElement|HTMLTemplateElement|HTMLTitleElement|HTMLTrackElement|HTMLUListElement|HTMLUnknownElement|PluginPlaceholderElement;HTMLElement"},
+iO:{"^":"A;",
+j:function(a){return String(a)},
+$ish:1,
+"%":"HTMLAnchorElement"},
+iQ:{"^":"A;",
+j:function(a){return String(a)},
+$ish:1,
+"%":"HTMLAreaElement"},
+iR:{"^":"A;",$ish:1,"%":"HTMLBodyElement"},
+iS:{"^":"A;O:value=","%":"HTMLButtonElement"},
+iV:{"^":"l;i:length=",$ish:1,"%":"CDATASection|CharacterData|Comment|ProcessingInstruction|Text"},
+iY:{"^":"l;",$ish:1,"%":"DocumentFragment|ShadowRoot"},
+iZ:{"^":"h;",
+j:function(a){return String(a)},
+"%":"DOMException"},
+el:{"^":"h;",
+j:function(a){return"Rectangle ("+H.a(a.left)+", "+H.a(a.top)+") "+H.a(this.ga2(a))+" x "+H.a(this.ga0(a))},
+v:function(a,b){var z
+if(b==null)return!1
+z=J.m(b)
+if(!z.$isaP)return!1
+return a.left===z.gaS(b)&&a.top===z.gaZ(b)&&this.ga2(a)===z.ga2(b)&&this.ga0(a)===z.ga0(b)},
+gD:function(a){var z,y,x,w
+z=a.left
+y=a.top
+x=this.ga2(a)
+w=this.ga0(a)
+return W.de(W.a6(W.a6(W.a6(W.a6(0,z&0x1FFFFFFF),y&0x1FFFFFFF),x&0x1FFFFFFF),w&0x1FFFFFFF))},
+ga0:function(a){return a.height},
+gaS:function(a){return a.left},
+gaZ:function(a){return a.top},
+ga2:function(a){return a.width},
+$isaP:1,
+$asaP:I.x,
+"%":";DOMRectReadOnly"},
+j_:{"^":"h;i:length=",
+m:function(a,b){return a.add(b)},
+"%":"DOMSettableTokenList|DOMTokenList"},
+fW:{"^":"aq;a,b",
+gt:function(a){return this.a.firstElementChild==null},
+gi:function(a){return this.b.length},
+h:function(a,b){var z=this.b
+if(b>>>0!==b||b>=z.length)return H.j(z,b)
+return z[b]},
+p:function(a,b,c){var z=this.b
+if(b>>>0!==b||b>=z.length)return H.j(z,b)
+this.a.replaceChild(c,z[b])},
+si:function(a,b){throw H.b(new P.q("Cannot resize element lists"))},
+m:function(a,b){this.a.appendChild(b)
+return b},
+gn:function(a){var z=this.a1(this)
+return new J.aX(z,z.length,0,null,[H.J(z,0)])},
+u:function(a,b){var z,y
+for(z=b.gn(b),y=this.a;z.k();)y.appendChild(z.gl())},
+R:function(a){J.c0(this.a)},
+$asaq:function(){return[W.v]},
+$asb5:function(){return[W.v]},
+$asi:function(){return[W.v]},
+$ase:function(){return[W.v]},
+$asd:function(){return[W.v]}},
+v:{"^":"l;",
+gbD:function(a){return new W.fW(a,a.children)},
+gbE:function(a){return new W.h0(a)},
+j:function(a){return a.localName},
+gbN:function(a){return new W.da(a,"submit",!1,[W.aG])},
+$isv:1,
+$isl:1,
+$isc:1,
+$ish:1,
+"%":";Element"},
+j0:{"^":"aG;Z:error=","%":"ErrorEvent"},
+aG:{"^":"h;",
+dk:function(a){return a.preventDefault()},
+"%":"AnimationEvent|AnimationPlayerEvent|ApplicationCacheErrorEvent|AudioProcessingEvent|AutocompleteErrorEvent|BeforeInstallPromptEvent|BeforeUnloadEvent|ClipboardEvent|CloseEvent|CompositionEvent|CrossOriginConnectEvent|CustomEvent|DefaultSessionStartEvent|DeviceLightEvent|DeviceMotionEvent|DeviceOrientationEvent|DragEvent|ExtendableEvent|FetchEvent|FocusEvent|FontFaceSetLoadEvent|GamepadEvent|GeofencingEvent|HashChangeEvent|IDBVersionChangeEvent|KeyboardEvent|MIDIConnectionEvent|MIDIMessageEvent|MediaEncryptedEvent|MediaKeyEvent|MediaKeyMessageEvent|MediaStreamEvent|MediaStreamTrackEvent|MessageEvent|MouseEvent|NotificationEvent|OfflineAudioCompletionEvent|PageTransitionEvent|PeriodicSyncEvent|PointerEvent|PopStateEvent|ProgressEvent|PromiseRejectionEvent|PushEvent|RTCDTMFToneChangeEvent|RTCDataChannelEvent|RTCIceCandidateEvent|RTCPeerConnectionIceEvent|RelatedEvent|ResourceProgressEvent|SVGZoomEvent|SecurityPolicyViolationEvent|ServicePortConnectEvent|ServiceWorkerMessageEvent|SpeechRecognitionEvent|SpeechSynthesisEvent|StorageEvent|SyncEvent|TextEvent|TouchEvent|TrackEvent|TransitionEvent|UIEvent|WebGLContextEvent|WebKitTransitionEvent|WheelEvent|XMLHttpRequestProgressEvent;Event|InputEvent"},
+ci:{"^":"h;",
+co:function(a,b,c,d){return a.addEventListener(b,H.az(c,1),!1)},
+cL:function(a,b,c,d){return a.removeEventListener(b,H.az(c,1),!1)},
+"%":"CrossOriginServiceWorkerClient|MediaStream;EventTarget"},
+jk:{"^":"A;i:length=","%":"HTMLFormElement"},
+jl:{"^":"eA;",
+gi:function(a){return a.length},
+h:function(a,b){if(b>>>0!==b||b>=a.length)throw H.b(P.ae(b,a,null,null,null))
+return a[b]},
+p:function(a,b,c){throw H.b(new P.q("Cannot assign element of immutable List."))},
+si:function(a,b){throw H.b(new P.q("Cannot resize immutable List."))},
+C:function(a,b){if(b>>>0!==b||b>=a.length)return H.j(a,b)
+return a[b]},
+$isi:1,
+$asi:function(){return[W.l]},
+$ise:1,
+$ase:function(){return[W.l]},
+$isd:1,
+$asd:function(){return[W.l]},
+$isE:1,
+$asE:function(){return[W.l]},
+$isB:1,
+$asB:function(){return[W.l]},
+"%":"HTMLCollection|HTMLFormControlsCollection|HTMLOptionsCollection"},
+ex:{"^":"h+X;",
+$asi:function(){return[W.l]},
+$ase:function(){return[W.l]},
+$asd:function(){return[W.l]},
+$isi:1,
+$ise:1,
+$isd:1},
+eA:{"^":"ex+aJ;",
+$asi:function(){return[W.l]},
+$ase:function(){return[W.l]},
+$asd:function(){return[W.l]},
+$isi:1,
+$ise:1,
+$isd:1},
+cn:{"^":"A;O:value=",$iscn:1,$isv:1,$ish:1,"%":"HTMLInputElement"},
+js:{"^":"A;O:value=","%":"HTMLLIElement"},
+jw:{"^":"A;Z:error=","%":"HTMLAudioElement|HTMLMediaElement|HTMLVideoElement"},
+jx:{"^":"aG;",
+af:function(a,b,c){return a.matches.$2(b,c)},
+"%":"MediaQueryListEvent"},
+jy:{"^":"A;O:value=","%":"HTMLMeterElement"},
+jJ:{"^":"h;",$ish:1,"%":"Navigator"},
+fV:{"^":"aq;a",
+m:function(a,b){this.a.appendChild(b)},
+u:function(a,b){var z,y,x,w
+b.gcP()
+for(z=b.gi(b),y=this.a,x=0;C.c.a3(x,z);++x){w=b.gcP()
+y.appendChild(w.gdK(w))}return},
+p:function(a,b,c){var z,y
+z=this.a
+y=z.childNodes
+if(b>>>0!==b||b>=y.length)return H.j(y,b)
+z.replaceChild(c,y[b])},
+gn:function(a){var z=this.a.childNodes
+return new W.cl(z,z.length,-1,null,[H.t(z,"aJ",0)])},
+gi:function(a){return this.a.childNodes.length},
+si:function(a,b){throw H.b(new P.q("Cannot set length on immutable List."))},
+h:function(a,b){var z=this.a.childNodes
+if(b>>>0!==b||b>=z.length)return H.j(z,b)
+return z[b]},
+$asaq:function(){return[W.l]},
+$asb5:function(){return[W.l]},
+$asi:function(){return[W.l]},
+$ase:function(){return[W.l]},
+$asd:function(){return[W.l]}},
+l:{"^":"ci;",
+dm:function(a){var z=a.parentNode
+if(z!=null)z.removeChild(a)},
+du:function(a,b){var z,y
+try{z=a.parentNode
+J.dX(z,b,a)}catch(y){H.y(y)}return a},
+cr:function(a){var z
+for(;z=a.firstChild,z!=null;)a.removeChild(z)},
+j:function(a){var z=a.nodeValue
+return z==null?this.cb(a):z},
+cM:function(a,b,c){return a.replaceChild(b,c)},
+$isl:1,
+$isc:1,
+"%":"Attr|Document|HTMLDocument|XMLDocument;Node"},
+jK:{"^":"eB;",
+gi:function(a){return a.length},
+h:function(a,b){if(b>>>0!==b||b>=a.length)throw H.b(P.ae(b,a,null,null,null))
+return a[b]},
+p:function(a,b,c){throw H.b(new P.q("Cannot assign element of immutable List."))},
+si:function(a,b){throw H.b(new P.q("Cannot resize immutable List."))},
+C:function(a,b){if(b>>>0!==b||b>=a.length)return H.j(a,b)
+return a[b]},
+$isi:1,
+$asi:function(){return[W.l]},
+$ise:1,
+$ase:function(){return[W.l]},
+$isd:1,
+$asd:function(){return[W.l]},
+$isE:1,
+$asE:function(){return[W.l]},
+$isB:1,
+$asB:function(){return[W.l]},
+"%":"NodeList|RadioNodeList"},
+ey:{"^":"h+X;",
+$asi:function(){return[W.l]},
+$ase:function(){return[W.l]},
+$asd:function(){return[W.l]},
+$isi:1,
+$ise:1,
+$isd:1},
+eB:{"^":"ey+aJ;",
+$asi:function(){return[W.l]},
+$ase:function(){return[W.l]},
+$asd:function(){return[W.l]},
+$isi:1,
+$ise:1,
+$isd:1},
+jL:{"^":"A;O:value=","%":"HTMLOptionElement"},
+jM:{"^":"A;O:value=","%":"HTMLOutputElement"},
+jN:{"^":"A;O:value=","%":"HTMLParamElement"},
+jP:{"^":"A;O:value=","%":"HTMLProgressElement"},
+jR:{"^":"A;i:length=,O:value=","%":"HTMLSelectElement"},
+jS:{"^":"aG;Z:error=","%":"SpeechRecognitionError"},
+jV:{"^":"A;O:value=","%":"HTMLTextAreaElement"},
+k3:{"^":"ci;",$ish:1,"%":"DOMWindow|Window"},
+k7:{"^":"h;a0:height=,aS:left=,aZ:top=,a2:width=",
+j:function(a){return"Rectangle ("+H.a(a.left)+", "+H.a(a.top)+") "+H.a(a.width)+" x "+H.a(a.height)},
+v:function(a,b){var z,y,x
+if(b==null)return!1
+z=J.m(b)
+if(!z.$isaP)return!1
+y=a.left
+x=z.gaS(b)
+if(y==null?x==null:y===x){y=a.top
+x=z.gaZ(b)
+if(y==null?x==null:y===x){y=a.width
+x=z.ga2(b)
+if(y==null?x==null:y===x){y=a.height
+z=z.ga0(b)
+z=y==null?z==null:y===z}else z=!1}else z=!1}else z=!1
+return z},
+gD:function(a){var z,y,x,w
+z=J.U(a.left)
+y=J.U(a.top)
+x=J.U(a.width)
+w=J.U(a.height)
+return W.de(W.a6(W.a6(W.a6(W.a6(0,z),y),x),w))},
+$isaP:1,
+$asaP:I.x,
+"%":"ClientRect"},
+k8:{"^":"l;",$ish:1,"%":"DocumentType"},
+k9:{"^":"el;",
+ga0:function(a){return a.height},
+ga2:function(a){return a.width},
+"%":"DOMRect"},
+kc:{"^":"A;",$ish:1,"%":"HTMLFrameSetElement"},
+kd:{"^":"eC;",
+gi:function(a){return a.length},
+h:function(a,b){if(b>>>0!==b||b>=a.length)throw H.b(P.ae(b,a,null,null,null))
+return a[b]},
+p:function(a,b,c){throw H.b(new P.q("Cannot assign element of immutable List."))},
+si:function(a,b){throw H.b(new P.q("Cannot resize immutable List."))},
+C:function(a,b){if(b>>>0!==b||b>=a.length)return H.j(a,b)
+return a[b]},
+$isi:1,
+$asi:function(){return[W.l]},
+$ise:1,
+$ase:function(){return[W.l]},
+$isd:1,
+$asd:function(){return[W.l]},
+$isE:1,
+$asE:function(){return[W.l]},
+$isB:1,
+$asB:function(){return[W.l]},
+"%":"MozNamedAttrMap|NamedNodeMap"},
+ez:{"^":"h+X;",
+$asi:function(){return[W.l]},
+$ase:function(){return[W.l]},
+$asd:function(){return[W.l]},
+$isi:1,
+$ise:1,
+$isd:1},
+eC:{"^":"ez+aJ;",
+$asi:function(){return[W.l]},
+$ase:function(){return[W.l]},
+$asd:function(){return[W.l]},
+$isi:1,
+$ise:1,
+$isd:1},
+h0:{"^":"cd;a",
+K:function(){var z,y,x,w,v
+z=P.R(null,null,null,P.p)
+for(y=this.a.className.split(" "),x=y.length,w=0;w=z)return
+else if(b<0)throw H.b(P.ac("Invalid list length"))
+this.dr(0,b,z)},
+m:function(a,b){this.b.a.appendChild(b)},
+u:function(a,b){var z,y
+for(z=new H.bz(b,b.gi(b),0,null,[H.t(b,"af",0)]),y=this.b.a;z.k();)y.appendChild(z.d)},
+dr:function(a,b,c){var z=this.gX()
+z=H.fm(z,b,H.t(z,"d",0))
+C.a.B(P.Y(H.fy(z,c-b,H.t(z,"d",0)),!0,null),new P.ev())},
+R:function(a){J.c0(this.b.a)},
+gi:function(a){return J.O(this.gX().a)},
+h:function(a,b){var z=this.gX()
+return z.b.$1(J.aW(z.a,b))},
+gn:function(a){var z=P.Y(this.gX(),!1,W.v)
+return new J.aX(z,z.length,0,null,[H.J(z,0)])},
+$asaq:function(){return[W.v]},
+$asb5:function(){return[W.v]},
+$asi:function(){return[W.v]},
+$ase:function(){return[W.v]},
+$asd:function(){return[W.v]}},et:{"^":"f:0;",
+$1:function(a){return!!J.m(a).$isv}},eu:{"^":"f:0;",
+$1:function(a){return H.dF(a,"$isv")}},ev:{"^":"f:0;",
+$1:function(a){return J.e5(a)}}}],["","",,P,{"^":""}],["","",,P,{"^":"",iN:{"^":"aI;",$ish:1,"%":"SVGAElement"},iP:{"^":"o;",$ish:1,"%":"SVGAnimateElement|SVGAnimateMotionElement|SVGAnimateTransformElement|SVGAnimationElement|SVGSetElement"},j1:{"^":"o;",$ish:1,"%":"SVGFEBlendElement"},j2:{"^":"o;",$ish:1,"%":"SVGFEColorMatrixElement"},j3:{"^":"o;",$ish:1,"%":"SVGFEComponentTransferElement"},j4:{"^":"o;",$ish:1,"%":"SVGFECompositeElement"},j5:{"^":"o;",$ish:1,"%":"SVGFEConvolveMatrixElement"},j6:{"^":"o;",$ish:1,"%":"SVGFEDiffuseLightingElement"},j7:{"^":"o;",$ish:1,"%":"SVGFEDisplacementMapElement"},j8:{"^":"o;",$ish:1,"%":"SVGFEFloodElement"},j9:{"^":"o;",$ish:1,"%":"SVGFEGaussianBlurElement"},ja:{"^":"o;",$ish:1,"%":"SVGFEImageElement"},jb:{"^":"o;",$ish:1,"%":"SVGFEMergeElement"},jc:{"^":"o;",$ish:1,"%":"SVGFEMorphologyElement"},jd:{"^":"o;",$ish:1,"%":"SVGFEOffsetElement"},je:{"^":"o;",$ish:1,"%":"SVGFESpecularLightingElement"},jf:{"^":"o;",$ish:1,"%":"SVGFETileElement"},jg:{"^":"o;",$ish:1,"%":"SVGFETurbulenceElement"},jh:{"^":"o;",$ish:1,"%":"SVGFilterElement"},aI:{"^":"o;",$ish:1,"%":"SVGCircleElement|SVGClipPathElement|SVGDefsElement|SVGEllipseElement|SVGForeignObjectElement|SVGGElement|SVGGeometryElement|SVGLineElement|SVGPathElement|SVGPolygonElement|SVGPolylineElement|SVGRectElement|SVGSwitchElement;SVGGraphicsElement"},jm:{"^":"aI;",$ish:1,"%":"SVGImageElement"},jt:{"^":"o;",$ish:1,"%":"SVGMarkerElement"},ju:{"^":"o;",$ish:1,"%":"SVGMaskElement"},jO:{"^":"o;",$ish:1,"%":"SVGPatternElement"},jQ:{"^":"o;",$ish:1,"%":"SVGScriptElement"},fS:{"^":"cd;a",
+K:function(){var z,y,x,w,v,u
+z=this.a.getAttribute("class")
+y=P.R(null,null,null,P.p)
+if(z==null)return y
+for(x=z.split(" "),w=x.length,v=0;v"}if(c.H(0,a))return"(recursive)"
+x=P.f0([a],null)
+w=c.cI()
+w.u(0,c)
+w.u(0,x)
+z.a=w
+z=new Z.iC(z,this,b)
+if(!!y.$isd){if(!!y.$isi)v=""
+else{x=Z.dt(a)
+if(x==null)return x.F()
+v=x+":"}u=y.J(a,z).a1(0)
+if(u.length>this.b)C.a.bQ(u,this.b-1,u.length,["..."])
+t=v+"["+C.a.A(u,", ")+"]"
+if(t.length+b<=this.a&&!C.b.H(t,"\n"))return t
+return v+"[\n"+new H.a2(u,new Z.iz(b),[null,null]).A(0,",\n")+"\n"+C.a.A(P.ar(b," ",!1,null),"")+"]"}else if(!!y.$iscw){u=J.c3(a.gS(),new Z.iA(a,z)).a1(0)
+if(u.length>this.b)C.a.bQ(u,this.b-1,u.length,["..."])
+t="{"+C.a.A(u,", ")+"}"
+if(t.length+b<=this.a&&!C.b.H(t,"\n"))return t
+return"{\n"+new H.a2(u,new Z.iB(b),[null,null]).A(0,",\n")+"\n"+C.a.A(P.ar(b," ",!1,null),"")+"}"}else if(typeof a==="string")return"'"+new H.a2(a.split("\n"),Z.iD(),[null,null]).A(0,"\\n'\n"+C.a.A(P.ar(b+2," ",!1,null),"")+"'")+"'"
+else{s=J.aE(y.j(a),"\n",C.a.A(P.ar(b," ",!1,null),"")+"\n")
+r=J.c4(s,"Instance of ")
+if(d)s="<"+s+">"
+if(typeof a==="number"||typeof a==="boolean"||!!y.$isbu||a==null||r)return s
+else return H.a(Z.dt(a))+":"+s}}},
+iC:{"^":"f:15;a,b,c",
+$1:function(a){return this.b.$4(a,this.c+2,this.a.a,!1)}},
+iz:{"^":"f:0;a",
+$1:function(a){return C.b.F(C.a.A(P.ar(this.a+2," ",!1,null),""),a)}},
+iA:{"^":"f:0;a,b",
+$1:function(a){var z=this.b
+return H.a(z.$1(a))+": "+H.a(z.$1(this.a.h(0,a)))}},
+iB:{"^":"f:0;a",
+$1:function(a){return C.b.F(C.a.A(P.ar(this.a+2," ",!1,null),""),a)}}}],["","",,M,{"^":"",
+i7:function(a){return J.e6(J.aE(a,"\\","\\\\"),$.$get$dk(),new M.i8())},
+hL:[function(a){var z=J.e1(a)
+return"\\x"+C.b.dj(J.e9(z.gc7(z),16).toUpperCase(),2,"0")},"$1","iM",2,0,3],
+i8:{"^":"f:0;",
+$1:function(a){var z=C.l.h(0,a.h(0,0))
+if(z!=null)return z
+return M.hL(a.h(0,0))}}}],["","",,F,{"^":"",
+ko:[function(){var z=J.e0($.$get$c_())
+new W.db(0,z.a,z.b,W.du(new F.it()),!1,[H.J(z,0)]).aM()},"$0","dL",0,0,1],
+i1:{"^":"f:0;",
+$1:function(a){var z
+if(typeof a==="number"&&Math.floor(a)===a&&a<18)return"Only adults can register for passports. Sorry, kid!"
+else{if(a!=null)z=typeof a==="string"&&C.b.aj(a).length===0
+else z=!0
+if(z)return"Age is required."
+else return"Age must be a positive integer. Unless you are a monster..."}}},
+it:{"^":"f:0;",
+$1:function(a){var z,y,x,w,v,u,t,s,r
+J.e4(a)
+w=$.$get$bZ()
+J.bq(w).R(0)
+z=P.a1()
+C.a.B(["firstName","lastName","age","familySize"],new F.ir(z))
+v=$.$get$bY()
+if(J.c1(J.c2(v)))J.bp(z,"blank",J.c2(v))
+P.bn("Form data: "+H.a(z))
+try{v=$.$get$dA()
+v.toString
+y=v.bF(S.i0(z,["age","familySize"]))
+v=J.bq(w)
+u=document
+t=u.createElement("li")
+J.aD(t).m(0,"success")
+t.textContent="Successfully registered for a passport."
+v.m(0,t)
+t="First Name: "+H.a(J.an(y,"firstName"))
+s=u.createElement("li")
+J.aD(s).m(0,"success")
+s.textContent=t
+v.m(0,s)
+s="Last Name: "+H.a(J.an(y,"lastName"))
+t=u.createElement("li")
+J.aD(t).m(0,"success")
+t.textContent=s
+v.m(0,t)
+t="Age: "+H.a(J.an(y,"age"))+" years old"
+s=u.createElement("li")
+J.aD(s).m(0,"success")
+s.textContent=t
+v.m(0,s)
+s="Number of People in Family: "+H.a(J.an(y,"familySize"))
+u=u.createElement("li")
+J.aD(u).m(0,"success")
+u.textContent=s
+v.m(0,u)}catch(r){v=H.y(r)
+if(v instanceof S.d4){x=v
+J.bq(w).u(0,new H.a2(x.gbG(),new F.is(),[null,null]))}else throw r}}},
+ir:{"^":"f:0;a",
+$1:function(a){var z='[name="'+H.a(a)+'"]'
+this.a.p(0,a,H.dF(document.querySelector(z),"$iscn").value)}},
+is:{"^":"f:0;",
+$1:function(a){var z=document
+z=z.createElement("li")
+z.textContent=a
+return z}}},1]]
+setupProgram(dart,0)
+J.m=function(a){if(typeof a=="number"){if(Math.floor(a)==a)return J.cq.prototype
+return J.eQ.prototype}if(typeof a=="string")return J.aN.prototype
+if(a==null)return J.cr.prototype
+if(typeof a=="boolean")return J.eP.prototype
+if(a.constructor==Array)return J.aL.prototype
+if(typeof a!="object"){if(typeof a=="function")return J.aO.prototype
+return a}if(a instanceof P.c)return a
+return J.bj(a)}
+J.F=function(a){if(typeof a=="string")return J.aN.prototype
+if(a==null)return a
+if(a.constructor==Array)return J.aL.prototype
+if(typeof a!="object"){if(typeof a=="function")return J.aO.prototype
+return a}if(a instanceof P.c)return a
+return J.bj(a)}
+J.a8=function(a){if(a==null)return a
+if(a.constructor==Array)return J.aL.prototype
+if(typeof a!="object"){if(typeof a=="function")return J.aO.prototype
+return a}if(a instanceof P.c)return a
+return J.bj(a)}
+J.bQ=function(a){if(typeof a=="number")return J.aM.prototype
+if(a==null)return a
+if(!(a instanceof P.c))return J.aS.prototype
+return a}
+J.ia=function(a){if(typeof a=="number")return J.aM.prototype
+if(typeof a=="string")return J.aN.prototype
+if(a==null)return a
+if(!(a instanceof P.c))return J.aS.prototype
+return a}
+J.aA=function(a){if(typeof a=="string")return J.aN.prototype
+if(a==null)return a
+if(!(a instanceof P.c))return J.aS.prototype
+return a}
+J.G=function(a){if(a==null)return a
+if(typeof a!="object"){if(typeof a=="function")return J.aO.prototype
+return a}if(a instanceof P.c)return a
+return J.bj(a)}
+J.aC=function(a,b){if(typeof a=="number"&&typeof b=="number")return a+b
+return J.ia(a).F(a,b)}
+J.N=function(a,b){if(a==null)return b==null
+if(typeof a!="object")return b!=null&&a===b
+return J.m(a).v(a,b)}
+J.dU=function(a,b){if(typeof a=="number"&&typeof b=="number")return a>>0===b&&b>>0===b&&b= 0) return hooks;
+ if (ua.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;
+ };
+}
+C.w=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 (self.HTMLElement && 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 navigator == "object";
+ return {
+ getTag: getTag,
+ getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag,
+ prototypeForTag: prototypeForTag,
+ discriminator: discriminator };
+}
+C.x=function(hooks) {
+ var userAgent = typeof navigator == "object" ? navigator.userAgent : "";
+ 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;
+}
+C.y=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;
+}
+C.k=function getTagFallback(o) {
+ var s = Object.prototype.toString.call(o);
+ return s.substring(8, s.length - 1);
+}
+C.B=I.bl([])
+C.A=I.bl(["\n","\r","\f","\b","\t","\v","\x7f"])
+C.l=new H.cc(7,{"\n":"\\n","\r":"\\r","\f":"\\f","\b":"\\b","\t":"\\t","\v":"\\v","\x7f":"\\x7F"},C.A,[null,null])
+C.U=new H.cc(0,{},C.B,[null,null])
+C.C=H.w("iT")
+C.D=H.w("iU")
+C.E=H.w("ji")
+C.F=H.w("jj")
+C.G=H.w("jn")
+C.H=H.w("jo")
+C.I=H.w("jp")
+C.J=H.w("cs")
+C.K=H.w("f5")
+C.L=H.w("p")
+C.M=H.w("jX")
+C.N=H.w("jY")
+C.O=H.w("jZ")
+C.P=H.w("k_")
+C.Q=H.w("aV")
+C.R=H.w("C")
+C.S=H.w("k")
+C.T=H.w("aB")
+$.cH="$cachedFunction"
+$.cI="$cachedInvocation"
+$.Q=0
+$.ap=null
+$.c8=null
+$.bS=null
+$.dv=null
+$.dO=null
+$.bi=null
+$.bk=null
+$.bT=null
+$.al=null
+$.au=null
+$.av=null
+$.bN=!1
+$.n=C.d
+$.cj=0
+$=null
+init.isHunkLoaded=function(a){return!!$dart_deferred_initializers$[a]}
+init.deferredInitialized=new Object(null)
+init.isHunkInitialized=function(a){return init.deferredInitialized[a]}
+init.initializeLoadedHunk=function(a){$dart_deferred_initializers$[a]($globals$,$)
+init.deferredInitialized[a]=true}
+init.deferredLibraryUris={}
+init.deferredLibraryHashes={};(function(a){for(var z=0;z> v2`, and push the
+ * result back onto the stack.
+ */
+ bitShiftRight,
+
+ /**
+ * Pop the top 2 values from the stack, compute `v1 << v2`, and push the
+ * result back onto the stack.
+ */
+ bitShiftLeft,
+
+ /**
+ * Pop the top 2 values from the stack, compute `v1 + v2`, and push the
+ * result back onto the stack.
+ */
+ add,
+
+ /**
+ * Pop the top value from the stack, compute its integer negation, and push
+ * the result back onto the stack.
+ */
+ negate,
+
+ /**
+ * Pop the top 2 values from the stack, compute `v1 - v2`, and push the
+ * result back onto the stack.
+ */
+ subtract,
+
+ /**
+ * Pop the top 2 values from the stack, compute `v1 * v2`, and push the
+ * result back onto the stack.
+ */
+ multiply,
+
+ /**
+ * Pop the top 2 values from the stack, compute `v1 / v2`, and push the
+ * result back onto the stack.
+ */
+ divide,
+
+ /**
+ * Pop the top 2 values from the stack, compute `v1 ~/ v2`, and push the
+ * result back onto the stack.
+ */
+ floorDivide,
+
+ /**
+ * Pop the top 2 values from the stack, compute `v1 > v2`, and push the
+ * result back onto the stack.
+ */
+ greater,
+
+ /**
+ * Pop the top 2 values from the stack, compute `v1 < v2`, and push the
+ * result back onto the stack.
+ */
+ less,
+
+ /**
+ * Pop the top 2 values from the stack, compute `v1 >= v2`, and push the
+ * result back onto the stack.
+ */
+ greaterEqual,
+
+ /**
+ * Pop the top 2 values from the stack, compute `v1 <= v2`, and push the
+ * result back onto the stack.
+ */
+ lessEqual,
+
+ /**
+ * Pop the top 2 values from the stack, compute `v1 % v2`, and push the
+ * result back onto the stack.
+ */
+ modulo,
+
+ /**
+ * Pop the top 3 values from the stack, compute `v1 ? v2 : v3`, and push the
+ * result back onto the stack.
+ */
+ conditional,
+
+ /**
+ * Pop from the stack `value` and get the next `target` reference from
+ * [UnlinkedConst.references] - a top-level variable (prefixed or not), an
+ * assignable field of a class (prefixed or not), or a sequence of getters
+ * ending with an assignable property `a.b.b.c.d.e`. In general `a.b` cannot
+ * not be distinguished between: `a` is a prefix and `b` is a top-level
+ * variable; or `a` is an object and `b` is the name of a property. Perform
+ * `reference op= value` where `op` is the next assignment operator from
+ * [UnlinkedConst.assignmentOperators]. Push `value` back into the stack.
+ *
+ * If the assignment operator is a prefix/postfix increment/decrement, then
+ * `value` is not present in the stack, so it should not be popped and the
+ * corresponding value of the `target` after/before update is pushed into the
+ * stack instead.
+ */
+ assignToRef,
+
+ /**
+ * Pop from the stack `target` and `value`. Get the name of the property from
+ * `UnlinkedConst.strings` and assign the `value` to the named property of the
+ * `target`. This operation is used when we know that the `target` is an
+ * object reference expression, e.g. `new Foo().a.b.c` or `a.b[0].c.d`.
+ * Perform `target.property op= value` where `op` is the next assignment
+ * operator from [UnlinkedConst.assignmentOperators]. Push `value` back into
+ * the stack.
+ *
+ * If the assignment operator is a prefix/postfix increment/decrement, then
+ * `value` is not present in the stack, so it should not be popped and the
+ * corresponding value of the `target` after/before update is pushed into the
+ * stack instead.
+ */
+ assignToProperty,
+
+ /**
+ * Pop from the stack `index`, `target` and `value`. Perform
+ * `target[index] op= value` where `op` is the next assignment operator from
+ * [UnlinkedConst.assignmentOperators]. Push `value` back into the stack.
+ *
+ * If the assignment operator is a prefix/postfix increment/decrement, then
+ * `value` is not present in the stack, so it should not be popped and the
+ * corresponding value of the `target` after/before update is pushed into the
+ * stack instead.
+ */
+ assignToIndex,
+
+ /**
+ * Pop from the stack `index` and `target`. Push into the stack the result
+ * of evaluation of `target[index]`.
+ */
+ extractIndex,
+
+ /**
+ * Pop the top `n` values from the stack (where `n` is obtained from
+ * [UnlinkedConst.ints]) into a list (filled from the end) and take the next
+ * `n` values from [UnlinkedConst.strings] and use the lists of names and
+ * values to create named arguments. Then pop the top `m` values from the
+ * stack (where `m` is obtained from [UnlinkedConst.ints]) into a list (filled
+ * from the end) and use them as positional arguments. Use the lists of
+ * positional and names arguments to invoke a method (or a function) with
+ * the reference from [UnlinkedConst.references]. If `k` is nonzero (where
+ * `k` is obtained from [UnlinkedConst.ints]), obtain `k` type arguments from
+ * [UnlinkedConst.references] and use them as generic type arguments for the
+ * aforementioned method or function. Push the result of the invocation onto
+ * the stack.
+ *
+ * In general `a.b` cannot not be distinguished between: `a` is a prefix and
+ * `b` is a top-level function; or `a` is an object and `b` is the name of a
+ * method. This operation should be used for a sequence of identifiers
+ * `a.b.b.c.d.e` ending with an invokable result.
+ */
+ invokeMethodRef,
+
+ /**
+ * Pop the top `n` values from the stack (where `n` is obtained from
+ * [UnlinkedConst.ints]) into a list (filled from the end) and take the next
+ * `n` values from [UnlinkedConst.strings] and use the lists of names and
+ * values to create named arguments. Then pop the top `m` values from the
+ * stack (where `m` is obtained from [UnlinkedConst.ints]) into a list (filled
+ * from the end) and use them as positional arguments. Use the lists of
+ * positional and names arguments to invoke the method with the name from
+ * [UnlinkedConst.strings] of the target popped from the stack. If `k` is
+ * nonzero (where `k` is obtained from [UnlinkedConst.ints]), obtain `k` type
+ * arguments from [UnlinkedConst.references] and use them as generic type
+ * arguments for the aforementioned method. Push the result of the
+ * invocation onto the stack.
+ *
+ * This operation should be used for invocation of a method invocation
+ * where `target` is known to be an object instance.
+ */
+ invokeMethod,
+
+ /**
+ * Begin a new cascade section. Duplicate the top value of the stack.
+ */
+ cascadeSectionBegin,
+
+ /**
+ * End a new cascade section. Pop the top value from the stack and throw it
+ * away.
+ */
+ cascadeSectionEnd,
+
+ /**
+ * Pop the top value from the stack and cast it to the type with reference
+ * from [UnlinkedConst.references], push the result into the stack.
+ */
+ typeCast,
+
+ /**
+ * Pop the top value from the stack and check whether it is a subclass of the
+ * type with reference from [UnlinkedConst.references], push the result into
+ * the stack.
+ */
+ typeCheck,
+
+ /**
+ * Pop the top value from the stack and raise an exception with this value.
+ */
+ throwException,
+
+ /**
+ * Obtain two values `n` and `m` from [UnlinkedConst.ints]. Then, starting at
+ * the executable element for the expression being evaluated, if n > 0, pop to
+ * the nth enclosing function element. Then, push the mth local function of
+ * that element onto the stack.
+ */
+ pushLocalFunctionReference
+}
+
+/**
+ * Enum used to indicate the kind of an constructor initializer.
+ */
+enum UnlinkedConstructorInitializerKind : byte {
+ /**
+ * Initialization of a field.
+ */
+ field,
+
+ /**
+ * Invocation of a constructor in the same class.
+ */
+ thisInvocation,
+
+ /**
+ * Invocation of a superclass' constructor.
+ */
+ superInvocation
+}
+
+/**
+ * Enum used to indicate the kind of an executable.
+ */
+enum UnlinkedExecutableKind : byte {
+ /**
+ * Executable is a function or method.
+ */
+ functionOrMethod,
+
+ /**
+ * Executable is a getter.
+ */
+ getter,
+
+ /**
+ * Executable is a setter.
+ */
+ setter,
+
+ /**
+ * Executable is a constructor.
+ */
+ constructor
+}
+
+/**
+ * Enum representing the various kinds of assignment operations combined
+ * with:
+ * [UnlinkedConstOperation.assignToRef],
+ * [UnlinkedConstOperation.assignToProperty],
+ * [UnlinkedConstOperation.assignToIndex].
+ */
+enum UnlinkedExprAssignOperator : byte {
+ /**
+ * Perform simple assignment `target = operand`.
+ */
+ assign,
+
+ /**
+ * Perform `target ??= operand`.
+ */
+ ifNull,
+
+ /**
+ * Perform `target *= operand`.
+ */
+ multiply,
+
+ /**
+ * Perform `target /= operand`.
+ */
+ divide,
+
+ /**
+ * Perform `target ~/= operand`.
+ */
+ floorDivide,
+
+ /**
+ * Perform `target %= operand`.
+ */
+ modulo,
+
+ /**
+ * Perform `target += operand`.
+ */
+ plus,
+
+ /**
+ * Perform `target -= operand`.
+ */
+ minus,
+
+ /**
+ * Perform `target <<= operand`.
+ */
+ shiftLeft,
+
+ /**
+ * Perform `target >>= operand`.
+ */
+ shiftRight,
+
+ /**
+ * Perform `target &= operand`.
+ */
+ bitAnd,
+
+ /**
+ * Perform `target ^= operand`.
+ */
+ bitXor,
+
+ /**
+ * Perform `target |= operand`.
+ */
+ bitOr,
+
+ /**
+ * Perform `++target`.
+ */
+ prefixIncrement,
+
+ /**
+ * Perform `--target`.
+ */
+ prefixDecrement,
+
+ /**
+ * Perform `target++`.
+ */
+ postfixIncrement,
+
+ /**
+ * Perform `target++`.
+ */
+ postfixDecrement
+}
+
+/**
+ * Enum used to indicate the kind of a parameter.
+ */
+enum UnlinkedParamKind : byte {
+ /**
+ * Parameter is required.
+ */
+ required,
+
+ /**
+ * Parameter is positional optional (enclosed in `[]`)
+ */
+ positional,
+
+ /**
+ * Parameter is named optional (enclosed in `{}`)
+ */
+ named
+}
+
+/**
+ * Information about an element code range.
+ */
+table CodeRange {
+ /**
+ * Length of the element code.
+ */
+ length:uint (id: 1);
+
+ /**
+ * Offset of the element code relative to the beginning of the file.
+ */
+ offset:uint (id: 0);
+}
+
+/**
+ * Summary information about a reference to a an entity such as a type, top
+ * level executable, or executable within a class.
+ */
+table EntityRef {
+ /**
+ * If this is a reference to a function type implicitly defined by a
+ * function-typed parameter, a list of zero-based indices indicating the path
+ * from the entity referred to by [reference] to the appropriate type
+ * parameter. Otherwise the empty list.
+ *
+ * If there are N indices in this list, then the entity being referred to is
+ * the function type implicitly defined by a function-typed parameter of a
+ * function-typed parameter, to N levels of nesting. The first index in the
+ * list refers to the outermost level of nesting; for example if [reference]
+ * refers to the entity defined by:
+ *
+ * void f(x, void g(y, z, int h(String w))) { ... }
+ *
+ * Then to refer to the function type implicitly defined by parameter `h`
+ * (which is parameter 2 of parameter 1 of `f`), then
+ * [implicitFunctionTypeIndices] should be [1, 2].
+ *
+ * Note that if the entity being referred to is a generic method inside a
+ * generic class, then the type arguments in [typeArguments] are applied
+ * first to the class and then to the method.
+ */
+ implicitFunctionTypeIndices:[uint] (id: 4);
+
+ /**
+ * If this is a reference to a type parameter, one-based index into the list
+ * of [UnlinkedTypeParam]s currently in effect. Indexing is done using De
+ * Bruijn index conventions; that is, innermost parameters come first, and
+ * if a class or method has multiple parameters, they are indexed from right
+ * to left. So for instance, if the enclosing declaration is
+ *
+ * class C {
+ * m {
+ * ...
+ * }
+ * }
+ *
+ * Then [paramReference] values of 1, 2, 3, and 4 represent W, V, U, and T,
+ * respectively.
+ *
+ * If the type being referred to is not a type parameter, [paramReference] is
+ * zero.
+ */
+ paramReference:uint (id: 3);
+
+ /**
+ * Index into [UnlinkedUnit.references] for the entity being referred to, or
+ * zero if this is a reference to a type parameter.
+ */
+ reference:uint (id: 0);
+
+ /**
+ * If this [EntityRef] is contained within [LinkedUnit.types], slot id (which
+ * is unique within the compilation unit) identifying the target of type
+ * propagation or type inference with which this [EntityRef] is associated.
+ *
+ * Otherwise zero.
+ */
+ slot:uint (id: 2);
+
+ /**
+ * If this [EntityRef] is a reference to a function type whose
+ * [FunctionElement] is not in any library (e.g. a function type that was
+ * synthesized by a LUB computation), the function parameters. Otherwise
+ * empty.
+ */
+ syntheticParams:[UnlinkedParam] (id: 6);
+
+ /**
+ * If this [EntityRef] is a reference to a function type whose
+ * [FunctionElement] is not in any library (e.g. a function type that was
+ * synthesized by a LUB computation), the return type of the function.
+ * Otherwise `null`.
+ */
+ syntheticReturnType:EntityRef (id: 5);
+
+ /**
+ * If this is an instantiation of a generic type or generic executable, the
+ * type arguments used to instantiate it (if any).
+ */
+ typeArguments:[EntityRef] (id: 1);
+}
+
+/**
+ * Information about a dependency that exists between one library and another
+ * due to an "import" declaration.
+ */
+table LinkedDependency {
+ /**
+ * URI for the compilation units listed in the library's `part` declarations.
+ * These URIs are relative to the importing library.
+ */
+ parts:[string] (id: 1);
+
+ /**
+ * The relative URI of the dependent library. This URI is relative to the
+ * importing library, even if there are intervening `export` declarations.
+ * So, for example, if `a.dart` imports `b/c.dart` and `b/c.dart` exports
+ * `d/e.dart`, the URI listed for `a.dart`'s dependency on `e.dart` will be
+ * `b/d/e.dart`.
+ */
+ uri:string (id: 0);
+}
+
+/**
+ * Information about a single name in the export namespace of the library that
+ * is not in the public namespace.
+ */
+table LinkedExportName {
+ /**
+ * Index into [LinkedLibrary.dependencies] for the library in which the
+ * entity is defined.
+ */
+ dependency:uint (id: 0);
+
+ /**
+ * The kind of the entity being referred to.
+ */
+ kind:ReferenceKind (id: 3);
+
+ /**
+ * Name of the exported entity. For an exported setter, this name includes
+ * the trailing '='.
+ */
+ name:string (id: 1);
+
+ /**
+ * Integer index indicating which unit in the exported library contains the
+ * definition of the entity. As with indices into [LinkedLibrary.units],
+ * zero represents the defining compilation unit, and nonzero values
+ * represent parts in the order of the corresponding `part` declarations.
+ */
+ unit:uint (id: 2);
+}
+
+/**
+ * Linked summary of a library.
+ */
+table LinkedLibrary {
+ /**
+ * The libraries that this library depends on (either via an explicit import
+ * statement or via the implicit dependencies on `dart:core` and
+ * `dart:async`). The first element of this array is a pseudo-dependency
+ * representing the library itself (it is also used for `dynamic` and
+ * `void`). This is followed by elements representing "prelinked"
+ * dependencies (direct imports and the transitive closure of exports).
+ * After the prelinked dependencies are elements representing "linked"
+ * dependencies.
+ *
+ * A library is only included as a "linked" dependency if it is a true
+ * dependency (e.g. a propagated or inferred type or constant value
+ * implicitly refers to an element declared in the library) or
+ * anti-dependency (e.g. the result of type propagation or type inference
+ * depends on the lack of a certain declaration in the library).
+ */
+ dependencies:[LinkedDependency] (id: 0);
+
+ /**
+ * For each export in [UnlinkedUnit.exports], an index into [dependencies]
+ * of the library being exported.
+ */
+ exportDependencies:[uint] (id: 6);
+
+ /**
+ * Information about entities in the export namespace of the library that are
+ * not in the public namespace of the library (that is, entities that are
+ * brought into the namespace via `export` directives).
+ *
+ * Sorted by name.
+ */
+ exportNames:[LinkedExportName] (id: 4);
+
+ /**
+ * Indicates whether this library was summarized in "fallback mode". If
+ * true, all other fields in the data structure have their default values.
+ */
+ fallbackMode:bool (id: 5);
+
+ /**
+ * For each import in [UnlinkedUnit.imports], an index into [dependencies]
+ * of the library being imported.
+ */
+ importDependencies:[uint] (id: 1);
+
+ /**
+ * The number of elements in [dependencies] which are not "linked"
+ * dependencies (that is, the number of libraries in the direct imports plus
+ * the transitive closure of exports, plus the library itself).
+ */
+ numPrelinkedDependencies:uint (id: 2);
+
+ /**
+ * The linked summary of all the compilation units constituting the
+ * library. The summary of the defining compilation unit is listed first,
+ * followed by the summary of each part, in the order of the `part`
+ * declarations in the defining compilation unit.
+ */
+ units:[LinkedUnit] (id: 3);
+}
+
+/**
+ * Information about the resolution of an [UnlinkedReference].
+ */
+table LinkedReference {
+ /**
+ * If this [LinkedReference] doesn't have an associated [UnlinkedReference],
+ * and the entity being referred to is contained within another entity, index
+ * of the containing entity. This behaves similarly to
+ * [UnlinkedReference.prefixReference], however it is only used for class
+ * members, not for prefixed imports.
+ *
+ * Containing references must always point backward; that is, for all i, if
+ * LinkedUnit.references[i].containingReference != 0, then
+ * LinkedUnit.references[i].containingReference < i.
+ */
+ containingReference:uint (id: 5);
+
+ /**
+ * Index into [LinkedLibrary.dependencies] indicating which imported library
+ * declares the entity being referred to.
+ *
+ * Zero if this entity is contained within another entity (e.g. a class
+ * member), or if [kind] is [ReferenceKind.prefix].
+ */
+ dependency:uint (id: 1);
+
+ /**
+ * The kind of the entity being referred to. For the pseudo-types `dynamic`
+ * and `void`, the kind is [ReferenceKind.classOrEnum].
+ */
+ kind:ReferenceKind (id: 2);
+
+ /**
+ * If [kind] is [ReferenceKind.function] (that is, the entity being referred
+ * to is a local function), the index of the function within
+ * [UnlinkedExecutable.localFunctions]. If [kind] is
+ * [ReferenceKind.variable], the index of the variable within
+ * [UnlinkedExecutable.localVariables]. Otherwise zero.
+ */
+ localIndex:uint (id: 6);
+
+ /**
+ * If this [LinkedReference] doesn't have an associated [UnlinkedReference],
+ * name of the entity being referred to. For the pseudo-type `dynamic`, the
+ * string is "dynamic". For the pseudo-type `void`, the string is "void".
+ */
+ name:string (id: 3);
+
+ /**
+ * If the entity being referred to is generic, the number of type parameters
+ * it declares (does not include type parameters of enclosing entities).
+ * Otherwise zero.
+ */
+ numTypeParameters:uint (id: 4);
+
+ /**
+ * Integer index indicating which unit in the imported library contains the
+ * definition of the entity. As with indices into [LinkedLibrary.units],
+ * zero represents the defining compilation unit, and nonzero values
+ * represent parts in the order of the corresponding `part` declarations.
+ *
+ * Zero if this entity is contained within another entity (e.g. a class
+ * member).
+ */
+ unit:uint (id: 0);
+}
+
+/**
+ * Linked summary of a compilation unit.
+ */
+table LinkedUnit {
+ /**
+ * List of slot ids (referring to [UnlinkedExecutable.constCycleSlot])
+ * corresponding to const constructors that are part of cycles.
+ */
+ constCycles:[uint] (id: 2);
+
+ /**
+ * List of slot ids (referring to [UnlinkedParam.inheritsCovariantSlot])
+ * corresponding to parameters that inherit `@covariant` behavior from a base
+ * class.
+ */
+ parametersInheritingCovariant:[uint] (id: 3);
+
+ /**
+ * Information about the resolution of references within the compilation
+ * unit. Each element of [UnlinkedUnit.references] has a corresponding
+ * element in this list (at the same index). If this list has additional
+ * elements beyond the number of elements in [UnlinkedUnit.references], those
+ * additional elements are references that are only referred to implicitly
+ * (e.g. elements involved in inferred or propagated types).
+ */
+ references:[LinkedReference] (id: 0);
+
+ /**
+ * List associating slot ids found inside the unlinked summary for the
+ * compilation unit with propagated and inferred types.
+ */
+ types:[EntityRef] (id: 1);
+}
+
+/**
+ * Summary information about a package.
+ */
+table PackageBundle {
+ /**
+ * MD5 hash of the non-informative fields of the [PackageBundle] (not
+ * including this one). This can be used to identify when the API of a
+ * package may have changed.
+ */
+ apiSignature:string (id: 7);
+
+ /**
+ * Information about the packages this package depends on, if known.
+ */
+ dependencies:[PackageDependencyInfo] (id: 8);
+
+ /**
+ * Linked libraries.
+ */
+ linkedLibraries:[LinkedLibrary] (id: 0);
+
+ /**
+ * The list of URIs of items in [linkedLibraries], e.g. `dart:core` or
+ * `package:foo/bar.dart`.
+ */
+ linkedLibraryUris:[string] (id: 1);
+
+ /**
+ * Major version of the summary format. See
+ * [PackageBundleAssembler.currentMajorVersion].
+ */
+ majorVersion:uint (id: 5);
+
+ /**
+ * Minor version of the summary format. See
+ * [PackageBundleAssembler.currentMinorVersion].
+ */
+ minorVersion:uint (id: 6);
+
+ /**
+ * List of MD5 hashes of the files listed in [unlinkedUnitUris]. Each hash
+ * is encoded as a hexadecimal string using lower case letters.
+ */
+ unlinkedUnitHashes:[string] (id: 4);
+
+ /**
+ * Unlinked information for the compilation units constituting the package.
+ */
+ unlinkedUnits:[UnlinkedUnit] (id: 2);
+
+ /**
+ * The list of URIs of items in [unlinkedUnits], e.g. `dart:core/bool.dart`.
+ */
+ unlinkedUnitUris:[string] (id: 3);
+}
+
+/**
+ * Information about a single dependency of a summary package.
+ */
+table PackageDependencyInfo {
+ /**
+ * API signature of this dependency.
+ */
+ apiSignature:string (id: 0);
+
+ /**
+ * If this dependency summarizes any files whose URI takes the form
+ * "package:/...", a list of all such package names, sorted
+ * lexicographically. Otherwise empty.
+ */
+ includedPackageNames:[string] (id: 2);
+
+ /**
+ * Indicates whether this dependency summarizes any files whose URI takes the
+ * form "dart:...".
+ */
+ includesDartUris:bool (id: 4);
+
+ /**
+ * Indicates whether this dependency summarizes any files whose URI takes the
+ * form "file:...".
+ */
+ includesFileUris:bool (id: 3);
+
+ /**
+ * Relative path to the summary file for this dependency. This is intended as
+ * a hint to help the analysis server locate summaries of dependencies. We
+ * don't specify precisely what this path is relative to, but we expect it to
+ * be relative to a directory the analysis server can find (e.g. for projects
+ * built using Bazel, it would be relative to the "bazel-bin" directory).
+ *
+ * Absent if the path is not known.
+ */
+ summaryPath:string (id: 1);
+}
+
+/**
+ * Index information about a package.
+ */
+table PackageIndex {
+ /**
+ * Each item of this list corresponds to a unique referenced element. It is
+ * the kind of the synthetic element.
+ */
+ elementKinds:[IndexSyntheticElementKind] (id: 5);
+
+ /**
+ * Each item of this list corresponds to a unique referenced element. It is
+ * the identifier of the class member element name, or `null` if the element is
+ * a top-level element. The list is sorted in ascending order, so that the
+ * client can quickly check whether an element is referenced in this
+ * [PackageIndex].
+ */
+ elementNameClassMemberIds:[uint] (id: 7);
+
+ /**
+ * Each item of this list corresponds to a unique referenced element. It is
+ * the identifier of the named parameter name, or `null` if the element is not
+ * a named parameter. The list is sorted in ascending order, so that the
+ * client can quickly check whether an element is referenced in this
+ * [PackageIndex].
+ */
+ elementNameParameterIds:[uint] (id: 8);
+
+ /**
+ * Each item of this list corresponds to a unique referenced element. It is
+ * the identifier of the top-level element name, or `null` if the element is
+ * the unit. The list is sorted in ascending order, so that the client can
+ * quickly check whether an element is referenced in this [PackageIndex].
+ */
+ elementNameUnitMemberIds:[uint] (id: 1);
+
+ /**
+ * Each item of this list corresponds to a unique referenced element. It is
+ * the index into [unitLibraryUris] and [unitUnitUris] for the library
+ * specific unit where the element is declared.
+ */
+ elementUnits:[uint] (id: 0);
+
+ /**
+ * List of unique element strings used in this [PackageIndex]. The list is
+ * sorted in ascending order, so that the client can quickly check the
+ * presence of a string in this [PackageIndex].
+ */
+ strings:[string] (id: 6);
+
+ /**
+ * Each item of this list corresponds to the library URI of a unique library
+ * specific unit referenced in the [PackageIndex]. It is an index into
+ * [strings] list.
+ */
+ unitLibraryUris:[uint] (id: 2);
+
+ /**
+ * List of indexes of each unit in this [PackageIndex].
+ */
+ units:[UnitIndex] (id: 4);
+
+ /**
+ * Each item of this list corresponds to the unit URI of a unique library
+ * specific unit referenced in the [PackageIndex]. It is an index into
+ * [strings] list.
+ */
+ unitUnitUris:[uint] (id: 3);
+}
+
+/**
+ * Index information about a unit in a [PackageIndex].
+ */
+table UnitIndex {
+ /**
+ * Each item of this list is the kind of an element defined in this unit.
+ */
+ definedNameKinds:[IndexNameKind] (id: 6);
+
+ /**
+ * Each item of this list is the name offset of an element defined in this
+ * unit relative to the beginning of the file.
+ */
+ definedNameOffsets:[uint] (id: 7);
+
+ /**
+ * Each item of this list corresponds to an element defined in this unit. It
+ * is an index into [PackageIndex.strings] list. The list is sorted in
+ * ascending order, so that the client can quickly find name definitions in
+ * this [UnitIndex].
+ */
+ definedNames:[uint] (id: 5);
+
+ /**
+ * Index into [PackageIndex.unitLibraryUris] and [PackageIndex.unitUnitUris]
+ * for the library specific unit that corresponds to this [UnitIndex].
+ */
+ unit:uint (id: 0);
+
+ /**
+ * Each item of this list is the `true` if the corresponding element usage
+ * is qualified with some prefix.
+ */
+ usedElementIsQualifiedFlags:[ubyte] (id: 11);
+
+ /**
+ * Each item of this list is the kind of the element usage.
+ */
+ usedElementKinds:[IndexRelationKind] (id: 4);
+
+ /**
+ * Each item of this list is the length of the element usage.
+ */
+ usedElementLengths:[uint] (id: 1);
+
+ /**
+ * Each item of this list is the offset of the element usage relative to the
+ * beginning of the file.
+ */
+ usedElementOffsets:[uint] (id: 2);
+
+ /**
+ * Each item of this list is the index into [PackageIndex.elementUnits] and
+ * [PackageIndex.elementOffsets]. The list is sorted in ascending order, so
+ * that the client can quickly find element references in this [UnitIndex].
+ */
+ usedElements:[uint] (id: 3);
+
+ /**
+ * Each item of this list is the `true` if the corresponding name usage
+ * is qualified with some prefix.
+ */
+ usedNameIsQualifiedFlags:[ubyte] (id: 12);
+
+ /**
+ * Each item of this list is the kind of the name usage.
+ */
+ usedNameKinds:[IndexRelationKind] (id: 10);
+
+ /**
+ * Each item of this list is the offset of the name usage relative to the
+ * beginning of the file.
+ */
+ usedNameOffsets:[uint] (id: 9);
+
+ /**
+ * Each item of this list is the index into [PackageIndex.strings] for a
+ * used name. The list is sorted in ascending order, so that the client can
+ * quickly find name uses in this [UnitIndex].
+ */
+ usedNames:[uint] (id: 8);
+}
+
+/**
+ * Unlinked summary information about a class declaration.
+ */
+table UnlinkedClass {
+ /**
+ * Annotations for this class.
+ */
+ annotations:[UnlinkedConst] (id: 5);
+
+ /**
+ * Code range of the class.
+ */
+ codeRange:CodeRange (id: 13);
+
+ /**
+ * Documentation comment for the class, or `null` if there is no
+ * documentation comment.
+ */
+ documentationComment:UnlinkedDocumentationComment (id: 6);
+
+ /**
+ * Executable objects (methods, getters, and setters) contained in the class.
+ */
+ executables:[UnlinkedExecutable] (id: 2);
+
+ /**
+ * Field declarations contained in the class.
+ */
+ fields:[UnlinkedVariable] (id: 4);
+
+ /**
+ * Indicates whether this class is the core "Object" class (and hence has no
+ * supertype)
+ */
+ hasNoSupertype:bool (id: 12);
+
+ /**
+ * Interfaces appearing in an `implements` clause, if any.
+ */
+ interfaces:[EntityRef] (id: 7);
+
+ /**
+ * Indicates whether the class is declared with the `abstract` keyword.
+ */
+ isAbstract:bool (id: 8);
+
+ /**
+ * Indicates whether the class is declared using mixin application syntax.
+ */
+ isMixinApplication:bool (id: 11);
+
+ /**
+ * Mixins appearing in a `with` clause, if any.
+ */
+ mixins:[EntityRef] (id: 10);
+
+ /**
+ * Name of the class.
+ */
+ name:string (id: 0);
+
+ /**
+ * Offset of the class name relative to the beginning of the file.
+ */
+ nameOffset:uint (id: 1);
+
+ /**
+ * Supertype of the class, or `null` if either (a) the class doesn't
+ * explicitly declare a supertype (and hence has supertype `Object`), or (b)
+ * the class *is* `Object` (and hence has no supertype).
+ */
+ supertype:EntityRef (id: 3);
+
+ /**
+ * Type parameters of the class, if any.
+ */
+ typeParameters:[UnlinkedTypeParam] (id: 9);
+}
+
+/**
+ * Unlinked summary information about a `show` or `hide` combinator in an
+ * import or export declaration.
+ */
+table UnlinkedCombinator {
+ /**
+ * If this is a `show` combinator, offset of the end of the list of shown
+ * names. Otherwise zero.
+ */
+ end:uint (id: 3);
+
+ /**
+ * List of names which are hidden. Empty if this is a `show` combinator.
+ */
+ hides:[string] (id: 1);
+
+ /**
+ * If this is a `show` combinator, offset of the `show` keyword. Otherwise
+ * zero.
+ */
+ offset:uint (id: 2);
+
+ /**
+ * List of names which are shown. Empty if this is a `hide` combinator.
+ */
+ shows:[string] (id: 0);
+}
+
+/**
+ * Unlinked summary information about a single import or export configuration.
+ */
+table UnlinkedConfiguration {
+ /**
+ * The name of the declared variable whose value is being used in the
+ * condition.
+ */
+ name:string (id: 0);
+
+ /**
+ * The URI of the implementation library to be used if the condition is true.
+ */
+ uri:string (id: 2);
+
+ /**
+ * The value to which the value of the declared variable will be compared,
+ * or `true` if the condition does not include an equality test.
+ */
+ value:string (id: 1);
+}
+
+/**
+ * Unlinked summary information about a compile-time constant expression, or a
+ * potentially constant expression.
+ *
+ * Constant expressions are represented using a simple stack-based language
+ * where [operations] is a sequence of operations to execute starting with an
+ * empty stack. Once all operations have been executed, the stack should
+ * contain a single value which is the value of the constant. Note that some
+ * operations consume additional data from the other fields of this class.
+ */
+table UnlinkedConst {
+ /**
+ * Sequence of operators used by assignment operations.
+ */
+ assignmentOperators:[UnlinkedExprAssignOperator] (id: 6);
+
+ /**
+ * Sequence of 64-bit doubles consumed by the operation `pushDouble`.
+ */
+ doubles:[double] (id: 4);
+
+ /**
+ * Sequence of unsigned 32-bit integers consumed by the operations
+ * `pushArgument`, `pushInt`, `shiftOr`, `concatenate`, `invokeConstructor`,
+ * `makeList`, and `makeMap`.
+ */
+ ints:[uint] (id: 1);
+
+ /**
+ * Indicates whether the expression is a valid potentially constant
+ * expression.
+ */
+ isValidConst:bool (id: 5);
+
+ /**
+ * Sequence of operations to execute (starting with an empty stack) to form
+ * the constant value.
+ */
+ operations:[UnlinkedConstOperation] (id: 0);
+
+ /**
+ * Sequence of language constructs consumed by the operations
+ * `pushReference`, `invokeConstructor`, `makeList`, and `makeMap`. Note
+ * that in the case of `pushReference` (and sometimes `invokeConstructor` the
+ * actual entity being referred to may be something other than a type.
+ */
+ references:[EntityRef] (id: 2);
+
+ /**
+ * Sequence of strings consumed by the operations `pushString` and
+ * `invokeConstructor`.
+ */
+ strings:[string] (id: 3);
+}
+
+/**
+ * Unlinked summary information about a constructor initializer.
+ */
+table UnlinkedConstructorInitializer {
+ /**
+ * If there are `m` [arguments] and `n` [argumentNames], then each argument
+ * from [arguments] with index `i` such that `n + i - m >= 0`, should be used
+ * with the name at `n + i - m`.
+ */
+ argumentNames:[string] (id: 4);
+
+ /**
+ * If [kind] is `thisInvocation` or `superInvocation`, the arguments of the
+ * invocation. Otherwise empty.
+ */
+ arguments:[UnlinkedConst] (id: 3);
+
+ /**
+ * If [kind] is `field`, the expression of the field initializer.
+ * Otherwise `null`.
+ */
+ expression:UnlinkedConst (id: 1);
+
+ /**
+ * The kind of the constructor initializer (field, redirect, super).
+ */
+ kind:UnlinkedConstructorInitializerKind (id: 2);
+
+ /**
+ * If [kind] is `field`, the name of the field declared in the class. If
+ * [kind] is `thisInvocation`, the name of the constructor, declared in this
+ * class, to redirect to. If [kind] is `superInvocation`, the name of the
+ * constructor, declared in the superclass, to invoke.
+ */
+ name:string (id: 0);
+}
+
+/**
+ * Unlinked summary information about a documentation comment.
+ */
+table UnlinkedDocumentationComment {
+ /**
+ * Length of the documentation comment (prior to replacing '\r\n' with '\n').
+ */
+ length:uint (id: 0, deprecated);
+
+ /**
+ * Offset of the beginning of the documentation comment relative to the
+ * beginning of the file.
+ */
+ offset:uint (id: 2, deprecated);
+
+ /**
+ * Text of the documentation comment, with '\r\n' replaced by '\n'.
+ *
+ * References appearing within the doc comment in square brackets are not
+ * specially encoded.
+ */
+ text:string (id: 1);
+}
+
+/**
+ * Unlinked summary information about an enum declaration.
+ */
+table UnlinkedEnum {
+ /**
+ * Annotations for this enum.
+ */
+ annotations:[UnlinkedConst] (id: 4);
+
+ /**
+ * Code range of the enum.
+ */
+ codeRange:CodeRange (id: 5);
+
+ /**
+ * Documentation comment for the enum, or `null` if there is no documentation
+ * comment.
+ */
+ documentationComment:UnlinkedDocumentationComment (id: 3);
+
+ /**
+ * Name of the enum type.
+ */
+ name:string (id: 0);
+
+ /**
+ * Offset of the enum name relative to the beginning of the file.
+ */
+ nameOffset:uint (id: 1);
+
+ /**
+ * Values listed in the enum declaration, in declaration order.
+ */
+ values:[UnlinkedEnumValue] (id: 2);
+}
+
+/**
+ * Unlinked summary information about a single enumerated value in an enum
+ * declaration.
+ */
+table UnlinkedEnumValue {
+ /**
+ * Documentation comment for the enum value, or `null` if there is no
+ * documentation comment.
+ */
+ documentationComment:UnlinkedDocumentationComment (id: 2);
+
+ /**
+ * Name of the enumerated value.
+ */
+ name:string (id: 0);
+
+ /**
+ * Offset of the enum value name relative to the beginning of the file.
+ */
+ nameOffset:uint (id: 1);
+}
+
+/**
+ * Unlinked summary information about a function, method, getter, or setter
+ * declaration.
+ */
+table UnlinkedExecutable {
+ /**
+ * Annotations for this executable.
+ */
+ annotations:[UnlinkedConst] (id: 6);
+
+ /**
+ * If this executable's function body is declared using `=>`, the expression
+ * to the right of the `=>`. May be omitted if neither type inference nor
+ * constant evaluation depends on the function body.
+ */
+ bodyExpr:UnlinkedConst (id: 29);
+
+ /**
+ * Code range of the executable.
+ */
+ codeRange:CodeRange (id: 26);
+
+ /**
+ * If a constant [UnlinkedExecutableKind.constructor], the constructor
+ * initializers. Otherwise empty.
+ */
+ constantInitializers:[UnlinkedConstructorInitializer] (id: 14);
+
+ /**
+ * If [kind] is [UnlinkedExecutableKind.constructor] and [isConst] is `true`,
+ * a nonzero slot id which is unique within this compilation unit. If this id
+ * is found in [LinkedUnit.constCycles], then this constructor is part of a
+ * cycle.
+ *
+ * Otherwise, zero.
+ */
+ constCycleSlot:uint (id: 25);
+
+ /**
+ * Documentation comment for the executable, or `null` if there is no
+ * documentation comment.
+ */
+ documentationComment:UnlinkedDocumentationComment (id: 7);
+
+ /**
+ * If this executable's return type is inferable, nonzero slot id
+ * identifying which entry in [LinkedUnit.types] contains the inferred
+ * return type. If there is no matching entry in [LinkedUnit.types], then
+ * no return type was inferred for this variable, so its static type is
+ * `dynamic`.
+ */
+ inferredReturnTypeSlot:uint (id: 5);
+
+ /**
+ * Indicates whether the executable is declared using the `abstract` keyword.
+ */
+ isAbstract:bool (id: 10);
+
+ /**
+ * Indicates whether the executable has body marked as being asynchronous.
+ */
+ isAsynchronous:bool (id: 27);
+
+ /**
+ * Indicates whether the executable is declared using the `const` keyword.
+ */
+ isConst:bool (id: 12);
+
+ /**
+ * Indicates whether the executable is declared using the `external` keyword.
+ */
+ isExternal:bool (id: 11);
+
+ /**
+ * Indicates whether the executable is declared using the `factory` keyword.
+ */
+ isFactory:bool (id: 8);
+
+ /**
+ * Indicates whether the executable has body marked as being a generator.
+ */
+ isGenerator:bool (id: 28);
+
+ /**
+ * Indicates whether the executable is a redirected constructor.
+ */
+ isRedirectedConstructor:bool (id: 13);
+
+ /**
+ * Indicates whether the executable is declared using the `static` keyword.
+ *
+ * Note that for top level executables, this flag is false, since they are
+ * not declared using the `static` keyword (even though they are considered
+ * static for semantic purposes).
+ */
+ isStatic:bool (id: 9);
+
+ /**
+ * The kind of the executable (function/method, getter, setter, or
+ * constructor).
+ */
+ kind:UnlinkedExecutableKind (id: 4);
+
+ /**
+ * The list of local functions.
+ */
+ localFunctions:[UnlinkedExecutable] (id: 18);
+
+ /**
+ * The list of local labels.
+ */
+ localLabels:[UnlinkedLabel] (id: 22);
+
+ /**
+ * The list of local variables.
+ */
+ localVariables:[UnlinkedVariable] (id: 19);
+
+ /**
+ * Name of the executable. For setters, this includes the trailing "=". For
+ * named constructors, this excludes the class name and excludes the ".".
+ * For unnamed constructors, this is the empty string.
+ */
+ name:string (id: 1);
+
+ /**
+ * If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
+ * the offset of the end of the constructor name. Otherwise zero.
+ */
+ nameEnd:uint (id: 23);
+
+ /**
+ * Offset of the executable name relative to the beginning of the file. For
+ * named constructors, this excludes the class name and excludes the ".".
+ * For unnamed constructors, this is the offset of the class name (i.e. the
+ * offset of the second "C" in "class C { C(); }").
+ */
+ nameOffset:uint (id: 0);
+
+ /**
+ * Parameters of the executable, if any. Note that getters have no
+ * parameters (hence this will be the empty list), and setters have a single
+ * parameter.
+ */
+ parameters:[UnlinkedParam] (id: 2);
+
+ /**
+ * If [kind] is [UnlinkedExecutableKind.constructor] and [name] is not empty,
+ * the offset of the period before the constructor name. Otherwise zero.
+ */
+ periodOffset:uint (id: 24);
+
+ /**
+ * If [isRedirectedConstructor] and [isFactory] are both `true`, the
+ * constructor to which this constructor redirects; otherwise empty.
+ */
+ redirectedConstructor:EntityRef (id: 15);
+
+ /**
+ * If [isRedirectedConstructor] is `true` and [isFactory] is `false`, the
+ * name of the constructor that this constructor redirects to; otherwise
+ * empty.
+ */
+ redirectedConstructorName:string (id: 17);
+
+ /**
+ * Declared return type of the executable. Absent if the executable is a
+ * constructor or the return type is implicit. Absent for executables
+ * associated with variable initializers and closures, since these
+ * executables may have return types that are not accessible via direct
+ * imports.
+ */
+ returnType:EntityRef (id: 3);
+
+ /**
+ * Type parameters of the executable, if any. Empty if support for generic
+ * method syntax is disabled.
+ */
+ typeParameters:[UnlinkedTypeParam] (id: 16);
+
+ /**
+ * If a local function, the length of the visible range; zero otherwise.
+ */
+ visibleLength:uint (id: 20);
+
+ /**
+ * If a local function, the beginning of the visible range; zero otherwise.
+ */
+ visibleOffset:uint (id: 21);
+}
+
+/**
+ * Unlinked summary information about an export declaration (stored outside
+ * [UnlinkedPublicNamespace]).
+ */
+table UnlinkedExportNonPublic {
+ /**
+ * Annotations for this export directive.
+ */
+ annotations:[UnlinkedConst] (id: 3);
+
+ /**
+ * Offset of the "export" keyword.
+ */
+ offset:uint (id: 0);
+
+ /**
+ * End of the URI string (including quotes) relative to the beginning of the
+ * file.
+ */
+ uriEnd:uint (id: 1);
+
+ /**
+ * Offset of the URI string (including quotes) relative to the beginning of
+ * the file.
+ */
+ uriOffset:uint (id: 2);
+}
+
+/**
+ * Unlinked summary information about an export declaration (stored inside
+ * [UnlinkedPublicNamespace]).
+ */
+table UnlinkedExportPublic {
+ /**
+ * Combinators contained in this export declaration.
+ */
+ combinators:[UnlinkedCombinator] (id: 1);
+
+ /**
+ * Configurations used to control which library will actually be loaded at
+ * run-time.
+ */
+ configurations:[UnlinkedConfiguration] (id: 2);
+
+ /**
+ * URI used in the source code to reference the exported library.
+ */
+ uri:string (id: 0);
+}
+
+/**
+ * Unlinked summary information about an import declaration.
+ */
+table UnlinkedImport {
+ /**
+ * Annotations for this import declaration.
+ */
+ annotations:[UnlinkedConst] (id: 8);
+
+ /**
+ * Combinators contained in this import declaration.
+ */
+ combinators:[UnlinkedCombinator] (id: 4);
+
+ /**
+ * Configurations used to control which library will actually be loaded at
+ * run-time.
+ */
+ configurations:[UnlinkedConfiguration] (id: 10);
+
+ /**
+ * Indicates whether the import declaration uses the `deferred` keyword.
+ */
+ isDeferred:bool (id: 9);
+
+ /**
+ * Indicates whether the import declaration is implicit.
+ */
+ isImplicit:bool (id: 5);
+
+ /**
+ * If [isImplicit] is false, offset of the "import" keyword. If [isImplicit]
+ * is true, zero.
+ */
+ offset:uint (id: 0);
+
+ /**
+ * Offset of the prefix name relative to the beginning of the file, or zero
+ * if there is no prefix.
+ */
+ prefixOffset:uint (id: 6);
+
+ /**
+ * Index into [UnlinkedUnit.references] of the prefix declared by this
+ * import declaration, or zero if this import declaration declares no prefix.
+ *
+ * Note that multiple imports can declare the same prefix.
+ */
+ prefixReference:uint (id: 7);
+
+ /**
+ * URI used in the source code to reference the imported library.
+ */
+ uri:string (id: 1);
+
+ /**
+ * End of the URI string (including quotes) relative to the beginning of the
+ * file. If [isImplicit] is true, zero.
+ */
+ uriEnd:uint (id: 2);
+
+ /**
+ * Offset of the URI string (including quotes) relative to the beginning of
+ * the file. If [isImplicit] is true, zero.
+ */
+ uriOffset:uint (id: 3);
+}
+
+/**
+ * Unlinked summary information about a label.
+ */
+table UnlinkedLabel {
+ /**
+ * Return `true` if this label is associated with a `switch` member (`case` or
+ * `default`).
+ */
+ isOnSwitchMember:bool (id: 2);
+
+ /**
+ * Return `true` if this label is associated with a `switch` statement.
+ */
+ isOnSwitchStatement:bool (id: 3);
+
+ /**
+ * Name of the label.
+ */
+ name:string (id: 0);
+
+ /**
+ * Offset of the label relative to the beginning of the file.
+ */
+ nameOffset:uint (id: 1);
+}
+
+/**
+ * Unlinked summary information about a function parameter.
+ */
+table UnlinkedParam {
+ /**
+ * Annotations for this parameter.
+ */
+ annotations:[UnlinkedConst] (id: 9);
+
+ /**
+ * Code range of the parameter.
+ */
+ codeRange:CodeRange (id: 7);
+
+ /**
+ * If the parameter has a default value, the source text of the constant
+ * expression in the default value. Otherwise the empty string.
+ */
+ defaultValueCode:string (id: 13);
+
+ /**
+ * If this parameter's type is inferable, nonzero slot id identifying which
+ * entry in [LinkedLibrary.types] contains the inferred type. If there is no
+ * matching entry in [LinkedLibrary.types], then no type was inferred for
+ * this variable, so its static type is `dynamic`.
+ *
+ * Note that although strong mode considers initializing formals to be
+ * inferable, they are not marked as such in the summary; if their type is
+ * not specified, they always inherit the static type of the corresponding
+ * field.
+ */
+ inferredTypeSlot:uint (id: 2);
+
+ /**
+ * If this is a parameter of an instance method, a nonzero slot id which is
+ * unique within this compilation unit. If this id is found in
+ * [LinkedUnit.parametersInheritingCovariant], then this parameter inherits
+ * `@covariant` behavior from a base class.
+ *
+ * Otherwise, zero.
+ */
+ inheritsCovariantSlot:uint (id: 14);
+
+ /**
+ * The synthetic initializer function of the parameter. Absent if the variable
+ * does not have an initializer.
+ */
+ initializer:UnlinkedExecutable (id: 12);
+
+ /**
+ * Indicates whether this is a function-typed parameter.
+ */
+ isFunctionTyped:bool (id: 5);
+
+ /**
+ * Indicates whether this is an initializing formal parameter (i.e. it is
+ * declared using `this.` syntax).
+ */
+ isInitializingFormal:bool (id: 6);
+
+ /**
+ * Kind of the parameter.
+ */
+ kind:UnlinkedParamKind (id: 4);
+
+ /**
+ * Name of the parameter.
+ */
+ name:string (id: 0);
+
+ /**
+ * Offset of the parameter name relative to the beginning of the file.
+ */
+ nameOffset:uint (id: 1);
+
+ /**
+ * If [isFunctionTyped] is `true`, the parameters of the function type.
+ */
+ parameters:[UnlinkedParam] (id: 8);
+
+ /**
+ * If [isFunctionTyped] is `true`, the declared return type. If
+ * [isFunctionTyped] is `false`, the declared type. Absent if the type is
+ * implicit.
+ */
+ type:EntityRef (id: 3);
+
+ /**
+ * The length of the visible range.
+ */
+ visibleLength:uint (id: 10);
+
+ /**
+ * The beginning of the visible range.
+ */
+ visibleOffset:uint (id: 11);
+}
+
+/**
+ * Unlinked summary information about a part declaration.
+ */
+table UnlinkedPart {
+ /**
+ * Annotations for this part declaration.
+ */
+ annotations:[UnlinkedConst] (id: 2);
+
+ /**
+ * End of the URI string (including quotes) relative to the beginning of the
+ * file.
+ */
+ uriEnd:uint (id: 0);
+
+ /**
+ * Offset of the URI string (including quotes) relative to the beginning of
+ * the file.
+ */
+ uriOffset:uint (id: 1);
+}
+
+/**
+ * Unlinked summary information about a specific name contributed by a
+ * compilation unit to a library's public namespace.
+ *
+ * TODO(paulberry): some of this information is redundant with information
+ * elsewhere in the summary. Consider reducing the redundancy to reduce
+ * summary size.
+ */
+table UnlinkedPublicName {
+ /**
+ * The kind of object referred to by the name.
+ */
+ kind:ReferenceKind (id: 1);
+
+ /**
+ * If this [UnlinkedPublicName] is a class, the list of members which can be
+ * referenced statically - static fields, static methods, and constructors.
+ * Otherwise empty.
+ *
+ * Unnamed constructors are not included since they do not constitute a
+ * separate name added to any namespace.
+ */
+ members:[UnlinkedPublicName] (id: 2);
+
+ /**
+ * The name itself.
+ */
+ name:string (id: 0);
+
+ /**
+ * If the entity being referred to is generic, the number of type parameters
+ * it accepts. Otherwise zero.
+ */
+ numTypeParameters:uint (id: 3);
+}
+
+/**
+ * Unlinked summary information about what a compilation unit contributes to a
+ * library's public namespace. This is the subset of [UnlinkedUnit] that is
+ * required from dependent libraries in order to perform prelinking.
+ */
+table UnlinkedPublicNamespace {
+ /**
+ * Export declarations in the compilation unit.
+ */
+ exports:[UnlinkedExportPublic] (id: 2);
+
+ /**
+ * Public names defined in the compilation unit.
+ *
+ * TODO(paulberry): consider sorting these names to reduce unnecessary
+ * relinking.
+ */
+ names:[UnlinkedPublicName] (id: 0);
+
+ /**
+ * URIs referenced by part declarations in the compilation unit.
+ */
+ parts:[string] (id: 1);
+}
+
+/**
+ * Unlinked summary information about a name referred to in one library that
+ * might be defined in another.
+ */
+table UnlinkedReference {
+ /**
+ * Name of the entity being referred to. For the pseudo-type `dynamic`, the
+ * string is "dynamic". For the pseudo-type `void`, the string is "void".
+ * For the pseudo-type `bottom`, the string is "*bottom*".
+ */
+ name:string (id: 0);
+
+ /**
+ * Prefix used to refer to the entity, or zero if no prefix is used. This is
+ * an index into [UnlinkedUnit.references].
+ *
+ * Prefix references must always point backward; that is, for all i, if
+ * UnlinkedUnit.references[i].prefixReference != 0, then
+ * UnlinkedUnit.references[i].prefixReference < i.
+ */
+ prefixReference:uint (id: 1);
+}
+
+/**
+ * Unlinked summary information about a typedef declaration.
+ */
+table UnlinkedTypedef {
+ /**
+ * Annotations for this typedef.
+ */
+ annotations:[UnlinkedConst] (id: 4);
+
+ /**
+ * Code range of the typedef.
+ */
+ codeRange:CodeRange (id: 7);
+
+ /**
+ * Documentation comment for the typedef, or `null` if there is no
+ * documentation comment.
+ */
+ documentationComment:UnlinkedDocumentationComment (id: 6);
+
+ /**
+ * Name of the typedef.
+ */
+ name:string (id: 0);
+
+ /**
+ * Offset of the typedef name relative to the beginning of the file.
+ */
+ nameOffset:uint (id: 1);
+
+ /**
+ * Parameters of the executable, if any.
+ */
+ parameters:[UnlinkedParam] (id: 3);
+
+ /**
+ * Return type of the typedef.
+ */
+ returnType:EntityRef (id: 2);
+
+ /**
+ * Type parameters of the typedef, if any.
+ */
+ typeParameters:[UnlinkedTypeParam] (id: 5);
+}
+
+/**
+ * Unlinked summary information about a type parameter declaration.
+ */
+table UnlinkedTypeParam {
+ /**
+ * Annotations for this type parameter.
+ */
+ annotations:[UnlinkedConst] (id: 3);
+
+ /**
+ * Bound of the type parameter, if a bound is explicitly declared. Otherwise
+ * null.
+ */
+ bound:EntityRef (id: 2);
+
+ /**
+ * Code range of the type parameter.
+ */
+ codeRange:CodeRange (id: 4);
+
+ /**
+ * Name of the type parameter.
+ */
+ name:string (id: 0);
+
+ /**
+ * Offset of the type parameter name relative to the beginning of the file.
+ */
+ nameOffset:uint (id: 1);
+}
+
+/**
+ * Unlinked summary information about a compilation unit ("part file").
+ */
+table UnlinkedUnit {
+ /**
+ * Classes declared in the compilation unit.
+ */
+ classes:[UnlinkedClass] (id: 2);
+
+ /**
+ * Code range of the unit.
+ */
+ codeRange:CodeRange (id: 15);
+
+ /**
+ * Enums declared in the compilation unit.
+ */
+ enums:[UnlinkedEnum] (id: 12);
+
+ /**
+ * Top level executable objects (functions, getters, and setters) declared in
+ * the compilation unit.
+ */
+ executables:[UnlinkedExecutable] (id: 4);
+
+ /**
+ * Export declarations in the compilation unit.
+ */
+ exports:[UnlinkedExportNonPublic] (id: 13);
+
+ /**
+ * If this compilation unit was summarized in fallback mode, the path where
+ * the compilation unit may be found on disk. Otherwise empty.
+ *
+ * When this field is non-empty, all other fields in the data structure have
+ * their default values.
+ */
+ fallbackModePath:string (id: 16);
+
+ /**
+ * Import declarations in the compilation unit.
+ */
+ imports:[UnlinkedImport] (id: 5);
+
+ /**
+ * Annotations for the library declaration, or the empty list if there is no
+ * library declaration.
+ */
+ libraryAnnotations:[UnlinkedConst] (id: 14);
+
+ /**
+ * Documentation comment for the library, or `null` if there is no
+ * documentation comment.
+ */
+ libraryDocumentationComment:UnlinkedDocumentationComment (id: 9);
+
+ /**
+ * Name of the library (from a "library" declaration, if present).
+ */
+ libraryName:string (id: 6);
+
+ /**
+ * Length of the library name as it appears in the source code (or 0 if the
+ * library has no name).
+ */
+ libraryNameLength:uint (id: 7);
+
+ /**
+ * Offset of the library name relative to the beginning of the file (or 0 if
+ * the library has no name).
+ */
+ libraryNameOffset:uint (id: 8);
+
+ /**
+ * Offsets of the first character of each line in the source code.
+ */
+ lineStarts:[uint] (id: 17);
+
+ /**
+ * Part declarations in the compilation unit.
+ */
+ parts:[UnlinkedPart] (id: 11);
+
+ /**
+ * Unlinked public namespace of this compilation unit.
+ */
+ publicNamespace:UnlinkedPublicNamespace (id: 0);
+
+ /**
+ * Top level and prefixed names referred to by this compilation unit. The
+ * zeroth element of this array is always populated and is used to represent
+ * the absence of a reference in places where a reference is optional (for
+ * example [UnlinkedReference.prefixReference or
+ * UnlinkedImport.prefixReference]).
+ */
+ references:[UnlinkedReference] (id: 1);
+
+ /**
+ * Typedefs declared in the compilation unit.
+ */
+ typedefs:[UnlinkedTypedef] (id: 10);
+
+ /**
+ * Top level variables declared in the compilation unit.
+ */
+ variables:[UnlinkedVariable] (id: 3);
+}
+
+/**
+ * Unlinked summary information about a top level variable, local variable, or
+ * a field.
+ */
+table UnlinkedVariable {
+ /**
+ * Annotations for this variable.
+ */
+ annotations:[UnlinkedConst] (id: 8);
+
+ /**
+ * Code range of the variable.
+ */
+ codeRange:CodeRange (id: 5);
+
+ /**
+ * Documentation comment for the variable, or `null` if there is no
+ * documentation comment.
+ */
+ documentationComment:UnlinkedDocumentationComment (id: 10);
+
+ /**
+ * If this variable is inferable, nonzero slot id identifying which entry in
+ * [LinkedLibrary.types] contains the inferred type for this variable. If
+ * there is no matching entry in [LinkedLibrary.types], then no type was
+ * inferred for this variable, so its static type is `dynamic`.
+ */
+ inferredTypeSlot:uint (id: 9);
+
+ /**
+ * The synthetic initializer function of the variable. Absent if the variable
+ * does not have an initializer.
+ */
+ initializer:UnlinkedExecutable (id: 13);
+
+ /**
+ * Indicates whether the variable is declared using the `const` keyword.
+ */
+ isConst:bool (id: 6);
+
+ /**
+ * Indicates whether the variable is declared using the `final` keyword.
+ */
+ isFinal:bool (id: 7);
+
+ /**
+ * Indicates whether the variable is declared using the `static` keyword.
+ *
+ * Note that for top level variables, this flag is false, since they are not
+ * declared using the `static` keyword (even though they are considered
+ * static for semantic purposes).
+ */
+ isStatic:bool (id: 4);
+
+ /**
+ * Name of the variable.
+ */
+ name:string (id: 0);
+
+ /**
+ * Offset of the variable name relative to the beginning of the file.
+ */
+ nameOffset:uint (id: 1);
+
+ /**
+ * If this variable is propagable, nonzero slot id identifying which entry in
+ * [LinkedLibrary.types] contains the propagated type for this variable. If
+ * there is no matching entry in [LinkedLibrary.types], then this variable's
+ * propagated type is the same as its declared type.
+ *
+ * Non-propagable variables have a [propagatedTypeSlot] of zero.
+ */
+ propagatedTypeSlot:uint (id: 2);
+
+ /**
+ * Declared type of the variable. Absent if the type is implicit.
+ */
+ type:EntityRef (id: 3);
+
+ /**
+ * If a local variable, the length of the visible range; zero otherwise.
+ */
+ visibleLength:uint (id: 11);
+
+ /**
+ * If a local variable, the beginning of the visible range; zero otherwise.
+ */
+ visibleOffset:uint (id: 12);
+}
+
+root_type PackageBundle;
+
+file_identifier "PBdl";
diff --git a/build/web/packages/browser/dart.js b/build/web/packages/browser/dart.js
new file mode 100644
index 00000000..f8d686e1
--- /dev/null
+++ b/build/web/packages/browser/dart.js
@@ -0,0 +1,32 @@
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+(function() {
+// Bootstrap support for Dart scripts on the page as this script.
+if (navigator.userAgent.indexOf('(Dart)') === -1) {
+ // TODO:
+ // - Support in-browser compilation.
+ // - Handle inline Dart scripts.
+
+ // Fall back to compiled JS. Run through all the scripts and
+ // replace them if they have a type that indicate that they source
+ // in Dart code (type="application/dart").
+ var scripts = document.getElementsByTagName("script");
+ var length = scripts.length;
+ for (var i = 0; i < length; ++i) {
+ if (scripts[i].type == "application/dart") {
+ // Remap foo.dart to foo.dart.js.
+ if (scripts[i].src && scripts[i].src != '') {
+ var script = document.createElement('script');
+ script.src = scripts[i].src.replace(/\.dart(?=\?|$)/, '.dart.js');
+ var parent = scripts[i].parentNode;
+ // TODO(vsm): Find a solution for issue 8455 that works with more
+ // than one script.
+ document.currentScript = script;
+ parent.replaceChild(script, scripts[i]);
+ }
+ }
+ }
+}
+})();
diff --git a/build/web/packages/browser/interop.js b/build/web/packages/browser/interop.js
new file mode 100644
index 00000000..ec02e585
--- /dev/null
+++ b/build/web/packages/browser/interop.js
@@ -0,0 +1,9 @@
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// TODO(jmesserly): remove this script after a deprecation period.
+if (typeof console == "object" && typeof console.warn == "function") {
+ console.warn('
+