From 8c0694ba157abe39bf1d03a29c28c97495c116c1 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Fri, 12 Nov 2021 09:43:23 +0100 Subject: [PATCH 01/17] Fixes #101 --- compiler/surface/parser.messages | 350 +++++++----------- compiler/surface/parser.mly | 19 +- .../test_bool/good/test_precedence.catala_en | 9 + 3 files changed, 157 insertions(+), 221 deletions(-) create mode 100644 tests/test_bool/good/test_precedence.catala_en diff --git a/compiler/surface/parser.messages b/compiler/surface/parser.messages index 6e3510d3..09d9e0f2 100644 --- a/compiler/surface/parser.messages +++ b/compiler/surface/parser.messages @@ -1,6 +1,6 @@ source_file: BEGIN_CODE DECLARATION ENUM CONSTRUCTOR COLON ALT CONSTRUCTOR CONTENT TEXT YEAR ## -## Ends in an error in state: 337. +## Ends in an error in state: 341. ## ## nonempty_list(enum_decl_line) -> enum_decl_line . [ SCOPE END_CODE DECLARATION ] ## nonempty_list(enum_decl_line) -> enum_decl_line . nonempty_list(enum_decl_line) [ SCOPE END_CODE DECLARATION ] @@ -13,7 +13,7 @@ expected another enum case, or a new declaration or scope use source_file: BEGIN_CODE DECLARATION ENUM CONSTRUCTOR COLON ALT CONSTRUCTOR CONTENT YEAR ## -## Ends in an error in state: 332. +## Ends in an error in state: 336. ## ## enum_decl_line_payload -> CONTENT . typ [ SCOPE END_CODE DECLARATION ALT ] ## @@ -25,7 +25,7 @@ expected a content type source_file: BEGIN_CODE DECLARATION ENUM CONSTRUCTOR COLON ALT CONSTRUCTOR YEAR ## -## Ends in an error in state: 331. +## Ends in an error in state: 335. ## ## enum_decl_line -> ALT constructor . option(enum_decl_line_payload) [ SCOPE END_CODE DECLARATION ALT ] ## @@ -37,7 +37,7 @@ expected a payload for your enum case, or another case or declaration source_file: BEGIN_CODE DECLARATION ENUM CONSTRUCTOR COLON ALT YEAR ## -## Ends in an error in state: 330. +## Ends in an error in state: 334. ## ## enum_decl_line -> ALT . constructor option(enum_decl_line_payload) [ SCOPE END_CODE DECLARATION ALT ] ## @@ -49,7 +49,7 @@ expected the name of an enum case source_file: BEGIN_CODE DECLARATION ENUM CONSTRUCTOR COLON YEAR ## -## Ends in an error in state: 329. +## Ends in an error in state: 333. ## ## code_item -> DECLARATION ENUM constructor COLON . nonempty_list(enum_decl_line) [ SCOPE END_CODE DECLARATION ] ## @@ -61,7 +61,7 @@ expected an enum case source_file: BEGIN_CODE DECLARATION ENUM CONSTRUCTOR YEAR ## -## Ends in an error in state: 328. +## Ends in an error in state: 332. ## ## code_item -> DECLARATION ENUM constructor . COLON nonempty_list(enum_decl_line) [ SCOPE END_CODE DECLARATION ] ## @@ -73,7 +73,7 @@ expected a colon source_file: BEGIN_CODE DECLARATION ENUM YEAR ## -## Ends in an error in state: 327. +## Ends in an error in state: 331. ## ## code_item -> DECLARATION ENUM . constructor COLON nonempty_list(enum_decl_line) [ SCOPE END_CODE DECLARATION ] ## @@ -85,7 +85,7 @@ expected the name of your enum source_file: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR COLON CONTEXT IDENT CONDITION YEAR ## -## Ends in an error in state: 322. +## Ends in an error in state: 326. ## ## scope_decl_item -> CONTEXT ident CONDITION . option(struct_scope_func) [ SCOPE END_CODE DECLARATION CONTEXT ] ## @@ -97,7 +97,7 @@ expected the next context item or a dependency declaration for this item source_file: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR COLON CONTEXT IDENT CONTENT TEXT YEAR ## -## Ends in an error in state: 320. +## Ends in an error in state: 324. ## ## scope_decl_item -> CONTEXT ident CONTENT typ . option(struct_scope_func) [ SCOPE END_CODE DECLARATION CONTEXT ] ## @@ -109,7 +109,7 @@ expected the next context item or a dependency declaration for this item source_file: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR COLON CONTEXT IDENT CONTENT YEAR ## -## Ends in an error in state: 319. +## Ends in an error in state: 323. ## ## scope_decl_item -> CONTEXT ident CONTENT . typ option(struct_scope_func) [ SCOPE END_CODE DECLARATION CONTEXT ] ## @@ -121,7 +121,7 @@ expected the type of this context item source_file: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR COLON CONTEXT IDENT SCOPE CONSTRUCTOR YEAR ## -## Ends in an error in state: 324. +## Ends in an error in state: 328. ## ## nonempty_list(scope_decl_item) -> scope_decl_item . [ SCOPE END_CODE DECLARATION ] ## nonempty_list(scope_decl_item) -> scope_decl_item . nonempty_list(scope_decl_item) [ SCOPE END_CODE DECLARATION ] @@ -134,7 +134,7 @@ expected another scope context item or the end of the scope declaration source_file: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR COLON CONTEXT IDENT SCOPE YEAR ## -## Ends in an error in state: 317. +## Ends in an error in state: 321. ## ## scope_decl_item -> CONTEXT ident SCOPE . constructor [ SCOPE END_CODE DECLARATION CONTEXT ] ## @@ -146,7 +146,7 @@ expected the name of the subscope for this context item source_file: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR COLON CONTEXT IDENT YEAR ## -## Ends in an error in state: 316. +## Ends in an error in state: 320. ## ## scope_decl_item -> CONTEXT ident . CONTENT typ option(struct_scope_func) [ SCOPE END_CODE DECLARATION CONTEXT ] ## scope_decl_item -> CONTEXT ident . SCOPE constructor [ SCOPE END_CODE DECLARATION CONTEXT ] @@ -160,7 +160,7 @@ expected the kind of this context item: is it a condition, a sub-scope or a data source_file: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR COLON CONTEXT YEAR ## -## Ends in an error in state: 315. +## Ends in an error in state: 319. ## ## scope_decl_item -> CONTEXT . ident CONTENT typ option(struct_scope_func) [ SCOPE END_CODE DECLARATION CONTEXT ] ## scope_decl_item -> CONTEXT . ident SCOPE constructor [ SCOPE END_CODE DECLARATION CONTEXT ] @@ -174,7 +174,7 @@ expected the name of this new context item source_file: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR COLON YEAR ## -## Ends in an error in state: 314. +## Ends in an error in state: 318. ## ## code_item -> DECLARATION SCOPE constructor COLON . nonempty_list(scope_decl_item) [ SCOPE END_CODE DECLARATION ] ## @@ -186,7 +186,7 @@ expected a context item introduced by "context" source_file: BEGIN_CODE DECLARATION SCOPE CONSTRUCTOR YEAR ## -## Ends in an error in state: 313. +## Ends in an error in state: 317. ## ## code_item -> DECLARATION SCOPE constructor . COLON nonempty_list(scope_decl_item) [ SCOPE END_CODE DECLARATION ] ## @@ -198,7 +198,7 @@ expected a colon followed by the list of context items of this scope source_file: BEGIN_CODE DECLARATION SCOPE YEAR ## -## Ends in an error in state: 312. +## Ends in an error in state: 316. ## ## code_item -> DECLARATION SCOPE . constructor COLON nonempty_list(scope_decl_item) [ SCOPE END_CODE DECLARATION ] ## @@ -210,7 +210,7 @@ expected the name of the scope you are declaring source_file: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON CONDITION IDENT DEPENDS COLLECTION YEAR ## -## Ends in an error in state: 299. +## Ends in an error in state: 303. ## ## typ -> collection_marked . typ [ SCOPE END_CODE DEPENDS DECLARATION DATA CONTEXT CONDITION ALT ] ## @@ -222,7 +222,7 @@ expected a new struct data, or another declaration or scope use source_file: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON CONDITION IDENT DEPENDS TEXT YEAR ## -## Ends in an error in state: 307. +## Ends in an error in state: 311. ## ## list(struct_scope) -> struct_scope . list(struct_scope) [ SCOPE END_CODE DECLARATION ] ## @@ -234,7 +234,7 @@ expected a new struct data, or another declaration or scope use source_file: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON CONDITION IDENT DEPENDS YEAR ## -## Ends in an error in state: 303. +## Ends in an error in state: 307. ## ## struct_scope_func -> DEPENDS . typ [ SCOPE END_CODE DECLARATION DATA CONTEXT CONDITION ] ## @@ -246,7 +246,7 @@ expected the type of the parameter of this struct data function source_file: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON CONDITION IDENT YEAR ## -## Ends in an error in state: 302. +## Ends in an error in state: 306. ## ## struct_scope -> struct_scope_base . option(struct_scope_func) [ SCOPE END_CODE DECLARATION DATA CONDITION ] ## @@ -258,7 +258,7 @@ expected a new struct data, or another declaration or scope use source_file: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON CONDITION YEAR ## -## Ends in an error in state: 309. +## Ends in an error in state: 313. ## ## struct_scope_base -> condition_pos . ident [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ] ## @@ -270,7 +270,7 @@ expected the name of this struct condition source_file: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON DATA IDENT CONTENT YEAR ## -## Ends in an error in state: 295. +## Ends in an error in state: 299. ## ## struct_scope_base -> DATA ident CONTENT . typ [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ] ## @@ -282,7 +282,7 @@ expected the type of this struct data source_file: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON DATA IDENT YEAR ## -## Ends in an error in state: 294. +## Ends in an error in state: 298. ## ## struct_scope_base -> DATA ident . CONTENT typ [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ] ## @@ -294,7 +294,7 @@ expected the type of this struct data, introduced by the content keyword source_file: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON DATA YEAR ## -## Ends in an error in state: 293. +## Ends in an error in state: 297. ## ## struct_scope_base -> DATA . ident CONTENT typ [ SCOPE END_CODE DEPENDS DECLARATION DATA CONDITION ] ## @@ -306,7 +306,7 @@ expected the name of this struct data source_file: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR COLON YEAR ## -## Ends in an error in state: 292. +## Ends in an error in state: 296. ## ## code_item -> DECLARATION STRUCT constructor COLON . list(struct_scope) [ SCOPE END_CODE DECLARATION ] ## @@ -318,7 +318,7 @@ expected struct data or condition source_file: BEGIN_CODE DECLARATION STRUCT CONSTRUCTOR YEAR ## -## Ends in an error in state: 291. +## Ends in an error in state: 295. ## ## code_item -> DECLARATION STRUCT constructor . COLON list(struct_scope) [ SCOPE END_CODE DECLARATION ] ## @@ -330,7 +330,7 @@ expected a colon source_file: BEGIN_CODE DECLARATION STRUCT YEAR ## -## Ends in an error in state: 290. +## Ends in an error in state: 294. ## ## code_item -> DECLARATION STRUCT . constructor COLON list(struct_scope) [ SCOPE END_CODE DECLARATION ] ## @@ -342,7 +342,7 @@ expected the struct name source_file: BEGIN_CODE DECLARATION YEAR ## -## Ends in an error in state: 289. +## Ends in an error in state: 293. ## ## code_item -> DECLARATION . STRUCT constructor COLON list(struct_scope) [ SCOPE END_CODE DECLARATION ] ## code_item -> DECLARATION . SCOPE constructor COLON nonempty_list(scope_decl_item) [ SCOPE END_CODE DECLARATION ] @@ -356,7 +356,7 @@ expected the kind of the declaration (struct, scope or enum) source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION CARDINAL THEN ## -## Ends in an error in state: 259. +## Ends in an error in state: 263. ## ## nonempty_list(scope_item) -> scope_item . [ SCOPE END_CODE DECLARATION ] ## nonempty_list(scope_item) -> scope_item . nonempty_list(scope_item) [ SCOPE END_CODE DECLARATION ] @@ -373,18 +373,20 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION CARDINAL THEN ## In state 129, spurious reduction of production mult_expression -> base_expression ## In state 115, spurious reduction of production sum_expression -> mult_expression ## In state 139, spurious reduction of production compare_expression -> sum_expression -## In state 167, spurious reduction of production logical_expression -> compare_expression -## In state 196, spurious reduction of production expression -> logical_expression -## In state 253, spurious reduction of production assertion_base -> expression -## In state 254, spurious reduction of production assertion -> option(condition_consequence) assertion_base -## In state 258, spurious reduction of production scope_item -> ASSERTION assertion +## In state 166, spurious reduction of production logical_atom -> compare_expression +## In state 171, spurious reduction of production logical_or_expression -> logical_atom +## In state 167, spurious reduction of production logical_expression -> logical_or_expression +## In state 200, spurious reduction of production expression -> logical_expression +## In state 257, spurious reduction of production assertion_base -> expression +## In state 258, spurious reduction of production assertion -> option(condition_consequence) assertion_base +## In state 262, spurious reduction of production scope_item -> ASSERTION assertion ## expected a new scope use item source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION FIXED IDENT BY YEAR ## -## Ends in an error in state: 250. +## Ends in an error in state: 254. ## ## assertion -> FIXED qident BY . ident [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -396,7 +398,7 @@ expected the legislative text by which the value of the variable is fixed source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION FIXED IDENT WITH_V ## -## Ends in an error in state: 249. +## Ends in an error in state: 253. ## ## assertion -> FIXED qident . BY ident [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -407,15 +409,15 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION FIXED IDENT WITH_V ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 243, spurious reduction of production separated_nonempty_list(DOT,ident) -> ident -## In state 235, spurious reduction of production qident -> separated_nonempty_list(DOT,ident) +## In state 247, spurious reduction of production separated_nonempty_list(DOT,ident) -> ident +## In state 239, spurious reduction of production qident -> separated_nonempty_list(DOT,ident) ## expected the legislative text by which the value of the variable is fixed source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION FIXED YEAR ## -## Ends in an error in state: 248. +## Ends in an error in state: 252. ## ## assertion -> FIXED . qident BY ident [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -425,21 +427,10 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION FIXED YEAR expected the name of the variable that should be fixed -source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION UNDER_CONDITION TRUE CONSEQUENCE BY -## -## Ends in an error in state: 252. -## -## assertion -> option(condition_consequence) . assertion_base [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] -## -## The known suffix of the stack is as follows: -## option(condition_consequence) -## - -expected an expression for this definition under condition source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION UNDER_CONDITION TRUE THEN ## -## Ends in an error in state: 256. +## Ends in an error in state: 260. ## ## condition_consequence -> condition . CONSEQUENCE [ VERTICAL TRUE SUM NOT MONEY_AMOUNT MINUSMONEY MINUSDURATION MINUSDEC MINUS MINIMUM MAXIMUM MATCH MAP LSQUARE LPAREN INT_LITERAL IF IDENT FOR FILTER FILLED FALSE EXISTS DEFINED_AS DECIMAL_LITERAL CONTENT CONSTRUCTOR CARDINAL ] ## @@ -455,16 +446,18 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION UNDER_CONDITION TRUE T ## In state 129, spurious reduction of production mult_expression -> base_expression ## In state 115, spurious reduction of production sum_expression -> mult_expression ## In state 139, spurious reduction of production compare_expression -> sum_expression -## In state 167, spurious reduction of production logical_expression -> compare_expression -## In state 196, spurious reduction of production expression -> logical_expression -## In state 247, spurious reduction of production condition -> UNDER_CONDITION expression +## In state 166, spurious reduction of production logical_atom -> compare_expression +## In state 171, spurious reduction of production logical_or_expression -> logical_atom +## In state 167, spurious reduction of production logical_expression -> logical_or_expression +## In state 200, spurious reduction of production expression -> logical_expression +## In state 251, spurious reduction of production condition -> UNDER_CONDITION expression ## expected a consequence for this definition under condition source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION UNDER_CONDITION YEAR ## -## Ends in an error in state: 246. +## Ends in an error in state: 250. ## ## condition -> UNDER_CONDITION . expression [ CONSEQUENCE ] ## @@ -476,7 +469,7 @@ expected an expression for this condition source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION VARIES IDENT UNDER_CONDITION ## -## Ends in an error in state: 236. +## Ends in an error in state: 240. ## ## assertion -> VARIES qident . WITH_V base_expression option(variation_type) [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -487,15 +480,15 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION VARIES IDENT UNDER_CON ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 243, spurious reduction of production separated_nonempty_list(DOT,ident) -> ident -## In state 235, spurious reduction of production qident -> separated_nonempty_list(DOT,ident) +## In state 247, spurious reduction of production separated_nonempty_list(DOT,ident) -> ident +## In state 239, spurious reduction of production qident -> separated_nonempty_list(DOT,ident) ## expected an indication about what this variable varies with source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION VARIES IDENT WITH_V TRUE XOR ## -## Ends in an error in state: 238. +## Ends in an error in state: 242. ## ## assertion -> VARIES qident WITH_V base_expression . option(variation_type) [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -514,7 +507,7 @@ expected an indication about the variation sense of the variable, or a new scope source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION VARIES IDENT WITH_V YEAR ## -## Ends in an error in state: 237. +## Ends in an error in state: 241. ## ## assertion -> VARIES qident WITH_V . base_expression option(variation_type) [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -526,7 +519,7 @@ the variable varies with an expression that was expected here source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION VARIES YEAR ## -## Ends in an error in state: 234. +## Ends in an error in state: 238. ## ## assertion -> VARIES . qident WITH_V base_expression option(variation_type) [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -538,7 +531,7 @@ expecting the name of the varying variable source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON ASSERTION YEAR ## -## Ends in an error in state: 233. +## Ends in an error in state: 237. ## ## scope_item -> ASSERTION . assertion [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -550,7 +543,7 @@ expected an expression that shoud be asserted during execution source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON DEFINITION IDENT DEFINED_AS YEAR ## -## Ends in an error in state: 282. +## Ends in an error in state: 286. ## ## definition -> option(label) option(exception_to) DEFINITION qident option(definition_parameters) option(condition_consequence) DEFINED_AS . expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -562,7 +555,7 @@ expected an expression for the definition source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON DEFINITION IDENT OF IDENT DECREASING ## -## Ends in an error in state: 280. +## Ends in an error in state: 284. ## ## definition -> option(label) option(exception_to) DEFINITION qident option(definition_parameters) . option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -572,21 +565,10 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON DEFINITION IDENT OF IDENT DECREA expected a expression for defining this function, introduced by the defined as keyword -source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON DEFINITION IDENT UNDER_CONDITION CARDINAL CONSEQUENCE DECREASING -## -## Ends in an error in state: 281. -## -## definition -> option(label) option(exception_to) DEFINITION qident option(definition_parameters) option(condition_consequence) . DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] -## -## The known suffix of the stack is as follows: -## option(label) option(exception_to) DEFINITION qident option(definition_parameters) option(condition_consequence) -## - -expected an expression for the consequence of this definition under condition source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON DEFINITION IDENT WITH_V ## -## Ends in an error in state: 279. +## Ends in an error in state: 283. ## ## definition -> option(label) option(exception_to) DEFINITION qident . option(definition_parameters) option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -597,15 +579,15 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON DEFINITION IDENT WITH_V ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 243, spurious reduction of production separated_nonempty_list(DOT,ident) -> ident -## In state 235, spurious reduction of production qident -> separated_nonempty_list(DOT,ident) +## In state 247, spurious reduction of production separated_nonempty_list(DOT,ident) -> ident +## In state 239, spurious reduction of production qident -> separated_nonempty_list(DOT,ident) ## expected the defined as keyword to introduce the definition of this variable source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON DEFINITION YEAR ## -## Ends in an error in state: 278. +## Ends in an error in state: 282. ## ## definition -> option(label) option(exception_to) DEFINITION . qident option(definition_parameters) option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -617,7 +599,7 @@ expected the name of the variable you want to define source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON EXCEPTION IDENT YEAR ## -## Ends in an error in state: 265. +## Ends in an error in state: 269. ## ## definition -> option(label) option(exception_to) . DEFINITION qident option(definition_parameters) option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## rule -> option(label) option(exception_to) . RULE rule_expr option(condition_consequence) rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] @@ -630,7 +612,7 @@ expected a rule or a definition after the exception declaration source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON EXCEPTION YEAR ## -## Ends in an error in state: 262. +## Ends in an error in state: 266. ## ## exception_to -> EXCEPTION . option(ident) [ RULE DEFINITION ] ## @@ -642,7 +624,7 @@ expected the label to which the exception is referring back source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON LABEL IDENT DEFINED_AS ## -## Ends in an error in state: 261. +## Ends in an error in state: 265. ## ## definition -> option(label) . option(exception_to) DEFINITION qident option(definition_parameters) option(condition_consequence) DEFINED_AS expression [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## rule -> option(label) . option(exception_to) RULE rule_expr option(condition_consequence) rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] @@ -655,7 +637,7 @@ expected a rule or a definition after the label declaration source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON LABEL YEAR ## -## Ends in an error in state: 231. +## Ends in an error in state: 235. ## ## label -> LABEL . ident [ RULE EXCEPTION DEFINITION ] ## @@ -667,7 +649,7 @@ expected the name of the label source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON RULE IDENT DOT YEAR ## -## Ends in an error in state: 244. +## Ends in an error in state: 248. ## ## separated_nonempty_list(DOT,ident) -> ident DOT . separated_nonempty_list(DOT,ident) [ WITH_V UNDER_CONDITION OF NOT FILLED DEFINED_AS BY ] ## @@ -679,7 +661,7 @@ expected a struct field or a sub-scope context item after the dot source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON RULE IDENT NOT FALSE ## -## Ends in an error in state: 271. +## Ends in an error in state: 275. ## ## rule_consequence -> option(NOT) . FILLED [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -691,7 +673,7 @@ expected the filled keyword the this rule source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON RULE IDENT OF IDENT YEAR ## -## Ends in an error in state: 267. +## Ends in an error in state: 271. ## ## rule -> option(label) option(exception_to) RULE rule_expr . option(condition_consequence) rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -703,7 +685,7 @@ expected the expression of the rule source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON RULE IDENT OF YEAR ## -## Ends in an error in state: 274. +## Ends in an error in state: 278. ## ## definition_parameters -> OF . ident [ UNDER_CONDITION NOT FILLED DEFINED_AS ] ## @@ -713,21 +695,10 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON RULE IDENT OF YEAR expected the name of the parameter for this dependent variable -source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON RULE IDENT UNDER_CONDITION CARDINAL CONSEQUENCE FALSE -## -## Ends in an error in state: 268. -## -## rule -> option(label) option(exception_to) RULE rule_expr option(condition_consequence) . rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] -## -## The known suffix of the stack is as follows: -## option(label) option(exception_to) RULE rule_expr option(condition_consequence) -## - -expected filled or not filled for a rule consequence source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON RULE IDENT WITH_V ## -## Ends in an error in state: 273. +## Ends in an error in state: 277. ## ## rule_expr -> qident . option(definition_parameters) [ UNDER_CONDITION NOT FILLED ] ## @@ -738,15 +709,15 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON RULE IDENT WITH_V ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 243, spurious reduction of production separated_nonempty_list(DOT,ident) -> ident -## In state 235, spurious reduction of production qident -> separated_nonempty_list(DOT,ident) +## In state 247, spurious reduction of production separated_nonempty_list(DOT,ident) -> ident +## In state 239, spurious reduction of production qident -> separated_nonempty_list(DOT,ident) ## expected a condition or a consequence for this rule source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON RULE IDENT YEAR ## -## Ends in an error in state: 243. +## Ends in an error in state: 247. ## ## separated_nonempty_list(DOT,ident) -> ident . [ WITH_V UNDER_CONDITION OF NOT FILLED DEFINED_AS BY ] ## separated_nonempty_list(DOT,ident) -> ident . DOT separated_nonempty_list(DOT,ident) [ WITH_V UNDER_CONDITION OF NOT FILLED DEFINED_AS BY ] @@ -759,7 +730,7 @@ expected a condition or a consequence for this rule, or the rest of the variable source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON RULE YEAR ## -## Ends in an error in state: 266. +## Ends in an error in state: 270. ## ## rule -> option(label) option(exception_to) RULE . rule_expr option(condition_consequence) rule_consequence [ SCOPE RULE LABEL EXCEPTION END_CODE DEFINITION DECLARATION ASSERTION ] ## @@ -771,7 +742,7 @@ expected the name of the variable subject to the rule source_file: BEGIN_CODE SCOPE CONSTRUCTOR COLON YEAR ## -## Ends in an error in state: 230. +## Ends in an error in state: 234. ## ## code_item -> SCOPE constructor option(scope_use_condition) COLON . nonempty_list(scope_item) [ SCOPE END_CODE DECLARATION ] ## @@ -796,7 +767,7 @@ expected the keyword following cardinal to compute the number of elements in a s source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION CONSTRUCTOR CONTENT TRUE YEAR ## -## Ends in an error in state: 178. +## Ends in an error in state: 182. ## ## enum_inject_content -> CONTENT small_expression . [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RSQUARE RPAREN RBRACKET PLUSPLUS PLUSMONEY PLUSDURATION PLUSDEC PLUSDATE PLUS OR OF NOT_EQUAL MULTMONEY MULTDEC MULT MINUSMONEY MINUSDURATION MINUSDEC MINUSDATE MINUS LESSER_MONEY LESSER_EQUAL_MONEY LESSER_EQUAL_DURATION LESSER_EQUAL_DEC LESSER_EQUAL_DATE LESSER_EQUAL LESSER_DURATION LESSER_DEC LESSER_DATE LESSER LABEL INCREASING IN GREATER_MONEY GREATER_EQUAL_MONEY GREATER_EQUAL_DURATION GREATER_EQUAL_DEC GREATER_EQUAL_DATE GREATER_EQUAL GREATER_DURATION GREATER_DEC GREATER_DATE GREATER FOR EXCEPTION EQUAL END_CODE ELSE DIVMONEY DIVDURATION DIVDEC DIV DEFINITION DECREASING DECLARATION CONSEQUENCE COLON ASSERTION AND ALT ] ## small_expression -> small_expression . DOT option(terminated(constructor,DOT)) ident [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RSQUARE RPAREN RBRACKET PLUSPLUS PLUSMONEY PLUSDURATION PLUSDEC PLUSDATE PLUS OR OF NOT_EQUAL MULTMONEY MULTDEC MULT MINUSMONEY MINUSDURATION MINUSDEC MINUSDATE MINUS LESSER_MONEY LESSER_EQUAL_MONEY LESSER_EQUAL_DURATION LESSER_EQUAL_DEC LESSER_EQUAL_DATE LESSER_EQUAL LESSER_DURATION LESSER_DEC LESSER_DATE LESSER LABEL INCREASING IN GREATER_MONEY GREATER_EQUAL_MONEY GREATER_EQUAL_DURATION GREATER_EQUAL_DEC GREATER_EQUAL_DATE GREATER_EQUAL GREATER_DURATION GREATER_DEC GREATER_DATE GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIVMONEY DIVDURATION DIVDEC DIV DEFINITION DECREASING DECLARATION CONSEQUENCE COLON ASSERTION AND ALT ] @@ -809,7 +780,7 @@ the expression for the content of the enum case is already well-formed, expected source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION CONSTRUCTOR CONTENT YEAR ## -## Ends in an error in state: 177. +## Ends in an error in state: 181. ## ## enum_inject_content -> CONTENT . small_expression [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RSQUARE RPAREN RBRACKET PLUSPLUS PLUSMONEY PLUSDURATION PLUSDEC PLUSDATE PLUS OR OF NOT_EQUAL MULTMONEY MULTDEC MULT MINUSMONEY MINUSDURATION MINUSDEC MINUSDATE MINUS LESSER_MONEY LESSER_EQUAL_MONEY LESSER_EQUAL_DURATION LESSER_EQUAL_DEC LESSER_EQUAL_DATE LESSER_EQUAL LESSER_DURATION LESSER_DEC LESSER_DATE LESSER LABEL INCREASING IN GREATER_MONEY GREATER_EQUAL_MONEY GREATER_EQUAL_DURATION GREATER_EQUAL_DEC GREATER_EQUAL_DATE GREATER_EQUAL GREATER_DURATION GREATER_DEC GREATER_DATE GREATER FOR EXCEPTION EQUAL END_CODE ELSE DIVMONEY DIVDURATION DIVDEC DIV DEFINITION DECREASING DECLARATION CONSEQUENCE COLON ASSERTION AND ALT ] ## @@ -821,7 +792,7 @@ expected an expression for the content of this enum case source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION CONSTRUCTOR DOT CONSTRUCTOR ALL ## -## Ends in an error in state: 176. +## Ends in an error in state: 180. ## ## struct_or_enum_inject -> constructor option(preceded(DOT,constructor)) . option(enum_inject_content) [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RSQUARE RPAREN RBRACKET PLUSPLUS PLUSMONEY PLUSDURATION PLUSDEC PLUSDATE PLUS OR OF NOT_EQUAL MULTMONEY MULTDEC MULT MINUSMONEY MINUSDURATION MINUSDEC MINUSDATE MINUS LESSER_MONEY LESSER_EQUAL_MONEY LESSER_EQUAL_DURATION LESSER_EQUAL_DEC LESSER_EQUAL_DATE LESSER_EQUAL LESSER_DURATION LESSER_DEC LESSER_DATE LESSER LABEL INCREASING IN GREATER_MONEY GREATER_EQUAL_MONEY GREATER_EQUAL_DURATION GREATER_EQUAL_DEC GREATER_EQUAL_DATE GREATER_EQUAL GREATER_DURATION GREATER_DEC GREATER_DATE GREATER FOR EXCEPTION EQUAL END_CODE ELSE DIVMONEY DIVDURATION DIVDEC DIV DEFINITION DECREASING DECLARATION CONSEQUENCE COLON ASSERTION AND ALT ] ## @@ -843,17 +814,6 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION CONSTRUCTOR DOT YEAR expected the rest of the path after the dot -source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION CONSTRUCTOR LBRACKET ALT IDENT COLON CARDINAL ALT YEAR -## -## Ends in an error in state: 82. -## -## separated_nonempty_list(ALT,struct_content_field) -> struct_content_field ALT . separated_nonempty_list(ALT,struct_content_field) [ RBRACKET ] -## -## The known suffix of the stack is as follows: -## struct_content_field ALT -## - -expected the name of the structure field source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION CONSTRUCTOR LBRACKET ALT IDENT COLON CARDINAL THEN ## @@ -874,8 +834,10 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION CONSTRUCTOR LBRACKET A ## In state 129, spurious reduction of production mult_expression -> base_expression ## In state 115, spurious reduction of production sum_expression -> mult_expression ## In state 139, spurious reduction of production compare_expression -> sum_expression -## In state 167, spurious reduction of production logical_expression -> compare_expression -## In state 166, spurious reduction of production struct_content_field -> ident COLON logical_expression +## In state 166, spurious reduction of production logical_atom -> compare_expression +## In state 171, spurious reduction of production logical_or_expression -> logical_atom +## In state 167, spurious reduction of production logical_expression -> logical_or_expression +## In state 176, spurious reduction of production struct_content_field -> ident COLON logical_expression ## expected another structure field or the closing bracket @@ -943,7 +905,7 @@ expected a payload for the enum case constructor, or the rest of the expression source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION CONTENT MAXIMUM TEXT INIT YEAR ## -## Ends in an error in state: 183. +## Ends in an error in state: 187. ## ## aggregate_func -> CONTENT MAXIMUM typ_base INIT . primitive_expression [ FOR ] ## @@ -955,7 +917,7 @@ expected the initial expression for the maximum source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION CONTENT MAXIMUM TEXT YEAR ## -## Ends in an error in state: 182. +## Ends in an error in state: 186. ## ## aggregate_func -> CONTENT MAXIMUM typ_base . INIT primitive_expression [ FOR ] ## @@ -967,7 +929,7 @@ expected the "initial" keyword introducing the initial expression for the maximu source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION CONTENT MAXIMUM YEAR ## -## Ends in an error in state: 181. +## Ends in an error in state: 185. ## ## aggregate_func -> CONTENT MAXIMUM . typ_base INIT primitive_expression [ FOR ] ## @@ -1028,7 +990,7 @@ this is the start of an arg-maximum or arg-minimum expression source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION EXISTS IDENT IN CARDINAL SUCH THAT YEAR ## -## Ends in an error in state: 204. +## Ends in an error in state: 208. ## ## expression -> exists_prefix . expression [ THEN SEMICOLON SCOPE RULE RSQUARE RPAREN LABEL EXCEPTION END_CODE ELSE DEFINITION DECLARATION CONSEQUENCE COLON ASSERTION ] ## @@ -1040,7 +1002,7 @@ expected an expression for the existential test source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION EXISTS IDENT IN TRUE SUCH YEAR ## -## Ends in an error in state: 210. +## Ends in an error in state: 214. ## ## exists_prefix -> exists_marked ident IN primitive_expression SUCH . THAT [ VERTICAL TRUE SUM NOT MONEY_AMOUNT MINUSMONEY MINUSDURATION MINUSDEC MINUS MINIMUM MAXIMUM MATCH MAP LSQUARE LPAREN INT_LITERAL IF IDENT FOR FILTER FALSE EXISTS DECIMAL_LITERAL CONTENT CONSTRUCTOR CARDINAL ] ## @@ -1052,7 +1014,7 @@ expected a keyword to complete the "such that" construction source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION EXISTS IDENT IN TRUE XOR ## -## Ends in an error in state: 209. +## Ends in an error in state: 213. ## ## exists_prefix -> exists_marked ident IN primitive_expression . SUCH THAT [ VERTICAL TRUE SUM NOT MONEY_AMOUNT MINUSMONEY MINUSDURATION MINUSDEC MINUS MINIMUM MAXIMUM MATCH MAP LSQUARE LPAREN INT_LITERAL IF IDENT FOR FILTER FALSE EXISTS DECIMAL_LITERAL CONTENT CONSTRUCTOR CARDINAL ] ## @@ -1070,7 +1032,7 @@ expected a keyword to form the "such that" expression for the existential test source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION EXISTS IDENT IN YEAR ## -## Ends in an error in state: 208. +## Ends in an error in state: 212. ## ## exists_prefix -> exists_marked ident IN . primitive_expression SUCH THAT [ VERTICAL TRUE SUM NOT MONEY_AMOUNT MINUSMONEY MINUSDURATION MINUSDEC MINUS MINIMUM MAXIMUM MATCH MAP LSQUARE LPAREN INT_LITERAL IF IDENT FOR FILTER FALSE EXISTS DECIMAL_LITERAL CONTENT CONSTRUCTOR CARDINAL ] ## @@ -1082,7 +1044,7 @@ expected an expression that designates the set subject to the existential test source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION EXISTS IDENT YEAR ## -## Ends in an error in state: 207. +## Ends in an error in state: 211. ## ## exists_prefix -> exists_marked ident . IN primitive_expression SUCH THAT [ VERTICAL TRUE SUM NOT MONEY_AMOUNT MINUSMONEY MINUSDURATION MINUSDEC MINUS MINIMUM MAXIMUM MATCH MAP LSQUARE LPAREN INT_LITERAL IF IDENT FOR FILTER FALSE EXISTS DECIMAL_LITERAL CONTENT CONSTRUCTOR CARDINAL ] ## @@ -1094,7 +1056,7 @@ expected the "in" keyword to continue this existential test source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION EXISTS YEAR ## -## Ends in an error in state: 206. +## Ends in an error in state: 210. ## ## exists_prefix -> exists_marked . ident IN primitive_expression SUCH THAT [ VERTICAL TRUE SUM NOT MONEY_AMOUNT MINUSMONEY MINUSDURATION MINUSDEC MINUS MINIMUM MAXIMUM MATCH MAP LSQUARE LPAREN INT_LITERAL IF IDENT FOR FILTER FALSE EXISTS DECIMAL_LITERAL CONTENT CONSTRUCTOR CARDINAL ] ## @@ -1106,7 +1068,7 @@ expected an identifier that will designate the existential witness for the test source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION FOR ALL IDENT IN CARDINAL WE_HAVE YEAR ## -## Ends in an error in state: 197. +## Ends in an error in state: 201. ## ## expression -> forall_prefix . expression [ THEN SEMICOLON SCOPE RULE RSQUARE RPAREN LABEL EXCEPTION END_CODE ELSE DEFINITION DECLARATION CONSEQUENCE COLON ASSERTION ] ## @@ -1118,7 +1080,7 @@ expected an expression for the universal test source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION FOR ALL IDENT IN TRUE XOR ## -## Ends in an error in state: 201. +## Ends in an error in state: 205. ## ## forall_prefix -> for_all_marked ident IN primitive_expression . WE_HAVE [ VERTICAL TRUE SUM NOT MONEY_AMOUNT MINUSMONEY MINUSDURATION MINUSDEC MINUS MINIMUM MAXIMUM MATCH MAP LSQUARE LPAREN INT_LITERAL IF IDENT FOR FILTER FALSE EXISTS DECIMAL_LITERAL CONTENT CONSTRUCTOR CARDINAL ] ## @@ -1136,7 +1098,7 @@ expected the "we have" keyword for this universal test source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION FOR ALL IDENT IN YEAR ## -## Ends in an error in state: 200. +## Ends in an error in state: 204. ## ## forall_prefix -> for_all_marked ident IN . primitive_expression WE_HAVE [ VERTICAL TRUE SUM NOT MONEY_AMOUNT MINUSMONEY MINUSDURATION MINUSDEC MINUS MINIMUM MAXIMUM MATCH MAP LSQUARE LPAREN INT_LITERAL IF IDENT FOR FILTER FALSE EXISTS DECIMAL_LITERAL CONTENT CONSTRUCTOR CARDINAL ] ## @@ -1148,7 +1110,7 @@ expected the expression designating the set on which to perform the universal te source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION FOR ALL IDENT YEAR ## -## Ends in an error in state: 199. +## Ends in an error in state: 203. ## ## forall_prefix -> for_all_marked ident . IN primitive_expression WE_HAVE [ VERTICAL TRUE SUM NOT MONEY_AMOUNT MINUSMONEY MINUSDURATION MINUSDEC MINUS MINIMUM MAXIMUM MATCH MAP LSQUARE LPAREN INT_LITERAL IF IDENT FOR FILTER FALSE EXISTS DECIMAL_LITERAL CONTENT CONSTRUCTOR CARDINAL ] ## @@ -1160,7 +1122,7 @@ expected the "in" keyword for the rest of the universal test source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION FOR ALL YEAR ## -## Ends in an error in state: 198. +## Ends in an error in state: 202. ## ## forall_prefix -> for_all_marked . ident IN primitive_expression WE_HAVE [ VERTICAL TRUE SUM NOT MONEY_AMOUNT MINUSMONEY MINUSDURATION MINUSDEC MINUS MINIMUM MAXIMUM MATCH MAP LSQUARE LPAREN INT_LITERAL IF IDENT FOR FILTER FALSE EXISTS DECIMAL_LITERAL CONTENT CONSTRUCTOR CARDINAL ] ## @@ -1172,7 +1134,7 @@ expected an identifier for the bound variable of the universal test source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION FOR YEAR ## -## Ends in an error in state: 193. +## Ends in an error in state: 197. ## ## for_all_marked -> FOR . ALL [ IDENT ] ## @@ -1184,7 +1146,7 @@ expected the "all" keyword to mean the "for all" construction of the universal t source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION IF TRUE SEMICOLON ## -## Ends in an error in state: 212. +## Ends in an error in state: 216. ## ## expression -> IF expression . THEN expression ELSE base_expression [ THEN SEMICOLON SCOPE RULE RSQUARE RPAREN LABEL EXCEPTION END_CODE ELSE DEFINITION DECLARATION CONSEQUENCE COLON ASSERTION ] ## @@ -1200,63 +1162,20 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION IF TRUE SEMICOLON ## In state 129, spurious reduction of production mult_expression -> base_expression ## In state 115, spurious reduction of production sum_expression -> mult_expression ## In state 139, spurious reduction of production compare_expression -> sum_expression -## In state 167, spurious reduction of production logical_expression -> compare_expression -## In state 196, spurious reduction of production expression -> logical_expression +## In state 166, spurious reduction of production logical_atom -> compare_expression +## In state 171, spurious reduction of production logical_or_expression -> logical_atom +## In state 167, spurious reduction of production logical_expression -> logical_or_expression +## In state 200, spurious reduction of production expression -> logical_expression ## expected the "then" keyword as the conditional expression is complete -source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION IF TRUE THEN TRUE ELSE YEAR -## -## Ends in an error in state: 215. -## -## expression -> IF expression THEN expression ELSE . base_expression [ THEN SEMICOLON SCOPE RULE RSQUARE RPAREN LABEL EXCEPTION END_CODE ELSE DEFINITION DECLARATION CONSEQUENCE COLON ASSERTION ] -## -## The known suffix of the stack is as follows: -## IF expression THEN expression ELSE -## -expected an expression for the "else" branch of this conditional construction -source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION IF TRUE THEN TRUE THEN -## -## Ends in an error in state: 214. -## -## expression -> IF expression THEN expression . ELSE base_expression [ THEN SEMICOLON SCOPE RULE RSQUARE RPAREN LABEL EXCEPTION END_CODE ELSE DEFINITION DECLARATION CONSEQUENCE COLON ASSERTION ] -## -## The known suffix of the stack is as follows: -## IF expression THEN expression -## -## WARNING: This example involves spurious reductions. -## This implies that, although the LR(1) items shown above provide an -## accurate view of the past (what has been recognized so far), they -## may provide an INCOMPLETE view of the future (what was expected next). -## In state 51, spurious reduction of production primitive_expression -> small_expression -## In state 89, spurious reduction of production base_expression -> primitive_expression -## In state 129, spurious reduction of production mult_expression -> base_expression -## In state 115, spurious reduction of production sum_expression -> mult_expression -## In state 139, spurious reduction of production compare_expression -> sum_expression -## In state 167, spurious reduction of production logical_expression -> compare_expression -## In state 196, spurious reduction of production expression -> logical_expression -## - -expected the "else" branch of this conditional expression as the "then" branch is complete - -source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION IF TRUE THEN YEAR -## -## Ends in an error in state: 213. -## -## expression -> IF expression THEN . expression ELSE base_expression [ THEN SEMICOLON SCOPE RULE RSQUARE RPAREN LABEL EXCEPTION END_CODE ELSE DEFINITION DECLARATION CONSEQUENCE COLON ASSERTION ] -## -## The known suffix of the stack is as follows: -## IF expression THEN -## - -expected an expression the for the "then" branch of the conditiona source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION IF YEAR ## -## Ends in an error in state: 192. +## Ends in an error in state: 196. ## ## expression -> IF . expression THEN expression ELSE base_expression [ THEN SEMICOLON SCOPE RULE RSQUARE RPAREN LABEL EXCEPTION END_CODE ELSE DEFINITION DECLARATION CONSEQUENCE COLON ASSERTION ] ## @@ -1280,7 +1199,7 @@ expected a unit for this literal, or a valid operator to complete the expression source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION LPAREN TRUE THEN ## -## Ends in an error in state: 217. +## Ends in an error in state: 221. ## ## atomic_expression -> LPAREN expression . RPAREN [ XOR WITH WE_HAVE THEN SUCH SEMICOLON SCOPE RULE RSQUARE RPAREN RBRACKET PLUSPLUS PLUSMONEY PLUSDURATION PLUSDEC PLUSDATE PLUS OR OF NOT_EQUAL MULTMONEY MULTDEC MULT MINUSMONEY MINUSDURATION MINUSDEC MINUSDATE MINUS LESSER_MONEY LESSER_EQUAL_MONEY LESSER_EQUAL_DURATION LESSER_EQUAL_DEC LESSER_EQUAL_DATE LESSER_EQUAL LESSER_DURATION LESSER_DEC LESSER_DATE LESSER LABEL INCREASING IN GREATER_MONEY GREATER_EQUAL_MONEY GREATER_EQUAL_DURATION GREATER_EQUAL_DEC GREATER_EQUAL_DATE GREATER_EQUAL GREATER_DURATION GREATER_DEC GREATER_DATE GREATER FOR EXCEPTION EQUAL END_CODE ELSE DOT DIVMONEY DIVDURATION DIVDEC DIV DEFINITION DECREASING DECLARATION CONSEQUENCE COLON ASSERTION AND ALT ] ## @@ -1296,8 +1215,10 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION LPAREN TRUE THEN ## In state 129, spurious reduction of production mult_expression -> base_expression ## In state 115, spurious reduction of production sum_expression -> mult_expression ## In state 139, spurious reduction of production compare_expression -> sum_expression -## In state 167, spurious reduction of production logical_expression -> compare_expression -## In state 196, spurious reduction of production expression -> logical_expression +## In state 166, spurious reduction of production logical_atom -> compare_expression +## In state 171, spurious reduction of production logical_or_expression -> logical_atom +## In state 167, spurious reduction of production logical_expression -> logical_or_expression +## In state 200, spurious reduction of production expression -> logical_expression ## unmatched parenthesis that should have been closed by here @@ -1314,21 +1235,10 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION LPAREN YEAR expected an expression inside the parenthesis -source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION LSQUARE TRUE SEMICOLON YEAR -## -## Ends in an error in state: 224. -## -## separated_nonempty_list(SEMICOLON,expression) -> expression SEMICOLON . separated_nonempty_list(SEMICOLON,expression) [ RSQUARE ] -## -## The known suffix of the stack is as follows: -## expression SEMICOLON -## - -expected another element of the collection source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION LSQUARE TRUE THEN ## -## Ends in an error in state: 223. +## Ends in an error in state: 227. ## ## separated_nonempty_list(SEMICOLON,expression) -> expression . [ RSQUARE ] ## separated_nonempty_list(SEMICOLON,expression) -> expression . SEMICOLON separated_nonempty_list(SEMICOLON,expression) [ RSQUARE ] @@ -1345,8 +1255,10 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION LSQUARE TRUE THEN ## In state 129, spurious reduction of production mult_expression -> base_expression ## In state 115, spurious reduction of production sum_expression -> mult_expression ## In state 139, spurious reduction of production compare_expression -> sum_expression -## In state 167, spurious reduction of production logical_expression -> compare_expression -## In state 196, spurious reduction of production expression -> logical_expression +## In state 166, spurious reduction of production logical_atom -> compare_expression +## In state 171, spurious reduction of production logical_or_expression -> logical_atom +## In state 167, spurious reduction of production logical_expression -> logical_or_expression +## In state 200, spurious reduction of production expression -> logical_expression ## expected a semicolon or a right square bracket after the collection element @@ -1443,7 +1355,7 @@ expected the "for" keyword to introduce the identifier for the map predicate source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION MATCH TRUE WITH ALT CONSTRUCTOR COLON CARDINAL RBRACKET ## -## Ends in an error in state: 186. +## Ends in an error in state: 190. ## ## match_arms -> ALT match_arm . match_arms [ THEN SEMICOLON SCOPE RULE RSQUARE RPAREN LABEL EXCEPTION END_CODE ELSE DEFINITION DECLARATION CONSEQUENCE COLON ASSERTION ] ## @@ -1459,15 +1371,17 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION MATCH TRUE WITH ALT CO ## In state 129, spurious reduction of production mult_expression -> base_expression ## In state 115, spurious reduction of production sum_expression -> mult_expression ## In state 139, spurious reduction of production compare_expression -> sum_expression -## In state 167, spurious reduction of production logical_expression -> compare_expression -## In state 190, spurious reduction of production match_arm -> constructor_binding COLON logical_expression +## In state 166, spurious reduction of production logical_atom -> compare_expression +## In state 171, spurious reduction of production logical_or_expression -> logical_atom +## In state 167, spurious reduction of production logical_expression -> logical_or_expression +## In state 194, spurious reduction of production match_arm -> constructor_binding COLON logical_expression ## expected the "with pattern" keyword to complete the pattern matching expression source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION MATCH TRUE WITH ALT CONSTRUCTOR COLON YEAR ## -## Ends in an error in state: 189. +## Ends in an error in state: 193. ## ## match_arm -> constructor_binding COLON . logical_expression [ THEN SEMICOLON SCOPE RULE RSQUARE RPAREN LABEL EXCEPTION END_CODE ELSE DEFINITION DECLARATION CONSEQUENCE COLON ASSERTION ALT ] ## @@ -1479,7 +1393,7 @@ expected a correct expression for this match arm source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION MATCH TRUE WITH ALT CONSTRUCTOR XOR ## -## Ends in an error in state: 188. +## Ends in an error in state: 192. ## ## match_arm -> constructor_binding . COLON logical_expression [ THEN SEMICOLON SCOPE RULE RSQUARE RPAREN LABEL EXCEPTION END_CODE ELSE DEFINITION DECLARATION CONSEQUENCE COLON ASSERTION ALT ] ## @@ -1640,7 +1554,7 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION NOT YEAR ## ## Ends in an error in state: 164. ## -## logical_expression -> logical_unop . compare_expression [ THEN SEMICOLON SCOPE RULE RSQUARE RPAREN RBRACKET LABEL EXCEPTION END_CODE ELSE DEFINITION DECLARATION CONSEQUENCE COLON ASSERTION ALT ] +## logical_atom -> logical_unop . logical_atom [ XOR THEN SEMICOLON SCOPE RULE RSQUARE RPAREN RBRACKET OR LABEL EXCEPTION END_CODE ELSE DEFINITION DECLARATION CONSEQUENCE COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: ## logical_unop @@ -1662,7 +1576,7 @@ expected the "for" keyword to spell the aggregation source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION TRUE ASSERTION ## -## Ends in an error in state: 229. +## Ends in an error in state: 233. ## ## code_item -> SCOPE constructor option(scope_use_condition) . COLON nonempty_list(scope_item) [ SCOPE END_CODE DECLARATION ] ## @@ -1678,10 +1592,12 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION TRUE ASSERTION ## In state 129, spurious reduction of production mult_expression -> base_expression ## In state 115, spurious reduction of production sum_expression -> mult_expression ## In state 139, spurious reduction of production compare_expression -> sum_expression -## In state 167, spurious reduction of production logical_expression -> compare_expression -## In state 196, spurious reduction of production expression -> logical_expression -## In state 227, spurious reduction of production scope_use_condition -> UNDER_CONDITION expression -## In state 228, spurious reduction of production option(scope_use_condition) -> scope_use_condition +## In state 166, spurious reduction of production logical_atom -> compare_expression +## In state 171, spurious reduction of production logical_or_expression -> logical_atom +## In state 167, spurious reduction of production logical_expression -> logical_or_expression +## In state 200, spurious reduction of production expression -> logical_expression +## In state 231, spurious reduction of production scope_use_condition -> UNDER_CONDITION expression +## In state 232, spurious reduction of production option(scope_use_condition) -> scope_use_condition ## expected a colon after the scope use precondition @@ -1900,12 +1816,12 @@ source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION TRUE WITH YEAR source_file: BEGIN_CODE SCOPE CONSTRUCTOR UNDER_CONDITION TRUE XOR YEAR ## -## Ends in an error in state: 171. +## Ends in an error in state: 174. ## -## logical_expression -> compare_expression logical_op . logical_expression [ THEN SEMICOLON SCOPE RULE RSQUARE RPAREN RBRACKET LABEL EXCEPTION END_CODE ELSE DEFINITION DECLARATION CONSEQUENCE COLON ASSERTION ALT ] +## logical_or_expression -> logical_atom logical_or_op . logical_or_expression [ THEN SEMICOLON SCOPE RULE RSQUARE RPAREN RBRACKET LABEL EXCEPTION END_CODE ELSE DEFINITION DECLARATION CONSEQUENCE COLON ASSERTION AND ALT ] ## ## The known suffix of the stack is as follows: -## compare_expression logical_op +## logical_atom logical_or_op ## @@ -2033,7 +1949,7 @@ expected the name of the scope being used source_file: BEGIN_CODE YEAR ## -## Ends in an error in state: 355. +## Ends in an error in state: 359. ## ## source_file_item -> BEGIN_CODE . code END_CODE [ LAW_TEXT LAW_HEADING EOF BEGIN_METADATA BEGIN_DIRECTIVE BEGIN_CODE ] ## diff --git a/compiler/surface/parser.mly b/compiler/surface/parser.mly index c19588c4..a7002a3f 100644 --- a/compiler/surface/parser.mly +++ b/compiler/surface/parser.mly @@ -252,8 +252,10 @@ sum_expression: } | unop = sum_unop e = sum_expression { (Unop (unop, e), Pos.from_lpos $sloc) } -logical_op: +logical_and_op: | AND { (And, Pos.from_lpos $sloc) } + +logical_or_op: | OR { (Or, Pos.from_lpos $sloc) } | XOR { (Xor, Pos.from_lpos $sloc) } @@ -266,10 +268,19 @@ compare_expression: (Binop (binop, e1, e2), Pos.from_lpos $sloc) } -logical_expression: +logical_atom: | e = compare_expression { e } -| unop = logical_unop e = compare_expression { (Unop (unop, e), Pos.from_lpos $sloc) } -| e1 = compare_expression binop = logical_op e2 = logical_expression { +| unop = logical_unop e = logical_atom { (Unop (unop, e), Pos.from_lpos $sloc) } + +logical_or_expression: +| e = logical_atom { e } +| e1 = logical_atom binop = logical_or_op e2 = logical_or_expression { + (Binop (binop, e1, e2), Pos.from_lpos $sloc) +} + +logical_expression: +| e = logical_or_expression { e } +| e1 = logical_or_expression binop = logical_and_op e2 = logical_expression { (Binop (binop, e1, e2), Pos.from_lpos $sloc) } diff --git a/tests/test_bool/good/test_precedence.catala_en b/tests/test_bool/good/test_precedence.catala_en new file mode 100644 index 00000000..2394213c --- /dev/null +++ b/tests/test_bool/good/test_precedence.catala_en @@ -0,0 +1,9 @@ +## Article + +```catala +declaration scope TestBool: + context foo content boolean + +scope TestBool: + definition foo equals true and not false and false = false +``` From 29f12aa3cb75c8a3fab5e943a0640a2562ec1b62 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Fri, 12 Nov 2021 10:07:13 +0100 Subject: [PATCH 02/17] Building a JS version of the Catala compiler --- .nix/no-web.patch | 14 +++++++------- Makefile | 5 +++-- .../{catala_web.ml => catala_web_interpreter.ml} | 0 compiler/dune | 8 ++++---- generate_website_assets.sh | 2 +- 5 files changed, 15 insertions(+), 14 deletions(-) rename compiler/{catala_web.ml => catala_web_interpreter.ml} (100%) diff --git a/.nix/no-web.patch b/.nix/no-web.patch index 5db12f79..7bee9736 100644 --- a/.nix/no-web.patch +++ b/.nix/no-web.patch @@ -1,7 +1,7 @@ -diff --git a/compiler/catala_web.ml b/compiler/catala_web.ml +diff --git a/compiler/catala_web_interpreter.ml b/compiler/catala_web_interpreter.ml deleted file mode 100644 index 31d5289..0000000 ---- a/compiler/catala_web.ml +--- a/compiler/catala_web_interpreter.ml +++ /dev/null @@ -1,16 +0,0 @@ -open Driver @@ -27,17 +27,17 @@ index d192291..994c528 100644 @@ -10,16 +10,6 @@ (libraries calendar zarith zarith_stubs_js) (modules runtime)) - + -(executable -- (name catala_web) +- (name catala_web_interpreter) - (modes byte js) - (package catala) -- (public_name catala_web) -- (modules catala_web) +- (public_name catala_web_interpreter) +- (modules catala_web_interpreter) - (preprocess - (pps js_of_ocaml-ppx)) - (libraries catala.driver js_of_ocaml)) - (executable (name catala) - (modes native) \ No newline at end of file + (modes native) diff --git a/Makefile b/Makefile index d72e8e89..cb5b4a00 100644 --- a/Makefile +++ b/Makefile @@ -48,9 +48,10 @@ build: @$(MAKE) --no-print-directory format dune build $(COMPILER_DIR)/catala.exe -#> js_build : Builds the Web-compatible JS version of the Catala compiler +#> js_build : Builds the Web-compatible JS versions of the Catala compiler js_build: - dune build $(COMPILER_DIR)/catala_web.bc.js --profile release + dune build $(COMPILER_DIR)/catala.bc.js --profile release + dune build $(COMPILER_DIR)/catala_web_interpreter.bc.js --profile release #> doc : Generates the HTML OCaml documentation doc: diff --git a/compiler/catala_web.ml b/compiler/catala_web_interpreter.ml similarity index 100% rename from compiler/catala_web.ml rename to compiler/catala_web_interpreter.ml diff --git a/compiler/dune b/compiler/dune index d192291b..691779a0 100644 --- a/compiler/dune +++ b/compiler/dune @@ -11,18 +11,18 @@ (modules runtime)) (executable - (name catala_web) + (name catala_web_interpreter) (modes byte js) (package catala) - (public_name catala_web) - (modules catala_web) + (public_name catala_web_interpreter) + (modules catala_web_interpreter) (preprocess (pps js_of_ocaml-ppx)) (libraries catala.driver js_of_ocaml)) (executable (name catala) - (modes native) + (modes native js) (package catala) (modules catala) (public_name catala) diff --git a/generate_website_assets.sh b/generate_website_assets.sh index 8bfc1192..2826c0be 100755 --- a/generate_website_assets.sh +++ b/generate_website_assets.sh @@ -14,7 +14,7 @@ scp examples/tutorial_en/tutorial_en.html $1/ scp examples/tutoriel_fr/tutoriel_fr.html $1/ scp grammar.html $1/ scp catala.html $1/ -scp _build/default/compiler/catala_web.bc.js $1/playground/ +scp _build/default/compiler/catala_web_interpreter.bc.js $1/playground/ scp examples/tutorial_en/tutorial_en.catala_en $1/playground/ scp examples/tutoriel_fr/tutoriel_fr.catala_fr $1/playground/ cat examples/allocations_familiales/prologue.catala_fr > allocations_familiales.catala_fr From e0c01dd396e5b2580e5bd9156381ff97f15eeaaa Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Fri, 12 Nov 2021 10:13:11 +0100 Subject: [PATCH 03/17] Remove newline --- .nix/no-web.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nix/no-web.patch b/.nix/no-web.patch index 7bee9736..ad9a67c2 100644 --- a/.nix/no-web.patch +++ b/.nix/no-web.patch @@ -40,4 +40,4 @@ index d192291..994c528 100644 - (executable (name catala) - (modes native) + (modes native) \ No newline at end of file From a06cbe8614329eec9488acd3909a449cd0b0a1dc Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Fri, 26 Nov 2021 18:07:14 +0100 Subject: [PATCH 04/17] Fix literate programming problems --- compiler/literate/latex.ml | 15 ++++++++------- compiler/surface/lexer.cppo.ml | 1 - 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/compiler/literate/latex.ml b/compiler/literate/latex.ml index 8247ac45..fe32faa4 100644 --- a/compiler/literate/latex.ml +++ b/compiler/literate/latex.ml @@ -125,11 +125,10 @@ let rec law_structure_to_latex (language : C.backend_lang) (fmt : Format.formatt | A.LawHeading (heading, children) -> Format.fprintf fmt "\\%s*{%s}\n\n" (match heading.law_heading_precedence with - | 0 -> "chapter" - | 1 -> "section" - | 2 -> "subsection" - | 4 -> "subsubsection" - | 5 -> "paragraph" + | 0 -> "section" + | 1 -> "subsection" + | 2 -> "subsubsection" + | 3 -> "paragraph" | _ -> "subparagraph") (pre_latexify (Pos.unmark heading.law_heading_name)); Format.pp_print_list @@ -148,7 +147,8 @@ let rec law_structure_to_latex (language : C.backend_lang) (fmt : Format.formatt | A.CodeBlock (_, c, false) -> Format.fprintf fmt "\\begin{minted}[label={\\hspace*{\\fill}\\texttt{%s}},firstnumber=%d]{%s}\n\ - ```catala%s```\n\ + ```catala\n\ + %s```\n\ \\end{minted}" (pre_latexify (Filename.basename (Pos.get_file (Pos.get_position c)))) (Pos.get_start_line (Pos.get_position c) - 1) @@ -163,7 +163,8 @@ let rec law_structure_to_latex (language : C.backend_lang) (fmt : Format.formatt title=\\textcolor{black}{\\texttt{%s}},title after \ break=\\textcolor{black}{\\texttt{%s}},before skip=1em, after skip=1em]\n\ \\begin{minted}[numbersep=9mm, firstnumber=%d, label={\\hspace*{\\fill}\\texttt{%s}}]{%s}\n\ - ```catala%s```\n\ + ```catala\n\ + %s```\n\ \\end{minted}\n\ \\end{tcolorbox}" metadata_title metadata_title diff --git a/compiler/surface/lexer.cppo.ml b/compiler/surface/lexer.cppo.ml index dd52ac22..098e21da 100644 --- a/compiler/surface/lexer.cppo.ml +++ b/compiler/surface/lexer.cppo.ml @@ -461,7 +461,6 @@ let rec lex_code (lexbuf : lexbuf) : token = L.update_acc lexbuf; BY | MR_RULE -> - L.update_acc lexbuf; L.update_acc lexbuf; RULE | MR_EXISTS -> From 166baf42af623d0bd630dd33d0c98f8eac49a76f Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Sun, 28 Nov 2021 12:28:30 +0100 Subject: [PATCH 05/17] Error when duplicate labels --- compiler/surface/name_resolution.ml | 53 +++++++++++++------ .../bad/duplicate_labels.catala_en | 19 +++++++ .../output/duplicate_labels.catala_en.A.out | 15 ++++++ 3 files changed, 72 insertions(+), 15 deletions(-) create mode 100644 tests/test_exception/bad/duplicate_labels.catala_en create mode 100644 tests/test_exception/bad/output/duplicate_labels.catala_en.A.out diff --git a/compiler/surface/name_resolution.ml b/compiler/surface/name_resolution.ml index a923b265..021afea5 100644 --- a/compiler/surface/name_resolution.ml +++ b/compiler/surface/name_resolution.ml @@ -464,13 +464,25 @@ let process_rule (ctxt : context) (s_name : Scopelang.Ast.ScopeName.t) (r : Ast. (fun s_ctxt -> match s_ctxt with | None -> assert false (* should not happen *) - | Some s_ctxt -> - Some - { - s_ctxt with - label_idmap = - Desugared.Ast.IdentMap.add (Pos.unmark label) rule_name s_ctxt.label_idmap; - }) + | Some s_ctxt -> ( + match Desugared.Ast.IdentMap.find_opt (Pos.unmark label) s_ctxt.label_idmap with + | Some existing_label -> + Errors.raise_multispanned_error + "This label has already been given to a rule defining this variable, \ + please pick a new one." + [ + (Some "Duplicate label:", Pos.get_position label); + ( Some "Existing rule with same label:", + Pos.get_position (Desugared.Ast.RuleName.get_info existing_label) ); + ] + | None -> + Some + { + s_ctxt with + label_idmap = + Desugared.Ast.IdentMap.add (Pos.unmark label) rule_name + s_ctxt.label_idmap; + })) ctxt.scopes; } in @@ -537,14 +549,25 @@ let process_definition (ctxt : context) (s_name : Scopelang.Ast.ScopeName.t) (d (fun s_ctxt -> match s_ctxt with | None -> assert false (* should not happen *) - | Some s_ctxt -> - Some - { - s_ctxt with - label_idmap = - Desugared.Ast.IdentMap.add (Pos.unmark label) definition_name - s_ctxt.label_idmap; - }) + | Some s_ctxt -> ( + match Desugared.Ast.IdentMap.find_opt (Pos.unmark label) s_ctxt.label_idmap with + | Some existing_label -> + Errors.raise_multispanned_error + "This label has already been given to a rule defining this variable, \ + please pick a new one." + [ + (Some "Duplicate label:", Pos.get_position label); + ( Some "Existing rule with same label:", + Pos.get_position (Desugared.Ast.RuleName.get_info existing_label) ); + ] + | None -> + Some + { + s_ctxt with + label_idmap = + Desugared.Ast.IdentMap.add (Pos.unmark label) definition_name + s_ctxt.label_idmap; + })) ctxt.scopes; } in diff --git a/tests/test_exception/bad/duplicate_labels.catala_en b/tests/test_exception/bad/duplicate_labels.catala_en new file mode 100644 index 00000000..c48b7c10 --- /dev/null +++ b/tests/test_exception/bad/duplicate_labels.catala_en @@ -0,0 +1,19 @@ +## Test + +```catala +declaration scope A: + context x content integer + context y content integer + +scope A: + label base_x + definition x under condition y >= 0 consequence equals -1 + + label base_x + definition x under condition y <= 0 consequence equals 1 + + exception base_x + definition x under condition y = 0 consequence equals 0 + + definition y equals 0 +``` diff --git a/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out b/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out new file mode 100644 index 00000000..b3e434f4 --- /dev/null +++ b/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out @@ -0,0 +1,15 @@ +[ERROR] This label has already been given to a rule defining this variable, please pick a new one. + +Duplicate label: + --> test_exception/bad/duplicate_labels.catala_en + | +12 | label base_x + | ^^^^^^ + + Test + +Existing rule with same label: + --> test_exception/bad/duplicate_labels.catala_en + | +9 | label base_x + | ^^^^^^ + + Test From d2ae2d72eeb5be14a3800affd22fc831ccc41bfe Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Sun, 28 Nov 2021 12:28:30 +0100 Subject: [PATCH 06/17] Error when duplicate labels --- compiler/surface/name_resolution.ml | 53 +++++++++++++------ .../bad/duplicate_labels.catala_en | 19 +++++++ .../output/duplicate_labels.catala_en.A.out | 15 ++++++ 3 files changed, 72 insertions(+), 15 deletions(-) create mode 100644 tests/test_exception/bad/duplicate_labels.catala_en create mode 100644 tests/test_exception/bad/output/duplicate_labels.catala_en.A.out diff --git a/compiler/surface/name_resolution.ml b/compiler/surface/name_resolution.ml index a923b265..021afea5 100644 --- a/compiler/surface/name_resolution.ml +++ b/compiler/surface/name_resolution.ml @@ -464,13 +464,25 @@ let process_rule (ctxt : context) (s_name : Scopelang.Ast.ScopeName.t) (r : Ast. (fun s_ctxt -> match s_ctxt with | None -> assert false (* should not happen *) - | Some s_ctxt -> - Some - { - s_ctxt with - label_idmap = - Desugared.Ast.IdentMap.add (Pos.unmark label) rule_name s_ctxt.label_idmap; - }) + | Some s_ctxt -> ( + match Desugared.Ast.IdentMap.find_opt (Pos.unmark label) s_ctxt.label_idmap with + | Some existing_label -> + Errors.raise_multispanned_error + "This label has already been given to a rule defining this variable, \ + please pick a new one." + [ + (Some "Duplicate label:", Pos.get_position label); + ( Some "Existing rule with same label:", + Pos.get_position (Desugared.Ast.RuleName.get_info existing_label) ); + ] + | None -> + Some + { + s_ctxt with + label_idmap = + Desugared.Ast.IdentMap.add (Pos.unmark label) rule_name + s_ctxt.label_idmap; + })) ctxt.scopes; } in @@ -537,14 +549,25 @@ let process_definition (ctxt : context) (s_name : Scopelang.Ast.ScopeName.t) (d (fun s_ctxt -> match s_ctxt with | None -> assert false (* should not happen *) - | Some s_ctxt -> - Some - { - s_ctxt with - label_idmap = - Desugared.Ast.IdentMap.add (Pos.unmark label) definition_name - s_ctxt.label_idmap; - }) + | Some s_ctxt -> ( + match Desugared.Ast.IdentMap.find_opt (Pos.unmark label) s_ctxt.label_idmap with + | Some existing_label -> + Errors.raise_multispanned_error + "This label has already been given to a rule defining this variable, \ + please pick a new one." + [ + (Some "Duplicate label:", Pos.get_position label); + ( Some "Existing rule with same label:", + Pos.get_position (Desugared.Ast.RuleName.get_info existing_label) ); + ] + | None -> + Some + { + s_ctxt with + label_idmap = + Desugared.Ast.IdentMap.add (Pos.unmark label) definition_name + s_ctxt.label_idmap; + })) ctxt.scopes; } in diff --git a/tests/test_exception/bad/duplicate_labels.catala_en b/tests/test_exception/bad/duplicate_labels.catala_en new file mode 100644 index 00000000..c48b7c10 --- /dev/null +++ b/tests/test_exception/bad/duplicate_labels.catala_en @@ -0,0 +1,19 @@ +## Test + +```catala +declaration scope A: + context x content integer + context y content integer + +scope A: + label base_x + definition x under condition y >= 0 consequence equals -1 + + label base_x + definition x under condition y <= 0 consequence equals 1 + + exception base_x + definition x under condition y = 0 consequence equals 0 + + definition y equals 0 +``` diff --git a/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out b/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out new file mode 100644 index 00000000..b3e434f4 --- /dev/null +++ b/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out @@ -0,0 +1,15 @@ +[ERROR] This label has already been given to a rule defining this variable, please pick a new one. + +Duplicate label: + --> test_exception/bad/duplicate_labels.catala_en + | +12 | label base_x + | ^^^^^^ + + Test + +Existing rule with same label: + --> test_exception/bad/duplicate_labels.catala_en + | +9 | label base_x + | ^^^^^^ + + Test From 5619113ac4d3fedee3001cfc2a8a909142deee26 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Sun, 28 Nov 2021 12:46:49 +0100 Subject: [PATCH 07/17] Remove code duplication --- compiler/surface/name_resolution.ml | 96 ++++------------------------- 1 file changed, 11 insertions(+), 85 deletions(-) diff --git a/compiler/surface/name_resolution.ml b/compiler/surface/name_resolution.ml index 021afea5..32cc819d 100644 --- a/compiler/surface/name_resolution.ml +++ b/compiler/surface/name_resolution.ml @@ -442,90 +442,6 @@ let get_def_key (name : Ast.qident) (scope_uid : Scopelang.Ast.ScopeName.t) (ctx Desugared.Ast.ScopeDef.SubScopeVar (subscope_uid, x_uid) | _ -> Errors.raise_spanned_error "Structs are not handled yet" default_pos -let process_rule (ctxt : context) (s_name : Scopelang.Ast.ScopeName.t) (r : Ast.rule) : context = - (* Process the label map first *) - let ctxt = - match r.Ast.rule_label with - | None -> ctxt - | Some label -> - let rule_name = - Desugared.Ast.RuleName.fresh - (match r.rule_label with - | None -> - Pos.map_under_mark - (fun qident -> String.concat "." (List.map (fun i -> Pos.unmark i) qident)) - r.rule_name - | Some label -> label) - in - { - ctxt with - scopes = - Scopelang.Ast.ScopeMap.update s_name - (fun s_ctxt -> - match s_ctxt with - | None -> assert false (* should not happen *) - | Some s_ctxt -> ( - match Desugared.Ast.IdentMap.find_opt (Pos.unmark label) s_ctxt.label_idmap with - | Some existing_label -> - Errors.raise_multispanned_error - "This label has already been given to a rule defining this variable, \ - please pick a new one." - [ - (Some "Duplicate label:", Pos.get_position label); - ( Some "Existing rule with same label:", - Pos.get_position (Desugared.Ast.RuleName.get_info existing_label) ); - ] - | None -> - Some - { - s_ctxt with - label_idmap = - Desugared.Ast.IdentMap.add (Pos.unmark label) rule_name - s_ctxt.label_idmap; - })) - ctxt.scopes; - } - in - (* And update the map of default rulenames for unlabeled exceptions *) - match r.Ast.rule_exception_to with - (* If this definition is an exception, it cannot be a default definition *) - | UnlabeledException | ExceptionToLabel _ -> ctxt - (* If it is not an exception, we need to distinguish between several cases *) - | NotAnException -> - let def_key = - get_def_key (Pos.unmark r.rule_name) s_name ctxt (Pos.get_position r.rule_consequence) - in - let scope_ctxt = Scopelang.Ast.ScopeMap.find s_name ctxt.scopes in - let rulemap = - match Desugared.Ast.ScopeDefMap.find_opt def_key scope_ctxt.default_rulemap with - (* There was already a default definition for this key. If we need it, it is ambiguous *) - | Some old -> - Desugared.Ast.ScopeDefMap.add def_key - (Ambiguous - ([ Pos.get_position r.rule_name ] - @ - match old with - | Ambiguous old -> old - | Unique n -> [ Pos.get_position (Desugared.Ast.RuleName.get_info n) ])) - scope_ctxt.default_rulemap - (* No definition has been set yet for this key *) - | None -> ( - match r.Ast.rule_label with - (* This default definition has a label. This is not allowed for unlabeled exceptions *) - | Some _ -> - Desugared.Ast.ScopeDefMap.add def_key - (Ambiguous [ Pos.get_position r.rule_name ]) - scope_ctxt.default_rulemap - (* This is a possible default definition for this key. We create and store a fresh - rulename *) - | None -> - Desugared.Ast.ScopeDefMap.add def_key - (Unique (Desugared.Ast.RuleName.fresh (Pos.same_pos_as "default" r.rule_name))) - scope_ctxt.default_rulemap) - in - let new_scope_ctxt = { scope_ctxt with default_rulemap = rulemap } in - { ctxt with scopes = Scopelang.Ast.ScopeMap.add s_name new_scope_ctxt ctxt.scopes } - let process_definition (ctxt : context) (s_name : Scopelang.Ast.ScopeName.t) (d : Ast.definition) : context = (* Process the label map first *) @@ -615,7 +531,17 @@ let process_definition (ctxt : context) (s_name : Scopelang.Ast.ScopeName.t) (d let process_scope_use_item (s_name : Scopelang.Ast.ScopeName.t) (ctxt : context) (sitem : Ast.scope_use_item Pos.marked) : context = match Pos.unmark sitem with - | Rule r -> process_rule ctxt s_name r + | Rule r -> + process_definition ctxt s_name + { + definition_label = r.rule_label; + definition_exception_to = r.rule_exception_to; + definition_name = r.rule_name; + definition_parameter = r.rule_parameter; + definition_condition = r.rule_condition; + definition_expr = + Pos.map_under_mark (fun b -> Ast.Literal (Ast.LBool b)) r.rule_consequence; + } | Definition d -> process_definition ctxt s_name d | _ -> ctxt From 575d7f8e9b3595f8ea8f719528f8e24387f722b7 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Sun, 28 Nov 2021 12:46:49 +0100 Subject: [PATCH 08/17] Remove code duplication --- compiler/surface/name_resolution.ml | 96 ++++------------------------- 1 file changed, 11 insertions(+), 85 deletions(-) diff --git a/compiler/surface/name_resolution.ml b/compiler/surface/name_resolution.ml index 021afea5..32cc819d 100644 --- a/compiler/surface/name_resolution.ml +++ b/compiler/surface/name_resolution.ml @@ -442,90 +442,6 @@ let get_def_key (name : Ast.qident) (scope_uid : Scopelang.Ast.ScopeName.t) (ctx Desugared.Ast.ScopeDef.SubScopeVar (subscope_uid, x_uid) | _ -> Errors.raise_spanned_error "Structs are not handled yet" default_pos -let process_rule (ctxt : context) (s_name : Scopelang.Ast.ScopeName.t) (r : Ast.rule) : context = - (* Process the label map first *) - let ctxt = - match r.Ast.rule_label with - | None -> ctxt - | Some label -> - let rule_name = - Desugared.Ast.RuleName.fresh - (match r.rule_label with - | None -> - Pos.map_under_mark - (fun qident -> String.concat "." (List.map (fun i -> Pos.unmark i) qident)) - r.rule_name - | Some label -> label) - in - { - ctxt with - scopes = - Scopelang.Ast.ScopeMap.update s_name - (fun s_ctxt -> - match s_ctxt with - | None -> assert false (* should not happen *) - | Some s_ctxt -> ( - match Desugared.Ast.IdentMap.find_opt (Pos.unmark label) s_ctxt.label_idmap with - | Some existing_label -> - Errors.raise_multispanned_error - "This label has already been given to a rule defining this variable, \ - please pick a new one." - [ - (Some "Duplicate label:", Pos.get_position label); - ( Some "Existing rule with same label:", - Pos.get_position (Desugared.Ast.RuleName.get_info existing_label) ); - ] - | None -> - Some - { - s_ctxt with - label_idmap = - Desugared.Ast.IdentMap.add (Pos.unmark label) rule_name - s_ctxt.label_idmap; - })) - ctxt.scopes; - } - in - (* And update the map of default rulenames for unlabeled exceptions *) - match r.Ast.rule_exception_to with - (* If this definition is an exception, it cannot be a default definition *) - | UnlabeledException | ExceptionToLabel _ -> ctxt - (* If it is not an exception, we need to distinguish between several cases *) - | NotAnException -> - let def_key = - get_def_key (Pos.unmark r.rule_name) s_name ctxt (Pos.get_position r.rule_consequence) - in - let scope_ctxt = Scopelang.Ast.ScopeMap.find s_name ctxt.scopes in - let rulemap = - match Desugared.Ast.ScopeDefMap.find_opt def_key scope_ctxt.default_rulemap with - (* There was already a default definition for this key. If we need it, it is ambiguous *) - | Some old -> - Desugared.Ast.ScopeDefMap.add def_key - (Ambiguous - ([ Pos.get_position r.rule_name ] - @ - match old with - | Ambiguous old -> old - | Unique n -> [ Pos.get_position (Desugared.Ast.RuleName.get_info n) ])) - scope_ctxt.default_rulemap - (* No definition has been set yet for this key *) - | None -> ( - match r.Ast.rule_label with - (* This default definition has a label. This is not allowed for unlabeled exceptions *) - | Some _ -> - Desugared.Ast.ScopeDefMap.add def_key - (Ambiguous [ Pos.get_position r.rule_name ]) - scope_ctxt.default_rulemap - (* This is a possible default definition for this key. We create and store a fresh - rulename *) - | None -> - Desugared.Ast.ScopeDefMap.add def_key - (Unique (Desugared.Ast.RuleName.fresh (Pos.same_pos_as "default" r.rule_name))) - scope_ctxt.default_rulemap) - in - let new_scope_ctxt = { scope_ctxt with default_rulemap = rulemap } in - { ctxt with scopes = Scopelang.Ast.ScopeMap.add s_name new_scope_ctxt ctxt.scopes } - let process_definition (ctxt : context) (s_name : Scopelang.Ast.ScopeName.t) (d : Ast.definition) : context = (* Process the label map first *) @@ -615,7 +531,17 @@ let process_definition (ctxt : context) (s_name : Scopelang.Ast.ScopeName.t) (d let process_scope_use_item (s_name : Scopelang.Ast.ScopeName.t) (ctxt : context) (sitem : Ast.scope_use_item Pos.marked) : context = match Pos.unmark sitem with - | Rule r -> process_rule ctxt s_name r + | Rule r -> + process_definition ctxt s_name + { + definition_label = r.rule_label; + definition_exception_to = r.rule_exception_to; + definition_name = r.rule_name; + definition_parameter = r.rule_parameter; + definition_condition = r.rule_condition; + definition_expr = + Pos.map_under_mark (fun b -> Ast.Literal (Ast.LBool b)) r.rule_consequence; + } | Definition d -> process_definition ctxt s_name d | _ -> ctxt From d1b75b047b8da9a0095bfa7e2a5010490fa961b7 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Sun, 28 Nov 2021 13:09:44 +0100 Subject: [PATCH 09/17] Give a name to every rule and def, label or not --- compiler/desugared/dependency.ml | 18 ++++---- compiler/surface/ast.ml | 17 ++++++++ compiler/surface/desugaring.ml | 14 +------ compiler/surface/name_resolution.ml | 23 +--------- compiler/surface/parser.mly | 7 ++++ .../output/dangling_exception.catala_en.A.out | 2 +- .../output/duplicate_labels.catala_en.A.out | 12 +++--- .../output/exceptions_cycle.catala_en.A.out | 42 ++++++++++++------- 8 files changed, 73 insertions(+), 62 deletions(-) diff --git a/compiler/desugared/dependency.ml b/compiler/desugared/dependency.ml index 06d86776..7eaf7744 100644 --- a/compiler/desugared/dependency.ml +++ b/compiler/desugared/dependency.ml @@ -224,9 +224,9 @@ let build_exceptions_graph (def : Ast.rule Ast.RuleMap.t) (def_info : Ast.ScopeD else Errors.raise_spanned_error (Format.asprintf - "This rule has been declared as an exception to an incorrect label: \"%a\" is \ - not a label attached to a definition of \"%a\"" - Ast.RuleName.format_t exc_r Ast.ScopeDef.format_t def_info) + "This rule has been declared as an exception to an incorrect label: this label \ + is not attached to a definition of \"%a\"" + Ast.ScopeDef.format_t def_info) pos) def g in @@ -247,11 +247,15 @@ let check_for_exception_cycle (g : ExceptionsDependencies.t) : unit = (Format.asprintf "%a" Ast.RuleName.format_t v, Ast.RuleName.get_info v) in let succs = ExceptionsDependencies.succ_e g v in - let _, edge_pos, succ = List.find (fun (_, _, succ) -> List.mem succ scc) succs in - let succ_str = Format.asprintf "%a" Ast.RuleName.format_t succ in + let _, edge_pos, _ = List.find (fun (_, _, succ) -> List.mem succ scc) succs in [ - (Some ("Cycle exception " ^ var_str ^ ", declared:"), Pos.get_position var_info); - ( Some ("Used here in the definition of another cycle exception " ^ succ_str ^ ":"), + ( Some + ("Cyclic exception for definition of variable \"" ^ var_str + ^ "\", declared here:"), + Pos.get_position var_info ); + ( Some + ("Used here in the definition of another cyclic exception for defining \"" + ^ var_str ^ "\":"), edge_pos ); ]) scc)) diff --git a/compiler/surface/ast.ml b/compiler/surface/ast.ml index 0aa33f74..d09bba0e 100644 --- a/compiler/surface/ast.ml +++ b/compiler/surface/ast.ml @@ -325,6 +325,7 @@ type rule = { rule_parameter : ident Pos.marked option; rule_condition : expression Pos.marked option; rule_name : qident Pos.marked; + rule_id : Desugared.Ast.RuleName.t; [@opaque] rule_consequence : (bool[@opaque]) Pos.marked; } [@@deriving @@ -347,6 +348,7 @@ type definition = { definition_name : qident Pos.marked; definition_parameter : ident Pos.marked option; definition_condition : expression Pos.marked option; + definition_id : Desugared.Ast.RuleName.t; [@opaque] definition_expr : expression Pos.marked; } [@@deriving @@ -567,3 +569,18 @@ type program = { program_items : law_structure list; program_source_files : (str visitors { variety = "iter"; ancestors = [ "law_structure_iter" ]; name = "program_iter" }] type source_file = law_structure list + +(** {1 Helpers}*) + +(** Translates a {!type: rule} into the corresponding {!type: definition} *) +let rule_to_def (rule : rule) : definition = + let consequence_expr = Literal (LBool (Pos.unmark rule.rule_consequence)) in + { + definition_label = rule.rule_label; + definition_exception_to = rule.rule_exception_to; + definition_name = rule.rule_name; + definition_parameter = rule.rule_parameter; + definition_condition = rule.rule_condition; + definition_id = rule.rule_id; + definition_expr = (consequence_expr, Pos.get_position rule.rule_consequence); + } diff --git a/compiler/surface/desugaring.ml b/compiler/surface/desugaring.ml index f70d2e46..5b066a8b 100644 --- a/compiler/surface/desugaring.ml +++ b/compiler/surface/desugaring.ml @@ -999,23 +999,11 @@ let process_def (precond : Scopelang.Ast.expr Pos.marked Bindlib.box option) program_scopes = Scopelang.Ast.ScopeMap.add scope_uid scope_updated prgm.program_scopes; } -(** Translates a {!type: Surface.Ast.rule} into the corresponding {!type: Surface.Ast.definition} *) -let rule_to_def (rule : Ast.rule) : Ast.definition = - let consequence_expr = Ast.Literal (Ast.LBool (Pos.unmark rule.rule_consequence)) in - { - Ast.definition_label = rule.rule_label; - Ast.definition_exception_to = rule.rule_exception_to; - Ast.definition_name = rule.rule_name; - Ast.definition_parameter = rule.rule_parameter; - Ast.definition_condition = rule.rule_condition; - Ast.definition_expr = (consequence_expr, Pos.get_position rule.rule_consequence); - } - (** Translates a {!type: Surface.Ast.rule} from the surface language *) let process_rule (precond : Scopelang.Ast.expr Pos.marked Bindlib.box option) (scope : Scopelang.Ast.ScopeName.t) (ctxt : Name_resolution.context) (prgm : Desugared.Ast.program) (rule : Ast.rule) : Desugared.Ast.program = - let def = rule_to_def rule in + let def = Ast.rule_to_def rule in process_def precond scope ctxt prgm def (** Translates assertions *) diff --git a/compiler/surface/name_resolution.ml b/compiler/surface/name_resolution.ml index 32cc819d..a3383e36 100644 --- a/compiler/surface/name_resolution.ml +++ b/compiler/surface/name_resolution.ml @@ -449,15 +449,6 @@ let process_definition (ctxt : context) (s_name : Scopelang.Ast.ScopeName.t) (d match d.Ast.definition_label with | None -> ctxt | Some label -> - let definition_name = - Desugared.Ast.RuleName.fresh - (match d.definition_label with - | None -> - Pos.map_under_mark - (fun qident -> String.concat "." (List.map (fun i -> Pos.unmark i) qident)) - d.definition_name - | Some label -> label) - in { ctxt with scopes = @@ -481,7 +472,7 @@ let process_definition (ctxt : context) (s_name : Scopelang.Ast.ScopeName.t) (d { s_ctxt with label_idmap = - Desugared.Ast.IdentMap.add (Pos.unmark label) definition_name + Desugared.Ast.IdentMap.add (Pos.unmark label) d.Ast.definition_id s_ctxt.label_idmap; })) ctxt.scopes; @@ -531,17 +522,7 @@ let process_definition (ctxt : context) (s_name : Scopelang.Ast.ScopeName.t) (d let process_scope_use_item (s_name : Scopelang.Ast.ScopeName.t) (ctxt : context) (sitem : Ast.scope_use_item Pos.marked) : context = match Pos.unmark sitem with - | Rule r -> - process_definition ctxt s_name - { - definition_label = r.rule_label; - definition_exception_to = r.rule_exception_to; - definition_name = r.rule_name; - definition_parameter = r.rule_parameter; - definition_condition = r.rule_condition; - definition_expr = - Pos.map_under_mark (fun b -> Ast.Literal (Ast.LBool b)) r.rule_consequence; - } + | Rule r -> process_definition ctxt s_name (Ast.rule_to_def r) | Definition d -> process_definition ctxt s_name d | _ -> ctxt diff --git a/compiler/surface/parser.mly b/compiler/surface/parser.mly index a7002a3f..e896bef2 100644 --- a/compiler/surface/parser.mly +++ b/compiler/surface/parser.mly @@ -385,6 +385,9 @@ rule: rule_parameter = param_applied; rule_condition = cond; rule_name = name; + rule_id = Desugared.Ast.RuleName.fresh + (String.concat "." (List.map (fun i -> Pos.unmark i) (Pos.unmark name)), + Pos.from_lpos $sloc); rule_consequence = cons; }, $sloc) } @@ -413,6 +416,10 @@ definition: definition_name = name; definition_parameter = param; definition_condition = cond; + definition_id = + Desugared.Ast.RuleName.fresh + (String.concat "." (List.map (fun i -> Pos.unmark i) (Pos.unmark name)), + Pos.from_lpos $sloc); definition_expr = e; }, $sloc) } diff --git a/tests/test_exception/bad/output/dangling_exception.catala_en.A.out b/tests/test_exception/bad/output/dangling_exception.catala_en.A.out index 55c0b4dd..bf834106 100644 --- a/tests/test_exception/bad/output/dangling_exception.catala_en.A.out +++ b/tests/test_exception/bad/output/dangling_exception.catala_en.A.out @@ -1,4 +1,4 @@ -[ERROR] This rule has been declared as an exception to an incorrect label: "base_y" is not a label attached to a definition of "x" +[ERROR] This rule has been declared as an exception to an incorrect label: this label is not attached to a definition of "x" --> test_exception/bad/dangling_exception.catala_en | diff --git a/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out b/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out index b3e434f4..923ca506 100644 --- a/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out +++ b/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out @@ -8,8 +8,10 @@ Duplicate label: + Test Existing rule with same label: - --> test_exception/bad/duplicate_labels.catala_en - | -9 | label base_x - | ^^^^^^ - + Test + --> test_exception/bad/duplicate_labels.catala_en + | + 9 | label base_x + | ^^^^^^^^^^^ +10 | definition x under condition y >= 0 consequence equals -1 + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + diff --git a/tests/test_exception/bad/output/exceptions_cycle.catala_en.A.out b/tests/test_exception/bad/output/exceptions_cycle.catala_en.A.out index 86e265e2..34940634 100644 --- a/tests/test_exception/bad/output/exceptions_cycle.catala_en.A.out +++ b/tests/test_exception/bad/output/exceptions_cycle.catala_en.A.out @@ -1,41 +1,53 @@ [ERROR] Cyclic dependency detected between exceptions! -Cycle exception exception_exception_x, declared: +Cyclic exception for definition of variable "x", declared here: --> test_exception/bad/exceptions_cycle.catala_en | 16 | label exception_exception_x - | ^^^^^^^^^^^^^^^^^^^^^ - + Test + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ +17 | exception exception_x + | ^^^^^^^^^^^^^^^^^^^^^ +18 | definition x equals 2 + | ^^^^^^^^^^^^^^^^^^^^^^ + + -Used here in the definition of another cycle exception exception_x: +Used here in the definition of another cyclic exception for defining "x": --> test_exception/bad/exceptions_cycle.catala_en | 17 | exception exception_x | ^^^^^^^^^^^ + Test -Cycle exception exception_x, declared: +Cyclic exception for definition of variable "x", declared here: --> test_exception/bad/exceptions_cycle.catala_en | 12 | label exception_x - | ^^^^^^^^^^^ - + Test + | ^^^^^^^^^^^^^^^^ +13 | exception base_x + | ^^^^^^^^^^^^^^^^ +14 | definition x equals 1 + | ^^^^^^^^^^^^^^^^^^^^^^ + + -Used here in the definition of another cycle exception base_x: +Used here in the definition of another cyclic exception for defining "x": --> test_exception/bad/exceptions_cycle.catala_en | 13 | exception base_x | ^^^^^^ + Test -Cycle exception base_x, declared: - --> test_exception/bad/exceptions_cycle.catala_en - | -8 | label base_x - | ^^^^^^ - + Test +Cyclic exception for definition of variable "x", declared here: + --> test_exception/bad/exceptions_cycle.catala_en + | + 8 | label base_x + | ^^^^^^^^^^^ + 9 | exception exception_exception_x + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +10 | definition x equals 0 + | ^^^^^^^^^^^^^^^^^^^^^^ + + -Used here in the definition of another cycle exception exception_exception_x: +Used here in the definition of another cyclic exception for defining "x": --> test_exception/bad/exceptions_cycle.catala_en | 9 | exception exception_exception_x From 4137641c8ce35c1a4fe90906bd908244666a2e91 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Sun, 28 Nov 2021 13:16:21 +0100 Subject: [PATCH 10/17] Better error message --- compiler/surface/name_resolution.ml | 5 +++-- .../output/duplicate_labels.catala_en.A.out | 2 +- .../same_label_two_variables.catala_en.A.out | 17 ++++++++++++++++ .../bad/same_label_two_variables.catala_en | 20 +++++++++++++++++++ 4 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 tests/test_exception/bad/output/same_label_two_variables.catala_en.A.out create mode 100644 tests/test_exception/bad/same_label_two_variables.catala_en diff --git a/compiler/surface/name_resolution.ml b/compiler/surface/name_resolution.ml index a3383e36..b2b9f749 100644 --- a/compiler/surface/name_resolution.ml +++ b/compiler/surface/name_resolution.ml @@ -28,6 +28,7 @@ type unique_rulename = Ambiguous of Pos.t list | Unique of Desugared.Ast.RuleNam type scope_context = { var_idmap : Scopelang.Ast.ScopeVar.t Desugared.Ast.IdentMap.t; (** Scope variables *) label_idmap : Desugared.Ast.RuleName.t Desugared.Ast.IdentMap.t; + (** Set of rules attached to a label *) default_rulemap : unique_rulename Desugared.Ast.ScopeDefMap.t; (** What is the default rule to refer to for unnamed exceptions, if any *) sub_scopes_idmap : Scopelang.Ast.SubScopeName.t Desugared.Ast.IdentMap.t; @@ -460,8 +461,8 @@ let process_definition (ctxt : context) (s_name : Scopelang.Ast.ScopeName.t) (d match Desugared.Ast.IdentMap.find_opt (Pos.unmark label) s_ctxt.label_idmap with | Some existing_label -> Errors.raise_multispanned_error - "This label has already been given to a rule defining this variable, \ - please pick a new one." + "This label has already been given to another rule, please pick a new \ + one since labels should be unique." [ (Some "Duplicate label:", Pos.get_position label); ( Some "Existing rule with same label:", diff --git a/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out b/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out index 923ca506..ac8fed5f 100644 --- a/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out +++ b/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out @@ -1,4 +1,4 @@ -[ERROR] This label has already been given to a rule defining this variable, please pick a new one. +[ERROR] This label has already been given to another rule, please pick a new one since labels should be unique. Duplicate label: --> test_exception/bad/duplicate_labels.catala_en diff --git a/tests/test_exception/bad/output/same_label_two_variables.catala_en.A.out b/tests/test_exception/bad/output/same_label_two_variables.catala_en.A.out new file mode 100644 index 00000000..16412201 --- /dev/null +++ b/tests/test_exception/bad/output/same_label_two_variables.catala_en.A.out @@ -0,0 +1,17 @@ +[ERROR] This label has already been given to another rule, please pick a new one since labels should be unique. + +Duplicate label: + --> test_exception/bad/same_label_two_variables.catala_en + | +13 | label base + | ^^^^ + + Test + +Existing rule with same label: + --> test_exception/bad/same_label_two_variables.catala_en + | +10 | label base + | ^^^^^^^^^ +11 | definition x equals -1 + | ^^^^^^^^^^^^^^^^^^^^^^^ + + diff --git a/tests/test_exception/bad/same_label_two_variables.catala_en b/tests/test_exception/bad/same_label_two_variables.catala_en new file mode 100644 index 00000000..f1b2c227 --- /dev/null +++ b/tests/test_exception/bad/same_label_two_variables.catala_en @@ -0,0 +1,20 @@ +## Test + +```catala +declaration scope A: + context x content integer + context y content integer + context z content integer + +scope A: + label base + definition x equals -1 + + label base + definition y equals 1 + + exception base + definition x under condition z = 0 consequence equals 0 + + definition z equals 0 +``` From 07167ee9116b66639471cbad2d6da88a03b5041c Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Sun, 28 Nov 2021 13:16:21 +0100 Subject: [PATCH 11/17] Better error message --- compiler/surface/name_resolution.ml | 5 +++-- .../output/duplicate_labels.catala_en.A.out | 2 +- .../same_label_two_variables.catala_en.A.out | 17 ++++++++++++++++ .../bad/same_label_two_variables.catala_en | 20 +++++++++++++++++++ 4 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 tests/test_exception/bad/output/same_label_two_variables.catala_en.A.out create mode 100644 tests/test_exception/bad/same_label_two_variables.catala_en diff --git a/compiler/surface/name_resolution.ml b/compiler/surface/name_resolution.ml index 32cc819d..05c89f21 100644 --- a/compiler/surface/name_resolution.ml +++ b/compiler/surface/name_resolution.ml @@ -28,6 +28,7 @@ type unique_rulename = Ambiguous of Pos.t list | Unique of Desugared.Ast.RuleNam type scope_context = { var_idmap : Scopelang.Ast.ScopeVar.t Desugared.Ast.IdentMap.t; (** Scope variables *) label_idmap : Desugared.Ast.RuleName.t Desugared.Ast.IdentMap.t; + (** Set of rules attached to a label *) default_rulemap : unique_rulename Desugared.Ast.ScopeDefMap.t; (** What is the default rule to refer to for unnamed exceptions, if any *) sub_scopes_idmap : Scopelang.Ast.SubScopeName.t Desugared.Ast.IdentMap.t; @@ -469,8 +470,8 @@ let process_definition (ctxt : context) (s_name : Scopelang.Ast.ScopeName.t) (d match Desugared.Ast.IdentMap.find_opt (Pos.unmark label) s_ctxt.label_idmap with | Some existing_label -> Errors.raise_multispanned_error - "This label has already been given to a rule defining this variable, \ - please pick a new one." + "This label has already been given to another rule, please pick a new \ + one since labels should be unique." [ (Some "Duplicate label:", Pos.get_position label); ( Some "Existing rule with same label:", diff --git a/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out b/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out index b3e434f4..4c9610e2 100644 --- a/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out +++ b/tests/test_exception/bad/output/duplicate_labels.catala_en.A.out @@ -1,4 +1,4 @@ -[ERROR] This label has already been given to a rule defining this variable, please pick a new one. +[ERROR] This label has already been given to another rule, please pick a new one since labels should be unique. Duplicate label: --> test_exception/bad/duplicate_labels.catala_en diff --git a/tests/test_exception/bad/output/same_label_two_variables.catala_en.A.out b/tests/test_exception/bad/output/same_label_two_variables.catala_en.A.out new file mode 100644 index 00000000..16412201 --- /dev/null +++ b/tests/test_exception/bad/output/same_label_two_variables.catala_en.A.out @@ -0,0 +1,17 @@ +[ERROR] This label has already been given to another rule, please pick a new one since labels should be unique. + +Duplicate label: + --> test_exception/bad/same_label_two_variables.catala_en + | +13 | label base + | ^^^^ + + Test + +Existing rule with same label: + --> test_exception/bad/same_label_two_variables.catala_en + | +10 | label base + | ^^^^^^^^^ +11 | definition x equals -1 + | ^^^^^^^^^^^^^^^^^^^^^^^ + + diff --git a/tests/test_exception/bad/same_label_two_variables.catala_en b/tests/test_exception/bad/same_label_two_variables.catala_en new file mode 100644 index 00000000..f1b2c227 --- /dev/null +++ b/tests/test_exception/bad/same_label_two_variables.catala_en @@ -0,0 +1,20 @@ +## Test + +```catala +declaration scope A: + context x content integer + context y content integer + context z content integer + +scope A: + label base + definition x equals -1 + + label base + definition y equals 1 + + exception base + definition x under condition z = 0 consequence equals 0 + + definition z equals 0 +``` From d65bf985d9698e57dea9906b174b92dd311aff9c Mon Sep 17 00:00:00 2001 From: Jacob Chvatal Date: Sun, 28 Nov 2021 12:33:00 -0500 Subject: [PATCH 12/17] add menhirlib to dependencies --- default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/default.nix b/default.nix index 2531e987..f6450c4f 100644 --- a/default.nix +++ b/default.nix @@ -1,5 +1,5 @@ { lib, fetchFromGitHub, buildDunePackage, ansiterminal, sedlex_2, menhir -, unionfind, bindlib, cmdliner, re, zarith, zarith_stubs_js, ocamlgraph +, menhirLib, unionfind, bindlib, cmdliner, re, zarith, zarith_stubs_js, ocamlgraph , calendar, visitors, benchmark, js_of_ocaml, js_of_ocaml-ppx, camomile, cppo }: buildDunePackage rec { @@ -16,6 +16,7 @@ buildDunePackage rec { ansiterminal sedlex_2 menhir + menhirLib cmdliner re zarith From 095198f5acc181b22238971fab3a60f3c06d32f1 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Mon, 29 Nov 2021 10:33:43 +0100 Subject: [PATCH 13/17] Fix #161 --- examples/README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/examples/README.md b/examples/README.md index d242a668..306afa33 100644 --- a/examples/README.md +++ b/examples/README.md @@ -77,18 +77,19 @@ get the compiler up and working up to `make build`. You can also set up the syntax highlighting for your editor. Then, create the directory `examples/foo`. In there, create a master source -file `foo.catala` that will be the root of your Catala program. -You can then start programming in `foo.catala`, or split up your example -into multiple files. In the later case, `foo.catala` must only contain +file `foo.catala_en` (or `foo.catala_fr`, etc. depending on your language) +that will be the root of your Catala program. You can then start programming +in `foo.catala_en`, or split up your example into multiple files. In the later case, +`foo.catala_en` must only contain something like this: ```markdown # Master file -> Include: bar.catala +> Include: bar.catala_en ``` -where `examples/bar.catala` is another source file containing code for your +where `examples/bar.catala_en` is another source file containing code for your example. Make sure you start by including some content in the source files, like @@ -101,7 +102,7 @@ with the following contents: ```Makefile CATALA_LANG=en # or fr/pl if your source code is in French/Polish -SRC=foo.catala +SRC=foo.catala_en include ../Makefile.common.mk ``` From 82865c48dac78da81091df4ce7a2b35cf6a059e4 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Mon, 29 Nov 2021 10:36:33 +0100 Subject: [PATCH 14/17] Fix #162 --- compiler/literate/html.ml | 15 +- french_law/js/french_law.js | 4386 +++++++++-------- .../law_source/allocations_familiales.ml | 25 +- 3 files changed, 2280 insertions(+), 2146 deletions(-) diff --git a/compiler/literate/html.ml b/compiler/literate/html.ml index c183be22..72fb1914 100644 --- a/compiler/literate/html.ml +++ b/compiler/literate/html.ml @@ -47,18 +47,6 @@ let remove_cb_first_lines : string -> string = let remove_cb_last_lines : string -> string = R.substitute ~rex:(R.regexp "<.*\n*") ~subst:(function _ -> "") -(** Partial application allowing to substitute operators by their unicode representation. *) -let substitute_arithmetics_op : string -> string = - R.substitute ~rex:(R.regexp "!=|<=|>=|--|->|\\*|\\/") ~subst:(function - | "!=" -> "≠" - | "<=" -> "≤" - | ">=" -> "≥" - | "--" -> "—" - | "->" -> "→" - | "*" -> "×" - | "/" -> "÷" - | s -> s) - (** Usage: [wrap_html source_files custom_pygments language fmt wrapped] Prints an HTML complete page structure around the [wrapped] content. *) @@ -154,11 +142,10 @@ let rec law_structure_to_html (language : C.backend_lang) (fmt : Format.formatte let t = pre_html t in if t = "" then () else Format.fprintf fmt "

%s

" t | A.CodeBlock (_, c, metadata) -> - let pprinted_c = substitute_arithmetics_op (Pos.unmark c) in Format.fprintf fmt "
\n
%s
\n%s\n
" (if metadata then " code-metadata" else "") (Pos.get_file (Pos.get_position c)) - (pygmentize_code (Pos.same_pos_as ("```catala\n" ^ pprinted_c ^ "```") c) language) + (pygmentize_code (Pos.same_pos_as ("```catala\n" ^ Pos.unmark c ^ "```") c) language) | A.LawHeading (heading, children) -> let h_number = heading.law_heading_precedence + 1 in Format.fprintf fmt "%s\n" h_number diff --git a/french_law/js/french_law.js b/french_law/js/french_law.js index e1e91570..d347a9c7 100644 --- a/french_law/js/french_law.js +++ b/french_law/js/french_law.js @@ -1,136 +1,136 @@ -// Generated by js_of_ocaml 3.9.1 -(function(E){"use strict";var -iv=214,iu=" is too large for shifting.",jS="Invalid_argument",it="0.08",eg="Map.bal",jj=640,x="Code de la s\xc3\xa9curit\xc3\xa9 sociale",ky="Article L521-1",ji=123,jR="577500",er=152,jQ="%ni",kx=43200.,fS="ml_z_overflow",Z=86400.,aI=2020,jh=139,aX=0xff,f1=-12,jP=-45,eq="Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin",kw="559500",b1="Article 1",ga=122,is="582700",kv=992015837,k="0",eu="date_courante",jg="0.5",cf=128,ir="Sys_blocked_io",jf="fd ",iq=548,fR="Chapitre 2 : Champ d'application",ip="0.0588",R=248,eC=">",bn=153,ku=1027,io="montant_vers\xc3\xa9",je="enfants_\xc3\xa0_charge",jO="562800",b0="Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es",im=246,jN=555,ik=598,il="%u",jM="resetLog",kt=358,cL=2011,e="AllocationsFamiliales",jL=3268,ij=298,jd=633,ii="./securite_sociale_R.catala_fr",F="Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es",jc=108,ay="2",a$=127,dt=1024,X="1",et=133,eB="e",fQ="Montant de la base mensuelle des allocations familiales",ih=" : flags Open_rdonly and Open_wronly are not compatible",jb="ressources_m\xc3\xa9nage",ja="([^/]*)",ig="D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance",aC="-",ks=505,bW=803994948,id=216,ie=" : file already exists",kr="smic",i$="Article D521-3",jK=184,bG=0xffffff,cD=2012,kp=-43,kq=612,W="./securite_sociale_D.catala_fr",ep=86400,i_="Out_of_memory",ko="inf",f0="index out of bounds",eo="_bigarr02",kn="Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",i9=0xffffffff,f$=111,jI=2147483647,jJ=208,km=180,ic="Martinique",bj=0xffff,en=417088404,ib=12520,i8=400,kl=619,ia=-46,aM=3600,i7=143,G="Chapitre 1er : Allocations familiales",f4="AllocationFamilialesAvril2008",cx=2016,jH="retrieveLog",bi="\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3",kk="infinity",a4=1000,i6=142,u="",fP="^",bV=3600.,h$=86400000,i5=264,ak="Partie l\xc3\xa9gislative",cw=0x3f,dq=124,aW="./epilogue.catala_fr",fZ="Article L512-3",v="./decrets_divers.catala_fr",H="Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien",f_=112,h_="Match_failure",jG=140,bX="Montant des plafonds de ressources",O="Annexe",kj="enfants",em=135,ki="personne_charge_effective_permanente_est_parent",bh=2021,i4="enfant_le_plus_\xc3\xa2g\xc3\xa9",fY=252,bB=".",dh="montant_initial_majoration",bA="+",i3=0xf0,a6="12.",i2="Guadeloupe",f9=110,ac="PrestationsFamiliales",fX=116,h9="%li",i1=576,cH=2015,el=365,bF="prise_en_compte",dg="Smic",f8=-32,i0="avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012",bm=1023,iZ=-1080,al="./securite_sociale_L.catala_fr",p="./prologue.catala_fr",ef=2299161,iY=969837588,f3="nan",kh=605,h8=0xe0,iX=-1023,kg=117,jF=0xdfff,dx="compl\xc3\xa9ment_d\xc3\xa9gressif",fW="Article L755-12",bE="/",kf="Assert_failure",ee=2400000.5,ke="568400",iW=541,kd="0.32",f2=1073741823,kc=308,eA="r\xc3\xa9sidence",ed=250,dp=1582,jD=154,jE=513,h7=115,jC="src/time_Zone.ml",kb=1e14,iV="Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations",jB="Guyane",h6="allocations_familiales",fO=1255,fV="<",iT=196,iU=0x800,cG=255,aL=2019,fN="jsError",bg=0x8000,jA="Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat",Y="droit_ouvert_majoration",dw=146097,cK=256,iS=0.012,ka="Article L521-3",jz="End_of_file",iQ="M\xc3\xa9tropole",iR=156,jy="Failure",j$=367,h5=129,iP=204,dn="conditions_hors_\xc3\xa2ge",jx=218,iO=534,J="Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte",iN=562,j_=315,ez="EnfantLePlus\xc3\x82g\xc3\xa9",fU=0xf,ec=-48,jw=0xdc00,dm="montant_initial_m\xc3\xa9tropole_majoration",aq="camlinternalFormat.ml",iM="Division_by_zero",fT=520,jv="Sys_error",j8=647,j9="x",j7=335,cv=2017,cF="Article D521-2",ey="Article D755-5",fM="Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",bD=60.,cC=2014,j6="%d",h4=32082,bZ=1900,h3=121,j5="buffer.ml",iL=119,dl="montant_avec_garde_altern\xc3\xa9e_majoration",iK="version_avril_2008",bU=120,ek=127686388,ce=103,fL="16",cA=2013,cB=102,fK=512,j4=527,cJ=113,h2=0x7ff0,s="D\xc3\xa9crets divers",ej=101,cE=132,h1="0x",h0="D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance",cd=1e7,o="Prologue",dk=254,aT=100,ds="Article 7",iJ=" : flags Open_text and Open_binary are not compatible",ju="%Li",ex="3",V="Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples",hZ=105,j2="169.",j3=230,hY="Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",jt=591,bY=0.5,iI=584,aS="Article D521-1",iH="Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",iG=188,bH="Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses",ax="input",hX="str.ml",iF=160,hW="personne_charge_effective_permanente_remplit_titre_I",j1="prestations_familiales",dv="est_enfant_le_plus_\xc3\xa2g\xc3\xa9",iE="0.0463",hV="D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance",es="_z",jZ="Unix.Unix_error",j0="computeAllocationsFamiliales",iD="0.55",iC=109,dj="droit_ouvert",js=136,jY="Stack_overflow",a5="Interface du programme",df="Titre 5 : D\xc3\xa9partements d'outre-mer",iB=-97,jX="Not_found",di=1461,aA="InterfaceAllocationsFamiliales",fJ=151,I="D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte",cz="1.",jq=32044,jr=", ",hU=626,bk=2018,jp="static/",jW="Mayotte",f7=243,iA=2440588,jo="src/date.ml",jV=32752,ei=141,jU=280,aV="\xc3\x89pilogue",jT=1026,bl="Article L521-2",ew="Invalid integer: ",eh=2440587.5,jn=359,iz=155,jm=258,bC=" ",a7=0x80,jl="Undefined_recursive_module",az="output",iy=569,fI=376,ix=215,ev="src/calendar_builder.ml",cy="Montant du salaire minimum de croissance",f6="compare: functional value",fH="0.16",dr="droit_ouvert_forfaitaire",du="0.",eb=134,jk="%i",f5=114,cI=529348384,hT=176,iw=426;function -Eg(d,b,e,c,f){if(c<=b)for(var +// Generated by js_of_ocaml 3.11.0 +(function(A){"use strict";var +jw=214,jv=" is too large for shifting.",lq="Invalid_argument",ju="0.08",es="Map.bal",jt="@[",kE=640,w="Code de la s\xc3\xa9curit\xc3\xa9 sociale",ml="Article L521-1",kD=123,lp="577500",eG=152,lo="%ni",mk=43200.,gh="ml_z_overflow",mj="EMFILE",Z=86400.,aF=2020,kC=139,aY=0xff,ln="ENOMEM",gr=-12,lm=-45,eF="Titre 5 : Dispositions particuli\xc3\xa8res \xc3\xa0 la Guadeloupe, \xc3\xa0 la Guyane, \xc3\xa0 la Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy et \xc3\xa0 Saint-Martin",mi="559500",b3="Article 1",gH=122,js="582700",mh=992015837,ll="EPROTONOSUPPORT",k="0",lk="ENETRESET",mg="EACCES",eL="date_courante",lj="EINVAL",kB="0.5",li="EDOM",ci=128,jr="Sys_blocked_io",kA="fd ",lh="EFBIG",jq=548,gg="Chapitre 2 : Champ d'application",jp="0.0588",M=248,jo="EXDEV",eU=">",bs=153,mf=1027,me="EINPROGRESS",jn="montant_vers\xc3\xa9",kz="enfants_\xc3\xa0_charge",lg="562800",b2="Chapitre 5 : Prestations familiales et prestations assimil\xc3\xa9es",jm=246,lf=555,jk=598,jl="%u",le="resetLog",md=358,cR=2011,e="AllocationsFamiliales",ld=3268,ji=298,jj="EHOSTUNREACH",ky=633,jh="./securite_sociale_R.catala_fr",E="Livre 5 : Prestations familiales et prestations assimil\xc3\xa9es",kx=108,ay="2",ba=127,dA=1024,jg="@{",eE=-2147483648,X="1",eK=133,eT="e",gf="Montant de la base mensuelle des allocations familiales",jf=" : flags Open_rdonly and Open_wronly are not compatible",kw="ressources_m\xc3\xa9nage",je="D\xc3\xa9cret n\xc2\xb0 2019-1387 du 18 d\xc3\xa9cembre 2019 portant rel\xc3\xa8vement du salaire minimum de croissance",aB="-",mc=505,bY=803994948,kv="EAGAIN",gq=": Not a directory",jc=216,jd=" : file already exists",mb="smic",ku="Article D521-3",lc=184,bJ=0xffffff,cJ=2012,kt="EDESTADDRREQ",lb="EISCONN",l_=-43,l$=612,W="./securite_sociale_D.catala_fr",ma="EROFS",eD=86400,ks="Out_of_memory",l9="inf",gp="index out of bounds",l8="EPIPE",jb="ENOEXEC",eC="_bigarr02",l7="Circulaire interminist\xc3\xa9rielle N\xc2\xb0 DSS/SD2B/2017/352 du 22 d\xc3\xa9cembre 2017 relative \xc3\xa0 la revalorisation au 1er janvier 2018 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",kr=0xffffffff,gG=111,gv=2147483647,la=208,l6=180,ja="Martinique",k$=", characters ",i$="EPFNOSUPPORT",bn=0xffff,kq="EBUSY",eB=417088404,kp="ENETUNREACH",l5="ENOLCK",i9="ENOTTY",i_=12520,go=400,k_="ESHUTDOWN",l4=619,i6=-46,i7="(Program not linked with -g, cannot print stack backtrace)\n",i8="ENXIO",aL=3600,ko=143,G="Chapitre 1er : Allocations familiales",gu="AllocationFamilialesAvril2008",l3="ERANGE",cD=2016,k9="retrieveLog",bm="\xc3\xa2ge_minimum_alin\xc3\xa9a_1_l521_3",l2="infinity",a5=1000,kn=142,o="",i5="^",bX=3600.,i4=86400000,km=264,ak="Partie l\xc3\xa9gislative",cC=0x3f,dx=124,aX="./epilogue.catala_fr",gn="Article L512-3",u="./decrets_divers.catala_fr",H="Titre 2 : Prestations g\xc3\xa9n\xc3\xa9rales d'entretien",gF=112,i3="Match_failure",k8=140,bZ="Montant des plafonds de ressources",N="Annexe",l1="enfants",eA=135,l0="personne_charge_effective_permanente_est_parent",bk=2021,kl="enfant_le_plus_\xc3\xa2g\xc3\xa9",ez=252,kk="EPROTOTYPE",bl=".",dp="montant_initial_majoration",bF="+",kj="EINTR",i2="ESRCH",ki=0xf0,a7="12.",kh="Guadeloupe",lZ="ESOCKTNOSUPPORT",gE=110,ab="PrestationsFamiliales",gm=116,i1="%li",kf=576,kg="EALREADY",cN=2015,ey=365,bI="prise_en_compte",dn="Smic",gD=-32,ke="avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012",br=1023,kc=-1080,kd="EAFNOSUPPORT",al="./securite_sociale_L.catala_fr",q="./prologue.catala_fr",er=2299161,kb=969837588,gt="nan",lY=605,ka="ENFILE",i0=0xe0,j$=-1023,lX=117,k6="ECHILD",k7=0xdfff,dF="compl\xc3\xa9ment_d\xc3\xa9gressif",gl="Article L755-12",k5="ETOOMANYREFS",bp="/",lW="Assert_failure",eq=2400000.5,iZ="ENAMETOOLONG",lV="568400",j_=541,eJ="ENOTDIR",lU="0.32",gs=1073741823,k4="ETIMEDOUT",lT=308,eS="r\xc3\xa9sidence",iY="EMSGSIZE",ep=250,dw=1582,k2=154,k3=513,lS="ENOTCONN",iW=115,iX="ECONNREFUSED",k1="src/time_Zone.ml",lR=1e14,j9="Arr\xc3\xaat\xc3\xa9 du 14 d\xc3\xa9cembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du bar\xc3\xa8me applicable au recouvrement des indus et \xc3\xa0 la saisie des prestations",ex='"',kZ="Guyane",k0="EWOULDBLOCK",iV="allocations_familiales",ge=1255,gk="<",lQ="Fatal error: exception %s\n",j7=196,j8=0x800,cM=255,j6="EPERM",aK=2019,gd="jsError",bj=0x8000,kY="Partie r\xc3\xa9glementaire - D\xc3\xa9crets en Conseil d'Etat",Y="droit_ouvert_majoration",dE=146097,cQ=256,j5=0.012,lP="Article L521-3",kX="End_of_file",j3="M\xc3\xa9tropole",j4=156,kW="Failure",lN=367,lO="ENOSPC",iU=129,iT="\n",j2=204,dv="conditions_hors_\xc3\xa2ge",kV=218,eR="ENOENT",j1=534,K="Dispositions sp\xc3\xa9ciales relatives \xc3\xa0 Mayotte",j0=562,jZ="([^/]+)",lM=315,kU="ENETDOWN",eQ="EnfantLePlus\xc3\x82g\xc3\xa9",gj=0xf,lL="EOVERFLOW",eo=-48,kT=0xdc00,du="montant_initial_m\xc3\xa9tropole_majoration",gC="ENOTEMPTY",iS="EBADF",ap="camlinternalFormat.ml",jY="Division_by_zero",gi=520,iR="EMLINK",kS="Sys_error",lJ=647,lK="x",lI=335,cB=2017,cL="Article D521-2",eP="Article D755-5",gc="Titre 1 : Champ d'application - G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s",bH=60.,gb="EEXIST",cI=2014,gB="%d",kR="Printexc.handle_uncaught_exception",iQ=32082,b1=1900,iP=121,jX="EADDRNOTAVAIL",lH="buffer.ml",jW=119,dt="montant_avec_garde_altern\xc3\xa9e_majoration",jV="version_avril_2008",bW=120,ew=127686388,ch=103,lG="ENOBUFS",ga="16",cG=2013,cH=102,f$=512,lF=527,cP=113,iO=0x7ff0,s="D\xc3\xa9crets divers",ev=101,cK=132,iN="0x",iM="D\xc3\xa9cret n\xc2\xb0 2020-1598 du 16 d\xc3\xa9cembre 2020 portant rel\xc3\xa8vement du salaire minimum de croissance",cg=1e7,p="Prologue",ds=254,aT=100,jT="ECONNABORTED",jU="EFAULT",dz="Article 7",kQ="ENODEV",jS=" : flags Open_text and Open_binary are not compatible",kP="%Li",jQ="EIO",jR="EDEADLK",eO="3",V="Partie r\xc3\xa9glementaire - D\xc3\xa9crets simples",iL=105,lD="169.",lE=230,iK="Instruction interminist\xc3\xa9rielle n\xc2\xb0 DSS/SD2B/2018/279 du 17 d\xc3\xa9cembre 2018 relative \xc3\xa0 la revalorisation au 1er janvier 2019 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",kO=591,b0=0.5,jP=584,aS="Article D521-1",jO="Instruction interministerielle no DSS/SD2B/2019/261 du 18 d\xc3\xa9cembre 2019 relative \xc3\xa0 la revalorisation au 1er janvier 2020 des plafonds de ressources d\xe2\x80\x99attribution de certaines prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et \xc3\xa0 Mayotte",jN=188,bK="Livre 7 : R\xc3\xa9gimes divers - Dispositions diverses",ax="input",iJ="str.ml",jM=160,iI="personne_charge_effective_permanente_remplit_titre_I",lC="prestations_familiales",dD="est_enfant_le_plus_\xc3\xa2g\xc3\xa9",jL="0.0463",iH="D\xc3\xa9cret n\xc2\xb0 2018-1173 du 19 d\xc3\xa9cembre 2018 portant rel\xc3\xa8vement du salaire minimum de croissance",eI="_z",lB="computeAllocationsFamiliales",dC="Unix.Unix_error",jJ="0.55",jK="EHOSTDOWN",jI=109,dr="droit_ouvert",f_="mkdir",jH="ENOTSOCK",kN=136,lA="Stack_overflow",en=": No such file or directory",a6="Interface du programme",lz="/static/",dm="Titre 5 : D\xc3\xa9partements d'outre-mer",jG=-97,ly=253,lx="Not_found",dq=1461,aA="InterfaceAllocationsFamiliales",f9=151,J="D\xc3\xa9cret n\xc2\xb02002-423 du 29 mars 2002 relatif aux prestations familiales \xc3\xa0 Mayotte",cF="1.",kM=32044,eH=", ",iG=626,bo=2018,lw="Mayotte",jF="EOPNOTSUPP",iF="ENOPROTOOPT",gA=243,jE=2440588,gz="rmdir",kL="src/date.ml",lv=32752,jD="ECONNRESET",lu="ELOOP",eu=141,jC="ESPIPE",lt=280,aW="\xc3\x89pilogue",kK="EADDRINUSE",ls=1026,bq="Article L521-2",kJ="ENOSYS",eN="Invalid integer: ",et=2440587.5,jB="E2BIG",kI=359,iD="Pervasives.do_at_exit",iE="utf8",jA=155,kH=258,bG=" ",gy="Fatal error: exception ",a8=0x80,kG="Undefined_recursive_module",az="output",jz=569,f8=376,jy=215,eM="src/calendar_builder.ml",iC="EISDIR",lr="_",cE="Montant du salaire minimum de croissance",gx="compare: functional value",f7="0.16",dy="droit_ouvert_forfaitaire",dB="0.",em=134,kF="%i",gw=114,cO=529348384,iB=176,jx=426;function +GK(d,b,e,c,f){if(c<=b)for(var a=1;a<=f;a++)e[c+a]=d[b+a];else for(var a=f;a>=1;a--)e[c+a]=d[b+a];return 0}function -Ej(e,f,d){var +GN(e,f,d){var a=new Array(d+1);a[0]=0;for(var b=1,c=f+1;b<=d;b++,c++)a[b]=e[c];return a}function -eO(c,b,a){var +e6(c,b,a){var d=String.fromCharCode;if(b==0&&a<=4096&&a==c.length)return d.apply(null,c);var -e=u;for(;0=b.l||b.t==2&&c>=b.c.length)){b.c=d.t==4?eO(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else -if(b.t==2&&f==b.c.length){b.c+=d.t==4?eO(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else{if(b.t!=4)eD(b);var +b5(d,e,b,f,c){if(c==0)return 0;if(f==0&&(c>=b.l||b.t==2&&c>=b.c.length)){b.c=d.t==4?e6(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else +if(b.t==2&&f==b.c.length){b.c+=d.t==4?e6(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);b.t=b.c.length==b.l?0:2}else{if(b.t!=4)eV(b);var g=d.c,h=b.c;if(d.t==4)if(f<=e)for(var a=0;a=0;a--)h[f+a]=g[e+a];else{var i=Math.min(c,g.length-e);for(var a=0;a>=1;if(b==0)return d;a+=a;c++;if(c==9)a.slice(0,1)}}function -b6(a){if(a.t==2)a.c+=cS(a.l-a.c.length,"\0");else -a.c=eO(a.c,0,a.c.length);a.t=0}function -kI(a,b){if(a===b)return 1;a.t&6&&b6(a);b.t&6&&b6(b);return a.c==b.c?1:0}function -EZ(b,a){throw[0,b,a]}function -k0(a){if(a.length<24){for(var -b=0;ba$)return false;return true}else +bL(a){return a}function +b6(a,b,c,d,e){b5(bL(a),b,c,d,e);return 0}function +cX(b,a){if(b==0)return o;if(a.repeat)return a.repeat(b);var +d=o,c=0;for(;;){if(b&1)d+=a;b>>=1;if(b==0)return d;a+=a;c++;if(c==9)a.slice(0,1)}}function +b8(a){if(a.t==2)a.c+=cX(a.l-a.c.length,"\0");else +a.c=e6(a.c,0,a.c.length);a.t=0}function +mv(a,b){if(a===b)return 1;a.t&6&&b8(a);b.t&6&&b8(b);return a.c==b.c?1:0}function +Hv(b,a){throw[0,b,a]}function +mR(a){if(a.length<24){for(var +b=0;bba)return false;return true}else return!/[^\x00-\x7f]/.test(a)}function -gs(e){for(var -j=u,c=u,g,f,h,a,b=0,i=e.length;bfK){c.substr(0,1);j+=c;c=u;j+=e.slice(b,d)}else -c+=e.slice(b,d);if(d==i)break;b=d}a=1;if(++b=0xd7ff&&a<0xe000)a=2}else{a=3;if(++b0x10ffff)a=3}}}}}if(a<4){b-=a;c+="\ufffd"}else -if(a>bj)c+=String.fromCharCode(0xd7c0+(a>>10),jw+(a&0x3FF));else -c+=String.fromCharCode(a);if(c.length>dt){c.substr(0,1);j+=c;c=u}}return j+c}function -bI(c,a,b){this.t=c;this.c=a;this.l=b}bI.prototype.toString=function(){switch(this.t){case -9:return this.c;default:b6(this);case -0:if(k0(this.c)){this.t=9;return this.c}this.t=8;case -8:return this.c}};bI.prototype.toUtf16=function(){var -a=this.toString();if(this.t==9)return a;return gs(a)};bI.prototype.slice=function(){var +g2(e){for(var +j=o,c=o,g,f,h,a,b=0,i=e.length;bf$){c.substr(0,1);j+=c;c=o;j+=e.slice(b,d)}else +c+=e.slice(b,d);if(d==i)break;b=d}a=1;if(++b=0xd7ff&&a<0xe000)a=2}else{a=3;if(++b0x10ffff)a=3}}}}}if(a<4){b-=a;c+="\ufffd"}else +if(a>bn)c+=String.fromCharCode(0xd7c0+(a>>10),kT+(a&0x3FF));else +c+=String.fromCharCode(a);if(c.length>dA){c.substr(0,1);j+=c;c=o}}return j+c}function +bt(c,a,b){this.t=c;this.c=a;this.l=b}bt.prototype.toString=function(){switch(this.t){case +9:return this.c;default:b8(this);case +0:if(mR(this.c)){this.t=9;return this.c}this.t=8;case +8:return this.c}};bt.prototype.toUtf16=function(){var +a=this.toString();if(this.t==9)return a;return g2(a)};bt.prototype.slice=function(){var a=this.t==4?this.c.slice():this.c;return new -bI(this.t,a,this.l)};function -kJ(a){return new -bI(0,a,a.length)}function -a(a){return kJ(a)}function -gp(c,b){EZ(c,a(b))}var +bt(this.t,a,this.l)};function +mw(a){return new +bt(0,a,a.length)}function +a(a){return mw(a)}function +gY(c,b){Hv(c,a(b))}var af=[0];function -ag(a){gp(af.Invalid_argument,a)}function -kG(){ag(f0)}function -dz(a,b){switch(a.t&6){default:if(b>=a.c.length)return 0;case +ag(a){gY(af.Invalid_argument,a)}function +mt(){ag(gp)}function +dH(a,b){switch(a.t&6){default:if(b>=a.c.length)return 0;case 0:return a.c.charCodeAt(b);case 4:return a.c[b]}}function -b5(b,a){if(a>>>0>=b.l)kG();return dz(b,a)}function -ad(a,c,b){b&=aX;if(a.t!=4){if(c==a.c.length){a.c+=String.fromCharCode(b);if(c+1==a.l)a.t=0;return 0}eD(a)}a.c[c]=b;return 0}function -a9(b,a,c){if(a>>>0>=b.l)kG();return ad(b,a,c)}function -bK(c,a){if(c.fun)return bK(c.fun,a);if(typeof +b7(b,a){if(a>>>0>=b.l)mt();return dH(b,a)}function +ac(a,c,b){b&=aY;if(a.t!=4){if(c==a.c.length){a.c+=String.fromCharCode(b);if(c+1==a.l)a.t=0;return 0}eV(a)}a.c[c]=b;return 0}function +a9(b,a,c){if(a>>>0>=b.l)mt();return ac(b,a,c)}function +bb(c,a){if(c.fun)return bb(c.fun,a);if(typeof c!=="function")return c;var b=c.length|0;if(b===0)return c.apply(null,a);var e=a.length|0,d=b-e|0;if(d==0)return c.apply(null,a);else -if(d<0)return bK(c.apply(null,a.slice(0,b)),a.slice(b));else +if(d<0)return bb(c.apply(null,a.slice(0,b)),a.slice(b));else return function(){var e=arguments.length==0?1:arguments.length,d=new Array(a.length+e);for(var b=0;b>>0>=a.length-1)dy();return a}function -Eo(a){if(isFinite(a)){if(Math.abs(a)>=2.2250738585072014e-308)return 0;if(a!=0)return 1;return 2}return isNaN(a)?4:3}function -ba(a){if((a.t&6)!=0)b6(a);return a.c}var -Ff=Math.log2&&Math.log2(1.1235582092889474E+307)==1020;function -Fd(a){if(Ff)return Math.floor(Math.log2(a));var +b=0;b>>0>=a.length-1)dG();return a}function +GS(a){if(isFinite(a)){if(Math.abs(a)>=2.2250738585072014e-308)return 0;if(a!=0)return 1;return 2}return isNaN(a)?4:3}function +bc(a){if((a.t&6)!=0)b8(a);return a.c}var +HM=Math.log2&&Math.log2(1.1235582092889474E+307)==1020;function +HK(a){if(HM)return Math.floor(Math.log2(a));var b=0;if(a==0)return-Infinity;if(a>=1)while(a>=2){a/=2;b++}else while(a<1){a*=2;b--}return b}function -gg(c){var -a=new(E.Float32Array)(1);a[0]=c;var -b=new(E.Int32Array)(a.buffer);return b[0]|0}var -kS=Math.pow(2,-24);function -eN(a){throw a}function -cQ(){eN(af.Division_by_zero)}function -z(b,c,a){this.lo=b&bG;this.mi=c&bG;this.hi=a&bj}z.prototype.caml_custom="_j";z.prototype.copy=function(){return new -z(this.lo,this.mi,this.hi)};z.prototype.ucompare=function(a){if(this.hi>a.hi)return 1;if(this.hia.mi)return 1;if(this.mia.lo)return 1;if(this.loc)return 1;if(ba.mi)return 1;if(this.mia.lo)return 1;if(this.loa.hi)return 1;if(this.hia.mi)return 1;if(this.mia.lo)return 1;if(this.loc)return 1;if(ba.mi)return 1;if(this.mia.lo)return 1;if(this.lo>24),c=-this.hi+(b>>24);return new -z(a,b,c)};z.prototype.add=function(a){var +y(a,b,c)};y.prototype.add=function(a){var b=this.lo+a.lo,c=this.mi+a.mi+(b>>24),d=this.hi+a.hi+(c>>24);return new -z(b,c,d)};z.prototype.sub=function(a){var +y(b,c,d)};y.prototype.sub=function(a){var b=this.lo-a.lo,c=this.mi-a.mi+(b>>24),d=this.hi-a.hi+(c>>24);return new -z(b,c,d)};z.prototype.mul=function(a){var -b=this.lo*a.lo,c=(b*kS|0)+this.mi*a.lo+this.lo*a.mi,d=(c*kS|0)+this.hi*a.lo+this.mi*a.mi+this.lo*a.hi;return new -z(b,c,d)};z.prototype.isZero=function(){return(this.lo|this.mi|this.hi)==0};z.prototype.isNeg=function(){return this.hi<<16<0};z.prototype.and=function(a){return new -z(this.lo&a.lo,this.mi&a.mi,this.hi&a.hi)};z.prototype.or=function(a){return new -z(this.lo|a.lo,this.mi|a.mi,this.hi|a.hi)};z.prototype.xor=function(a){return new -z(this.lo^a.lo,this.mi^a.mi,this.hi^a.hi)};z.prototype.shift_left=function(a){a=a&63;if(a==0)return this;if(a<24)return new -z(this.lo<>24-a,this.hi<>24-a);if(a<48)return new -z(0,this.lo<>48-a);return new -z(0,0,this.lo<>a|this.mi<<24-a,this.mi>>a|this.hi<<24-a,this.hi>>a);if(a<48)return new -z(this.mi>>a-24|this.hi<<48-a,this.hi>>a-24,0);return new -z(this.hi>>a-48,0,0)};z.prototype.shift_right=function(a){a=a&63;if(a==0)return this;var +y(b,c,d)};y.prototype.mul=function(a){var +b=this.lo*a.lo,c=(b*mG|0)+this.mi*a.lo+this.lo*a.mi,d=(c*mG|0)+this.hi*a.lo+this.mi*a.mi+this.lo*a.hi;return new +y(b,c,d)};y.prototype.isZero=function(){return(this.lo|this.mi|this.hi)==0};y.prototype.isNeg=function(){return this.hi<<16<0};y.prototype.and=function(a){return new +y(this.lo&a.lo,this.mi&a.mi,this.hi&a.hi)};y.prototype.or=function(a){return new +y(this.lo|a.lo,this.mi|a.mi,this.hi|a.hi)};y.prototype.xor=function(a){return new +y(this.lo^a.lo,this.mi^a.mi,this.hi^a.hi)};y.prototype.shift_left=function(a){a=a&63;if(a==0)return this;if(a<24)return new +y(this.lo<>24-a,this.hi<>24-a);if(a<48)return new +y(0,this.lo<>48-a);return new +y(0,0,this.lo<>a|this.mi<<24-a,this.mi>>a|this.hi<<24-a,this.hi>>a);if(a<48)return new +y(this.mi>>a-24|this.hi<<48-a,this.hi>>a-24,0);return new +y(this.hi>>a-48,0,0)};y.prototype.shift_right=function(a){a=a&63;if(a==0)return this;var c=this.hi<<16>>16;if(a<24)return new -z(this.lo>>a|this.mi<<24-a,this.mi>>a|c<<24-a,this.hi<<16>>a>>>16);var +y(this.lo>>a|this.mi<<24-a,this.mi>>a|c<<24-a,this.hi<<16>>a>>>16);var b=this.hi<<16>>31;if(a<48)return new -z(this.mi>>a-24|this.hi<<48-a,this.hi<<16>>a-24>>16,b&bj);return new -z(this.hi<<16>>a-32,b,b)};z.prototype.lsl1=function(){this.hi=this.hi<<1|this.mi>>23;this.mi=(this.mi<<1|this.lo>>23)&bG;this.lo=this.lo<<1&bG};z.prototype.lsr1=function(){this.lo=(this.lo>>>1|this.mi<<23)&bG;this.mi=(this.mi>>>1|this.hi<<23)&bG;this.hi=this.hi>>>1};z.prototype.udivmod=function(e){var +y(this.mi>>a-24|this.hi<<48-a,this.hi<<16>>a-24>>16,b&bn);return new +y(this.hi<<16>>a-32,b,b)};y.prototype.lsl1=function(){this.hi=this.hi<<1|this.mi>>23;this.mi=(this.mi<<1|this.lo>>23)&bJ;this.lo=this.lo<<1&bJ};y.prototype.lsr1=function(){this.lo=(this.lo>>>1|this.mi<<23)&bJ;this.mi=(this.mi>>>1|this.hi<<23)&bJ;this.hi=this.hi>>>1};y.prototype.udivmod=function(e){var c=0,b=this.copy(),a=e.copy(),d=new -z(0,0,0);while(b.ucompare(a)>0){c++;a.lsl1()}while(c>=0){c--;d.lsl1();if(b.ucompare(a)>=0){d.lo++;b=b.sub(a)}a.lsr1()}return{quotient:d,modulus:b}};z.prototype.div=function(a){var -b=this;if(a.isZero())cQ();var -d=b.hi^a.hi;if(b.hi&bg)b=b.neg();if(a.hi&bg)a=a.neg();var -c=b.udivmod(a).quotient;if(d&bg)c=c.neg();return c};z.prototype.mod=function(b){var -a=this;if(b.isZero())cQ();var -d=a.hi;if(a.hi&bg)a=a.neg();if(b.hi&bg)b=b.neg();var -c=a.udivmod(b).modulus;if(d&bg)c=c.neg();return c};z.prototype.toInt=function(){return this.lo|this.mi<<24};z.prototype.toFloat=function(){return(this.hi<<16)*Math.pow(2,32)+this.mi*Math.pow(2,24)+this.lo};z.prototype.toArray=function(){return[this.hi>>8,this.hi&aX,this.mi>>16,this.mi>>8&aX,this.mi&aX,this.lo>>16,this.lo>>8&aX,this.lo&aX]};z.prototype.lo32=function(){return this.lo|(this.mi&aX)<<24};z.prototype.hi32=function(){return this.mi>>>8&bj|this.hi<<16};function -b7(b,c,a){return new -z(b,c,a)}function -eG(a){if(!isFinite(a)){if(isNaN(a))return b7(1,0,h2);return a>0?b7(0,0,h2):b7(0,0,0xfff0)}var -f=a==0&&1/a==-Infinity?bg:a>=0?0:bg;if(f)a=-a;var -b=Fd(a)+bm;if(b<=0){b=0;a/=Math.pow(2,-jT)}else{a/=Math.pow(2,b-ku);if(a<16){a*=2;b-=1}if(b==0)a/=2}var +y(0,0,0);while(b.ucompare(a)>0){c++;a.lsl1()}while(c>=0){c--;d.lsl1();if(b.ucompare(a)>=0){d.lo++;b=b.sub(a)}a.lsr1()}return{quotient:d,modulus:b}};y.prototype.div=function(a){var +b=this;if(a.isZero())cW();var +d=b.hi^a.hi;if(b.hi&bj)b=b.neg();if(a.hi&bj)a=a.neg();var +c=b.udivmod(a).quotient;if(d&bj)c=c.neg();return c};y.prototype.mod=function(b){var +a=this;if(b.isZero())cW();var +d=a.hi;if(a.hi&bj)a=a.neg();if(b.hi&bj)b=b.neg();var +c=a.udivmod(b).modulus;if(d&bj)c=c.neg();return c};y.prototype.toInt=function(){return this.lo|this.mi<<24};y.prototype.toFloat=function(){return(this.hi<<16)*Math.pow(2,32)+this.mi*Math.pow(2,24)+this.lo};y.prototype.toArray=function(){return[this.hi>>8,this.hi&aY,this.mi>>16,this.mi>>8&aY,this.mi&aY,this.lo>>16,this.lo>>8&aY,this.lo&aY]};y.prototype.lo32=function(){return this.lo|(this.mi&aY)<<24};y.prototype.hi32=function(){return this.mi>>>8&bn|this.hi<<16};function +b_(b,c,a){return new +y(b,c,a)}function +eY(a){if(!isFinite(a)){if(isNaN(a))return b_(1,0,iO);return a>0?b_(0,0,iO):b_(0,0,0xfff0)}var +f=a==0&&1/a==-Infinity?bj:a>=0?0:bj;if(f)a=-a;var +b=HK(a)+br;if(b<=0){b=0;a/=Math.pow(2,-ls)}else{a/=Math.pow(2,b-mf);if(a<16){a*=2;b-=1}if(b==0)a/=2}var d=Math.pow(2,24),c=a|0;a=(a-c)*d;var e=a|0;a=(a-e)*d;var -g=a|0;c=c&fU|f|b<<4;return b7(g,e,c)}function -dC(a){return a.toArray()}function -kF(c,b,g){c.write(32,b.dims.length);c.write(32,b.kind|b.layout<<8);if(b.caml_custom==eo)for(var -a=0;a>4;if(c==2047)return(f|g|b&fU)==0?b&bg?-Infinity:Infinity:NaN;var -e=Math.pow(2,-24),a=(f*e+g)*e+(b&fU);if(c>0){a+=16;a*=Math.pow(2,c-ku)}else -a*=Math.pow(2,-jT);if(b&bg)a=-a;return a}function -gb(b){var +a(e*mq(c));return d}function +gQ(c){var +a=new(A.Int32Array)(1);a[0]=c;var +b=new(A.Float32Array)(a.buffer);return b[0]}function +dJ(a){return new +y(a[7]<<0|a[6]<<8|a[5]<<16,a[4]<<0|a[3]<<8|a[2]<<16,a[1]<<0|a[0]<<8)}function +cV(d){var +f=d.lo,g=d.mi,b=d.hi,c=(b&0x7fff)>>4;if(c==2047)return(f|g|b&gj)==0?b&bj?-Infinity:Infinity:NaN;var +e=Math.pow(2,-24),a=(f*e+g)*e+(b&gj);if(c>0){a+=16;a*=Math.pow(2,c-mf)}else +a*=Math.pow(2,-ls);if(b&bj)a=-a;return a}function +gI(b){var d=b.length,c=1;for(var a=0;a>>24&aX|(a&bj)<<8,a>>>16&bj)}function -gi(a){return a.hi32()}function -gj(a){return a.lo32()}var -El=eo;function -b2(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}b2.prototype.caml_custom=El;b2.prototype.offset=function(b){var +mF(b,a){return new +y(b&bJ,b>>>24&aY|(a&bn)<<8,a>>>16&bn)}function +gR(a){return a.hi32()}function +gS(a){return a.lo32()}var +GP=eC;function +b4(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}b4.prototype.caml_custom=GP;b4.prototype.offset=function(b){var c=0;if(typeof b==="number")b=[b];if(!(b instanceof Array))ag("bigarray.js: invalid offset");if(this.dims.length!=b.length)ag("Bigarray.get/set: bad number of dimensions");if(this.layout==0)for(var -a=0;a=this.dims[a])dy();c=c*this.dims[a]+b[a]}else +a=0;a=this.dims[a])dG();c=c*this.dims[a]+b[a]}else for(var -a=this.dims.length-1;a>=0;a--){if(b[a]<1||b[a]>this.dims[a])dy();c=c*this.dims[a]+(b[a]-1)}return c};b2.prototype.get=function(a){switch(this.kind){case +a=this.dims.length-1;a>=0;a--){if(b[a]<1||b[a]>this.dims[a])dG();c=c*this.dims[a]+(b[a]-1)}return c};b4.prototype.get=function(a){switch(this.kind){case 7:var -d=this.data[a*2+0],b=this.data[a*2+1];return kR(d,b);case +d=this.data[a*2+0],b=this.data[a*2+1];return mF(d,b);case 10:case 11:var -e=this.data[a*2+0],c=this.data[a*2+1];return[dk,e,c];default:return this.data[a]}};b2.prototype.set=function(a,b){switch(this.kind){case -7:this.data[a*2+0]=gj(b);this.data[a*2+1]=gi(b);break;case +e=this.data[a*2+0],c=this.data[a*2+1];return[ds,e,c];default:return this.data[a]}};b4.prototype.set=function(a,b){switch(this.kind){case +7:this.data[a*2+0]=gS(b);this.data[a*2+1]=gR(b);break;case 10:case -11:this.data[a*2+0]=b[1];this.data[a*2+1]=b[2];break;default:this.data[a]=b;break}return 0};b2.prototype.fill=function(b){switch(this.kind){case +11:this.data[a*2+0]=b[1];this.data[a*2+1]=b[2];break;default:this.data[a]=b;break}return 0};b4.prototype.fill=function(b){switch(this.kind){case 7:var -c=gj(b),e=gi(b);if(c==e)this.data.fill(c);else +c=gS(b),e=gR(b);if(c==e)this.data.fill(c);else for(var a=0;ab.data[a])return 1}break}return 0};function -cM(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}cM.prototype=new -b2();cM.prototype.offset=function(a){if(typeof +cS(c,d,b,a){this.kind=c;this.layout=d;this.dims=b;this.data=a}cS.prototype=new +b4();cS.prototype.offset=function(a){if(typeof a!=="number")if(a instanceof Array&&a.length==1)a=a[0];else -ag("Ml_Bigarray_c_1_1.offset");if(a<0||a>=this.dims[0])dy();return a};cM.prototype.get=function(a){return this.data[a]};cM.prototype.set=function(a,b){this.data[a]=b;return 0};cM.prototype.fill=function(a){this.data.fill(a);return 0};function -kB(c,d,a,b){var -e=kD(c);if(gb(a)*e!=b.length)ag("length doesn't match dims");if(d==0&&a.length==1&&e==1)return new -cM(c,d,a,b);return new -b2(c,d,a,b)}function -cg(a){gp(af.Failure,a)}function -kC(b,v,r){var -i=b.read32s();if(i<0||i>16)cg("input_value: wrong number of bigarray dimensions");var -p=b.read32s(),j=p&aX,o=p>>8&1,h=[];if(r==eo)for(var +ag("Ml_Bigarray_c_1_1.offset");if(a<0||a>=this.dims[0])dG();return a};cS.prototype.get=function(a){return this.data[a]};cS.prototype.set=function(a,b){this.data[a]=b;return 0};cS.prototype.fill=function(a){this.data.fill(a);return 0};function +mo(c,d,a,b){var +e=mq(c);if(gI(a)*e!=b.length)ag("length doesn't match dims");if(d==0&&a.length==1&&e==1)return new +cS(c,d,a,b);return new +b4(c,d,a,b)}function +b9(a){gY(af.Failure,a)}function +mp(b,v,r){var +i=b.read32s();if(i<0||i>16)b9("input_value: wrong number of bigarray dimensions");var +p=b.read32s(),j=p&aY,o=p>>8&1,h=[];if(r==eC)for(var a=0;a>>32-15;a=br(a,0x1b873593);b^=a;b=b<<13|b>>>32-13;return(b+(b<<2)|0)+(0xe6546b64|0)|0}function -Ev(a,b){a=au(a,gj(b));a=au(a,gi(b));return a}function -ge(a,b){return Ev(a,eG(b))}function -kE(c){var -b=gb(c.dims),d=0;switch(c.kind){case +l=cV(dJ(e));g.set(a,[ds,m,l])}break}v[0]=(4+i)*4;return mo(j,o,h,f)}function +mn(a,b,c){return a.compare(b,c)}function +bd(a,b){return Math.imul(a,b)}function +au(b,a){a=bd(a,0xcc9e2d51|0);a=a<<15|a>>>32-15;a=bd(a,0x1b873593);b^=a;b=b<<13|b>>>32-13;return(b+(b<<2)|0)+(0xe6546b64|0)|0}function +G2(a,b){a=au(a,gS(b));a=au(a,gR(b));return a}function +gN(a,b){return G2(a,eY(b))}function +mr(c){var +b=gI(c.dims),d=0;switch(c.kind){case 2:case 3:case -12:if(b>cK)b=cK;var +12:if(b>cQ)b=cQ;var e=0,a=0;for(a=0;a+4<=c.data.length;a+=4){e=c.data[a+0]|c.data[a+1]<<8|c.data[a+2]<<16|c.data[a+3]<<24;d=au(d,e)}e=0;switch(b&3){case 3:e=c.data[a+2]<<16;case 2:e|=c.data[a+1]<<8;case 1:e|=c.data[a+0];d=au(d,e)}break;case 4:case -5:if(b>cf)b=cf;var +5:if(b>ci)b=ci;var e=0,a=0;for(a=0;a+2<=c.data.length;a+=2){e=c.data[a+0]|c.data[a+1]<<16;d=au(d,e)}if((b&1)!=0)d=au(d,c.data[a]);break;case 6:if(b>64)b=64;for(var a=0;a64)b=64;for(var -a=0;a32)b=32;for(var -a=0;a0?b(c,f,e):b(f,c,e);if(e&&a!=a)return d;if(+a!=+a)return+a;if((a|0)!=0)return a|0}return d}function -dD(a){return a +dL(a){return a instanceof -bI}function -eJ(a){return dD(a)}function -kM(a){if(typeof -a==="number")return a4;else -if(dD(a))return fY;else -if(eJ(a))return 1252;else +bt}function +e1(a){return dL(a)}function +mz(a){if(typeof +a==="number")return a5;else +if(dL(a))return ez;else +if(e1(a))return 1252;else if(a instanceof -Array&&a[0]===a[0]>>>0&&a[0]<=cG){var -b=a[0]|0;return b==dk?0:b}else +Array&&a[0]===a[0]>>>0&&a[0]<=cM){var +b=a[0]|0;return b==ds?0:b}else if(a instanceof -String)return ib;else +String)return i_;else if(typeof -a=="string")return ib;else +a=="string")return i_;else if(a instanceof -Number)return a4;else -if(a&&a.caml_custom)return fO;else +Number)return a5;else +if(a&&a.caml_custom)return ge;else if(a&&a.compare)return 1256;else if(typeof a=="function")return 1247;else if(typeof a=="symbol")return 1251;return 1001}function -eI(a,b){if(ab.c?1:0}function -gq(a,b){return kH(a,b)}function -cN(a,b,d){var +e0(a,b){if(ab.c?1:0}function +g0(a,b){return mu(a,b)}function +cT(a,b,d){var e=[];for(;;){if(!(d&&a===b)){var -f=kM(a);if(f==ed){a=a[1];continue}var -g=kM(b);if(g==ed){b=b[1];continue}if(f!==g){if(f==a4){if(g==fO)return kL(a,b,-1,d);return-1}if(g==a4){if(f==fO)return kL(b,a,1,d);return 1}return fb)return 1;if(a!=b){if(!d)return NaN;if(a==a)return 1;if(b==b)return-1}break;case 1251:if(a!==b){if(!d)return NaN;return 1}break;case 1252:var -a=ba(a),b=ba(b);if(a!==b){if(ab)return 1}break;case +a=bc(a),b=bc(b);if(a!==b){if(ab)return 1}break;case 12520:var a=a.toString(),b=b.toString();if(a!==b){if(ab)return 1}break;case 246:case 254:default:if(a.length!=b.length)return a.length1)e.push(a,b,1);break}}if(e.length==0)return 0;var h=e.pop();b=e.pop();a=e.pop();if(h+10)if(c==0&&(b>=a.l||a.t==2&&b>=a.c.length))if(d==0){a.c=u;a.t=2}else{a.c=cS(b,String.fromCharCode(d));a.t=b==a.l?0:2}else{if(a.t!=4)eD(a);for(b+=c;c0)if(c==0&&(b>=a.l||a.t==2&&b>=a.c.length))if(d==0){a.c=o;a.t=2}else{a.c=cX(b,String.fromCharCode(d));a.t=b==a.l?0:2}else{if(a.t!=4)eV(a);for(b+=c;c31)ag("format_int: format too long");var -a={justify:bA,signstyle:aC,filler:bC,alternate:false,base:0,signedconv:false,width:0,uppercase:false,sign:1,prec:-1,conv:"f"};for(var +a={justify:bF,signstyle:aB,filler:bG,alternate:false,base:0,signedconv:false,width:0,uppercase:false,sign:1,prec:-1,conv:"f"};for(var c=0;c=0&&b<=9){a.width=a.width*10+b;c++}c--;break;case".":a.prec=0;c++;while(b=d.charCodeAt(c)-48,b>=0&&b<=9){a.prec=a.prec*10+b;c++}c--;case"d":case"i":a.signedconv=true;case"u":a.base=10;break;case"x":a.base=16;break;case"X":a.base=16;a.uppercase=true;break;case"o":a.base=8;break;case"e":case"f":case"g":a.signedconv=true;a.conv=b;break;case"E":case"F":case"G":a.signedconv=true;a.uppercase=true;a.conv=b.toLowerCase();break}}return a}function -gd(b,f){if(b.uppercase)f=f.toUpperCase();var -e=f.length;if(b.signedconv&&(b.sign<0||b.signstyle!=aC))e++;if(b.alternate){if(b.base==8)e+=1;if(b.base==16)e+=2}var -c=u;if(b.justify==bA&&b.filler==bC)for(var -d=e;d=0&&b<=9){a.width=a.width*10+b;c++}c--;break;case".":a.prec=0;c++;while(b=d.charCodeAt(c)-48,b>=0&&b<=9){a.prec=a.prec*10+b;c++}c--;case"d":case"i":a.signedconv=true;case"u":a.base=10;break;case"x":a.base=16;break;case"X":a.base=16;a.uppercase=true;break;case"o":a.base=8;break;case"e":case"f":case"g":a.signedconv=true;a.conv=b;break;case"E":case"F":case"G":a.signedconv=true;a.uppercase=true;a.conv=b.toLowerCase();break}}return a}function +gL(b,f){if(b.uppercase)f=f.toUpperCase();var +e=f.length;if(b.signedconv&&(b.sign<0||b.signstyle!=aB))e++;if(b.alternate){if(b.base==8)e+=1;if(b.base==16)e+=2}var +c=o;if(b.justify==bF&&b.filler==bG)for(var +d=e;d20){c-=20;a/=Math.pow(10,c);a+=new -Array(c+1).join(k);if(b>0)a=a+bB+new +c=parseInt(a.toString().split(bF)[1]);if(c>20){c-=20;a/=Math.pow(10,c);a+=new +Array(c+1).join(k);if(b>0)a=a+bl+new Array(b+1).join(k);return a}else return a.toFixed(b)}}var -a,e=go(i),d=e.prec<0?6:e.prec;if(c<0||c==0&&1/c==-Infinity){e.sign=-1;c=-c}if(isNaN(c)){a=f3;e.filler=bC}else -if(!isFinite(c)){a=ko;e.filler=bC}else +a,e=gX(i),d=e.prec<0?6:e.prec;if(c<0||c==0&&1/c==-Infinity){e.sign=-1;c=-c}if(isNaN(c)){a=gt;e.filler=bG}else +if(!isFinite(c)){a=l9;e.filler=bG}else switch(e.conv){case"e":var -a=c.toExponential(d),b=a.length;if(a.charAt(b-3)==eB)a=a.slice(0,b-1)+k+a.slice(b-1);break;case"f":a=j(c,d);break;case"g":d=d?d:1;a=c.toExponential(d-1);var -h=a.indexOf(eB),g=+a.slice(h+1);if(g<-4||c>=1e21||c.toFixed(0).length>d){var -b=h-1;while(a.charAt(b)==k)b--;if(a.charAt(b)==bB)b--;a=a.slice(0,b+1)+a.slice(h);b=a.length;if(a.charAt(b-3)==eB)a=a.slice(0,b-1)+k+a.slice(b-1);break}else{var +a=c.toExponential(d),b=a.length;if(a.charAt(b-3)==eT)a=a.slice(0,b-1)+k+a.slice(b-1);break;case"f":a=j(c,d);break;case"g":d=d?d:1;a=c.toExponential(d-1);var +h=a.indexOf(eT),g=+a.slice(h+1);if(g<-4||c>=1e21||c.toFixed(0).length>d){var +b=h-1;while(a.charAt(b)==k)b--;if(a.charAt(b)==bl)b--;a=a.slice(0,b+1)+a.slice(h);b=a.length;if(a.charAt(b-3)==eT)a=a.slice(0,b-1)+k+a.slice(b-1);break}else{var f=d;if(g<0){f-=g+1;a=c.toFixed(f)}else while(a=c.toFixed(f),a.length>d+1)f--;if(f){var -b=a.length-1;while(a.charAt(b)==k)b--;if(a.charAt(b)==bB)b--;a=a.slice(0,b+1)}}break}return gd(e,a)}function -eE(e,c){if(ba(e)==j6)return a(u+c);var -b=go(e);if(c<0)if(b.signedconv){b.sign=-1;c=-c}else +b=a.length-1;while(a.charAt(b)==k)b--;if(a.charAt(b)==bl)b--;a=a.slice(0,b+1)}}break}return gL(e,a)}function +eW(e,c){if(bc(e)==gB)return a(o+c);var +b=gX(e);if(c<0)if(b.signedconv){b.sign=-1;c=-c}else c>>>=0;var -d=c.toString(b.base);if(b.prec>=0){b.filler=bC;var -f=b.prec-d.length;if(f>0)d=cS(f,k)+d}return gd(b,d)}var -kX=0;function -an(){return kX++}function -aY(a){return a.toUtf16()}if(E.process&&E.process.cwd)var -dA=E.process.cwd().replace(/\\/g,bE);else +d=c.toString(b.base);if(b.prec>=0){b.filler=bG;var +f=b.prec-d.length;if(f>0)d=cX(f,k)+d}return gL(b,d)}var +mL=0;function +ai(){return mL++}function +aZ(a){return a.toUtf16()}function +HN(){function +a(a){if(a.charAt(0)===bp)return[o,a.substring(1)];return}function +b(c){var +g=/^([a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?([\\/])?([\s\S]*?)$/,a=g.exec(c),b=a[1]||o,e=Boolean(b&&b.charAt(1)!==":");if(Boolean(a[2]||e)){var +d=a[1]||o,f=a[2]||o;return[d,c.substring(d.length+f.length)]}return}return A.process&&A.process.platform?A.process.platform==="win32"?b:a:a}var +g4=HN();function +mP(a){return a.slice(-1)!==bp?a+bp:a}if(A.process&&A.process.cwd)var +dI=A.process.cwd().replace(/\\/g,bp);else var -dA="/static";if(dA.slice(-1)!==bE)dA+=bE;function -EN(a){a=aY(a);if(a.charCodeAt(0)!=47)a=dA+a;var -d=a.split(bE),b=[];for(var -c=0;c1)b.pop();break;case".":break;case"":if(b.length==0)b.push(u);break;default:b.push(d[c]);break}b.orig=a;return b}function -Em(a){return new -bI(4,a,a.length)}function -E9(e){for(var -f=u,b=f,a,h,c=0,g=e.length;cfK){b.substr(0,1);f+=b;b=u;f+=e.slice(c,d)}else -b+=e.slice(c,d);if(d==g)break;c=d}if(a>6);b+=String.fromCharCode(a7|a&cw)}else -if(a<0xd800||a>=jF)b+=String.fromCharCode(h8|a>>12,a7|a>>6&cw,a7|a&cw);else -if(a>=0xdbff||c+1==g||(h=e.charCodeAt(c+1))jF)b+="\xef\xbf\xbd";else{c++;a=(a<<10)+h-0x35fdc00;b+=String.fromCharCode(i3|a>>18,a7|a>>12&cw,a7|a>>6&cw,a7|a&cw)}if(b.length>dt){b.substr(0,1);f+=b;b=u}}return f+b}function -En(a){var -b=9;if(!k0(a))b=8,a=E9(a);return new -bI(b,a,a.length)}function -bb(a){return En(a)}function -_(a){gp(af.Sys_error,a)}function -EX(a){a=ba(a);_(a+": No such file or directory")}function -aZ(a){return a.l}function -kz(){}function -at(a){this.data=a}at.prototype=new -kz();at.prototype.truncate=function(a){var -b=this.data;this.data=ae(a|0);b3(b,0,this.data,0,a)};at.prototype.length=function(){return aZ(this.data)};at.prototype.write=function(b,d,g,a){var +dI="/static";dI=mP(dI);function +Hj(a){a=aZ(a);if(!g4(a))a=dI+a;var +e=g4(a),d=e[1].split(bp),b=[];for(var +c=0;c1)b.pop();break;case".":break;default:b.push(d[c]);break}b.unshift(e[0]);b.orig=a;return b}function +HF(e){for(var +f=o,b=f,a,h,c=0,g=e.length;cf$){b.substr(0,1);f+=b;b=o;f+=e.slice(c,d)}else +b+=e.slice(c,d);if(d==g)break;c=d}if(a>6);b+=String.fromCharCode(a8|a&cC)}else +if(a<0xd800||a>=k7)b+=String.fromCharCode(i0|a>>12,a8|a>>6&cC,a8|a&cC);else +if(a>=0xdbff||c+1==g||(h=e.charCodeAt(c+1))k7)b+="\xef\xbf\xbd";else{c++;a=(a<<10)+h-0x35fdc00;b+=String.fromCharCode(ki|a>>18,a8|a>>12&cC,a8|a>>6&cC,a8|a&cC)}if(b.length>dA){b.substr(0,1);f+=b;b=o}}return f+b}function +GR(a){var +b=9;if(!mR(a))b=8,a=HF(a);return new +bt(b,a,a.length)}function +aM(a){return GR(a)}var +H2=[jB,mg,kv,iS,kq,k6,jR,li,gb,jU,lh,kj,lj,jQ,iC,mj,iR,iZ,ka,kQ,eR,jb,l5,ln,lO,kJ,eJ,gC,i9,i8,j6,l8,l3,ma,jC,i2,jo,k0,me,kg,jH,kt,iY,kk,iF,ll,lZ,jF,i$,kd,kK,jX,kU,kp,lk,jT,jD,lG,lb,lS,k_,k5,k4,iX,jK,jj,lu,lL];function +cn(d,f,e,a){var +b=H2.indexOf(d);if(b<0){if(a==null)a=-9999;b=[0,a]}var +c=[b,aM(f||o),aM(e||o)];return c}var +mJ={};function +bN(a){return mJ[a]}function +cm(b,a){throw[0,b].concat(a)}function +GQ(a){return new +bt(4,a,a.length)}function +Q(a){gY(af.Sys_error,a)}function +Ht(a){a=bc(a);Q(a+en)}function +a0(a){return a.l}function +mm(){}function +as(a){this.data=a}as.prototype=new +mm();as.prototype.truncate=function(a){var +b=this.data;this.data=ae(a|0);b5(b,0,this.data,0,a)};as.prototype.length=function(){return a0(this.data)};as.prototype.write=function(b,d,g,a){var c=this.length();if(b+a>=c){var -e=ae(b+a),f=this.data;this.data=e;b3(f,0,this.data,0,c)}b4(d,g,this.data,b,a);return 0};at.prototype.read=function(c,a,d,b){var -e=this.length();b3(this.data,c,a,d,b);return 0};at.prototype.read_one=function(a){return b5(this.data,a)};at.prototype.close=function(){};at.prototype.constructor=at;function -a8(b,a){this.content={};this.root=b;this.lookupFun=a}a8.prototype.nm=function(a){return this.root+a};a8.prototype.lookup=function(b){if(!this.content[b]&&this.lookupFun){var -c=this.lookupFun(a(this.root),a(b));if(c!==0)this.content[b]=new -at(bJ(c[1]))}};a8.prototype.exists=function(a){if(a==u)return 1;var -c=a+bE,d=new -RegExp(fP+c);for(var -b +e=ae(b+a),f=this.data;this.data=e;b5(f,0,this.data,0,c)}b6(d,g,this.data,b,a);return 0};as.prototype.read=function(c,a,d,b){var +e=this.length();b5(this.data,c,a,d,b);return 0};as.prototype.read_one=function(a){return b7(this.data,a)};as.prototype.close=function(){};as.prototype.constructor=as;function +aG(b,a){this.content={};this.root=b;this.lookupFun=a}aG.prototype.nm=function(a){return this.root+a};aG.prototype.create_dir_if_needed=function(d){var +c=d.split(bp),b=o;for(var +a=0;a>1|1;if(h=0)}function -gf(d,b){var +a=c}e3[d]=a+1;return h==b[a+1]?b[a]:0}function +mE(a,b){return+(cT(a,b,false)>=0)}function +gO(d,b){var e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b.charCodeAt(a)|b.charCodeAt(a+1)<<8|b.charCodeAt(a+2)<<16|b.charCodeAt(a+3)<<24;d=au(d,c)}c=0;switch(e&3){case 3:c=b.charCodeAt(a+2)<<16;case 2:c|=b.charCodeAt(a+1)<<8;case 1:c|=b.charCodeAt(a);d=au(d,c)}d^=e;return d}function -Ew(a,b){return gf(a,ba(b))}function -Et(d,b){var +G3(a,b){return gO(a,bc(b))}function +G0(d,b){var e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b[a]|b[a+1]<<8|b[a+2]<<16|b[a+3]<<24;d=au(d,c)}c=0;switch(e&3){case 3:c=b[a+2]<<16;case 2:c|=b[a+1]<<8;case 1:c|=b[a];d=au(d,c)}d^=e;return d}function -Es(a,b){switch(b.t&6){default:b6(b);case -0:a=gf(a,b.c);break;case -2:a=Et(a,b.c)}return a}function -Eu(a){a^=a>>>16;a=br(a,0x85ebca6b|0);a^=a>>>13;a=br(a,0xc2b2ae35|0);a^=a>>>16;return a}function -Er(j,l,n,m){var -f,g,h,d,c,b,a,e,i;d=l;if(d<0||d>cK)d=cK;c=j;b=n;f=[m];g=0;h=1;while(g0){a=f[g++];if(a&&a.caml_custom){if(cO[a.caml_custom]&&cO[a.caml_custom].hash){var -k=cO[a.caml_custom].hash(a);b=au(b,k);c--}}else +GZ(a,b){switch(b.t&6){default:b8(b);case +0:a=gO(a,b.c);break;case +2:a=G0(a,b.c)}return a}function +G1(a){a^=a>>>16;a=bd(a,0x85ebca6b|0);a^=a>>>13;a=bd(a,0xc2b2ae35|0);a^=a>>>16;return a}function +GY(j,l,n,m){var +f,g,h,d,c,b,a,e,i;d=l;if(d<0||d>cQ)d=cQ;c=j;b=n;f=[m];g=0;h=1;while(g0){a=f[g++];if(a&&a.caml_custom){if(cU[a.caml_custom]&&cU[a.caml_custom].hash){var +k=cU[a.caml_custom].hash(a);b=au(b,k);c--}}else if(a instanceof Array&&a[0]===(a[0]|0))switch(a[0]){case 248:b=au(b,a[2]);c--;break;case 250:f[--g]=a[1];break;default:var o=a.length-1<<10|a[0];b=au(b,o);for(e=1,i=a.length;e=d)break;f[h++]=a[e]}break}else -if(dD(a)){b=Es(b,a);c--}else -if(eJ(a)){b=Ew(b,a);c--}else +if(dL(a)){b=GZ(b,a);c--}else +if(e1(a)){b=G3(b,a);c--}else if(typeof -a==="string"){b=gf(b,a);c--}else +a==="string"){b=gO(b,a);c--}else if(a===(a|0)){b=au(b,a+a+1);c--}else -if(a===+a){b=ge(b,a);c--}}b=Eu(b);return b&0x3FFFFFFF}function -Ex(a,c,l){if(!isFinite(a)){if(isNaN(a))return bb(f3);return bb(a>0?kk:"-infinity")}var +if(a===+a){b=gN(b,a);c--}}b=G1(b);return b&0x3FFFFFFF}function +G4(a,c,l){if(!isFinite(a)){if(isNaN(a))return aM(gt);return aM(a>0?l2:"-infinity")}var i=a==0&&1/a==-Infinity?1:a>=0?0:1;if(i)a=-a;var d=0;if(a==0);else if(a<1)while(a<1&&d>-1022){a*=2;d--}else while(a>=2){a/=2;d++}var -j=d<0?u:bA,e=u;if(i)e=aC;else +j=d<0?o:bF,e=o;if(i)e=aB;else switch(l){case -43:e=bA;break;case -32:e=bC;break;default:break}if(c>=0&&c<13){var +43:e=bF;break;case +32:e=bG;break;default:break}if(c>=0&&c<13){var g=Math.pow(2,c*4);a=Math.round(a*g)/g}var b=a.toString(16);if(c>=0){var -h=b.indexOf(bB);if(h<0)b+=bB+cS(c,k);else{var -f=h+1+c;if(b.length>24&bG,a>>31&bj)}function -EI(a){return a.toInt()}function -EC(a){return+a.isNeg()}function -EF(a){return a.neg()}function -EA(g,c){var -a=go(g);if(a.signedconv&&EC(c)){a.sign=-1;c=EF(c)}var -b=u,h=EG(a.base),f="0123456789abcdef";do{var -e=c.udivmod(h);c=e.quotient;b=f.charAt(EI(e.modulus))+b}while(!ED(c));if(a.prec>=0){a.filler=bC;var -d=a.prec-b.length;if(d>0)b=cS(d,k)+b}return gd(a,b)}function -EH(a,b){return a.or(b)}function -eH(a){return a.toFloat()}function -EK(){return typeof -module!=="undefined"&&module&&module.exports?module.exports:E}function -ch(a){return a.slice(1)}function -EL(c){var +h=b.indexOf(bl);if(h<0)b+=bl+cX(c,k);else{var +f=h+1+c;if(b.length>24&bJ,a>>31&bn)}function +Hd(a){return a.toInt()}function +G9(a){return+a.isNeg()}function +Ha(a){return a.neg()}function +G7(g,c){var +a=gX(g);if(a.signedconv&&G9(c)){a.sign=-1;c=Ha(c)}var +b=o,h=Hb(a.base),f="0123456789abcdef";do{var +e=c.udivmod(h);c=e.quotient;b=f.charAt(Hd(e.modulus))+b}while(!G_(c));if(a.prec>=0){a.filler=bG;var +d=a.prec-b.length;if(d>0)b=cX(d,k)+b}return gL(a,b)}function +Hc(a,b){return a.or(b)}function +eZ(a){return a.toFloat()}function +Hg(){return typeof +module!=="undefined"&&module&&module.exports?module.exports:A}function +cj(a){return a.slice(1)}function +Hh(c){var d=c.length,b=new Array(d+1);b[0]=0;for(var a=0;a0){var c=new Array(b);for(var -a=0;abm){a-=bm;b*=Math.pow(2,bm);if(a>bm){a-=bm;b*=Math.pow(2,bm)}}if(a<-bm){a+=bm;b*=Math.pow(2,-bm)}b*=Math.pow(2,a);return b}function -EM(a,b){return+(cN(a,b,false)<=0)}function -gm(a,b){return+(cN(a,b,false)<0)}function -bL(a,d){if(a<0)dy();var +a=0;abr){a-=br;b*=Math.pow(2,br);if(a>br){a-=br;b*=Math.pow(2,br)}}if(a<-br){a+=br;b*=Math.pow(2,-br)}b*=Math.pow(2,a);return b}function +Hi(a,b){return+(cT(a,b,false)<=0)}function +gV(a,b){return+(cT(a,b,false)<0)}function +bM(a,d){if(a<0)dG();var a=a+1|0,b=new Array(a);b[0]=0;for(var c=1;c>>32-b,c)}function g(c,b,d,e,h,f,g){return a(b&d|~b&e,c,b,h,f,g)}function @@ -669,14 +713,14 @@ h(d,b,e,c,h,f,g){return a(b&c|e&~c,d,b,h,f,g)}function i(c,b,d,e,h,f,g){return a(b^d^e,c,b,h,f,g)}function j(c,b,d,e,h,f,g){return a(d^(b|~e),c,b,h,f,g)}function k(f,n){var -e=n;f[e>>2]|=a7<<8*(e&3);for(e=(e&~0x3)+8;(e&0x3F)<60;e+=4)f[(e>>2)-1]=0;f[(e>>2)-1]=n<<3;f[e>>2]=n>>29&0x1FFFFFFF;var +e=n;f[e>>2]|=a8<<8*(e&3);for(e=(e&~0x3)+8;(e&0x3F)<60;e+=4)f[(e>>2)-1]=0;f[(e>>2)-1]=n<<3;f[e>>2]=n>>29&0x1FFFFFFF;var k=[0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476];for(e=0;e>8*m&0xFF;return o}return function(h,g,f){var -e=[];switch(h.t&6){default:b6(h);case +e=[];switch(h.t&6){default:b8(h);case 0:var d=h.c;for(var a=0;a>2]=d.charCodeAt(b)|d.charCodeAt(b+1)<<8|d.charCodeAt(b+2)<<16|d.charC 4:var c=h.c;for(var a=0;a>2]=c[b]|c[b+1]<<8|c[b+2]<<16|c[b+3]<<24}for(;a>2]|=c[a+g]<<8*(a&3)}return E3(k(e,f))}}();function -EP(c,b,a){return EO(bJ(c),b,a)}var -bq=new +b=a+g;e[a>>2]=c[b]|c[b+1]<<8|c[b+2]<<16|c[b+3]<<24}for(;a>2]|=c[a+g]<<8*(a&3)}return Hz(k(e,f))}}();function +Hl(c,b,a){return Hk(bL(c),b,a)}function +Hm(){return 0}var +bv=new Array();function -gn(c){var -a=bq[c];if(!a.opened)_("Cannot flush a closed channel");if(!a.buffer||a.buffer==u)return 0;if(a.fd&&af.fds[a.fd]&&af.fds[a.fd].output){var +ck(c){var +a=bv[c];if(!a.opened)Q("Cannot flush a closed channel");if(!a.buffer||a.buffer==o)return 0;if(a.fd&&af.fds[a.fd]&&af.fds[a.fd].output){var b=af.fds[a.fd].output;switch(b.length){case -2:b(c,a.buffer);break;default:b(a.buffer)}}a.buffer=u;return 0}function -kZ(e,f){var -b=bq[e],d=a(f),c=K(d);b.file.write(b.offset,d,0,c);b.offset+=c;return 0}function -Fb(a){var -a=gs(a),b=E;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stderr.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var +2:b(c,a.buffer);break;default:b(a.buffer)}}a.buffer=o;return 0}function +mN(e,f){var +b=bv[e],d=a(f),c=F(d);b.file.write(b.offset,d,0,c);b.offset+=c;return 0}function +HI(a){var +a=g2(a),b=A;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stderr.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var c=b.console;c&&c.error&&c.error(a)}}function -Fc(a){var -a=gs(a),b=E;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stdout.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var +HJ(a){var +a=g2(a),b=A;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stdout.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var c=b.console;c&&c.log&&c.log(a)}}function -eQ(c,e,d,a){if(af.fds===undefined)af.fds=new +e7(c,e,d,a){if(af.fds===undefined)af.fds=new Array();a=a?a:{};var b={};b.file=d;b.offset=a.append?d.length():0;b.flags=a;b.output=e;af.fds[c]=b;if(!af.fd_last_idx||c>af.fd_last_idx)af.fd_last_idx=c;return c}function -Fs(c,b,g){var +H4(c,b,g){var a={};while(b){switch(b[1]){case 0:a.rdonly=1;break;case 1:a.wronly=1;break;case @@ -713,125 +758,127 @@ a={};while(b){switch(b[1]){case 5:a.excl=1;break;case 6:a.binary=1;break;case 7:a.text=1;break;case -8:a.nonblock=1;break}b=b[2]}if(a.rdonly&&a.wronly)_(ba(c)+ih);if(a.text&&a.binary)_(ba(c)+iJ);var -d=k5(c),e=d.device.open(d.rest,a),f=af.fd_last_idx?af.fd_last_idx:0;return eQ(f+1,kZ,e,a)}eQ(0,kZ,new -at(ae(0)));eQ(1,Fc,new -at(ae(0)));eQ(2,Fb,new -at(ae(0)));function -EQ(c){var -b=af.fds[c];if(b.flags.wronly)_(jf+c+" is writeonly");var -a={file:b.file,offset:b.offset,fd:c,opened:true,out:false,refill:null};bq[a.fd]=a;return a.fd}function -kT(c){var -b=af.fds[c];if(b.flags.rdonly)_(jf+c+" is readonly");var -a={file:b.file,offset:b.offset,fd:c,opened:true,out:true,buffer:u};bq[a.fd]=a;return a.fd}function -ER(){var +8:a.nonblock=1;break}b=b[2]}if(a.rdonly&&a.wronly)Q(bc(c)+jf);if(a.text&&a.binary)Q(bc(c)+jS);var +d=m0(c),e=d.device.open(d.rest,a),f=af.fd_last_idx?af.fd_last_idx:0;return e7(f+1,mN,e,a)}e7(0,mN,new +as(ae(0)));e7(1,HJ,new +as(ae(0)));e7(2,HI,new +as(ae(0)));function +Hn(a){var +c=af.fds[a];if(c.flags.wronly)Q(kA+a+" is writeonly");var +d=null;if(a==0&&mQ()){var +e=require("fs");d=function(){return aM(e.readFileSync(0,iE))}}var +b={file:c.file,offset:c.offset,fd:a,opened:true,out:false,refill:d};bv[b.fd]=b;return b.fd}function +mH(c){var +b=af.fds[c];if(b.flags.rdonly)Q(kA+c+" is readonly");var +a={file:b.file,offset:b.offset,fd:c,opened:true,out:true,buffer:o};bv[a.fd]=a;return a.fd}function +Ho(){var b=0;for(var -a=0;a>>0)return a[0];else -if(dD(a))return fY;else -if(eJ(a))return fY;else +if(dL(a))return ez;else +if(e1(a))return ez;else if(a instanceof Function||typeof a=="function")return 247;else -if(a&&a.caml_custom)return cG;else -return a4}function -a_(b,c,a){if(a&&E.toplevelReloc)b=E.toplevelReloc(a);af[b+1]=c;if(a)af[a]=c}var -kU={};function -E0(a,b){kU[ba(a)]=b;return 0}function -E1(a){a[2]=kX++;return a}function -gr(a,b){return kI(a,b)}function -E2(){ag(f0)}function -D(b,a){if(a>>>0>=K(b))E2();return cT(b,a)}function -ah(a,b){return 1-gr(a,b)}function -E4(){return[0,a("js_of_ocaml")]}function -E5(){return 0x7FFFFFFF/4|0}function -E6(){return[0,a("Unix"),32,0]}function -EY(){eN(af.Not_found)}function -eP(c){var -a=E,b=aY(c);if(a.process&&a.process.env&&a.process.env[b]!=undefined)return bb(a.process.env[b]);if(E.jsoo_static_env&&E.jsoo_static_env[b])return bb(E.jsoo_static_env[b]);EY()}function -E7(){var +if(a&&a.caml_custom)return cM;else +return a5}function +a_(b,c,a){if(a&&A.toplevelReloc)b=A.toplevelReloc(a);af[b+1]=c;if(a)af[a]=c}function +gZ(a,b){mJ[bc(a)]=b;return 0}function +Hw(a){a[2]=mL++;return a}function +g1(a,b){return mv(a,b)}function +Hy(){ag(gp)}function +D(b,a){if(a>>>0>=F(b))Hy();return cY(b,a)}function +am(a,b){return 1-g1(a,b)}function +HA(){return[0,a("js_of_ocaml")]}function +HB(){return 0x7FFFFFFF/4|0}function +HC(a){return 0}function +Hu(){e4(af.Not_found)}function +mO(c){var +a=A,b=aZ(c);if(a.process&&a.process.env&&a.process.env[b]!=undefined)return aM(a.process.env[b]);if(A.jsoo_static_env&&A.jsoo_static_env[b])return aM(A.jsoo_static_env[b]);Hu()}function +HD(){var a=new -Date().getTime(),b=a^i9*Math.random();return[0,b]}function -dF(a){var +Date().getTime(),b=a^kr*Math.random();return[0,b]}function +dO(a){var b=1;while(a&&a.joo_tramp){a=a.joo_tramp.apply(null,a.joo_args);b++}return a}function -ao(b,a){return{joo_tramp:b,joo_args:a}}function -E8(c,a){if(typeof +an(b,a){return{joo_tramp:b,joo_args:a}}function +HE(c,a){if(typeof a==="function"){c.fun=a;return 0}if(a.fun){c.fun=a.fun;return 0}var b=a.length;while(b--)c[b]=a[b];return 0}function -kY(a){return a}function -eM(a){return kU[a]}function +mM(a){return a}function d(a){if(a instanceof -Array)return a;if(E.RangeError&&a +Array)return a;if(A.RangeError&&a instanceof -E.RangeError&&a.message&&a.message.match(/maximum call stack/i))return kY(af.Stack_overflow);if(E.InternalError&&a +A.RangeError&&a.message&&a.message.match(/maximum call stack/i))return mM(af.Stack_overflow);if(A.InternalError&&a instanceof -E.InternalError&&a.message&&a.message.match(/too much recursion/i))return kY(af.Stack_overflow);if(a +A.InternalError&&a.message&&a.message.match(/too much recursion/i))return mM(af.Stack_overflow);if(a instanceof -E.Error&&eM(fN))return[0,eM(fN),a];return[0,af.Failure,bb(String(a))]}var -t=function(A){"use strict";var -f=cd,ac=7,s=9007199254740992,J=p(s),O="0123456789abcdefghijklmnopqrstuvwxyz",g=E.BigInt,H=typeof +A.Error&&bN(gd))return[0,bN(gd),a];return[0,af.Failure,aM(String(a))]}var +t=function(B){"use strict";var +f=cg,ac=7,u=9007199254740992,J=q(u),O="0123456789abcdefghijklmnopqrstuvwxyz",g=A.BigInt,H=typeof g==="function";function d(a,b,c,f){if(typeof a==="undefined")return d[0];if(typeof b!=="undefined")return+b===10&&!c?e(a):ag(a,b,c,f);return e(a)}function -a(b,a){this.value=b;this.sign=a;this.isSmall=false;this.caml_custom=es}a.prototype=Object.create(d.prototype);function -b(a){this.value=a;this.sign=a<0;this.isSmall=true;this.caml_custom=es}b.prototype=Object.create(d.prototype);function -c(a){this.value=a;this.caml_custom=es}c.prototype=Object.create(d.prototype);function -m(a){return-s0)return Math.floor(a);return Math.ceil(a)}function +s(a){if(a>0)return Math.floor(a);return Math.ceil(a)}function P(g,h){var i=g.length,j=h.length,e=new Array(i),b=0,d=f,c,a;for(a=0;a=d?1:0;e[a]=c-b*d}while(a0)e.push(b);return e}function v(a,b){if(a.length>=b.length)return P(a,b);return P(b,a)}function -B(g,a){var +C(g,a){var h=g.length,d=new Array(h),c=f,e,b;for(b=0;b0){d[b++]=a%c;a=Math.floor(a/c)}return d}a.prototype.add=function(f){var b=e(f);if(this.sign!==b.sign)return this.subtract(b.negate());var c=this.value,d=b.value;if(b.isSmall)return new -a(B(c,Math.abs(d)),this.sign);return new +a(C(c,Math.abs(d)),this.sign);return new a(v(c,d),this.sign)};a.prototype.plus=a.prototype.add;b.prototype.add=function(g){var f=e(g),c=this.value;if(c<0!==f.sign)return this.subtract(f.negate());var d=f.value;if(f.isSmall){if(m(c+d))return new -b(c+d);d=p(Math.abs(d))}return new -a(B(d,Math.abs(c)),c<0)};b.prototype.plus=b.prototype.add;c.prototype.add=function(a){return new +b(c+d);d=q(Math.abs(d))}return new +a(C(d,Math.abs(c)),c<0)};b.prototype.plus=b.prototype.add;c.prototype.add=function(a){return new c(this.value+e(a).value)};c.prototype.plus=c.prototype.add;function y(d,h){var g=d.length,i=h.length,c=new Array(g),e=0,j=f,a,b;for(a=0;a=0)c=y(e,f);else{c=y(f,e);d=!d}c=n(c);if(typeof +c;if(p(e,f)>=0)c=y(e,f);else{c=y(f,e);d=!d}c=n(c);if(typeof c==="number"){if(d)c=-c;return new b(c)}return new a(c,d)}function @@ -855,56 +902,56 @@ a(this.value,false)};b.prototype.abs=function(){return new b(Math.abs(this.value))};c.prototype.abs=function(){return new c(this.value>=0?this.value:-this.value)};function N(g,j){var -i=g.length,l=j.length,n=i+l,c=C(n),m=f,e,d,a,h,k;for(a=0;a0){e[b++]=a%c;a=Math.floor(a/c)}return e}function Z(c,b){var a=[];while(b-->0)a.push(0);return a.concat(c)}function -D(b,c){var +E(b,c){var a=Math.max(b.length,c.length);if(a<=30)return N(b,c);a=Math.ceil(a/2);var -f=b.slice(a),d=b.slice(0,a),i=c.slice(a),h=c.slice(0,a),e=D(d,h),g=D(f,i),k=D(v(d,f),v(h,i)),j=v(v(e,Z(y(y(k,e),g),a)),Z(g,2*a));q(j);return j}function -al(a,b){return-(iS*a)-iS*b+0.000015*a*b>0}a.prototype.multiply=function(j){var +f=b.slice(a),d=b.slice(0,a),i=c.slice(a),h=c.slice(0,a),e=E(d,h),g=E(f,i),k=E(v(d,f),v(h,i)),j=v(v(e,Z(y(y(k,e),g),a)),Z(g,2*a));r(j);return j}function +al(a,b){return-(j5*a)-j5*b+0.000015*a*b>0}a.prototype.multiply=function(j){var h=e(j),c=this.value,b=h.value,i=this.sign!==h.sign,g;if(h.isSmall){if(b===0)return d[0];if(b===1)return this;if(b===-1)return this.negate();g=Math.abs(b);if(g=0;d--){j=g-1;if(b[d+h]!==l)j=Math.floor((b[d+h]*g+b[d+h-1])/l);c=0;e=0;m=i.length;for(a=0;a=0;d--){j=g-1;if(b[d+h]!==l)j=Math.floor((b[d+h]*g+b[d+h-1])/l);c=0;e=0;m=i.length;for(a=0;ah)d=(d+1)*i;c=Math.ceil(d/m);do{j=w(b,c);if(o(j,a)<=0)break;c--}while(c);e.push(c);a=y(a,j)}e.reverse();return[n(e),n(a)]}function +l=k.length,h=b.length,e=[],a=[],i=f,c,g,d,m,j;while(l){a.unshift(k[--l]);r(a);if(p(a,b)<0){e.push(0);continue}g=a.length;d=a[g-1]*i+a[g-2];m=b[h-1]*i+b[h-2];if(g>h)d=(d+1)*i;c=Math.ceil(d/m);do{j=w(b,c);if(p(j,a)<=0)break;c--}while(c);e.push(c);a=y(a,j)}e.reverse();return[n(e),n(a)]}function Q(i,e){var -g=i.length,h=C(g),j=f,a,d,b,c;b=0;for(a=g-1;a>=0;--a){c=b*j+i[a];d=r(c/e);b=c-d*e;h[a]=d|0}return[h,b|0]}function +g=i.length,h=D(g),j=f,a,d,b,c;b=0;for(a=g-1;a>=0;--a){c=b*j+i[a];d=s(c/e);b=c-d*e;h[a]=d|0}return[h,b|0]}function i(h,w){var m,j=e(w);if(H)return[new c(h.value/j.value),new c(h.value%j.value)];var l=h.value,i=j.value,g;if(i===0)throw new Error("Cannot divide by zero");if(h.isSmall){if(j.isSmall)return[new -b(r(l/i)),new +b(s(l/i)),new b(l%i)];return[d[0],h]}if(j.isSmall){if(i===1)return[h,d[0]];if(i==-1)return[h.negate(),d[0]];var -s=Math.abs(i);if(sc.length?1:-1;for(var +p(b,c){if(b.length!==c.length)return b.length>c.length?1:-1;for(var a=b.length-1;a>=0;a--)if(b[a]!==c[a])return b[a]>c[a]?1:-1;return 0}a.prototype.compareAbs=function(d){var -a=e(d),b=this.value,c=a.value;if(a.isSmall)return 1;return o(b,c)};b.prototype.compareAbs=function(d){var +a=e(d),b=this.value,c=a.value;if(a.isSmall)return 1;return p(b,c)};b.prototype.compareAbs=function(d){var c=e(d),b=Math.abs(this.value),a=c.value;if(c.isSmall){a=Math.abs(a);return b===a?0:b>a?1:-1}return-1};c.prototype.compareAbs=function(c){var a=this.value,b=e(c).value;a=a>=0?a:-a;b=b>=0?b:-b;return a===b?0:a>b?1:-1};a.prototype.compare=function(b){if(b===Infinity)return-1;if(b===-Infinity)return 1;var -a=e(b),c=this.value,d=a.value;if(this.sign!==a.sign)return a.sign?1:-1;if(a.isSmall)return this.sign?-1:1;return o(c,d)*(this.sign?-1:1)};a.prototype.compareTo=a.prototype.compare;b.prototype.compare=function(c){if(c===Infinity)return-1;if(c===-Infinity)return 1;var +a=e(b),c=this.value,d=a.value;if(this.sign!==a.sign)return a.sign?1:-1;if(a.isSmall)return this.sign?-1:1;return p(c,d)*(this.sign?-1:1)};a.prototype.compareTo=a.prototype.compare;b.prototype.compare=function(c){if(c===Infinity)return-1;if(c===-Infinity)return 1;var b=e(c),a=this.value,d=b.value;if(b.isSmall)return a==d?0:a>d?1:-1;if(a<0!==b.sign)return a<0?-1:1;return a<0?1:-1};b.prototype.compareTo=b.prototype.compare;c.prototype.compare=function(a){if(a===Infinity)return-1;if(a===-Infinity)return 1;var b=this.value,c=e(a).value;return b===c?0:b>c?1:-1};c.prototype.compareTo=c.prototype.compare;a.prototype.equals=function(a){return this.compare(a)===0};c.prototype.eq=c.prototype.equals=b.prototype.eq=b.prototype.equals=a.prototype.eq=a.prototype.equals;a.prototype.notEquals=function(a){return this.compare(a)!==0};c.prototype.neq=c.prototype.notEquals=b.prototype.neq=b.prototype.notEquals=a.prototype.neq=a.prototype.notEquals;a.prototype.greater=function(a){return this.compare(a)>0};c.prototype.gt=c.prototype.greater=b.prototype.gt=b.prototype.greater=a.prototype.gt=a.prototype.greater;a.prototype.lesser=function(a){return this.compare(a)<0};c.prototype.lt=c.prototype.lesser=b.prototype.lt=b.prototype.lesser=a.prototype.lt=a.prototype.lesser;a.prototype.greaterOrEquals=function(a){return this.compare(a)>=0};c.prototype.geq=c.prototype.greaterOrEquals=b.prototype.geq=b.prototype.greaterOrEquals=a.prototype.geq=a.prototype.greaterOrEquals;a.prototype.lesserOrEquals=function(a){return this.compare(a)<=0};c.prototype.leq=c.prototype.lesserOrEquals=b.prototype.leq=b.prototype.lesserOrEquals=a.prototype.leq=a.prototype.lesserOrEquals;a.prototype.isEven=function(){return(this.value[0]&1)===0};b.prototype.isEven=function(){return(this.value&1)===0};c.prototype.isEven=function(){return(this.value&g(1))===g(0)};a.prototype.isOdd=function(){return(this.value[0]&1)===1};b.prototype.isOdd=function(){return(this.value&1)===1};c.prototype.isOdd=function(){return(this.value&g(1))===g(1)};a.prototype.isPositive=function(){return!this.sign};b.prototype.isPositive=function(){return this.value>0};c.prototype.isPositive=b.prototype.isPositive;a.prototype.isNegative=function(){return this.sign};b.prototype.isNegative=function(){return this.value<0};c.prototype.isNegative=b.prototype.isNegative;a.prototype.isUnit=function(){return false};b.prototype.isUnit=function(){return Math.abs(this.value)===1};c.prototype.isUnit=function(){return this.abs().value===g(1)};a.prototype.isZero=function(){return false};b.prototype.isZero=function(){return this.value===0};c.prototype.isZero=function(){return this.value===g(0)};a.prototype.isDivisibleBy=function(b){var a=e(b);if(a.isZero())return false;if(a.isUnit())return true;if(a.compareAbs(2)===0)return this.isEven();return this.mod(a).isZero()};c.prototype.isDivisibleBy=b.prototype.isDivisibleBy=a.prototype.isDivisibleBy;function @@ -939,24 +986,24 @@ T(b){var a=b.abs();if(a.isUnit())return false;if(a.equals(2)||a.equals(3)||a.equals(5))return true;if(a.isEven()||a.isDivisibleBy(3)||a.isDivisibleBy(5))return false;if(a.lesser(49))return true}function L(d,e){var g=d.prev(),c=g,h=0,f,i,b,a;while(c.isEven())c=c.divide(2),h++;next:for(b=0;b-s)return new +a(C(b,1),true);return G(b,1,this.sign)};b.prototype.prev=function(){var +c=this.value;if(c-1>-u)return new b(c-1);return new a(J,true)};c.prototype.prev=function(){return new c(this.value-g(1))};var @@ -964,10 +1011,10 @@ h=[1];while(2*h[h.length-1]<=f)h.push(2*h[h.length-1]);var x=h.length,j=h[x-1];function _(a){return Math.abs(a)<=f}a.prototype.shiftLeft=function(c){var a=e(c).toJSNumber();if(!_(a))throw new -Error(String(a)+iu);if(a<0)return this.shiftRight(-a);var +Error(String(a)+jv);if(a<0)return this.shiftRight(-a);var b=this;if(b.isZero())return b;while(a>=x){b=b.multiply(j);a-=x-1}return b.multiply(h[a])};c.prototype.shiftLeft=b.prototype.shiftLeft=a.prototype.shiftLeft;a.prototype.shiftRight=function(d){var a,b=e(d).toJSNumber();if(!_(b))throw new -Error(String(b)+iu);if(b<0)return this.shiftLeft(-b);var +Error(String(b)+jv);if(b<0)return this.shiftLeft(-b);var c=this;while(b>=x){if(c.isZero()||c.isNegative()&&c.isUnit())return c;a=i(c,j);c=a[1].isNegative()?a[0].prev():a[0];b-=x-1}a=i(c,h[b]);return a[1].isNegative()?a[0].prev():a[0]};c.prototype.shiftRight=b.prototype.shiftRight=a.prototype.shiftRight;function K(h,a,q){a=e(a);var m=h.isNegative(),p=a.isNegative(),l=m?h.not():h,o=p?a.not():a,b=0,c=0,k=null,n=null,f=[];while(!l.isZero()||!o.isZero()){k=i(l,j);b=k[1].toJSNumber();if(m)b=j-1-b;n=i(o,j);c=n[1].toJSNumber();if(p)c=j-1-c;l=k[0];o=n[0];f.push(q(b,c))}var @@ -990,25 +1037,25 @@ ai(a,b){a=e(a);b=e(b);var g=M(a,b),n=U(a,b),h=n.subtract(g).add(1);if(h.isSmall)return g.add(Math.floor(Math.random()*h));var j=z(h,f).value,l=[],k=true;for(var c=0;c=i){if(c===X&&i===1)continue;throw new -Error(c+" is not a valid digit in base "+g+bB)}}g=e(g);var -h=[],j=b[0]===aC;for(a=j?1:0;a=0;a--){b=b.add(e[a].times(c));c=c.times(f)}return g?b.negate():b}function -aj(b,a){a=a||O;if(b=0){e=c.divmod(b);c=e.quotient;var d=e.remainder;if(d.isNegative()){d=b.minus(d).abs();c=c.next()}g.push(d.toJSNumber())}g.push(c.toJSNumber());return{value:g.reverse(),isNegative:f}}function aa(d,c,b){var -a=z(d,c);return(a.isNegative?aC:u)+a.value.map(function(a){return aj(a,b)}).join(u)}a.prototype.toArray=function(a){return z(this,a)};b.prototype.toArray=function(a){return z(this,a)};c.prototype.toArray=function(a){return z(this,a)};a.prototype.toString=function(a,f){if(a===A)a=10;if(a!==10)return aa(this,a,f);var +a=z(d,c);return(a.isNegative?aB:o)+a.value.map(function(a){return aj(a,b)}).join(o)}a.prototype.toArray=function(a){return z(this,a)};b.prototype.toArray=function(a){return z(this,a)};c.prototype.toArray=function(a){return z(this,a)};a.prototype.toString=function(a,f){if(a===B)a=10;if(a!==10)return aa(this,a,f);var d=this.value,c=d.length,e=String(d[--c]),h="0000000",b;while(--c>=0){b=String(d[c]);e+=h.slice(b.length)+b}var -g=this.sign?aC:u;return g+e};b.prototype.toString=function(a,b){if(a===A)a=10;if(a!=10)return aa(this,a,b);return String(this.value)};c.prototype.toString=b.prototype.toString;c.prototype.toJSON=a.prototype.toJSON=b.prototype.toJSON=function(){return this.toString()};a.prototype.valueOf=function(){return parseInt(this.toString(),10)};a.prototype.toJSNumber=a.prototype.valueOf;b.prototype.valueOf=function(){return this.value};b.prototype.toJSNumber=b.prototype.valueOf;c.prototype.valueOf=c.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function +g=this.sign?aB:o;return g+e};b.prototype.toString=function(a,b){if(a===B)a=10;if(a!=10)return aa(this,a,b);return String(this.value)};c.prototype.toString=b.prototype.toString;c.prototype.toJSON=a.prototype.toJSON=b.prototype.toJSON=function(){return this.toString()};a.prototype.valueOf=function(){return parseInt(this.toString(),10)};a.prototype.toJSNumber=a.prototype.valueOf;b.prototype.valueOf=function(){return this.value};b.prototype.toJSNumber=b.prototype.valueOf;c.prototype.valueOf=c.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function Y(d){if(m(+d)){var -n=+d;if(n===r(n))return H?new +n=+d;if(n===s(n))return H?new c(g(n)):new b(n);throw new -Error(ew+d)}var -s=d[0]===aC;if(s)d=d.slice(1);var +Error(eN+d)}var +q=d[0]===aB;if(q)d=d.slice(1);var h=d.split(/e/i);if(h.length>2)throw new -Error(ew+h.join(eB));if(h.length===2){var -e=h[1];if(e[0]===bA)e=e.slice(1);e=+e;if(e!==r(e)||!m(e))throw new -Error(ew+e+" is not a valid exponent.");var -f=h[0],i=f.indexOf(bB);if(i>=0){e-=f.length-i-1;f=f.slice(0,i)+f.slice(i+1)}if(e<0)throw new +Error(eN+h.join(eT));if(h.length===2){var +e=h[1];if(e[0]===bF)e=e.slice(1);e=+e;if(e!==s(e)||!m(e))throw new +Error(eN+e+" is not a valid exponent.");var +f=h[0],i=f.indexOf(bl);if(i>=0){e-=f.length-i-1;f=f.slice(0,i)+f.slice(i+1)}if(e<0)throw new Error("Cannot include negative exponent part for integers");f+=new Array(e+1).join(k);d=f}var t=/^([0-9][0-9]*)$/.test(d);if(!t)throw new -Error(ew+d);if(H)return new -c(g(s?aC+d:d));var -p=[],j=d.length,o=ac,l=j-o;while(j>0){p.push(+d.slice(l,j));l-=o;if(l<0)l=0;j-=o}q(p);return new -a(p,s)}function +Error(eN+d);if(H)return new +c(g(q?aB+d:d));var +p=[],j=d.length,o=ac,l=j-o;while(j>0){p.push(+d.slice(l,j));l-=o;if(l<0)l=0;j-=o}r(p);return new +a(p,q)}function ah(a){if(H)return new -c(g(a));if(m(a)){if(a!==r(a))throw new +c(g(a));if(m(a)){if(a!==s(a))throw new Error(a+" is not an integer.");return new b(a)}return Y(a.toString())}function e(a){if(typeof @@ -1046,123 +1093,151 @@ a==="number")return ah(a);if(typeof a==="string")return Y(a);if(typeof a==="bigint")return new c(a);return a}for(var -l=0;l0)d[-l]=e(-l)}d.one=d[1];d.zero=d[0];d.minusOne=d[-1];d.max=U;d.min=M;d.gcd=R;d.lcm=af;d.isInstance=function(d){return d +l=0;l0)d[-l]=e(-l)}d.one=d[1];d.zero=d[0];d.minusOne=d[-1];d.max=U;d.min=M;d.gcd=R;d.lcm=af;d.isInstance=function(d){return d instanceof a||d instanceof b||d instanceof c};d.randBetween=ai;d.fromArray=function(b,a,c){return W(b.map(e),e(a||10),c)};return d}();function -aJ(a){var +aH(a){var b=a.toJSNumber()|0;if(a.equals(t(b)))return b;return a}function -Fg(a){return aJ(t(a).abs())}function -M(a,b){return aJ(t(a).add(t(b)))}function -cj(a,b){return t(a).compare(t(b))}function -k1(b,a){a=t(a);if(a.equals(t(0)))cQ();return aJ(t(b).divide(t(a)))}function -Fo(b,a){a=t(a);if(a.equals(t(0)))cQ();return aJ(t(b).mod(a))}function -k2(a,b){return[0,k1(a,b),Fo(a,b)]}function -k3(a,b){return k1(a,b)}function -Fh(a,b){return t(a).equals(t(b))}function -Fj(a,b){return aJ(t.gcd(t(a),t(b)).abs())}function -E_(c,e,g){e=t(e);var +mS(a){return aH(t(a).abs())}function +mT(a,b){return aH(t(a).add(t(b)))}function +co(a,b){return t(a).compare(t(b))}function +mU(b,a){a=t(a);if(a.equals(t(0)))cW();return aH(t(b).divide(t(a)))}function +HY(b,a){a=t(a);if(a.equals(t(0)))cW();return aH(t(b).mod(a))}function +mV(a,b){return[0,mU(a,b),HY(a,b)]}function +mW(a,b){return mU(a,b)}function +HO(a,b){return t(a).equals(t(b))}function +HQ(a,b){return aH(t.gcd(t(a),t(b)).abs())}function +HG(c,e,g){e=t(e);var a=e.toArray(Math.pow(2,32));c.write(8,a.isNegative?1:0);var f=a.value.length,d=f*4;c.write(32,d);for(var -b=f-1;b>=0;b--){c.write(8,a.value[b]>>>0&aX);c.write(8,a.value[b]>>>8&aX);c.write(8,a.value[b]>>>16&aX);c.write(8,a.value[b]>>>24&aX)}g[0]=4*(1+((d+3)/4|0));g[1]=8*(1+((d+7)/8|0))}function -E$(b,g){var +b=f-1;b>=0;b--){c.write(8,a.value[b]>>>0&aY);c.write(8,a.value[b]>>>8&aY);c.write(8,a.value[b]>>>16&aY);c.write(8,a.value[b]>>>24&aY)}g[0]=4*(1+((d+3)/4|0));g[1]=8*(1+((d+7)/8|0))}function +HH(b,g){var e;switch(b.read8u()){case 1:e=true;break;case -0:e=false;break;default:cg("input_value: z (malformed input)")}var +0:e=false;break;default:b9("input_value: z (malformed input)")}var f=b.read32u(),c=t(0);for(var d=0;d>>0);c=a.shiftLeft(d*32).add(c)}if(e)c=c.negate();g[0]=f+4;return aJ(c)}function -Fk(d){var +a=t(b.read8u());a=a.add(b.read8u()<<8);a=a.add(b.read8u()<<16);a=a.add(b.read8u()<<24>>>0);c=a.shiftLeft(d*32).add(c)}if(e)c=c.negate();g[0]=f+4;return aH(c)}function +HR(d){var b=t(d).toArray(Math.pow(2,32)),a=0;for(var c=0;c=48&&a<=57)return a-48;if(a>=97&&a<=cB)return a-97+10;if(a>=65&&a<=70)return a-65+10}var -e=0;if(a[e]==aC)e++;for(;e=c)ag("Z.of_substring_base: invalid digit")}return aJ(t(a,c))}function -ck(d,a,b,c){a=ba(a);if(b!=0||c!=a.length){if(a.length-b=0?1:0}function -eR(a){a=t(a);if(!Fi(a))eN(eM(fS));var -b=t(i9),d=a.and(b).toJSNumber(),c=a.shiftRight(32).and(b).toJSNumber(),e=kR(d,c);return e}function -eS(){return new -Date().getTime()/a4}function -cV(e){var +if(d==lK||d=="X")c=16;else +if(d=="b"||d=="B")c=2;if(c!=10){a=a.substring(b+1);if(g==-1)a=aB+a}}}}if(a[0]==bF)a=a.substring(1);a=a.replace(/^0+/,o);if(a==aB||a==o)a=k;function +h(a){if(a>=48&&a<=57)return a-48;if(a>=97&&a<=cH)return a-97+10;if(a>=65&&a<=70)return a-65+10}var +e=0;if(a[e]==aB)e++;for(;e=c)ag("Z.of_substring_base: invalid digit")}return aH(t(a,c))}function +cp(d,a,b,c){a=bc(a);if(b!=0||c!=a.length){if(a.length-b=0?1:0}function +e8(a){a=t(a);if(!HP(a))e4(bN(gh));var +b=t(kr),d=a.and(b).toJSNumber(),c=a.shiftRight(32).and(b).toJSNumber(),e=mF(d,c);return e}function +e9(){return new +Date().getTime()/a5}function +c0(e){var a=new -Date(e*a4),b=a.getTime(),d=new -Date(Date.UTC(a.getUTCFullYear(),0,1)).getTime(),c=Math.floor((b-d)/h$);return[0,a.getUTCSeconds(),a.getUTCMinutes(),a.getUTCHours(),a.getUTCDate(),a.getUTCMonth(),a.getUTCFullYear()-bZ,a.getUTCDay(),c,false|0]}function -eT(){return 0}function -Fr(h){var +Date(e*a5),b=a.getTime(),d=new +Date(Date.UTC(a.getUTCFullYear(),0,1)).getTime(),c=Math.floor((b-d)/i4);return[0,a.getUTCSeconds(),a.getUTCMinutes(),a.getUTCHours(),a.getUTCDate(),a.getUTCMonth(),a.getUTCFullYear()-b1,a.getUTCDay(),c,false|0]}function +e_(){return 0}function +H3(h){var a=new -Date(h*a4),b=a.getTime(),e=new -Date(a.getFullYear(),0,1).getTime(),c=Math.floor((b-e)/h$),d=new +Date(h*a5),b=a.getTime(),e=new +Date(a.getFullYear(),0,1).getTime(),c=Math.floor((b-e)/i4),d=new Date(a.getFullYear(),0,1),f=new -Date(a.getFullYear(),6,1),g=Math.max(d.getTimezoneOffset(),f.getTimezoneOffset());return[0,a.getSeconds(),a.getMinutes(),a.getHours(),a.getDate(),a.getMonth(),a.getFullYear()-bZ,a.getDay(),c,a.getTimezoneOffset()f)a+=eH;var +c=e[d];if(typeof +c=="number")a+=c.toString();else +if(c +instanceof +bt)a+=ex+c.toString()+ex;else +if(typeof +c=="string")a+=ex+c.toString()+ex;else +a+=lr}a+=")"}else +if(b[0]==M)a+=b[1];return a}function +mB(a){if(a +instanceof +Array&&(a[0]==0||a[0]==M)){var +c=bN(kR);if(c)c(a,false);else{var +d=GV(a),b=bN(iD);if(b)b(0);A.console.error(gy+d+iT)}}else +throw a}function +Hx(){var +a=A;if(a.process&&a.process.on)a.process.on("uncaughtException",function(b,c){mB(b);a.process.exit(2)});else +if(a.addEventListener)a.addEventListener("error",function(a){if(a.error)mB(a.error)})}Hx();function +c(a,b){return a.length==1?a(b):bb(a,[b])}function +h(a,b,c){return a.length==2?a(b,c):bb(a,[b,c])}function +P(a,b,c,d){return a.length==3?a(b,c,d):bb(a,[b,c,d])}function +f6(a,b,c,d,e,f){return a.length==5?a(b,c,d,e,f):bb(a,[b,c,d,e,f])}function +GJ(a,b,c,d,e,f,g,h){return a.length==7?a(b,c,d,e,f,g,h):bb(a,[b,c,d,e,f,g,h])}GW();var +fa=[M,a(ks),-1],g_=[M,a(kS),-2],dP=[M,a(kW),-3],g6=[M,a(lq),-4],g$=[M,a(jY),-6],aI=[M,a(lx),-7],g8=[M,a(i3),-8],g9=[M,a(lA),-9],I=[M,a(lW),-11],ha=[M,a(kG),gr],hx=[0,ch],GI=[4,0,0,0,[12,45,[4,0,0,0,0]]],fm=[0,[11,a('File "'),[2,0,[11,a('", line '),[4,0,0,0,[11,a(k$),[4,0,0,0,[12,45,[4,0,0,0,[11,a(": "),[2,0,0]]]]]]]]]],a('File "%s", line %d, characters %d-%d: %s')],cy=[0,0,0],el=[0,a(le),a(k9),a(lB)];a_(11,ha,kG);a_(10,I,lW);a_(9,[M,a(jr),-10],jr);a_(8,g9,lA);a_(7,g8,i3);a_(6,aI,lx);a_(5,g$,jY);a_(4,[M,a(kX),-5],kX);a_(3,g6,lq);a_(2,dP,kW);a_(1,g_,kS);a_(0,fa,ks);var +ne=a("output_substring"),nb=a("%.12g"),na=a(bl),m_=a("true"),m$=a("false"),m1=a("Stdlib.Exit"),m3=b_(0,0,lv),m5=b_(0,0,65520),m7=b_(1,0,lv),ng=a("\\\\"),nh=a("\\'"),ni=a("\\b"),nj=a("\\t"),nk=a("\\n"),nl=a("\\r"),nf=a("Char.chr"),nn=a("hd"),nq=a("String.blit / Bytes.blit_string"),np=a("Bytes.blit"),no=a("String.sub / Bytes.sub"),ns=a("String.contains_from / Bytes.contains_from"),nv=a("Array.blit"),nu=a("Array.sub"),nA=a("Map.remove_min_elt"),nB=[0,0,0,0],nC=[0,a("map.ml"),go,10],nD=[0,0,0],nw=a(es),nx=a(es),ny=a(es),nz=a(es),nE=a("Stdlib.Queue.Empty"),nG=a("CamlinternalLazy.Undefined"),nN=a("Buffer.add_substring/add_subbytes"),nM=a("Buffer.add: cannot grow buffer"),nL=[0,a(lH),93,2],nK=[0,a(lH),94,2],nW=a("%c"),nX=a("%s"),nY=a(kF),nZ=a(i1),n0=a(lo),n1=a(kP),n2=a("%f"),n3=a("%B"),n4=a("%{"),n5=a("%}"),n6=a("%("),n7=a("%)"),n8=a("%a"),n9=a("%t"),n_=a("%?"),n$=a("%r"),oa=a("%_r"),ob=[0,a(ap),850,23],om=[0,a(ap),814,21],oe=[0,a(ap),815,21],on=[0,a(ap),818,21],of=[0,a(ap),819,21],oo=[0,a(ap),822,19],og=[0,a(ap),823,19],op=[0,a(ap),826,22],oh=[0,a(ap),827,22],oq=[0,a(ap),831,30],oi=[0,a(ap),832,30],ok=[0,a(ap),836,26],oc=[0,a(ap),837,26],ol=[0,a(ap),846,28],od=[0,a(ap),847,28],oj=[0,a(ap),851,23],ps=a(jl),pq=[0,a(ap),1558,4],pr=a("Printf: bad conversion %["),pt=[0,a(ap),1626,39],pu=[0,a(ap),1649,31],pv=[0,a(ap),1650,31],pw=a("Printf: bad conversion %_"),px=a(jg),py=a(jt),pz=a(jg),pA=a(jt),po=a(gt),pm=a("neg_infinity"),pn=a(l2),pl=a(bl),o7=a("%+nd"),o8=a("% nd"),o_=a("%+ni"),o$=a("% ni"),pa=a("%nx"),pb=a("%#nx"),pc=a("%nX"),pd=a("%#nX"),pe=a("%no"),pf=a("%#no"),o6=a("%nd"),o9=a(lo),pg=a("%nu"),oU=a("%+ld"),oV=a("% ld"),oX=a("%+li"),oY=a("% li"),oZ=a("%lx"),o0=a("%#lx"),o1=a("%lX"),o2=a("%#lX"),o3=a("%lo"),o4=a("%#lo"),oT=a("%ld"),oW=a(i1),o5=a("%lu"),oH=a("%+Ld"),oI=a("% Ld"),oK=a("%+Li"),oL=a("% Li"),oM=a("%Lx"),oN=a("%#Lx"),oO=a("%LX"),oP=a("%#LX"),oQ=a("%Lo"),oR=a("%#Lo"),oG=a("%Ld"),oJ=a(kP),oS=a("%Lu"),ou=a("%+d"),ov=a("% d"),ox=a("%+i"),oy=a("% i"),oz=a("%x"),oA=a("%#x"),oB=a("%X"),oC=a("%#X"),oD=a("%o"),oE=a("%#o"),ot=a(gB),ow=a(kF),oF=a(jl),nO=a("@]"),nP=a("@}"),nQ=a("@?"),nR=a("@\n"),nS=a("@."),nT=a("@@"),nU=a("@%"),nV=a("@"),or=a("CamlinternalFormat.Type_mismatch"),pE=a(o),pF=[0,[11,a(eH),[2,0,[2,0,0]]],a(", %s%s")],p5=[0,[11,a(gy),[2,0,[12,10,0]]],a(lQ)],p6=[0,[11,a("Fatal error in uncaught exception handler: exception "),[2,0,[12,10,0]]],a("Fatal error in uncaught exception handler: exception %s\n")],p4=a("Fatal error: out of memory in uncaught exception handler"),p2=[0,[11,a(gy),[2,0,[12,10,0]]],a(lQ)],pX=[0,[2,0,[12,10,0]],a("%s\n")],pY=[0,[11,a(i7),0],a(i7)],pP=a("Raised at"),pQ=a("Re-raised at"),pR=a("Raised by primitive operation at"),pS=a("Called from"),pT=a(" (inlined)"),pV=a(o),pU=[0,[2,0,[12,32,[2,0,[11,a(' in file "'),[2,0,[12,34,[2,0,[11,a(", line "),[4,0,0,0,[11,a(k$),GI]]]]]]]]]],a('%s %s in file "%s"%s, line %d, characters %d-%d')],pW=[0,[2,0,[11,a(" unknown location"),0]],a("%s unknown location")],pK=a("Out of memory"),pL=a("Stack overflow"),pM=a("Pattern matching failed"),pN=a("Assertion failed"),pO=a("Undefined recursive module"),pG=[0,[12,40,[2,0,[2,0,[12,41,0]]]],a("(%s%s)")],pH=a(o),pI=a(o),pJ=[0,[12,40,[2,0,[12,41,0]]],a("(%s)")],pD=[0,[4,0,0,0,0],a(gB)],pB=[0,[3,0,0],a("%S")],pC=a(lr),pZ=[0,a(o),a("(Cannot print locations:\n bytecode executable program file not found)"),a("(Cannot print locations:\n bytecode executable program file appears to be corrupt)"),a("(Cannot print locations:\n bytecode executable program file has wrong magic number)"),a("(Cannot print locations:\n bytecode executable program file cannot be opened;\n -- too many open files. Try running with OCAMLRUNPARAM=b=2)")],p9=a("Fun.Finally_raised: "),p7=a("Stdlib.Fun.Finally_raised"),p_=a(lK),GG=a("OCAMLRUNPARAM"),GE=a("CAMLRUNPARAM"),p$=a(o),qv=[3,0,3],qw=a(bl),qq=a(eU),qr=a("<\/"),qs=a(o),qm=a(eU),qn=a(gk),qo=a(o),qk=a("\n"),qj=[0,a(o)],qf=a(o),qg=a(o),qh=a(o),qi=a(o),qe=[0,a(o),0,a(o)],qd=a(o),qc=a("Stdlib.Format.String_tag"),qJ=a(o),qO=a(jB),qQ=a(mg),qR=a(kv),qS=a(iS),qT=a(kq),qU=a(k6),qV=a(jR),qW=a(li),qX=a(gb),qY=a(jU),qZ=a(lh),q0=a(kj),q1=a(lj),q2=a(jQ),q3=a(iC),q4=a(mj),q5=a(iR),q6=a(iZ),q7=a(ka),q8=a(kQ),q9=a(eR),q_=a(jb),q$=a(l5),ra=a(ln),rb=a(lO),rc=a(kJ),rd=a(eJ),re=a(gC),rf=a(i9),rg=a(i8),rh=a(j6),ri=a(l8),rj=a(l3),rk=a(ma),rl=a(jC),rm=a(i2),rn=a(jo),ro=a(k0),rp=a(me),rq=a(kg),rr=a(jH),rs=a(kt),rt=a(iY),ru=a(kk),rv=a(iF),rw=a(ll),rx=a(lZ),ry=a(jF),rz=a(i$),rA=a(kd),rB=a(kK),rC=a(jX),rD=a(kU),rE=a(kp),rF=a(lk),rG=a(jT),rH=a(jD),rI=a(lG),rJ=a(lb),rK=a(lS),rL=a(k_),rM=a(k5),rN=a(k4),rO=a(iX),rP=a(jK),rQ=a(jj),rR=a(lu),rS=a(lL),rT=[0,[11,a("EUNKNOWNERR "),[4,0,0,0,0]],a("EUNKNOWNERR %d")],qP=[0,[11,a("Unix.Unix_error(Unix."),[2,0,[11,a(eH),[3,0,[11,a(eH),[3,0,[12,41,0]]]]]]],a("Unix.Unix_error(Unix.%s, %S, %S)")],qK=a(dC),qL=a(o),qM=a(o),qN=a(dC),rU=a("0.0.0.0"),rV=a("127.0.0.1"),GD=a("::"),GC=a("::1"),r$=a(o),sa=a(o),sg=[0,92],si=a("\\( group not closed by \\)"),sh=[0,a(iJ),gi,10],sj=a("[ class not closed by ]"),sk=a("spurious \\) in regular expression"),sc=a("too many r* or r+ where r is nullable"),sd=a(o),se=a(o),sb=[0,a(iJ),213,11],sq=[0,a(k1),52,4],sp=[0,a(k1),58,34],so=a("Not a valid time zone"),uC=a("Not a month"),uA=a("Not a day"),ux=a("from_business: bad week"),uy=a("from_business: bad date"),tK=[0,a(kL),jW,4],tJ=[0,a(kL),gH,4],tC=[0,-4713,12,31],tD=[0,ld,1,23],tE=[0,dw,10,14],tF=[0,dw,10,5],tA=a("Date.Out_of_bounds"),tB=a("Date.Undefined"),t0=a("Date.Period.Not_computable"),t9=[0,31,59,90,bW,f9,181,212,gA,273,304,334,ey],uG=[0,a(eM),429,6],uF=[0,a(eM),lE,4],uE=[0,a(eM),167,6],uD=[0,a(eM),67,4],uK=a("[a-zA-Z]+"),uQ=b_(1,0,0),uL=a("Z.Overflow"),uN=a(gh),uU=a(o),uV=a("+inf"),uW=a("-inf"),uX=a(l9),uY=a("undef"),u0=[0,a("q.ml"),486,25],uZ=a("Q.of_string: invalid digit"),uS=a("impossible case"),u1=a("Runtime.EmptyError"),u2=a("Runtime.AssertionFailed"),u4=a("Runtime.ConflictError"),u6=a("Runtime.ImpossibleDate"),u8=a("Runtime.NoValueProvided"),FM=[0,a(aX),96,20,96,64,[0,a(a6),[0,a(aW),[0,a(s),0]]]],FL=[0,a(aA),[0,a("allocations_familiales.avait_enfant_\xc3\xa0_charge_avant_1er_janvier_2012"),0]],FK=[0,a(aA),[0,a("allocations_familiales.enfants_\xc3\xa0_charge"),0]],FJ=[0,a(aA),[0,a("allocations_familiales.date_courante"),0]],FI=[0,a(aA),[0,a("allocations_familiales.r\xc3\xa9sidence"),0]],FH=[0,a(aA),[0,a("allocations_familiales.ressources_m\xc3\xa9nage"),0]],FG=[0,a(aX),93,20,93,72,[0,a(a6),[0,a(aW),[0,a(s),0]]]],FF=[0,a(aA),[0,a("allocations_familiales.personne_charge_effective_permanente_remplit_titre_I"),0]],FE=[0,a(aX),90,20,90,67,[0,a(a6),[0,a(aW),[0,a(s),0]]]],FD=[0,a(aA),[0,a("allocations_familiales.personne_charge_effective_permanente_est_parent"),0]],Fz=[0,0],FA=[1,0],FB=[2,0],Fk=[0,a(aX),72,12,72,25,[0,a(a6),[0,a(aW),[0,a(s),0]]]],Fl=[0,a(aA),[0,a(eL),0]],Fm=[0,a(aX),73,12,73,19,[0,a(a6),[0,a(aW),[0,a(s),0]]]],Fn=[0,a(aA),[0,a(l1),0]],Fo=[0,a(aX),76,12,76,29,[0,a(a6),[0,a(aW),[0,a(s),0]]]],Fp=[0,a(aA),[0,a(kw),0]],Fq=[0,a(aX),77,12,77,21,[0,a(a6),[0,a(aW),[0,a(s),0]]]],Fr=[0,a(aA),[0,a(eS),0]],Fs=[0,a(aX),79,12,79,59,[0,a(a6),[0,a(aW),[0,a(s),0]]]],Ft=[0,a(aA),[0,a(l0),0]],Fu=[0,a(aX),80,12,80,64,[0,a(a6),[0,a(aW),[0,a(s),0]]]],Fv=[0,a(aA),[0,a(iI),0]],Fw=[0,a(aX),81,12,81,56,[0,a(a6),[0,a(aW),[0,a(s),0]]]],Fx=[0,a(aA),[0,a(ke),0]],Fy=[0,a(aX),74,12,74,28,[0,a(a6),[0,a(aW),[0,a(s),0]]]],FC=[0,a(aA),[0,a(kz),0]],FN=[0,a(aA),[0,a(iV),[0,a(e),0]]],FO=[0,a(aA),[0,a(iV),[0,a(e),0]]],FP=[0,a(aX),78,12,78,25,[0,a(a6),[0,a(aW),[0,a(s),0]]]],FQ=[0,a(aA),[0,a(jn),0]],EP=[0,a(e),[0,a(dt),[0,a(ax),0]]],EQ=[0,a(e),[0,a(dt),0]],ER=[0,a(e),[0,a(dt),[0,a(az),0]]],ES=[0,a(e),[0,a(dt),0]],Ez=[0,a(e),[0,a(bI),[0,a(ax),0]]],EA=[0,a(e),[0,a(bI),0]],EB=[0,a(e),[0,a(bI),[0,a(az),0]]],EC=[0,a(e),[0,a(bI),0]],ED=a(cF),EI=a(kB),EJ=a(dB),EE=[0,a(e),[0,a(dp),[0,a(ax),0]]],EF=[0,a(e),[0,a(dp),0]],EG=[0,a(e),[0,a(dp),[0,a(az),0]]],EH=[0,a(e),[0,a(dp),0]],Ey=[0,a(q),eA,12,eA,50,[0,a(p),0]],Ep=a(a7),Eq=[0,a(W),272,5,274,41,[0,a(cL),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],Er=a(a7),Es=a(cF),Et=a(a7),Ek=a(a7),El=[0,a(W),262,5,km,42,[0,a(cL),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],Em=a(a7),En=a(cF),Eo=a(a7),Ej=[0,a(W),lt,14,lt,55,[0,a(cL),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],Ei=a(k),D_=[0,a(e),[0,a(Y),[0,a(ax),0]]],D$=[0,a(e),[0,a(Y),0]],Ea=[0,a(e),[0,a(Y),[0,a(az),0]]],Eb=[0,a(e),[0,a(Y),0]],Ec=a(X),Ed=a(ga),Ee=[0,a(W),382,5,385,23,[0,a(eP),[0,a(b2),[0,a(dm),[0,a(bK),[0,a(V),[0,a(w),0]]]]]]],Ef=a("0.0567"),D1=[0,a(e),[0,a(Y),[0,a(ax),0]]],D2=[0,a(e),[0,a(Y),0]],D3=[0,a(e),[0,a(Y),[0,a(az),0]]],D4=[0,a(e),[0,a(Y),0]],D5=a(X),D6=a("11"),D7=a(ga),D8=[0,a(W),373,5,f8,42,[0,a(eP),[0,a(b2),[0,a(dm),[0,a(bK),[0,a(V),[0,a(w),0]]]]]]],D9=a("0.0369"),D0=[0,a(W),22,14,22,40,[0,a(aS),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],DW=[0,a(e),[0,a(du),[0,a(ax),0]]],DX=[0,a(e),[0,a(du),0]],DY=[0,a(e),[0,a(du),[0,a(az),0]]],DZ=[0,a(e),[0,a(du),0]],DV=[0,a(q),em,12,em,38,[0,a(p),0]],DR=[8,0],DS=[0,a(u),lI,5,lI,24,[0,a(dz),[0,a(J),[0,a(K),[0,a(s),0]]]]],DP=a(X),DQ=[0,a(W),350,5,351,69,[0,a(eP),[0,a(b2),[0,a(dm),[0,a(bK),[0,a(V),[0,a(w),0]]]]]]],DO=[0,a(W),18,14,18,34,[0,a(aS),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],DH=[0,a(e),[0,a(dy),[0,a(ax),0]]],DI=[0,a(e),[0,a(dy),0]],DJ=[0,a(e),[0,a(dy),[0,a(az),0]]],DK=[0,a(e),[0,a(dy),0]],DL=a(X),Dy=[0,a(e),[0,a(Y),[0,a(ax),0]]],Dz=[0,a(e),[0,a(Y),0]],DA=[0,a(e),[0,a(Y),[0,a(az),0]]],DB=[0,a(e),[0,a(Y),0]],DC=[0,a(aX),27,5,27,44,[0,a("R\xc3\xa8gles diverses"),[0,a(aW),[0,a(s),0]]]],DD=a(k),Ds=[0,a(e),[0,a(Y),[0,a(ax),0]]],Dt=[0,a(e),[0,a(Y),0]],Du=[0,a(e),[0,a(Y),[0,a(az),0]]],Dv=[0,a(e),[0,a(Y),0]],Dw=[0,a(W),cK,3,cK,41,[0,a(aS),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],Dx=a("0.04"),Dm=[0,a(e),[0,a(Y),[0,a(ax),0]]],Dn=[0,a(e),[0,a(Y),0]],Do=[0,a(e),[0,a(Y),[0,a(az),0]]],Dp=[0,a(e),[0,a(Y),0]],Dq=[0,a(W),95,3,96,44,[0,a(aS),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],Dr=a(ju),Dg=[0,a(e),[0,a(Y),[0,a(ax),0]]],Dh=[0,a(e),[0,a(Y),0]],Di=[0,a(e),[0,a(Y),[0,a(az),0]]],Dj=[0,a(e),[0,a(Y),0]],Dk=[0,a(W),55,3,55,41,[0,a(aS),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],Dl=a(f7),Df=[0,a(o),0,1,0,1,0],De=[0,a(q),eK,12,eK,48,[0,a(p),0]],C6=[0,a(W),cP,3,cP,41,[0,a(aS),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],C7=a(X),C8=a(ju),C9=a(k),C2=[0,a(W),74,3,75,44,[0,a(aS),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],C3=a(X),C4=a(f7),C5=a(k),CY=[0,a(W),35,3,35,41,[0,a(aS),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],CZ=a(X),C0=a(lU),C1=a(k),CX=[0,a(o),0,1,0,1,0],CQ=[0,a(W),cP,3,cP,41,[0,a(aS),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],CR=a(ay),CS=a(ay),CT=a("0.1025"),CU=a(k),CL=[0,a(W),74,3,75,44,[0,a(aS),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],CM=a(ay),CN=a(ay),CO=a("0.205"),CP=a(k),CG=[0,a(W),35,3,35,41,[0,a(aS),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],CH=a(ay),CI=a(ay),CJ=a("0.41"),CK=a(k),CF=[0,a(o),0,1,0,1,0],CB=[0,a(W),gA,5,gA,43,[0,a(cL),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],CC=a("0.0559"),Cz=[0,a(W),229,5,lE,46,[0,a(cL),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],CA=a("0.1117"),Cx=[0,a(W),jy,5,jy,43,[0,a(cL),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],Cy=a("0.20234"),Cw=[0,a(o),0,1,0,1,0],Cp=a(a7),Cq=[0,a(W),170,5,171,68,[0,a(aS),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],Cr=a(a7),Cs=a(cF),Ct=a(a7),Ck=a(a7),Cl=[0,a(W),162,5,163,68,[0,a(aS),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],Cm=a(a7),Cn=a(cF),Co=a(a7),Cj=[0,a(W),iB,14,iB,34,[0,a(aS),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],Ci=a(k),Ch=[0,a(q),eu,12,eu,32,[0,a(p),0]],Ca=[0,a(e),[0,a(bm),[0,a(ax),0]]],Cb=[0,a(e),[0,a(bm),0]],Cc=[0,a(e),[0,a(bm),[0,a(az),0]]],Cd=[0,a(e),[0,a(bm),0]],Ce=[0,a(al),313,5,lM,58,[0,a(lP),[0,a(G),[0,a(H),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],B3=[0,a(e),[0,a(dD),[0,a(ax),0]]],B4=[0,a(e),[0,a(dD),0]],B5=[0,a(e),[0,a(dD),[0,a(az),0]]],B6=[0,a(e),[0,a(dD),0]],B7=[0,a(e),[0,a(bm),[0,a(ax),0]]],B8=[0,a(e),[0,a(bm),0]],B9=[0,a(e),[0,a(bm),[0,a(az),0]]],B_=[0,a(e),[0,a(bm),0]],B$=[0,a(al),299,5,300,58,[0,a(lP),[0,a(G),[0,a(H),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],B2=[0,a(q),cK,12,cK,35,[0,a(p),0]],Fa=[8,0],Fb=a(X),Fc=[0,a(u),344,5,345,72,[0,a(dz),[0,a(J),[0,a(K),[0,a(s),0]]]]],E_=a(X),E$=[0,a(al),406,5,407,72,[0,a(gl),[0,a(b2),[0,a(eF),[0,a(bK),[0,a(ak),[0,a(w),0]]]]]]],E8=a(ay),E9=[0,a(al),ev,5,ev,70,[0,a(ml),[0,a(G),[0,a(H),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],BO=[0,a(e),[0,a(bI),[0,a(ax),0]]],BP=[0,a(e),[0,a(bI),0]],BQ=[0,a(e),[0,a(bI),[0,a(az),0]]],BR=[0,a(e),[0,a(bI),0]],BS=a(cF),BT=a(kB),BU=a(dB),BF=[0,a(u),mc,5,mc,49,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],BG=a(k),BH=a("5728"),BI=a(k),BB=[0,a(u),497,5,498,53,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],BC=a(k),BD=a("0.0717"),BE=a(k),Bx=[0,a(u),489,5,490,53,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],By=a(k),Bz=a("0.0847"),BA=a(k),Bt=[0,a(u),481,5,482,53,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],Bu=a(k),Bv=a("0.0976"),Bw=a(k),Bp=[0,a(u),473,5,474,53,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],Bq=a(k),Br=a("0.115"),Bs=a(k),Bl=[0,a(u),465,5,466,53,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],Bm=a(k),Bn=a("0.1163"),Bo=a(k),Bh=[0,a(u),457,5,458,53,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],Bi=a(k),Bj=a("0.122"),Bk=a(k),Bd=[0,a(u),449,5,450,53,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],Be=a(k),Bf=a("0.1278"),Bg=a(k),A$=[0,a(u),441,5,442,53,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],Ba=a(k),Bb=a("0.1335"),Bc=a(k),A7=[0,a(u),433,5,434,53,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],A8=a(k),A9=a("0.1393"),A_=a(k),A3=[0,a(u),425,5,jx,53,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],A4=a(k),A5=a("0.145"),A6=a(k),A2=[0,a(u),md,14,md,57,[0,a(dz),[0,a(J),[0,a(K),[0,a(s),0]]]]],AZ=a(k),A0=a(jp),A1=a(k),AT=[0,a(u),kf,5,kf,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],AU=a(X),AV=a("0.3068"),AW=a(k),AP=[0,a(u),jz,5,jz,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],AQ=a(X),AR=a("0.2936"),AS=a(k),AL=[0,a(u),j0,5,j0,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],AM=a(X),AN=a("0.284"),AO=a(k),AH=[0,a(u),lf,5,lf,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],AI=a(X),AJ=a("0.2672"),AK=a(k),AD=[0,a(u),jq,5,jq,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],AE=a(X),AF=a("0.273"),AG=a(k),Az=[0,a(u),j_,5,j_,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],AA=a(X),AB=a("0.2555"),AC=a(k),Av=[0,a(u),j1,5,j1,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],Aw=a(X),Ax=a("0.2496"),Ay=a(k),Ar=[0,a(u),lF,5,lF,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],As=a(X),At=a("0.2437"),Au=a(k),An=[0,a(u),gi,5,gi,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],Ao=a(X),Ap=a("0.2379"),Aq=a(k),Aj=[0,a(u),k3,5,k3,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],Ak=a(X),Al=a("0.232"),Am=a(k),Ai=[0,a(u),lN,14,lN,58,[0,a(dz),[0,a(J),[0,a(K),[0,a(s),0]]]]],Af=a(X),Ag=a(lU),Ah=a(k),z$=[0,a(u),lJ,5,lJ,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],Aa=a(ay),Ab=a("0.143"),Ac=a(k),z7=[0,a(u),kE,5,kE,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],z8=a(ay),z9=a("0.1259"),z_=a(k),z3=[0,a(u),ky,5,ky,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],z4=a(ay),z5=a("0.1089"),z6=a(k),zZ=[0,a(u),iG,5,iG,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],z0=a(ay),z1=a("0.0918"),z2=a(k),zV=[0,a(u),l4,5,l4,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],zW=a(ay),zX=a("0.0842"),zY=a(k),zR=[0,a(u),l$,5,l$,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],zS=a(ay),zT=a("0.0766"),zU=a(k),zN=[0,a(u),lY,5,lY,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],zO=a(ay),zP=a("0.069"),zQ=a(k),zJ=[0,a(u),jk,5,jk,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],zK=a(ay),zL=a("0.075"),zM=a(k),zF=[0,a(u),kO,5,kO,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],zG=a(ay),zH=a("0.0539"),zI=a(k),zB=[0,a(u),jP,5,jP,69,[0,a(N),[0,a(J),[0,a(K),[0,a(s),0]]]]],zC=a(ay),zD=a(jL),zE=a(k),zA=[0,a(u),f8,14,f8,59,[0,a(dz),[0,a(J),[0,a(K),[0,a(s),0]]]]],zx=a(ay),zy=a(f7),zz=a(k),zo=a(X),zp=[0,a(al),420,6,421,72,[0,a(gl),[0,a(b2),[0,a(eF),[0,a(bK),[0,a(ak),[0,a(w),0]]]]]]],zj=[0,a(ab),[0,a(dv),[0,a(ax),0]]],zk=[0,a(ab),[0,a(dv),0]],zl=[0,a(ab),[0,a(dv),[0,a(az),0]]],zm=[0,a(ab),[0,a(dv),0]],zn=[0,a(al),jW,5,125,59,[0,a(ml),[0,a(G),[0,a(H),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],zi=[0,a(q),ba,12,ba,36,[0,a(p),0]],zb=[0,a(u),l6,5,l6,69,[0,a(b3),[0,a(j9),[0,a(bZ),[0,a(s),0]]]]],zc=a(js),zd=a("5827900"),y_=[0,a(u),bs,5,bs,69,[0,a(jO),[0,a(bZ),[0,a(s),0]]]],y$=a(lp),za=a("5775900"),y7=[0,a(u),bW,5,bW,69,[0,a(iK),[0,a(bZ),[0,a(s),0]]]],y8=a(lV),y9=a("5684900"),y4=[0,a(u),87,5,87,69,[0,a(l7),[0,a(bZ),[0,a(s),0]]]],y5=a(lg),y6=a("5628600"),y3=[0,a(W),ji,14,ji,30,[0,a(ku),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],y1=a(mi),y2=a("5595000"),yW=[0,a(u),j7,5,j7,69,[0,a(b3),[0,a(j9),[0,a(bZ),[0,a(s),0]]]]],yX=a(js),yY=a("8155800"),yT=[0,a(u),jM,5,jM,69,[0,a(jO),[0,a(bZ),[0,a(s),0]]]],yU=a(lp),yV=a("8083100"),yQ=[0,a(u),ba,5,ba,69,[0,a(iK),[0,a(bZ),[0,a(s),0]]]],yR=a(lV),yS=a("7955800"),yN=[0,a(u),94,5,94,69,[0,a(l7),[0,a(bZ),[0,a(s),0]]]],yO=a(lg),yP=a("7877000"),yM=[0,a(W),lT,14,lT,31,[0,a(ku),[0,a(G),[0,a(H),[0,a(E),[0,a(V),[0,a(w),0]]]]]]],yK=a(mi),yL=a("7830000"),yC=[0,a(ab),[0,a(dr),[0,a(ax),0]]],yD=[0,a(ab),[0,a(dr),0]],yE=[0,a(ab),[0,a(dr),[0,a(az),0]]],yF=[0,a(ab),[0,a(dr),0]],yz=[0,a(jh),83,19,83,69,[0,a("Article R521-1"),[0,a(G),[0,a(H),[0,a(E),[0,a(kY),[0,a(w),0]]]]]]],yy=a("14"),yx=[0,a(q),eG,12,eG,39,[0,a(p),0]],yt=[0,a(e),[0,a("enfant_le_plus_\xc3\xa2g\xc3\xa9.enfants"),0]],yq=[0,a(e),[0,a("prestations_familiales.r\xc3\xa9sidence"),0]],yo=[1,0],yp=[0,a(e),[0,a("prestations_familiales.prestation_courante"),0]],yn=[0,a(e),[0,a("prestations_familiales.date_courante"),0]],ya=[0,a(al),269,5,270,48,[0,a(bq),[0,a(G),[0,a(H),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],yb=[0,0],x_=[0,a(al),kH,5,259,56,[0,a(bq),[0,a(G),[0,a(H),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],x$=[1,0],x8=[0,a(al),kV,5,kV,70,[0,a(bq),[0,a(G),[0,a(H),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],x9=[0,0],x6=[0,a(al),la,5,la,69,[0,a(bq),[0,a(G),[0,a(H),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],x7=[0,0],x4=[0,a(al),jN,5,jN,60,[0,a(bq),[0,a(G),[0,a(H),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],x5=[0,0],x3=[0,a(o),0,1,0,1,0],x2=[0,a(q),ch,12,ch,21,[0,a(p),0]],xY=[0,a(al),263,5,km,48,[0,a(bq),[0,a(G),[0,a(H),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],xZ=[0,0],xW=[0,a(al),ly,5,ds,56,[0,a(bq),[0,a(G),[0,a(H),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],xX=[2,0],xU=[0,a(al),jw,5,jw,70,[0,a(bq),[0,a(G),[0,a(H),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],xV=[1,0],xS=[0,a(al),j2,5,j2,69,[0,a(bq),[0,a(G),[0,a(H),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],xT=[0,0],xQ=[0,a(al),lc,5,lc,60,[0,a(bq),[0,a(G),[0,a(H),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],xR=[0,0],xP=[0,a(o),0,1,0,1,0],xO=[0,a(q),cH,12,cH,27,[0,a(p),0]],xB=[0,a(q),90,12,90,59,[0,a(p),0]],xC=[0,a(e),[0,a(l0),0]],xD=[0,a(q),91,12,91,64,[0,a(p),0]],xE=[0,a(e),[0,a(iI),0]],xF=[0,a(q),92,12,92,29,[0,a(p),0]],xG=[0,a(e),[0,a(kw),0]],xH=[0,a(q),93,12,93,21,[0,a(p),0]],xI=[0,a(e),[0,a(eS),0]],xJ=[0,a(q),96,12,96,25,[0,a(p),0]],xK=[0,a(e),[0,a(eL),0]],xL=[0,a(q),99,12,99,28,[0,a(p),0]],xM=[0,a(e),[0,a(kz),0]],xN=[0,a(q),cH,12,cH,27,[0,a(p),0]],x0=[0,a(e),[0,a(bI),0]],x1=[0,a(q),ch,12,ch,21,[0,a(p),0]],yc=[0,a(e),[0,a("versement"),0]],yd=[0,a(q),bW,12,bW,56,[0,a(p),0]],ye=[0,a(e),[0,a(ke),0]],yg=a(eO),yf=[0,a(q),f9,12,f9,33,[0,a(p),0]],yh=[0,a(e),[0,a("nombre_enfants_l521_1"),0]],yj=a(eO),yi=[0,a(q),bs,12,bs,42,[0,a(p),0]],yk=[0,a(e),[0,a("nombre_enfants_alin\xc3\xa9a_2_l521_3"),0]],yl=[0,a(e),[0,a(jV),[0,a(gu),0]]],ym=[0,a(e),[0,a(jV),[0,a(gu),0]]],yr=[0,a(e),[0,a(lC),[0,a(ab),0]]],ys=[0,a(e),[0,a(lC),[0,a(ab),0]]],yu=[0,a(e),[0,a(kl),[0,a(eQ),0]]],yv=[0,a(e),[0,a(kl),[0,a(eQ),0]]],yw=[0,a(q),eG,12,eG,39,[0,a(p),0]],yA=[0,a(e),[0,a(bm),0]],yB=[0,a(q),aT,12,aT,62,[0,a(p),0]],yG=[0,a(e),[0,a("enfants_\xc3\xa0_charge_droit_ouvert_prestation_familiale"),0]],yH=[0,a(q),k2,12,k2,34,[0,a(p),0]],yI=[0,a(e),[0,a(dD),0]],yJ=[0,a(q),j4,12,j4,29,[0,a(p),0]],yZ=[0,a(e),[0,a("plafond_II_d521_3"),0]],y0=[0,a(q),jA,12,jA,28,[0,a(p),0]],ze=[0,a(e),[0,a("plafond_I_d521_3"),0]],Fh=a(X),Fi=[0,a(al),jx,5,427,71,[0,a(gl),[0,a(b2),[0,a(eF),[0,a(bK),[0,a(ak),[0,a(w),0]]]]]]],zf=[0,a(q),kC,12,kC,35,[0,a(p),0]],zg=[0,a(e),[0,a("droit_ouvert_compl\xc3\xa9ment"),0]],zh=[0,a(q),ba,12,ba,36,[0,a(p),0]],zq=[0,a(e),[0,a(dy),0]],zs=a(eO),zt=a(eO),zu=a(jL),Fg=a(k),zr=[0,a(q),dx,12,dx,65,[0,a(p),0]],zv=[0,a(e),[0,a("montant_initial_base_quatri\xc3\xa8me_enfant_et_plus_mayotte"),0]],zw=[0,a(q),kD,12,kD,57,[0,a(p),0]],Ad=[0,a(e),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_mayotte"),0]],Ae=[0,a(q),gH,12,gH,56,[0,a(p),0]],AX=[0,a(e),[0,a("montant_initial_base_deuxi\xc3\xa8me_enfant_mayotte"),0]],AY=[0,a(q),iP,12,iP,55,[0,a(p),0]],BJ=[0,a(e),[0,a("montant_initial_base_premier_enfant_mayotte"),0]],BK=[0,a(q),iW,12,iW,32,[0,a(p),0]],BL=[0,a(e),[0,a("nombre_total_enfants"),0]],BN=a(dB),BM=[0,a(q),gw,12,gw,32,[0,a(p),0]],BV=[0,a(e),[0,a("nombre_moyen_enfants"),0]],Fd=a(X),Fe=[0,a(W),kI,5,360,71,[0,a(eP),[0,a(b2),[0,a(dm),[0,a(bK),[0,a(V),[0,a(w),0]]]]]]],Ff=a(jp),BX=a(k),BW=[0,a(q),gE,12,gE,47,[0,a(p),0]],BY=[0,a(e),[0,a("montant_initial_base_premier_enfant"),0]],BZ=[0,a(q),kx,12,kx,29,[0,a(p),0]],B0=[0,a(e),[0,a("droit_ouvert_base"),0]],B1=[0,a(q),cK,12,cK,35,[0,a(p),0]],Cf=[0,a(e),[0,a(Y),0]],Cg=[0,a(q),eu,12,eu,32,[0,a(p),0]],Cu=[0,a(e),[0,a(dF),0]],Cv=[0,a(q),ci,12,ci,48,[0,a(p),0]],CD=[0,a(e),[0,a("montant_vers\xc3\xa9_forfaitaire_par_enfant"),0]],CE=[0,a(q),gF,12,gF,57,[0,a(p),0]],CV=[0,a(e),[0,a("montant_initial_base_troisi\xc3\xa8me_enfant_et_plus"),0]],CW=[0,a(q),gG,12,gG,48,[0,a(p),0]],C_=[0,a(e),[0,a("montant_initial_base_deuxi\xc3\xa8me_enfant"),0]],Da=a(dB),Db=a(dB),C$=[0,a(q),cP,12,cP,39,[0,a(p),0]],Dc=[0,a(e),[0,a("rapport_enfants_total_moyen"),0]],Dd=[0,a(q),eK,12,eK,48,[0,a(p),0]],DE=[0,a(e),[0,a(du),0]],DG=a(k),DF=[0,a(q),iU,12,iU,37,[0,a(p),0]],DM=[0,a(e),[0,a("montant_vers\xc3\xa9_forfaitaire"),0]],DN=[0,a(q),jI,12,jI,32,[0,a(p),0]],DT=[0,a(e),[0,a("montant_initial_base"),0]],DU=[0,a(q),em,12,em,38,[0,a(p),0]],Eg=[0,a(e),[0,a(dp),0]],Eh=[0,a(q),ko,12,ko,53,[0,a(p),0]],Eu=[0,a(e),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_forfaitaire"),0]],Ev=[0,a(q),gm,12,gm,44,[0,a(p),0]],Ew=[0,a(e),[0,a("montant_avec_garde_altern\xc3\xa9e_base"),0]],Ex=[0,a(q),eA,12,eA,50,[0,a(p),0]],EK=[0,a(e),[0,a(dt),0]],E7=a(k),EL=[0,a(q),lX,12,lX,30,[0,a(p),0]],EM=[0,a(e),[0,a("montant_vers\xc3\xa9_base"),0]],EO=a(k),E6=a(k),EN=[0,a(q),kN,12,kN,36,[0,a(p),0]],ET=[0,a(e),[0,a("montant_vers\xc3\xa9_majoration"),0]],EU=[0,a(q),k8,12,k8,59,[0,a(p),0]],EV=[0,a(e),[0,a("montant_base_compl\xc3\xa9ment_pour_base_et_majoration"),0]],EX=[0,a(e),[0,a(dF),[0,a(ax),0]]],EY=[0,a(e),[0,a(dF),0]],EZ=[0,a(e),[0,a(dF),[0,a(az),0]]],E0=[0,a(e),[0,a(dF),0]],E5=a(k),EW=[0,a(q),kn,12,kn,60,[0,a(p),0]],E1=[0,a(e),[0,a("montant_vers\xc3\xa9_compl\xc3\xa9ment_pour_base_et_majoration"),0]],E4=a(k),E2=[0,a(q),iL,12,iL,25,[0,a(p),0]],E3=[0,a(e),[0,a(jn),0]],xo=[0,a(al),60,5,62,32,[0,a(gn),[0,a(gg),[0,a(gc),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],xn=[0,a(al),49,5,50,50,[0,a(gn),[0,a(gg),[0,a(gc),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],xm=[0,a(o),0,1,0,1,0],xl=[0,a(q),65,12,65,24,[0,a(p),0]],xi=[0,a(al),68,5,71,57,[0,a(gn),[0,a(gg),[0,a(gc),[0,a(E),[0,a(ak),[0,a(w),0]]]]]]],xh=[0,a(q),66,12,66,31,[0,a(p),0]],w9=[0,a(ab),[0,a("smic.r\xc3\xa9sidence"),0]],w8=[0,a(ab),[0,a("smic.date_courante"),0]],w5=[0,a(u),60,5,61,34,[0,a("Instruction interminist\xc3\xa9rielle n\xc2\xb0DSS/2B/2021/65 du 19 mars 2021 relative \xc3\xa0 la revalorisation au 1er avril 2021 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 la R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"),[0,a(gf),[0,a(s),0]]]],w6=a("41481"),w3=[0,a(u),44,5,45,34,[0,a("Instruction interminist\xc3\xa9rielle no DSS/SD2B/2020/33 du 18 f\xc3\xa9vrier 2020 relative \xc3\xa0 la revalorisation au 1er avril 2020 des prestations familiales servies en m\xc3\xa9tropole, en Guadeloupe, en Guyane, en Martinique, \xc3\xa0 La R\xc3\xa9union, \xc3\xa0 Saint-Barth\xc3\xa9lemy, \xc3\xa0 Saint-Martin et dans le d\xc3\xa9partement de Mayotte"),[0,a(gf),[0,a(s),0]]]],w4=a("41404"),w1=[0,a(u),24,5,25,34,[0,a("Instruction minist\xc3\xa9rielle N\xc2\xb0DSS/SD2B/2019/65 du 25 mars 2019 relative \xc3\xa0 la revalorisation au 1er avril 2019 des prestations familiales servies en m\xc3\xa9tropole"),[0,a(gf),[0,a(s),0]]]],w2=a("41316"),w0=[0,a(o),0,1,0,1,0],wR=a("20"),wQ=[0,a(q),68,12,68,24,[0,a(p),0]],wS=[0,a(ab),[0,a("\xc3\xa2ge_l512_3_2"),0]],wT=[0,a(q),70,12,70,25,[0,a(p),0]],wU=[0,a(ab),[0,a(eL),0]],wV=[0,a(q),71,12,71,31,[0,a(p),0]],wW=[0,a(ab),[0,a("prestation_courante"),0]],wX=[0,a(q),72,12,72,21,[0,a(p),0]],wY=[0,a(ab),[0,a(eS),0]],wZ=[0,a(q),74,12,74,26,[0,a(p),0]],w7=[0,a(ab),[0,a("base_mensuelle"),0]],w_=[0,a(ab),[0,a(mb),[0,a(dn),0]]],w$=[0,a(ab),[0,a(mb),[0,a(dn),0]]],xt=[0,0],xv=[1,0],xw=[2,0],xx=[3,0],xy=[4,0],xz=[5,0],xu=[0,a(al),354,5,kI,30,[0,a("Article L751-1"),[0,a("Chapitre 1er : G\xc3\xa9n\xc3\xa9ralit\xc3\xa9s"),[0,a(eF),[0,a(bK),[0,a(ak),[0,a(w),0]]]]]]],xa=[0,a(q),69,12,69,35,[0,a(p),0]],xb=[0,a(ab),[0,a("r\xc3\xa9gime_outre_mer_l751_1"),0]],xq=[0,a(jh),jc,18,jc,41,[0,a("Article R755-0-2"),[0,a(b2),[0,a(dm),[0,a(bK),[0,a(kY),[0,a(w),0]]]]]]],xr=a(lD),xs=a(jJ),xd=a(lD),xe=a(jJ),xc=[0,a(q),67,12,67,28,[0,a(p),0]],xf=[0,a(ab),[0,a("plafond_l512_3_2"),0]],xg=[0,a(q),66,12,66,31,[0,a(p),0]],xj=[0,a(ab),[0,a(dv),0]],xk=[0,a(q),65,12,65,24,[0,a(p),0]],xp=[0,a(ab),[0,a(dr),0]],wG=[0,a(q),84,12,84,19,[0,a(p),0]],wH=[0,a(eQ),[0,a(l1),0]],wJ=[2,0],wK=a(k),wL=a(k),wM=[1,0],wN=a(X),wI=[0,a(q),85,12,85,23,[0,a(p),0]],wO=[0,a(eQ),[0,a("le_plus_\xc3\xa2g\xc3\xa9"),0]],wD=a(ga),wC=[0,a(q),81,12,81,39,[0,a(p),0]],wE=[0,a(gu),[0,a(bm),0]],wx=[8,0],wy=[0,a(u),lM,5,317,6,[0,a(b3),[0,a(iM),[0,a(cE),[0,a(s),0]]]]],wz=a("774"),wn=[6,0],wq=[0,0],wr=[1,0],ws=[2,0],wt=[3,0],wu=[4,0],wv=[5,0],ww=[7,0],wo=[0,a(u),297,5,306,6,[0,a(b3),[0,a(iM),[0,a(cE),[0,a(s),0]]]]],wp=a("1025"),wk=[8,0],wl=[0,a(u),276,5,278,6,[0,a(b3),[0,a(je),[0,a(cE),[0,a(s),0]]]]],wm=a("766"),wa=[6,0],wd=[0,0],we=[1,0],wf=[2,0],wg=[3,0],wh=[4,0],wi=[5,0],wj=[7,0],wb=[0,a(u),kH,5,267,6,[0,a(b3),[0,a(je),[0,a(cE),[0,a(s),0]]]]],wc=a("1015"),v9=[8,0],v_=[0,a(u),237,5,239,6,[0,a(b3),[0,a(iH),[0,a(cE),[0,a(s),0]]]]],v$=a("757"),vZ=[6,0],v2=[0,0],v3=[1,0],v4=[2,0],v5=[3,0],v6=[4,0],v7=[5,0],v8=[7,0],v0=[0,a(u),219,5,228,6,[0,a(b3),[0,a(iH),[0,a(cE),[0,a(s),0]]]]],v1=a("1003"),vY=[0,a(o),0,1,0,1,0],vT=[0,a(q),41,12,41,25,[0,a(p),0]],vU=[0,a(dn),[0,a(eL),0]],vV=[0,a(q),42,12,42,21,[0,a(p),0]],vW=[0,a(dn),[0,a(eS),0]],vX=[0,a(q),43,12,43,24,[0,a(p),0]],wA=[0,a(dn),[0,a("brut_horaire"),0]],vK=a("a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"),vL=a("prise_en_charge"),vM=a("\xc3\xa2ge"),vN=a("date_de_naissance"),vO=a("r\xc3\xa9muneration_mensuelle"),vP=a("obligation_scolaire"),vQ=a("identifiant"),vR=[0,a("Enfant"),0],vE=a("d_a_d\xc3\xa9j\xc3\xa0_ouvert_droit_aux_allocations_familiales"),vF=a("d_prise_en_charge"),vG=a("d_date_de_naissance"),vH=a("d_r\xc3\xa9muneration_mensuelle"),vI=a("d_identifiant"),vJ=[0,a("EnfantEntr\xc3\xa9e"),0],vu=a("PrestationAccueilJeuneEnfant"),vw=a(e),vx=a("Compl\xc3\xa9mentFamilial"),vy=a("AllocationLogement"),vz=a("Allocation\xc3\x89ducationEnfantHandicap\xc3\xa9"),vA=a("AllocationSoutienFamilial"),vB=a("AllocationRentr\xc3\xa9eScolaire"),vC=a("AllocationJournali\xc3\xa8rePresenceParentale"),vv=[0,a("\xc3\x89l\xc3\xa9mentPrestationsFamiliales"),0],vk=a(kh),vm=a(kZ),vn=a(ja),vo=a("LaR\xc3\xa9union"),vp=a("SaintBarth\xc3\xa9lemy"),vq=a("SaintMartin"),vr=a(j3),vs=a("SaintPierreEtMiquelon"),vt=a(lw),vl=[0,a("Collectivit\xc3\xa9"),0],vg=a("Avant"),vi=a("Pendant"),vj=a("Apr\xc3\xa8s"),vh=[0,a("SituationObligationScolaire"),0],va=a("GardeAltern\xc3\xa9ePartageAllocations"),vc=a("GardeAltern\xc3\xa9eAllocataireUnique"),vd=a("EffectiveEtPermanente"),ve=a("ServicesSociauxAllocationVers\xc3\xa9e\xc3\x80LaFamille"),vf=a("ServicesSociauxAllocationVers\xc3\xa9eAuxServicesSociaux"),vb=[0,a("PriseEnCharge"),0],FV=a("Js_of_ocaml__Js.Error"),FW=a(gd),Gw=a("Begin call"),Gx=a("End call"),Gy=a("Variable definition"),Gz=a("Decision taken"),Gk=a("Confi\xc3\xa9 aux service sociaux, allocation vers\xc3\xa9e aux services sociaux"),Gl=a("Confi\xc3\xa9 aux service sociaux, allocation vers\xc3\xa9e \xc3\xa0 la famille"),Gm=a("Effective et permanente"),Gn=a("Garde altern\xc3\xa9e, allocataire unique"),Go=a("Garde altern\xc3\xa9e, partage des allocations"),Gq=[0,0],Gr=[1,0],Gs=[2,0],Gt=[3,0],Gu=[4,0],Gp=a("Unknown prise en charge"),F3=a(kh),F4=a(kZ),F5=a("La R\xc3\xa9union"),F6=a(ja),F7=a(lw),F8=a(j3),F9=a("Saint Barth\xc3\xa9lemy"),F_=a("Saint Martin"),F$=a("Saint Pierre et Miquelon"),Gb=[7,0],Gc=[5,0],Gd=[4,0],Ge=[6,0],Gf=[8,0],Gg=[2,0],Gh=[3,0],Gi=[1,0],Gj=[0,0],Ga=a("unknown collectivite!"),F1=a(o),FZ=[0,[4,0,0,0,[12,68,[4,0,0,0,[12,77,[4,0,0,0,[12,89,0]]]]]],a("%dD%dM%dY")],FY=[0,a(k9),a(le),a(lB)];function +_(a){if(typeof a==="number")return 0;else switch(a[0]){case -0:return[0,$(a[1])];case -1:return[1,$(a[1])];case -2:return[2,$(a[1])];case -3:return[3,$(a[1])];case -4:return[4,$(a[1])];case -5:return[5,$(a[1])];case -6:return[6,$(a[1])];case -7:return[7,$(a[1])];case +0:return[0,_(a[1])];case +1:return[1,_(a[1])];case +2:return[2,_(a[1])];case +3:return[3,_(a[1])];case +4:return[4,_(a[1])];case +5:return[5,_(a[1])];case +6:return[6,_(a[1])];case +7:return[7,_(a[1])];case 8:var -c=a[1];return[8,c,$(a[2])];case +c=a[1];return[8,c,_(a[2])];case 9:var -b=a[1];return[9,b,b,$(a[3])];case -10:return[10,$(a[1])];case -11:return[11,$(a[1])];case -12:return[12,$(a[1])];case -13:return[13,$(a[1])];default:return[14,$(a[1])]}}function -aF(a,b){if(typeof +b=a[1];return[9,b,b,_(a[3])];case +10:return[10,_(a[1])];case +11:return[11,_(a[1])];case +12:return[12,_(a[1])];case +13:return[13,_(a[1])];default:return[14,_(a[1])]}}function +aD(a,b){if(typeof a==="number")return b;else switch(a[0]){case -0:return[0,aF(a[1],b)];case -1:return[1,aF(a[1],b)];case -2:return[2,aF(a[1],b)];case -3:return[3,aF(a[1],b)];case -4:return[4,aF(a[1],b)];case -5:return[5,aF(a[1],b)];case -6:return[6,aF(a[1],b)];case -7:return[7,aF(a[1],b)];case +0:return[0,aD(a[1],b)];case +1:return[1,aD(a[1],b)];case +2:return[2,aD(a[1],b)];case +3:return[3,aD(a[1],b)];case +4:return[4,aD(a[1],b)];case +5:return[5,aD(a[1],b)];case +6:return[6,aD(a[1],b)];case +7:return[7,aD(a[1],b)];case 8:var -c=a[1];return[8,c,aF(a[2],b)];case +c=a[1];return[8,c,aD(a[2],b)];case 9:var -d=a[2],e=a[1];return[9,e,d,aF(a[3],b)];case -10:return[10,aF(a[1],b)];case -11:return[11,aF(a[1],b)];case -12:return[12,aF(a[1],b)];case -13:return[13,aF(a[1],b)];default:return[14,aF(a[1],b)]}}function +d=a[2],e=a[1];return[9,e,d,aD(a[3],b)];case +10:return[10,aD(a[1],b)];case +11:return[11,aD(a[1],b)];case +12:return[12,aD(a[1],b)];case +13:return[13,aD(a[1],b)];default:return[14,aD(a[1],b)]}}function T(a,b){if(typeof a==="number")return b;else switch(a[0]){case @@ -1208,79 +1283,84 @@ E=a[1];return[21,E,T(a[2],b)];case 23:var F=a[1];return[23,F,T(a[2],b)];default:var G=a[2],H=a[1];return[24,H,G,T(a[3],b)]}}function -bu(a){throw[0,dJ,a]}function -ai(a){throw[0,gv,a]}var -gw=[R,k6,an(0)];function -dK(b,a){return kQ(b,a)?b:a}function -dL(a){return 0<=a?a:-a|0}var -k7=jI,k9=cP(k8),k$=cP(k_),lb=cP(la);function -bM(d,c){var -a=K(d),e=K(c),b=ae(a+e|0);b4(d,0,b,0,a);b4(c,0,b,a,e);return aD(b)}function -lc(a){return a?ld:le}EQ(0);var -lf=kT(1),lg=kT(2),eU=[0,function(b){function +e$(a,c,b){return a[1]===c?(a[1]=b,1):0}function +bx(a){throw[0,dP,a]}function +ah(a){throw[0,g6,a]}var +g7=[M,m1,ai(0)];function +dQ(b,a){return mE(b,a)?b:a}function +c1(a){return 0<=a?a:-a|0}var +m2=gv,m4=cV(m3),m6=cV(m5),m8=cV(m7);function +a$(d,c){var +a=F(d),e=F(c),b=ae(a+e|0);b6(d,0,b,0,a);b6(c,0,b,a,e);return aC(b)}function +m9(a){return a?m_:m$}Hn(0);var +nc=mH(1),be=mH(2);function +nd(b){function a(b){var a=b;for(;;){if(a){var -c=a[2],e=a[1];try{gn(e)}catch(a){a=d(a);if(a[1]!==gx)throw a;var +c=a[2],e=a[1];try{ck(e)}catch(a){a=d(a);if(a[1]!==g_)throw a;var f=a}var -a=c;continue}return 0}}return a(ER(0))}];function -li(b){var -a=[0,0],d=eU[1];eU[1]=function(e){if(1-a[1]){a[1]=1;c(b,0)}return c(d,0)};return 0}function -lj(a){return c(eU[1],0)}function -cl(a){if(0<=a&&!(cG>>0){if(!(25<(b+a$|0)>>>0))c=1}else +a=c;continue}return 0}}return a(Ho(0))}function +c2(b,a){return gW(b,a,0,F(a))}function +hb(a){c2(be,a);mI(be,10);return ck(be)}var +fb=[0,nd];function +hc(d){for(;;){var +a=fb[1],e=[0,1],b=1-e$(fb,a,function(a,b){return function(e){if(e$(a,1,0))c(d,0);return c(b,0)}}(e,a));if(b)continue;return b}}function +fc(a){return c(fb[1],0)}gZ(a(iD),fc);if(HC(0))hc(function(a){return GX(a)});function +cq(a){if(0<=a&&!(cM>>0){if(!(25<(b+ba|0)>>>0))c=1}else if(23!==b)c=1;return c?a+32|0:a}var -gA=E6(0)[1],gB=E5(0),cW=(4*gB|0)-1|0;an(0);var -lr=E4(0);function -gC(c){var +he=HB(0),c3=(4*he|0)-1|0;ai(0);var +nm=HA(0);function +hf(c){var b=0,a=c;for(;;){if(a){var b=b+1|0,a=a[2];continue}return b}}function -gD(a){return a?a[1]:bu(ls)}function -dM(d){var +hg(a){return a?a[1]:bx(nn)}function +dR(d){var a=d,b=0;for(;;){if(a){var c=[0,a[1],b],a=a[2],b=c;continue}return b}}typeof -lr==="number";function -b9(b,a){if(a){var -d=a[2],e=c(b,a[1]);return[0,e,b9(b,d)]}return 0}function -bc(a,c){var -b=ae(a);Ep(b,0,a,c);return b}function -gE(a){var -b=aZ(a),c=ae(b);b3(a,0,c,0,b);return c}function -dN(a){return aD(gE(a))}function -gF(c,b,a){if(0<=b&&0<=a&&!((aZ(c)-a|0)>>0))e=1}else +j=0;if(bW!==D(a,1)&&88!==D(a,1)){f=1;j=1}if(!j){a9(c,1,D(a,1));by(a,2,c,(d-b|0)+2|0,b-2|0)}}else +f=1;if(f)by(a,0,c,d-b|0,b)}}return aC(c)}function +cw(k,b){var +c=c1(k),a=F(b),d=D(b,0),e=0;if(58<=d){if(71<=d){if(!(5<(d+jG|0)>>>0))e=1}else if(65<=d)e=1}else{var -f=0;if(32!==d)if(43<=d)switch(d+kp|0){case +f=0;if(32!==d)if(43<=d)switch(d+l_|0){case 5:if(a<(c+2|0)&&1>>0){if(33<(n-61|0)>>>0)p=1}else +n=cY(k,j)+gD|0,p=0;if(59>>0){if(33<(n-61|0)>>>0)p=1}else if(2===n)p=1;if(!p){var j=j+1|0;continue}var -e=bJ(k),a=[0,0],r=aZ(e)-1|0,w=0;if(!(r<0)){var +e=bL(k),a=[0,0],r=a0(e)-1|0,w=0;if(!(r<0)){var i=w;for(;;){var -f=dz(e,i),g=0;if(32<=f){var +f=dH(e,i),g=0;if(32<=f){var l=f-34|0,q=0;if(58>>0){if(93<=l)q=1}else if(56<(l-1|0)>>>0){g=1;q=1}if(!q){var m=1;g=2}}else @@ -1980,40 +2078,40 @@ m=4;break;case 1:var m=2;break}a[1]=a[1]+m|0;var z=i+1|0;if(r!==i){var -i=z;continue}break}}if(a[1]===aZ(e))var -t=gE(e);else{var +i=z;continue}break}}if(a[1]===a0(e))var +t=hh(e);else{var b=ae(a[1]);a[1]=0;var -s=aZ(e)-1|0,x=0;if(!(s<0)){var +s=a0(e)-1|0,x=0;if(!(s<0)){var h=x;for(;;){var -c=dz(e,h),d=0;if(35<=c)if(92===c)d=2;else -if(a$<=c)d=1;else +c=dH(e,h),d=0;if(35<=c)if(92===c)d=2;else +if(ba<=c)d=1;else d=3;else if(32<=c)if(34<=c)d=2;else d=3;else if(14<=c)d=1;else switch(c){case -8:ad(b,a[1],92);a[1]++;ad(b,a[1],98);break;case -9:ad(b,a[1],92);a[1]++;ad(b,a[1],fX);break;case -10:ad(b,a[1],92);a[1]++;ad(b,a[1],f9);break;case -13:ad(b,a[1],92);a[1]++;ad(b,a[1],f5);break;default:d=1}switch(d){case -1:ad(b,a[1],92);a[1]++;ad(b,a[1],48+(c/aT|0)|0);a[1]++;ad(b,a[1],48+((c/10|0)%10|0)|0);a[1]++;ad(b,a[1],48+(c%10|0)|0);break;case -2:ad(b,a[1],92);a[1]++;ad(b,a[1],c);break;case -3:ad(b,a[1],c);break}a[1]++;var +8:ac(b,a[1],92);a[1]++;ac(b,a[1],98);break;case +9:ac(b,a[1],92);a[1]++;ac(b,a[1],gm);break;case +10:ac(b,a[1],92);a[1]++;ac(b,a[1],gE);break;case +13:ac(b,a[1],92);a[1]++;ac(b,a[1],gw);break;default:d=1}switch(d){case +1:ac(b,a[1],92);a[1]++;ac(b,a[1],48+(c/aT|0)|0);a[1]++;ac(b,a[1],48+((c/10|0)%10|0)|0);a[1]++;ac(b,a[1],48+(c%10|0)|0);break;case +2:ac(b,a[1],92);a[1]++;ac(b,a[1],c);break;case +3:ac(b,a[1],c);break}a[1]++;var y=h+1|0;if(s!==h){var h=y;continue}break}}var t=b}var -o=aD(t)}var -u=K(o),v=bc(u+2|0,34);b4(o,0,v,1,u);return aD(v)}}function -gS(d,f){var -g=dL(f),e=gT?gT[1]:70;switch(d[2]){case +o=aC(t)}var +u=F(o),v=bf(u+2|0,34);b6(o,0,v,1,u);return aC(v)}}function +hw(d,f){var +g=c1(f),e=hx?hx[1]:70;switch(d[2]){case 0:var -b=cB;break;case +b=cH;break;case 1:var -b=ej;break;case +b=ev;break;case 2:var b=69;break;case 3:var -b=ce;break;case +b=ch;break;case 4:var b=71;break;case 5:var @@ -2023,210 +2121,210 @@ b=104;break;case 7:var b=72;break;default:var b=70}var -c=gP(16);cq(c,37);switch(d[1]){case +c=hs(16);cv(c,37);switch(d[1]){case 0:break;case -1:cq(c,43);break;default:cq(c,32)}if(8<=d[2])cq(c,35);cq(c,46);av(c,a(u+g));cq(c,b);return gR(c)}function -dR(m,a){if(13<=m){var -g=[0,0],h=K(a)-1|0,n=0;if(!(h<0)){var -c=n;for(;;){if(!(9<(cT(a,c)+ec|0)>>>0))g[1]++;var +1:cv(c,43);break;default:cv(c,32)}if(8<=d[2])cv(c,35);cv(c,46);av(c,a(o+g));cv(c,b);return hu(c)}function +dW(m,a){if(13<=m){var +g=[0,0],h=F(a)-1|0,n=0;if(!(h<0)){var +c=n;for(;;){if(!(9<(cY(a,c)+eo|0)>>>0))g[1]++;var q=c+1|0;if(h!==c){var c=q;continue}break}}var -i=g[1],j=ae(K(a)+((i-1|0)/3|0)|0),k=[0,0],d=function(a){a9(j,k[1],a);k[1]++;return 0},e=[0,((i-1|0)%3|0)+1|0],l=K(a)-1|0,o=0;if(!(l<0)){var +i=g[1],j=ae(F(a)+((i-1|0)/3|0)|0),k=[0,0],d=function(a){a9(j,k[1],a);k[1]++;return 0},e=[0,((i-1|0)%3|0)+1|0],l=F(a)-1|0,o=0;if(!(l<0)){var b=o;for(;;){var -f=cT(a,b);if(9<(f+ec|0)>>>0)d(f);else{if(0===e[1]){d(95);e[1]=3}e[1]+=-1;d(f)}var +f=cY(a,b);if(9<(f+eo|0)>>>0)d(f);else{if(0===e[1]){d(95);e[1]=3}e[1]+=-1;d(f)}var p=b+1|0;if(l!==b){var -b=p;continue}break}}return aD(j)}return a}function -nm(b,c){switch(b){case +b=p;continue}break}}return aC(j)}return a}function +ph(b,c){switch(b){case 1:var -a=mz;break;case +a=ou;break;case 2:var -a=mA;break;case +a=ov;break;case 4:var -a=mC;break;case +a=ox;break;case 5:var -a=mD;break;case +a=oy;break;case 6:var -a=mE;break;case +a=oz;break;case 7:var -a=mF;break;case +a=oA;break;case 8:var -a=mG;break;case +a=oB;break;case 9:var -a=mH;break;case +a=oC;break;case 10:var -a=mI;break;case +a=oD;break;case 11:var -a=mJ;break;case +a=oE;break;case 0:case 13:var -a=my;break;case +a=ot;break;case 3:case 14:var -a=mB;break;default:var -a=mK}return dR(b,eE(a,c))}function -nn(b,c){switch(b){case +a=ow;break;default:var +a=oF}return dW(b,eW(a,c))}function +pi(b,c){switch(b){case 1:var -a=mZ;break;case +a=oU;break;case 2:var -a=m0;break;case +a=oV;break;case 4:var -a=m2;break;case +a=oX;break;case 5:var -a=m3;break;case +a=oY;break;case 6:var -a=m4;break;case +a=oZ;break;case 7:var -a=m5;break;case +a=o0;break;case 8:var -a=m6;break;case +a=o1;break;case 9:var -a=m7;break;case +a=o2;break;case 10:var -a=m8;break;case +a=o3;break;case 11:var -a=m9;break;case +a=o4;break;case 0:case 13:var -a=mY;break;case +a=oT;break;case 3:case 14:var -a=m1;break;default:var -a=m_}return dR(b,eE(a,c))}function -no(b,c){switch(b){case +a=oW;break;default:var +a=o5}return dW(b,eW(a,c))}function +pj(b,c){switch(b){case 1:var -a=na;break;case +a=o7;break;case 2:var -a=nb;break;case +a=o8;break;case 4:var -a=nd;break;case +a=o_;break;case 5:var -a=ne;break;case +a=o$;break;case 6:var -a=nf;break;case +a=pa;break;case 7:var -a=ng;break;case +a=pb;break;case 8:var -a=nh;break;case +a=pc;break;case 9:var -a=ni;break;case +a=pd;break;case 10:var -a=nj;break;case +a=pe;break;case 11:var -a=nk;break;case +a=pf;break;case 0:case 13:var -a=m$;break;case +a=o6;break;case 3:case 14:var -a=nc;break;default:var -a=nl}return dR(b,eE(a,c))}function -np(b,c){switch(b){case +a=o9;break;default:var +a=pg}return dW(b,eW(a,c))}function +pk(b,c){switch(b){case 1:var -a=mM;break;case +a=oH;break;case 2:var -a=mN;break;case +a=oI;break;case 4:var -a=mP;break;case +a=oK;break;case 5:var -a=mQ;break;case +a=oL;break;case 6:var -a=mR;break;case +a=oM;break;case 7:var -a=mS;break;case +a=oN;break;case 8:var -a=mT;break;case +a=oO;break;case 9:var -a=mU;break;case +a=oP;break;case 10:var -a=mV;break;case +a=oQ;break;case 11:var -a=mW;break;case +a=oR;break;case 0:case 13:var -a=mL;break;case +a=oG;break;case 3:case 14:var -a=mO;break;default:var -a=mX}return dR(b,EA(a,c))}function -bw(c,i,b){function +a=oJ;break;default:var +a=oS}return dW(b,G7(a,c))}function +bz(c,i,b){function j(d){switch(c[1]){case 0:var a=45;break;case 1:var a=43;break;default:var -a=32}return Ex(b,i,a)}function +a=32}return G4(b,i,a)}function q(c){var -a=Eo(b);return 3===a?b<0.?nr:ns:4<=a?nt:c}switch(c[2]){case +a=GS(b);return 3===a?b<0.?pm:pn:4<=a?po:c}switch(c[2]){case 5:var -e=kP(gS(c,i),b),d=0,u=K(e);for(;;){if(d===u)var +e=gM(hw(c,i),b),d=0,u=F(e);for(;;){if(d===u)var p=0;else{var -k=D(e,d)+ia|0,l=0;if(23>>0){if(55===k)l=1}else +k=D(e,d)+i6|0,l=0;if(23>>0){if(55===k)l=1}else if(21<(k-1|0)>>>0)l=1;if(!l){var d=d+1|0;continue}var p=1}var -v=p?e:bM(e,nq);return q(v)}case +v=p?e:a$(e,pl);return q(v)}case 6:return j(0);case 7:var -h=bJ(j(0)),f=aZ(h);if(0===f)var +h=bL(j(0)),f=a0(h);if(0===f)var o=h;else{var m=ae(f),n=f-1|0,r=0;if(!(n<0)){var a=r;for(;;){var -g=dz(h,a),s=25<(g+iB|0)>>>0?g:g+f8|0;ad(m,a,s);var +g=dH(h,a),s=25<(g+jG|0)>>>0?g:g+gD|0;ac(m,a,s);var t=a+1|0;if(n!==a){var a=t;continue}break}}var -o=m}return aD(o);case -8:return q(j(0));default:return kP(gS(c,i),b)}}function -de(e,y,x,w){var +o=m}return aC(o);case +8:return q(j(0));default:return gM(hw(c,i),b)}}function +dl(e,y,x,w){var b=y,a=x,d=w;for(;;)if(typeof d==="number")return c(b,a);else switch(d[0]){case 0:var -z=d[1];return function(c){return N(b,[5,a,c],z)};case +z=d[1];return function(c){return L(b,[5,a,c],z)};case 1:var A=d[1];return function(c){var e=0;if(40<=c)if(92===c)var -d=ll;else -if(a$<=c)e=1;else +d=ng;else +if(ba<=c)e=1;else e=2;else if(32<=c)if(39<=c)var -d=lm;else +d=nh;else e=2;else if(14<=c)e=1;else switch(c){case 8:var -d=ln;break;case +d=ni;break;case 9:var -d=lo;break;case +d=nj;break;case 10:var -d=lp;break;case +d=nk;break;case 13:var -d=lq;break;default:e=1}switch(e){case +d=nl;break;default:e=1}switch(e){case 1:var -f=ae(4);ad(f,0,92);ad(f,1,48+(c/aT|0)|0);ad(f,2,48+((c/10|0)%10|0)|0);ad(f,3,48+(c%10|0)|0);var -d=aD(f);break;case +f=ae(4);ac(f,0,92);ac(f,1,48+(c/aT|0)|0);ac(f,2,48+((c/10|0)%10|0)|0);ac(f,3,48+(c%10|0)|0);var +d=aC(f);break;case 2:var -g=ae(1);ad(g,0,c);var -d=aD(g);break}var -h=K(d),i=bc(h+2|0,39);b4(d,0,i,1,h);return N(b,[4,a,aD(i)],A)};case +g=ae(1);ac(g,0,c);var +d=aC(g);break}var +h=F(d),i=bf(h+2|0,39);b6(d,0,i,1,h);return L(b,[4,a,aC(i)],A)};case 2:var -B=d[2],C=d[1];return e0(b,a,B,C,function(a){return a});case -3:return e0(b,a,d[2],d[1],mx);case -4:return dS(b,a,d[4],d[2],d[3],nm,d[1]);case -5:return dS(b,a,d[4],d[2],d[3],nn,d[1]);case -6:return dS(b,a,d[4],d[2],d[3],no,d[1]);case -7:return dS(b,a,d[4],d[2],d[3],np,d[1]);case +B=d[2],C=d[1];return fi(b,a,B,C,function(a){return a});case +3:return fi(b,a,d[2],d[1],os);case +4:return dX(b,a,d[4],d[2],d[3],ph,d[1]);case +5:return dX(b,a,d[4],d[2],d[3],pi,d[1]);case +6:return dX(b,a,d[4],d[2],d[3],pj,d[1]);case +7:return dX(b,a,d[4],d[2],d[3],pk,d[1]);case 8:var i=d[4],j=d[3],k=d[2],g=d[1];if(typeof k==="number"){if(typeof -j==="number")return j?function(d,c){return N(b,[4,a,bw(g,d,c)],i)}:function(c){return N(b,[4,a,bw(g,eY(g),c)],i)};var -Z=j[1];return function(c){return N(b,[4,a,bw(g,Z,c)],i)}}else{if(0===k[0]){var +j==="number")return j?function(d,c){return L(b,[4,a,bz(g,d,c)],i)}:function(c){return L(b,[4,a,bz(g,fg(g),c)],i)};var +Z=j[1];return function(c){return L(b,[4,a,bz(g,Z,c)],i)}}else{if(0===k[0]){var n=k[2],o=k[1];if(typeof -j==="number")return j?function(d,c){return N(b,[4,a,aO(o,n,bw(g,d,c))],i)}:function(c){return N(b,[4,a,aO(o,n,bw(g,eY(g),c))],i)};var -_=j[1];return function(c){return N(b,[4,a,aO(o,n,bw(g,_,c))],i)}}var +j==="number")return j?function(d,c){return L(b,[4,a,aO(o,n,bz(g,d,c))],i)}:function(c){return L(b,[4,a,aO(o,n,bz(g,fg(g),c))],i)};var +$=j[1];return function(c){return L(b,[4,a,aO(o,n,bz(g,$,c))],i)}}var p=k[1];if(typeof -j==="number")return j?function(e,d,c){return N(b,[4,a,aO(p,e,bw(g,d,c))],i)}:function(d,c){return N(b,[4,a,aO(p,d,bw(g,eY(g),c))],i)};var -aa=j[1];return function(d,c){return N(b,[4,a,aO(p,d,bw(g,aa,c))],i)}}case -9:return e0(b,a,d[2],d[1],lc);case +j==="number")return j?function(e,d,c){return L(b,[4,a,aO(p,e,bz(g,d,c))],i)}:function(d,c){return L(b,[4,a,aO(p,d,bz(g,fg(g),c))],i)};var +aa=j[1];return function(d,c){return L(b,[4,a,aO(p,d,bz(g,aa,c))],i)}}case +9:return fi(b,a,d[2],d[1],m9);case 10:var a=[7,a],d=d[1];continue;case 11:var @@ -2234,51 +2332,51 @@ a=[2,a,d[1]],d=d[2];continue;case 12:var a=[3,a,d[1]],d=d[2];continue;case 13:var -D=d[3],E=d[2],q=gP(16);eZ(q,E);var -v=gR(q);return function(c){return N(b,[4,a,v],D)};case +D=d[3],E=d[2],q=hs(16);fh(q,E);var +v=hu(q);return function(c){return L(b,[4,a,v],D)};case 14:var -F=d[3],G=d[2];return function(d){var -e=d[1],c=S(e,$(aj(G)));if(typeof -c[2]==="number")return N(b,a,T(c[1],F));throw ar};case +G=d[3],H=d[2];return function(d){var +e=d[1],c=R(e,_(aj(H)));if(typeof +c[2]==="number")return L(b,a,T(c[1],G));throw aq};case 15:var -H=d[1];return function(d,c){return N(b,[6,a,function(a){return h(d,a,c)}],H)};case +J=d[1];return function(d,c){return L(b,[6,a,function(a){return h(d,a,c)}],J)};case 16:var -I=d[1];return function(c){return N(b,[6,a,c],I)};case +K=d[1];return function(c){return L(b,[6,a,c],K)};case 17:var a=[0,a,d[1]],d=d[2];continue;case 18:var m=d[1];if(0===m[0]){var -J=d[2],M=m[1][1],O=0,b=function(b,c,d){return function(a){return N(c,[1,b,[0,a]],d)}}(a,b,J),a=O,d=M;continue}var -Q=d[2],R=m[1][1],U=0,b=function(b,c,d){return function(a){return N(c,[1,b,[1,a]],d)}}(a,b,Q),a=U,d=R;continue;case -19:throw[0,L,nv];case +M=d[2],N=m[1][1],P=0,b=function(b,c,d){return function(a){return L(c,[1,b,[0,a]],d)}}(a,b,M),a=P,d=N;continue}var +Q=d[2],S=m[1][1],U=0,b=function(b,c,d){return function(a){return L(c,[1,b,[1,a]],d)}}(a,b,Q),a=U,d=S;continue;case +19:throw[0,I,pq];case 20:var -V=d[3],W=[8,a,nw];return function(a){return N(b,W,V)};case +V=d[3],W=[8,a,pr];return function(a){return L(b,W,V)};case 21:var -X=d[2];return function(c){return N(b,[4,a,eE(nx,c)],X)};case +X=d[2];return function(c){return L(b,[4,a,eW(ps,c)],X)};case 22:var -Y=d[1];return function(c){return N(b,[5,a,c],Y)};case +Y=d[1];return function(c){return L(b,[5,a,c],Y)};case 23:var f=d[2],l=d[1];if(typeof l==="number")switch(l){case -0:return e<50?P(e+1|0,b,a,f):ao(P,[0,b,a,f]);case -1:return e<50?P(e+1|0,b,a,f):ao(P,[0,b,a,f]);case -2:throw[0,L,ny];default:return e<50?P(e+1|0,b,a,f):ao(P,[0,b,a,f])}else +0:return e<50?O(e+1|0,b,a,f):an(O,[0,b,a,f]);case +1:return e<50?O(e+1|0,b,a,f):an(O,[0,b,a,f]);case +2:throw[0,I,pt];default:return e<50?O(e+1|0,b,a,f):an(O,[0,b,a,f])}else switch(l[0]){case -0:return e<50?P(e+1|0,b,a,f):ao(P,[0,b,a,f]);case -1:return e<50?P(e+1|0,b,a,f):ao(P,[0,b,a,f]);case -2:return e<50?P(e+1|0,b,a,f):ao(P,[0,b,a,f]);case -3:return e<50?P(e+1|0,b,a,f):ao(P,[0,b,a,f]);case -4:return e<50?P(e+1|0,b,a,f):ao(P,[0,b,a,f]);case -5:return e<50?P(e+1|0,b,a,f):ao(P,[0,b,a,f]);case -6:return e<50?P(e+1|0,b,a,f):ao(P,[0,b,a,f]);case -7:return e<50?P(e+1|0,b,a,f):ao(P,[0,b,a,f]);case -8:return e<50?P(e+1|0,b,a,f):ao(P,[0,b,a,f]);case +0:return e<50?O(e+1|0,b,a,f):an(O,[0,b,a,f]);case +1:return e<50?O(e+1|0,b,a,f):an(O,[0,b,a,f]);case +2:return e<50?O(e+1|0,b,a,f):an(O,[0,b,a,f]);case +3:return e<50?O(e+1|0,b,a,f):an(O,[0,b,a,f]);case +4:return e<50?O(e+1|0,b,a,f):an(O,[0,b,a,f]);case +5:return e<50?O(e+1|0,b,a,f):an(O,[0,b,a,f]);case +6:return e<50?O(e+1|0,b,a,f):an(O,[0,b,a,f]);case +7:return e<50?O(e+1|0,b,a,f):an(O,[0,b,a,f]);case +8:return e<50?O(e+1|0,b,a,f):an(O,[0,b,a,f]);case 9:var -u=l[2];return e<50?fE(e+1|0,b,a,u,f):ao(fE,[0,b,a,u,f]);case -10:return e<50?P(e+1|0,b,a,f):ao(P,[0,b,a,f]);default:return e<50?P(e+1|0,b,a,f):ao(P,[0,b,a,f])}default:var -r=d[3],s=d[1],t=c(d[2],0);return e<50?fD(e+1|0,b,a,r,s,t):ao(fD,[0,b,a,r,s,t])}}function -fE(e,d,c,a,b){if(typeof -a==="number")return e<50?P(e+1|0,d,c,b):ao(P,[0,d,c,b]);else +u=l[2];return e<50?f3(e+1|0,b,a,u,f):an(f3,[0,b,a,u,f]);case +10:return e<50?O(e+1|0,b,a,f):an(O,[0,b,a,f]);default:return e<50?O(e+1|0,b,a,f):an(O,[0,b,a,f])}default:var +r=d[3],s=d[1],t=c(d[2],0);return e<50?f2(e+1|0,b,a,r,s,t):an(f2,[0,b,a,r,s,t])}}function +f3(e,d,c,a,b){if(typeof +a==="number")return e<50?O(e+1|0,d,c,b):an(O,[0,d,c,b]);else switch(a[0]){case 0:var f=a[1];return function(a){return aU(d,c,f,b)};case @@ -2299,457 +2397,516 @@ m=a[1];return function(a){return aU(d,c,m,b)};case 8:var n=a[2];return function(a){return aU(d,c,n,b)};case 9:var -o=a[3],p=a[2],q=ap(aj(a[1]),p);return function(a){return aU(d,c,aF(q,o),b)};case +o=a[3],p=a[2],q=ao(aj(a[1]),p);return function(a){return aU(d,c,aD(q,o),b)};case 10:var r=a[1];return function(e,a){return aU(d,c,r,b)};case 11:var s=a[1];return function(a){return aU(d,c,s,b)};case 12:var t=a[1];return function(a){return aU(d,c,t,b)};case -13:throw[0,L,nz];default:throw[0,L,nA]}}function -P(d,b,e,a){var -c=[8,e,nB];return d<50?de(d+1|0,b,c,a):ao(de,[0,b,c,a])}function -fD(h,b,f,a,e,d){if(e){var -i=e[1];return function(e){return nu(b,f,a,i,c(d,e))}}var -g=[4,f,d];return h<50?de(h+1|0,b,g,a):ao(de,[0,b,g,a])}function -N(a,b,c){return dF(de(0,a,b,c))}function -aU(a,b,c,d){return dF(fE(0,a,b,c,d))}function -nu(a,b,c,d,e){return dF(fD(0,a,b,c,d,e))}function -e0(f,e,d,a,b){if(typeof -a==="number")return function(a){return N(f,[4,e,c(b,a)],d)};else{if(0===a[0]){var -g=a[2],h=a[1];return function(a){return N(f,[4,e,aO(h,g,c(b,a))],d)}}var -i=a[1];return function(g,a){return N(f,[4,e,aO(i,g,c(b,a))],d)}}}function -dS(f,e,d,g,c,b,a){if(typeof +13:throw[0,I,pu];default:throw[0,I,pv]}}function +O(d,b,e,a){var +c=[8,e,pw];return d<50?dl(d+1|0,b,c,a):an(dl,[0,b,c,a])}function +f2(h,b,f,a,e,d){if(e){var +i=e[1];return function(e){return pp(b,f,a,i,c(d,e))}}var +g=[4,f,d];return h<50?dl(h+1|0,b,g,a):an(dl,[0,b,g,a])}function +L(a,b,c){return dO(dl(0,a,b,c))}function +aU(a,b,c,d){return dO(f3(0,a,b,c,d))}function +pp(a,b,c,d,e){return dO(f2(0,a,b,c,d,e))}function +fi(f,e,d,a,b){if(typeof +a==="number")return function(a){return L(f,[4,e,c(b,a)],d)};else{if(0===a[0]){var +g=a[2],h=a[1];return function(a){return L(f,[4,e,aO(h,g,c(b,a))],d)}}var +i=a[1];return function(g,a){return L(f,[4,e,aO(i,g,c(b,a))],d)}}}function +dX(f,e,d,g,c,b,a){if(typeof g==="number"){if(typeof -c==="number")return c?function(g,c){return N(f,[4,e,cr(g,h(b,a,c))],d)}:function(c){return N(f,[4,e,h(b,a,c)],d)};var -l=c[1];return function(c){return N(f,[4,e,cr(l,h(b,a,c))],d)}}else{if(0===g[0]){var +c==="number")return c?function(g,c){return L(f,[4,e,cw(g,h(b,a,c))],d)}:function(c){return L(f,[4,e,h(b,a,c)],d)};var +l=c[1];return function(c){return L(f,[4,e,cw(l,h(b,a,c))],d)}}else{if(0===g[0]){var i=g[2],j=g[1];if(typeof -c==="number")return c?function(g,c){return N(f,[4,e,aO(j,i,cr(g,h(b,a,c)))],d)}:function(c){return N(f,[4,e,aO(j,i,h(b,a,c))],d)};var -m=c[1];return function(c){return N(f,[4,e,aO(j,i,cr(m,h(b,a,c)))],d)}}var +c==="number")return c?function(g,c){return L(f,[4,e,aO(j,i,cw(g,h(b,a,c)))],d)}:function(c){return L(f,[4,e,aO(j,i,h(b,a,c))],d)};var +m=c[1];return function(c){return L(f,[4,e,aO(j,i,cw(m,h(b,a,c)))],d)}}var k=g[1];if(typeof -c==="number")return c?function(i,g,c){return N(f,[4,e,aO(k,i,cr(g,h(b,a,c)))],d)}:function(g,c){return N(f,[4,e,aO(k,g,h(b,a,c))],d)};var -n=c[1];return function(g,c){return N(f,[4,e,aO(k,g,cr(n,h(b,a,c)))],d)}}}function -bN(b,h){var -a=h;for(;;)if(typeof +c==="number")return c?function(i,g,c){return L(f,[4,e,aO(k,i,cw(g,h(b,a,c)))],d)}:function(g,c){return L(f,[4,e,aO(k,g,h(b,a,c))],d)};var +n=c[1];return function(g,c){return L(f,[4,e,aO(k,g,cw(n,h(b,a,c)))],d)}}}function +bA(b,f){var +a=f;for(;;)if(typeof a==="number")return 0;else switch(a[0]){case 0:var -e=a[2],i=a[1];if(typeof -e==="number")switch(e){case -0:var -d=lT;break;case +g=a[1],h=hv(a[2]);bA(b,g);return c2(b,h);case 1:var -d=lU;break;case -2:var -d=lV;break;case -3:var -d=lW;break;case -4:var -d=lX;break;case -5:var -d=lY;break;default:var -d=lZ}else -switch(e[0]){case -0:var -d=e[1];break;case -1:var -d=e[1];break;default:var -d=bM(l0,gI(1,e[1]))}bN(b,i);return c0(b,d);case -1:var -f=a[2],g=a[1];if(0===f[0]){var -j=f[1];bN(b,g);c0(b,nC);var -a=j;continue}var -k=f[1];bN(b,g);c0(b,nD);var -a=k;continue;case +d=a[2],e=a[1];if(0===d[0]){var +i=d[1];bA(b,e);c2(b,px);var +a=i;continue}var +j=d[1];bA(b,e);c2(b,py);var +a=j;continue;case 6:var -n=a[2];bN(b,a[1]);return c0(b,c(n,0));case +m=a[2];bA(b,a[1]);return c(m,b);case +7:bA(b,a[1]);return ck(b);case +8:var +n=a[2];bA(b,a[1]);return ah(n);case +2:case +4:var +k=a[2];bA(b,a[1]);return c2(b,k);default:var +l=a[2];bA(b,a[1]);return mI(b,l)}}function +bO(b,f){var +a=f;for(;;)if(typeof +a==="number")return 0;else +switch(a[0]){case +0:var +g=a[1],h=hv(a[2]);bO(b,g);return c7(b,h);case +1:var +d=a[2],e=a[1];if(0===d[0]){var +i=d[1];bO(b,e);c7(b,pz);var +a=i;continue}var +j=d[1];bO(b,e);c7(b,pA);var +a=j;continue;case +6:var +m=a[2];bO(b,a[1]);return c7(b,c(m,0));case 7:var a=a[1];continue;case 8:var -o=a[2];bN(b,a[1]);return ai(o);case +n=a[2];bO(b,a[1]);return ah(n);case 2:case 4:var -l=a[2];bN(b,a[1]);return c0(b,l);default:var -m=a[2];bN(b,a[1]);return gO(b,m)}}function -e1(b){var -a=b[1];return N(function(b){var -a=eW(64);bN(a,b);return gN(a)},0,a)}var -gU=[0,0];function -e2(a){gU[1]=[0,a,gU[1]];return 0}try{var -Ef=eP(Ee),gW=Ef}catch(a){a=d(a);if(a!==aB)throw a;try{var -Ed=eP(Ec),gV=Ed}catch(a){a=d(a);if(a!==aB)throw a;var -gV=nF}var -gW=gV}var -nG=ly(gW,82),dT=[im,function(x){var -m=E7(0),c=[0,bL(55,0),0],i=0===m.length-1?[0,0]:m,j=i.length-1,b=0;for(;;){am(c[1],b)[1+b]=b;var +k=a[2];bO(b,a[1]);return c7(b,k);default:var +l=a[2];bO(b,a[1]);return hr(b,l)}}function +fj(d,c){var +a=c[1],b=0;return L(function(a){bA(d,a);return 0},b,a)}function +fk(a){return fj(be,a)}function +aV(b){var +a=b[1];return L(function(b){var +a=fe(64);bO(a,b);return hq(a)},0,a)}var +fl=[0,0];function +fn(i,h){var +a=i[1+h];if(1-(typeof +a==="number"?1:0)){if(dN(a)===ez)return c(aV(pB),a);if(dN(a)===ly){var +d=gM(nb,a),b=0,g=F(d);for(;;){if(g<=b)return a$(d,na);var +e=D(d,b),f=0;if(48<=e){if(!(58<=e))f=1}else +if(45===e)f=1;if(f){var +b=b+1|0;continue}return d}}return pC}return c(aV(pD),a)}function +hy(b,a){if(b.length-1<=a)return pE;var +c=hy(b,a+1|0),d=fn(b,a);return h(aV(pF),d,c)}function +dY(a){function +p(f){var +b=f;for(;;){if(b){var +g=b[2],h=b[1];try{var +e=0,d=c(h,a);e=1}catch(a){}if(e&&d)return[0,d[1]];var +b=g;continue}return 0}}var +i=p(fl[1]);if(i)return i[1];if(a===fa)return pK;if(a===g9)return pL;if(a[1]===g8){var +d=a[2],j=d[3],q=d[2],r=d[1];return f6(aV(fm),r,q,j,j+5|0,pM)}if(a[1]===I){var +e=a[2],k=e[3],s=e[2],t=e[1];return f6(aV(fm),t,s,k,k+6|0,pN)}if(a[1]===ha){var +f=a[2],l=f[3],u=f[2],v=f[1];return f6(aV(fm),v,u,l,l+6|0,pO)}if(0===dN(a)){var +g=a.length-1,w=a[1][1];if(2>>0)var +m=hy(a,2),n=fn(a,1),b=h(aV(pG),n,m);else +switch(g){case +0:var +b=pH;break;case +1:var +b=pI;break;default:var +o=fn(a,1),b=c(aV(pJ),o)}return a$(w,b)}return a[1]}function +fo(h,t){var +e=GT(t);if([0,e]){var +g=e.length-1-1|0,q=0;if(!(g<0)){var +b=q;for(;;){var +a=ad(e,b)[1+b],f=function(a){return function(b){return b?0===a?pP:pQ:0===a?pR:pS}}(b);if(0===a[0])var +i=a[5],j=a[4],k=a[3],l=a[6]?pT:pV,m=a[2],n=a[7],o=f(a[1]),d=[0,GJ(aV(pU),o,n,m,l,k,j,i)];else +if(a[1])var +d=0;else +var +p=f(0),d=[0,c(aV(pW),p)];if(d){var +r=d[1];c(fj(h,pX),r)}var +s=b+1|0;if(g!==b){var +b=s;continue}break}}return 0}return fj(h,pY)}function +dZ(c){for(;;){var +a=fl[1],b=1-e$(fl,a,[0,c,a]);if(b)continue;return b}}var +p0=pZ.slice();function +p1(e,d){var +f=dY(e);c(fk(p2),f);fo(be,d);var +a=Hm(0);if(a<0){var +b=c1(a);hb(ad(p0,b)[1+b])}return ck(be)}var +p3=[0];gZ(a(kR),function(f,j){try{try{var +b=j?p3:mC(0);try{fc(0)}catch(a){}try{var +a=p1(f,b),e=a}catch(a){a=d(a);var +h=dY(f);c(fk(p5),h);fo(be,b);var +i=dY(a);c(fk(p6),i);fo(be,mC(0));var +e=ck(be)}var +g=e}catch(a){a=d(a);if(a!==fa)throw a;var +g=hb(p4)}return g}catch(a){return 0}});var +p8=[M,p7,ai(0)];dZ(function(a){return a[1]===p8?[0,a$(p9,dY(a[2]))]:0});try{var +GH=mO(GG),hA=GH}catch(a){a=d(a);if(a!==aI)throw a;try{var +GF=mO(GE),hz=GF}catch(a){a=d(a);if(a!==aI)throw a;var +hz=p$}var +hA=hz}var +qa=nt(hA,82),d0=[jm,function(x){var +m=HD(0),c=[0,bM(55,0),0],i=0===m.length-1?[0,0]:m,j=i.length-1,b=0;for(;;){ad(c[1],b)[1+b]=b;var w=b+1|0;if(54!==b){var b=w;continue}var -g=[0,nE],k=54+dK(55,j)|0,r=0;if(!(k<0)){var -d=r;for(;;){var -e=d%55|0,l=EU(d,j),s=am(i,l)[1+l],h=bM(g[1],a(u+s));g[1]=EP(h,0,K(h));var -f=g[1],n=D(f,3)<<24,o=D(f,2)<<16,p=D(f,1)<<8,q=((D(f,0)+p|0)+o|0)+n|0,t=(am(c[1],e)[1+e]^q)&f2;am(c[1],e)[1+e]=t;var +g=[0,p_],k=54+dQ(55,j)|0,s=0;if(!(k<0)){var +d=s;for(;;){var +e=d%55|0,l=Hq(d,j),t=ad(i,l)[1+l],h=a$(g[1],a(o+t));g[1]=Hl(h,0,F(h));var +f=g[1],n=D(f,3)<<24,p=D(f,2)<<16,q=D(f,1)<<8,r=((D(f,0)+q|0)+p|0)+n|0,u=(ad(c[1],e)[1+e]^r)&gs;ad(c[1],e)[1+e]=u;var v=d+1|0;if(k!==d){var d=v;continue}break}}c[2]=0;return c}}];function -nH(h,k){var -l=h?h[1]:nG,b=16;for(;;){if(!(k<=b)&&!(gB<(b*2|0))){var +qb(h,k){var +l=h?h[1]:qa,b=16;for(;;){if(!(k<=b)&&!(he<(b*2|0))){var b=b*2|0;continue}if(l){var -i=kW(dT),a=ed===i?dT[1]:im===i?lO(dT):dT;a[2]=(a[2]+1|0)%55|0;var -c=a[2],d=am(a[1],c)[1+c],e=(a[2]+24|0)%55|0,f=(am(a[1],e)[1+e]+(d^(d>>>25|0)&31)|0)&f2,g=a[2];am(a[1],g)[1+g]=f;var +i=dN(d0),a=ep===i?d0[1]:jm===i?nJ(d0):d0;a[2]=(a[2]+1|0)%55|0;var +c=a[2],d=ad(a[1],c)[1+c],e=(a[2]+24|0)%55|0,f=(ad(a[1],e)[1+e]+(d^(d>>>25|0)&31)|0)&gs,g=a[2];ad(a[1],g)[1+g]=f;var j=f}else var -j=0;return[0,0,bL(b,0),j,b]}}function -bd(a){return Er(10,aT,0,a)}var -gZ=[R,nI,an(0)],gX=0,gY=-1;function -dU(a,b){a[13]=a[13]+b[3]|0;return gM(b,a[28])}var -g0=1000000010;function -e3(b,a){return Q(b[17],a,0,K(a))}function -e4(a){return c(a[19],0)}function -g1(a,c,b){a[9]=a[9]-c|0;e3(a,b);a[11]=0;return 0}function -dV(c,a){var -b=ah(a,nJ);return b?g1(c,K(a),a):b}function -cs(a,b,f){var -g=b[3],h=b[2];dV(a,b[1]);e4(a);a[11]=1;var -d=(a[6]-f|0)+h|0,e=a[8],i=EM(e,d)?e:d;a[10]=i;a[9]=a[6]-a[10]|0;c(a[21],a[10]);return dV(a,g)}function -g2(b,a){return cs(b,nK,a)}function -c2(a,b){var -d=b[2],e=b[3];dV(a,b[1]);a[9]=a[9]-d|0;c(a[20],d);return dV(a,e)}function -g3(a){for(;;){var +j=0;return[0,0,bM(b,0),j,b]}}function +bg(a){return GY(10,aT,0,a)}var +hD=[M,qc,ai(0)],hB=0,hC=-1;function +d1(a,b){a[13]=a[13]+b[3]|0;return hp(b,a[28])}var +hE=1000000010;function +fp(b,a){return P(b[17],a,0,F(a))}function +fq(a){return c(a[19],0)}function +hF(a,c,b){a[9]=a[9]-c|0;fp(a,b);a[11]=0;return 0}function +d2(c,a){var +b=am(a,qd);return b?hF(c,F(a),a):b}function +cx(a,b,f){var +g=b[3],h=b[2];d2(a,b[1]);fq(a);a[11]=1;var +d=(a[6]-f|0)+h|0,e=a[8],i=Hi(e,d)?e:d;a[10]=i;a[9]=a[6]-a[10]|0;c(a[21],a[10]);return d2(a,g)}function +hG(b,a){return cx(b,qe,a)}function +c9(a,b){var +d=b[2],e=b[3];d2(a,b[1]);a[9]=a[9]-d|0;c(a[20],d);return d2(a,e)}function +hH(a){for(;;){var r=a[28][2],O=r?[0,r[1]]:0;if(O){var p=O[1],q=p[1],b=p[2],ac=0<=q?1:0,aa=p[3],ab=a[13]-a[12]|0,P=ac||(a[9]<=ab?1:0);if(P){var g=a[28],m=g[2];if(m){if(m[2]){var Q=m[2];g[1]=g[1]-1|0;g[2]=Q}else -eV(g);var -l=0<=q?q:g0;if(typeof +fd(g);var +l=0<=q?q:hE;if(typeof b==="number")switch(b){case 0:var -x=cp(a[3]);if(x){var +x=cu(a[3]);if(x){var y=x[1][1],z=function(b,a){if(a){var -c=a[1],d=a[2];return gm(b,c)?[0,b,a]:[0,c,z(b,d)]}return[0,b,0]};y[1]=z(a[6]-a[9]|0,y[1])}break;case -1:co(a[2]);break;case -2:co(a[3]);break;case +c=a[1],d=a[2];return gV(b,c)?[0,b,a]:[0,c,z(b,d)]}return[0,b,0]};y[1]=z(a[6]-a[9]|0,y[1])}break;case +1:ct(a[2]);break;case +2:ct(a[3]);break;case 3:var -A=cp(a[2]);if(A)g2(a,A[1][2]);else -e4(a);break;case +A=cu(a[2]);if(A)hG(a,A[1][2]);else +fq(a);break;case 4:if(a[10]!==(a[6]-a[9]|0)){var e=a[28],h=e[2];if(h){var s=h[1];if(h[2]){var R=h[2];e[1]=e[1]-1|0;e[2]=R;var -i=[0,s]}else{eV(e);var +i=[0,s]}else{fd(e);var i=[0,s]}}else var i=0;if(i){var w=i[1],T=w[1];a[12]=a[12]-w[3]|0;a[9]=a[9]+T|0}}break;default:var -B=co(a[5]);if(B)e3(a,c(a[25],B[1]))}else +B=ct(a[5]);if(B)fp(a,c(a[25],B[1]))}else switch(b[0]){case -0:g1(a,l,b[1]);break;case +0:hF(a,l,b[1]);break;case 1:var -d=b[2],j=b[1],C=d[1],U=d[2],D=cp(a[2]);if(D){var +d=b[2],j=b[1],C=d[1],U=d[2],D=cu(a[2]);if(D){var E=D[1],f=E[2];switch(E[1]){case -0:c2(a,j);break;case -1:cs(a,d,f);break;case -2:cs(a,d,f);break;case -3:if(a[9]<(l+K(C)|0))cs(a,d,f);else -c2(a,j);break;case -4:if(a[11]||!(a[9]<(l+K(C)|0)||((a[6]-f|0)+U|0)>>0))g2(a,v)}else -e4(a)}var -_=a[9]-Z|0,$=1===M?1:a[9]>>0))hG(a,v)}else +fq(a)}var +_=a[9]-Z|0,$=1===M?1:a[9]>>3|0,cl(b5(b,a>>>3|0)|1<<(a&7)))}function -dZ(b){var -a=e_(0);c3(a,b);return a}function -d0(c){var -b=ae(32),a=0;for(;;){a9(b,a,cl(b5(c,a)^cG));var +h=d[1],a=c(aV(rT),h);return[0,P(aV(qP),a,g,f)]}return 0});e_(rU);e_(rV);try{e_(GD)}catch(a){a=d(a);if(a[1]!==dP)throw a}try{e_(GC)}catch(a){a=d(a);if(a[1]!==dP)throw a}qb(0,7);function +rW(b,a){return dT(b,0,a)}function +rX(b,a){return dT(b,a,F(b)-a|0)}var +bB=bf(32,cM);function +fw(a){return bf(32,0)}function +c_(b,a){return a9(b,a>>>3|0,cq(b7(b,a>>>3|0)|1<<(a&7)))}function +d6(b){var +a=fw(0);c_(a,b);return a}function +d7(c){var +b=ae(32),a=0;for(;;){a9(b,a,cq(b7(c,a)^cM));var d=a+1|0;if(31!==a){var a=d;continue}return b}}function -e$(d,c){var +fx(d,c){var b=ae(32),a=0;for(;;){var -e=b5(c,a);a9(b,a,cl(b5(d,a)|e));var +e=b7(c,a);a9(b,a,cq(b7(d,a)|e));var f=a+1|0;if(31!==a){var a=f;continue}return b}}function -pu(c,b){try{var +rY(c,b){try{var a=0;for(;;){var -f=b5(b,a);if(0!==(b5(c,a)&f))throw gw;var +f=b7(b,a);if(0!==(b7(c,a)&f))throw g7;var g=a+1|0;if(31!==a){var a=g;continue}var -e=1;return e}}catch(a){a=d(a);if(a===gw)return 0;throw a}}function -hd(f,e){var +e=1;return e}}catch(a){a=d(a);if(a===g7)return 0;throw a}}function +hT(f,e){var a=0;for(;;){var -d=b5(e,a);if(0!==d){var -b=0;for(;;){if(0!==(d&1<>>0){if(!(25<(b+a$|0)>>>0))d=1}else +c=fw(0);hT(function(a){c_(c,hd(a));var +b=a-224|0,d=0;if(30>>0){if(!(25<(b+ba|0)>>>0))d=1}else if(23!==b)d=1;var -e=d?a+f8|0:a;return c3(c,e)},b);var +e=d?a+gD|0:a;return c_(c,e)},b);var d=c}else var d=b;var -h=f?d0(d):d;return dN(h)}throw[0,L,pJ]}var -hh=ae(cK),dd=0;for(;;){a9(hh,dd,gz(cl(dd)));var -D9=dd+1|0;if(cG!==dd){var -dd=D9;continue}dN(hh);var -d3=dP([0,gq]),hi=function(a){var -b=gN(a[1]);a[1][2]=0;var -c=K(b);if(0===c)return 0;if(1===c){var -d=a[2];a[2]=[0,[0,D(b,0)],d];return 0}a[2]=[0,[1,b],a[2]];return 0},pN=d0(dZ(10)),fe=A,ff=kK,pT=function(b){var -f=K(b),z=[0,1];function +h=f?d7(d):d;return dS(h)}throw[0,I,sb]}var +hX=ae(cQ),dk=0;for(;;){a9(hX,dk,hd(cq(dk)));var +GB=dk+1|0;if(cM!==dk){var +dk=GB;continue}dS(hX);var +d_=dU([0,g0]),hY=function(a){var +b=hq(a[1]);a[1][2]=0;var +c=F(b);if(0===c)return 0;if(1===c){var +d=a[2];a[2]=[0,[0,D(b,0)],d];return 0}a[2]=[0,[1,b],a[2]];return 0},sf=d7(d6(10)),fC=z,fD=mx,sl=function(b){var +f=F(b),z=[0,1];function C(g){var -d=e_(0),a=g;for(;;){if(f<=a)bu(pR);if(93===D(b,a)&&g>>0)if(9<=r)var -j=[0,[9,k+ec|0],g+1|0];else +j=[0,[9,k+eo|0],g+1|0];else l=1;else if(r)l=2;else{var H=z[1];z[1]++;var -t=A(g+1|0),o=t[2],y=0,I=t[1];if((o+1|0)>a===b?c:mY(b,a)}return mY(b,a)},im=function(a){return typeof +a==="number"?a:H1(a)},bD=0,fP=1,uO=-1,io=function(a){return cp(0,a,0,F(a))},uP=function(b,a){return cp(b,a,0,F(a))},fQ=function(a){if(typeof a==="number")return a;var -d=gt(a);if(63>>0))switch(b){case +e=g3(a);if(63>g;f=1}if(!f)var +c=HZ(a,b);var +i=HO(a,cA(c,b)),d=e8(c),h=i?d:Hc(d,uQ);return gU(eZ(h),b)}return eZ(e8(a))},dh=function(a,b){if(a!==0&&b!==1){var +c=HQ(a,b);if(c===1)return[0,a,b];var +d=il(b,c);return[0,il(a,c),d]}return[0,a,fP]},ip=function(b,a){var +c=bw(a);if(0===c)return[0,bw(b),bD];if(0>>0))switch(b){case 0:return 2;case -1:break;default:return 1}return 3}return a[1]===aG?0:4},sn=function(a){return[0,dH(a[1]),a[2]]},fu=function(b,a){if(b[2]!==aG&&a[2]!==aG)return da(b8(b[1],a[1]),b8(b[2],a[2]));return[0,aE(br(bs(b[1]),bs(a[1]))),aG]},fv=function(a){switch(a){case +1:break;default:return 1}return 3}return a[1]===0?0:4},uR=function(a){var +b=a[2];return[0,cz(a[1]),b]},fT=function(b,a){if(b[2]!==0&&a[2]!==0){var +c=bV(b[2],a[2]);return dh(bV(b[1],a[1]),c)}return[0,bd(bw(b[1]),bw(a[1])),bD]},fU=function(a){switch(a){case 0:return 2;case 1:return 8;case -2:return 10;default:return 16}},fw=function(f,e,d,b){var +2:return 10;default:return 16}},fV=function(f,e,d,b){var a=e;for(;;){if(d<=a)return 0;if(c(b,D(f,a)))return[0,a];var -a=a+1|0;continue}},sp=function(a){if(ah(a,sq)){if(ah(a,sr)){if(!ah(a,ss))return hK;if(ah(a,st)){if(ah(a,su))try{var -l=gK(a,47),Z=ck(0,a,l+1|0,(K(a)-l|0)-1|0),_=hH(ck(0,a,0,l),Z);return _}catch(l){l=d(l);if(l===aB){var -j=K(a),x=0;if(j<1)var +a=a+1|0;continue}},uT=function(a){if(am(a,uU)){if(am(a,uV)){if(!am(a,uW))return is;if(am(a,uX)){if(am(a,uY))try{var +l=hn(a,47),Z=cp(0,a,l+1|0,(F(a)-l|0)-1|0),_=ip(cp(0,a,0,l),Z);return _}catch(l){l=d(l);if(l===aI){var +j=F(a),x=0;if(j<1)var s=[0,0,x];else{var -P=D(a,0)+kp|0,S=0;if(!(2

>>0)){var +P=D(a,0)+l_|0,S=0;if(!(2

>>0)){var T=0;switch(P){case 0:var R=[0,0,1];break;case @@ -3336,8 +3514,8 @@ c=s[2];if(j<(c+2|0))var t=[0,2,c];else{var Y=D(a,c),h=D(a,c+1|0),r=0;if(48===Y){var i=0;if(89<=h){if(98===h)i=2;else -if(f$===h)i=1;else -if(bU!==h){r=1;i=3}}else +if(gG===h)i=1;else +if(bW!==h){r=1;i=3}}else if(66===h)i=2;else if(79===h)i=1;else if(!(88<=h)){r=1;i=3}switch(i){case @@ -3350,222 +3528,223 @@ q=[0,0,c+2|0]}}else r=1;if(r)var q=[0,2,c];var t=q}var -e=t[2],b=t[1],U=2===b?function(a){if(69!==a&&ej!==a)return 0;return 1}:3<=b?function(a){if(80!==a&&f_!==a)return 0;return 1}:function(a){return 0},y=fw(a,e,j,U);if(y)var -z=y[1],A=z+1|0,f=z,B=dI(ck(10,a,A,j-A|0));else +e=t[2],b=t[1],U=2===b?function(a){if(69!==a&&ev!==a)return 0;return 1}:3<=b?function(a){if(80!==a&&gF!==a)return 0;return 1}:function(a){return 0},y=fV(a,e,j,U);if(y)var +z=y[1],A=z+1|0,f=z,B=im(cp(10,a,A,j-A|0));else var f=j,B=0;if(2<=b){var -C=fw(a,e,f,function(a){return 46===a?1:0});if(C){var +C=fV(a,e,f,function(a){return 46===a?1:0});if(C){var u=C[1];if(2===b)var -E=1;else{if(!(3<=b))throw[0,L,sw];var +E=1;else{if(!(3<=b))throw[0,I,u0];var E=4}var -G=u+1|0,H=f-1|0,F=0;if(H true + (((match param_.obligation_scolaire with + | Avant _ -> true + | Pendant _ -> false + | Apres _ -> false) + || (match param_.obligation_scolaire with + | Avant _ -> false + | Pendant _ -> true + | Apres _ -> false) + || + match param_.obligation_scolaire with + | Avant _ -> false | Pendant _ -> false - | Apres _ -> false) - || (match param_.obligation_scolaire with - | Avant _ -> false - | Pendant _ -> true - | Apres _ -> false) - || (match param_.obligation_scolaire with - | Avant _ -> false - | Pendant _ -> false - | Apres _ -> true) - && param_.remuneration_mensuelle <=$ plafond_l512_3_2_) + | Apres _ -> true) + && param_.remuneration_mensuelle <=$ plafond_l512_3_2_) then true else raise EmptyError with EmptyError -> false From e09db29aa47a0dfa386b262352391c2496e56676 Mon Sep 17 00:00:00 2001 From: Alain Date: Mon, 29 Nov 2021 11:24:03 +0100 Subject: [PATCH 15/17] add a check to whenever menhirLib exists If it does, it add menhirLib as a dependency. Else, ignore it. --- default.nix | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/default.nix b/default.nix index f6450c4f..fef100e2 100644 --- a/default.nix +++ b/default.nix @@ -1,6 +1,25 @@ -{ lib, fetchFromGitHub, buildDunePackage, ansiterminal, sedlex_2, menhir -, menhirLib, unionfind, bindlib, cmdliner, re, zarith, zarith_stubs_js, ocamlgraph -, calendar, visitors, benchmark, js_of_ocaml, js_of_ocaml-ppx, camomile, cppo }: +{ lib +, fetchFromGitHub +, buildDunePackage +, ansiterminal +, sedlex_2 +, menhir +, unionfind +, bindlib +, cmdliner +, re +, zarith +, zarith_stubs_js +, ocamlgraph +, calendar +, visitors +, benchmark +, js_of_ocaml +, js_of_ocaml-ppx +, camomile +, cppo +, menhirLib ? null #for nixos-unstable compatibility. +}: buildDunePackage rec { pname = "catala"; @@ -32,7 +51,7 @@ buildDunePackage rec { unionfind bindlib - ]; + ] ++ (if isNull menhirLib then [ ] else [ menhirLib ]); doCheck = true; patches = [ ./.nix/no-web.patch ]; @@ -44,4 +63,4 @@ buildDunePackage rec { license = licenses.asl20; maintainers = with maintainers; [ ]; }; -} +} \ No newline at end of file From 2fb80a6f8a47c065a7739eb23c5a8dd3f8038fd5 Mon Sep 17 00:00:00 2001 From: Alain Date: Mon, 29 Nov 2021 11:25:18 +0100 Subject: [PATCH 16/17] add CI check to nix-unstable rename check build-nix to build-nix-21.05 --- .github/workflows/build.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1a8663bf..b4c8a8c6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ on: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: - build-nix: + build-nix-21-05: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.3.4 @@ -21,6 +21,16 @@ jobs: nix_path: nixpkgs=channel:nixos-21.05 - run: nix-build release.nix - run: nix-shell --run "echo OK" + + build-nix-unstable: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2.3.4 + - uses: cachix/install-nix-action@v14.1 + with: + nix_path: nixpkgs=channel:nixos-unstable + - run: nix-build release.nix + - run: nix-shell --run "echo OK" build: # The type of runner that the job will run on From e34cec592f00c827ab78fa70ad77e159ce471bac Mon Sep 17 00:00:00 2001 From: EmileRolley Date: Mon, 29 Nov 2021 12:25:45 +0100 Subject: [PATCH 17/17] docs(README): comestic changes --- README.md | 61 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 50 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index d6680684..80382bd5 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,53 @@ -

-Catala logo -
- -# Catala [![Catala chat][chat-image]][chat-link] ![CI][ci-link] ![Opam][opam-link] ![Licence][licence-link] ![Tag][tag-link] ![LoC][loc-link] ![Language][language-link] ![Issues][issues-link] ![Contributors][contributors-link] ![Activity][activity-link] +
+ Catala logo +

+ Catala +

+

+ Explore the docs » +
+ View Tutorial + • + Report Bug + • + Contribute + • + Join Zulip Chat +

+![CI][ci-link] ![Opam][opam-link] ![Licence][licence-link] ![Tag][tag-link] ![LoC][loc-link] ![Language][language-link] ![Issues][issues-link] ![Contributors][contributors-link] ![Activity][activity-link] + Catala is a domain-specific language for deriving faithful-by-construction algorithms from legislative texts. To learn quickly about the language and its features, you can jump right to the official [Catala tutorial](https://catala-lang.org/en/examples/tutorial). You can join the Catala community on [Zulip][chat-link]! +
+ +
+ +
+ Table of Contents + + + +* [Concepts](#concepts) +* [Building and installation](#building-and-installation) +* [Usage](#usage) +* [Examples](#examples) +* [API](#api) +* [Contributing](#contributing) +* [Test suite](#test-suite) +* [Documentation](#documentation) + * [Formal semantics](#formal-semantics) + * [Compiler documentation](#compiler-documentation) +* [License](#license) +* [Limitations and disclaimer](#limitations-and-disclaimer) +* [Pierre Catala](#pierre-catala) + + + +
## Concepts @@ -23,9 +62,9 @@ cases, etc. that contain information about the socio-fiscal mechanism that you want to implement. Then, you can proceed to annotate the text article by article, in your favorite text editor : -
-Screenshot -
+
+Screenshot +
Once your code is complete and tested, you can use the Catala compiler to produce a lawyer-readable PDF version of your @@ -34,9 +73,9 @@ in collaboration with law professionals to ensure that the code can be reviewed and certified correct by the domain experts, which are in this case lawyers and not programmers. -
-Screenshot -
+
+Screenshot +
The Catala language is special because its logical structure mimics the logical structure of the law. Indeed, the core concept of