diff --git a/client/space_lua/aggregates.test.ts b/client/space_lua/aggregates.test.ts index 02e85ee7..dc1ac8c4 100644 --- a/client/space_lua/aggregates.test.ts +++ b/client/space_lua/aggregates.test.ts @@ -29,7 +29,6 @@ function makeConfig(specs: Record = {}): Config { return config; } - function requireSpec(name: string): AggregateSpec { const spec = getAggregateSpec(name); if (!spec) throw new Error(`builtin aggregate "${name}" not found`); @@ -317,7 +316,11 @@ test("aggregate: count with filter excludes all", async () => { test("aggregate: array_agg with order by asc", async () => { const result = await executeAggregate( arrayAggSpec, - jsToLuaValue([{ v: "c", k: 3 }, { v: "a", k: 1 }, { v: "b", k: 2 }]), + jsToLuaValue([ + { v: "c", k: 3 }, + { v: "a", k: 1 }, + { v: "b", k: 2 }, + ]), parseExpressionString("_.v"), [], undefined, @@ -338,7 +341,11 @@ test("aggregate: array_agg with order by asc", async () => { test("aggregate: array_agg with order by desc", async () => { const result = await executeAggregate( arrayAggSpec, - jsToLuaValue([{ v: "c", k: 3 }, { v: "a", k: 1 }, { v: "b", k: 2 }]), + jsToLuaValue([ + { v: "c", k: 3 }, + { v: "a", k: 1 }, + { v: "b", k: 2 }, + ]), parseExpressionString("_.v"), [], undefined, @@ -1134,7 +1141,11 @@ test("aggregate: extra args + order by", async () => { const resultNoOrder = await executeAggregate( concatSpec, - jsToLuaValue([{ v: "Carol", k: 3 }, { v: "Alice", k: 1 }, { v: "Bob", k: 2 }]), + jsToLuaValue([ + { v: "Carol", k: 3 }, + { v: "Alice", k: 1 }, + { v: "Bob", k: 2 }, + ]), parseExpressionString("_.v"), [], undefined, @@ -1147,7 +1158,11 @@ test("aggregate: extra args + order by", async () => { const resultOrdered = await executeAggregate( concatSpec, - jsToLuaValue([{ v: "Carol", k: 3 }, { v: "Alice", k: 1 }, { v: "Bob", k: 2 }]), + jsToLuaValue([ + { v: "Carol", k: 3 }, + { v: "Alice", k: 1 }, + { v: "Bob", k: 2 }, + ]), parseExpressionString("_.v"), [], undefined, @@ -1248,4 +1263,4 @@ test("aggregate: extra args forwarded to finish", async () => { emptyConfig, ); expect(result2).toBe("[x, y]"); -}); \ No newline at end of file +}); diff --git a/client/space_lua/aggregates.ts b/client/space_lua/aggregates.ts index ddfcd3e7..2fbcf9ad 100644 --- a/client/space_lua/aggregates.ts +++ b/client/space_lua/aggregates.ts @@ -235,7 +235,12 @@ export async function executeAggregate( const itemEnv = buildItemEnv(objectVariable, item, env, sf); value = await evalExprFn(valueExpr, itemEnv, sf); } - state = await luaCall(spec.iterate, [state, value, ctx, ...extraArgs], noCtx, sf); + state = await luaCall( + spec.iterate, + [state, value, ctx, ...extraArgs], + noCtx, + sf, + ); } // Finish diff --git a/client/space_lua/parse-lua.js b/client/space_lua/parse-lua.js index f0c360a5..e65135c2 100644 --- a/client/space_lua/parse-lua.js +++ b/client/space_lua/parse-lua.js @@ -1,22 +1,89 @@ // This file was generated by lezer-generator. You probably shouldn't edit it. -import {LRParser} from "@lezer/lr" -const spec_identifier = {__proto__:null,break:16, goto:20, do:24, end:26, while:30, nil:32, true:34, false:36, order:81, by:83, desc:87, asc:89, using:90, function:92, nulls:99, first:101, last:103, or:106, and:108, not:130, query:142, from:149, where:153, select:159, limit:163, group:167, having:171, filter:175, repeat:178, until:180, if:184, then:186, elseif:188, else:190, for:194, in:202, local:212, return:228} +import { LRParser } from "@lezer/lr"; +const spec_identifier = { + __proto__: null, + break: 16, + goto: 20, + do: 24, + end: 26, + while: 30, + nil: 32, + true: 34, + false: 36, + order: 81, + by: 83, + desc: 87, + asc: 89, + using: 90, + function: 92, + nulls: 99, + first: 101, + last: 103, + or: 106, + and: 108, + not: 130, + query: 142, + from: 149, + where: 153, + select: 159, + limit: 163, + group: 167, + having: 171, + filter: 175, + repeat: 178, + until: 180, + if: 184, + then: 186, + elseif: 188, + else: 190, + for: 194, + in: 202, + local: 212, + return: 228, +}; export const parser = LRParser.deserialize({ version: 14, - states: "JxO!ZQPOOOOQO'#Cc'#CcO!UQPO'#CaO!bQPOOOOQO'#FX'#FXO!vQQO'#CwO$]QPO'#FWOOQO'#FW'#FWO$gQPO'#FWOOQO'#El'#ElO%vQPO'#EkOOQO'#FS'#FSOOQO'#Es'#EsO%{QPO'#C_OOQO'#C_'#C_QOQPOOO!UQPO'#CeO&`QPO'#CgO!vQQO'#CjO&gQPO'#EWO!vQQO'#EZO!UQPO'#E`O!UQPO'#EgO&nQPO'#EmO&vQQO'#EqO'^QPO,58{OOQO'#Cq'#CqO!UQPO,59^O!vQQO,59`O(gQQO'#C|O(nQQO'#F^OOQO'#FY'#FYOOQO,59f,59fO!UQPO,59fO(xQPO'#FUO,wQPO,59cO-OQPO'#FWOOQO'#Dp'#DpOOQO'#Dq'#DqOOQO'#Dr'#DrO!vQQO'#DnOOQO'#FU'#FUO/|QPO'#DsO0RQSO'#DtO0WQPO'#E|O0`QPO,5<^O!vQQO,5;VOOQO-E8q-E8qOOQO,58y,58yOOQO,59P,59PO0hQPO,59RO0mQPO,59UO0tQPO,5:rO0yQPO,5:uO1QQPO'#FqOOQO'#Ed'#EdO1]QPO'#EcO1bQPO,5:zO1gQPO'#EhO/|QPO,5;RO1rQQO'#EoO3YQPO'#FsOOQO'#En'#EnO!UQPO,5;TO4mQPO,5;XO5}QPO'#F_OOQO'#Ef'#EfOOQO,5;],5;]O7gQPO,5;]OOQO1G.g1G.gOOQO1G.x1G.xO7{QPO1G.zO8SQWO'#FUO;`QWO'#FXO!vQQO'#DOO|QPO,5;xO?RQPO,5;xO?ZQPO'#DTO?`QPO1G/QOOQO1G.}1G.}OOQO'#Df'#DfOOQO'#Dg'#DgOOQO'#Dh'#DhOOQO'#Di'#DiOOQO'#Dk'#DkOOQO'#Dl'#DlOOQO'#Dm'#DmO!vQQO,59|O!vQQO,59|O!vQQO,59|O!vQQO,59|O!vQQO,59|O!vQQO,59|O!vQQO,59|O!vQQO,59|O!vQQO,59|O?kQPO,5:pOAWQPO,5:YOBpQQO'#D]OOQO,5:_,5:_OCgQQO,5:`OCnQPO,5;hOOQO-E8z-E8zOOQO1G0q1G0qOOQO1G.m1G.mO&`QPO1G.pO!vQQO1G0^OCxQPO1G0aO!vQQO,5:|O!UQPO'#EzODVQPO,5<]O!vQQO,5:}O&`QPO1G0fO!UQPO'#E{OD_QPO,5;SO!UQPO,5;SOOQO1G0m1G0mO!UQPO'#EpOOQO,5;Z,5;ZO!UQPO'#E}ODjQPO,5<_O/|QPO1G0oO!vQQO1G0sO!vQQO'#EuOE}QPO,5;yOOQO1G0w1G0wOOQO7+$f7+$fOGeQQO,59kOHfQPO,59jOHmQQO1G/SOHtQSO1G/SOOQO1G/S1G/SOJjQSO,5:YOOQO1G1d1G1dOJtQPO1G1dO!vQQO,59oOOQO7+$l7+$lOMrQPO1G/hOMyQPO1G/hO!!yQPO1G/hO!#QQPO1G/hO!%zQPO1G/hO!&XQPO1G/hO!(iQPO1G/hO!,_QPO1G/hO!,fQPO1G/hO!,mQPO1G0[O!,rQPO'#FaO!,|QPO'#FaOOQO'#D^'#D^O!-UQPO,59wOOQO'#Dv'#DvOOQO'#Ex'#ExO!-ZQQO1G/zOGeQQO'#DwOGeQQO'#DyO!-bQPO'#D{OGeQQO'#D|O!-gQQO'#EOO!.hQPO'#EQOGeQQO'#ESOOQO1G/z1G/zO!.mQPO7+$[O!.rQPO7+%xO!0RQPO7+%{O!0^QPO1G0hOOQO,5;f,5;fOOQO-E8x-E8xOOQO1G0i1G0iO!0eQPO7+&QOOQO,5;g,5;gOOQO-E8y-E8yO!UQPO1G0nOOQO1G0n1G0nO!0jQQO,5;[OOQO,5;i,5;iOOQO-E8{-E8{OOQO7+&Z7+&ZOOQO7+&_7+&_O!0oQPO,5;aOOQO-E8s-E8sO!2XQSO1G/VO!2cQPO1G/UO!4XQSO1G/hO!4`QSO1G/hO!6WQSO1G/hO!6_QSO1G/hO!8PQSO1G/hO!8^QSO1G/hO!:XQSO1G/hO!]QSO,5:cO!>yQSO,5:eO!-gQQO,5:gO!?gQSO,5:hO!@TQ`O'#FUO!BSQ`O'#FWO!EYQ`O,5:jO!-gQQO,5:lO!EyQSO,5:nOOQO<|AN>|OOQO<OAN>OOGeQQO'#DnO!-gQQO'#DnOGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|O!-gQQO'#EuO#-RQPO,59rO!-gQQO'#EwO/|QPO1G/^", - stateData: "#-^~O#tOS#uOSPOS~OSZOUQOWZOY`O[aO_bOlTO!OfO!{cO#OdO#TeO#^gO#fhO#wPO~O#rRP~P]OgkOilOlnOoqOqmO#yjO~O`yOayObyOcyOdyOlTOqmO!OzO!cxO!i{O#wPO#yjO$WvO$[uO$bwO~Og#zXi#zXl#zXo#zXq#zX#y#zX~Ov|O$O$fX~P#wOS#vXU#vXW#vXY#vX[#vX_#vXl#vX!O#vX!{#vX#O#vX#T#vX#^#vX#f#vX#r#vX#w#vX]#vX!|#vX#Q#vX#R#vX~P#wO$O!OO~O#rRX]RX!|RX#QRX#RRX~P]O]RP~P]O!|RP~P]O!O!aO#wPO~OS!eO#r#eX]#eX!|#eX#Q#eX#R#eX~P!vOU!gO~O`yOayObyOcyOdyOi!lOlTOqmO!OzO!c'eO!i{O#wPO#yjO$WvO$[uO$bwO~Ou!oO~P'cOm!rOx!uO~P!vOm#xX!V#xX!W#xX!X#xX!^#xX$U#xX$V#xX$W#xX$X#xX$Y#xX$Z#xX$[#xX$]#xX$^#xX$_#xX$`#xX$a#xX[#xX#P#xXS#xXv#xX#r#xXj#xXx#xXU#xXW#xXY#xX_#xX!O#xX!{#xX#O#xX#T#xX#^#xX#f#xX#w#xX]#xX!|#xX{#xX|#xX}#xX!R#xX#Q#xX#R#xX~P!bO!V#WO!W#XO!X#PO!^#TO$U!xO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OO~Om!wO~P+sO!y#YOm#zX!V#zX!W#zX!X#zX!^#zX$U#zX$V#zX$W#zX$X#zX$Y#zX$Z#zX$[#zX$]#zX$^#zX$_#zX$`#zX$a#zX[#zX#P#zXS#zXv#zX#r#zXj#zXx#zXU#zXW#zXY#zX_#zX!O#zX!{#zX#O#zX#T#zX#^#zX#f#zX#w#zX]#zX!|#zX{#zX|#zX}#zX!R#zX#Q#zX#R#zX~P#wOl#[O~O$c#^O~OlTO#wPO~Ov|O$O$fa~O]#bO~O[#cO~P+sO!|#dO~O#P#eO~P+sOv#gO$O#fO#X$eX~O#X#iO~O[#jO~Og#kOo#mOl#[X~O$h#oOS#dPU#dPW#dPY#dP[#dP_#dPl#dPv#dP!O#dP!{#dP#O#dP#T#dP#^#dP#f#dP#r#dP#w#dP$O#dP]#dP!|#dP#Q#dP#R#dP~Ov#qOS$gXU$gXW$gXY$gX[$gX_$gXl$gX!O$gX!{$gX#O$gX#T$gX#^$gX#f$gX#r$gX#w$gX$O$gX]$gX!|$gX#Q$gX#R$gX~O$O#tOS#aaU#aaW#aaY#aa[#aa_#aal#aa!O#aa!{#aa#O#aa#T#aa#^#aa#f#aa#r#aa#w#aa]#aa!|#aa#Q#aa#R#aa~Ov#uOS$RX#r$RXm$RXx$RXU$RXW$RXY$RX[$RX_$RXl$RX!O$RX!{$RX#O$RX#T$RX#^$RX#f$RX#w$RX]$RX!|$RX#Q$RX#R$RX~P+sOS#wO#r#ea]#ea!|#ea#Q#ea#R#ea~Oj#xO~P+sOu#xX!V#xX!W#xX!X#xX!^#xX$P#xX$U#xX$V#xX$W#xX$X#xX$Y#xX$Z#xX$[#xX$]#xX$^#xX$_#xX$`#xX$a#xXx#xX!l#xX!n#xX!q#xX!s#xX!u#xX!w#xX$d#xX~P!bOg#{Xi#{Xl#{Xo#{Xq#{X!V#{X!W#{X!X#{X!^#{X#y#{X$U#{X$V#{X$W#{X$X#{X$Y#{X$Z#{X$[#{X$]#{X$^#{X$_#{X$`#{X$a#{X~O$O#yOu#{X$P#{X~P9xO!V'uO!W'wO!X'gO!^'oO$U!xO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OO~OutX$PtX~P;mOu#}O$P#{O~O!y#YOu#zX!V#zX!W#zX!X#zX!^#zX$P#zX$U#zX$V#zX$W#zX$X#zX$Y#zX$Z#zX$[#zX$]#zX$^#zX$_#zX$`#zX$a#zXx#zX!l#zX!n#zX!q#zX!s#zX!u#zX!w#zX$d#zX~P#wOm$PO~Om$POx!uO~Oy$RO~OlnOqmO#yjO~Ol$^O~O$a#OO!V!ba!W!ba!X!ba!^!ba$U!ba$V!ba$W!ba$X!ba$Y!ba$Z!ba$[!ba$]!ba$^!ba$_!ba$`!bav!bax!ba{!ba|!ba}!ba!R!ba~Om!ba[!ba#P!baS!ba#r!baj!baU!baW!baY!ba_!bal!ba!O!ba!{!ba#O!ba#T!ba#^!ba#f!ba#w!ba]!ba!|!ba#Q!ba#R!ba~P?pOc$`OlTO#wPOm!QP~Ox$hO!l$fO!n$gO!q$iO!s$jO!u$kO!w$lO~O$d$mO~PCOOv#pa$O#pa~P#wO]RP#QRP#RRP~P]Ov#gO#X$ea~Og#kOo$xOl#[a~Ov#qOS$gaU$gaW$gaY$ga[$ga_$gal$ga!O$ga!{$ga#O$ga#T$ga#^$ga#f$ga#r$ga#w$ga$O$ga]$ga!|$ga#Q$ga#R$ga~Ov#uOS$Ra#r$Ram$Rax$RaU$RaW$RaY$Ra[$Ra_$Ral$Ra!O$Ra!{$Ra#O$Ra#T$Ra#^$Ra#f$Ra#w$Ra]$Ra!|$Ra#Q$Ra#R$Ra~O`yOayObyOcyOdyOlTOqmO!OzO!c'eO!i{O#wPO#yjO$WvO$[uO$bwO~Oj%SO~P+sOu%_O~P'cOu%_O$P%`O~O$a#OO!V!ba!W!ba!X!ba!^!ba$U!ba$V!ba$W!ba$X!ba$Y!ba$Z!ba$[!ba$]!ba$^!ba$_!ba$`!bax!ba!l!ba!n!ba!q!ba!s!ba!u!ba!w!ba$d!ba~Ou!ba$P!ba~PH|Om%bO~O!^#TO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOm!Ui!V!Ui!W!Ui!X!Ui[!Ui#P!UiS!Uiv!Ui#r!Uij!Uix!UiU!UiW!UiY!Ui_!Uil!Ui!O!Ui!{!Ui#O!Ui#T!Ui#^!Ui#f!Ui#w!Ui]!Ui!|!Ui{!Ui|!Ui}!Ui!R!Ui#Q!Ui#R!Ui~O$U!xO~PJyO$U!Ui~PJyO!^#TO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOm!Ui!V!Ui!W!Ui!X!Ui$U!Ui$W!Ui[!Ui#P!UiS!Uiv!Ui#r!Uij!Uix!UiU!UiW!UiY!Ui_!Uil!Ui!O!Ui!{!Ui#O!Ui#T!Ui#^!Ui#f!Ui#w!Ui]!Ui!|!Ui{!Ui|!Ui}!Ui!R!Ui#Q!Ui#R!Ui~O$V!Ui~PNQO$V!yO~PNQO$]!}O$^!}O$_!}O$`!}O$a#OOm!Ui!V!Ui!W!Ui!X!Ui$U!Ui$V!Ui$W!Ui$X!Ui$Y!Ui[!Ui#P!UiS!Uiv!Ui#r!Uij!Uix!UiU!UiW!UiY!Ui_!Uil!Ui!O!Ui!{!Ui#O!Ui#T!Ui#^!Ui#f!Ui#w!Ui]!Ui!|!Ui{!Ui|!Ui}!Ui!R!Ui#Q!Ui#R!Ui~O!^#TO$Z!|O$[!|O~P!#XO!^!Ui$Z!Ui$[!Ui~P!#XO$a#OOm!Ui!V!Ui!W!Ui[!Ui#P!UiS!Uiv!Ui#r!Uij!Uix!UiU!UiW!UiY!Ui_!Uil!Ui!O!Ui!{!Ui#O!Ui#T!Ui#^!Ui#f!Ui#w!Ui]!Ui!|!Ui{!Ui|!Ui}!Ui!R!Ui#Q!Ui#R!Ui~O!X!Ui!^!Ui$U!Ui$V!Ui$W!Ui$X!Ui$Y!Ui$Z!Ui$[!Ui$]!Ui$^!Ui$_!Ui$`!Ui~P!&fO!X#PO!^#TO$U!xO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOm!Ui!V!Ui[!Ui#P!UiS!Uiv!Ui#r!Uij!Uix!UiU!UiW!UiY!Ui_!Uil!Ui!O!Ui!{!Ui#O!Ui#T!Ui#^!Ui#f!Ui#w!Ui]!Ui!|!Ui{!Ui|!Ui}!Ui!R!Ui#Q!Ui#R!Ui~O!W#XO~P!)fO!W!Ui~P!)fO!n%fO~Ov%gOm$TX~P#wOv%gOm$TX~Om%iO~O$d%kO~PCOOy%oO~O`yOayObyOcyOdyOlTOqmO!OzO!c'fO!i{O#wPO#yjO$WvO$[uO$bwO~Oy%tO~O]%vO~OS!zqU!zqW!zqY!zq[!zq_!zql!zq!O!zq!{!zq#O!zq#T!zq#^!zq#f!zq#r!zq#w!zq]!zq!|!zq#Q!zq#R!zq~P+sO]%yO#Q%xO#R%zO~Ov%{O~P+sO]%|O~O$i&OO~OS#iav#ia#r#iam#iax#iaU#iaW#iaY#ia[#ia_#ial#ia!O#ia!{#ia#O#ia#T#ia#^#ia#f#ia#w#ia]#ia!|#ia#Q#ia#R#ia~P+sOusi$Psi~P;mO$O&PO~O!^'oO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOu!Ui!V!Ui!W!Ui!X!Ui$P!Uix!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$d!Ui~O$U!xO~P!2hO$U!Ui~P!2hO!^'oO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOu!Ui!V!Ui!W!Ui!X!Ui$P!Ui$U!Ui$W!Uix!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$d!Ui~O$V!Ui~P!4gO$V!yO~P!4gO$]!}O$^!}O$_!}O$`!}O$a#OOu!Ui!V!Ui!W!Ui!X!Ui$P!Ui$U!Ui$V!Ui$W!Ui$X!Ui$Y!Uix!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$d!Ui~O!^'oO$Z!|O$[!|O~P!6fO!^!Ui$Z!Ui$[!Ui~P!6fO$a#OO!V!Ui!W!Ui!X!Ui!^!Ui$U!Ui$V!Ui$W!Ui$X!Ui$Y!Ui$Z!Ui$[!Ui$]!Ui$^!Ui$_!Ui$`!Uix!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$d!Ui~Ou!Ui$P!Ui~P!8kO!X'gO!^'oO$U!xO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOu!Ui!V!Ui$P!Uix!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$d!Ui~O!W'wO~P!:cO!W!Ui~P!:cOu&QO~P'cO{&TO|&TO}&UO!R&SOmzXvzX~P+sOv&VOm$SX~Oc&ZOlTO#wPO~Ov%gOm$Ta~O$O&^Ox#{X!l#{X!n#{X!q#{X!s#{X!u#{X!w#{X$d#{X~P9xOx!ka!l!ka!n!ka!q!ka!s!ka!u!ka!w!ka$d!ka~P;mOx!ma!l!ma!n!ma!q!ma!s!ma!u!ma!w!ma$d!ma~P;mOx!pa!l!pa!n!pa!q!pa!s!pa!u!pa!w!pa$d!pa~P;mOv#xXx#xX!V#xX!W#xX!X#xX!^#xX!l#xX!n#xX!q#xX!s#xX!u#xX!w#xX$U#xX$V#xX$W#xX$X#xX$Y#xX$Z#xX$[#xX$]#xX$^#xX$_#xX$`#xX$a#xX$d#xX{#xX|#xX}#xX!R#xX~P!bO!y#YOv#zXx#zX!V#zX!W#zX!X#zX!^#zX!l#zX!n#zX!q#zX!s#zX!u#zX!w#zX$U#zX$V#zX$W#zX$X#zX$Y#zX$Z#zX$[#zX$]#zX$^#zX$_#zX$`#zX$a#zX$d#zX{#zX|#zX}#zX!R#zX~P#wO!V'vO!W'xO!X'hO!^'pO$U!xO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OO~Ov&bOx!ra!l!ra!n!ra!q!ra!s!ra!u!ra!w!ra$d!ra~P!DUOx!va!l!va!n!va!q!va!s!va!u!va!w!va$d!va~P;mO]&gO#Q%xO#R&hO~O!S&mO!T&mO~O!R&nOmzavza~O!O&pO#wPO~Ov&VOm$Sa~Om&sO~P+sOm#jav#ja~P#wO]&tO~O{&vO|&vO}'zO!R&SOvzXxzX!lzX!nzX!qzX!szX!uzX!wzX$dzX~P!DUOv'{Ox$SX!l$SX!n$SX!q$SX!s$SX!u$SX!w$SX$d$SX~Ov!ba{!ba|!ba}!ba!R!ba~PH|Ov'yOx$RX!l$RX!n$RX!q$RX!s$RX!u$RX!w$RX$d$RX~P!DUO#P'UO~P+sO]'VO~Ov'WO[#Uy~P+sOury$Pry~P;mO!S'XO!T'XO~O!R'YOmzivzi~Ox!kq!l!kq!n!kq!q!kq!s!kq!u!kq!w!kq$d!kq~P;mO!R&nOvzaxza!lza!nza!qza!sza!uza!wza$dza~Ov'{Ox$Sa!l$Sa!n$Sa!q$Sa!s$Sa!u$Sa!w$Sa$d$Sa~O!^'pO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOv!Uix!Ui!V!Ui!W!Ui!X!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$d!Ui{!Ui|!Ui}!Ui!R!Ui~O$U!xO~P!MoO$U!Ui~P!MoO!^'pO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOv!Uix!Ui!V!Ui!W!Ui!X!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$U!Ui$W!Ui$d!Ui{!Ui|!Ui}!Ui!R!Ui~O$V!Ui~P# wO$V!yO~P# wO$]!}O$^!}O$_!}O$`!}O$a#OOv!Uix!Ui!V!Ui!W!Ui!X!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$U!Ui$V!Ui$W!Ui$X!Ui$Y!Ui$d!Ui{!Ui|!Ui}!Ui!R!Ui~O!^'pO$Z!|O$[!|O~P#$PO!^!Ui$Z!Ui$[!Ui~P#$POv!Ui{!Ui|!Ui}!Ui!R!Ui~P!8kO!X'hO!^'pO$U!xO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOv!Uix!Ui!V!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$d!Ui{!Ui|!Ui}!Ui!R!Ui~O!W'xO~P#&rO!W!Ui~P#&rOx!rq!l!rq!n!rq!q!rq!s!rq!u!rq!w!rq$d!rq~P;mOv'yOx$Ra!l$Ra!n$Ra!q$Ra!s$Ra!u$Ra!w$Ra$d$Ra~O]'^O~O!S'aO!T'aO~O!R'bOmzqvzq~O!R'YOvzixzi!lzi!nzi!qzi!szi!uzi!wzi$dzi~Ov#iax#ia!l#ia!n#ia!q#ia!s#ia!u#ia!w#ia$d#ia~P!DUO[#U!Z~P+sO!S'dO!T'dO~O!R'bOvzqxzq!lzq!nzq!qzq!szq!uzq!wzq$dzq~O!O'|O#wPO~OP$[~", + states: + "JxO!ZQPOOOOQO'#Cc'#CcO!UQPO'#CaO!bQPOOOOQO'#FX'#FXO!vQQO'#CwO$]QPO'#FWOOQO'#FW'#FWO$gQPO'#FWOOQO'#El'#ElO%vQPO'#EkOOQO'#FS'#FSOOQO'#Es'#EsO%{QPO'#C_OOQO'#C_'#C_QOQPOOO!UQPO'#CeO&`QPO'#CgO!vQQO'#CjO&gQPO'#EWO!vQQO'#EZO!UQPO'#E`O!UQPO'#EgO&nQPO'#EmO&vQQO'#EqO'^QPO,58{OOQO'#Cq'#CqO!UQPO,59^O!vQQO,59`O(gQQO'#C|O(nQQO'#F^OOQO'#FY'#FYOOQO,59f,59fO!UQPO,59fO(xQPO'#FUO,wQPO,59cO-OQPO'#FWOOQO'#Dp'#DpOOQO'#Dq'#DqOOQO'#Dr'#DrO!vQQO'#DnOOQO'#FU'#FUO/|QPO'#DsO0RQSO'#DtO0WQPO'#E|O0`QPO,5<^O!vQQO,5;VOOQO-E8q-E8qOOQO,58y,58yOOQO,59P,59PO0hQPO,59RO0mQPO,59UO0tQPO,5:rO0yQPO,5:uO1QQPO'#FqOOQO'#Ed'#EdO1]QPO'#EcO1bQPO,5:zO1gQPO'#EhO/|QPO,5;RO1rQQO'#EoO3YQPO'#FsOOQO'#En'#EnO!UQPO,5;TO4mQPO,5;XO5}QPO'#F_OOQO'#Ef'#EfOOQO,5;],5;]O7gQPO,5;]OOQO1G.g1G.gOOQO1G.x1G.xO7{QPO1G.zO8SQWO'#FUO;`QWO'#FXO!vQQO'#DOO|QPO,5;xO?RQPO,5;xO?ZQPO'#DTO?`QPO1G/QOOQO1G.}1G.}OOQO'#Df'#DfOOQO'#Dg'#DgOOQO'#Dh'#DhOOQO'#Di'#DiOOQO'#Dk'#DkOOQO'#Dl'#DlOOQO'#Dm'#DmO!vQQO,59|O!vQQO,59|O!vQQO,59|O!vQQO,59|O!vQQO,59|O!vQQO,59|O!vQQO,59|O!vQQO,59|O!vQQO,59|O?kQPO,5:pOAWQPO,5:YOBpQQO'#D]OOQO,5:_,5:_OCgQQO,5:`OCnQPO,5;hOOQO-E8z-E8zOOQO1G0q1G0qOOQO1G.m1G.mO&`QPO1G.pO!vQQO1G0^OCxQPO1G0aO!vQQO,5:|O!UQPO'#EzODVQPO,5<]O!vQQO,5:}O&`QPO1G0fO!UQPO'#E{OD_QPO,5;SO!UQPO,5;SOOQO1G0m1G0mO!UQPO'#EpOOQO,5;Z,5;ZO!UQPO'#E}ODjQPO,5<_O/|QPO1G0oO!vQQO1G0sO!vQQO'#EuOE}QPO,5;yOOQO1G0w1G0wOOQO7+$f7+$fOGeQQO,59kOHfQPO,59jOHmQQO1G/SOHtQSO1G/SOOQO1G/S1G/SOJjQSO,5:YOOQO1G1d1G1dOJtQPO1G1dO!vQQO,59oOOQO7+$l7+$lOMrQPO1G/hOMyQPO1G/hO!!yQPO1G/hO!#QQPO1G/hO!%zQPO1G/hO!&XQPO1G/hO!(iQPO1G/hO!,_QPO1G/hO!,fQPO1G/hO!,mQPO1G0[O!,rQPO'#FaO!,|QPO'#FaOOQO'#D^'#D^O!-UQPO,59wOOQO'#Dv'#DvOOQO'#Ex'#ExO!-ZQQO1G/zOGeQQO'#DwOGeQQO'#DyO!-bQPO'#D{OGeQQO'#D|O!-gQQO'#EOO!.hQPO'#EQOGeQQO'#ESOOQO1G/z1G/zO!.mQPO7+$[O!.rQPO7+%xO!0RQPO7+%{O!0^QPO1G0hOOQO,5;f,5;fOOQO-E8x-E8xOOQO1G0i1G0iO!0eQPO7+&QOOQO,5;g,5;gOOQO-E8y-E8yO!UQPO1G0nOOQO1G0n1G0nO!0jQQO,5;[OOQO,5;i,5;iOOQO-E8{-E8{OOQO7+&Z7+&ZOOQO7+&_7+&_O!0oQPO,5;aOOQO-E8s-E8sO!2XQSO1G/VO!2cQPO1G/UO!4XQSO1G/hO!4`QSO1G/hO!6WQSO1G/hO!6_QSO1G/hO!8PQSO1G/hO!8^QSO1G/hO!:XQSO1G/hO!]QSO,5:cO!>yQSO,5:eO!-gQQO,5:gO!?gQSO,5:hO!@TQ`O'#FUO!BSQ`O'#FWO!EYQ`O,5:jO!-gQQO,5:lO!EyQSO,5:nOOQO<|AN>|OOQO<OAN>OOGeQQO'#DnO!-gQQO'#DnOGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|OGeQQO,59|O!-gQQO,59|O!-gQQO'#EuO#-RQPO,59rO!-gQQO'#EwO/|QPO1G/^", + stateData: + "#-^~O#tOS#uOSPOS~OSZOUQOWZOY`O[aO_bOlTO!OfO!{cO#OdO#TeO#^gO#fhO#wPO~O#rRP~P]OgkOilOlnOoqOqmO#yjO~O`yOayObyOcyOdyOlTOqmO!OzO!cxO!i{O#wPO#yjO$WvO$[uO$bwO~Og#zXi#zXl#zXo#zXq#zX#y#zX~Ov|O$O$fX~P#wOS#vXU#vXW#vXY#vX[#vX_#vXl#vX!O#vX!{#vX#O#vX#T#vX#^#vX#f#vX#r#vX#w#vX]#vX!|#vX#Q#vX#R#vX~P#wO$O!OO~O#rRX]RX!|RX#QRX#RRX~P]O]RP~P]O!|RP~P]O!O!aO#wPO~OS!eO#r#eX]#eX!|#eX#Q#eX#R#eX~P!vOU!gO~O`yOayObyOcyOdyOi!lOlTOqmO!OzO!c'eO!i{O#wPO#yjO$WvO$[uO$bwO~Ou!oO~P'cOm!rOx!uO~P!vOm#xX!V#xX!W#xX!X#xX!^#xX$U#xX$V#xX$W#xX$X#xX$Y#xX$Z#xX$[#xX$]#xX$^#xX$_#xX$`#xX$a#xX[#xX#P#xXS#xXv#xX#r#xXj#xXx#xXU#xXW#xXY#xX_#xX!O#xX!{#xX#O#xX#T#xX#^#xX#f#xX#w#xX]#xX!|#xX{#xX|#xX}#xX!R#xX#Q#xX#R#xX~P!bO!V#WO!W#XO!X#PO!^#TO$U!xO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OO~Om!wO~P+sO!y#YOm#zX!V#zX!W#zX!X#zX!^#zX$U#zX$V#zX$W#zX$X#zX$Y#zX$Z#zX$[#zX$]#zX$^#zX$_#zX$`#zX$a#zX[#zX#P#zXS#zXv#zX#r#zXj#zXx#zXU#zXW#zXY#zX_#zX!O#zX!{#zX#O#zX#T#zX#^#zX#f#zX#w#zX]#zX!|#zX{#zX|#zX}#zX!R#zX#Q#zX#R#zX~P#wOl#[O~O$c#^O~OlTO#wPO~Ov|O$O$fa~O]#bO~O[#cO~P+sO!|#dO~O#P#eO~P+sOv#gO$O#fO#X$eX~O#X#iO~O[#jO~Og#kOo#mOl#[X~O$h#oOS#dPU#dPW#dPY#dP[#dP_#dPl#dPv#dP!O#dP!{#dP#O#dP#T#dP#^#dP#f#dP#r#dP#w#dP$O#dP]#dP!|#dP#Q#dP#R#dP~Ov#qOS$gXU$gXW$gXY$gX[$gX_$gXl$gX!O$gX!{$gX#O$gX#T$gX#^$gX#f$gX#r$gX#w$gX$O$gX]$gX!|$gX#Q$gX#R$gX~O$O#tOS#aaU#aaW#aaY#aa[#aa_#aal#aa!O#aa!{#aa#O#aa#T#aa#^#aa#f#aa#r#aa#w#aa]#aa!|#aa#Q#aa#R#aa~Ov#uOS$RX#r$RXm$RXx$RXU$RXW$RXY$RX[$RX_$RXl$RX!O$RX!{$RX#O$RX#T$RX#^$RX#f$RX#w$RX]$RX!|$RX#Q$RX#R$RX~P+sOS#wO#r#ea]#ea!|#ea#Q#ea#R#ea~Oj#xO~P+sOu#xX!V#xX!W#xX!X#xX!^#xX$P#xX$U#xX$V#xX$W#xX$X#xX$Y#xX$Z#xX$[#xX$]#xX$^#xX$_#xX$`#xX$a#xXx#xX!l#xX!n#xX!q#xX!s#xX!u#xX!w#xX$d#xX~P!bOg#{Xi#{Xl#{Xo#{Xq#{X!V#{X!W#{X!X#{X!^#{X#y#{X$U#{X$V#{X$W#{X$X#{X$Y#{X$Z#{X$[#{X$]#{X$^#{X$_#{X$`#{X$a#{X~O$O#yOu#{X$P#{X~P9xO!V'uO!W'wO!X'gO!^'oO$U!xO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OO~OutX$PtX~P;mOu#}O$P#{O~O!y#YOu#zX!V#zX!W#zX!X#zX!^#zX$P#zX$U#zX$V#zX$W#zX$X#zX$Y#zX$Z#zX$[#zX$]#zX$^#zX$_#zX$`#zX$a#zXx#zX!l#zX!n#zX!q#zX!s#zX!u#zX!w#zX$d#zX~P#wOm$PO~Om$POx!uO~Oy$RO~OlnOqmO#yjO~Ol$^O~O$a#OO!V!ba!W!ba!X!ba!^!ba$U!ba$V!ba$W!ba$X!ba$Y!ba$Z!ba$[!ba$]!ba$^!ba$_!ba$`!bav!bax!ba{!ba|!ba}!ba!R!ba~Om!ba[!ba#P!baS!ba#r!baj!baU!baW!baY!ba_!bal!ba!O!ba!{!ba#O!ba#T!ba#^!ba#f!ba#w!ba]!ba!|!ba#Q!ba#R!ba~P?pOc$`OlTO#wPOm!QP~Ox$hO!l$fO!n$gO!q$iO!s$jO!u$kO!w$lO~O$d$mO~PCOOv#pa$O#pa~P#wO]RP#QRP#RRP~P]Ov#gO#X$ea~Og#kOo$xOl#[a~Ov#qOS$gaU$gaW$gaY$ga[$ga_$gal$ga!O$ga!{$ga#O$ga#T$ga#^$ga#f$ga#r$ga#w$ga$O$ga]$ga!|$ga#Q$ga#R$ga~Ov#uOS$Ra#r$Ram$Rax$RaU$RaW$RaY$Ra[$Ra_$Ral$Ra!O$Ra!{$Ra#O$Ra#T$Ra#^$Ra#f$Ra#w$Ra]$Ra!|$Ra#Q$Ra#R$Ra~O`yOayObyOcyOdyOlTOqmO!OzO!c'eO!i{O#wPO#yjO$WvO$[uO$bwO~Oj%SO~P+sOu%_O~P'cOu%_O$P%`O~O$a#OO!V!ba!W!ba!X!ba!^!ba$U!ba$V!ba$W!ba$X!ba$Y!ba$Z!ba$[!ba$]!ba$^!ba$_!ba$`!bax!ba!l!ba!n!ba!q!ba!s!ba!u!ba!w!ba$d!ba~Ou!ba$P!ba~PH|Om%bO~O!^#TO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOm!Ui!V!Ui!W!Ui!X!Ui[!Ui#P!UiS!Uiv!Ui#r!Uij!Uix!UiU!UiW!UiY!Ui_!Uil!Ui!O!Ui!{!Ui#O!Ui#T!Ui#^!Ui#f!Ui#w!Ui]!Ui!|!Ui{!Ui|!Ui}!Ui!R!Ui#Q!Ui#R!Ui~O$U!xO~PJyO$U!Ui~PJyO!^#TO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOm!Ui!V!Ui!W!Ui!X!Ui$U!Ui$W!Ui[!Ui#P!UiS!Uiv!Ui#r!Uij!Uix!UiU!UiW!UiY!Ui_!Uil!Ui!O!Ui!{!Ui#O!Ui#T!Ui#^!Ui#f!Ui#w!Ui]!Ui!|!Ui{!Ui|!Ui}!Ui!R!Ui#Q!Ui#R!Ui~O$V!Ui~PNQO$V!yO~PNQO$]!}O$^!}O$_!}O$`!}O$a#OOm!Ui!V!Ui!W!Ui!X!Ui$U!Ui$V!Ui$W!Ui$X!Ui$Y!Ui[!Ui#P!UiS!Uiv!Ui#r!Uij!Uix!UiU!UiW!UiY!Ui_!Uil!Ui!O!Ui!{!Ui#O!Ui#T!Ui#^!Ui#f!Ui#w!Ui]!Ui!|!Ui{!Ui|!Ui}!Ui!R!Ui#Q!Ui#R!Ui~O!^#TO$Z!|O$[!|O~P!#XO!^!Ui$Z!Ui$[!Ui~P!#XO$a#OOm!Ui!V!Ui!W!Ui[!Ui#P!UiS!Uiv!Ui#r!Uij!Uix!UiU!UiW!UiY!Ui_!Uil!Ui!O!Ui!{!Ui#O!Ui#T!Ui#^!Ui#f!Ui#w!Ui]!Ui!|!Ui{!Ui|!Ui}!Ui!R!Ui#Q!Ui#R!Ui~O!X!Ui!^!Ui$U!Ui$V!Ui$W!Ui$X!Ui$Y!Ui$Z!Ui$[!Ui$]!Ui$^!Ui$_!Ui$`!Ui~P!&fO!X#PO!^#TO$U!xO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOm!Ui!V!Ui[!Ui#P!UiS!Uiv!Ui#r!Uij!Uix!UiU!UiW!UiY!Ui_!Uil!Ui!O!Ui!{!Ui#O!Ui#T!Ui#^!Ui#f!Ui#w!Ui]!Ui!|!Ui{!Ui|!Ui}!Ui!R!Ui#Q!Ui#R!Ui~O!W#XO~P!)fO!W!Ui~P!)fO!n%fO~Ov%gOm$TX~P#wOv%gOm$TX~Om%iO~O$d%kO~PCOOy%oO~O`yOayObyOcyOdyOlTOqmO!OzO!c'fO!i{O#wPO#yjO$WvO$[uO$bwO~Oy%tO~O]%vO~OS!zqU!zqW!zqY!zq[!zq_!zql!zq!O!zq!{!zq#O!zq#T!zq#^!zq#f!zq#r!zq#w!zq]!zq!|!zq#Q!zq#R!zq~P+sO]%yO#Q%xO#R%zO~Ov%{O~P+sO]%|O~O$i&OO~OS#iav#ia#r#iam#iax#iaU#iaW#iaY#ia[#ia_#ial#ia!O#ia!{#ia#O#ia#T#ia#^#ia#f#ia#w#ia]#ia!|#ia#Q#ia#R#ia~P+sOusi$Psi~P;mO$O&PO~O!^'oO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOu!Ui!V!Ui!W!Ui!X!Ui$P!Uix!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$d!Ui~O$U!xO~P!2hO$U!Ui~P!2hO!^'oO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOu!Ui!V!Ui!W!Ui!X!Ui$P!Ui$U!Ui$W!Uix!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$d!Ui~O$V!Ui~P!4gO$V!yO~P!4gO$]!}O$^!}O$_!}O$`!}O$a#OOu!Ui!V!Ui!W!Ui!X!Ui$P!Ui$U!Ui$V!Ui$W!Ui$X!Ui$Y!Uix!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$d!Ui~O!^'oO$Z!|O$[!|O~P!6fO!^!Ui$Z!Ui$[!Ui~P!6fO$a#OO!V!Ui!W!Ui!X!Ui!^!Ui$U!Ui$V!Ui$W!Ui$X!Ui$Y!Ui$Z!Ui$[!Ui$]!Ui$^!Ui$_!Ui$`!Uix!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$d!Ui~Ou!Ui$P!Ui~P!8kO!X'gO!^'oO$U!xO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOu!Ui!V!Ui$P!Uix!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$d!Ui~O!W'wO~P!:cO!W!Ui~P!:cOu&QO~P'cO{&TO|&TO}&UO!R&SOmzXvzX~P+sOv&VOm$SX~Oc&ZOlTO#wPO~Ov%gOm$Ta~O$O&^Ox#{X!l#{X!n#{X!q#{X!s#{X!u#{X!w#{X$d#{X~P9xOx!ka!l!ka!n!ka!q!ka!s!ka!u!ka!w!ka$d!ka~P;mOx!ma!l!ma!n!ma!q!ma!s!ma!u!ma!w!ma$d!ma~P;mOx!pa!l!pa!n!pa!q!pa!s!pa!u!pa!w!pa$d!pa~P;mOv#xXx#xX!V#xX!W#xX!X#xX!^#xX!l#xX!n#xX!q#xX!s#xX!u#xX!w#xX$U#xX$V#xX$W#xX$X#xX$Y#xX$Z#xX$[#xX$]#xX$^#xX$_#xX$`#xX$a#xX$d#xX{#xX|#xX}#xX!R#xX~P!bO!y#YOv#zXx#zX!V#zX!W#zX!X#zX!^#zX!l#zX!n#zX!q#zX!s#zX!u#zX!w#zX$U#zX$V#zX$W#zX$X#zX$Y#zX$Z#zX$[#zX$]#zX$^#zX$_#zX$`#zX$a#zX$d#zX{#zX|#zX}#zX!R#zX~P#wO!V'vO!W'xO!X'hO!^'pO$U!xO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OO~Ov&bOx!ra!l!ra!n!ra!q!ra!s!ra!u!ra!w!ra$d!ra~P!DUOx!va!l!va!n!va!q!va!s!va!u!va!w!va$d!va~P;mO]&gO#Q%xO#R&hO~O!S&mO!T&mO~O!R&nOmzavza~O!O&pO#wPO~Ov&VOm$Sa~Om&sO~P+sOm#jav#ja~P#wO]&tO~O{&vO|&vO}'zO!R&SOvzXxzX!lzX!nzX!qzX!szX!uzX!wzX$dzX~P!DUOv'{Ox$SX!l$SX!n$SX!q$SX!s$SX!u$SX!w$SX$d$SX~Ov!ba{!ba|!ba}!ba!R!ba~PH|Ov'yOx$RX!l$RX!n$RX!q$RX!s$RX!u$RX!w$RX$d$RX~P!DUO#P'UO~P+sO]'VO~Ov'WO[#Uy~P+sOury$Pry~P;mO!S'XO!T'XO~O!R'YOmzivzi~Ox!kq!l!kq!n!kq!q!kq!s!kq!u!kq!w!kq$d!kq~P;mO!R&nOvzaxza!lza!nza!qza!sza!uza!wza$dza~Ov'{Ox$Sa!l$Sa!n$Sa!q$Sa!s$Sa!u$Sa!w$Sa$d$Sa~O!^'pO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOv!Uix!Ui!V!Ui!W!Ui!X!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$d!Ui{!Ui|!Ui}!Ui!R!Ui~O$U!xO~P!MoO$U!Ui~P!MoO!^'pO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOv!Uix!Ui!V!Ui!W!Ui!X!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$U!Ui$W!Ui$d!Ui{!Ui|!Ui}!Ui!R!Ui~O$V!Ui~P# wO$V!yO~P# wO$]!}O$^!}O$_!}O$`!}O$a#OOv!Uix!Ui!V!Ui!W!Ui!X!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$U!Ui$V!Ui$W!Ui$X!Ui$Y!Ui$d!Ui{!Ui|!Ui}!Ui!R!Ui~O!^'pO$Z!|O$[!|O~P#$PO!^!Ui$Z!Ui$[!Ui~P#$POv!Ui{!Ui|!Ui}!Ui!R!Ui~P!8kO!X'hO!^'pO$U!xO$V!yO$W!zO$X!{O$Y!{O$Z!|O$[!|O$]!}O$^!}O$_!}O$`!}O$a#OOv!Uix!Ui!V!Ui!l!Ui!n!Ui!q!Ui!s!Ui!u!Ui!w!Ui$d!Ui{!Ui|!Ui}!Ui!R!Ui~O!W'xO~P#&rO!W!Ui~P#&rOx!rq!l!rq!n!rq!q!rq!s!rq!u!rq!w!rq$d!rq~P;mOv'yOx$Ra!l$Ra!n$Ra!q$Ra!s$Ra!u$Ra!w$Ra$d$Ra~O]'^O~O!S'aO!T'aO~O!R'bOmzqvzq~O!R'YOvzixzi!lzi!nzi!qzi!szi!uzi!wzi$dzi~Ov#iax#ia!l#ia!n#ia!q#ia!s#ia!u#ia!w#ia$d#ia~P!DUO[#U!Z~P+sO!S'dO!T'dO~O!R'bOvzqxzq!lzq!nzq!qzq!szq!uzq!wzq$dzq~O!O'|O#wPO~OP$[~", goto: "Fi$hPPP$iP%XP%fP%XP%XPP%XPPPPPP(`)}P)}PP+sPP-iP(`P/g/g/gPP/mPP/sPPPP/}0^PPP(gPPP0a1]2_3^P4c5k6v(gP8X8X8X(g(gP9s9wP9wP9w9wP9wP9wP9wP(gP%XPP%XPPPP%XP9{9{:OP:R%X:_%XP%X:b%X:o:r:x:{P;[;k;q;{R#Q;'S=o;'S;=`>}<%lO=ok>UVO!_>k!_!`?T!`#P>k#P#Q@X#Q;'S>k;'S;=`Ao<%lO>kk>nTO#P=o#P#Q7z#Q;'S=o;'S;=`>}<%lO=ok?QP;=`<%l=ok?WTO#P?g#P#Q@P#Q;'S?g;'S;=`?y<%lO?gk?jTO#P?g#P#Q7z#Q;'S?g;'S;=`?y<%lO?gk?|P;=`<%l?gk@UP#yk!_!`8Qk@[VO!_=o!_!`@q!`#P=o#P#QAu#Q;'S=o;'S;=`>}<%lO=ok@tTO#P=o#P#QAT#Q;'S=o;'S;=`>}<%lO=okAYV#ykO!_>k!_!`?T!`#P>k#P#Q@X#Q;'S>k;'S;=`Ao<%lO>kkArP;=`<%l>kkAxVO!_?g!_!`?T!`#P?g#P#QAu#Q;'S?g;'S;=`?y<%lO?goBdT$cSO#PBs#P#QCV#Q;'SBs;'S;=`Ci<%lOBskBvTO#PBs#P#QCV#Q;'SBs;'S;=`Ci<%lOBskCYTO#PBs#P#Q%b#Q;'SBs;'S;=`Ci<%lOBskClP;=`<%lBsoCtPjP#P#QCwnC|O$dn~DRO$a~~DWOq~~D]O$U~~DbOu~~DgP$W~!_!`$m", + tokenData: + "Dj~RuXY#fYZ$Q[]#f]^$_pq#fqr$grs$rst)`uv)evw)jwx)oxy.Wyz.]z{.b{|.g|}.l}!O.s!O!P/g!P!Q/|!Q!R0^!R![1u![!]3m!]!^3z!^!_4R!_!`4e!`!a4m!c!}5P!}#O5b#O#P#w#P#QCo#Q#RC|#R#S5P#T#o5P#o#pDR#p#qDW#q#rD]#r#sDb~#kS#u~XY#f[]#fpq#f#O#P#w~#zQYZ#f]^#f~$VP#t~]^$Y~$_O#t~~$dP#t~YZ$Ym$jP!_!`$mm$rO!Xmk$uXOY$rZ]$r^r$rrs%bs#O$r#O#P%g#P;'S$r;'S;=`'}<%lO$rk%gO#ykk%j]rs$rwx$r!Q![&c#O#P$r#T#U$r#U#V$r#Y#Z$r#b#c$r#f#g$r#h#i$r#i#j(T#l#m(v#n#o$rk&fZOY$rZ]$r^r$rrs%bs!Q$r!Q!['X![#O$r#O#P%g#P;'S$r;'S;=`'}<%lO$rk'[ZOY$rZ]$r^r$rrs%bs!Q$r!Q![$r![#O$r#O#P%g#P;'S$r;'S;=`'}<%lO$rk(QP;=`<%l$rk(WP#o#p(Zk(^R!Q![(g!c!i(g#T#Z(gk(jS!Q![(g!c!i(g#T#Z(g#q#r$rk(yR!Q![)S!c!i)S#T#Z)Sk)VR!Q![$r!c!i$r#T#Z$r~)eO$b~~)jO$_~~)oO$V~k)rXOY)oZ])o^w)owx%bx#O)o#O#P*_#P;'S)o;'S;=`,u<%lO)ok*b]rs)owx)o!Q![+Z#O#P)o#T#U)o#U#V)o#Y#Z)o#b#c)o#f#g)o#h#i)o#i#j,{#l#m-n#n#o)ok+^ZOY)oZ])o^w)owx%bx!Q)o!Q![,P![#O)o#O#P*_#P;'S)o;'S;=`,u<%lO)ok,SZOY)oZ])o^w)owx%bx!Q)o!Q![)o![#O)o#O#P*_#P;'S)o;'S;=`,u<%lO)ok,xP;=`<%l)ok-OP#o#p-Rk-UR!Q![-_!c!i-_#T#Z-_k-bS!Q![-_!c!i-_#T#Z-_#q#r)ok-qR!Q![-z!c!i-z#T#Z-zk-}R!Q![)o!c!i)o#T#Z)o~.]Ol~~.bOm~~.gO$]~~.lO$Z~o.sOvc$P[~.xP$[~}!O.{~/QTP~OY.{Z].{^;'S.{;'S;=`/a<%lO.{~/dP;=`<%l.{o/lPgi!O!P/oo/tP!^m!O!P/wQ/|OcQ~0RQ$^~!P!Q0X!_!`$m~0^O$`~~0cUd~!O!P0u!Q![1u!g!h1Z!z!{2W#X#Y1Z#l#m2W~0xP!Q![0{~1QRd~!Q![0{!g!h1Z#X#Y1Z~1^R{|1g}!O1g!Q![1m~1jP!Q![1m~1rPd~!Q![1m~1zSd~!O!P0u!Q![1u!g!h1Z#X#Y1Z~2ZR!Q![2d!c!i2d#T#Z2d~2iUd~!O!P2{!Q![2d!c!i2d!r!s1Z#T#Z2d#d#e1Z~3OR!Q![3X!c!i3X#T#Z3X~3^Td~!Q![3X!c!i3X!r!s1Z#T#Z3X#d#e1Z~3rPo~![!]3u~3zOU~_4ROSR$P[o4YQ$hQ!Xm!^!_4`!_!`$mm4eO$Xm~4jP$O~!_!`$mo4tQ$iQ!Xm!_!`$m!`!a4zm5PO$Ym~5US#w~!Q![5P!c!}5P#R#S5P#T#o5Po5gQik!_!`5m!}#OB_k5pQ!_!`5v!}#O=ok5yP!}#O5|k6PTO#P5|#P#Q6`#Q;'S5|;'S;=`8W<%lO5|k6cVO!_6x!_!`:s!`#P6x#P#Q;w#Q;'S6x;'S;=`=i<%lO6xk6{VO!_7b!_!`8^!`#P7b#P#Q8v#Q;'S7b;'S;=`=c<%lO7bk7eTO#P5|#P#Q7t#Q;'S5|;'S;=`8W<%lO5|k7wP!_!`7zk7}P!_!`8Qk8TP#P#Q%bk8ZP;=`<%l5|k8aTO#P8^#P#Q7t#Q;'S8^;'S;=`8p<%lO8^k8sP;=`<%l8^k8yUO!_5|!_!`9]!`#P5|#Q;'S5|;'S;=`8W<%lO5|k9`VO!_5|!_!`9u!`#P5|#P#Q6`#Q;'S5|;'S;=`8W<%lO5|k9xTO#P5|#P#Q:X#Q;'S5|;'S;=`8W<%lO5|k:^V#ykO!_6x!_!`:s!`#P6x#P#Q;w#Q;'S6x;'S;=`=i<%lO6xk:vVO!_8^!_!`;]!`#P8^#P#Q7t#Q;'S8^;'S;=`8p<%lO8^k;`TO#P8^#P#Q;o#Q;'S8^;'S;=`8p<%lO8^k;tP#yk!_!`7zk;zVO!_7b!_!`:s!`#P7b#P#QR#Q;'S=o;'S;=`>}<%lO=ok>UVO!_>k!_!`?T!`#P>k#P#Q@X#Q;'S>k;'S;=`Ao<%lO>kk>nTO#P=o#P#Q7z#Q;'S=o;'S;=`>}<%lO=ok?QP;=`<%l=ok?WTO#P?g#P#Q@P#Q;'S?g;'S;=`?y<%lO?gk?jTO#P?g#P#Q7z#Q;'S?g;'S;=`?y<%lO?gk?|P;=`<%l?gk@UP#yk!_!`8Qk@[VO!_=o!_!`@q!`#P=o#P#QAu#Q;'S=o;'S;=`>}<%lO=ok@tTO#P=o#P#QAT#Q;'S=o;'S;=`>}<%lO=okAYV#ykO!_>k!_!`?T!`#P>k#P#Q@X#Q;'S>k;'S;=`Ao<%lO>kkArP;=`<%l>kkAxVO!_?g!_!`?T!`#P?g#P#QAu#Q;'S?g;'S;=`?y<%lO?goBdT$cSO#PBs#P#QCV#Q;'SBs;'S;=`Ci<%lOBskBvTO#PBs#P#QCV#Q;'SBs;'S;=`Ci<%lOBskCYTO#PBs#P#Q%b#Q;'SBs;'S;=`Ci<%lOBskClP;=`<%lBsoCtPjP#P#QCwnC|O$dn~DRO$a~~DWOq~~D]O$U~~DbOu~~DgP$W~!_!`$m", tokenizers: [0, 1, 2, 3, 4], - topRules: {"Chunk":[0,2]}, - dynamicPrecedences: {"140":1}, - specialized: [{term: 131, get: (value) => spec_identifier[value] || -1}], - tokenPrec: 4795 -}) + topRules: { Chunk: [0, 2] }, + dynamicPrecedences: { 140: 1 }, + specialized: [{ term: 131, get: (value) => spec_identifier[value] || -1 }], + tokenPrec: 4795, +}); diff --git a/client/space_lua/parse-lua.terms.js b/client/space_lua/parse-lua.terms.js index 2848533a..ea56ff07 100644 --- a/client/space_lua/parse-lua.terms.js +++ b/client/space_lua/parse-lua.terms.js @@ -1,6 +1,5 @@ // This file was generated by lezer-generator. You probably shouldn't edit it. -export const - Comment = 1, +export const Comment = 1, Chunk = 2, Block = 3, Label = 5, @@ -36,4 +35,4 @@ export const AttNameList = 110, AttName = 111, Attrib = 112, - ReturnStatement = 113 + ReturnStatement = 113; diff --git a/client/space_lua/parse.ts b/client/space_lua/parse.ts index a4885a19..c31c8629 100644 --- a/client/space_lua/parse.ts +++ b/client/space_lua/parse.ts @@ -166,9 +166,10 @@ function expressionHasFunctionDef(e: LuaExpression): boolean { case "AggregateCall": return ( expressionHasFunctionDef((e as any).call) || - ((e as any).orderBy as LuaOrderBy[]).some((ob) => - expressionHasFunctionDef(ob.expression) || - (ob.using && typeof ob.using !== "string") + ((e as any).orderBy as LuaOrderBy[]).some( + (ob) => + expressionHasFunctionDef(ob.expression) || + (ob.using && typeof ob.using !== "string"), ) ); default: diff --git a/client/space_lua/query_collection.ts b/client/space_lua/query_collection.ts index 25e5d806..757ae129 100644 --- a/client/space_lua/query_collection.ts +++ b/client/space_lua/query_collection.ts @@ -265,7 +265,7 @@ function containsAggregate(expr: LuaExpression): boolean { // Wrap a value for select result tables so that the column key survives // in the `LuaTable` function selectVal(v: LuaValue): LuaValue { - return (v === null || v === undefined) ? LIQ_NULL : v; + return v === null || v === undefined ? LIQ_NULL : v; } /** @@ -343,9 +343,9 @@ export async function evalExpressionWithAggregates( outerEnv, sf, evalExpression, - config, - undefined, - fc.orderBy, + config, + undefined, + fc.orderBy, ); } }