#include "gec.h"

#ifdef __cplusplus
extern "C" {
#endif

void GE_init_const15()
{
	ge1524ov24969770 = (GE_ms8("vfav1c", 6));
	ge1524ov24969304 = (GE_ms8("features `$7\' and `$9\' have both the same unary Operator alias `$8\'.", 68));
	ge1524ov24969781 = (GE_ms8("vfav4b", 6));
	ge1524ov24969571 = (GE_ms8("VFAV-4", 6));
	ge1524ov24969315 = (GE_ms8("features `$7\' and `$9\' have both the same Parenthesis alias `$8\'.", 65));
	ge1524ov24969777 = (GE_ms8("vfav2b", 6));
	ge1524ov24969570 = (GE_ms8("VFAV-2", 6));
	ge1524ov24969311 = (GE_ms8("features `$7\' and `$9\' have both the same Bracket alias `$8\'.", 61));
	ge1524ov24969774 = (GE_ms8("vfav1g", 6));
	ge1524ov24969308 = (GE_ms8("features `$7\' and `$9\' inherited from $11 have both the same binary Operator alias `$8\'.", 88));
	ge1524ov24969771 = (GE_ms8("vfav1d", 6));
	ge1524ov24969305 = (GE_ms8("features `$7\' and `$9\' inherited from $11 have both the same unary Operator alias `$8\'.", 87));
	ge1524ov24969782 = (GE_ms8("vfav4c", 6));
	ge1524ov24969316 = (GE_ms8("features `$7\' and `$9\' inherited from $11 have both the same Parenthesis alias `$8\'.", 84));
	ge1524ov24969778 = (GE_ms8("vfav2c", 6));
	ge1524ov24969312 = (GE_ms8("features `$7\' and `$9\' inherited from $11 have both the same Bracket alias `$8\'.", 80));
	ge1524ov24969775 = (GE_ms8("vfav1h", 6));
	ge1524ov24969309 = (GE_ms8("features `$7\' inherited from $9 and `$10\' inherited from $12 have both the same binary Operator alias `$8\'.", 107));
	ge1524ov24969772 = (GE_ms8("vfav1e", 6));
	ge1524ov24969306 = (GE_ms8("features `$7\' inherited from $9 and `$10\' inherited from $12 have both the same unary Operator alias `$8\'.", 106));
	ge1524ov24969783 = (GE_ms8("vfav4d", 6));
	ge1524ov24969317 = (GE_ms8("features `$7\' inherited from $9 and `$10\' inherited from $12 have both the same Parenthesis alias `$8\'.", 103));
	ge1524ov24969779 = (GE_ms8("vfav2d", 6));
	ge1524ov24969313 = (GE_ms8("features `$7\' inherited from $9 and `$10\' inherited from $12 have both the same Bracket alias `$8\'.", 99));
	ge1524ov24969893 = (GE_ms8("vtat2a", 6));
	ge1524ov24969631 = (GE_ms8("VTAT-2", 6));
	ge1524ov24969427 = (GE_ms8("anchor cycle $7.", 16));
	ge1524ov24969789 = (GE_ms8("vffd7b", 6));
	ge1524ov24969575 = (GE_ms8("VFFD-7", 6));
	ge1524ov24969323 = (GE_ms8("feature `$7\' is a once funtion but its type contains a formal generic parameter.", 80));
	ge1524ov24969788 = (GE_ms8("vffd7a", 6));
	ge1524ov24969322 = (GE_ms8("feature `$7\' is a once funtion but its type contains an anchored type.", 70));
	ge1524ov24969769 = (GE_ms8("vfav1b", 6));
	ge1524ov24969303 = (GE_ms8("feature `$7\' has a unary Operator alias `$8\' but is not a query with no argument.", 81));
	ge1524ov24969768 = (GE_ms8("vfav1a", 6));
	ge1524ov24969302 = (GE_ms8("feature `$7\' has a binary Operator alias `$8\' but is not a query with at exactly one argument.", 94));
	ge1524ov24969780 = (GE_ms8("vfav4a", 6));
	ge1524ov24969314 = (GE_ms8("feature `$7\' has a Parenthesis alias `$8\' but is not a feature with at least one argument.", 90));
	ge1524ov24969776 = (GE_ms8("vfav2a", 6));
	ge1524ov24969310 = (GE_ms8("feature `$7\' has a Bracket alias `$8\' but is not a query with at least one argument.", 84));
	ge1524ov24969787 = (GE_ms8("vffd6a", 6));
	ge1524ov24969574 = (GE_ms8("VFFD-6", 6));
	ge1524ov24969321 = (GE_ms8("feature `$7\' has an Infix name but is not a function with exactly one argument.", 79));
	ge1524ov24969786 = (GE_ms8("vffd5a", 6));
	ge1524ov24969573 = (GE_ms8("VFFD-5", 6));
	ge1524ov24969320 = (GE_ms8("feature `$7\' has a Prefix name but is not an attribute or a function with no argument.", 86));
	ge1524ov24969785 = (GE_ms8("vffd4a", 6));
	ge1524ov24969572 = (GE_ms8("VFFD-4", 6));
	ge1524ov24969319 = (GE_ms8("deferred feature `$7\' is marked as frozen.", 42));
	ge1524ov24969882 = (GE_ms8("vrfa0a", 6));
	ge1524ov24969625 = (GE_ms8("VRFA", 4));
	ge1524ov24969416 = (GE_ms8("argument name \'$7\' in feature `$8\' is also the final name of a feature.", 71));
	ge1524ov24969880 = (GE_ms8("vreg0a", 6));
	ge1524ov24969624 = (GE_ms8("VREG", 4));
	ge1524ov24969414 = (GE_ms8("argument name \'$7\' appear twice in feature `$8\'.", 48));
	ge1524ov24969708 = (GE_ms8("vdjr2b", 6));
	ge1524ov24969540 = (GE_ms8("VDJR-2", 6));
	ge1524ov24969242 = (GE_ms8("feature `$7\' inherited from $9 has an alias `$8\' but the version inherited from $11 has a different one `$10\'.", 110));
	ge1524ov24969835 = (GE_ms8("vmfn2b", 6));
	ge1524ov24969600 = (GE_ms8("VMFN-2", 6));
	ge1524ov24969369 = (GE_ms8("feature `$7\' inherited from $9 has an alias `$8\' but the version inherited from $11 has a different one `$10\'.", 110));
	ge1524ov24969707 = (GE_ms8("vdjr2a", 6));
	ge1524ov24969241 = (GE_ms8("feature `$7\' inherited from $9 has an alias `$8\' but the version inherited from $10 has none.", 93));
	ge1524ov24969834 = (GE_ms8("vmfn2a", 6));
	ge1524ov24969368 = (GE_ms8("feature `$7\' inherited from $9 has an alias `$8\' but the version inherited from $10 has none.", 93));
	ge1524ov24969833 = (GE_ms8("vmfn0c", 6));
	ge1524ov24969367 = (GE_ms8("two features with the same name `$7\' inherited from $8 and `$9\' inherited from $10.", 83));
	ge1524ov24969738 = (GE_ms8("vdrs4a", 6));
	ge1524ov24969555 = (GE_ms8("VDRS-4", 6));
	ge1524ov24969272 = (GE_ms8("Redefine subclause of $8 lists feature `$7\' but it is not redefined.", 68));
	ge1524ov24969736 = (GE_ms8("vdrs2b", 6));
	ge1524ov24969553 = (GE_ms8("VDRS-2", 6));
	ge1524ov24969270 = (GE_ms8("cannot redefine the constant attribute `$7\'.", 44));
	ge1524ov24969735 = (GE_ms8("vdrs2a", 6));
	ge1524ov24969269 = (GE_ms8("cannot redefine the frozen feature `$7\'.", 40));
	ge1524ov24969742 = (GE_ms8("vdus2b", 6));
	ge1524ov24969557 = (GE_ms8("VDUS-2", 6));
	ge1524ov24969276 = (GE_ms8("cannot undefine the attribute `$7\'.", 35));
	ge1524ov24969741 = (GE_ms8("vdus2a", 6));
	ge1524ov24969275 = (GE_ms8("cannot undefine the frozen feature `$7\'.", 40));
	ge1524ov24969743 = (GE_ms8("vdus3a", 6));
	ge1524ov24969558 = (GE_ms8("VDUS-3", 6));
	ge1524ov24969277 = (GE_ms8("cannot undefine the deferred feature `$7\'.", 42));
	ge1524ov24969817 = (GE_ms8("vhrc4d", 6));
	ge1524ov24969589 = (GE_ms8("VHRC-4", 6));
	ge1524ov24969351 = (GE_ms8("`$7\' has a unary Operator alias `$8\' but `$9\' in $10 is not a query with no argument.", 85));
	ge1524ov24969816 = (GE_ms8("vhrc4c", 6));
	ge1524ov24969350 = (GE_ms8("`$7\' has a binary Operator alias `$8\' but `$9\' in $10 is not a query with exactly one argument.", 95));
	ge1524ov24969784 = (GE_ms8("vfav4e", 6));
	ge1524ov24969318 = (GE_ms8("`$7\' has a Parenthesis alias `$8\' but `$9\' in $10 is not a feature with at least one argument.", 94));
	ge1524ov24969815 = (GE_ms8("vhrc4b", 6));
	ge1524ov24969349 = (GE_ms8("`$7\' has a Bracket alias `$8\' but `$9\' in $10 is not a query with at least one argument.", 88));
	ge1524ov24969814 = (GE_ms8("vhrc4a", 6));
	ge1524ov24969348 = (GE_ms8("`$7\' is of the Prefix form but `$8\' in $9 is not an attribute nor a function with no argument.", 94));
	ge1524ov24969818 = (GE_ms8("vhrc5a", 6));
	ge1524ov24969590 = (GE_ms8("VHRC-5", 6));
	ge1524ov24969352 = (GE_ms8("`$7\' is of the Infix form but `$8\' in $9 is not a function with one argument.", 77));
	ge1524ov24969724 = (GE_ms8("vdrd3b", 6));
	ge1524ov24969547 = (GE_ms8("VDRD-3", 6));
	ge1524ov24969258 = (GE_ms8("feature `$7\' is redeclared but its postconditions do not begin with \'ensure then\'.", 82));
	ge1524ov24969723 = (GE_ms8("vdrd3a", 6));
}

void GE_init_const16()
{
	ge1524ov24969257 = (GE_ms8("feature `$7\' is redeclared but its preconditions do not begin with \'require else\'.", 82));
	ge1524ov24969729 = (GE_ms8("vdrd6a", 6));
	ge1524ov24969263 = (GE_ms8("attribute `$7\' inherited from $8 is not redeclared into an attribute.", 69));
	ge1524ov24969726 = (GE_ms8("vdrd4b", 6));
	ge1524ov24969548 = (GE_ms8("VDRD-4", 6));
	ge1524ov24969260 = (GE_ms8("effective feature `$7\' inherited from $8 is redefined but is not listed in the Redefine subclause.", 98));
	ge1524ov24969727 = (GE_ms8("vdrd4c", 6));
	ge1524ov24969261 = (GE_ms8("effective feature `$8\' inherited from $9 is redefined into a deferred one but is not listed in the Undefine and Redefine subclauses.", 132));
	ge1524ov24969832 = (GE_ms8("vmfn0b", 6));
	ge1524ov24969366 = (GE_ms8("two features with the same name `$7\' in current class and `$8\' inherited from $9.", 81));
	ge1524ov24969725 = (GE_ms8("vdrd4a", 6));
	ge1524ov24969259 = (GE_ms8("deferred feature `$7\' inherited from $8 is redefined but is not listed in the Redefine subclause.", 97));
	ge1524ov24969739 = (GE_ms8("vdrs4b", 6));
	ge1524ov24969273 = (GE_ms8("redeclaration of feature `$7\' from $8 is an effecting and should not appear in the Redefine subclause.", 102));
	ge1524ov24969728 = (GE_ms8("vdrd5a", 6));
	ge1524ov24969549 = (GE_ms8("VDRD-5", 6));
	ge1524ov24969262 = (GE_ms8("effective feature `$7\' inherited from $8 is redefined into a deferred one.", 74));
	ge1524ov24969733 = (GE_ms8("vdrd7c", 6));
	ge1524ov24969551 = (GE_ms8("VDRD-7", 6));
	ge1524ov24969267 = (GE_ms8("feature `$7\' inherited from $9 has an alias `$8\' but its redeclared version has a different one `$11\'.", 102));
	ge1524ov24969731 = (GE_ms8("vdrd7a", 6));
	ge1524ov24969265 = (GE_ms8("feature `$7\' inherited from $8 has no alias but its redeclared version has one `$10\'.", 85));
	ge1524ov24969732 = (GE_ms8("vdrd7b", 6));
	ge1524ov24969266 = (GE_ms8("feature `$7\' inherited from $9 has an alias `$8\' but its redeclared version has none.", 85));
	ge1524ov24969840 = (GE_ms8("vmss3a", 6));
	ge1524ov24969604 = (GE_ms8("VMSS-3", 6));
	ge1524ov24969374 = (GE_ms8("feature name `$7\' appears in the Select subclause of parent $8 but is not replicated.", 85));
	ge1524ov24969809 = (GE_ms8("vhpr1a", 6));
	ge1524ov24969576 = (GE_ms8("VHPR-1", 6));
	ge1524ov24969343 = (GE_ms8("inheritance cycle $7.", 21));
	ge1524ov24969703 = (GE_ms8("vcfg3h", 6));
	ge1524ov24969538 = (GE_ms8("VCFG-3", 6));
	ge1524ov24969237 = (GE_ms8("formal generic constraint cycle $7.", 35));
	ge1524ov24969701 = (GE_ms8("vcfg3e", 6));
	ge1524ov24969235 = (GE_ms8("formal generic constraint cycle $7.", 35));
	ge1524ov24969697 = (GE_ms8("vcfg2a", 6));
	ge1524ov24969537 = (GE_ms8("VCFG-2", 6));
	ge1524ov24969231 = (GE_ms8("\'$7\' is the name of formal generic parameters #$7 and #$8.", 58));
	ge1524ov24969696 = (GE_ms8("vcfg1a", 6));
	ge1524ov24969536 = (GE_ms8("VCFG-1", 6));
	ge1524ov24969230 = (GE_ms8("formal generic parameter \'$7\' has the same name as a class in the surrounding universe.", 87));
	ge1524ov24969957 = (GE_ms8("gvagp0a", 7));
	ge1524ov24969661 = (GE_ms8("GVAGP", 5));
	ge1524ov24969491 = (GE_ms8("ancestors with generic parameter mismatch: \'$7\' and \'$8\'.", 57));
	ge1524ov24969960 = (GE_ms8("gvhso2a", 7));
	ge1524ov24969665 = (GE_ms8("GVHSO-2", 7));
	ge1524ov24969494 = (GE_ms8("implicitly inherits from class SYSTEM_OBJECT but SYSTEM_OBJECT is not a .NET class.", 83));
	ge1524ov24969898 = (GE_ms8("vtct0a", 6));
	ge1524ov24969634 = (GE_ms8("VTCT", 4));
	ge1524ov24969432 = (GE_ms8("type based on unknown class $7.", 31));
	ge1524ov24969959 = (GE_ms8("gvhso1a", 7));
	ge1524ov24969664 = (GE_ms8("GVHSO-1", 7));
	ge1524ov24969493 = (GE_ms8("implicitly inherits from unknown class SYSTEM_OBJECT.", 53));
	ge1524ov24969808 = (GE_ms8("vhay0a", 6));
	ge1524ov24969585 = (GE_ms8("VHAY", 4));
	ge1524ov24969342 = (GE_ms8("implicitly inherits from unknown class ANY.", 43));
	ge1524ov24969810 = (GE_ms8("vhpr1b", 6));
	ge1524ov24969344 = (GE_ms8("inheritance cycle when inheriting from $7.", 42));
	ge1514ov24805390 = (GE_ms8("gcdep", 5));
	ge1514ov24805385 = (GE_ms8("GCDEP", 5));
	ge1514ov24805380 = (GE_ms8("[$1] cluster $2: class $3 (from cluster $4) is a provider of class $5 (from cluster $6) which is not contained in any of the clusters $7.", 137));
	ge1514ov24805391 = (GE_ms8("gcpro", 5));
	ge1514ov24805386 = (GE_ms8("GCPRO", 5));
	ge1514ov24805381 = (GE_ms8("[$1] cluster $2: class $3 (from cluster $4) depends on class $5 (from cluster $6) which is not contained in any of the clusters $7.", 131));
	ge1524ov24969970 = (GE_ms8("gvscn1b", 7));
	ge1524ov24969674 = (GE_ms8("GVSCN-1", 7));
	ge1524ov24969504 = (GE_ms8("file \'$8\' does not contain the expected class $5.", 49));
	ge1524ov24969969 = (GE_ms8("gvscn1a", 7));
	ge1524ov24969503 = (GE_ms8("file \'$8\' contains class $9 instead of the expected class $5.", 61));
	ge1524ov24969757 = (GE_ms8("veen9b", 6));
	ge1524ov24969563 = (GE_ms8("VEEN-9", 6));
	ge1524ov24969291 = (GE_ms8("`$7\' appearing in the invariant or one of its possibly nested inline agents, is an across cursor that is used outside of its scope.", 131));
	ge1524ov24969756 = (GE_ms8("veen9a", 6));
	ge1524ov24969290 = (GE_ms8("`$7\' appearing in feature `$8\' or one of its possibly nested inline agents, is an across cursor that is used outside of its scope.", 130));
	ge1524ov24969755 = (GE_ms8("veen8b", 6));
	ge1524ov24969562 = (GE_ms8("VEEN-8", 6));
	ge1524ov24969289 = (GE_ms8("`$7\' appearing in the invariant or one of its possibly nested inline agents, is an object-test local that is used outside of its scope.", 135));
	ge1524ov24969754 = (GE_ms8("veen8a", 6));
	ge1524ov24969288 = (GE_ms8("`$7\' appearing in feature `$8\' or one of its possibly nested inline agents, is an object-test local that is used outside of its scope.", 134));
	ge1524ov24969758 = (GE_ms8("vevi0a", 6));
	ge1524ov24969564 = (GE_ms8("VEVI", 4));
	ge1524ov24969292 = (GE_ms8("local entity `$7\' declared as attached is used before being initialized.", 72));
	ge1524ov24969749 = (GE_ms8("veen2c", 6));
	ge1524ov24969561 = (GE_ms8("VEEN-2", 6));
	ge1524ov24969283 = (GE_ms8("local entity `$7\' appears in the precondition or postcondition of feature `$8\'.", 79));
	ge1524ov24969751 = (GE_ms8("veen2e", 6));
	ge1524ov24969285 = (GE_ms8("local entity `$7\' appears in the precondition or postcondition of an inline agent.", 82));
	ge1524ov24969915 = (GE_ms8("vucr0f", 6));
	ge1524ov24969641 = (GE_ms8("VUCR", 4));
	ge1524ov24969449 = (GE_ms8("\'Current\' cannot be used in a static feature.", 45));
	ge1524ov24969921 = (GE_ms8("vuex2a", 6));
	ge1524ov24969643 = (GE_ms8("VUEX-2", 6));
	ge1524ov24969455 = (GE_ms8("`$7\' is not the final name of a feature in class $8.", 52));
	ge1524ov24969906 = (GE_ms8("vuar1c", 6));
	ge1524ov24969638 = (GE_ms8("VUAR-1", 6));
	ge1524ov24969440 = (GE_ms8("call to Tuple label `$7\' cannot have arguments.", 47));
	ge1524ov24969937 = (GE_ms8("vuta2b", 6));
	ge1524ov24969649 = (GE_ms8("VUTA-2", 6));
	ge1524ov24969471 = (GE_ms8("the target (of type \'$8\') of the call to Tuple label `$7\' is not attached.", 74));
	ge1524ov24969826 = (GE_ms8("vkcn2a", 6));
	ge1524ov24969595 = (GE_ms8("VKCN-2", 6));
}

void GE_init_const17()
{
	ge1524ov24969360 = (GE_ms8("procedure `$8\' of class $9 appears in a call expression.", 56));
	ge1524ov24969908 = (GE_ms8("vuar2b", 6));
	ge1524ov24969639 = (GE_ms8("VUAR-2", 6));
	ge1524ov24969442 = (GE_ms8("the $9-th actual argument (of type \'$10\') does not conform to the corresponding formal argument (of type \'$11\') of feature `$8\'.", 128));
	ge1524ov24969907 = (GE_ms8("vuar2a", 6));
	ge1524ov24969441 = (GE_ms8("the $10-th actual argument (of type \'$11\') does not conform to the corresponding formal argument (of type \'$12\') of feature `$8\' in class $9.", 141));
	ge1524ov24969718 = (GE_ms8("vdpr4b", 6));
	ge1524ov24969545 = (GE_ms8("VDPR-4B", 7));
	ge1524ov24969252 = (GE_ms8("the $9-th actual argument (of type \'$10\') does not conform to the corresponding formal argument (of type \'$11\') of feature `$7\' in class $8.", 140));
	ge1524ov24969905 = (GE_ms8("vuar1b", 6));
	ge1524ov24969439 = (GE_ms8("the number of actual arguments is not the same as the number of formal arguments of feature `$8\'.", 97));
	ge1524ov24969904 = (GE_ms8("vuar1a", 6));
	ge1524ov24969438 = (GE_ms8("the number of actual arguments is not the same as the number of formal arguments of feature `$8\' in class $9.", 109));
	ge1524ov24969717 = (GE_ms8("vdpr4a", 6));
	ge1524ov24969544 = (GE_ms8("VDPR-4A", 7));
	ge1524ov24969251 = (GE_ms8("the number of actual arguments in Precursor call is not the same as the number of formal arguments of feature `$7\' in class $8.", 127));
	ge1524ov24969689 = (GE_ms8("vape0b", 6));
	ge1524ov24969530 = (GE_ms8("VAPE", 4));
	ge1524ov24969223 = (GE_ms8("feature `$8\' of class $9 appearing in the precondition of `$10\' is not exported to class $11 to which feature `$10\' is exported.", 128));
	ge1524ov24969922 = (GE_ms8("vuex2b", 6));
	ge1524ov24969456 = (GE_ms8("feature `$8\' of class $9 is not exported to class $5.", 53));
	ge1524ov24969936 = (GE_ms8("vuta2a", 6));
	ge1524ov24969470 = (GE_ms8("the target (of type \'$9\') of the call to feature `$8\' is not attached.", 70));
	ge1524ov24969824 = (GE_ms8("vkcn1a", 6));
	ge1524ov24969594 = (GE_ms8("VKCN-1", 6));
	ge1524ov24969358 = (GE_ms8("query `$8\' of class $9 appears in a call instruction.", 53));
	ge1524ov24969688 = (GE_ms8("vape0a", 6));
	ge1524ov24969222 = (GE_ms8("feature `$8\' of class $5 appearing in the precondition of `$9\' is not exported to class $10 to which feature `$9\' is exported.", 126));
	ge1524ov24969913 = (GE_ms8("vucr0d", 6));
	ge1524ov24969447 = (GE_ms8("static feature contains an unqualified call to non-static feature \'$7\'.", 71));
	ge1524ov24969759 = (GE_ms8("vevi0b", 6));
	ge1524ov24969293 = (GE_ms8("entity \'Result\' declared as attached is used before being initialized.", 70));
	ge1524ov24969747 = (GE_ms8("veen2a", 6));
	ge1524ov24969281 = (GE_ms8("entity \'Result\' appears in the body, postcondition or rescue clause of a procedure `$7\'.", 88));
	ge1524ov24969753 = (GE_ms8("veen2g", 6));
	ge1524ov24969287 = (GE_ms8("entity \'Result\' appears in the body, postcondition or rescue clause of an inline agent whose associated feature is a procedure.", 127));
	ge1524ov24969750 = (GE_ms8("veen2d", 6));
	ge1524ov24969284 = (GE_ms8("entity \'Result\' appears in the invariant of the class.", 54));
	ge1524ov24969748 = (GE_ms8("veen2b", 6));
	ge1524ov24969282 = (GE_ms8("entity \'Result\' appears in the precondition of feature `$7\'.", 60));
	ge1525ov24985945 = (GE_ms8("GE_process_onces", 16));
	ge1525ov24986081 = (GE_ms8("thread_onces", 12));
	ge1525ov24986089 = (GE_ms8("_value", 6));
	ge1524ov24969920 = (GE_ms8("vuex1a", 6));
	ge1524ov24969642 = (GE_ms8("VUEX-1", 6));
	ge1524ov24969454 = (GE_ms8("`$7\' is not the final name of a feature in class $5.", 52));
	ge1524ov24969827 = (GE_ms8("vkcn2c", 6));
	ge1524ov24969361 = (GE_ms8("procedure `$8\' appears in a call expression.", 44));
	ge1524ov24969982 = (GE_ms8("gvuao0c", 7));
	ge1524ov24969679 = (GE_ms8("GVUAO", 5));
	ge1524ov24969516 = (GE_ms8("`$7\' is an object-test local of in an invariant and hence cannot have actual arguments.", 87));
	ge1524ov24969980 = (GE_ms8("gvuao0a", 7));
	ge1524ov24969514 = (GE_ms8("`$7\' is an object-test local of feature `$8\' and hence cannot have actual arguments.", 84));
	ge1524ov24969981 = (GE_ms8("gvuao0b", 7));
	ge1524ov24969515 = (GE_ms8("`$7\' is an object-test local of an inline agent and hence cannot have actual arguments.", 87));
	ge1524ov24969977 = (GE_ms8("gvuac0c", 7));
	ge1524ov24969677 = (GE_ms8("GVUAC", 5));
	ge1524ov24969511 = (GE_ms8("`$7\' is an across cursor of in an invariant and hence cannot have actual arguments.", 83));
	ge1524ov24969975 = (GE_ms8("gvuac0a", 7));
	ge1524ov24969509 = (GE_ms8("`$7\' is an across cursor of feature `$8\' and hence cannot have actual arguments.", 80));
	ge1524ov24969976 = (GE_ms8("gvuac0b", 7));
	ge1524ov24969510 = (GE_ms8("`$7\' is an across cursor of an inline agent and hence cannot have actual arguments.", 83));
	ge1524ov24969978 = (GE_ms8("gvual0a", 7));
	ge1524ov24969678 = (GE_ms8("GVUAL", 5));
	ge1524ov24969512 = (GE_ms8("`$7\' is a local variable of feature `$8\' and hence cannot have actual arguments.", 80));
	ge1524ov24969979 = (GE_ms8("gvual0b", 7));
	ge1524ov24969513 = (GE_ms8("`$7\' is a local variable of an inline agent and hence cannot have actual arguments.", 83));
	ge1524ov24969973 = (GE_ms8("gvuaa0a", 7));
	ge1524ov24969676 = (GE_ms8("GVUAA", 5));
	ge1524ov24969507 = (GE_ms8("`$7\' is a formal argument of feature `$8\' and hence cannot have actual arguments.", 81));
	ge1524ov24969974 = (GE_ms8("gvuaa0b", 7));
	ge1524ov24969508 = (GE_ms8("`$7\' is a formal argument of an inline agent and hence cannot have actual arguments.", 84));
	ge1524ov24969946 = (GE_ms8("vweq0b", 6));
	ge1524ov24969654 = (GE_ms8("VWEQ", 4));
	ge1524ov24969480 = (GE_ms8("none of the operands of \'$7\' (of types \'$8\' and \'$9\') conforms nor converts to the other.", 89));
	ge1524ov24969945 = (GE_ms8("vweq0a", 6));
	ge1524ov24969479 = (GE_ms8("none of the operands of \'$7\' (of types \'$8\' and \'$9\') conforms nor converts to the other.", 89));
	ge1524ov24969797 = (GE_ms8("vgcc6c", 6));
	ge1524ov24969331 = (GE_ms8("procedure `$8\' of class $9 is not exported for creation to class $5.", 68));
	ge1524ov24969800 = (GE_ms8("vgcc8a", 6));
	ge1524ov24969581 = (GE_ms8("VGCC-8", 6));
	ge1524ov24969334 = (GE_ms8("procedure `$8\' of class $9 is not listed as creation procedure of the $10-th formal generic parameter of class $5.", 114));
	ge1524ov24969790 = (GE_ms8("vgcc1a", 6));
	ge1524ov24969577 = (GE_ms8("VGCC-1", 6));
	ge1524ov24969324 = (GE_ms8("creation expression with no Creation_call part, but $7 is deferred.", 67));
	ge1524ov24969793 = (GE_ms8("vgcc5a", 6));
	ge1524ov24969579 = (GE_ms8("VGCC-5", 6));
	ge1524ov24969327 = (GE_ms8("creation expression with no Creation_call part, but $7 has a Creators part.", 75));
	ge1524ov24969896 = (GE_ms8("vtcg4a", 6));
	ge1524ov24969633 = (GE_ms8("VTCG-4", 6));
	ge1524ov24969430 = (GE_ms8("base class $9 of the $7-th actual generic parameter of $10 does not make feature `$8\' available as creation procedure to class $10.", 131));
	ge1524ov24969897 = (GE_ms8("vtcg4b", 6));
	ge1524ov24969431 = (GE_ms8("the $7-th actual generic parameter of $10, which is the $9-th formal generic parameter of class $5, does not list feature `$8\' as creation procedure in its generic constraint.", 175));
	ge1524ov24969796 = (GE_ms8("vgcc6b", 6));
	ge1524ov24969330 = (GE_ms8("`$7\' is not the final name of a procedure in class $9.", 54));
	ge1524ov24969993 = (GE_ms8("gvwmc2a", 7));
	ge1524ov24969684 = (GE_ms8("GVWMC-2", 7));
	ge1524ov24969527 = (GE_ms8("integer constant \'$7\' is not representable as an instance of \'$8\'.", 66));
	ge1524ov24969949 = (GE_ms8("vwmq0a", 6));
	ge1524ov24969657 = (GE_ms8("VWMQ", 4));
	ge1524ov24969483 = (GE_ms8("type \'$7\' in the integer constant is not one of the sized variants of INTEGER.", 78));
}

void GE_init_const18()
{
	ge1525ov24985863 = (GE_ms8("GE_int8", 7));
	ge1525ov24985864 = (GE_ms8("GE_int16", 8));
	ge1525ov24985902 = (GE_ms8("GE_min_int32", 12));
	ge1525ov24985865 = (GE_ms8("GE_int32", 8));
	ge1525ov24985816 = (GE_ms8("GE_case_int64", 13));
	ge1525ov24985903 = (GE_ms8("GE_min_int64", 12));
	ge1525ov24985866 = (GE_ms8("GE_int64", 8));
	ge1525ov24985911 = (GE_ms8("GE_nat8", 7));
	ge1525ov24985912 = (GE_ms8("GE_nat16", 8));
	ge1525ov24985913 = (GE_ms8("GE_nat32", 8));
	ge1525ov24985817 = (GE_ms8("GE_case_nat64", 13));
	ge1525ov24985914 = (GE_ms8("GE_nat64", 8));
	ge1524ov24969884 = (GE_ms8("vrle1a", 6));
	ge1524ov24969626 = (GE_ms8("VRLE-1", 6));
	ge1524ov24969418 = (GE_ms8("local variable name \'$7\' in feature `$8\' is also the final name of a feature.", 77));
	ge1524ov24969885 = (GE_ms8("vrle2a", 6));
	ge1524ov24969627 = (GE_ms8("VRLE-2", 6));
	ge1524ov24969419 = (GE_ms8("local variable name \'$7\' in feature `$8\' is also the name of a formal argument of this feature.", 95));
	ge1524ov24969881 = (GE_ms8("vreg0b", 6));
	ge1524ov24969415 = (GE_ms8("local variable name \'$7\' appear twice in feature `$8\'.", 54));
	ge1524ov24969932 = (GE_ms8("vuot3a", 6));
	ge1524ov24969647 = (GE_ms8("VUOT-3", 6));
	ge1524ov24969466 = (GE_ms8("object-test with local name \'$6\' has the same name as another object-test local appearing in the same feature `$7\' or in the same inline agent.", 143));
	ge1525ov24985834 = (GE_ms8("GE_current_context", 18));
	ge1525ov24986065 = (GE_ms8("object", 6));
	ge1525ov24985969 = (GE_ms8("GE_rescue", 9));
	ge1525ov24986082 = (GE_ms8("tr", 2));
	ge1525ov24986048 = (GE_ms8("in_rescue", 9));
	ge1525ov24985971 = (GE_ms8("GE_setjmp", 9));
	ge1525ov24985846 = (GE_ms8("GE_EX_FAIL", 10));
	ge1525ov24985892 = (GE_ms8("GE_jump_to_last_rescue", 22));
	ge1525ov24985970 = (GE_ms8("GE_retry", 8));
	ge1525ov24986071 = (GE_ms8("previous", 8));
	ge1525ov24986057 = (GE_ms8("last_rescue", 11));
	ge1525ov24986091 = (GE_ms8("volatile", 8));
	ge1525ov24985894 = (GE_ms8("GE_last_exception_raised", 24));
	ge1525ov24985800 = (GE_ms8("_exception", 10));
	ge1525ov24986075 = (GE_ms8("_status", 7));
	ge1525ov24986072 = (GE_ms8("process_onces", 13));
	ge1525ov24985910 = (GE_ms8("GE_mutex_unlock", 15));
	ge1525ov24985944 = (GE_ms8("GE_process_once_mutexes", 23));
	ge1525ov24986061 = (GE_ms8("_mutex", 6));
	ge1525ov24985908 = (GE_ms8("GE_mutex_lock", 13));
	ge1525ov24985909 = (GE_ms8("GE_mutex_try_lock", 17));
	ge1525ov24985947 = (GE_ms8("GE_raise_once_exception", 23));
	ge1524ov24969931 = (GE_ms8("vuot1f", 6));
	ge1524ov24969646 = (GE_ms8("VUOT-1", 6));
	ge1524ov24969465 = (GE_ms8("the scope of object-test with local name \'$6\' overlaps with the scope of another object-test with the same local name.", 118));
	ge1524ov24969935 = (GE_ms8("vuot4b", 6));
	ge1524ov24969648 = (GE_ms8("VUOT-4", 6));
	ge1524ov24969469 = (GE_ms8("ISE does not support object-tests in check instructions.", 56));
	ge1524ov24969934 = (GE_ms8("vuot4a", 6));
	ge1524ov24969468 = (GE_ms8("ISE does not support object-tests in preconditions.", 51));
	ge1524ov24969930 = (GE_ms8("vuot1e", 6));
	ge1524ov24969464 = (GE_ms8("object-test with local name \'$6\' appears in the scope of an across cursor with the same name.", 93));
	ge1524ov24969929 = (GE_ms8("vuot1d", 6));
	ge1524ov24969463 = (GE_ms8("object-test with local name \'$6\' appears in the scope of another object-test local with the same name.", 102));
	ge1524ov24969928 = (GE_ms8("vuot1c", 6));
	ge1524ov24969462 = (GE_ms8("object-test local name \'$6\' is also the name of a local variable of an enclosing feature or inline agent.", 105));
	ge1524ov24969927 = (GE_ms8("vuot1b", 6));
	ge1524ov24969461 = (GE_ms8("object-test local name \'$6\' is also the name of a formal argument of an enclosing feature or inline agent.", 106));
	ge1524ov24969926 = (GE_ms8("vuot1a", 6));
	ge1524ov24969460 = (GE_ms8("object-test local name \'$6\' is also the final name of a feature.", 64));
	ge1524ov24969952 = (GE_ms8("vwmq0d", 6));
	ge1524ov24969486 = (GE_ms8("type \'$7\' in the string constant is not one of the sized variants of STRING.", 76));
	ge1525ov24985905 = (GE_ms8("GE_ms8", 6));
	ge1525ov24985906 = (GE_ms8("GE_ms32", 7));
	ge1524ov24969962 = (GE_ms8("gvkbu1a", 7));
	ge1524ov24969667 = (GE_ms8("GVKBU-1", 7));
	ge1524ov24969496 = (GE_ms8("unknown built-in routine `$7\' in class $5.", 42));
	ge1524ov24969961 = (GE_ms8("gvkbs0a", 7));
	ge1524ov24969666 = (GE_ms8("GVKBS", 5));
	ge1524ov24969495 = (GE_ms8("built-in routine `$7\' in class $5 has not the expected signature \'$8\'.", 70));
	ge1525ov24985787 = (GE_ms8("EIF_TEST", 8));
	ge1525ov24985775 = (GE_ms8("EIF_NATIVE_CHAR", 15));
	ge1525ov24986070 = (GE_ms8("pre_ecma_mapping_status", 23));
	ge1525ov24985799 = (GE_ms8("exception_manager", 17));
	ge1525ov24986047 = (GE_ms8("in_assertion", 12));
	ge1524ov24969958 = (GE_ms8("gvhpr5a", 7));
	ge1524ov24969663 = (GE_ms8("GVHPR-5", 7));
	ge1524ov24969492 = (GE_ms8("cannot inherit from Tuple_type \'$7\'.", 36));
	ge1524ov24969910 = (GE_ms8("vucr0a", 6));
	ge1524ov24969444 = (GE_ms8("feature `$7\' is an attribute, so it cannot be used in static calls.", 67));
	ge1524ov24969762 = (GE_ms8("vevi0e", 6));
	ge1524ov24969296 = (GE_ms8("entity \'Result\' declared as attached is not initialized at the end of the body of attribute `$7\'.", 97));
	ge1524ov24969874 = (GE_ms8("vqmc5a", 6));
	ge1524ov24969620 = (GE_ms8("VQMC-5", 6));
	ge1524ov24969408 = (GE_ms8("string constant attribute `$7\' is not declared of type STRING.", 62));
	ge1524ov24969873 = (GE_ms8("vqmc4a", 6));
	ge1524ov24969619 = (GE_ms8("VQMC-4", 6));
	ge1524ov24969407 = (GE_ms8("real constant attribute `$7\' is not declared of type REAL or DOUBLE.", 68));
	ge1524ov24969871 = (GE_ms8("vqmc3a", 6));
	ge1524ov24969618 = (GE_ms8("VQMC-3", 6));
	ge1524ov24969405 = (GE_ms8("integer constant attribute `$7\' is not declared of type INTEGER.", 64));
	ge1524ov24969872 = (GE_ms8("vqmc3b", 6));
	ge1524ov24969406 = (GE_ms8("integer value \'$9\' in constant attribute `$7\' is not representable as an instance of \'$8\'.", 90));
	ge1524ov24969870 = (GE_ms8("vqmc2a", 6));
	ge1524ov24969617 = (GE_ms8("VQMC-2", 6));
	ge1524ov24969404 = (GE_ms8("character constant attribute `$7\' is not declared of type CHARACTER.", 68));
	ge1524ov24969869 = (GE_ms8("vqmc1a", 6));
	ge1524ov24969616 = (GE_ms8("VQMC-1", 6));
}

void GE_init_const19()
{
	ge1524ov24969403 = (GE_ms8("boolean constant attribute `$7\' is not declared of type BOOLEAN.", 64));
	ge1524ov24969875 = (GE_ms8("vqui0a", 6));
	ge1524ov24969622 = (GE_ms8("VQUI", 4));
	ge1524ov24969409 = (GE_ms8("unique attribute `$7\' is not declared of type INTEGER.", 54));
	ge1524ov24969698 = (GE_ms8("vcfg3a", 6));
	ge1524ov24969232 = (GE_ms8("invalid type \'$7\' in constraint of formal generic parameter.", 60));
	ge1524ov24969811 = (GE_ms8("vhpr3a", 6));
	ge1524ov24969586 = (GE_ms8("VHPR-3", 6));
	ge1524ov24969345 = (GE_ms8("invalid type \'$7\' in parent clause.", 35));
	ge1524ov24969899 = (GE_ms8("vtct0b", 6));
	ge1524ov24969433 = (GE_ms8("type based on unknown class $7.", 31));
	ge1524ov24969702 = (GE_ms8("vcfg3f", 6));
	ge1524ov24969236 = (GE_ms8("constraint of formal generic parameter \'$7\' contains \'$8\' itself.", 65));
	ge1524ov24969700 = (GE_ms8("vcfg3c", 6));
	ge1524ov24969234 = (GE_ms8("constraint of formal generic parameter \'$7\' is another formal generic parameter \'$8\'.", 85));
	ge1524ov24969699 = (GE_ms8("vcfg3b", 6));
	ge1524ov24969233 = (GE_ms8("constraint of formal generic parameter \'$7\' is \'$8\' itself.", 59));
	ge1524ov24969951 = (GE_ms8("vwmq0c", 6));
	ge1524ov24969485 = (GE_ms8("type \'$7\' in the character constant is not one of the sized variants of CHARACTER.", 82));
	ge1524ov24969950 = (GE_ms8("vwmq0b", 6));
	ge1524ov24969484 = (GE_ms8("type \'$7\' in the real constant is not one of the sized variants of REAL.", 72));
	ge1524ov24969760 = (GE_ms8("vevi0c", 6));
	ge1524ov24969294 = (GE_ms8("entity \'Result\' declared as attached is not initialized at the end of the body of function `$7\'.", 96));
	ge1524ov24969911 = (GE_ms8("vucr0b", 6));
	ge1524ov24969445 = (GE_ms8("feature `$7\' is a once-per-object feature, so it cannot be used in static calls.", 80));
	ge1305ov21382196 = (GE_ms8("once_status", 11));
	ge1305ov21382198 = (GE_ms8("global", 6));
	ge1305ov21382199 = (GE_ms8("thread", 6));
	ge1524ov24969941 = (GE_ms8("vvok2a", 6));
	ge1524ov24969651 = (GE_ms8("VVOK-2", 6));
	ge1524ov24969475 = (GE_ms8("once key \"$6\" is not supported. The supported once keys are \"THREAD\", \"PROCESS\" and \"OBJECT\".", 93));
	ge1299ov21282826 = (GE_ms8("PROCESS", 7));
	ge1299ov21282825 = (GE_ms8("THREAD", 6));
	ge1524ov24969939 = (GE_ms8("vvok1b", 6));
	ge1524ov24969650 = (GE_ms8("VVOK-1", 6));
	ge1524ov24969473 = (GE_ms8("indexing once status \"$6\" and once key \"$7\" cannot be combined.", 63));
	ge1524ov24969938 = (GE_ms8("vvok1a", 6));
	ge1524ov24969472 = (GE_ms8("once keys \"$6\" and \"$7\" cannot be combined.", 43));
	ge1299ov21282827 = (GE_ms8("OBJECT", 6));
	ge1524ov24969942 = (GE_ms8("vvok2b", 6));
	ge1524ov24969476 = (GE_ms8("indexing once status \"$6\" is not supported. Use one of the supported once keys \"THREAD\", \"PROCESS\" or \"OBJECT\".", 111));
	ge1524ov24969940 = (GE_ms8("vvok1c", 6));
	ge1524ov24969474 = (GE_ms8("indexing once status \"$6\" and \"$7\" cannot be combined.", 54));
	ge1524ov24969892 = (GE_ms8("vtat1c", 6));
	ge1524ov24969630 = (GE_ms8("VTAT-1", 6));
	ge1524ov24969426 = (GE_ms8("invalid type \'$7\': the anchor `$8\' must be the final name of a query in class $9.", 81));
	ge1524ov24969894 = (GE_ms8("vtat2b", 6));
	ge1524ov24969428 = (GE_ms8("invalid type \'$7\' when part of a qualified anchored type: the type of anchor `$8\' must not depend (possibly recursively) on a qualified anchored type.", 150));
	ge1524ov24969924 = (GE_ms8("vuno5a", 6));
	ge1524ov24969645 = (GE_ms8("VUNO-5", 6));
	ge1524ov24969458 = (GE_ms8("class $8 is deferred, so it cannot be used as target in a static call.", 70));
	ge1524ov24969925 = (GE_ms8("vuno5b", 6));
	ge1524ov24969459 = (GE_ms8("\'like Current\' cannot be used as target in a static call.", 57));
	ge1524ov24969923 = (GE_ms8("vuno3a", 6));
	ge1524ov24969644 = (GE_ms8("VUNO-3", 6));
	ge1524ov24969457 = (GE_ms8("feature `$8\' of class $9 is not valid for static call.", 54));
	ge1524ov24969713 = (GE_ms8("vdpr3b", 6));
	ge1524ov24969543 = (GE_ms8("VDPR-3", 6));
	ge1524ov24969247 = (GE_ms8("feature `$7\' is not the redefinition of an effective feature.", 61));
	ge1524ov24969712 = (GE_ms8("vdpr3a", 6));
	ge1524ov24969246 = (GE_ms8("conflict in Precursor construct between effective features `$7\' inherited from \'$8\' and `$9\' inherited from \'$10\'.", 114));
	ge1524ov24969711 = (GE_ms8("vdpr2a", 6));
	ge1524ov24969542 = (GE_ms8("VDPR-2", 6));
	ge1524ov24969245 = (GE_ms8("class $7 in Precursor construct is not a parent of class $6.", 60));
	ge1524ov24969917 = (GE_ms8("vucr0h", 6));
	ge1524ov24969451 = (GE_ms8("static feature contains a call to non-static \'$7\'.", 50));
	ge1524ov24969715 = (GE_ms8("vdpr3d", 6));
	ge1524ov24969249 = (GE_ms8("feature `$7\' is not the redeclaration of a feature.", 51));
	ge1524ov24969716 = (GE_ms8("vdpr3e", 6));
	ge1524ov24969250 = (GE_ms8("the associated feature of inline agents cannot be redefined.", 60));
	ge1524ov24969710 = (GE_ms8("vdpr1b", 6));
	ge1524ov24969541 = (GE_ms8("VDPR-1", 6));
	ge1524ov24969244 = (GE_ms8("Precursor expression does not appear in a Routine_body.", 55));
	ge1524ov24969916 = (GE_ms8("vucr0g", 6));
	ge1524ov24969450 = (GE_ms8("\'$Current\' cannot be used in a static feature.", 46));
	ge1525ov24986056 = (GE_ms8("is_special", 10));
	ge1524ov24969687 = (GE_ms8("vaol1a", 6));
	ge1524ov24969529 = (GE_ms8("VAOL-1", 6));
	ge1524ov24969221 = (GE_ms8("old expression does not appear in a postcondition.", 50));
	ge1524ov24969948 = (GE_ms8("vwma2a", 6));
	ge1524ov24969656 = (GE_ms8("VWMA-2", 6));
	ge1524ov24969482 = (GE_ms8("the $7-th item (of type \'$8\') in manifest array does not conform nor convert to the array\'s generic parameter (of type \'$9\').", 125));
	ge1524ov24969947 = (GE_ms8("vwma1a", 6));
	ge1524ov24969655 = (GE_ms8("VWMA-1", 6));
	ge1524ov24969481 = (GE_ms8("type \'$7\' in the manifest array is not an ARRAY type.", 53));
	ge1525ov24986051 = (GE_ms8("int", 3));
	ge1524ov24969955 = (GE_ms8("vwst2a", 6));
	ge1524ov24969659 = (GE_ms8("VWST-2", 6));
	ge1524ov24969489 = (GE_ms8("feature name `$7\' appears twice in strip expression.", 52));
	ge1524ov24969953 = (GE_ms8("vwst1a", 6));
	ge1524ov24969658 = (GE_ms8("VWST-1", 6));
	ge1524ov24969487 = (GE_ms8("feature name `$7\' is not the final name of a feature in class $5.", 65));
	ge1524ov24969851 = (GE_ms8("vpca1b", 6));
	ge1524ov24969609 = (GE_ms8("VPCA-1", 6));
	ge1524ov24969385 = (GE_ms8("`$7\' is not the final name of a feature in class $8.", 52));
	ge1524ov24969858 = (GE_ms8("vpca5b", 6));
	ge1524ov24969613 = (GE_ms8("VPCA-5", 6));
	ge1524ov24969392 = (GE_ms8("the type \'$10\' specified for the $9-th actual argument of Call_agent does not conform to the corresponding formal argument (of type \'$11\') of feature `$8\'.", 155));
	ge1524ov24969857 = (GE_ms8("vpca5a", 6));
	ge1524ov24969391 = (GE_ms8("the type \'$11\' specified for the $10-th actual argument of Call_agent does not conform to the corresponding formal argument (of type \'$12\') of feature `$8\' in class $9.", 168));
	ge1524ov24969856 = (GE_ms8("vpca4b", 6));
}

void GE_init_const20()
{
	ge1524ov24969612 = (GE_ms8("VPCA-4", 6));
	ge1524ov24969390 = (GE_ms8("the $9-th actual argument (of type \'$10\') does not conform to the corresponding formal argument (of type \'$11\') of feature `$8\'.", 128));
	ge1524ov24969855 = (GE_ms8("vpca4a", 6));
	ge1524ov24969389 = (GE_ms8("the $10-th actual argument (of type \'$11\') does not conform to the corresponding formal argument (of type \'$12\') of feature `$8\' in class $9.", 141));
	ge1524ov24969854 = (GE_ms8("vpca3b", 6));
	ge1524ov24969611 = (GE_ms8("VPCA-3", 6));
	ge1524ov24969388 = (GE_ms8("the number of actual arguments is not the same as the number of formal arguments of feature `$8\'.", 97));
	ge1524ov24969853 = (GE_ms8("vpca3a", 6));
	ge1524ov24969387 = (GE_ms8("the number of actual arguments is not the same as the number of formal arguments of feature `$8\' in class $9.", 109));
	ge1524ov24969852 = (GE_ms8("vpca2a", 6));
	ge1524ov24969610 = (GE_ms8("VPCA-2", 6));
	ge1524ov24969386 = (GE_ms8("feature `$8\' of class $9 is not exported to class $5.", 53));
	ge1524ov24969850 = (GE_ms8("vpca1a", 6));
	ge1524ov24969384 = (GE_ms8("`$7\' is not the final name of a feature in class $5.", 52));
	ge1524ov24969919 = (GE_ms8("vucr0j", 6));
	ge1524ov24969453 = (GE_ms8("static feature contains an agent with an unqualified call to \'$7\'.", 66));
	ge1524ov24969761 = (GE_ms8("vevi0d", 6));
	ge1524ov24969295 = (GE_ms8("entity \'Result\' declared as attached is not initialized at the end of the body of inline agent.", 95));
	ge1524ov24969866 = (GE_ms8("vpir1h", 6));
	ge1524ov24969614 = (GE_ms8("VPIR-1", 6));
	ge1524ov24969400 = (GE_ms8("local variable name \'$7\' in inline agent is also the name of an across cursor of an enclosing feature or inline agent whose scope contains the inline agent.", 156));
	ge1524ov24969864 = (GE_ms8("vpir1f", 6));
	ge1524ov24969398 = (GE_ms8("local variable name \'$7\' in inline agent is also the name of an object-test local of an enclosing feature or inline agent whose scope contains the inline agent.", 160));
	ge1524ov24969862 = (GE_ms8("vpir1d", 6));
	ge1524ov24969396 = (GE_ms8("local variable name \'$7\' in inline agent is also the name of a local variable of an enclosing feature or inline agent.", 118));
	ge1524ov24969861 = (GE_ms8("vpir1c", 6));
	ge1524ov24969395 = (GE_ms8("local variable name \'$7\' in inline agent is also the name of a formal argument of an enclosing feature or inline agent.", 119));
	ge1524ov24969887 = (GE_ms8("vrlv1b", 6));
	ge1524ov24969628 = (GE_ms8("VRLV-1", 6));
	ge1524ov24969421 = (GE_ms8("local variable name \'$7\' in inline agent is also the final name of a feature.", 77));
	ge1524ov24969889 = (GE_ms8("vrlv2b", 6));
	ge1524ov24969629 = (GE_ms8("VRLV-2", 6));
	ge1524ov24969423 = (GE_ms8("local variable name \'$7\' in inline agent is also the name of a formal argument of this agent.", 93));
	ge1524ov24969879 = (GE_ms8("vred0d", 6));
	ge1524ov24969623 = (GE_ms8("VRED", 4));
	ge1524ov24969413 = (GE_ms8("local variable name \'$7\' appear twice in inline agent.", 54));
	ge1524ov24969933 = (GE_ms8("vuot3b", 6));
	ge1524ov24969467 = (GE_ms8("object-test with local name \'$6\' has the same name as another object-test local appearing in the invariant or in the same inline agent.", 135));
	ge1524ov24969865 = (GE_ms8("vpir1g", 6));
	ge1524ov24969399 = (GE_ms8("argument name \'$7\' in inline agent is also the name of an across cursor of an enclosing feature or inline agent whose scope contains the inline agent.", 150));
	ge1524ov24969863 = (GE_ms8("vpir1e", 6));
	ge1524ov24969397 = (GE_ms8("argument name \'$7\' in inline agent is also the name of an object-test local of an enclosing feature or inline agent whose scope contains the inline agent.", 154));
	ge1524ov24969860 = (GE_ms8("vpir1b", 6));
	ge1524ov24969394 = (GE_ms8("argument name \'$7\' in inline agent is also the name of a local variable of an enclosing feature or inline agent.", 112));
	ge1524ov24969859 = (GE_ms8("vpir1a", 6));
	ge1524ov24969393 = (GE_ms8("argument name \'$7\' in inline agent is also the name of a formal argument of an enclosing feature or inline agent.", 113));
	ge1524ov24969883 = (GE_ms8("vrfa0b", 6));
	ge1524ov24969417 = (GE_ms8("argument name \'$7\' in inline agent is also the final name of a feature.", 71));
	ge1524ov24969878 = (GE_ms8("vred0c", 6));
	ge1524ov24969412 = (GE_ms8("argument name \'$7\' appear twice in inline agent.", 48));
	ge1524ov24969918 = (GE_ms8("vucr0i", 6));
	ge1524ov24969452 = (GE_ms8("static feature contains an inline agent.", 40));
	ge1524ov24969867 = (GE_ms8("vpir3a", 6));
	ge1524ov24969615 = (GE_ms8("VPIR-3", 6));
	ge1524ov24969401 = (GE_ms8("inline agents cannot be of the once form.", 41));
	ge1524ov24969868 = (GE_ms8("vpir3b", 6));
	ge1524ov24969402 = (GE_ms8("inline agents cannot be of the external form.", 45));
	ge1524ov24969890 = (GE_ms8("vtat1a", 6));
	ge1524ov24969424 = (GE_ms8("invalid type \'$7\': the anchor `$8\' must be the final name of a query.", 69));
	ge1524ov24969891 = (GE_ms8("vtat1b", 6));
	ge1524ov24969425 = (GE_ms8("invalid type \'$7\': the anchor `$8\' must be the final name of a query, or an argument of routine `$9\'.", 101));
	ge1524ov24969909 = (GE_ms8("vuar4a", 6));
	ge1524ov24969640 = (GE_ms8("VUAR-4", 6));
	ge1524ov24969443 = (GE_ms8("`$7\' is not the final name of a feature in class $5.", 52));
	ge1524ov24969914 = (GE_ms8("vucr0e", 6));
	ge1524ov24969448 = (GE_ms8("the address of attribute \'$7\' cannot be accessed from a static feature.", 71));
	ge1524ov24969690 = (GE_ms8("vave0a", 6));
	ge1524ov24969531 = (GE_ms8("VAVE", 4));
	ge1524ov24969224 = (GE_ms8("loop variant expression of non-INTEGER type \'$7\'.", 49));
	ge1524ov24969846 = (GE_ms8("voit2e", 6));
	ge1524ov24969606 = (GE_ms8("VOIT-2", 6));
	ge1524ov24969380 = (GE_ms8("across with cursor name \'$6\' appears in the scope of another across cursor with the same name.", 94));
	ge1524ov24969845 = (GE_ms8("voit2d", 6));
	ge1524ov24969379 = (GE_ms8("across with cursor name \'$6\' appears in the scope of an object-test local with the same name.", 93));
	ge1524ov24969844 = (GE_ms8("voit2c", 6));
	ge1524ov24969378 = (GE_ms8("across cursor name \'$6\' is also the name of a local variable of an enclosing feature or inline agent.", 101));
	ge1524ov24969843 = (GE_ms8("voit2b", 6));
	ge1524ov24969377 = (GE_ms8("across cursor name \'$6\' is also the name of a formal argument of an enclosing feature or inline agent.", 102));
	ge1524ov24969842 = (GE_ms8("voit2a", 6));
	ge1524ov24969376 = (GE_ms8("across cursor name \'$6\' is also the final name of a feature.", 60));
	ge1524ov24969841 = (GE_ms8("voit1a", 6));
	ge1524ov24969605 = (GE_ms8("VOIT-1", 6));
	ge1524ov24969375 = (GE_ms8("the type \'$7\' of the across iterable expression does not conform to any generic derivation of ITERABLE.", 103));
	ge1525ov24986092 = (GE_ms8("while", 5));
	ge1524ov24969895 = (GE_ms8("vtcg3a", 6));
	ge1524ov24969632 = (GE_ms8("VTCG-3", 6));
	ge1524ov24969429 = (GE_ms8("actual generic parameter \'$7\' in type \'$9\' does not conform to constraint \'$8\'.", 79));
	ge1524ov24969971 = (GE_ms8("gvtcg5a", 7));
	ge1524ov24969675 = (GE_ms8("GVTCG-5", 7));
	ge1524ov24969505 = (GE_ms8("actual generic parameter \'$7\' in type \'$8\' is not a reference type but the corresponding formal parameter is marked as reference.", 129));
	ge1524ov24969972 = (GE_ms8("gvtcg5b", 7));
	ge1524ov24969506 = (GE_ms8("actual generic parameter \'$7\' in type \'$8\' is not expanded type but the corresponding formal parameter is marked as expanded.", 125));
	ge1524ov24969903 = (GE_ms8("vtug2a", 6));
	ge1524ov24969637 = (GE_ms8("VTUG-2", 6));
	ge1524ov24969437 = (GE_ms8("type \'$7\' has wrong number of actual generic parameters.", 56));
	ge1524ov24969902 = (GE_ms8("vtug1a", 6));
	ge1524ov24969636 = (GE_ms8("VTUG-1", 6));
	ge1524ov24969436 = (GE_ms8("type \'$7\' has actual generic parameters but class $8 is not generic.", 68));
	ge1524ov24969956 = (GE_ms8("vxrt0a", 6));
	ge1524ov24969660 = (GE_ms8("VXRT", 4));
	ge1524ov24969490 = (GE_ms8("Retry instruction does not appear in a Rescue clause.", 53));
}

void GE_init_const21()
{
	ge1525ov24985798 = (GE_ms8("exception_code", 14));
	ge1525ov24985801 = (GE_ms8("exception_tag", 13));
	ge1525ov24986042 = (GE_ms8("goto", 4));
	ge1524ov24969691 = (GE_ms8("vbac1a", 6));
	ge1524ov24969532 = (GE_ms8("VBAC-1", 6));
	ge1524ov24969225 = (GE_ms8("the source of the assigner call (of type \'$7\') does not conform nor convert to its target (of type \'$8\').", 105));
	ge1524ov24969692 = (GE_ms8("vbac2a", 6));
	ge1524ov24969533 = (GE_ms8("VBAC-2", 6));
	ge1524ov24969226 = (GE_ms8("query `$7\' in class $8 has no assigner command.", 47));
	ge1524ov24969819 = (GE_ms8("vjar0a", 6));
	ge1524ov24969591 = (GE_ms8("VJAR", 4));
	ge1524ov24969353 = (GE_ms8("the source of the assignment (of type \'$7\') does not conform nor convert to its target entity (of type \'$8\').", 109));
	ge1524ov24969745 = (GE_ms8("veen0a", 6));
	ge1524ov24969560 = (GE_ms8("VEEN", 4));
	ge1524ov24969279 = (GE_ms8("`$7\' appears in feature `$8\', but it is not the final name of a feature in class $6 nor the name of a local variable or formal argument of feature `$8\'.", 152));
	ge1524ov24969746 = (GE_ms8("veen0b", 6));
	ge1524ov24969280 = (GE_ms8("`$7\' appears in an inline agent, but it is not the final name of a feature in class $6 nor the name of a local variable or formal argument of this inline agent.", 160));
	ge1524ov24969821 = (GE_ms8("vjaw0b", 6));
	ge1524ov24969592 = (GE_ms8("VJAW", 4));
	ge1524ov24969355 = (GE_ms8("`$7\' is the name of a formal argument of feature `$8\'. A Writable is either a local variable (including Result) or an attribute.", 128));
	ge1524ov24969822 = (GE_ms8("vjaw0c", 6));
	ge1524ov24969356 = (GE_ms8("`$7\' is the name of a formal argument of an inline agent. A Writable is either a local variable (including Result) or an attribute.", 131));
	ge1524ov24969912 = (GE_ms8("vucr0c", 6));
	ge1524ov24969446 = (GE_ms8("attribute \'$7\' cannot be used as target of an assignment or creation instruction in a static feature.", 101));
	ge1524ov24969820 = (GE_ms8("vjaw0a", 6));
	ge1524ov24969354 = (GE_ms8("feature `$7\' is not an attribute. A Writable is either a local variable (including Result) or an attribute.", 107));
	ge1524ov24969823 = (GE_ms8("vjrv0a", 6));
	ge1524ov24969593 = (GE_ms8("VJRV", 4));
	ge1524ov24969357 = (GE_ms8("the type \'$7\' of the target entity of the assignment attempt is not a reference type.", 85));
	ge1524ov24969799 = (GE_ms8("vgcc6e", 6));
	ge1524ov24969333 = (GE_ms8("procedure `$8\' of class $9 is not exported for creation to class $5.", 68));
	ge1524ov24969801 = (GE_ms8("vgcc8b", 6));
	ge1524ov24969335 = (GE_ms8("procedure `$8\' of class $9 is not listed as creation procedure of the $10-th formal generic parameter of class $5.", 114));
	ge1524ov24969791 = (GE_ms8("vgcc1b", 6));
	ge1524ov24969325 = (GE_ms8("creation instruction with no Creation_call part, but $7 is deferred.", 68));
	ge1524ov24969794 = (GE_ms8("vgcc5b", 6));
	ge1524ov24969328 = (GE_ms8("creation instruction with no Creation_call part, but $7 has a Creators part.", 76));
	ge1524ov24969792 = (GE_ms8("vgcc3a", 6));
	ge1524ov24969578 = (GE_ms8("VGCC-3", 6));
	ge1524ov24969326 = (GE_ms8("explicit creation type \'$7\' does not conform to target entity type \'$8\'.", 72));
	ge1524ov24969798 = (GE_ms8("vgcc6d", 6));
	ge1524ov24969332 = (GE_ms8("`$7\' is not the final name of a procedure in class $9.", 54));
	ge1524ov24969848 = (GE_ms8("vomb2a", 6));
	ge1524ov24969608 = (GE_ms8("VOMB-2", 6));
	ge1524ov24969382 = (GE_ms8("inspect constant of type \'$7\' different from type \'$8\' of inspect expression.", 77));
	ge1524ov24969849 = (GE_ms8("vomb2b", 6));
	ge1524ov24969383 = (GE_ms8("inspect choice `$7\' is not a constant attribute.", 48));
	ge1524ov24969847 = (GE_ms8("vomb1a", 6));
	ge1524ov24969607 = (GE_ms8("VOMB-1", 6));
	ge1524ov24969381 = (GE_ms8("inspect expression of type \'$7\' different from INTEGER or CHARACTER.", 68));
	ge1525ov24985849 = (GE_ms8("GE_EX_WHEN", 10));
	ge1524ov24969709 = (GE_ms8("vdpr1a", 6));
	ge1524ov24969243 = (GE_ms8("Precursor instruction does not appear in a Routine_body.", 56));
	ge1525ov24985845 = (GE_ms8("GE_EX_CHECK", 11));
	ge1524ov24969825 = (GE_ms8("vkcn1c", 6));
	ge1524ov24969359 = (GE_ms8("query `$8\' appears in a call instruction.", 41));
	ge1524ov24969992 = (GE_ms8("gvuio0c", 7));
	ge1524ov24969683 = (GE_ms8("GVUIO", 5));
	ge1524ov24969526 = (GE_ms8("`$7\' is an object-test local of an invariant and hence cannot be an instruction.", 80));
	ge1524ov24969990 = (GE_ms8("gvuio0a", 7));
	ge1524ov24969524 = (GE_ms8("`$7\' is an object-test local of feature `$8\' and hence cannot be an instruction.", 80));
	ge1524ov24969991 = (GE_ms8("gvuio0b", 7));
	ge1524ov24969525 = (GE_ms8("`$7\' is an object-test local of an inline agent and hence cannot be an instruction.", 83));
	ge1524ov24969987 = (GE_ms8("gvuic0c", 7));
	ge1524ov24969681 = (GE_ms8("GVUIC", 5));
	ge1524ov24969521 = (GE_ms8("`$7\' is an across cursor of an invariant and hence cannot be an instruction.", 76));
	ge1524ov24969985 = (GE_ms8("gvuic0a", 7));
	ge1524ov24969519 = (GE_ms8("`$7\' is an across cursor of feature `$8\' and hence cannot be an instruction.", 76));
	ge1524ov24969986 = (GE_ms8("gvuic0b", 7));
	ge1524ov24969520 = (GE_ms8("`$7\' is an across cursor of an inline agent and hence cannot be an instruction.", 79));
	ge1524ov24969988 = (GE_ms8("gvuil0a", 7));
	ge1524ov24969682 = (GE_ms8("GVUIL", 5));
	ge1524ov24969522 = (GE_ms8("`$7\' is a local variable of feature `$8\' and hence cannot be an instruction.", 76));
	ge1524ov24969989 = (GE_ms8("gvuil0b", 7));
	ge1524ov24969523 = (GE_ms8("`$7\' is a local variable of an inline agent and hence cannot be an instruction.", 79));
	ge1524ov24969983 = (GE_ms8("gvuia0a", 7));
	ge1524ov24969680 = (GE_ms8("GVUIA", 5));
	ge1524ov24969517 = (GE_ms8("`$7\' is a formal argument of feature `$8\' and hence cannot be an instruction.", 77));
	ge1524ov24969984 = (GE_ms8("gvuia0b", 7));
	ge1524ov24969518 = (GE_ms8("`$7\' is a formal argument of an inline agent and hence cannot be an instruction.", 80));
	ge1654ov27099149 = (GE_ms8("Namespace declared twice", 24));
	ge1654ov27099148 = (GE_ms8("Undeclared namespace error", 26));
	ge313ov5128215 = (GE_ms8("\n", 1));
	ge313ov5128216 = (GE_ms8("\n", 1));
	ge313ov5128217 = (GE_ms8("\nOptions:\n", 10));
	ge395ov5963777 = (GE_ms8("\n", 1));
	ge393ov5963777 = (GE_ms8("\n", 1));
	ge380ov5963777 = (GE_ms8("\n", 1));
	ge1523ov24952842 = (GE_ms8("vscn0d", 6));
	ge1523ov24952838 = (GE_ms8("VSCN", 4));
	ge1523ov24952837 = (GE_ms8("[$1] $2 $3: class $4 cannot be overridden both by class $5 in $6 \'$7\' and by class $8 in $9 \'$10\'.", 98));
	ge1523ov24952841 = (GE_ms8("vscn0c", 6));
	ge1523ov24952836 = (GE_ms8("[$1] $2 $3: assembly class $4 appearing as class $5 in assembly \'$6\' cannot be overridden by class $8 in $9 \'$10\'$11.", 117));
	ge1523ov24952840 = (GE_ms8("vscn0b", 6));
	ge1523ov24952835 = (GE_ms8("[$1] $2 $3: built-in class NONE cannot be overridden by class $5 in $6 \'$7\'$8.", 78));
	ge1523ov24952839 = (GE_ms8("vscn0a", 6));
	ge1523ov24952834 = (GE_ms8("[$1] $2 $3: class $4 name clash between class $5 in $6 \'$7\'$8 and class $9 in $10 \'$11\'$12.", 91));
	ge868ov14221324 = (GE_ms8(" ", 1));
	ge919ov15056956 = (GE_ms8("windows", 7));
	ge919ov15056954 = (GE_ms8("unix", 4));
	ge877ov14368773 = (GE_ms8("case-insensitive", 16));
}

void GE_init_const22()
{
	ge877ov14368774 = (GE_ms8("wildcard", 8));
	ge877ov14368775 = (GE_ms8("regexp", 6));
	ge919ov15056945 = (GE_ms8("finalize", 8));
	ge919ov15056957 = (GE_ms8("workbench", 9));
	ge1305ov21382117 = (GE_ms8("/~", 2));
	ge1305ov21382129 = (GE_ms8("***unknown_name***", 18));
	ge1309ov21446667 = (GE_ms8("alias \"", 7));
	ge1305ov21382190 = (GE_ms8("alias \"[]\"", 10));
	ge1305ov21382191 = (GE_ms8("alias \"()\"", 10));
	ge1305ov21382171 = (GE_ms8("alias \"and\"", 11));
	ge1305ov21382187 = (GE_ms8("alias \"and then\"", 16));
	ge1305ov21382175 = (GE_ms8("alias \"//\"", 10));
	ge1305ov21382176 = (GE_ms8("alias \"/\"", 9));
	ge1305ov21382177 = (GE_ms8("alias \">=\"", 10));
	ge1305ov21382178 = (GE_ms8("alias \">\"", 9));
	ge1305ov21382172 = (GE_ms8("alias \"implies\"", 15));
	ge1305ov21382179 = (GE_ms8("alias \"<=\"", 10));
	ge1305ov21382180 = (GE_ms8("alias \"<\"", 9));
	ge1305ov21382181 = (GE_ms8("alias \"-\"", 9));
	ge1305ov21382182 = (GE_ms8("alias \"\\\\\"", 10));
	ge1305ov21382173 = (GE_ms8("alias \"or\"", 10));
	ge1305ov21382188 = (GE_ms8("alias \"or else\"", 15));
	ge1305ov21382183 = (GE_ms8("alias \"+\"", 9));
	ge1305ov21382184 = (GE_ms8("alias \"^\"", 9));
	ge1305ov21382185 = (GE_ms8("alias \"*\"", 9));
	ge1305ov21382174 = (GE_ms8("alias \"xor\"", 11));
	ge1305ov21382186 = (GE_ms8("alias \"..\"", 10));
	ge1305ov21382189 = (GE_ms8("alias \"not\"", 11));
	ge1685ov27607043 = (GE_ms8("us-ascii", 8));
	ge1685ov27607045 = (GE_ms8("utf-8", 5));
	ge1205ov19742769 = (GE_ms8(".", 1));
	ge1205ov19742770 = (GE_ms8("..", 2));
	ge1305ov21382082 = (GE_ms8("attached separate expanded", 26));
	ge1305ov21382083 = (GE_ms8("attached separate reference", 27));
	ge1305ov21382081 = (GE_ms8("attached separate", 17));
	ge1305ov21382079 = (GE_ms8("attached expanded", 17));
	ge1305ov21382080 = (GE_ms8("attached reference", 18));
	ge1305ov21382087 = (GE_ms8("detachable separate expanded", 28));
	ge1305ov21382088 = (GE_ms8("detachable separate reference", 29));
	ge1305ov21382086 = (GE_ms8("detachable separate", 19));
	ge1305ov21382084 = (GE_ms8("detachable expanded", 19));
	ge1305ov21382085 = (GE_ms8("detachable reference", 20));
	ge1305ov21382089 = (GE_ms8("separate expanded", 17));
	ge1305ov21382090 = (GE_ms8("separate reference", 18));
	ge1305ov21382091 = (GE_ms8("", 0));
	ge1305ov21382167 = (GE_ms8("infix \"or else\"", 15));
	ge1305ov21382166 = (GE_ms8("infix \"and then\"", 16));
	ge1305ov21382150 = (GE_ms8("infix \"and\"", 11));
	ge1305ov21382151 = (GE_ms8("infix \"implies\"", 15));
	ge1305ov21382152 = (GE_ms8("infix \"or\"", 10));
	ge1305ov21382153 = (GE_ms8("infix \"xor\"", 11));
	ge1305ov21382168 = (GE_ms8("prefix \"not\"", 12));
	ge1305ov21382154 = (GE_ms8("infix \"//\"", 10));
	ge1305ov21382155 = (GE_ms8("infix \"/\"", 9));
	ge1305ov21382156 = (GE_ms8("infix \">=\"", 10));
	ge1305ov21382157 = (GE_ms8("infix \">\"", 9));
	ge1305ov21382158 = (GE_ms8("infix \"<=\"", 10));
	ge1305ov21382159 = (GE_ms8("infix \"<\"", 9));
	ge1305ov21382160 = (GE_ms8("infix \"-\"", 9));
	ge1305ov21382161 = (GE_ms8("infix \"\\\\\"", 10));
	ge1305ov21382162 = (GE_ms8("infix \"+\"", 9));
	ge1305ov21382163 = (GE_ms8("infix \"^\"", 9));
	ge1305ov21382164 = (GE_ms8("infix \"*\"", 9));
	ge1305ov21382165 = (GE_ms8("infix \"..\"", 10));
	ge1305ov21382169 = (GE_ms8("prefix \"-\"", 10));
	ge1305ov21382170 = (GE_ms8("prefix \"+\"", 10));
	ge1331ov21807112 = (GE_ms8("infix \"", 7));
	ge1331ov21807111 = (GE_ms8("prefix \"", 8));
	ge1350ov22118403 = (GE_ms8("prefix \"", 8));
	ge1338ov21921795 = (GE_ms8("infix \"", 7));
	ge782ov11436036 = (GE_ms8("\"$1\", line $2: negative range in character class", 48));
	ge768ov11436036 = (GE_ms8("\"$1\", line $2: character \'$3\' out of range", 42));
	ge774ov11436036 = (GE_ms8("$0: variable trailing context rules cannot be used with -f", 58));
	ge773ov11436036 = (GE_ms8("$0: `reject\' cannot be used with -f", 35));
	ge772ov11436036 = (GE_ms8("$0: -f and -m don\'t make sense together", 39));
	ge763ov11436036 = (GE_ms8("\"$1\", line $2: bad character: $3", 32));
	ge762ov11436036 = (GE_ms8("\"$1\", line $2: bad character class or missing close bracket", 59));
	ge779ov11436036 = (GE_ms8("\"$1\", line $2: missing quote", 28));
	ge792ov11436036 = (GE_ms8("\"$1\", line $2: unrecognized rule", 32));
	ge1602ov11436036 = (GE_ms8("found invalid expression \'$1\' at $2", 35));
	ge703ov11436036 = (GE_ms8("$0: too many (i.e. $1) nested include files", 43));
	ge702ov11436036 = (GE_ms8("Syntax error in \"$1\" at line $2", 31));
	ge1596ov11436036 = (GE_ms8("attribute \'$2\' of element <$1> at $4 is obsolete, use element $3 instead", 72));
	ge1609ov11436036 = (GE_ms8("<exclude> at $1 is obsolete, use \'if\'/\'unless\' attributes instead", 65));
	ge1608ov11436036 = (GE_ms8("<cluster> at $1 is obsolete. Specify options, clusters and mounts directly under <system> instead", 97));
	ge1604ov11436036 = (GE_ms8("element \'$1\' must have child-element \'$2\' $3", 44));
	ge1606ov11436036 = (GE_ms8("attribute \'$2\' in element \'$1\' should have a non-empty value $3", 63));
	ge1611ov11436036 = (GE_ms8("found unknown element \'$2\' in element \'$1\' $3", 45));
	ge1603ov11436036 = (GE_ms8("element \'$1\' must have attribute \'$2\' $3", 40));
	ge1615ov11436036 = (GE_ms8("Xace document must have a \'$1\' root-element $2", 46));
	ge1605ov11436036 = (GE_ms8("Library \'$1\' mounted with incompatible prefixes \'$2\' and \'$3\' in $4 and $5", 74));
	ge1599ov11436036 = (GE_ms8("element <$1> at $3 is obsolete, use element $2 instead", 54));
	ge697ov11436036 = (GE_ms8("$0: cannot write to \'$1\'", 24));
	ge700ov11436036 = (GE_ms8("$1", 2));
	ge707ov11436036 = (GE_ms8("$0 version $1", 13));
	ge696ov11436036 = (GE_ms8("$0: cannot read \'$1\'", 20));
	ge390ov6389770 = (GE_ms8("", 0));
	ge377ov6176778 = (GE_ms8("", 0));
	geic24985601 = (GE_ms8(" (label on item #", 17));
	geic24985602 = (GE_ms8(" with a manifest tuple argument", 31));
	geic24985603 = (GE_ms8(" of type ", 9));
}

void GE_init_const23()
{
	geic14237697 = (GE_ms8("|/\\", 3));
}

void GE_init_const()
{
	GE_init_const1();
	GE_init_const2();
	GE_init_const3();
	GE_init_const4();
	GE_init_const5();
	GE_init_const6();
	GE_init_const7();
	GE_init_const8();
	GE_init_const9();
	GE_init_const10();
	GE_init_const11();
	GE_init_const12();
	GE_init_const13();
	GE_init_const14();
	GE_init_const15();
	GE_init_const16();
	GE_init_const17();
	GE_init_const18();
	GE_init_const19();
	GE_init_const20();
	GE_init_const21();
	GE_init_const22();
	GE_init_const23();
}

EIF_TYPE_OBJ GE_types[2850] = {
{0, 0, EIF_FALSE, 0, 0, 0},
{2829, 1, EIF_FALSE, 0, 0, 0},
{0, 2, EIF_FALSE, 0, 0, 0},
{0, 3, EIF_FALSE, 0, 0, 0},
{0, 4, EIF_FALSE, 0, 0, 0},
{0, 5, EIF_FALSE, 0, 0, 0},
{1747, 6, EIF_FALSE, 0, 0, 0},
{0, 7, EIF_FALSE, 0, 0, 0},
{0, 8, EIF_FALSE, 0, 0, 0},
{0, 9, EIF_FALSE, 0, 0, 0},
{0, 10, EIF_FALSE, 0, 0, 0},
{0, 11, EIF_FALSE, 0, 0, 0},
{0, 12, EIF_FALSE, 0, 0, 0},
{0, 13, EIF_FALSE, 0, 0, 0},
{0, 14, EIF_FALSE, 0, 0, 0},
{0, 15, EIF_TRUE, 0, 0, 0},
{0, 16, EIF_TRUE, 0, 0, 0},
{545, 17, EIF_FALSE, 0, 0, 0},
{0, 18, EIF_FALSE, 0, 0, 0},
{0, 19, EIF_FALSE, 0, 0, 0},
{0, 20, EIF_FALSE, 0, 0, 0},
{2586, 21, EIF_FALSE, 0, 0, 0},
{0, 22, EIF_FALSE, 0, 0, 0},
{0, 23, EIF_FALSE, 0, 0, 0},
{0, 24, EIF_FALSE, 0, 0, 0},
{0, 25, EIF_FALSE, 0, 0, 0},
{0, 26, EIF_FALSE, 0, 0, 0},
{0, 27, EIF_FALSE, 0, 0, 0},
{0, 28, EIF_FALSE, 0, 0, 0},
{0, 29, EIF_FALSE, 0, 0, 0},
{0, 30, EIF_FALSE, 0, 0, 0},
{0, 31, EIF_FALSE, 0, 0, 0},
{0, 32, EIF_FALSE, 0, 0, 0},
{0, 33, EIF_FALSE, &T33f60, 0, 0},
{0, 34, EIF_FALSE, 0, 0, 0},
{0, 35, EIF_FALSE, 0, 0, 0},
{0, 36, EIF_FALSE, 0, 0, 0},
{0, 37, EIF_FALSE, 0, 0, 0},
{0, 38, EIF_FALSE, 0, 0, 0},
{0, 39, EIF_FALSE, 0, 0, 0},
{0, 40, EIF_FALSE, 0, 0, 0},
{0, 41, EIF_FALSE, 0, 0, 0},
{0, 42, EIF_FALSE, 0, 0, 0},
{0, 43, EIF_FALSE, 0, 0, 0},
{0, 44, EIF_FALSE, 0, 0, 0},
{0, 45, EIF_FALSE, 0, 0, 0},
{0, 46, EIF_FALSE, 0, 0, 0},
{0, 47, EIF_FALSE, 0, 0, 0},
{0, 48, EIF_FALSE, 0, 0, 0},
{0, 49, EIF_FALSE, 0, 0, 0},
{0, 50, EIF_FALSE, 0, 0, 0},
{0, 51, EIF_FALSE, 0, 0, 0},
{0, 52, EIF_FALSE, 0, 0, 0},
{0, 53, EIF_FALSE, 0, 0, 0},
{0, 54, EIF_FALSE, 0, 0, 0},
{0, 55, EIF_FALSE, 0, 0, 0},
{0, 56, EIF_FALSE, 0, 0, 0},
{0, 57, EIF_FALSE, 0, 0, 0},
{0, 58, EIF_FALSE, 0, 0, 0},
{0, 59, EIF_FALSE, 0, 0, 0},
{0, 60, EIF_FALSE, 0, 0, 0},
{0, 61, EIF_FALSE, 0, 0, 0},
{0, 62, EIF_FALSE, 0, 0, 0},
{0, 63, EIF_FALSE, 0, 0, 0},
{0, 64, EIF_FALSE, 0, 0, 0},
{0, 65, EIF_FALSE, 0, 0, 0},
{0, 66, EIF_FALSE, 0, 0, 0},
{0, 67, EIF_FALSE, 0, 0, 0},
{0, 68, EIF_FALSE, 0, 0, 0},
{0, 69, EIF_FALSE, 0, 0, 0},
{0, 70, EIF_FALSE, 0, 0, 0},
{0, 71, EIF_FALSE, 0, 0, 0},
{0, 72, EIF_FALSE, 0, 0, 0},
{0, 73, EIF_FALSE, 0, 0, 0},
{0, 74, EIF_FALSE, 0, 0, 0},
{0, 75, EIF_FALSE, 0, 0, 0},
{0, 76, EIF_FALSE, 0, 0, 0},
{0, 77, EIF_FALSE, 0, 0, 0},
{0, 78, EIF_FALSE, 0, 0, 0},
{0, 79, EIF_FALSE, 0, 0, 0},
{0, 80, EIF_FALSE, 0, 0, 0},
{0, 81, EIF_FALSE, 0, 0, 0},
{0, 82, EIF_FALSE, 0, 0, 0},
{0, 83, EIF_FALSE, 0, 0, 0},
{0, 84, EIF_FALSE, 0, 0, 0},
{0, 85, EIF_FALSE, 0, 0, 0},
{0, 86, EIF_FALSE, 0, 0, 0},
{0, 87, EIF_FALSE, 0, 0, 0},
{0, 88, EIF_FALSE, 0, 0, 0},
{0, 89, EIF_FALSE, 0, 0, 0},
{0, 90, EIF_FALSE, 0, 0, 0},
{0, 91, EIF_FALSE, 0, 0, 0},
{0, 92, EIF_FALSE, 0, 0, 0},
{0, 93, EIF_FALSE, 0, 0, 0},
{0, 94, EIF_FALSE, 0, 0, 0},
{1957, 95, EIF_FALSE, 0, 0, 0},
{0, 96, EIF_FALSE, 0, 0, 0},
{0, 97, EIF_FALSE, 0, 0, 0},
{0, 98, EIF_FALSE, 0, 0, 0},
{0, 99, EIF_FALSE, 0, 0, 0},
{0, 100, EIF_FALSE, 0, 0, 0},
{0, 101, EIF_FALSE, 0, 0, 0},
{0, 102, EIF_FALSE, 0, 0, 0},
{0, 103, EIF_FALSE, 0, 0, 0},
{0, 104, EIF_FALSE, 0, 0, 0},
{0, 105, EIF_FALSE, 0, 0, 0},
{0, 106, EIF_FALSE, 0, 0, 0},
{0, 107, EIF_FALSE, 0, 0, 0},
{0, 108, EIF_FALSE, 0, 0, 0},
{0, 109, EIF_FALSE, 0, 0, 0},
{0, 110, EIF_FALSE, 0, 0, 0},
{0, 111, EIF_FALSE, 0, 0, 0},
{113, 112, EIF_FALSE, 0, 0, 0},
{0, 113, EIF_FALSE, 0, 0, 0},
{115, 114, EIF_FALSE, 0, 0, 0},
{0, 115, EIF_FALSE, 0, 0, 0},
{117, 116, EIF_FALSE, 0, 0, 0},
{0, 117, EIF_FALSE, 0, 0, 0},
{0, 118, EIF_FALSE, 0, 0, 0},
{0, 119, EIF_FALSE, 0, 0, 0},
{0, 120, EIF_FALSE, 0, 0, 0},
{0, 121, EIF_FALSE, 0, 0, 0},
{0, 122, EIF_FALSE, 0, 0, 0},
{0, 123, EIF_FALSE, 0, 0, 0},
{0, 124, EIF_FALSE, 0, 0, 0},
{0, 125, EIF_FALSE, 0, 0, 0},
{0, 126, EIF_FALSE, 0, 0, 0},
{0, 127, EIF_FALSE, 0, 0, 0},
{0, 128, EIF_FALSE, 0, 0, 0},
{0, 129, EIF_FALSE, 0, 0, 0},
{0, 130, EIF_FALSE, 0, 0, 0},
{0, 131, EIF_FALSE, 0, 0, 0},
{0, 132, EIF_FALSE, 0, 0, 0},
{0, 133, EIF_FALSE, 0, 0, 0},
{0, 134, EIF_FALSE, 0, 0, 0},
{0, 135, EIF_FALSE, 0, 0, 0},
{0, 136, EIF_FALSE, 0, 0, 0},
{0, 137, EIF_FALSE, 0, 0, 0},
{0, 138, EIF_FALSE, 0, 0, 0},
{0, 139, EIF_FALSE, 0, 0, 0},
{0, 140, EIF_FALSE, 0, 0, 0},
{0, 141, EIF_FALSE, 0, 0, 0},
{0, 142, EIF_FALSE, 0, 0, 0},
{0, 143, EIF_FALSE, 0, 0, 0},
{0, 144, EIF_FALSE, 0, 0, 0},
{0, 145, EIF_FALSE, 0, 0, 0},
{0, 146, EIF_FALSE, 0, 0, 0},
{0, 147, EIF_FALSE, 0, 0, 0},
{0, 148, EIF_FALSE, 0, 0, 0},
{0, 149, EIF_TRUE, 0, 0, 0},
{0, 150, EIF_TRUE, 0, 0, 0},
{0, 151, EIF_FALSE, 0, 0, 0},
{0, 152, EIF_FALSE, 0, 0, 0},
{0, 153, EIF_FALSE, 0, 0, 0},
{0, 154, EIF_FALSE, &T154f10, 0, 0},
{0, 155, EIF_FALSE, 0, 0, 0},
{0, 156, EIF_FALSE, 0, 0, 0},
{0, 157, EIF_FALSE, 0, 0, 0},
{0, 158, EIF_FALSE, &T158f10, 0, 0},
{0, 159, EIF_FALSE, 0, 0, 0},
{0, 160, EIF_FALSE, 0, 0, 0},
{0, 161, EIF_FALSE, 0, 0, 0},
{0, 162, EIF_FALSE, 0, 0, 0},
{0, 163, EIF_FALSE, 0, 0, 0},
{0, 164, EIF_FALSE, 0, 0, 0},
{0, 165, EIF_FALSE, 0, 0, 0},
{0, 166, EIF_FALSE, 0, 0, 0},
{0, 167, EIF_FALSE, 0, 0, 0},
{0, 168, EIF_FALSE, 0, 0, 0},
{0, 169, EIF_FALSE, 0, 0, 0},
{0, 170, EIF_FALSE, 0, 0, 0},
{0, 171, EIF_FALSE, 0, 0, 0},
{0, 172, EIF_FALSE, 0, 0, 0},
{0, 173, EIF_FALSE, 0, 0, 0},
{0, 174, EIF_FALSE, 0, 0, 0},
{0, 175, EIF_FALSE, 0, 0, 0},
{0, 176, EIF_FALSE, 0, 0, 0},
{0, 177, EIF_FALSE, 0, 0, 0},
{0, 178, EIF_FALSE, 0, 0, 0},
{0, 179, EIF_FALSE, 0, 0, 0},
{0, 180, EIF_FALSE, 0, 0, 0},
{0, 181, EIF_FALSE, 0, 0, 0},
{0, 182, EIF_FALSE, 0, 0, 0},
{0, 183, EIF_FALSE, 0, 0, 0},
{0, 184, EIF_FALSE, 0, 0, 0},
{0, 185, EIF_FALSE, 0, 0, 0},
{0, 186, EIF_FALSE, 0, 0, 0},
{0, 187, EIF_FALSE, 0, 0, 0},
{0, 188, EIF_FALSE, 0, 0, 0},
{0, 189, EIF_FALSE, 0, 0, 0},
{0, 190, EIF_FALSE, 0, 0, 0},
{0, 191, EIF_FALSE, 0, 0, 0},
{0, 192, EIF_FALSE, 0, 0, 0},
{0, 193, EIF_FALSE, 0, 0, 0},
{0, 194, EIF_FALSE, 0, 0, 0},
{0, 195, EIF_FALSE, 0, 0, 0},
{0, 196, EIF_FALSE, 0, 0, 0},
{0, 197, EIF_FALSE, 0, 0, 0},
{0, 198, EIF_FALSE, 0, 0, 0},
{0, 199, EIF_FALSE, 0, 0, 0},
{0, 200, EIF_FALSE, 0, 0, 0},
{0, 201, EIF_FALSE, 0, 0, 0},
{0, 202, EIF_FALSE, 0, 0, 0},
{0, 203, EIF_FALSE, 0, 0, 0},
{0, 204, EIF_FALSE, 0, 0, 0},
{0, 205, EIF_FALSE, 0, 0, 0},
{0, 206, EIF_FALSE, 0, 0, 0},
{0, 207, EIF_FALSE, 0, 0, 0},
{0, 208, EIF_TRUE, 0, 0, 0},
{0, 209, EIF_FALSE, 0, 0, 0},
{0, 210, EIF_FALSE, 0, 0, 0},
{0, 211, EIF_FALSE, 0, 0, 0},
{0, 212, EIF_FALSE, 0, 0, 0},
{0, 213, EIF_FALSE, 0, 0, 0},
{0, 214, EIF_FALSE, 0, 0, 0},
{0, 215, EIF_FALSE, 0, 0, 0},
{0, 216, EIF_FALSE, 0, 0, 0},
{0, 217, EIF_FALSE, 0, 0, 0},
{0, 218, EIF_FALSE, 0, 0, 0},
{0, 219, EIF_FALSE, 0, 0, 0},
{0, 220, EIF_FALSE, 0, 0, 0},
{0, 221, EIF_FALSE, 0, 0, 0},
{0, 222, EIF_FALSE, 0, 0, 0},
{0, 223, EIF_FALSE, 0, 0, 0},
{0, 224, EIF_FALSE, 0, 0, 0},
{0, 225, EIF_FALSE, 0, 0, 0},
{0, 226, EIF_FALSE, 0, 0, 0},
{0, 227, EIF_FALSE, 0, 0, 0},
{0, 228, EIF_FALSE, 0, 0, 0},
{0, 229, EIF_FALSE, 0, 0, 0},
{0, 230, EIF_FALSE, 0, 0, 0},
{0, 231, EIF_FALSE, 0, 0, 0},
{818, 232, EIF_FALSE, 0, 0, 0},
{0, 233, EIF_FALSE, 0, 0, 0},
{0, 234, EIF_FALSE, 0, 0, 0},
{0, 235, EIF_FALSE, 0, 0, 0},
{0, 236, EIF_FALSE, 0, 0, 0},
{0, 237, EIF_FALSE, 0, 0, 0},
{0, 238, EIF_FALSE, 0, 0, 0},
{0, 239, EIF_FALSE, 0, 0, 0},
{0, 240, EIF_FALSE, 0, 0, 0},
{0, 241, EIF_FALSE, 0, 0, 0},
{0, 242, EIF_FALSE, 0, 0, 0},
{0, 243, EIF_FALSE, 0, 0, 0},
{0, 244, EIF_FALSE, 0, 0, 0},
{0, 245, EIF_FALSE, 0, 0, 0},
{0, 246, EIF_FALSE, 0, 0, 0},
{0, 247, EIF_FALSE, 0, 0, 0},
{0, 248, EIF_FALSE, 0, 0, 0},
{0, 249, EIF_FALSE, 0, 0, 0},
{0, 250, EIF_FALSE, 0, 0, 0},
{0, 251, EIF_FALSE, 0, 0, 0},
{0, 252, EIF_FALSE, 0, 0, 0},
{0, 253, EIF_FALSE, 0, 0, 0},
{0, 254, EIF_FALSE, 0, 0, 0},
{0, 255, EIF_FALSE, 0, 0, 0},
{0, 256, EIF_FALSE, 0, 0, 0},
{0, 257, EIF_FALSE, 0, 0, 0},
{0, 258, EIF_FALSE, 0, 0, 0},
{0, 259, EIF_FALSE, 0, 0, 0},
{0, 260, EIF_FALSE, 0, 0, 0},
{0, 261, EIF_FALSE, 0, 0, 0},
{0, 262, EIF_FALSE, 0, 0, 0},
{0, 263, EIF_FALSE, 0, 0, 0},
{0, 264, EIF_FALSE, 0, 0, 0},
{0, 265, EIF_FALSE, 0, 0, 0},
{0, 266, EIF_FALSE, 0, 0, 0},
{0, 267, EIF_FALSE, 0, 0, 0},
{0, 268, EIF_FALSE, 0, 0, 0},
{0, 269, EIF_FALSE, 0, 0, 0},
{0, 270, EIF_FALSE, 0, 0, 0},
{0, 271, EIF_FALSE, 0, 0, 0},
{0, 272, EIF_FALSE, 0, 0, 0},
{0, 273, EIF_FALSE, 0, 0, 0},
{0, 274, EIF_FALSE, 0, 0, 0},
{0, 275, EIF_FALSE, 0, 0, 0},
{0, 276, EIF_TRUE, 0, 0, 0},
{0, 277, EIF_TRUE, 0, 0, 0},
{0, 278, EIF_FALSE, 0, 0, 0},
{0, 279, EIF_TRUE, 0, 0, 0},
{0, 280, EIF_FALSE, 0, 0, 0},
{0, 281, EIF_TRUE, 0, 0, 0},
{0, 282, EIF_FALSE, 0, 0, 0},
{0, 283, EIF_FALSE, 0, 0, 0},
{0, 284, EIF_FALSE, 0, 0, 0},
{0, 285, EIF_FALSE, 0, 0, 0},
{0, 286, EIF_FALSE, 0, 0, 0},
{0, 287, EIF_FALSE, 0, 0, 0},
{0, 288, EIF_FALSE, 0, 0, 0},
{0, 289, EIF_FALSE, 0, 0, 0},
{0, 290, EIF_FALSE, 0, 0, 0},
{0, 291, EIF_TRUE, 0, 0, 0},
{0, 292, EIF_TRUE, 0, 0, 0},
{0, 293, EIF_TRUE, 0, 0, 0},
{0, 294, EIF_TRUE, 0, 0, 0},
{0, 295, EIF_FALSE, 0, 0, 0},
{0, 296, EIF_FALSE, 0, 0, 0},
{0, 297, EIF_FALSE, 0, 0, 0},
{0, 298, EIF_TRUE, 0, 0, 0},
{0, 299, EIF_TRUE, 0, 0, 0},
{0, 300, EIF_FALSE, 0, 0, 0},
{0, 301, EIF_FALSE, 0, 0, 0},
{0, 302, EIF_TRUE, 0, 0, 0},
{0, 303, EIF_FALSE, 0, 0, 0},
{0, 304, EIF_TRUE, 0, 0, 0},
{0, 305, EIF_FALSE, 0, 0, 0},
{0, 306, EIF_FALSE, 0, 0, 0},
{0, 307, EIF_TRUE, 0, 0, 0},
{0, 308, EIF_TRUE, 0, 0, 0},
{0, 309, EIF_FALSE, 0, 0, 0},
{0, 310, EIF_FALSE, 0, 0, 0},
{0, 311, EIF_FALSE, 0, 0, 0},
{0, 312, EIF_FALSE, 0, 0, 0},
{0, 313, EIF_FALSE, 0, 0, 0},
{0, 314, EIF_FALSE, 0, 0, 0},
{0, 315, EIF_FALSE, 0, 0, 0},
{0, 316, EIF_FALSE, 0, 0, 0},
{0, 317, EIF_FALSE, 0, 0, 0},
{0, 318, EIF_FALSE, 0, 0, 0},
{0, 319, EIF_FALSE, 0, 0, 0},
{0, 320, EIF_FALSE, 0, 0, 0},
{0, 321, EIF_FALSE, 0, 0, 0},
{0, 322, EIF_FALSE, 0, 0, 0},
{0, 323, EIF_FALSE, 0, 0, 0},
{0, 324, EIF_FALSE, 0, 0, 0},
{0, 325, EIF_FALSE, 0, 0, 0},
{0, 326, EIF_FALSE, 0, 0, 0},
{0, 327, EIF_FALSE, 0, 0, 0},
{0, 328, EIF_FALSE, 0, 0, 0},
{0, 329, EIF_FALSE, 0, 0, 0},
{0, 330, EIF_FALSE, 0, 0, 0},
{0, 331, EIF_FALSE, 0, 0, 0},
{0, 332, EIF_FALSE, 0, 0, 0},
{0, 333, EIF_FALSE, 0, 0, 0},
{0, 334, EIF_FALSE, 0, 0, 0},
{0, 335, EIF_FALSE, 0, 0, 0},
{0, 336, EIF_FALSE, 0, 0, 0},
{0, 337, EIF_FALSE, 0, 0, 0},
{0, 338, EIF_FALSE, 0, 0, 0},
{0, 339, EIF_FALSE, 0, 0, 0},
{0, 340, EIF_FALSE, 0, 0, 0},
{0, 341, EIF_FALSE, 0, 0, 0},
{0, 342, EIF_FALSE, 0, 0, 0},
{0, 343, EIF_FALSE, 0, 0, 0},
{0, 344, EIF_FALSE, 0, 0, 0},
{0, 345, EIF_FALSE, 0, 0, 0},
{0, 346, EIF_FALSE, 0, 0, 0},
{0, 347, EIF_FALSE, 0, 0, 0},
{0, 348, EIF_FALSE, 0, 0, 0},
{0, 349, EIF_TRUE, 0, 0, 0},
{0, 350, EIF_FALSE, 0, 0, 0},
{0, 351, EIF_FALSE, 0, 0, 0},
{0, 352, EIF_FALSE, 0, 0, 0},
{0, 353, EIF_FALSE, 0, 0, 0},
{0, 354, EIF_FALSE, 0, 0, 0},
{0, 355, EIF_FALSE, 0, 0, 0},
{0, 356, EIF_FALSE, 0, 0, 0},
{0, 357, EIF_FALSE, 0, 0, 0},
{0, 358, EIF_FALSE, 0, 0, 0},
{0, 359, EIF_FALSE, 0, 0, 0},
{0, 360, EIF_FALSE, 0, 0, 0},
{0, 361, EIF_FALSE, 0, 0, 0},
{0, 362, EIF_FALSE, 0, 0, 0},
{0, 363, EIF_FALSE, 0, 0, 0},
{0, 364, EIF_FALSE, 0, 0, 0},
{0, 365, EIF_FALSE, 0, 0, 0},
{0, 366, EIF_FALSE, 0, 0, 0},
{0, 367, EIF_FALSE, 0, 0, 0},
{0, 368, EIF_FALSE, 0, 0, 0},
{0, 369, EIF_FALSE, 0, 0, 0},
{0, 370, EIF_FALSE, 0, 0, 0},
{0, 371, EIF_FALSE, 0, 0, 0},
{0, 372, EIF_FALSE, 0, 0, 0},
{0, 373, EIF_FALSE, 0, 0, 0},
{0, 374, EIF_FALSE, 0, 0, 0},
{0, 375, EIF_FALSE, 0, 0, 0},
{0, 376, EIF_FALSE, 0, 0, 0},
{0, 377, EIF_FALSE, 0, 0, 0},
{0, 378, EIF_FALSE, 0, 0, 0},
{0, 379, EIF_FALSE, 0, 0, 0},
{0, 380, EIF_FALSE, 0, 0, 0},
{0, 381, EIF_FALSE, 0, 0, 0},
{0, 382, EIF_FALSE, 0, 0, 0},
{0, 383, EIF_FALSE, 0, 0, 0},
{0, 384, EIF_FALSE, 0, 0, 0},
{0, 385, EIF_FALSE, 0, 0, 0},
{0, 386, EIF_FALSE, 0, 0, 0},
{0, 387, EIF_FALSE, 0, 0, 0},
{0, 388, EIF_FALSE, 0, 0, 0},
{0, 389, EIF_FALSE, 0, 0, 0},
{0, 390, EIF_FALSE, 0, 0, 0},
{0, 391, EIF_FALSE, 0, 0, 0},
{0, 392, EIF_FALSE, 0, 0, 0},
{1952, 393, EIF_FALSE, 0, 0, 0},
{0, 394, EIF_FALSE, 0, 0, 0},
{0, 395, EIF_FALSE, 0, 0, 0},
{0, 396, EIF_FALSE, 0, 0, 0},
{0, 397, EIF_FALSE, 0, 0, 0},
{0, 398, EIF_FALSE, 0, 0, 0},
{0, 399, EIF_FALSE, 0, 0, 0},
{0, 400, EIF_FALSE, 0, 0, 0},
{0, 401, EIF_FALSE, 0, 0, 0},
{0, 402, EIF_FALSE, 0, 0, 0},
{0, 403, EIF_FALSE, 0, 0, 0},
{0, 404, EIF_FALSE, 0, 0, 0},
{0, 405, EIF_FALSE, 0, 0, 0},
{0, 406, EIF_FALSE, 0, 0, 0},
{0, 407, EIF_FALSE, 0, 0, 0},
{0, 408, EIF_FALSE, 0, 0, 0},
{0, 409, EIF_FALSE, 0, 0, 0},
{0, 410, EIF_FALSE, 0, 0, 0},
{0, 411, EIF_FALSE, &T411f28, 0, 0},
{0, 412, EIF_FALSE, 0, 0, 0},
{0, 413, EIF_FALSE, 0, 0, 0},
{0, 414, EIF_FALSE, 0, 0, 0},
{0, 415, EIF_FALSE, 0, 0, 0},
{0, 416, EIF_FALSE, 0, 0, 0},
{0, 417, EIF_FALSE, 0, 0, 0},
{0, 418, EIF_FALSE, 0, 0, 0},
{0, 419, EIF_FALSE, 0, 0, 0},
{0, 420, EIF_FALSE, 0, 0, 0},
{0, 421, EIF_FALSE, 0, 0, 0},
{0, 422, EIF_FALSE, 0, 0, 0},
{0, 423, EIF_FALSE, 0, 0, 0},
{0, 424, EIF_FALSE, 0, 0, 0},
{0, 425, EIF_FALSE, 0, 0, 0},
{2315, 426, EIF_FALSE, 0, 0, 0},
{0, 427, EIF_FALSE, 0, 0, 0},
{0, 428, EIF_FALSE, 0, 0, 0},
{0, 429, EIF_FALSE, 0, 0, 0},
{0, 430, EIF_FALSE, 0, 0, 0},
{0, 431, EIF_FALSE, 0, 0, 0},
{0, 432, EIF_FALSE, 0, 0, 0},
{0, 433, EIF_FALSE, 0, 0, 0},
{0, 434, EIF_FALSE, 0, 0, 0},
{0, 435, EIF_FALSE, 0, 0, 0},
{0, 436, EIF_FALSE, 0, 0, 0},
{0, 437, EIF_FALSE, 0, 0, 0},
{0, 438, EIF_FALSE, 0, 0, 0},
{0, 439, EIF_FALSE, 0, 0, 0},
{0, 440, EIF_FALSE, 0, 0, 0},
{0, 441, EIF_FALSE, 0, 0, 0},
{0, 442, EIF_FALSE, 0, 0, 0},
{0, 443, EIF_FALSE, 0, 0, 0},
{0, 444, EIF_FALSE, 0, 0, 0},
{0, 445, EIF_FALSE, 0, 0, 0},
{0, 446, EIF_FALSE, 0, 0, 0},
{0, 447, EIF_FALSE, 0, 0, 0},
{0, 448, EIF_FALSE, 0, 0, 0},
{0, 449, EIF_FALSE, 0, 0, 0},
{0, 450, EIF_FALSE, 0, 0, 0},
{0, 451, EIF_FALSE, &T451f31, 0, 0},
{0, 452, EIF_FALSE, 0, 0, 0},
{0, 453, EIF_FALSE, 0, 0, 0},
{0, 454, EIF_FALSE, 0, 0, 0},
{0, 455, EIF_FALSE, 0, 0, 0},
{0, 456, EIF_FALSE, 0, 0, 0},
{0, 457, EIF_FALSE, 0, 0, 0},
{0, 458, EIF_FALSE, 0, 0, 0},
{0, 459, EIF_FALSE, 0, 0, 0},
{0, 460, EIF_FALSE, 0, 0, 0},
{0, 461, EIF_FALSE, 0, 0, 0},
{0, 462, EIF_FALSE, 0, 0, 0},
{0, 463, EIF_FALSE, 0, 0, 0},
{0, 464, EIF_FALSE, 0, 0, 0},
{0, 465, EIF_FALSE, 0, 0, 0},
{0, 466, EIF_FALSE, 0, 0, 0},
{0, 467, EIF_FALSE, 0, 0, 0},
{0, 468, EIF_FALSE, 0, 0, 0},
{0, 469, EIF_FALSE, 0, 0, 0},
{0, 470, EIF_FALSE, 0, 0, 0},
{0, 471, EIF_FALSE, 0, 0, 0},
{0, 472, EIF_FALSE, 0, 0, 0},
{0, 473, EIF_FALSE, 0, 0, 0},
{0, 474, EIF_FALSE, 0, 0, 0},
{0, 475, EIF_FALSE, 0, 0, 0},
{0, 476, EIF_FALSE, 0, 0, 0},
{0, 477, EIF_FALSE, 0, 0, 0},
{0, 478, EIF_FALSE, 0, 0, 0},
{0, 479, EIF_FALSE, 0, 0, 0},
{0, 480, EIF_FALSE, 0, 0, 0},
{0, 481, EIF_FALSE, 0, 0, 0},
{0, 482, EIF_FALSE, 0, 0, 0},
{0, 483, EIF_FALSE, 0, 0, 0},
{0, 484, EIF_FALSE, 0, 0, 0},
{0, 485, EIF_FALSE, 0, 0, 0},
{0, 486, EIF_FALSE, 0, 0, 0},
{0, 487, EIF_FALSE, 0, 0, 0},
{0, 488, EIF_FALSE, 0, 0, 0},
{0, 489, EIF_FALSE, 0, 0, 0},
{0, 490, EIF_FALSE, 0, 0, 0},
{0, 491, EIF_FALSE, 0, 0, 0},
{0, 492, EIF_FALSE, 0, 0, 0},
{0, 493, EIF_FALSE, 0, 0, 0},
{0, 494, EIF_FALSE, 0, 0, 0},
{0, 495, EIF_FALSE, 0, 0, 0},
{0, 496, EIF_FALSE, 0, 0, 0},
{0, 497, EIF_FALSE, 0, 0, 0},
{0, 498, EIF_FALSE, 0, 0, 0},
{0, 499, EIF_FALSE, 0, 0, 0},
{0, 500, EIF_FALSE, 0, 0, 0},
{0, 501, EIF_FALSE, 0, 0, 0},
{0, 502, EIF_FALSE, 0, 0, 0},
{0, 503, EIF_FALSE, 0, 0, 0},
{0, 504, EIF_FALSE, 0, 0, 0},
{0, 505, EIF_FALSE, 0, 0, 0},
{0, 506, EIF_FALSE, 0, 0, 0},
{0, 507, EIF_FALSE, 0, 0, 0},
{0, 508, EIF_FALSE, 0, 0, 0},
{0, 509, EIF_FALSE, 0, 0, 0},
{0, 510, EIF_FALSE, 0, 0, 0},
{0, 511, EIF_FALSE, 0, 0, 0},
{0, 512, EIF_FALSE, 0, 0, 0},
{0, 513, EIF_FALSE, 0, 0, 0},
{0, 514, EIF_FALSE, 0, 0, 0},
{0, 515, EIF_FALSE, 0, 0, 0},
{0, 516, EIF_FALSE, 0, 0, 0},
{2627, 517, EIF_FALSE, 0, 0, 0},
{0, 518, EIF_FALSE, 0, 0, 0},
{0, 519, EIF_FALSE, 0, 0, 0},
{0, 520, EIF_FALSE, 0, 0, 0},
{0, 521, EIF_FALSE, 0, 0, 0},
{0, 522, EIF_FALSE, 0, 0, 0},
{0, 523, EIF_FALSE, 0, 0, 0},
{0, 524, EIF_FALSE, 0, 0, 0},
{0, 525, EIF_FALSE, 0, 0, 0},
{0, 526, EIF_FALSE, 0, 0, 0},
{0, 527, EIF_FALSE, 0, 0, 0},
{0, 528, EIF_FALSE, 0, 0, 0},
{0, 529, EIF_FALSE, 0, 0, 0},
{0, 530, EIF_FALSE, 0, 0, 0},
{0, 531, EIF_FALSE, 0, 0, 0},
{0, 532, EIF_FALSE, 0, 0, 0},
{0, 533, EIF_FALSE, 0, 0, 0},
{0, 534, EIF_FALSE, 0, 0, 0},
{0, 535, EIF_FALSE, 0, 0, 0},
{0, 536, EIF_FALSE, 0, 0, 0},
{0, 537, EIF_FALSE, 0, 0, 0},
{0, 538, EIF_FALSE, 0, 0, 0},
{0, 539, EIF_FALSE, 0, 0, 0},
{0, 540, EIF_FALSE, 0, 0, 0},
{0, 541, EIF_FALSE, 0, 0, 0},
{0, 542, EIF_FALSE, 0, 0, 0},
{0, 543, EIF_FALSE, 0, 0, 0},
{0, 544, EIF_FALSE, 0, 0, 0},
{0, 545, EIF_FALSE, 0, 0, 0},
{0, 546, EIF_FALSE, 0, 0, 0},
{0, 547, EIF_FALSE, 0, 0, 0},
{0, 548, EIF_FALSE, 0, 0, 0},
{0, 549, EIF_FALSE, 0, 0, 0},
{0, 550, EIF_FALSE, 0, 0, 0},
{0, 551, EIF_FALSE, 0, 0, 0},
{0, 552, EIF_FALSE, 0, 0, 0},
{0, 553, EIF_FALSE, 0, 0, 0},
{0, 554, EIF_FALSE, 0, 0, 0},
{0, 555, EIF_FALSE, 0, 0, 0},
{0, 556, EIF_FALSE, 0, 0, 0},
{0, 557, EIF_FALSE, 0, 0, 0},
{0, 558, EIF_FALSE, 0, 0, 0},
{0, 559, EIF_FALSE, 0, 0, 0},
{0, 560, EIF_FALSE, 0, 0, 0},
{0, 561, EIF_FALSE, 0, 0, 0},
{0, 562, EIF_FALSE, 0, 0, 0},
{0, 563, EIF_FALSE, 0, 0, 0},
{0, 564, EIF_FALSE, 0, 0, 0},
{0, 565, EIF_FALSE, 0, 0, 0},
{0, 566, EIF_FALSE, 0, 0, 0},
{0, 567, EIF_FALSE, 0, 0, 0},
{0, 568, EIF_FALSE, 0, 0, 0},
{0, 569, EIF_FALSE, 0, 0, 0},
{0, 570, EIF_FALSE, 0, 0, 0},
{0, 571, EIF_FALSE, 0, 0, 0},
{0, 572, EIF_FALSE, 0, 0, 0},
{2680, 573, EIF_FALSE, 0, 0, 0},
{0, 574, EIF_FALSE, 0, 0, 0},
{0, 575, EIF_FALSE, 0, 0, 0},
{0, 576, EIF_FALSE, 0, 0, 0},
{0, 577, EIF_FALSE, 0, 0, 0},
{0, 578, EIF_FALSE, 0, 0, 0},
{0, 579, EIF_FALSE, 0, 0, 0},
{0, 580, EIF_FALSE, 0, 0, 0},
{0, 581, EIF_FALSE, 0, 0, 0},
{0, 582, EIF_FALSE, 0, 0, 0},
{0, 583, EIF_FALSE, 0, 0, 0},
{0, 584, EIF_FALSE, 0, 0, 0},
{0, 585, EIF_FALSE, 0, 0, 0},
{0, 586, EIF_FALSE, 0, 0, 0},
{0, 587, EIF_FALSE, 0, 0, 0},
{0, 588, EIF_FALSE, 0, 0, 0},
{0, 589, EIF_FALSE, 0, 0, 0},
{0, 590, EIF_FALSE, 0, 0, 0},
{0, 591, EIF_FALSE, 0, 0, 0},
{0, 592, EIF_FALSE, 0, 0, 0},
{0, 593, EIF_FALSE, 0, 0, 0},
{0, 594, EIF_FALSE, 0, 0, 0},
{0, 595, EIF_FALSE, 0, 0, 0},
{0, 596, EIF_FALSE, 0, 0, 0},
{0, 597, EIF_FALSE, 0, 0, 0},
{0, 598, EIF_FALSE, 0, 0, 0},
{0, 599, EIF_FALSE, 0, 0, 0},
{0, 600, EIF_FALSE, 0, 0, 0},
{0, 601, EIF_FALSE, 0, 0, 0},
{0, 602, EIF_FALSE, 0, 0, 0},
{0, 603, EIF_FALSE, 0, 0, 0},
{0, 604, EIF_FALSE, 0, 0, 0},
{0, 605, EIF_FALSE, 0, 0, 0},
{0, 606, EIF_TRUE, 0, 0, 0},
{0, 607, EIF_FALSE, 0, 0, 0},
{0, 608, EIF_FALSE, 0, 0, 0},
{0, 609, EIF_FALSE, 0, 0, 0},
{0, 610, EIF_FALSE, 0, 0, 0},
{0, 611, EIF_TRUE, 0, 0, 0},
{0, 612, EIF_FALSE, 0, 0, 0},
{0, 613, EIF_FALSE, 0, 0, 0},
{0, 614, EIF_FALSE, 0, 0, 0},
{0, 615, EIF_TRUE, 0, 0, 0},
{0, 616, EIF_FALSE, 0, 0, 0},
{0, 617, EIF_FALSE, 0, 0, 0},
{0, 618, EIF_FALSE, 0, 0, 0},
{0, 619, EIF_FALSE, 0, 0, 0},
{0, 620, EIF_TRUE, 0, 0, 0},
{0, 621, EIF_FALSE, 0, 0, 0},
{0, 622, EIF_FALSE, 0, 0, 0},
{0, 623, EIF_FALSE, 0, 0, 0},
{0, 624, EIF_FALSE, 0, 0, 0},
{0, 625, EIF_FALSE, 0, 0, 0},
{0, 626, EIF_FALSE, 0, 0, 0},
{0, 627, EIF_FALSE, 0, 0, 0},
{0, 628, EIF_FALSE, 0, 0, 0},
{0, 629, EIF_FALSE, 0, 0, 0},
{0, 630, EIF_FALSE, 0, 0, 0},
{0, 631, EIF_FALSE, 0, 0, 0},
{0, 632, EIF_FALSE, 0, 0, 0},
{0, 633, EIF_FALSE, 0, 0, 0},
{0, 634, EIF_TRUE, 0, 0, 0},
{0, 635, EIF_FALSE, 0, 0, 0},
{0, 636, EIF_FALSE, 0, 0, 0},
{0, 637, EIF_FALSE, 0, 0, 0},
{0, 638, EIF_FALSE, 0, 0, 0},
{0, 639, EIF_FALSE, 0, 0, 0},
{0, 640, EIF_FALSE, 0, 0, 0},
{0, 641, EIF_FALSE, 0, 0, 0},
{0, 642, EIF_FALSE, 0, 0, 0},
{0, 643, EIF_FALSE, 0, 0, 0},
{0, 644, EIF_FALSE, 0, 0, 0},
{0, 645, EIF_FALSE, 0, 0, 0},
{0, 646, EIF_FALSE, 0, 0, 0},
{0, 647, EIF_FALSE, 0, 0, 0},
{0, 648, EIF_FALSE, 0, 0, 0},
{0, 649, EIF_FALSE, 0, 0, 0},
{0, 650, EIF_FALSE, 0, 0, 0},
{0, 651, EIF_FALSE, 0, 0, 0},
{0, 652, EIF_FALSE, 0, 0, 0},
{0, 653, EIF_FALSE, 0, 0, 0},
{0, 654, EIF_FALSE, 0, 0, 0},
{0, 655, EIF_FALSE, 0, 0, 0},
{0, 656, EIF_FALSE, 0, 0, 0},
{0, 657, EIF_FALSE, 0, 0, 0},
{0, 658, EIF_FALSE, 0, 0, 0},
{0, 659, EIF_FALSE, 0, 0, 0},
{0, 660, EIF_FALSE, 0, 0, 0},
{0, 661, EIF_FALSE, 0, 0, 0},
{0, 662, EIF_FALSE, 0, 0, 0},
{0, 663, EIF_FALSE, 0, 0, 0},
{0, 664, EIF_FALSE, 0, 0, 0},
{0, 665, EIF_FALSE, 0, 0, 0},
{0, 666, EIF_FALSE, 0, 0, 0},
{0, 667, EIF_FALSE, 0, 0, 0},
{0, 668, EIF_FALSE, 0, 0, 0},
{0, 669, EIF_FALSE, 0, 0, 0},
{0, 670, EIF_FALSE, 0, 0, 0},
{0, 671, EIF_FALSE, 0, 0, 0},
{0, 672, EIF_FALSE, 0, 0, 0},
{0, 673, EIF_FALSE, 0, 0, 0},
{0, 674, EIF_FALSE, 0, 0, 0},
{0, 675, EIF_FALSE, 0, 0, 0},
{0, 676, EIF_FALSE, 0, 0, 0},
{0, 677, EIF_FALSE, 0, 0, 0},
{0, 678, EIF_FALSE, 0, 0, 0},
{0, 679, EIF_FALSE, 0, 0, 0},
{0, 680, EIF_FALSE, 0, 0, 0},
{0, 681, EIF_FALSE, 0, 0, 0},
{0, 682, EIF_FALSE, 0, 0, 0},
{0, 683, EIF_FALSE, 0, 0, 0},
{0, 684, EIF_FALSE, 0, 0, 0},
{0, 685, EIF_FALSE, 0, 0, 0},
{0, 686, EIF_FALSE, 0, 0, 0},
{0, 687, EIF_FALSE, 0, 0, 0},
{0, 688, EIF_FALSE, 0, 0, 0},
{0, 689, EIF_FALSE, 0, 0, 0},
{0, 690, EIF_FALSE, 0, 0, 0},
{0, 691, EIF_FALSE, 0, 0, 0},
{0, 692, EIF_FALSE, 0, 0, 0},
{0, 693, EIF_FALSE, 0, 0, 0},
{0, 694, EIF_FALSE, 0, 0, 0},
{0, 695, EIF_FALSE, 0, 0, 0},
{0, 696, EIF_FALSE, 0, 0, 0},
{0, 697, EIF_FALSE, 0, 0, 0},
{0, 698, EIF_FALSE, 0, 0, 0},
{0, 699, EIF_FALSE, 0, 0, 0},
{0, 700, EIF_FALSE, 0, 0, 0},
{0, 701, EIF_FALSE, 0, 0, 0},
{0, 702, EIF_FALSE, 0, 0, 0},
{0, 703, EIF_FALSE, 0, 0, 0},
{0, 704, EIF_FALSE, 0, 0, 0},
{0, 705, EIF_FALSE, 0, 0, 0},
{0, 706, EIF_FALSE, 0, 0, 0},
{0, 707, EIF_FALSE, 0, 0, 0},
{0, 708, EIF_FALSE, 0, 0, 0},
{0, 709, EIF_FALSE, 0, 0, 0},
{0, 710, EIF_FALSE, 0, 0, 0},
{0, 711, EIF_FALSE, 0, 0, 0},
{0, 712, EIF_FALSE, 0, 0, 0},
{0, 713, EIF_FALSE, 0, 0, 0},
{0, 714, EIF_FALSE, 0, 0, 0},
{0, 715, EIF_FALSE, 0, 0, 0},
{0, 716, EIF_FALSE, 0, 0, 0},
{0, 717, EIF_FALSE, 0, 0, 0},
{0, 718, EIF_FALSE, 0, 0, 0},
{0, 719, EIF_FALSE, 0, 0, 0},
{0, 720, EIF_FALSE, 0, 0, 0},
{0, 721, EIF_FALSE, 0, 0, 0},
{0, 722, EIF_FALSE, 0, 0, 0},
{0, 723, EIF_FALSE, 0, 0, 0},
{0, 724, EIF_FALSE, 0, 0, 0},
{0, 725, EIF_FALSE, 0, 0, 0},
{0, 726, EIF_FALSE, 0, 0, 0},
{0, 727, EIF_FALSE, 0, 0, 0},
{0, 728, EIF_FALSE, 0, 0, 0},
{0, 729, EIF_FALSE, 0, 0, 0},
{0, 730, EIF_TRUE, 0, 0, 0},
{0, 731, EIF_FALSE, 0, 0, 0},
{0, 732, EIF_FALSE, 0, 0, 0},
{0, 733, EIF_FALSE, 0, 0, 0},
{0, 734, EIF_FALSE, 0, 0, 0},
{0, 735, EIF_FALSE, 0, 0, 0},
{0, 736, EIF_FALSE, 0, 0, 0},
{0, 737, EIF_FALSE, 0, 0, 0},
{0, 738, EIF_FALSE, 0, 0, 0},
{0, 739, EIF_FALSE, 0, 0, 0},
{0, 740, EIF_FALSE, 0, 0, 0},
{0, 741, EIF_FALSE, 0, 0, 0},
{0, 742, EIF_FALSE, 0, 0, 0},
{0, 743, EIF_FALSE, 0, 0, 0},
{0, 744, EIF_FALSE, 0, 0, 0},
{0, 745, EIF_TRUE, 0, 0, 0},
{0, 746, EIF_FALSE, 0, 0, 0},
{0, 747, EIF_FALSE, 0, 0, 0},
{0, 748, EIF_TRUE, 0, 0, 0},
{0, 749, EIF_FALSE, 0, 0, 0},
{0, 750, EIF_FALSE, 0, 0, 0},
{0, 751, EIF_TRUE, 0, 0, 0},
{0, 752, EIF_FALSE, 0, 0, 0},
{0, 753, EIF_FALSE, 0, 0, 0},
{0, 754, EIF_TRUE, 0, 0, 0},
{0, 755, EIF_FALSE, 0, 0, 0},
{0, 756, EIF_FALSE, 0, 0, 0},
{0, 757, EIF_TRUE, 0, 0, 0},
{0, 758, EIF_FALSE, 0, 0, 0},
{0, 759, EIF_FALSE, 0, 0, 0},
{0, 760, EIF_TRUE, 0, 0, 0},
{0, 761, EIF_FALSE, 0, 0, 0},
{0, 762, EIF_FALSE, 0, 0, 0},
{0, 763, EIF_TRUE, 0, 0, 0},
{0, 764, EIF_FALSE, 0, 0, 0},
{0, 765, EIF_FALSE, 0, 0, 0},
{0, 766, EIF_FALSE, 0, 0, 0},
{0, 767, EIF_TRUE, 0, 0, 0},
{0, 768, EIF_FALSE, 0, 0, 0},
{0, 769, EIF_FALSE, 0, 0, 0},
{0, 770, EIF_FALSE, 0, 0, 0},
{0, 771, EIF_FALSE, 0, 0, 0},
{0, 772, EIF_FALSE, 0, 0, 0},
{0, 773, EIF_FALSE, 0, 0, 0},
{0, 774, EIF_FALSE, 0, 0, 0},
{0, 775, EIF_FALSE, 0, 0, 0},
{0, 776, EIF_FALSE, 0, 0, 0},
{0, 777, EIF_FALSE, 0, 0, 0},
{0, 778, EIF_TRUE, 0, 0, 0},
{0, 779, EIF_FALSE, 0, 0, 0},
{0, 780, EIF_FALSE, 0, 0, 0},
{0, 781, EIF_FALSE, 0, 0, 0},
{0, 782, EIF_FALSE, 0, 0, 0},
{0, 783, EIF_FALSE, 0, 0, 0},
{0, 784, EIF_TRUE, 0, 0, 0},
{0, 785, EIF_FALSE, 0, 0, 0},
{0, 786, EIF_FALSE, 0, 0, 0},
{0, 787, EIF_FALSE, 0, 0, 0},
{0, 788, EIF_FALSE, 0, 0, 0},
{0, 789, EIF_FALSE, 0, 0, 0},
{0, 790, EIF_FALSE, 0, 0, 0},
{0, 791, EIF_FALSE, 0, 0, 0},
{0, 792, EIF_FALSE, 0, 0, 0},
{0, 793, EIF_FALSE, 0, 0, 0},
{0, 794, EIF_FALSE, 0, 0, 0},
{0, 795, EIF_FALSE, 0, 0, 0},
{0, 796, EIF_TRUE, 0, 0, 0},
{0, 797, EIF_FALSE, 0, 0, 0},
{0, 798, EIF_FALSE, 0, 0, 0},
{0, 799, EIF_FALSE, 0, 0, 0},
{0, 800, EIF_FALSE, 0, 0, 0},
{0, 801, EIF_TRUE, 0, 0, 0},
{0, 802, EIF_FALSE, 0, 0, 0},
{0, 803, EIF_FALSE, 0, 0, 0},
{0, 804, EIF_FALSE, 0, 0, 0},
{0, 805, EIF_FALSE, 0, 0, 0},
{0, 806, EIF_FALSE, 0, 0, 0},
{0, 807, EIF_FALSE, 0, 0, 0},
{0, 808, EIF_FALSE, 0, 0, 0},
{0, 809, EIF_TRUE, 0, 0, 0},
{0, 810, EIF_FALSE, 0, 0, 0},
{0, 811, EIF_FALSE, 0, 0, 0},
{0, 812, EIF_FALSE, 0, 0, 0},
{0, 813, EIF_FALSE, 0, 0, 0},
{0, 814, EIF_FALSE, 0, 0, 0},
{0, 815, EIF_FALSE, 0, 0, 0},
{0, 816, EIF_FALSE, 0, 0, 0},
{0, 817, EIF_FALSE, 0, 0, 0},
{0, 818, EIF_FALSE, 0, 0, 0},
{0, 819, EIF_FALSE, 0, 0, 0},
{0, 820, EIF_FALSE, 0, 0, 0},
{0, 821, EIF_FALSE, 0, 0, 0},
{0, 822, EIF_FALSE, 0, 0, 0},
{0, 823, EIF_FALSE, 0, 0, 0},
{0, 824, EIF_FALSE, 0, 0, 0},
{0, 825, EIF_FALSE, 0, 0, 0},
{0, 826, EIF_FALSE, 0, 0, 0},
{0, 827, EIF_FALSE, 0, 0, 0},
{0, 828, EIF_FALSE, 0, 0, 0},
{0, 829, EIF_FALSE, 0, 0, 0},
{0, 830, EIF_TRUE, 0, 0, 0},
{0, 831, EIF_FALSE, 0, 0, 0},
{0, 832, EIF_TRUE, 0, 0, 0},
{0, 833, EIF_TRUE, 0, 0, 0},
{0, 834, EIF_FALSE, 0, 0, 0},
{0, 835, EIF_FALSE, 0, 0, 0},
{0, 836, EIF_FALSE, 0, 0, 0},
{0, 837, EIF_FALSE, 0, 0, 0},
{0, 838, EIF_FALSE, 0, 0, 0},
{0, 839, EIF_FALSE, 0, 0, 0},
{0, 840, EIF_FALSE, 0, 0, 0},
{0, 841, EIF_FALSE, 0, 0, 0},
{0, 842, EIF_FALSE, 0, 0, 0},
{0, 843, EIF_FALSE, 0, 0, 0},
{0, 844, EIF_FALSE, 0, 0, 0},
{0, 845, EIF_TRUE, 0, 0, 0},
{0, 846, EIF_FALSE, 0, 0, 0},
{0, 847, EIF_FALSE, 0, 0, 0},
{0, 848, EIF_FALSE, 0, 0, 0},
{0, 849, EIF_FALSE, 0, 0, 0},
{0, 850, EIF_FALSE, 0, 0, 0},
{0, 851, EIF_FALSE, 0, 0, 0},
{0, 852, EIF_FALSE, 0, 0, 0},
{0, 853, EIF_FALSE, 0, 0, 0},
{0, 854, EIF_FALSE, 0, 0, 0},
{0, 855, EIF_FALSE, 0, 0, 0},
{0, 856, EIF_FALSE, 0, 0, 0},
{0, 857, EIF_FALSE, 0, 0, 0},
{0, 858, EIF_FALSE, 0, 0, 0},
{0, 859, EIF_FALSE, 0, 0, 0},
{0, 860, EIF_FALSE, 0, 0, 0},
{0, 861, EIF_FALSE, 0, 0, 0},
{0, 862, EIF_FALSE, 0, 0, 0},
{0, 863, EIF_FALSE, 0, 0, 0},
{0, 864, EIF_FALSE, 0, 0, 0},
{0, 865, EIF_FALSE, 0, 0, 0},
{0, 866, EIF_FALSE, 0, 0, 0},
{0, 867, EIF_FALSE, 0, 0, 0},
{0, 868, EIF_FALSE, 0, 0, 0},
{0, 869, EIF_TRUE, 0, 0, 0},
{0, 870, EIF_FALSE, 0, 0, 0},
{0, 871, EIF_FALSE, 0, 0, 0},
{0, 872, EIF_TRUE, 0, 0, 0},
{0, 873, EIF_FALSE, 0, 0, 0},
{0, 874, EIF_FALSE, 0, 0, 0},
{0, 875, EIF_TRUE, 0, 0, 0},
{0, 876, EIF_FALSE, 0, 0, 0},
{0, 877, EIF_FALSE, 0, 0, 0},
{0, 878, EIF_TRUE, 0, 0, 0},
{0, 879, EIF_FALSE, 0, 0, 0},
{0, 880, EIF_FALSE, 0, 0, 0},
{0, 881, EIF_TRUE, 0, 0, 0},
{0, 882, EIF_FALSE, 0, 0, 0},
{0, 883, EIF_FALSE, 0, 0, 0},
{0, 884, EIF_TRUE, 0, 0, 0},
{0, 885, EIF_FALSE, 0, 0, 0},
{0, 886, EIF_FALSE, 0, 0, 0},
{0, 887, EIF_TRUE, 0, 0, 0},
{0, 888, EIF_FALSE, 0, 0, 0},
{0, 889, EIF_FALSE, 0, 0, 0},
{0, 890, EIF_TRUE, 0, 0, 0},
{0, 891, EIF_FALSE, 0, 0, 0},
{0, 892, EIF_FALSE, 0, 0, 0},
{0, 893, EIF_TRUE, 0, 0, 0},
{0, 894, EIF_FALSE, 0, 0, 0},
{0, 895, EIF_FALSE, 0, 0, 0},
{0, 896, EIF_TRUE, 0, 0, 0},
{0, 897, EIF_FALSE, 0, 0, 0},
{0, 898, EIF_FALSE, 0, 0, 0},
{0, 899, EIF_TRUE, 0, 0, 0},
{0, 900, EIF_FALSE, 0, 0, 0},
{0, 901, EIF_FALSE, 0, 0, 0},
{0, 902, EIF_TRUE, 0, 0, 0},
{0, 903, EIF_FALSE, 0, 0, 0},
{0, 904, EIF_FALSE, 0, 0, 0},
{0, 905, EIF_TRUE, 0, 0, 0},
{0, 906, EIF_FALSE, 0, 0, 0},
{0, 907, EIF_FALSE, 0, 0, 0},
{0, 908, EIF_TRUE, 0, 0, 0},
{0, 909, EIF_FALSE, 0, 0, 0},
{0, 910, EIF_TRUE, 0, 0, 0},
{0, 911, EIF_FALSE, 0, 0, 0},
{0, 912, EIF_FALSE, 0, 0, 0},
{0, 913, EIF_TRUE, 0, 0, 0},
{0, 914, EIF_FALSE, 0, 0, 0},
{0, 915, EIF_FALSE, 0, 0, 0},
{0, 916, EIF_TRUE, 0, 0, 0},
{0, 917, EIF_FALSE, 0, 0, 0},
{0, 918, EIF_FALSE, 0, 0, 0},
{0, 919, EIF_TRUE, 0, 0, 0},
{0, 920, EIF_FALSE, 0, 0, 0},
{0, 921, EIF_FALSE, 0, 0, 0},
{0, 922, EIF_TRUE, 0, 0, 0},
{0, 923, EIF_FALSE, 0, 0, 0},
{0, 924, EIF_FALSE, 0, 0, 0},
{0, 925, EIF_TRUE, 0, 0, 0},
{0, 926, EIF_FALSE, 0, 0, 0},
{0, 927, EIF_FALSE, 0, 0, 0},
{0, 928, EIF_TRUE, 0, 0, 0},
{0, 929, EIF_FALSE, 0, 0, 0},
{0, 930, EIF_FALSE, 0, 0, 0},
{0, 931, EIF_TRUE, 0, 0, 0},
{0, 932, EIF_FALSE, 0, 0, 0},
{0, 933, EIF_FALSE, 0, 0, 0},
{0, 934, EIF_TRUE, 0, 0, 0},
{0, 935, EIF_FALSE, 0, 0, 0},
{0, 936, EIF_TRUE, 0, 0, 0},
{0, 937, EIF_FALSE, 0, 0, 0},
{0, 938, EIF_FALSE, 0, 0, 0},
{0, 939, EIF_TRUE, 0, 0, 0},
{0, 940, EIF_FALSE, 0, 0, 0},
{0, 941, EIF_TRUE, 0, 0, 0},
{0, 942, EIF_FALSE, 0, 0, 0},
{0, 943, EIF_FALSE, 0, 0, 0},
{0, 944, EIF_TRUE, 0, 0, 0},
{0, 945, EIF_FALSE, 0, 0, 0},
{0, 946, EIF_FALSE, 0, 0, 0},
{0, 947, EIF_TRUE, 0, 0, 0},
{0, 948, EIF_FALSE, 0, 0, 0},
{0, 949, EIF_FALSE, 0, 0, 0},
{0, 950, EIF_TRUE, 0, 0, 0},
{0, 951, EIF_FALSE, 0, 0, 0},
{0, 952, EIF_FALSE, 0, 0, 0},
{0, 953, EIF_TRUE, 0, 0, 0},
{0, 954, EIF_FALSE, 0, 0, 0},
{0, 955, EIF_FALSE, 0, 0, 0},
{0, 956, EIF_TRUE, 0, 0, 0},
{0, 957, EIF_FALSE, 0, 0, 0},
{0, 958, EIF_FALSE, 0, 0, 0},
{0, 959, EIF_TRUE, 0, 0, 0},
{0, 960, EIF_FALSE, 0, 0, 0},
{0, 961, EIF_FALSE, 0, 0, 0},
{0, 962, EIF_TRUE, 0, 0, 0},
{0, 963, EIF_FALSE, 0, 0, 0},
{0, 964, EIF_FALSE, 0, 0, 0},
{0, 965, EIF_TRUE, 0, 0, 0},
{0, 966, EIF_FALSE, 0, 0, 0},
{0, 967, EIF_TRUE, 0, 0, 0},
{0, 968, EIF_FALSE, 0, 0, 0},
{0, 969, EIF_FALSE, 0, 0, 0},
{0, 970, EIF_TRUE, 0, 0, 0},
{0, 971, EIF_FALSE, 0, 0, 0},
{0, 972, EIF_FALSE, 0, 0, 0},
{0, 973, EIF_TRUE, 0, 0, 0},
{0, 974, EIF_FALSE, 0, 0, 0},
{0, 975, EIF_FALSE, 0, 0, 0},
{0, 976, EIF_TRUE, 0, 0, 0},
{0, 977, EIF_FALSE, 0, 0, 0},
{0, 978, EIF_FALSE, 0, 0, 0},
{0, 979, EIF_TRUE, 0, 0, 0},
{0, 980, EIF_FALSE, 0, 0, 0},
{0, 981, EIF_FALSE, 0, 0, 0},
{0, 982, EIF_TRUE, 0, 0, 0},
{0, 983, EIF_FALSE, 0, 0, 0},
{0, 984, EIF_FALSE, 0, 0, 0},
{0, 985, EIF_TRUE, 0, 0, 0},
{0, 986, EIF_FALSE, 0, 0, 0},
{0, 987, EIF_FALSE, 0, 0, 0},
{0, 988, EIF_TRUE, 0, 0, 0},
{0, 989, EIF_FALSE, 0, 0, 0},
{0, 990, EIF_FALSE, 0, 0, 0},
{0, 991, EIF_TRUE, 0, 0, 0},
{0, 992, EIF_FALSE, 0, 0, 0},
{0, 993, EIF_TRUE, 0, 0, 0},
{0, 994, EIF_FALSE, 0, 0, 0},
{0, 995, EIF_FALSE, 0, 0, 0},
{0, 996, EIF_TRUE, 0, 0, 0},
{0, 997, EIF_FALSE, 0, 0, 0},
{0, 998, EIF_FALSE, 0, 0, 0},
{0, 999, EIF_TRUE, 0, 0, 0},
{0, 1000, EIF_FALSE, 0, 0, 0},
{0, 1001, EIF_FALSE, 0, 0, 0},
{0, 1002, EIF_TRUE, 0, 0, 0},
{0, 1003, EIF_FALSE, 0, 0, 0},
{0, 1004, EIF_FALSE, 0, 0, 0},
{0, 1005, EIF_TRUE, 0, 0, 0},
{0, 1006, EIF_FALSE, 0, 0, 0},
{0, 1007, EIF_FALSE, 0, 0, 0},
{0, 1008, EIF_TRUE, 0, 0, 0},
{0, 1009, EIF_FALSE, 0, 0, 0},
{0, 1010, EIF_FALSE, 0, 0, 0},
{0, 1011, EIF_TRUE, 0, 0, 0},
{0, 1012, EIF_FALSE, 0, 0, 0},
{0, 1013, EIF_FALSE, 0, 0, 0},
{0, 1014, EIF_TRUE, 0, 0, 0},
{0, 1015, EIF_FALSE, 0, 0, 0},
{0, 1016, EIF_FALSE, 0, 0, 0},
{0, 1017, EIF_TRUE, 0, 0, 0},
{0, 1018, EIF_FALSE, 0, 0, 0},
{0, 1019, EIF_FALSE, 0, 0, 0},
{0, 1020, EIF_TRUE, 0, 0, 0},
{0, 1021, EIF_FALSE, 0, 0, 0},
{0, 1022, EIF_FALSE, 0, 0, 0},
{0, 1023, EIF_TRUE, 0, 0, 0},
{0, 1024, EIF_FALSE, 0, 0, 0},
{0, 1025, EIF_FALSE, 0, 0, 0},
{0, 1026, EIF_TRUE, 0, 0, 0},
{0, 1027, EIF_FALSE, 0, 0, 0},
{0, 1028, EIF_FALSE, 0, 0, 0},
{0, 1029, EIF_TRUE, 0, 0, 0},
{0, 1030, EIF_FALSE, 0, 0, 0},
{0, 1031, EIF_FALSE, 0, 0, 0},
{0, 1032, EIF_TRUE, 0, 0, 0},
{0, 1033, EIF_FALSE, 0, 0, 0},
{0, 1034, EIF_FALSE, 0, 0, 0},
{0, 1035, EIF_TRUE, 0, 0, 0},
{0, 1036, EIF_FALSE, 0, 0, 0},
{0, 1037, EIF_FALSE, 0, 0, 0},
{0, 1038, EIF_TRUE, 0, 0, 0},
{0, 1039, EIF_FALSE, 0, 0, 0},
{0, 1040, EIF_FALSE, 0, 0, 0},
{0, 1041, EIF_TRUE, 0, 0, 0},
{0, 1042, EIF_FALSE, 0, 0, 0},
{0, 1043, EIF_FALSE, 0, 0, 0},
{0, 1044, EIF_TRUE, 0, 0, 0},
{0, 1045, EIF_FALSE, 0, 0, 0},
{0, 1046, EIF_FALSE, 0, 0, 0},
{0, 1047, EIF_TRUE, 0, 0, 0},
{0, 1048, EIF_FALSE, 0, 0, 0},
{0, 1049, EIF_FALSE, 0, 0, 0},
{0, 1050, EIF_TRUE, 0, 0, 0},
{0, 1051, EIF_FALSE, 0, 0, 0},
{0, 1052, EIF_TRUE, 0, 0, 0},
{0, 1053, EIF_FALSE, 0, 0, 0},
{0, 1054, EIF_TRUE, 0, 0, 0},
{0, 1055, EIF_FALSE, 0, 0, 0},
{0, 1056, EIF_FALSE, 0, 0, 0},
{0, 1057, EIF_TRUE, 0, 0, 0},
{0, 1058, EIF_FALSE, 0, 0, 0},
{0, 1059, EIF_FALSE, 0, 0, 0},
{0, 1060, EIF_TRUE, 0, 0, 0},
{0, 1061, EIF_FALSE, 0, 0, 0},
{0, 1062, EIF_FALSE, 0, 0, 0},
{0, 1063, EIF_TRUE, 0, 0, 0},
{0, 1064, EIF_FALSE, 0, 0, 0},
{0, 1065, EIF_FALSE, 0, 0, 0},
{0, 1066, EIF_TRUE, 0, 0, 0},
{0, 1067, EIF_FALSE, 0, 0, 0},
{0, 1068, EIF_FALSE, 0, 0, 0},
{0, 1069, EIF_TRUE, 0, 0, 0},
{0, 1070, EIF_FALSE, 0, 0, 0},
{0, 1071, EIF_FALSE, 0, 0, 0},
{0, 1072, EIF_TRUE, 0, 0, 0},
{0, 1073, EIF_FALSE, 0, 0, 0},
{0, 1074, EIF_TRUE, 0, 0, 0},
{0, 1075, EIF_FALSE, 0, 0, 0},
{0, 1076, EIF_FALSE, 0, 0, 0},
{0, 1077, EIF_TRUE, 0, 0, 0},
{0, 1078, EIF_FALSE, 0, 0, 0},
{0, 1079, EIF_FALSE, 0, 0, 0},
{0, 1080, EIF_TRUE, 0, 0, 0},
{0, 1081, EIF_FALSE, 0, 0, 0},
{0, 1082, EIF_FALSE, 0, 0, 0},
{0, 1083, EIF_TRUE, 0, 0, 0},
{0, 1084, EIF_FALSE, 0, 0, 0},
{0, 1085, EIF_TRUE, 0, 0, 0},
{0, 1086, EIF_FALSE, 0, 0, 0},
{0, 1087, EIF_FALSE, 0, 0, 0},
{0, 1088, EIF_TRUE, 0, 0, 0},
{0, 1089, EIF_FALSE, 0, 0, 0},
{0, 1090, EIF_FALSE, 0, 0, 0},
{0, 1091, EIF_TRUE, 0, 0, 0},
{0, 1092, EIF_FALSE, 0, 0, 0},
{0, 1093, EIF_TRUE, 0, 0, 0},
{0, 1094, EIF_FALSE, 0, 0, 0},
{0, 1095, EIF_FALSE, 0, 0, 0},
{0, 1096, EIF_TRUE, 0, 0, 0},
{0, 1097, EIF_FALSE, 0, 0, 0},
{0, 1098, EIF_FALSE, 0, 0, 0},
{0, 1099, EIF_TRUE, 0, 0, 0},
{0, 1100, EIF_FALSE, 0, 0, 0},
{0, 1101, EIF_FALSE, 0, 0, 0},
{0, 1102, EIF_TRUE, 0, 0, 0},
{0, 1103, EIF_FALSE, 0, 0, 0},
{0, 1104, EIF_FALSE, 0, 0, 0},
{0, 1105, EIF_TRUE, 0, 0, 0},
{0, 1106, EIF_FALSE, 0, 0, 0},
{0, 1107, EIF_FALSE, 0, 0, 0},
{0, 1108, EIF_TRUE, 0, 0, 0},
{0, 1109, EIF_FALSE, 0, 0, 0},
{0, 1110, EIF_FALSE, 0, 0, 0},
{0, 1111, EIF_TRUE, 0, 0, 0},
{0, 1112, EIF_FALSE, 0, 0, 0},
{0, 1113, EIF_FALSE, 0, 0, 0},
{0, 1114, EIF_TRUE, 0, 0, 0},
{0, 1115, EIF_FALSE, 0, 0, 0},
{0, 1116, EIF_FALSE, 0, 0, 0},
{0, 1117, EIF_TRUE, 0, 0, 0},
{0, 1118, EIF_FALSE, 0, 0, 0},
{0, 1119, EIF_FALSE, 0, 0, 0},
{0, 1120, EIF_TRUE, 0, 0, 0},
{0, 1121, EIF_FALSE, 0, 0, 0},
{0, 1122, EIF_FALSE, 0, 0, 0},
{0, 1123, EIF_TRUE, 0, 0, 0},
{0, 1124, EIF_FALSE, 0, 0, 0},
{0, 1125, EIF_FALSE, 0, 0, 0},
{0, 1126, EIF_TRUE, 0, 0, 0},
{0, 1127, EIF_FALSE, 0, 0, 0},
{0, 1128, EIF_TRUE, 0, 0, 0},
{0, 1129, EIF_FALSE, 0, 0, 0},
{0, 1130, EIF_FALSE, 0, 0, 0},
{0, 1131, EIF_TRUE, 0, 0, 0},
{0, 1132, EIF_FALSE, 0, 0, 0},
{0, 1133, EIF_FALSE, 0, 0, 0},
{0, 1134, EIF_TRUE, 0, 0, 0},
{0, 1135, EIF_FALSE, 0, 0, 0},
{0, 1136, EIF_FALSE, 0, 0, 0},
{0, 1137, EIF_TRUE, 0, 0, 0},
{0, 1138, EIF_FALSE, 0, 0, 0},
{0, 1139, EIF_TRUE, 0, 0, 0},
{0, 1140, EIF_FALSE, 0, 0, 0},
{0, 1141, EIF_FALSE, 0, 0, 0},
{0, 1142, EIF_TRUE, 0, 0, 0},
{0, 1143, EIF_FALSE, 0, 0, 0},
{0, 1144, EIF_FALSE, 0, 0, 0},
{0, 1145, EIF_TRUE, 0, 0, 0},
{0, 1146, EIF_FALSE, 0, 0, 0},
{0, 1147, EIF_FALSE, 0, 0, 0},
{0, 1148, EIF_TRUE, 0, 0, 0},
{0, 1149, EIF_FALSE, 0, 0, 0},
{0, 1150, EIF_FALSE, 0, 0, 0},
{0, 1151, EIF_TRUE, 0, 0, 0},
{0, 1152, EIF_FALSE, 0, 0, 0},
{0, 1153, EIF_TRUE, 0, 0, 0},
{0, 1154, EIF_FALSE, 0, 0, 0},
{0, 1155, EIF_FALSE, 0, 0, 0},
{0, 1156, EIF_TRUE, 0, 0, 0},
{0, 1157, EIF_FALSE, 0, 0, 0},
{0, 1158, EIF_FALSE, 0, 0, 0},
{0, 1159, EIF_TRUE, 0, 0, 0},
{0, 1160, EIF_FALSE, 0, 0, 0},
{0, 1161, EIF_FALSE, 0, 0, 0},
{0, 1162, EIF_TRUE, 0, 0, 0},
{0, 1163, EIF_FALSE, 0, 0, 0},
{0, 1164, EIF_FALSE, 0, 0, 0},
{0, 1165, EIF_TRUE, 0, 0, 0},
{0, 1166, EIF_FALSE, 0, 0, 0},
{0, 1167, EIF_FALSE, 0, 0, 0},
{0, 1168, EIF_TRUE, 0, 0, 0},
{0, 1169, EIF_FALSE, 0, 0, 0},
{0, 1170, EIF_FALSE, 0, 0, 0},
{0, 1171, EIF_TRUE, 0, 0, 0},
{0, 1172, EIF_FALSE, 0, 0, 0},
{0, 1173, EIF_FALSE, 0, 0, 0},
{0, 1174, EIF_TRUE, 0, 0, 0},
{0, 1175, EIF_FALSE, 0, 0, 0},
{0, 1176, EIF_TRUE, 0, 0, 0},
{0, 1177, EIF_FALSE, 0, 0, 0},
{0, 1178, EIF_TRUE, 0, 0, 0},
{0, 1179, EIF_FALSE, 0, 0, 0},
{0, 1180, EIF_FALSE, 0, 0, 0},
{0, 1181, EIF_TRUE, 0, 0, 0},
{0, 1182, EIF_FALSE, 0, 0, 0},
{0, 1183, EIF_TRUE, 0, 0, 0},
{0, 1184, EIF_FALSE, 0, 0, 0},
{0, 1185, EIF_FALSE, 0, 0, 0},
{0, 1186, EIF_TRUE, 0, 0, 0},
{0, 1187, EIF_FALSE, 0, 0, 0},
{0, 1188, EIF_TRUE, 0, 0, 0},
{0, 1189, EIF_FALSE, 0, 0, 0},
{0, 1190, EIF_FALSE, 0, 0, 0},
{0, 1191, EIF_TRUE, 0, 0, 0},
{0, 1192, EIF_FALSE, 0, 0, 0},
{0, 1193, EIF_FALSE, 0, 0, 0},
{0, 1194, EIF_TRUE, 0, 0, 0},
{0, 1195, EIF_FALSE, 0, 0, 0},
{0, 1196, EIF_TRUE, 0, 0, 0},
{0, 1197, EIF_FALSE, 0, 0, 0},
{0, 1198, EIF_FALSE, 0, 0, 0},
{0, 1199, EIF_TRUE, 0, 0, 0},
{0, 1200, EIF_FALSE, 0, 0, 0},
{0, 1201, EIF_FALSE, 0, 0, 0},
{0, 1202, EIF_TRUE, 0, 0, 0},
{0, 1203, EIF_FALSE, 0, 0, 0},
{0, 1204, EIF_FALSE, 0, 0, 0},
{0, 1205, EIF_TRUE, 0, 0, 0},
{0, 1206, EIF_FALSE, 0, 0, 0},
{0, 1207, EIF_FALSE, 0, 0, 0},
{0, 1208, EIF_TRUE, 0, 0, 0},
{0, 1209, EIF_FALSE, 0, 0, 0},
{0, 1210, EIF_FALSE, 0, 0, 0},
{0, 1211, EIF_TRUE, 0, 0, 0},
{0, 1212, EIF_FALSE, 0, 0, 0},
{0, 1213, EIF_TRUE, 0, 0, 0},
{0, 1214, EIF_FALSE, 0, 0, 0},
{0, 1215, EIF_FALSE, 0, 0, 0},
{0, 1216, EIF_FALSE, 0, 0, 0},
{0, 1217, EIF_FALSE, 0, 0, 0},
{0, 1218, EIF_FALSE, 0, 0, 0},
{0, 1219, EIF_FALSE, 0, 0, 0},
{0, 1220, EIF_FALSE, 0, 0, 0},
{0, 1221, EIF_FALSE, 0, 0, 0},
{0, 1222, EIF_FALSE, 0, 0, 0},
{0, 1223, EIF_FALSE, 0, 0, 0},
{0, 1224, EIF_FALSE, 0, 0, 0},
{0, 1225, EIF_FALSE, 0, 0, 0},
{0, 1226, EIF_FALSE, 0, 0, 0},
{0, 1227, EIF_FALSE, 0, 0, 0},
{0, 1228, EIF_FALSE, 0, 0, 0},
{0, 1229, EIF_FALSE, 0, 0, 0},
{0, 1230, EIF_FALSE, 0, 0, 0},
{0, 1231, EIF_FALSE, 0, 0, 0},
{0, 1232, EIF_FALSE, 0, 0, 0},
{0, 1233, EIF_FALSE, 0, 0, 0},
{0, 1234, EIF_FALSE, 0, 0, 0},
{0, 1235, EIF_FALSE, 0, 0, 0},
{0, 1236, EIF_FALSE, 0, 0, 0},
{0, 1237, EIF_FALSE, 0, 0, 0},
{0, 1238, EIF_FALSE, 0, 0, 0},
{0, 1239, EIF_FALSE, 0, 0, 0},
{0, 1240, EIF_FALSE, 0, 0, 0},
{0, 1241, EIF_FALSE, 0, 0, 0},
{0, 1242, EIF_FALSE, 0, 0, 0},
{0, 1243, EIF_FALSE, 0, 0, 0},
{0, 1244, EIF_FALSE, 0, 0, 0},
{0, 1245, EIF_FALSE, 0, 0, 0},
{0, 1246, EIF_FALSE, 0, 0, 0},
{0, 1247, EIF_FALSE, 0, 0, 0},
{0, 1248, EIF_FALSE, 0, 0, 0},
{0, 1249, EIF_FALSE, 0, 0, 0},
{0, 1250, EIF_FALSE, 0, 0, 0},
{0, 1251, EIF_TRUE, 0, 0, 0},
{0, 1252, EIF_FALSE, 0, 0, 0},
{0, 1253, EIF_FALSE, 0, 0, 0},
{0, 1254, EIF_FALSE, 0, 0, 0},
{0, 1255, EIF_FALSE, 0, 0, 0},
{0, 1256, EIF_FALSE, 0, 0, 0},
{0, 1257, EIF_FALSE, 0, 0, 0},
{0, 1258, EIF_TRUE, 0, 0, 0},
{0, 1259, EIF_FALSE, 0, 0, 0},
{0, 1260, EIF_FALSE, 0, 0, 0},
{0, 1261, EIF_TRUE, 0, 0, 0},
{0, 1262, EIF_FALSE, 0, 0, 0},
{0, 1263, EIF_FALSE, 0, 0, 0},
{0, 1264, EIF_FALSE, 0, 0, 0},
{0, 1265, EIF_TRUE, 0, 0, 0},
{0, 1266, EIF_FALSE, 0, 0, 0},
{0, 1267, EIF_FALSE, 0, 0, 0},
{0, 1268, EIF_FALSE, 0, 0, 0},
{0, 1269, EIF_FALSE, 0, 0, 0},
{0, 1270, EIF_FALSE, 0, 0, 0},
{0, 1271, EIF_FALSE, 0, 0, 0},
{0, 1272, EIF_FALSE, 0, 0, 0},
{0, 1273, EIF_FALSE, 0, 0, 0},
{0, 1274, EIF_TRUE, 0, 0, 0},
{0, 1275, EIF_FALSE, 0, 0, 0},
{0, 1276, EIF_FALSE, 0, 0, 0},
{0, 1277, EIF_FALSE, 0, 0, 0},
{0, 1278, EIF_FALSE, 0, 0, 0},
{0, 1279, EIF_FALSE, 0, 0, 0},
{0, 1280, EIF_FALSE, 0, 0, 0},
{0, 1281, EIF_FALSE, 0, 0, 0},
{0, 1282, EIF_TRUE, 0, 0, 0},
{0, 1283, EIF_FALSE, 0, 0, 0},
{0, 1284, EIF_FALSE, 0, 0, 0},
{0, 1285, EIF_FALSE, 0, 0, 0},
{0, 1286, EIF_TRUE, 0, 0, 0},
{0, 1287, EIF_FALSE, 0, 0, 0},
{0, 1288, EIF_FALSE, 0, 0, 0},
{0, 1289, EIF_FALSE, 0, 0, 0},
{0, 1290, EIF_TRUE, 0, 0, 0},
{0, 1291, EIF_FALSE, 0, 0, 0},
{0, 1292, EIF_FALSE, 0, 0, 0},
{0, 1293, EIF_FALSE, 0, 0, 0},
{0, 1294, EIF_TRUE, 0, 0, 0},
{0, 1295, EIF_FALSE, 0, 0, 0},
{0, 1296, EIF_FALSE, 0, 0, 0},
{0, 1297, EIF_FALSE, 0, 0, 0},
{0, 1298, EIF_TRUE, 0, 0, 0},
{0, 1299, EIF_FALSE, 0, 0, 0},
{0, 1300, EIF_FALSE, 0, 0, 0},
{0, 1301, EIF_FALSE, 0, 0, 0},
{0, 1302, EIF_FALSE, 0, 0, 0},
{0, 1303, EIF_TRUE, 0, 0, 0},
{0, 1304, EIF_FALSE, 0, 0, 0},
{0, 1305, EIF_FALSE, 0, 0, 0},
{0, 1306, EIF_FALSE, 0, 0, 0},
{0, 1307, EIF_FALSE, 0, 0, 0},
{0, 1308, EIF_FALSE, 0, 0, 0},
{0, 1309, EIF_FALSE, 0, 0, 0},
{0, 1310, EIF_TRUE, 0, 0, 0},
{0, 1311, EIF_FALSE, 0, 0, 0},
{0, 1312, EIF_FALSE, 0, 0, 0},
{0, 1313, EIF_TRUE, 0, 0, 0},
{0, 1314, EIF_FALSE, 0, 0, 0},
{0, 1315, EIF_FALSE, 0, 0, 0},
{0, 1316, EIF_FALSE, 0, 0, 0},
{0, 1317, EIF_FALSE, 0, 0, 0},
{0, 1318, EIF_TRUE, 0, 0, 0},
{0, 1319, EIF_FALSE, 0, 0, 0},
{0, 1320, EIF_FALSE, 0, 0, 0},
{0, 1321, EIF_FALSE, 0, 0, 0},
{0, 1322, EIF_TRUE, 0, 0, 0},
{0, 1323, EIF_FALSE, 0, 0, 0},
{0, 1324, EIF_FALSE, 0, 0, 0},
{0, 1325, EIF_FALSE, 0, 0, 0},
{0, 1326, EIF_FALSE, 0, 0, 0},
{0, 1327, EIF_TRUE, 0, 0, 0},
{0, 1328, EIF_FALSE, 0, 0, 0},
{0, 1329, EIF_FALSE, 0, 0, 0},
{0, 1330, EIF_FALSE, 0, 0, 0},
{0, 1331, EIF_FALSE, 0, 0, 0},
{0, 1332, EIF_FALSE, 0, 0, 0},
{0, 1333, EIF_FALSE, 0, 0, 0},
{0, 1334, EIF_FALSE, 0, 0, 0},
{0, 1335, EIF_FALSE, 0, 0, 0},
{0, 1336, EIF_FALSE, 0, 0, 0},
{0, 1337, EIF_FALSE, 0, 0, 0},
{0, 1338, EIF_FALSE, 0, 0, 0},
{0, 1339, EIF_FALSE, 0, 0, 0},
{0, 1340, EIF_FALSE, 0, 0, 0},
{0, 1341, EIF_FALSE, 0, 0, 0},
{0, 1342, EIF_FALSE, 0, 0, 0},
{0, 1343, EIF_TRUE, 0, 0, 0},
{0, 1344, EIF_FALSE, 0, 0, 0},
{0, 1345, EIF_FALSE, 0, 0, 0},
{0, 1346, EIF_FALSE, 0, 0, 0},
{0, 1347, EIF_FALSE, 0, 0, 0},
{0, 1348, EIF_FALSE, 0, 0, 0},
{0, 1349, EIF_TRUE, 0, 0, 0},
{0, 1350, EIF_FALSE, 0, 0, 0},
{0, 1351, EIF_FALSE, 0, 0, 0},
{0, 1352, EIF_FALSE, 0, 0, 0},
{0, 1353, EIF_FALSE, 0, 0, 0},
{0, 1354, EIF_FALSE, 0, 0, 0},
{0, 1355, EIF_FALSE, 0, 0, 0},
{0, 1356, EIF_FALSE, 0, 0, 0},
{0, 1357, EIF_FALSE, 0, 0, 0},
{0, 1358, EIF_FALSE, 0, 0, 0},
{0, 1359, EIF_FALSE, 0, 0, 0},
{0, 1360, EIF_FALSE, 0, 0, 0},
{0, 1361, EIF_FALSE, 0, 0, 0},
{0, 1362, EIF_FALSE, 0, 0, 0},
{0, 1363, EIF_TRUE, 0, 0, 0},
{0, 1364, EIF_FALSE, 0, 0, 0},
{0, 1365, EIF_FALSE, 0, 0, 0},
{0, 1366, EIF_TRUE, 0, 0, 0},
{0, 1367, EIF_FALSE, 0, 0, 0},
{0, 1368, EIF_FALSE, 0, 0, 0},
{0, 1369, EIF_TRUE, 0, 0, 0},
{0, 1370, EIF_FALSE, 0, 0, 0},
{0, 1371, EIF_FALSE, 0, 0, 0},
{0, 1372, EIF_FALSE, 0, 0, 0},
{0, 1373, EIF_TRUE, 0, 0, 0},
{0, 1374, EIF_FALSE, 0, 0, 0},
{0, 1375, EIF_TRUE, 0, 0, 0},
{0, 1376, EIF_FALSE, 0, 0, 0},
{0, 1377, EIF_FALSE, 0, 0, 0},
{0, 1378, EIF_FALSE, 0, 0, 0},
{0, 1379, EIF_FALSE, 0, 0, 0},
{0, 1380, EIF_FALSE, 0, 0, 0},
{0, 1381, EIF_FALSE, 0, 0, 0},
{0, 1382, EIF_FALSE, 0, 0, 0},
{0, 1383, EIF_FALSE, 0, 0, 0},
{0, 1384, EIF_FALSE, 0, 0, 0},
{0, 1385, EIF_TRUE, 0, 0, 0},
{0, 1386, EIF_FALSE, 0, 0, 0},
{0, 1387, EIF_FALSE, 0, 0, 0},
{0, 1388, EIF_FALSE, 0, 0, 0},
{0, 1389, EIF_FALSE, 0, 0, 0},
{0, 1390, EIF_FALSE, 0, 0, 0},
{2628, 1391, EIF_FALSE, 0, 0, 0},
{0, 1392, EIF_TRUE, 0, 0, 0},
{0, 1393, EIF_FALSE, 0, 0, 0},
{0, 1394, EIF_FALSE, 0, 0, 0},
{0, 1395, EIF_FALSE, 0, 0, 0},
{0, 1396, EIF_FALSE, 0, 0, 0},
{0, 1397, EIF_FALSE, 0, 0, 0},
{0, 1398, EIF_TRUE, 0, 0, 0},
{0, 1399, EIF_FALSE, 0, 0, 0},
{0, 1400, EIF_FALSE, 0, 0, 0},
{0, 1401, EIF_FALSE, 0, 0, 0},
{0, 1402, EIF_FALSE, 0, 0, 0},
{0, 1403, EIF_FALSE, 0, 0, 0},
{0, 1404, EIF_TRUE, 0, 0, 0},
{0, 1405, EIF_FALSE, 0, 0, 0},
{0, 1406, EIF_FALSE, 0, 0, 0},
{0, 1407, EIF_TRUE, 0, 0, 0},
{0, 1408, EIF_FALSE, 0, 0, 0},
{0, 1409, EIF_FALSE, 0, 0, 0},
{0, 1410, EIF_FALSE, 0, 0, 0},
{0, 1411, EIF_FALSE, 0, 0, 0},
{0, 1412, EIF_FALSE, 0, 0, 0},
{0, 1413, EIF_FALSE, 0, 0, 0},
{0, 1414, EIF_FALSE, 0, 0, 0},
{0, 1415, EIF_FALSE, 0, 0, 0},
{0, 1416, EIF_FALSE, 0, 0, 0},
{0, 1417, EIF_FALSE, 0, 0, 0},
{0, 1418, EIF_FALSE, 0, 0, 0},
{0, 1419, EIF_FALSE, 0, 0, 0},
{0, 1420, EIF_FALSE, 0, 0, 0},
{0, 1421, EIF_FALSE, 0, 0, 0},
{0, 1422, EIF_FALSE, 0, 0, 0},
{0, 1423, EIF_FALSE, 0, 0, 0},
{0, 1424, EIF_FALSE, 0, 0, 0},
{0, 1425, EIF_FALSE, 0, 0, 0},
{0, 1426, EIF_FALSE, 0, 0, 0},
{0, 1427, EIF_FALSE, 0, 0, 0},
{0, 1428, EIF_FALSE, 0, 0, 0},
{0, 1429, EIF_FALSE, 0, 0, 0},
{0, 1430, EIF_FALSE, 0, 0, 0},
{0, 1431, EIF_FALSE, 0, 0, 0},
{0, 1432, EIF_FALSE, 0, 0, 0},
{0, 1433, EIF_FALSE, 0, 0, 0},
{0, 1434, EIF_FALSE, 0, 0, 0},
{0, 1435, EIF_FALSE, 0, 0, 0},
{0, 1436, EIF_FALSE, 0, 0, 0},
{0, 1437, EIF_FALSE, 0, 0, 0},
{0, 1438, EIF_FALSE, 0, 0, 0},
{0, 1439, EIF_FALSE, 0, 0, 0},
{0, 1440, EIF_FALSE, 0, 0, 0},
{0, 1441, EIF_FALSE, 0, 0, 0},
{0, 1442, EIF_FALSE, 0, 0, 0},
{0, 1443, EIF_FALSE, 0, 0, 0},
{0, 1444, EIF_FALSE, 0, 0, 0},
{0, 1445, EIF_FALSE, 0, 0, 0},
{0, 1446, EIF_FALSE, 0, 0, 0},
{0, 1447, EIF_FALSE, 0, 0, 0},
{0, 1448, EIF_FALSE, 0, 0, 0},
{0, 1449, EIF_FALSE, 0, 0, 0},
{0, 1450, EIF_FALSE, 0, 0, 0},
{0, 1451, EIF_FALSE, 0, 0, 0},
{0, 1452, EIF_FALSE, 0, 0, 0},
{0, 1453, EIF_FALSE, 0, 0, 0},
{0, 1454, EIF_FALSE, 0, 0, 0},
{0, 1455, EIF_FALSE, 0, 0, 0},
{0, 1456, EIF_FALSE, 0, 0, 0},
{0, 1457, EIF_FALSE, 0, 0, 0},
{0, 1458, EIF_FALSE, 0, 0, 0},
{0, 1459, EIF_FALSE, 0, 0, 0},
{0, 1460, EIF_FALSE, 0, 0, 0},
{0, 1461, EIF_FALSE, 0, 0, 0},
{0, 1462, EIF_FALSE, 0, 0, 0},
{0, 1463, EIF_FALSE, 0, 0, 0},
{0, 1464, EIF_FALSE, 0, 0, 0},
{0, 1465, EIF_FALSE, 0, 0, 0},
{0, 1466, EIF_FALSE, 0, 0, 0},
{0, 1467, EIF_FALSE, 0, 0, 0},
{0, 1468, EIF_FALSE, 0, 0, 0},
{0, 1469, EIF_FALSE, 0, 0, 0},
{0, 1470, EIF_FALSE, 0, 0, 0},
{0, 1471, EIF_FALSE, 0, 0, 0},
{0, 1472, EIF_FALSE, 0, 0, 0},
{0, 1473, EIF_FALSE, 0, 0, 0},
{0, 1474, EIF_FALSE, 0, 0, 0},
{0, 1475, EIF_FALSE, 0, 0, 0},
{0, 1476, EIF_FALSE, 0, 0, 0},
{0, 1477, EIF_FALSE, 0, 0, 0},
{0, 1478, EIF_FALSE, 0, 0, 0},
{0, 1479, EIF_FALSE, 0, 0, 0},
{0, 1480, EIF_FALSE, 0, 0, 0},
{0, 1481, EIF_FALSE, 0, 0, 0},
{0, 1482, EIF_FALSE, 0, 0, 0},
{0, 1483, EIF_FALSE, 0, 0, 0},
{0, 1484, EIF_FALSE, 0, 0, 0},
{0, 1485, EIF_FALSE, 0, 0, 0},
{0, 1486, EIF_FALSE, 0, 0, 0},
{0, 1487, EIF_FALSE, 0, 0, 0},
{0, 1488, EIF_FALSE, 0, 0, 0},
{0, 1489, EIF_FALSE, 0, 0, 0},
{0, 1490, EIF_FALSE, 0, 0, 0},
{0, 1491, EIF_FALSE, 0, 0, 0},
{0, 1492, EIF_FALSE, 0, 0, 0},
{0, 1493, EIF_FALSE, 0, 0, 0},
{0, 1494, EIF_FALSE, 0, 0, 0},
{0, 1495, EIF_FALSE, 0, 0, 0},
{0, 1496, EIF_FALSE, 0, 0, 0},
{0, 1497, EIF_FALSE, 0, 0, 0},
{0, 1498, EIF_FALSE, 0, 0, 0},
{0, 1499, EIF_FALSE, 0, 0, 0},
{0, 1500, EIF_FALSE, 0, 0, 0},
{0, 1501, EIF_FALSE, 0, 0, 0},
{0, 1502, EIF_FALSE, 0, 0, 0},
{0, 1503, EIF_FALSE, 0, 0, 0},
{0, 1504, EIF_FALSE, 0, 0, 0},
{0, 1505, EIF_FALSE, 0, 0, 0},
{0, 1506, EIF_FALSE, 0, 0, 0},
{0, 1507, EIF_FALSE, 0, 0, 0},
{0, 1508, EIF_FALSE, 0, 0, 0},
{0, 1509, EIF_FALSE, 0, 0, 0},
{0, 1510, EIF_FALSE, 0, 0, 0},
{0, 1511, EIF_FALSE, 0, 0, 0},
{0, 1512, EIF_FALSE, 0, 0, 0},
{0, 1513, EIF_FALSE, 0, 0, 0},
{0, 1514, EIF_FALSE, 0, 0, 0},
{0, 1515, EIF_FALSE, 0, 0, 0},
{0, 1516, EIF_FALSE, 0, 0, 0},
{0, 1517, EIF_FALSE, 0, 0, 0},
{0, 1518, EIF_FALSE, 0, 0, 0},
{0, 1519, EIF_FALSE, 0, 0, 0},
{0, 1520, EIF_FALSE, 0, 0, 0},
{0, 1521, EIF_FALSE, 0, 0, 0},
{0, 1522, EIF_FALSE, 0, 0, 0},
{0, 1523, EIF_FALSE, 0, 0, 0},
{0, 1524, EIF_FALSE, 0, 0, 0},
{0, 1525, EIF_FALSE, 0, 0, 0},
{0, 1526, EIF_FALSE, 0, 0, 0},
{0, 1527, EIF_FALSE, 0, 0, 0},
{0, 1528, EIF_FALSE, 0, 0, 0},
{0, 1529, EIF_FALSE, 0, 0, 0},
{0, 1530, EIF_FALSE, 0, 0, 0},
{0, 1531, EIF_FALSE, 0, 0, 0},
{0, 1532, EIF_FALSE, 0, 0, 0},
{0, 1533, EIF_FALSE, 0, 0, 0},
{0, 1534, EIF_FALSE, 0, 0, 0},
{0, 1535, EIF_FALSE, 0, 0, 0},
{0, 1536, EIF_FALSE, 0, 0, 0},
{0, 1537, EIF_FALSE, 0, 0, 0},
{0, 1538, EIF_FALSE, 0, 0, 0},
{0, 1539, EIF_FALSE, 0, 0, 0},
{0, 1540, EIF_FALSE, 0, 0, 0},
{0, 1541, EIF_FALSE, 0, 0, 0},
{0, 1542, EIF_FALSE, 0, 0, 0},
{0, 1543, EIF_FALSE, 0, 0, 0},
{0, 1544, EIF_FALSE, 0, 0, 0},
{0, 1545, EIF_FALSE, 0, 0, 0},
{0, 1546, EIF_FALSE, 0, 0, 0},
{0, 1547, EIF_FALSE, 0, 0, 0},
{0, 1548, EIF_FALSE, 0, 0, 0},
{0, 1549, EIF_FALSE, 0, 0, 0},
{0, 1550, EIF_FALSE, 0, 0, 0},
{0, 1551, EIF_FALSE, 0, 0, 0},
{0, 1552, EIF_FALSE, 0, 0, 0},
{0, 1553, EIF_FALSE, 0, 0, 0},
{0, 1554, EIF_FALSE, 0, 0, 0},
{0, 1555, EIF_FALSE, 0, 0, 0},
{0, 1556, EIF_FALSE, 0, 0, 0},
{0, 1557, EIF_FALSE, 0, 0, 0},
{0, 1558, EIF_FALSE, 0, 0, 0},
{0, 1559, EIF_FALSE, 0, 0, 0},
{0, 1560, EIF_FALSE, 0, 0, 0},
{0, 1561, EIF_FALSE, 0, 0, 0},
{0, 1562, EIF_FALSE, 0, 0, 0},
{0, 1563, EIF_FALSE, 0, 0, 0},
{0, 1564, EIF_FALSE, 0, 0, 0},
{0, 1565, EIF_FALSE, 0, 0, 0},
{0, 1566, EIF_FALSE, 0, 0, 0},
{0, 1567, EIF_FALSE, 0, 0, 0},
{0, 1568, EIF_FALSE, 0, 0, 0},
{0, 1569, EIF_FALSE, 0, 0, 0},
{0, 1570, EIF_FALSE, 0, 0, 0},
{0, 1571, EIF_FALSE, 0, 0, 0},
{0, 1572, EIF_TRUE, 0, 0, 0},
{0, 1573, EIF_FALSE, 0, 0, 0},
{0, 1574, EIF_FALSE, 0, 0, 0},
{0, 1575, EIF_TRUE, 0, 0, 0},
{0, 1576, EIF_FALSE, 0, 0, 0},
{0, 1577, EIF_FALSE, 0, 0, 0},
{0, 1578, EIF_FALSE, 0, 0, 0},
{0, 1579, EIF_FALSE, 0, 0, 0},
{0, 1580, EIF_FALSE, 0, 0, 0},
{0, 1581, EIF_FALSE, 0, 0, 0},
{0, 1582, EIF_FALSE, 0, 0, 0},
{0, 1583, EIF_FALSE, 0, 0, 0},
{0, 1584, EIF_FALSE, 0, 0, 0},
{0, 1585, EIF_FALSE, 0, 0, 0},
{0, 1586, EIF_FALSE, 0, 0, 0},
{0, 1587, EIF_FALSE, 0, 0, 0},
{0, 1588, EIF_FALSE, 0, 0, 0},
{0, 1589, EIF_FALSE, 0, 0, 0},
{0, 1590, EIF_FALSE, 0, 0, 0},
{0, 1591, EIF_FALSE, 0, 0, 0},
{0, 1592, EIF_FALSE, 0, 0, 0},
{0, 1593, EIF_FALSE, 0, 0, 0},
{0, 1594, EIF_FALSE, 0, 0, 0},
{0, 1595, EIF_FALSE, 0, 0, 0},
{0, 1596, EIF_FALSE, 0, 0, 0},
{0, 1597, EIF_FALSE, 0, 0, 0},
{0, 1598, EIF_FALSE, 0, 0, 0},
{0, 1599, EIF_FALSE, 0, 0, 0},
{0, 1600, EIF_FALSE, 0, 0, 0},
{0, 1601, EIF_FALSE, 0, 0, 0},
{0, 1602, EIF_FALSE, 0, 0, 0},
{0, 1603, EIF_FALSE, 0, 0, 0},
{0, 1604, EIF_FALSE, 0, 0, 0},
{0, 1605, EIF_FALSE, 0, 0, 0},
{0, 1606, EIF_FALSE, 0, 0, 0},
{0, 1607, EIF_FALSE, 0, 0, 0},
{0, 1608, EIF_FALSE, 0, 0, 0},
{0, 1609, EIF_FALSE, 0, 0, 0},
{0, 1610, EIF_FALSE, 0, 0, 0},
{0, 1611, EIF_FALSE, 0, 0, 0},
{0, 1612, EIF_FALSE, 0, 0, 0},
{0, 1613, EIF_FALSE, 0, 0, 0},
{0, 1614, EIF_FALSE, 0, 0, 0},
{0, 1615, EIF_FALSE, 0, 0, 0},
{0, 1616, EIF_FALSE, 0, 0, 0},
{0, 1617, EIF_FALSE, 0, 0, 0},
{0, 1618, EIF_FALSE, 0, 0, 0},
{0, 1619, EIF_FALSE, 0, 0, 0},
{0, 1620, EIF_FALSE, 0, 0, 0},
{0, 1621, EIF_FALSE, 0, 0, 0},
{0, 1622, EIF_FALSE, 0, 0, 0},
{0, 1623, EIF_FALSE, 0, 0, 0},
{0, 1624, EIF_FALSE, 0, 0, 0},
{0, 1625, EIF_FALSE, 0, 0, 0},
{0, 1626, EIF_FALSE, 0, 0, 0},
{0, 1627, EIF_FALSE, 0, 0, 0},
{0, 1628, EIF_FALSE, 0, 0, 0},
{0, 1629, EIF_FALSE, 0, 0, 0},
{0, 1630, EIF_FALSE, 0, 0, 0},
{0, 1631, EIF_FALSE, 0, 0, 0},
{0, 1632, EIF_FALSE, 0, 0, 0},
{0, 1633, EIF_FALSE, 0, 0, 0},
{0, 1634, EIF_FALSE, 0, 0, 0},
{0, 1635, EIF_FALSE, 0, 0, 0},
{0, 1636, EIF_FALSE, 0, 0, 0},
{0, 1637, EIF_FALSE, 0, 0, 0},
{0, 1638, EIF_FALSE, 0, 0, 0},
{0, 1639, EIF_FALSE, 0, 0, 0},
{0, 1640, EIF_FALSE, 0, 0, 0},
{0, 1641, EIF_FALSE, 0, 0, 0},
{0, 1642, EIF_FALSE, 0, 0, 0},
{0, 1643, EIF_FALSE, 0, 0, 0},
{0, 1644, EIF_FALSE, 0, 0, 0},
{0, 1645, EIF_FALSE, 0, 0, 0},
{0, 1646, EIF_FALSE, 0, 0, 0},
{0, 1647, EIF_FALSE, 0, 0, 0},
{0, 1648, EIF_FALSE, 0, 0, 0},
{0, 1649, EIF_FALSE, 0, 0, 0},
{0, 1650, EIF_FALSE, 0, 0, 0},
{0, 1651, EIF_FALSE, 0, 0, 0},
{0, 1652, EIF_FALSE, 0, 0, 0},
{0, 1653, EIF_FALSE, 0, 0, 0},
{0, 1654, EIF_FALSE, 0, 0, 0},
{0, 1655, EIF_FALSE, 0, 0, 0},
{0, 1656, EIF_FALSE, 0, 0, 0},
{0, 1657, EIF_FALSE, 0, 0, 0},
{0, 1658, EIF_FALSE, 0, 0, 0},
{0, 1659, EIF_FALSE, 0, 0, 0},
{0, 1660, EIF_FALSE, 0, 0, 0},
{0, 1661, EIF_FALSE, 0, 0, 0},
{0, 1662, EIF_FALSE, 0, 0, 0},
{0, 1663, EIF_FALSE, 0, 0, 0},
{0, 1664, EIF_FALSE, 0, 0, 0},
{0, 1665, EIF_FALSE, 0, 0, 0},
{0, 1666, EIF_FALSE, 0, 0, 0},
{0, 1667, EIF_FALSE, 0, 0, 0},
{0, 1668, EIF_FALSE, 0, 0, 0},
{0, 1669, EIF_FALSE, 0, 0, 0},
{0, 1670, EIF_FALSE, 0, 0, 0},
{0, 1671, EIF_FALSE, 0, 0, 0},
{0, 1672, EIF_FALSE, 0, 0, 0},
{0, 1673, EIF_FALSE, 0, 0, 0},
{0, 1674, EIF_FALSE, 0, 0, 0},
{0, 1675, EIF_FALSE, 0, 0, 0},
{0, 1676, EIF_FALSE, 0, 0, 0},
{0, 1677, EIF_FALSE, 0, 0, 0},
{0, 1678, EIF_FALSE, 0, 0, 0},
{0, 1679, EIF_FALSE, 0, 0, 0},
{0, 1680, EIF_FALSE, 0, 0, 0},
{0, 1681, EIF_FALSE, 0, 0, 0},
{0, 1682, EIF_FALSE, 0, 0, 0},
{0, 1683, EIF_FALSE, 0, 0, 0},
{0, 1684, EIF_FALSE, 0, 0, 0},
{0, 1685, EIF_FALSE, 0, 0, 0},
{0, 1686, EIF_FALSE, 0, 0, 0},
{0, 1687, EIF_FALSE, 0, 0, 0},
{0, 1688, EIF_FALSE, 0, 0, 0},
{0, 1689, EIF_FALSE, 0, 0, 0},
{0, 1690, EIF_FALSE, 0, 0, 0},
{0, 1691, EIF_FALSE, 0, 0, 0},
{0, 1692, EIF_FALSE, 0, 0, 0},
{0, 1693, EIF_FALSE, 0, 0, 0},
{0, 1694, EIF_FALSE, 0, 0, 0},
{0, 1695, EIF_FALSE, 0, 0, 0},
{0, 1696, EIF_FALSE, 0, 0, 0},
{0, 1697, EIF_FALSE, 0, 0, 0},
{0, 1698, EIF_FALSE, 0, 0, 0},
{0, 1699, EIF_FALSE, 0, 0, 0},
{0, 1700, EIF_FALSE, 0, 0, 0},
{0, 1701, EIF_FALSE, 0, 0, 0},
{0, 1702, EIF_FALSE, 0, 0, 0},
{0, 1703, EIF_FALSE, 0, 0, 0},
{0, 1704, EIF_FALSE, 0, 0, 0},
{0, 1705, EIF_FALSE, 0, 0, 0},
{0, 1706, EIF_FALSE, 0, 0, 0},
{0, 1707, EIF_FALSE, 0, 0, 0},
{0, 1708, EIF_FALSE, 0, 0, 0},
{0, 1709, EIF_FALSE, 0, 0, 0},
{0, 1710, EIF_FALSE, 0, 0, 0},
{0, 1711, EIF_FALSE, 0, 0, 0},
{0, 1712, EIF_FALSE, 0, 0, 0},
{0, 1713, EIF_FALSE, 0, 0, 0},
{0, 1714, EIF_FALSE, 0, 0, 0},
{0, 1715, EIF_FALSE, 0, 0, 0},
{0, 1716, EIF_FALSE, 0, 0, 0},
{0, 1717, EIF_FALSE, 0, 0, 0},
{0, 1718, EIF_FALSE, 0, 0, 0},
{0, 1719, EIF_FALSE, 0, 0, 0},
{0, 1720, EIF_FALSE, 0, 0, 0},
{0, 1721, EIF_FALSE, 0, 0, 0},
{0, 1722, EIF_FALSE, 0, 0, 0},
{0, 1723, EIF_FALSE, 0, 0, 0},
{0, 1724, EIF_FALSE, 0, 0, 0},
{0, 1725, EIF_FALSE, 0, 0, 0},
{0, 1726, EIF_FALSE, 0, 0, 0},
{0, 1727, EIF_FALSE, 0, 0, 0},
{0, 1728, EIF_FALSE, 0, 0, 0},
{0, 1729, EIF_FALSE, 0, 0, 0},
{0, 1730, EIF_FALSE, 0, 0, 0},
{2314, 1731, EIF_FALSE, 0, 0, 0},
{0, 1732, EIF_FALSE, 0, 0, 0},
{0, 1733, EIF_FALSE, 0, 0, 0},
{0, 1734, EIF_FALSE, 0, 0, 0},
{0, 1735, EIF_FALSE, 0, 0, 0},
{0, 1736, EIF_FALSE, 0, 0, 0},
{0, 1737, EIF_FALSE, 0, 0, 0},
{0, 1738, EIF_FALSE, 0, 0, 0},
{0, 1739, EIF_FALSE, 0, 0, 0},
{0, 1740, EIF_FALSE, 0, 0, 0},
{0, 1741, EIF_FALSE, 0, 0, 0},
{0, 1742, EIF_FALSE, 0, 0, 0},
{0, 1743, EIF_FALSE, 0, 0, 0},
{0, 1744, EIF_FALSE, 0, 0, 0},
{0, 1745, EIF_FALSE, 0, 0, 0},
{0, 1746, EIF_FALSE, 0, 0, 0},
{0, 1747, EIF_FALSE, 0, 0, 0},
{0, 1748, EIF_FALSE, 0, 0, 0},
{0, 1749, EIF_FALSE, 0, 0, 0},
{0, 1750, EIF_FALSE, 0, 0, 0},
{0, 1751, EIF_FALSE, 0, 0, 0},
{0, 1752, EIF_FALSE, 0, 0, 0},
{0, 1753, EIF_TRUE, 0, 0, 0},
{0, 1754, EIF_FALSE, 0, 0, 0},
{0, 1755, EIF_FALSE, 0, 0, 0},
{0, 1756, EIF_TRUE, 0, 0, 0},
{0, 1757, EIF_FALSE, 0, 0, 0},
{0, 1758, EIF_FALSE, 0, 0, 0},
{0, 1759, EIF_FALSE, 0, 0, 0},
{0, 1760, EIF_FALSE, 0, 0, 0},
{0, 1761, EIF_FALSE, 0, 0, 0},
{0, 1762, EIF_FALSE, 0, 0, 0},
{0, 1763, EIF_FALSE, 0, 0, 0},
{0, 1764, EIF_FALSE, 0, 0, 0},
{0, 1765, EIF_FALSE, 0, 0, 0},
{0, 1766, EIF_FALSE, 0, 0, 0},
{0, 1767, EIF_FALSE, 0, 0, 0},
{0, 1768, EIF_FALSE, 0, 0, 0},
{0, 1769, EIF_FALSE, 0, 0, 0},
{0, 1770, EIF_FALSE, 0, 0, 0},
{0, 1771, EIF_TRUE, 0, 0, 0},
{0, 1772, EIF_FALSE, 0, 0, 0},
{0, 1773, EIF_FALSE, 0, 0, 0},
{0, 1774, EIF_FALSE, 0, 0, 0},
{0, 1775, EIF_FALSE, 0, 0, 0},
{0, 1776, EIF_FALSE, 0, 0, 0},
{0, 1777, EIF_FALSE, 0, 0, 0},
{0, 1778, EIF_FALSE, 0, 0, 0},
{0, 1779, EIF_FALSE, 0, 0, 0},
{0, 1780, EIF_FALSE, 0, 0, 0},
{0, 1781, EIF_FALSE, 0, 0, 0},
{0, 1782, EIF_FALSE, 0, 0, 0},
{0, 1783, EIF_FALSE, 0, 0, 0},
{0, 1784, EIF_FALSE, 0, 0, 0},
{0, 1785, EIF_FALSE, 0, 0, 0},
{0, 1786, EIF_TRUE, 0, 0, 0},
{0, 1787, EIF_FALSE, 0, 0, 0},
{0, 1788, EIF_FALSE, 0, 0, 0},
{0, 1789, EIF_TRUE, 0, 0, 0},
{0, 1790, EIF_FALSE, 0, 0, 0},
{0, 1791, EIF_FALSE, 0, 0, 0},
{0, 1792, EIF_FALSE, 0, 0, 0},
{0, 1793, EIF_TRUE, 0, 0, 0},
{0, 1794, EIF_FALSE, 0, 0, 0},
{0, 1795, EIF_FALSE, 0, 0, 0},
{0, 1796, EIF_FALSE, 0, 0, 0},
{0, 1797, EIF_FALSE, 0, 0, 0},
{0, 1798, EIF_FALSE, 0, 0, 0},
{0, 1799, EIF_FALSE, 0, 0, 0},
{0, 1800, EIF_FALSE, 0, 0, 0},
{0, 1801, EIF_FALSE, 0, 0, 0},
{0, 1802, EIF_TRUE, 0, 0, 0},
{0, 1803, EIF_FALSE, 0, 0, 0},
{0, 1804, EIF_FALSE, 0, 0, 0},
{0, 1805, EIF_FALSE, 0, 0, 0},
{0, 1806, EIF_FALSE, 0, 0, 0},
{0, 1807, EIF_FALSE, 0, 0, 0},
{0, 1808, EIF_FALSE, 0, 0, 0},
{0, 1809, EIF_TRUE, 0, 0, 0},
{0, 1810, EIF_FALSE, 0, 0, 0},
{0, 1811, EIF_FALSE, 0, 0, 0},
{0, 1812, EIF_FALSE, 0, 0, 0},
{0, 1813, EIF_FALSE, 0, 0, 0},
{0, 1814, EIF_TRUE, 0, 0, 0},
{0, 1815, EIF_FALSE, 0, 0, 0},
{0, 1816, EIF_FALSE, 0, 0, 0},
{0, 1817, EIF_TRUE, 0, 0, 0},
{0, 1818, EIF_FALSE, 0, 0, 0},
{0, 1819, EIF_FALSE, 0, 0, 0},
{0, 1820, EIF_FALSE, 0, 0, 0},
{0, 1821, EIF_FALSE, 0, 0, 0},
{0, 1822, EIF_FALSE, 0, 0, 0},
{0, 1823, EIF_FALSE, 0, 0, 0},
{0, 1824, EIF_FALSE, 0, 0, 0},
{0, 1825, EIF_FALSE, 0, 0, 0},
{0, 1826, EIF_FALSE, 0, 0, 0},
{0, 1827, EIF_FALSE, 0, 0, 0},
{0, 1828, EIF_FALSE, 0, 0, 0},
{0, 1829, EIF_TRUE, 0, 0, 0},
{0, 1830, EIF_FALSE, 0, 0, 0},
{0, 1831, EIF_FALSE, 0, 0, 0},
{0, 1832, EIF_FALSE, 0, 0, 0},
{0, 1833, EIF_FALSE, 0, 0, 0},
{0, 1834, EIF_FALSE, 0, 0, 0},
{0, 1835, EIF_FALSE, 0, 0, 0},
{0, 1836, EIF_FALSE, 0, 0, 0},
{0, 1837, EIF_FALSE, 0, 0, 0},
{0, 1838, EIF_FALSE, 0, 0, 0},
{0, 1839, EIF_FALSE, 0, 0, 0},
{0, 1840, EIF_FALSE, 0, 0, 0},
{0, 1841, EIF_FALSE, 0, 0, 0},
{0, 1842, EIF_FALSE, 0, 0, 0},
{0, 1843, EIF_FALSE, 0, 0, 0},
{0, 1844, EIF_FALSE, 0, 0, 0},
{0, 1845, EIF_FALSE, 0, 0, 0},
{0, 1846, EIF_FALSE, 0, 0, 0},
{0, 1847, EIF_FALSE, 0, 0, 0},
{0, 1848, EIF_FALSE, 0, 0, 0},
{0, 1849, EIF_FALSE, 0, 0, 0},
{0, 1850, EIF_TRUE, 0, 0, 0},
{0, 1851, EIF_FALSE, 0, 0, 0},
{0, 1852, EIF_FALSE, 0, 0, 0},
{0, 1853, EIF_FALSE, 0, 0, 0},
{0, 1854, EIF_FALSE, 0, 0, 0},
{0, 1855, EIF_FALSE, 0, 0, 0},
{0, 1856, EIF_TRUE, 0, 0, 0},
{0, 1857, EIF_TRUE, 0, 0, 0},
{0, 1858, EIF_FALSE, 0, 0, 0},
{0, 1859, EIF_FALSE, 0, 0, 0},
{0, 1860, EIF_FALSE, 0, 0, 0},
{0, 1861, EIF_FALSE, 0, 0, 0},
{0, 1862, EIF_TRUE, 0, 0, 0},
{0, 1863, EIF_FALSE, 0, 0, 0},
{0, 1864, EIF_FALSE, 0, 0, 0},
{0, 1865, EIF_TRUE, 0, 0, 0},
{0, 1866, EIF_TRUE, 0, 0, 0},
{0, 1867, EIF_FALSE, 0, 0, 0},
{0, 1868, EIF_FALSE, 0, 0, 0},
{0, 1869, EIF_TRUE, 0, 0, 0},
{0, 1870, EIF_TRUE, 0, 0, 0},
{0, 1871, EIF_FALSE, 0, 0, 0},
{0, 1872, EIF_FALSE, 0, 0, 0},
{0, 1873, EIF_FALSE, 0, 0, 0},
{0, 1874, EIF_FALSE, 0, 0, 0},
{0, 1875, EIF_FALSE, 0, 0, 0},
{0, 1876, EIF_FALSE, 0, 0, 0},
{0, 1877, EIF_FALSE, 0, 0, 0},
{0, 1878, EIF_FALSE, 0, 0, 0},
{0, 1879, EIF_FALSE, 0, 0, 0},
{0, 1880, EIF_TRUE, 0, 0, 0},
{0, 1881, EIF_FALSE, 0, 0, 0},
{0, 1882, EIF_FALSE, 0, 0, 0},
{0, 1883, EIF_FALSE, 0, 0, 0},
{0, 1884, EIF_FALSE, 0, 0, 0},
{0, 1885, EIF_FALSE, 0, 0, 0},
{0, 1886, EIF_FALSE, 0, 0, 0},
{0, 1887, EIF_FALSE, 0, 0, 0},
{0, 1888, EIF_FALSE, 0, 0, 0},
{0, 1889, EIF_FALSE, 0, 0, 0},
{0, 1890, EIF_FALSE, 0, 0, 0},
{0, 1891, EIF_FALSE, 0, 0, 0},
{0, 1892, EIF_FALSE, 0, 0, 0},
{0, 1893, EIF_FALSE, 0, 0, 0},
{0, 1894, EIF_FALSE, 0, 0, 0},
{0, 1895, EIF_FALSE, 0, 0, 0},
{0, 1896, EIF_FALSE, 0, 0, 0},
{0, 1897, EIF_TRUE, 0, 0, 0},
{0, 1898, EIF_FALSE, 0, 0, 0},
{0, 1899, EIF_FALSE, 0, 0, 0},
{0, 1900, EIF_FALSE, 0, 0, 0},
{0, 1901, EIF_FALSE, 0, 0, 0},
{0, 1902, EIF_FALSE, 0, 0, 0},
{0, 1903, EIF_TRUE, 0, 0, 0},
{0, 1904, EIF_FALSE, 0, 0, 0},
{0, 1905, EIF_FALSE, 0, 0, 0},
{0, 1906, EIF_FALSE, 0, 0, 0},
{0, 1907, EIF_FALSE, 0, 0, 0},
{0, 1908, EIF_FALSE, 0, 0, 0},
{0, 1909, EIF_FALSE, 0, 0, 0},
{0, 1910, EIF_TRUE, 0, 0, 0},
{0, 1911, EIF_FALSE, 0, 0, 0},
{0, 1912, EIF_FALSE, 0, 0, 0},
{0, 1913, EIF_FALSE, 0, 0, 0},
{0, 1914, EIF_TRUE, 0, 0, 0},
{0, 1915, EIF_FALSE, 0, 0, 0},
{0, 1916, EIF_FALSE, 0, 0, 0},
{0, 1917, EIF_FALSE, 0, 0, 0},
{0, 1918, EIF_FALSE, 0, 0, 0},
{0, 1919, EIF_TRUE, 0, 0, 0},
{0, 1920, EIF_FALSE, 0, 0, 0},
{0, 1921, EIF_FALSE, 0, 0, 0},
{0, 1922, EIF_FALSE, 0, 0, 0},
{0, 1923, EIF_FALSE, 0, 0, 0},
{0, 1924, EIF_FALSE, 0, 0, 0},
{0, 1925, EIF_FALSE, 0, 0, 0},
{0, 1926, EIF_FALSE, 0, 0, 0},
{0, 1927, EIF_FALSE, 0, 0, 0},
{0, 1928, EIF_FALSE, 0, 0, 0},
{0, 1929, EIF_FALSE, 0, 0, 0},
{0, 1930, EIF_FALSE, 0, 0, 0},
{0, 1931, EIF_FALSE, 0, 0, 0},
{0, 1932, EIF_FALSE, 0, 0, 0},
{0, 1933, EIF_FALSE, 0, 0, 0},
{0, 1934, EIF_FALSE, 0, 0, 0},
{0, 1935, EIF_FALSE, 0, 0, 0},
{0, 1936, EIF_FALSE, 0, 0, 0},
{0, 1937, EIF_FALSE, 0, 0, 0},
{0, 1938, EIF_FALSE, 0, 0, 0},
{0, 1939, EIF_FALSE, 0, 0, 0},
{0, 1940, EIF_FALSE, 0, 0, 0},
{0, 1941, EIF_FALSE, 0, 0, 0},
{0, 1942, EIF_FALSE, 0, 0, 0},
{0, 1943, EIF_FALSE, 0, 0, 0},
{0, 1944, EIF_FALSE, 0, 0, 0},
{0, 1945, EIF_FALSE, 0, 0, 0},
{0, 1946, EIF_FALSE, 0, 0, 0},
{0, 1947, EIF_FALSE, 0, 0, 0},
{0, 1948, EIF_FALSE, 0, 0, 0},
{0, 1949, EIF_FALSE, 0, 0, 0},
{0, 1950, EIF_FALSE, 0, 0, 0},
{0, 1951, EIF_FALSE, 0, 0, 0},
{0, 1952, EIF_FALSE, 0, 0, 0},
{0, 1953, EIF_FALSE, 0, 0, 0},
{0, 1954, EIF_FALSE, 0, 0, 0},
{0, 1955, EIF_FALSE, 0, 0, 0},
{0, 1956, EIF_FALSE, 0, 0, 0},
{0, 1957, EIF_FALSE, 0, 0, 0},
{0, 1958, EIF_FALSE, 0, 0, 0},
{0, 1959, EIF_FALSE, 0, 0, 0},
{0, 1960, EIF_FALSE, 0, 0, 0},
{0, 1961, EIF_FALSE, 0, 0, 0},
{0, 1962, EIF_FALSE, 0, 0, 0},
{0, 1963, EIF_TRUE, 0, 0, 0},
{0, 1964, EIF_FALSE, 0, 0, 0},
{0, 1965, EIF_FALSE, 0, 0, 0},
{0, 1966, EIF_FALSE, 0, 0, 0},
{0, 1967, EIF_FALSE, 0, 0, 0},
{0, 1968, EIF_FALSE, 0, 0, 0},
{0, 1969, EIF_FALSE, 0, 0, 0},
{0, 1970, EIF_FALSE, 0, 0, 0},
{0, 1971, EIF_FALSE, 0, 0, 0},
{0, 1972, EIF_FALSE, 0, 0, 0},
{0, 1973, EIF_FALSE, 0, 0, 0},
{0, 1974, EIF_FALSE, 0, 0, 0},
{0, 1975, EIF_FALSE, 0, 0, 0},
{0, 1976, EIF_FALSE, 0, 0, 0},
{0, 1977, EIF_FALSE, 0, 0, 0},
{0, 1978, EIF_FALSE, 0, 0, 0},
{0, 1979, EIF_FALSE, 0, 0, 0},
{0, 1980, EIF_FALSE, 0, 0, 0},
{0, 1981, EIF_FALSE, 0, 0, 0},
{0, 1982, EIF_FALSE, 0, 0, 0},
{0, 1983, EIF_FALSE, 0, 0, 0},
{0, 1984, EIF_FALSE, 0, 0, 0},
{0, 1985, EIF_FALSE, 0, 0, 0},
{0, 1986, EIF_FALSE, 0, 0, 0},
{0, 1987, EIF_FALSE, 0, 0, 0},
{0, 1988, EIF_FALSE, 0, 0, 0},
{0, 1989, EIF_FALSE, 0, 0, 0},
{0, 1990, EIF_FALSE, 0, 0, 0},
{0, 1991, EIF_FALSE, 0, 0, 0},
{0, 1992, EIF_FALSE, 0, 0, 0},
{0, 1993, EIF_FALSE, 0, 0, 0},
{0, 1994, EIF_FALSE, 0, 0, 0},
{0, 1995, EIF_FALSE, 0, 0, 0},
{0, 1996, EIF_FALSE, 0, 0, 0},
{0, 1997, EIF_FALSE, 0, 0, 0},
{0, 1998, EIF_FALSE, 0, 0, 0},
{0, 1999, EIF_FALSE, 0, 0, 0},
{0, 2000, EIF_FALSE, 0, 0, 0},
{0, 2001, EIF_FALSE, 0, 0, 0},
{0, 2002, EIF_FALSE, 0, 0, 0},
{0, 2003, EIF_FALSE, 0, 0, 0},
{0, 2004, EIF_FALSE, 0, 0, 0},
{0, 2005, EIF_FALSE, 0, 0, 0},
{0, 2006, EIF_FALSE, 0, 0, 0},
{0, 2007, EIF_FALSE, 0, 0, 0},
{0, 2008, EIF_FALSE, 0, 0, 0},
{0, 2009, EIF_FALSE, 0, 0, 0},
{0, 2010, EIF_FALSE, 0, 0, 0},
{0, 2011, EIF_FALSE, 0, 0, 0},
{0, 2012, EIF_FALSE, 0, 0, 0},
{0, 2013, EIF_FALSE, 0, 0, 0},
{0, 2014, EIF_FALSE, 0, 0, 0},
{0, 2015, EIF_FALSE, 0, 0, 0},
{0, 2016, EIF_FALSE, 0, 0, 0},
{0, 2017, EIF_FALSE, 0, 0, 0},
{0, 2018, EIF_FALSE, 0, 0, 0},
{0, 2019, EIF_FALSE, 0, 0, 0},
{0, 2020, EIF_FALSE, 0, 0, 0},
{0, 2021, EIF_FALSE, 0, 0, 0},
{0, 2022, EIF_FALSE, 0, 0, 0},
{0, 2023, EIF_FALSE, 0, 0, 0},
{0, 2024, EIF_FALSE, 0, 0, 0},
{0, 2025, EIF_FALSE, 0, 0, 0},
{0, 2026, EIF_FALSE, 0, 0, 0},
{0, 2027, EIF_FALSE, 0, 0, 0},
{0, 2028, EIF_FALSE, 0, 0, 0},
{0, 2029, EIF_FALSE, 0, 0, 0},
{0, 2030, EIF_FALSE, 0, 0, 0},
{0, 2031, EIF_FALSE, 0, 0, 0},
{0, 2032, EIF_FALSE, 0, 0, 0},
{0, 2033, EIF_FALSE, 0, 0, 0},
{0, 2034, EIF_FALSE, 0, 0, 0},
{0, 2035, EIF_FALSE, 0, 0, 0},
{0, 2036, EIF_FALSE, 0, 0, 0},
{0, 2037, EIF_FALSE, 0, 0, 0},
{0, 2038, EIF_FALSE, 0, 0, 0},
{0, 2039, EIF_FALSE, 0, 0, 0},
{0, 2040, EIF_FALSE, 0, 0, 0},
{0, 2041, EIF_FALSE, 0, 0, 0},
{0, 2042, EIF_FALSE, 0, 0, 0},
{0, 2043, EIF_FALSE, 0, 0, 0},
{0, 2044, EIF_FALSE, 0, 0, 0},
{0, 2045, EIF_FALSE, 0, 0, 0},
{0, 2046, EIF_FALSE, 0, 0, 0},
{0, 2047, EIF_FALSE, 0, 0, 0},
{0, 2048, EIF_FALSE, 0, 0, 0},
{0, 2049, EIF_FALSE, 0, 0, 0},
{0, 2050, EIF_FALSE, 0, 0, 0},
{0, 2051, EIF_FALSE, 0, 0, 0},
{0, 2052, EIF_FALSE, 0, 0, 0},
{0, 2053, EIF_FALSE, 0, 0, 0},
{0, 2054, EIF_FALSE, 0, 0, 0},
{0, 2055, EIF_FALSE, 0, 0, 0},
{0, 2056, EIF_FALSE, 0, 0, 0},
{0, 2057, EIF_FALSE, 0, 0, 0},
{0, 2058, EIF_FALSE, 0, 0, 0},
{0, 2059, EIF_FALSE, 0, 0, 0},
{0, 2060, EIF_FALSE, 0, 0, 0},
{0, 2061, EIF_FALSE, 0, 0, 0},
{0, 2062, EIF_FALSE, 0, 0, 0},
{0, 2063, EIF_FALSE, 0, 0, 0},
{0, 2064, EIF_FALSE, 0, 0, 0},
{0, 2065, EIF_FALSE, 0, 0, 0},
{0, 2066, EIF_FALSE, 0, 0, 0},
{0, 2067, EIF_FALSE, 0, 0, 0},
{0, 2068, EIF_FALSE, 0, 0, 0},
{0, 2069, EIF_FALSE, 0, 0, 0},
{0, 2070, EIF_FALSE, 0, 0, 0},
{0, 2071, EIF_FALSE, 0, 0, 0},
{0, 2072, EIF_FALSE, 0, 0, 0},
{0, 2073, EIF_FALSE, 0, 0, 0},
{0, 2074, EIF_FALSE, 0, 0, 0},
{0, 2075, EIF_FALSE, 0, 0, 0},
{0, 2076, EIF_FALSE, 0, 0, 0},
{0, 2077, EIF_FALSE, 0, 0, 0},
{0, 2078, EIF_FALSE, 0, 0, 0},
{0, 2079, EIF_FALSE, 0, 0, 0},
{0, 2080, EIF_FALSE, 0, 0, 0},
{0, 2081, EIF_FALSE, 0, 0, 0},
{0, 2082, EIF_FALSE, 0, 0, 0},
{0, 2083, EIF_FALSE, 0, 0, 0},
{0, 2084, EIF_FALSE, 0, 0, 0},
{0, 2085, EIF_FALSE, 0, 0, 0},
{0, 2086, EIF_FALSE, 0, 0, 0},
{0, 2087, EIF_FALSE, 0, 0, 0},
{0, 2088, EIF_FALSE, 0, 0, 0},
{0, 2089, EIF_FALSE, 0, 0, 0},
{0, 2090, EIF_FALSE, 0, 0, 0},
{0, 2091, EIF_FALSE, 0, 0, 0},
{0, 2092, EIF_FALSE, 0, 0, 0},
{0, 2093, EIF_FALSE, 0, 0, 0},
{0, 2094, EIF_FALSE, 0, 0, 0},
{0, 2095, EIF_FALSE, 0, 0, 0},
{0, 2096, EIF_FALSE, 0, 0, 0},
{0, 2097, EIF_FALSE, 0, 0, 0},
{0, 2098, EIF_FALSE, 0, 0, 0},
{0, 2099, EIF_FALSE, 0, 0, 0},
{0, 2100, EIF_FALSE, 0, 0, 0},
{0, 2101, EIF_FALSE, 0, 0, 0},
{0, 2102, EIF_FALSE, 0, 0, 0},
{0, 2103, EIF_FALSE, 0, 0, 0},
{0, 2104, EIF_FALSE, 0, 0, 0},
{0, 2105, EIF_FALSE, 0, 0, 0},
{0, 2106, EIF_FALSE, 0, 0, 0},
{0, 2107, EIF_FALSE, 0, 0, 0},
{0, 2108, EIF_FALSE, 0, 0, 0},
{0, 2109, EIF_FALSE, 0, 0, 0},
{0, 2110, EIF_FALSE, 0, 0, 0},
{0, 2111, EIF_FALSE, 0, 0, 0},
{0, 2112, EIF_FALSE, 0, 0, 0},
{0, 2113, EIF_FALSE, 0, 0, 0},
{0, 2114, EIF_FALSE, 0, 0, 0},
{0, 2115, EIF_FALSE, 0, 0, 0},
{0, 2116, EIF_FALSE, 0, 0, 0},
{0, 2117, EIF_FALSE, 0, 0, 0},
{0, 2118, EIF_FALSE, 0, 0, 0},
{0, 2119, EIF_FALSE, 0, 0, 0},
{0, 2120, EIF_FALSE, 0, 0, 0},
{0, 2121, EIF_FALSE, 0, 0, 0},
{0, 2122, EIF_FALSE, 0, 0, 0},
{0, 2123, EIF_FALSE, 0, 0, 0},
{0, 2124, EIF_FALSE, 0, 0, 0},
{0, 2125, EIF_FALSE, 0, 0, 0},
{0, 2126, EIF_FALSE, 0, 0, 0},
{0, 2127, EIF_FALSE, 0, 0, 0},
{0, 2128, EIF_FALSE, 0, 0, 0},
{0, 2129, EIF_FALSE, 0, 0, 0},
{0, 2130, EIF_FALSE, 0, 0, 0},
{0, 2131, EIF_FALSE, 0, 0, 0},
{0, 2132, EIF_FALSE, 0, 0, 0},
{0, 2133, EIF_FALSE, 0, 0, 0},
{0, 2134, EIF_FALSE, 0, 0, 0},
{0, 2135, EIF_FALSE, 0, 0, 0},
{0, 2136, EIF_FALSE, 0, 0, 0},
{0, 2137, EIF_FALSE, 0, 0, 0},
{0, 2138, EIF_FALSE, 0, 0, 0},
{0, 2139, EIF_FALSE, 0, 0, 0},
{0, 2140, EIF_FALSE, 0, 0, 0},
{0, 2141, EIF_FALSE, 0, 0, 0},
{0, 2142, EIF_FALSE, 0, 0, 0},
{0, 2143, EIF_FALSE, 0, 0, 0},
{0, 2144, EIF_FALSE, 0, 0, 0},
{0, 2145, EIF_FALSE, 0, 0, 0},
{0, 2146, EIF_FALSE, 0, 0, 0},
{0, 2147, EIF_FALSE, 0, 0, 0},
{0, 2148, EIF_FALSE, 0, 0, 0},
{0, 2149, EIF_FALSE, 0, 0, 0},
{0, 2150, EIF_FALSE, 0, 0, 0},
{0, 2151, EIF_FALSE, 0, 0, 0},
{0, 2152, EIF_FALSE, 0, 0, 0},
{0, 2153, EIF_FALSE, 0, 0, 0},
{0, 2154, EIF_FALSE, 0, 0, 0},
{0, 2155, EIF_FALSE, 0, 0, 0},
{0, 2156, EIF_FALSE, 0, 0, 0},
{0, 2157, EIF_FALSE, 0, 0, 0},
{0, 2158, EIF_FALSE, 0, 0, 0},
{0, 2159, EIF_FALSE, 0, 0, 0},
{0, 2160, EIF_FALSE, 0, 0, 0},
{0, 2161, EIF_FALSE, 0, 0, 0},
{0, 2162, EIF_FALSE, 0, 0, 0},
{0, 2163, EIF_TRUE, 0, 0, 0},
{0, 2164, EIF_FALSE, 0, 0, 0},
{0, 2165, EIF_FALSE, 0, 0, 0},
{0, 2166, EIF_FALSE, 0, 0, 0},
{0, 2167, EIF_FALSE, 0, 0, 0},
{0, 2168, EIF_FALSE, 0, 0, 0},
{0, 2169, EIF_FALSE, 0, 0, 0},
{0, 2170, EIF_FALSE, 0, 0, 0},
{0, 2171, EIF_FALSE, 0, 0, 0},
{0, 2172, EIF_FALSE, 0, 0, 0},
{0, 2173, EIF_FALSE, 0, 0, 0},
{0, 2174, EIF_FALSE, 0, 0, 0},
{0, 2175, EIF_FALSE, 0, 0, 0},
{0, 2176, EIF_FALSE, 0, 0, 0},
{0, 2177, EIF_FALSE, 0, 0, 0},
{0, 2178, EIF_FALSE, 0, 0, 0},
{0, 2179, EIF_FALSE, 0, 0, 0},
{0, 2180, EIF_FALSE, 0, 0, 0},
{0, 2181, EIF_FALSE, 0, 0, 0},
{0, 2182, EIF_FALSE, 0, 0, 0},
{0, 2183, EIF_FALSE, 0, 0, 0},
{0, 2184, EIF_FALSE, 0, 0, 0},
{0, 2185, EIF_FALSE, 0, 0, 0},
{0, 2186, EIF_FALSE, 0, 0, 0},
{0, 2187, EIF_FALSE, 0, 0, 0},
{0, 2188, EIF_FALSE, 0, 0, 0},
{0, 2189, EIF_FALSE, 0, 0, 0},
{0, 2190, EIF_FALSE, 0, 0, 0},
{0, 2191, EIF_FALSE, 0, 0, 0},
{0, 2192, EIF_FALSE, 0, 0, 0},
{0, 2193, EIF_FALSE, 0, 0, 0},
{0, 2194, EIF_FALSE, 0, 0, 0},
{0, 2195, EIF_FALSE, 0, 0, 0},
{0, 2196, EIF_TRUE, 0, 0, 0},
{0, 2197, EIF_FALSE, 0, 0, 0},
{0, 2198, EIF_FALSE, 0, 0, 0},
{0, 2199, EIF_TRUE, 0, 0, 0},
{0, 2200, EIF_FALSE, 0, 0, 0},
{0, 2201, EIF_FALSE, 0, 0, 0},
{0, 2202, EIF_FALSE, 0, 0, 0},
{0, 2203, EIF_TRUE, 0, 0, 0},
{0, 2204, EIF_TRUE, 0, 0, 0},
{0, 2205, EIF_FALSE, 0, 0, 0},
{0, 2206, EIF_FALSE, 0, 0, 0},
{0, 2207, EIF_FALSE, 0, 0, 0},
{0, 2208, EIF_FALSE, 0, 0, 0},
{0, 2209, EIF_TRUE, 0, 0, 0},
{0, 2210, EIF_FALSE, 0, 0, 0},
{0, 2211, EIF_FALSE, 0, 0, 0},
{0, 2212, EIF_FALSE, 0, 0, 0},
{0, 2213, EIF_FALSE, 0, 0, 0},
{0, 2214, EIF_FALSE, 0, 0, 0},
{0, 2215, EIF_FALSE, 0, 0, 0},
{0, 2216, EIF_FALSE, 0, 0, 0},
{0, 2217, EIF_FALSE, 0, 0, 0},
{0, 2218, EIF_FALSE, 0, 0, 0},
{0, 2219, EIF_FALSE, 0, 0, 0},
{0, 2220, EIF_FALSE, 0, 0, 0},
{0, 2221, EIF_FALSE, 0, 0, 0},
{0, 2222, EIF_FALSE, 0, 0, 0},
{0, 2223, EIF_FALSE, 0, 0, 0},
{0, 2224, EIF_TRUE, 0, 0, 0},
{0, 2225, EIF_FALSE, 0, 0, 0},
{0, 2226, EIF_FALSE, 0, 0, 0},
{0, 2227, EIF_FALSE, 0, 0, 0},
{0, 2228, EIF_TRUE, 0, 0, 0},
{0, 2229, EIF_FALSE, 0, 0, 0},
{0, 2230, EIF_FALSE, 0, 0, 0},
{0, 2231, EIF_FALSE, 0, 0, 0},
{0, 2232, EIF_FALSE, 0, 0, 0},
{0, 2233, EIF_FALSE, 0, 0, 0},
{0, 2234, EIF_FALSE, 0, 0, 0},
{0, 2235, EIF_FALSE, 0, 0, 0},
{0, 2236, EIF_TRUE, 0, 0, 0},
{0, 2237, EIF_FALSE, 0, 0, 0},
{0, 2238, EIF_TRUE, 0, 0, 0},
{0, 2239, EIF_FALSE, 0, 0, 0},
{0, 2240, EIF_TRUE, 0, 0, 0},
{0, 2241, EIF_FALSE, 0, 0, 0},
{0, 2242, EIF_FALSE, 0, 0, 0},
{0, 2243, EIF_FALSE, 0, 0, 0},
{0, 2244, EIF_FALSE, 0, 0, 0},
{0, 2245, EIF_FALSE, 0, 0, 0},
{0, 2246, EIF_FALSE, 0, 0, 0},
{0, 2247, EIF_FALSE, 0, 0, 0},
{0, 2248, EIF_FALSE, 0, 0, 0},
{0, 2249, EIF_FALSE, 0, 0, 0},
{0, 2250, EIF_FALSE, 0, 0, 0},
{0, 2251, EIF_FALSE, 0, 0, 0},
{0, 2252, EIF_TRUE, 0, 0, 0},
{0, 2253, EIF_FALSE, 0, 0, 0},
{0, 2254, EIF_FALSE, 0, 0, 0},
{0, 2255, EIF_FALSE, 0, 0, 0},
{0, 2256, EIF_TRUE, 0, 0, 0},
{0, 2257, EIF_FALSE, 0, 0, 0},
{0, 2258, EIF_FALSE, 0, 0, 0},
{0, 2259, EIF_FALSE, 0, 0, 0},
{0, 2260, EIF_TRUE, 0, 0, 0},
{0, 2261, EIF_FALSE, 0, 0, 0},
{0, 2262, EIF_TRUE, 0, 0, 0},
{0, 2263, EIF_FALSE, 0, 0, 0},
{0, 2264, EIF_FALSE, 0, 0, 0},
{0, 2265, EIF_FALSE, 0, 0, 0},
{0, 2266, EIF_FALSE, 0, 0, 0},
{0, 2267, EIF_FALSE, 0, 0, 0},
{0, 2268, EIF_TRUE, 0, 0, 0},
{0, 2269, EIF_FALSE, 0, 0, 0},
{0, 2270, EIF_FALSE, 0, 0, 0},
{0, 2271, EIF_TRUE, 0, 0, 0},
{0, 2272, EIF_FALSE, 0, 0, 0},
{0, 2273, EIF_FALSE, 0, 0, 0},
{0, 2274, EIF_FALSE, 0, 0, 0},
{0, 2275, EIF_FALSE, 0, 0, 0},
{0, 2276, EIF_FALSE, 0, 0, 0},
{0, 2277, EIF_TRUE, 0, 0, 0},
{0, 2278, EIF_FALSE, 0, 0, 0},
{0, 2279, EIF_TRUE, 0, 0, 0},
{0, 2280, EIF_FALSE, 0, 0, 0},
{0, 2281, EIF_FALSE, 0, 0, 0},
{0, 2282, EIF_FALSE, 0, 0, 0},
{0, 2283, EIF_FALSE, 0, 0, 0},
{0, 2284, EIF_FALSE, 0, 0, 0},
{0, 2285, EIF_FALSE, 0, 0, 0},
{0, 2286, EIF_FALSE, 0, 0, 0},
{0, 2287, EIF_FALSE, 0, 0, 0},
{0, 2288, EIF_FALSE, 0, 0, 0},
{0, 2289, EIF_FALSE, 0, 0, 0},
{0, 2290, EIF_FALSE, 0, 0, 0},
{0, 2291, EIF_FALSE, 0, 0, 0},
{0, 2292, EIF_FALSE, 0, 0, 0},
{0, 2293, EIF_TRUE, 0, 0, 0},
{0, 2294, EIF_FALSE, 0, 0, 0},
{0, 2295, EIF_FALSE, 0, 0, 0},
{0, 2296, EIF_FALSE, 0, 0, 0},
{0, 2297, EIF_FALSE, 0, 0, 0},
{0, 2298, EIF_TRUE, 0, 0, 0},
{0, 2299, EIF_FALSE, 0, 0, 0},
{0, 2300, EIF_FALSE, 0, 0, 0},
{0, 2301, EIF_FALSE, 0, 0, 0},
{0, 2302, EIF_FALSE, 0, 0, 0},
{0, 2303, EIF_FALSE, 0, 0, 0},
{0, 2304, EIF_TRUE, 0, 0, 0},
{0, 2305, EIF_FALSE, 0, 0, 0},
{0, 2306, EIF_FALSE, 0, 0, 0},
{0, 2307, EIF_FALSE, 0, 0, 0},
{0, 2308, EIF_FALSE, 0, 0, 0},
{0, 2309, EIF_TRUE, 0, 0, 0},
{0, 2310, EIF_FALSE, 0, 0, 0},
{0, 2311, EIF_FALSE, 0, 0, 0},
{0, 2312, EIF_FALSE, 0, 0, 0},
{0, 2313, EIF_FALSE, 0, 0, 0},
{0, 2314, EIF_FALSE, 0, 0, 0},
{0, 2315, EIF_FALSE, 0, 0, 0},
{0, 2316, EIF_FALSE, 0, 0, 0},
{0, 2317, EIF_TRUE, 0, 0, 0},
{0, 2318, EIF_FALSE, 0, 0, 0},
{0, 2319, EIF_FALSE, 0, 0, 0},
{0, 2320, EIF_FALSE, 0, 0, 0},
{0, 2321, EIF_FALSE, 0, 0, 0},
{0, 2322, EIF_FALSE, 0, 0, 0},
{0, 2323, EIF_FALSE, 0, 0, 0},
{0, 2324, EIF_FALSE, 0, 0, 0},
{0, 2325, EIF_FALSE, 0, 0, 0},
{0, 2326, EIF_FALSE, 0, 0, 0},
{0, 2327, EIF_FALSE, 0, 0, 0},
{0, 2328, EIF_FALSE, 0, 0, 0},
{0, 2329, EIF_FALSE, 0, 0, 0},
{0, 2330, EIF_FALSE, 0, 0, 0},
{0, 2331, EIF_TRUE, 0, 0, 0},
{0, 2332, EIF_FALSE, 0, 0, 0},
{0, 2333, EIF_FALSE, 0, 0, 0},
{0, 2334, EIF_FALSE, 0, 0, 0},
{0, 2335, EIF_FALSE, 0, 0, 0},
{0, 2336, EIF_TRUE, 0, 0, 0},
{0, 2337, EIF_FALSE, 0, 0, 0},
{0, 2338, EIF_FALSE, 0, 0, 0},
{0, 2339, EIF_TRUE, 0, 0, 0},
{0, 2340, EIF_FALSE, 0, 0, 0},
{0, 2341, EIF_FALSE, 0, 0, 0},
{0, 2342, EIF_FALSE, 0, 0, 0},
{0, 2343, EIF_FALSE, 0, 0, 0},
{0, 2344, EIF_FALSE, 0, 0, 0},
{0, 2345, EIF_TRUE, 0, 0, 0},
{0, 2346, EIF_FALSE, 0, 0, 0},
{0, 2347, EIF_TRUE, 0, 0, 0},
{0, 2348, EIF_FALSE, 0, 0, 0},
{0, 2349, EIF_FALSE, 0, 0, 0},
{0, 2350, EIF_FALSE, 0, 0, 0},
{0, 2351, EIF_FALSE, 0, 0, 0},
{0, 2352, EIF_TRUE, 0, 0, 0},
{0, 2353, EIF_FALSE, 0, 0, 0},
{0, 2354, EIF_FALSE, 0, 0, 0},
{0, 2355, EIF_FALSE, 0, 0, 0},
{0, 2356, EIF_FALSE, 0, 0, 0},
{0, 2357, EIF_FALSE, 0, 0, 0},
{0, 2358, EIF_FALSE, 0, 0, 0},
{0, 2359, EIF_FALSE, 0, 0, 0},
{0, 2360, EIF_FALSE, 0, 0, 0},
{0, 2361, EIF_FALSE, 0, 0, 0},
{0, 2362, EIF_FALSE, 0, 0, 0},
{0, 2363, EIF_TRUE, 0, 0, 0},
{0, 2364, EIF_FALSE, 0, 0, 0},
{0, 2365, EIF_FALSE, 0, 0, 0},
{0, 2366, EIF_FALSE, 0, 0, 0},
{0, 2367, EIF_FALSE, 0, 0, 0},
{0, 2368, EIF_FALSE, 0, 0, 0},
{0, 2369, EIF_FALSE, 0, 0, 0},
{0, 2370, EIF_FALSE, 0, 0, 0},
{0, 2371, EIF_TRUE, 0, 0, 0},
{0, 2372, EIF_FALSE, 0, 0, 0},
{0, 2373, EIF_FALSE, 0, 0, 0},
{0, 2374, EIF_FALSE, 0, 0, 0},
{0, 2375, EIF_FALSE, 0, 0, 0},
{0, 2376, EIF_FALSE, 0, 0, 0},
{0, 2377, EIF_FALSE, 0, 0, 0},
{0, 2378, EIF_FALSE, 0, 0, 0},
{0, 2379, EIF_FALSE, 0, 0, 0},
{0, 2380, EIF_FALSE, 0, 0, 0},
{0, 2381, EIF_FALSE, 0, 0, 0},
{0, 2382, EIF_FALSE, 0, 0, 0},
{0, 2383, EIF_FALSE, 0, 0, 0},
{0, 2384, EIF_FALSE, 0, 0, 0},
{0, 2385, EIF_FALSE, 0, 0, 0},
{0, 2386, EIF_FALSE, 0, 0, 0},
{0, 2387, EIF_FALSE, 0, 0, 0},
{0, 2388, EIF_FALSE, 0, 0, 0},
{0, 2389, EIF_FALSE, 0, 0, 0},
{0, 2390, EIF_FALSE, 0, 0, 0},
{0, 2391, EIF_FALSE, 0, 0, 0},
{0, 2392, EIF_FALSE, 0, 0, 0},
{0, 2393, EIF_FALSE, 0, 0, 0},
{0, 2394, EIF_FALSE, 0, 0, 0},
{0, 2395, EIF_FALSE, 0, 0, 0},
{0, 2396, EIF_FALSE, 0, 0, 0},
{0, 2397, EIF_FALSE, 0, 0, 0},
{0, 2398, EIF_FALSE, 0, 0, 0},
{0, 2399, EIF_FALSE, 0, 0, 0},
{0, 2400, EIF_TRUE, 0, 0, 0},
{0, 2401, EIF_FALSE, 0, 0, 0},
{0, 2402, EIF_FALSE, 0, 0, 0},
{0, 2403, EIF_FALSE, 0, 0, 0},
{0, 2404, EIF_FALSE, 0, 0, 0},
{0, 2405, EIF_FALSE, 0, 0, 0},
{0, 2406, EIF_FALSE, 0, 0, 0},
{0, 2407, EIF_FALSE, 0, 0, 0},
{0, 2408, EIF_FALSE, 0, 0, 0},
{0, 2409, EIF_FALSE, 0, 0, 0},
{0, 2410, EIF_FALSE, 0, 0, 0},
{0, 2411, EIF_FALSE, 0, 0, 0},
{0, 2412, EIF_FALSE, 0, 0, 0},
{0, 2413, EIF_FALSE, 0, 0, 0},
{0, 2414, EIF_FALSE, 0, 0, 0},
{0, 2415, EIF_FALSE, 0, 0, 0},
{0, 2416, EIF_FALSE, 0, 0, 0},
{0, 2417, EIF_FALSE, 0, 0, 0},
{0, 2418, EIF_FALSE, 0, 0, 0},
{0, 2419, EIF_FALSE, 0, 0, 0},
{0, 2420, EIF_FALSE, 0, 0, 0},
{0, 2421, EIF_FALSE, 0, 0, 0},
{0, 2422, EIF_FALSE, 0, 0, 0},
{0, 2423, EIF_FALSE, 0, 0, 0},
{0, 2424, EIF_FALSE, 0, 0, 0},
{0, 2425, EIF_FALSE, 0, 0, 0},
{0, 2426, EIF_FALSE, 0, 0, 0},
{0, 2427, EIF_FALSE, 0, 0, 0},
{0, 2428, EIF_FALSE, 0, 0, 0},
{0, 2429, EIF_FALSE, 0, 0, 0},
{0, 2430, EIF_FALSE, 0, 0, 0},
{0, 2431, EIF_FALSE, 0, 0, 0},
{0, 2432, EIF_FALSE, 0, 0, 0},
{0, 2433, EIF_FALSE, 0, 0, 0},
{0, 2434, EIF_FALSE, 0, 0, 0},
{0, 2435, EIF_FALSE, 0, 0, 0},
{0, 2436, EIF_FALSE, 0, 0, 0},
{0, 2437, EIF_FALSE, 0, 0, 0},
{0, 2438, EIF_FALSE, 0, 0, 0},
{0, 2439, EIF_FALSE, 0, 0, 0},
{0, 2440, EIF_FALSE, 0, 0, 0},
{0, 2441, EIF_FALSE, 0, 0, 0},
{0, 2442, EIF_FALSE, 0, 0, 0},
{0, 2443, EIF_FALSE, 0, 0, 0},
{0, 2444, EIF_FALSE, 0, 0, 0},
{0, 2445, EIF_FALSE, 0, 0, 0},
{0, 2446, EIF_FALSE, 0, 0, 0},
{0, 2447, EIF_FALSE, 0, 0, 0},
{0, 2448, EIF_FALSE, 0, 0, 0},
{0, 2449, EIF_FALSE, 0, 0, 0},
{0, 2450, EIF_FALSE, 0, 0, 0},
{0, 2451, EIF_FALSE, 0, 0, 0},
{0, 2452, EIF_FALSE, 0, 0, 0},
{0, 2453, EIF_FALSE, 0, 0, 0},
{0, 2454, EIF_FALSE, 0, 0, 0},
{0, 2455, EIF_FALSE, 0, 0, 0},
{0, 2456, EIF_FALSE, 0, 0, 0},
{0, 2457, EIF_FALSE, 0, 0, 0},
{0, 2458, EIF_FALSE, 0, 0, 0},
{0, 2459, EIF_TRUE, 0, 0, 0},
{0, 2460, EIF_FALSE, 0, 0, 0},
{0, 2461, EIF_FALSE, 0, 0, 0},
{0, 2462, EIF_FALSE, 0, 0, 0},
{0, 2463, EIF_TRUE, 0, 0, 0},
{0, 2464, EIF_FALSE, 0, 0, 0},
{0, 2465, EIF_TRUE, 0, 0, 0},
{0, 2466, EIF_FALSE, 0, 0, 0},
{0, 2467, EIF_TRUE, 0, 0, 0},
{0, 2468, EIF_FALSE, 0, 0, 0},
{0, 2469, EIF_FALSE, 0, 0, 0},
{0, 2470, EIF_TRUE, 0, 0, 0},
{0, 2471, EIF_FALSE, 0, 0, 0},
{0, 2472, EIF_FALSE, 0, 0, 0},
{0, 2473, EIF_FALSE, 0, 0, 0},
{0, 2474, EIF_FALSE, 0, 0, 0},
{0, 2475, EIF_TRUE, 0, 0, 0},
{0, 2476, EIF_FALSE, 0, 0, 0},
{0, 2477, EIF_TRUE, 0, 0, 0},
{0, 2478, EIF_FALSE, 0, 0, 0},
{0, 2479, EIF_TRUE, 0, 0, 0},
{0, 2480, EIF_FALSE, 0, 0, 0},
{0, 2481, EIF_FALSE, 0, 0, 0},
{0, 2482, EIF_TRUE, 0, 0, 0},
{0, 2483, EIF_FALSE, 0, 0, 0},
{0, 2484, EIF_FALSE, 0, 0, 0},
{0, 2485, EIF_TRUE, 0, 0, 0},
{0, 2486, EIF_FALSE, 0, 0, 0},
{0, 2487, EIF_FALSE, 0, 0, 0},
{0, 2488, EIF_FALSE, 0, 0, 0},
{0, 2489, EIF_FALSE, 0, 0, 0},
{0, 2490, EIF_FALSE, 0, 0, 0},
{0, 2491, EIF_FALSE, 0, 0, 0},
{0, 2492, EIF_FALSE, 0, 0, 0},
{0, 2493, EIF_FALSE, 0, 0, 0},
{0, 2494, EIF_FALSE, 0, 0, 0},
{0, 2495, EIF_TRUE, 0, 0, 0},
{0, 2496, EIF_FALSE, 0, 0, 0},
{0, 2497, EIF_FALSE, 0, 0, 0},
{0, 2498, EIF_FALSE, 0, 0, 0},
{0, 2499, EIF_FALSE, 0, 0, 0},
{0, 2500, EIF_FALSE, 0, 0, 0},
{0, 2501, EIF_TRUE, 0, 0, 0},
{0, 2502, EIF_TRUE, 0, 0, 0},
{0, 2503, EIF_FALSE, 0, 0, 0},
{0, 2504, EIF_FALSE, 0, 0, 0},
{0, 2505, EIF_TRUE, 0, 0, 0},
{0, 2506, EIF_FALSE, 0, 0, 0},
{0, 2507, EIF_FALSE, 0, 0, 0},
{0, 2508, EIF_FALSE, 0, 0, 0},
{0, 2509, EIF_TRUE, 0, 0, 0},
{0, 2510, EIF_FALSE, 0, 0, 0},
{0, 2511, EIF_FALSE, 0, 0, 0},
{0, 2512, EIF_FALSE, 0, 0, 0},
{0, 2513, EIF_TRUE, 0, 0, 0},
{0, 2514, EIF_FALSE, 0, 0, 0},
{0, 2515, EIF_FALSE, 0, 0, 0},
{0, 2516, EIF_FALSE, 0, 0, 0},
{0, 2517, EIF_TRUE, 0, 0, 0},
{0, 2518, EIF_FALSE, 0, 0, 0},
{0, 2519, EIF_FALSE, 0, 0, 0},
{0, 2520, EIF_FALSE, 0, 0, 0},
{0, 2521, EIF_TRUE, 0, 0, 0},
{0, 2522, EIF_FALSE, 0, 0, 0},
{0, 2523, EIF_FALSE, 0, 0, 0},
{0, 2524, EIF_FALSE, 0, 0, 0},
{0, 2525, EIF_TRUE, 0, 0, 0},
{0, 2526, EIF_FALSE, 0, 0, 0},
{0, 2527, EIF_FALSE, 0, 0, 0},
{0, 2528, EIF_FALSE, 0, 0, 0},
{0, 2529, EIF_TRUE, 0, 0, 0},
{0, 2530, EIF_FALSE, 0, 0, 0},
{0, 2531, EIF_FALSE, 0, 0, 0},
{0, 2532, EIF_FALSE, 0, 0, 0},
{0, 2533, EIF_TRUE, 0, 0, 0},
{0, 2534, EIF_FALSE, 0, 0, 0},
{0, 2535, EIF_FALSE, 0, 0, 0},
{0, 2536, EIF_FALSE, 0, 0, 0},
{0, 2537, EIF_TRUE, 0, 0, 0},
{0, 2538, EIF_FALSE, 0, 0, 0},
{0, 2539, EIF_TRUE, 0, 0, 0},
{0, 2540, EIF_FALSE, 0, 0, 0},
{0, 2541, EIF_FALSE, 0, 0, 0},
{0, 2542, EIF_FALSE, 0, 0, 0},
{0, 2543, EIF_TRUE, 0, 0, 0},
{0, 2544, EIF_FALSE, 0, 0, 0},
{0, 2545, EIF_FALSE, 0, 0, 0},
{0, 2546, EIF_TRUE, 0, 0, 0},
{0, 2547, EIF_FALSE, 0, 0, 0},
{0, 2548, EIF_FALSE, 0, 0, 0},
{0, 2549, EIF_FALSE, 0, 0, 0},
{0, 2550, EIF_FALSE, 0, 0, 0},
{0, 2551, EIF_FALSE, 0, 0, 0},
{0, 2552, EIF_FALSE, 0, 0, 0},
{0, 2553, EIF_FALSE, 0, 0, 0},
{0, 2554, EIF_FALSE, 0, 0, 0},
{0, 2555, EIF_FALSE, 0, 0, 0},
{0, 2556, EIF_FALSE, 0, 0, 0},
{0, 2557, EIF_FALSE, 0, 0, 0},
{0, 2558, EIF_FALSE, 0, 0, 0},
{0, 2559, EIF_TRUE, 0, 0, 0},
{0, 2560, EIF_FALSE, 0, 0, 0},
{0, 2561, EIF_FALSE, 0, 0, 0},
{0, 2562, EIF_FALSE, 0, 0, 0},
{0, 2563, EIF_FALSE, 0, 0, 0},
{0, 2564, EIF_FALSE, 0, 0, 0},
{0, 2565, EIF_FALSE, 0, 0, 0},
{0, 2566, EIF_FALSE, 0, 0, 0},
{0, 2567, EIF_FALSE, 0, 0, 0},
{0, 2568, EIF_FALSE, 0, 0, 0},
{0, 2569, EIF_FALSE, 0, 0, 0},
{0, 2570, EIF_FALSE, 0, 0, 0},
{0, 2571, EIF_FALSE, 0, 0, 0},
{0, 2572, EIF_FALSE, 0, 0, 0},
{0, 2573, EIF_FALSE, 0, 0, 0},
{0, 2574, EIF_FALSE, 0, 0, 0},
{0, 2575, EIF_FALSE, 0, 0, 0},
{0, 2576, EIF_FALSE, 0, 0, 0},
{0, 2577, EIF_FALSE, 0, 0, 0},
{0, 2578, EIF_FALSE, 0, 0, 0},
{0, 2579, EIF_FALSE, 0, 0, 0},
{0, 2580, EIF_FALSE, 0, 0, 0},
{0, 2581, EIF_FALSE, 0, 0, 0},
{0, 2582, EIF_FALSE, 0, 0, 0},
{0, 2583, EIF_FALSE, 0, 0, 0},
{2585, 2584, EIF_FALSE, 0, 0, 0},
{0, 2585, EIF_FALSE, 0, 0, 0},
{0, 2586, EIF_FALSE, 0, 0, 0},
{0, 2587, EIF_FALSE, 0, 0, 0},
{0, 2588, EIF_FALSE, 0, 0, 0},
{0, 2589, EIF_FALSE, 0, 0, 0},
{0, 2590, EIF_FALSE, 0, 0, 0},
{0, 2591, EIF_FALSE, 0, 0, 0},
{0, 2592, EIF_FALSE, 0, 0, 0},
{0, 2593, EIF_FALSE, 0, 0, 0},
{0, 2594, EIF_TRUE, 0, 0, 0},
{0, 2595, EIF_FALSE, 0, 0, 0},
{0, 2596, EIF_FALSE, 0, 0, 0},
{0, 2597, EIF_FALSE, 0, 0, 0},
{0, 2598, EIF_FALSE, 0, 0, 0},
{0, 2599, EIF_FALSE, 0, 0, 0},
{0, 2600, EIF_FALSE, 0, 0, 0},
{0, 2601, EIF_FALSE, 0, 0, 0},
{0, 2602, EIF_FALSE, 0, 0, 0},
{0, 2603, EIF_FALSE, 0, 0, 0},
{0, 2604, EIF_FALSE, 0, 0, 0},
{0, 2605, EIF_FALSE, 0, 0, 0},
{0, 2606, EIF_FALSE, 0, 0, 0},
{0, 2607, EIF_FALSE, 0, 0, 0},
{0, 2608, EIF_FALSE, 0, 0, 0},
{0, 2609, EIF_FALSE, 0, 0, 0},
{0, 2610, EIF_FALSE, 0, 0, 0},
{0, 2611, EIF_FALSE, 0, 0, 0},
{0, 2612, EIF_FALSE, 0, 0, 0},
{0, 2613, EIF_FALSE, 0, 0, 0},
{0, 2614, EIF_FALSE, 0, 0, 0},
{0, 2615, EIF_FALSE, 0, 0, 0},
{0, 2616, EIF_FALSE, 0, 0, 0},
{0, 2617, EIF_FALSE, 0, 0, 0},
{0, 2618, EIF_FALSE, 0, 0, 0},
{0, 2619, EIF_FALSE, 0, 0, 0},
{0, 2620, EIF_FALSE, 0, 0, 0},
{0, 2621, EIF_FALSE, 0, 0, 0},
{0, 2622, EIF_FALSE, 0, 0, 0},
{0, 2623, EIF_FALSE, 0, 0, 0},
{0, 2624, EIF_FALSE, 0, 0, 0},
{0, 2625, EIF_FALSE, 0, 0, 0},
{0, 2626, EIF_FALSE, 0, 0, 0},
{0, 2627, EIF_FALSE, 0, 0, 0},
{0, 2628, EIF_FALSE, 0, 0, 0},
{0, 2629, EIF_FALSE, 0, 0, 0},
{0, 2630, EIF_FALSE, 0, 0, 0},
{0, 2631, EIF_FALSE, 0, 0, 0},
{0, 2632, EIF_FALSE, 0, 0, 0},
{0, 2633, EIF_FALSE, 0, 0, 0},
{0, 2634, EIF_FALSE, 0, 0, 0},
{0, 2635, EIF_FALSE, 0, 0, 0},
{0, 2636, EIF_FALSE, 0, 0, 0},
{0, 2637, EIF_FALSE, 0, 0, 0},
{0, 2638, EIF_FALSE, 0, 0, 0},
{0, 2639, EIF_FALSE, 0, 0, 0},
{0, 2640, EIF_FALSE, 0, 0, 0},
{0, 2641, EIF_FALSE, 0, 0, 0},
{0, 2642, EIF_FALSE, 0, 0, 0},
{0, 2643, EIF_FALSE, 0, 0, 0},
{0, 2644, EIF_FALSE, 0, 0, 0},
{0, 2645, EIF_FALSE, 0, 0, 0},
{0, 2646, EIF_TRUE, 0, 0, 0},
{0, 2647, EIF_FALSE, 0, 0, 0},
{0, 2648, EIF_FALSE, 0, 0, 0},
{0, 2649, EIF_FALSE, 0, 0, 0},
{0, 2650, EIF_FALSE, 0, 0, 0},
{0, 2651, EIF_FALSE, 0, 0, 0},
{0, 2652, EIF_FALSE, 0, 0, 0},
{0, 2653, EIF_FALSE, 0, 0, 0},
{0, 2654, EIF_TRUE, 0, 0, 0},
{0, 2655, EIF_FALSE, 0, 0, 0},
{0, 2656, EIF_FALSE, 0, 0, 0},
{0, 2657, EIF_TRUE, 0, 0, 0},
{0, 2658, EIF_FALSE, 0, 0, 0},
{0, 2659, EIF_FALSE, 0, 0, 0},
{0, 2660, EIF_FALSE, 0, 0, 0},
{0, 2661, EIF_FALSE, 0, 0, 0},
{0, 2662, EIF_FALSE, 0, 0, 0},
{0, 2663, EIF_FALSE, 0, 0, 0},
{0, 2664, EIF_FALSE, 0, 0, 0},
{0, 2665, EIF_FALSE, 0, 0, 0},
{0, 2666, EIF_FALSE, 0, 0, 0},
{0, 2667, EIF_FALSE, 0, 0, 0},
{0, 2668, EIF_FALSE, 0, 0, 0},
{0, 2669, EIF_FALSE, 0, 0, 0},
{0, 2670, EIF_FALSE, 0, 0, 0},
{0, 2671, EIF_FALSE, 0, 0, 0},
{0, 2672, EIF_FALSE, 0, 0, 0},
{0, 2673, EIF_FALSE, 0, 0, 0},
{0, 2674, EIF_FALSE, 0, 0, 0},
{0, 2675, EIF_FALSE, 0, 0, 0},
{0, 2676, EIF_FALSE, 0, 0, 0},
{0, 2677, EIF_FALSE, 0, 0, 0},
{0, 2678, EIF_FALSE, 0, 0, 0},
{0, 2679, EIF_FALSE, 0, 0, 0},
{0, 2680, EIF_FALSE, 0, 0, 0},
{0, 2681, EIF_FALSE, 0, 0, 0},
{0, 2682, EIF_FALSE, 0, 0, 0},
{0, 2683, EIF_FALSE, 0, 0, 0},
{0, 2684, EIF_FALSE, 0, 0, 0},
{0, 2685, EIF_FALSE, 0, 0, 0},
{0, 2686, EIF_FALSE, 0, 0, 0},
{0, 2687, EIF_FALSE, 0, 0, 0},
{0, 2688, EIF_FALSE, 0, 0, 0},
{0, 2689, EIF_FALSE, 0, 0, 0},
{0, 2690, EIF_FALSE, 0, 0, 0},
{0, 2691, EIF_FALSE, 0, 0, 0},
{0, 2692, EIF_FALSE, 0, 0, 0},
{0, 2693, EIF_FALSE, 0, 0, 0},
{0, 2694, EIF_FALSE, 0, 0, 0},
{0, 2695, EIF_FALSE, 0, 0, 0},
{0, 2696, EIF_FALSE, 0, 0, 0},
{0, 2697, EIF_FALSE, 0, 0, 0},
{0, 2698, EIF_FALSE, 0, 0, 0},
{0, 2699, EIF_FALSE, 0, 0, 0},
{0, 2700, EIF_FALSE, 0, 0, 0},
{0, 2701, EIF_FALSE, 0, 0, 0},
{0, 2702, EIF_FALSE, 0, 0, 0},
{0, 2703, EIF_FALSE, 0, 0, 0},
{0, 2704, EIF_FALSE, 0, 0, 0},
{0, 2705, EIF_FALSE, 0, 0, 0},
{0, 2706, EIF_FALSE, 0, 0, 0},
{0, 2707, EIF_FALSE, 0, 0, 0},
{0, 2708, EIF_FALSE, 0, 0, 0},
{0, 2709, EIF_FALSE, 0, 0, 0},
{0, 2710, EIF_FALSE, 0, 0, 0},
{0, 2711, EIF_FALSE, 0, 0, 0},
{0, 2712, EIF_FALSE, 0, 0, 0},
{0, 2713, EIF_FALSE, 0, 0, 0},
{0, 2714, EIF_FALSE, 0, 0, 0},
{0, 2715, EIF_FALSE, 0, 0, 0},
{0, 2716, EIF_FALSE, 0, 0, 0},
{0, 2717, EIF_FALSE, 0, 0, 0},
{0, 2718, EIF_TRUE, 0, 0, 0},
{0, 2719, EIF_FALSE, 0, 0, 0},
{0, 2720, EIF_FALSE, 0, 0, 0},
{0, 2721, EIF_TRUE, 0, 0, 0},
{0, 2722, EIF_FALSE, 0, 0, 0},
{0, 2723, EIF_FALSE, 0, 0, 0},
{0, 2724, EIF_FALSE, 0, 0, 0},
{0, 2725, EIF_FALSE, 0, 0, 0},
{0, 2726, EIF_FALSE, 0, 0, 0},
{0, 2727, EIF_FALSE, 0, 0, 0},
{0, 2728, EIF_FALSE, 0, 0, 0},
{0, 2729, EIF_TRUE, 0, 0, 0},
{0, 2730, EIF_FALSE, 0, 0, 0},
{0, 2731, EIF_FALSE, 0, 0, 0},
{0, 2732, EIF_TRUE, 0, 0, 0},
{0, 2733, EIF_FALSE, 0, 0, 0},
{0, 2734, EIF_FALSE, 0, 0, 0},
{0, 2735, EIF_FALSE, 0, 0, 0},
{0, 2736, EIF_FALSE, 0, 0, 0},
{0, 2737, EIF_FALSE, 0, 0, 0},
{0, 2738, EIF_FALSE, 0, 0, 0},
{0, 2739, EIF_FALSE, 0, 0, 0},
{0, 2740, EIF_FALSE, 0, 0, 0},
{0, 2741, EIF_FALSE, 0, 0, 0},
{0, 2742, EIF_FALSE, 0, 0, 0},
{0, 2743, EIF_FALSE, 0, 0, 0},
{0, 2744, EIF_FALSE, 0, 0, 0},
{0, 2745, EIF_FALSE, 0, 0, 0},
{0, 2746, EIF_FALSE, 0, 0, 0},
{0, 2747, EIF_TRUE, 0, 0, 0},
{0, 2748, EIF_FALSE, 0, 0, 0},
{0, 2749, EIF_FALSE, 0, 0, 0},
{0, 2750, EIF_FALSE, 0, 0, 0},
{0, 2751, EIF_FALSE, 0, 0, 0},
{0, 2752, EIF_FALSE, 0, 0, 0},
{0, 2753, EIF_FALSE, 0, 0, 0},
{0, 2754, EIF_FALSE, 0, 0, 0},
{0, 2755, EIF_TRUE, 0, 0, 0},
{0, 2756, EIF_FALSE, 0, 0, 0},
{0, 2757, EIF_FALSE, 0, 0, 0},
{0, 2758, EIF_FALSE, 0, 0, 0},
{0, 2759, EIF_FALSE, 0, 0, 0},
{0, 2760, EIF_FALSE, 0, 0, 0},
{0, 2761, EIF_FALSE, 0, 0, 0},
{0, 2762, EIF_FALSE, 0, 0, 0},
{0, 2763, EIF_FALSE, 0, 0, 0},
{0, 2764, EIF_FALSE, 0, 0, 0},
{0, 2765, EIF_FALSE, 0, 0, 0},
{0, 2766, EIF_FALSE, 0, 0, 0},
{0, 2767, EIF_FALSE, 0, 0, 0},
{0, 2768, EIF_FALSE, 0, 0, 0},
{0, 2769, EIF_FALSE, 0, 0, 0},
{0, 2770, EIF_FALSE, 0, 0, 0},
{0, 2771, EIF_FALSE, 0, 0, 0},
{0, 2772, EIF_FALSE, 0, 0, 0},
{0, 2773, EIF_FALSE, 0, 0, 0},
{0, 2774, EIF_FALSE, 0, 0, 0},
{0, 2775, EIF_FALSE, 0, 0, 0},
{0, 2776, EIF_FALSE, 0, 0, 0},
{0, 2777, EIF_FALSE, 0, 0, 0},
{0, 2778, EIF_FALSE, 0, 0, 0},
{0, 2779, EIF_FALSE, 0, 0, 0},
{0, 2780, EIF_FALSE, 0, 0, 0},
{0, 2781, EIF_TRUE, 0, 0, 0},
{0, 2782, EIF_FALSE, 0, 0, 0},
{0, 2783, EIF_FALSE, 0, 0, 0},
{0, 2784, EIF_FALSE, 0, 0, 0},
{0, 2785, EIF_FALSE, 0, 0, 0},
{0, 2786, EIF_FALSE, 0, 0, 0},
{0, 2787, EIF_FALSE, 0, 0, 0},
{0, 2788, EIF_FALSE, 0, 0, 0},
{0, 2789, EIF_FALSE, 0, 0, 0},
{0, 2790, EIF_FALSE, 0, 0, 0},
{0, 2791, EIF_FALSE, 0, 0, 0},
{0, 2792, EIF_FALSE, 0, 0, 0},
{0, 2793, EIF_FALSE, 0, 0, 0},
{0, 2794, EIF_FALSE, 0, 0, 0},
{0, 2795, EIF_FALSE, 0, 0, 0},
{0, 2796, EIF_FALSE, 0, 0, 0},
{0, 2797, EIF_FALSE, 0, 0, 0},
{0, 2798, EIF_TRUE, 0, 0, 0},
{0, 2799, EIF_FALSE, 0, 0, 0},
{0, 2800, EIF_FALSE, 0, 0, 0},
{0, 2801, EIF_FALSE, 0, 0, 0},
{0, 2802, EIF_FALSE, 0, 0, 0},
{0, 2803, EIF_FALSE, 0, 0, 0},
{0, 2804, EIF_TRUE, 0, 0, 0},
{0, 2805, EIF_FALSE, 0, 0, 0},
{0, 2806, EIF_FALSE, 0, 0, 0},
{0, 2807, EIF_FALSE, 0, 0, 0},
{0, 2808, EIF_FALSE, 0, 0, 0},
{0, 2809, EIF_FALSE, 0, 0, 0},
{0, 2810, EIF_FALSE, 0, 0, 0},
{0, 2811, EIF_TRUE, 0, 0, 0},
{0, 2812, EIF_FALSE, 0, 0, 0},
{0, 2813, EIF_FALSE, 0, 0, 0},
{0, 2814, EIF_FALSE, 0, 0, 0},
{0, 2815, EIF_FALSE, 0, 0, 0},
{0, 2816, EIF_TRUE, 0, 0, 0},
{0, 2817, EIF_FALSE, 0, 0, 0},
{0, 2818, EIF_FALSE, 0, 0, 0},
{0, 2819, EIF_FALSE, 0, 0, 0},
{0, 2820, EIF_FALSE, 0, 0, 0},
{0, 2821, EIF_FALSE, 0, 0, 0},
{0, 2822, EIF_FALSE, 0, 0, 0},
{0, 2823, EIF_FALSE, 0, 0, 0},
{0, 2824, EIF_FALSE, 0, 0, 0},
{0, 2825, EIF_FALSE, 0, 0, 0},
{0, 2826, EIF_FALSE, 0, 0, 0},
{0, 2827, EIF_FALSE, 0, 0, 0},
{0, 2828, EIF_FALSE, 0, 0, 0},
{0, 2829, EIF_FALSE, 0, 0, 0},
{0, 2830, EIF_FALSE, 0, 0, 0},
{0, 2831, EIF_FALSE, 0, 0, 0},
{0, 2832, EIF_FALSE, 0, 0, 0},
{0, 2833, EIF_FALSE, 0, 0, 0},
{0, 2834, EIF_FALSE, 0, 0, 0},
{0, 2835, EIF_FALSE, 0, 0, 0},
{0, 2836, EIF_FALSE, 0, 0, 0},
{0, 2837, EIF_FALSE, 0, 0, 0},
{0, 2838, EIF_FALSE, 0, 0, 0},
{0, 2839, EIF_FALSE, 0, 0, 0},
{0, 2840, EIF_FALSE, 0, 0, 0},
{0, 2841, EIF_FALSE, 0, 0, 0},
{0, 2842, EIF_FALSE, 0, 0, 0},
{0, 2843, EIF_FALSE, 0, 0, 0},
{0, 2844, EIF_FALSE, 0, 0, 0},
{0, 2845, EIF_TRUE, 0, 0, 0},
{0, 2846, EIF_TRUE, 0, 0, 0},
{0, 2847, EIF_FALSE, 0, 0, 0},
{0, 2848, EIF_FALSE, 0, 0, 0},
{0, 2849, EIF_FALSE, 0, 0, 0}
};


GE_type_info GE_type_infos[2850] = {
{0, 0, 0, 0},
{1, GE_TYPE_FLAG_BOOLEAN|GE_TYPE_FLAG_EXPANDED, 0, 0},
{2, GE_TYPE_FLAG_CHARACTER_8|GE_TYPE_FLAG_EXPANDED, 0, 0},
{3, GE_TYPE_FLAG_CHARACTER_32|GE_TYPE_FLAG_EXPANDED, 0, 0},
{4, GE_TYPE_FLAG_INTEGER_8|GE_TYPE_FLAG_EXPANDED, 0, 0},
{5, GE_TYPE_FLAG_INTEGER_16|GE_TYPE_FLAG_EXPANDED, 0, 0},
{6, GE_TYPE_FLAG_INTEGER_32|GE_TYPE_FLAG_EXPANDED, 0, 0},
{7, GE_TYPE_FLAG_INTEGER_64|GE_TYPE_FLAG_EXPANDED, 0, 0},
{8, GE_TYPE_FLAG_NATURAL_8|GE_TYPE_FLAG_EXPANDED, 0, 0},
{9, GE_TYPE_FLAG_NATURAL_16|GE_TYPE_FLAG_EXPANDED, 0, 0},
{10, GE_TYPE_FLAG_NATURAL_32|GE_TYPE_FLAG_EXPANDED, 0, 0},
{11, GE_TYPE_FLAG_NATURAL_64|GE_TYPE_FLAG_EXPANDED, 0, 0},
{12, GE_TYPE_FLAG_REAL_32|GE_TYPE_FLAG_EXPANDED, 0, 0},
{13, GE_TYPE_FLAG_REAL_64|GE_TYPE_FLAG_EXPANDED, 0, 0},
{14, GE_TYPE_FLAG_POINTER|GE_TYPE_FLAG_EXPANDED, 0, 0},
{15, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new15, 0},
{16, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new16, 0},
{17, 0, (EIF_REFERENCE (*)())&GE_new17, 0},
{18, 0, (EIF_REFERENCE (*)())&GE_new18, 0},
{19, 0, (EIF_REFERENCE (*)())&GE_new19, 0},
{20, 0, (EIF_REFERENCE (*)())&GE_new20, 0},
{21, 0, 0, 0},
{22, 0, 0, 0},
{23, 0, 0, 0},
{24, GE_TYPE_FLAG_NONE, 0, 0},
{25, 0, (EIF_REFERENCE (*)())&GE_new25, 0},
{26, 0, (EIF_REFERENCE (*)())&GE_new26, 0},
{27, 0, (EIF_REFERENCE (*)())&GE_new27, 0},
{28, 0, (EIF_REFERENCE (*)())&GE_new28, 0},
{29, 0, (EIF_REFERENCE (*)())&GE_new29, 0},
{30, 0, 0, 0},
{31, 0, (EIF_REFERENCE (*)())&GE_new31, 0},
{32, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new32, 0},
{33, 0, (EIF_REFERENCE (*)())&GE_new33, &T33f60},
{34, 0, (EIF_REFERENCE (*)())&GE_new34, 0},
{35, 0, (EIF_REFERENCE (*)())&GE_new35, 0},
{36, 0, (EIF_REFERENCE (*)())&GE_new36, 0},
{37, 0, 0, 0},
{38, 0, (EIF_REFERENCE (*)())&GE_new38, 0},
{39, GE_TYPE_FLAG_DEFERRED, 0, 0},
{40, 0, (EIF_REFERENCE (*)())&GE_new40, 0},
{41, 0, (EIF_REFERENCE (*)())&GE_new41, 0},
{42, 0, (EIF_REFERENCE (*)())&GE_new42, 0},
{43, 0, (EIF_REFERENCE (*)())&GE_new43, 0},
{44, 0, (EIF_REFERENCE (*)())&GE_new44, 0},
{45, GE_TYPE_FLAG_DEFERRED, 0, 0},
{46, 0, (EIF_REFERENCE (*)())&GE_new46, 0},
{47, 0, (EIF_REFERENCE (*)())&GE_new47, 0},
{48, 0, (EIF_REFERENCE (*)())&GE_new48, 0},
{49, 0, (EIF_REFERENCE (*)())&GE_new49, 0},
{50, 0, 0, 0},
{51, GE_TYPE_FLAG_DEFERRED, 0, 0},
{52, GE_TYPE_FLAG_DEFERRED, 0, 0},
{53, 0, (EIF_REFERENCE (*)())&GE_new53, 0},
{54, GE_TYPE_FLAG_DEFERRED, 0, 0},
{55, 0, (EIF_REFERENCE (*)())&GE_new55, 0},
{56, 0, (EIF_REFERENCE (*)())&GE_new56, 0},
{57, 0, (EIF_REFERENCE (*)())&GE_new57, 0},
{58, 0, (EIF_REFERENCE (*)())&GE_new58, 0},
{59, 0, 0, 0},
{60, 0, 0, 0},
{61, 0, (EIF_REFERENCE (*)())&GE_new61, 0},
{62, 0, (EIF_REFERENCE (*)())&GE_new62, 0},
{63, GE_TYPE_FLAG_DEFERRED, 0, 0},
{64, GE_TYPE_FLAG_DEFERRED, 0, 0},
{65, 0, 0, 0},
{66, 0, (EIF_REFERENCE (*)())&GE_new66, 0},
{67, 0, (EIF_REFERENCE (*)())&GE_new67, 0},
{68, 0, 0, 0},
{69, 0, (EIF_REFERENCE (*)())&GE_new69, 0},
{70, 0, (EIF_REFERENCE (*)())&GE_new70, 0},
{71, 0, (EIF_REFERENCE (*)())&GE_new71, 0},
{72, 0, 0, 0},
{73, 0, 0, 0},
{74, 0, 0, 0},
{75, 0, 0, 0},
{76, 0, 0, 0},
{77, 0, (EIF_REFERENCE (*)())&GE_new77, 0},
{78, 0, (EIF_REFERENCE (*)())&GE_new78, 0},
{79, 0, 0, 0},
{80, 0, (EIF_REFERENCE (*)())&GE_new80, 0},
{81, 0, (EIF_REFERENCE (*)())&GE_new81, 0},
{82, GE_TYPE_FLAG_DEFERRED, 0, 0},
{83, GE_TYPE_FLAG_DEFERRED, 0, 0},
{84, 0, (EIF_REFERENCE (*)())&GE_new84, 0},
{85, 0, (EIF_REFERENCE (*)())&GE_new85, 0},
{86, 0, 0, 0},
{87, 0, (EIF_REFERENCE (*)())&GE_new87, 0},
{88, 0, (EIF_REFERENCE (*)())&GE_new88, 0},
{89, 0, 0, 0},
{90, 0, 0, 0},
{91, 0, (EIF_REFERENCE (*)())&GE_new91, 0},
{92, GE_TYPE_FLAG_DEFERRED, 0, 0},
{93, 0, (EIF_REFERENCE (*)())&GE_new93, 0},
{94, 0, (EIF_REFERENCE (*)())&GE_new94, 0},
{95, 0, (EIF_REFERENCE (*)())&GE_new95, 0},
{96, GE_TYPE_FLAG_DEFERRED, 0, 0},
{97, 0, (EIF_REFERENCE (*)())&GE_new97, 0},
{98, GE_TYPE_FLAG_DEFERRED, 0, 0},
{99, GE_TYPE_FLAG_DEFERRED, 0, 0},
{100, 0, (EIF_REFERENCE (*)())&GE_new100, 0},
{101, GE_TYPE_FLAG_DEFERRED, 0, 0},
{102, 0, (EIF_REFERENCE (*)())&GE_new102, 0},
{103, 0, (EIF_REFERENCE (*)())&GE_new103, 0},
{104, GE_TYPE_FLAG_DEFERRED, 0, 0},
{105, GE_TYPE_FLAG_DEFERRED, 0, 0},
{106, 0, (EIF_REFERENCE (*)())&GE_new106, 0},
{107, 0, (EIF_REFERENCE (*)())&GE_new107, 0},
{108, 0, (EIF_REFERENCE (*)())&GE_new108, 0},
{109, 0, (EIF_REFERENCE (*)())&GE_new109, 0},
{110, GE_TYPE_FLAG_DEFERRED, 0, 0},
{111, GE_TYPE_FLAG_DEFERRED, 0, 0},
{112, 0, (EIF_REFERENCE (*)())&GE_new112, 0},
{113, 0, 0, 0},
{114, 0, (EIF_REFERENCE (*)())&GE_new114, 0},
{115, 0, 0, 0},
{116, 0, (EIF_REFERENCE (*)())&GE_new116, 0},
{117, 0, 0, 0},
{118, GE_TYPE_FLAG_TUPLE, 0, 0},
{119, 0, (EIF_REFERENCE (*)())&GE_new119, 0},
{120, 0, (EIF_REFERENCE (*)())&GE_new120, 0},
{121, 0, (EIF_REFERENCE (*)())&GE_new121, 0},
{122, 0, (EIF_REFERENCE (*)())&GE_new122, 0},
{123, 0, (EIF_REFERENCE (*)())&GE_new123, 0},
{124, 0, (EIF_REFERENCE (*)())&GE_new124, 0},
{125, 0, (EIF_REFERENCE (*)())&GE_new125, 0},
{126, 0, 0, 0},
{127, GE_TYPE_FLAG_DEFERRED, 0, 0},
{128, 0, (EIF_REFERENCE (*)())&GE_new128, 0},
{129, 0, (EIF_REFERENCE (*)())&GE_new129, 0},
{130, 0, (EIF_REFERENCE (*)())&GE_new130, 0},
{131, 0, (EIF_REFERENCE (*)())&GE_new131, 0},
{132, 0, (EIF_REFERENCE (*)())&GE_new132, 0},
{133, 0, (EIF_REFERENCE (*)())&GE_new133, 0},
{134, 0, (EIF_REFERENCE (*)())&GE_new134, 0},
{135, 0, (EIF_REFERENCE (*)())&GE_new135, 0},
{136, 0, (EIF_REFERENCE (*)())&GE_new136, 0},
{137, 0, (EIF_REFERENCE (*)())&GE_new137, 0},
{138, 0, (EIF_REFERENCE (*)())&GE_new138, 0},
{139, 0, (EIF_REFERENCE (*)())&GE_new139, 0},
{140, 0, (EIF_REFERENCE (*)())&GE_new140, 0},
{141, 0, (EIF_REFERENCE (*)())&GE_new141, 0},
{142, 0, (EIF_REFERENCE (*)())&GE_new142, 0},
{143, 0, (EIF_REFERENCE (*)())&GE_new143, 0},
{144, 0, (EIF_REFERENCE (*)())&GE_new144, 0},
{145, 0, (EIF_REFERENCE (*)())&GE_new145, 0},
{146, 0, (EIF_REFERENCE (*)())&GE_new146, 0},
{147, 0, (EIF_REFERENCE (*)())&GE_new147, 0},
{148, 0, (EIF_REFERENCE (*)())&GE_new148, 0},
{149, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new149, 0},
{150, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new150, 0},
{151, GE_TYPE_FLAG_DEFERRED, 0, 0},
{152, 0, 0, 0},
{153, 0, 0, 0},
{154, 0, (EIF_REFERENCE (*)())&GE_new154, &T154f10},
{155, 0, (EIF_REFERENCE (*)())&GE_new155, 0},
{156, 0, 0, 0},
{157, 0, (EIF_REFERENCE (*)())&GE_new157, 0},
{158, 0, (EIF_REFERENCE (*)())&GE_new158, &T158f10},
{159, 0, (EIF_REFERENCE (*)())&GE_new159, 0},
{160, 0, (EIF_REFERENCE (*)())&GE_new160, 0},
{161, 0, (EIF_REFERENCE (*)())&GE_new161, 0},
{162, 0, (EIF_REFERENCE (*)())&GE_new162, 0},
{163, 0, (EIF_REFERENCE (*)())&GE_new163, 0},
{164, 0, (EIF_REFERENCE (*)())&GE_new164, 0},
{165, GE_TYPE_FLAG_DEFERRED, 0, 0},
{166, 0, (EIF_REFERENCE (*)())&GE_new166, 0},
{167, 0, 0, 0},
{168, 0, (EIF_REFERENCE (*)())&GE_new168, 0},
{169, 0, (EIF_REFERENCE (*)())&GE_new169, 0},
{170, 0, (EIF_REFERENCE (*)())&GE_new170, 0},
{171, 0, (EIF_REFERENCE (*)())&GE_new171, 0},
{172, 0, (EIF_REFERENCE (*)())&GE_new172, 0},
{173, GE_TYPE_FLAG_DEFERRED, 0, 0},
{174, GE_TYPE_FLAG_DEFERRED, 0, 0},
{175, 0, (EIF_REFERENCE (*)())&GE_new175, 0},
{176, 0, (EIF_REFERENCE (*)())&GE_new176, 0},
{177, 0, (EIF_REFERENCE (*)())&GE_new177, 0},
{178, 0, (EIF_REFERENCE (*)())&GE_new178, 0},
{179, 0, (EIF_REFERENCE (*)())&GE_new179, 0},
{180, GE_TYPE_FLAG_DEFERRED, 0, 0},
{181, GE_TYPE_FLAG_DEFERRED, 0, 0},
{182, 0, (EIF_REFERENCE (*)())&GE_new182, 0},
{183, GE_TYPE_FLAG_DEFERRED, 0, 0},
{184, GE_TYPE_FLAG_DEFERRED, 0, 0},
{185, 0, (EIF_REFERENCE (*)())&GE_new185, 0},
{186, 0, (EIF_REFERENCE (*)())&GE_new186, 0},
{187, 0, (EIF_REFERENCE (*)())&GE_new187, 0},
{188, 0, (EIF_REFERENCE (*)())&GE_new188, 0},
{189, 0, (EIF_REFERENCE (*)())&GE_new189, 0},
{190, 0, 0, 0},
{191, GE_TYPE_FLAG_DEFERRED, 0, 0},
{192, 0, (EIF_REFERENCE (*)())&GE_new192, 0},
{193, 0, (EIF_REFERENCE (*)())&GE_new193, 0},
{194, 0, (EIF_REFERENCE (*)())&GE_new194, 0},
{195, 0, (EIF_REFERENCE (*)())&GE_new195, 0},
{196, 0, (EIF_REFERENCE (*)())&GE_new196, 0},
{197, 0, (EIF_REFERENCE (*)())&GE_new197, 0},
{198, 0, (EIF_REFERENCE (*)())&GE_new198, 0},
{199, 0, (EIF_REFERENCE (*)())&GE_new199, 0},
{200, 0, (EIF_REFERENCE (*)())&GE_new200, 0},
{201, 0, 0, 0},
{202, GE_TYPE_FLAG_DEFERRED, 0, 0},
{203, 0, (EIF_REFERENCE (*)())&GE_new203, 0},
{204, 0, 0, 0},
{205, 0, 0, 0},
{206, 0, (EIF_REFERENCE (*)())&GE_new206, 0},
{207, 0, (EIF_REFERENCE (*)())&GE_new207, 0},
{208, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new208, 0},
{209, 0, (EIF_REFERENCE (*)())&GE_new209, 0},
{210, 0, (EIF_REFERENCE (*)())&GE_new210, 0},
{211, GE_TYPE_FLAG_DEFERRED, 0, 0},
{212, 0, (EIF_REFERENCE (*)())&GE_new212, 0},
{213, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new213, 0},
{214, 0, (EIF_REFERENCE (*)())&GE_new214, 0},
{215, GE_TYPE_FLAG_TUPLE, 0, 0},
{216, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new216, 0},
{217, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new217, 0},
{218, GE_TYPE_FLAG_DEFERRED, 0, 0},
{219, 0, (EIF_REFERENCE (*)())&GE_new219, 0},
{220, 0, (EIF_REFERENCE (*)())&GE_new220, 0},
{221, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new221, 0},
{222, 0, (EIF_REFERENCE (*)())&GE_new222, 0},
{223, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new223, 0},
{224, 0, 0, 0},
{225, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new225, 0},
{226, 0, (EIF_REFERENCE (*)())&GE_new226, 0},
{227, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new227, 0},
{228, GE_TYPE_FLAG_DEFERRED, 0, 0},
{229, 0, (EIF_REFERENCE (*)())&GE_new229, 0},
{230, 0, (EIF_REFERENCE (*)())&GE_new230, 0},
{231, 0, (EIF_REFERENCE (*)())&GE_new231, 0},
{232, 0, (EIF_REFERENCE (*)())&GE_new232, 0},
{233, 0, (EIF_REFERENCE (*)())&GE_new233, 0},
{234, GE_TYPE_FLAG_TUPLE, 0, 0},
{235, GE_TYPE_FLAG_DEFERRED, 0, 0},
{236, 0, (EIF_REFERENCE (*)())&GE_new236, 0},
{237, 0, (EIF_REFERENCE (*)())&GE_new237, 0},
{238, 0, 0, 0},
{239, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new239, 0},
{240, 0, (EIF_REFERENCE (*)())&GE_new240, 0},
{241, 0, (EIF_REFERENCE (*)())&GE_new241, 0},
{242, GE_TYPE_FLAG_DEFERRED, 0, 0},
{243, GE_TYPE_FLAG_TUPLE, 0, 0},
{244, 0, 0, 0},
{245, 0, (EIF_REFERENCE (*)())&GE_new245, 0},
{246, GE_TYPE_FLAG_DEFERRED, 0, 0},
{247, 0, (EIF_REFERENCE (*)())&GE_new247, 0},
{248, 0, (EIF_REFERENCE (*)())&GE_new248, 0},
{249, 0, 0, 0},
{250, 0, (EIF_REFERENCE (*)())&GE_new250, 0},
{251, 0, 0, 0},
{252, 0, 0, 0},
{253, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new253, 0},
{254, 0, 0, 0},
{255, 0, (EIF_REFERENCE (*)())&GE_new255, 0},
{256, 0, (EIF_REFERENCE (*)())&GE_new256, 0},
{257, 0, (EIF_REFERENCE (*)())&GE_new257, 0},
{258, 0, 0, 0},
{259, 0, (EIF_REFERENCE (*)())&GE_new259, 0},
{260, 0, (EIF_REFERENCE (*)())&GE_new260, 0},
{261, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new261, 0},
{262, GE_TYPE_FLAG_DEFERRED, 0, 0},
{263, GE_TYPE_FLAG_DEFERRED, 0, 0},
{264, 0, (EIF_REFERENCE (*)())&GE_new264, 0},
{265, 0, (EIF_REFERENCE (*)())&GE_new265, 0},
{266, 0, 0, 0},
{267, 0, (EIF_REFERENCE (*)())&GE_new267, 0},
{268, 0, (EIF_REFERENCE (*)())&GE_new268, 0},
{269, 0, (EIF_REFERENCE (*)())&GE_new269, 0},
{270, 0, (EIF_REFERENCE (*)())&GE_new270, 0},
{271, 0, (EIF_REFERENCE (*)())&GE_new271, 0},
{272, 0, (EIF_REFERENCE (*)())&GE_new272, 0},
{273, 0, (EIF_REFERENCE (*)())&GE_new273, 0},
{274, GE_TYPE_FLAG_DEFERRED, 0, 0},
{275, GE_TYPE_FLAG_DEFERRED, 0, 0},
{276, GE_TYPE_FLAG_SPECIAL, 0, 0},
{277, GE_TYPE_FLAG_SPECIAL, 0, 0},
{278, 0, 0, 0},
{279, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new279, 0},
{280, 0, (EIF_REFERENCE (*)())&GE_new280, 0},
{281, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new281, 0},
{282, 0, (EIF_REFERENCE (*)())&GE_new282, 0},
{283, 0, (EIF_REFERENCE (*)())&GE_new283, 0},
{284, 0, 0, 0},
{285, 0, (EIF_REFERENCE (*)())&GE_new285, 0},
{286, 0, (EIF_REFERENCE (*)())&GE_new286, 0},
{287, 0, 0, 0},
{288, 0, (EIF_REFERENCE (*)())&GE_new288, 0},
{289, 0, 0, 0},
{290, 0, (EIF_REFERENCE (*)())&GE_new290, 0},
{291, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new291, 0},
{292, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new292, 0},
{293, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new293, 0},
{294, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new294, 0},
{295, 0, (EIF_REFERENCE (*)())&GE_new295, 0},
{296, 0, (EIF_REFERENCE (*)())&GE_new296, 0},
{297, 0, (EIF_REFERENCE (*)())&GE_new297, 0},
{298, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new298, 0},
{299, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new299, 0},
{300, 0, (EIF_REFERENCE (*)())&GE_new300, 0},
{301, 0, (EIF_REFERENCE (*)())&GE_new301, 0},
{302, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new302, 0},
{303, 0, (EIF_REFERENCE (*)())&GE_new303, 0},
{304, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new304, 0},
{305, 0, (EIF_REFERENCE (*)())&GE_new305, 0},
{306, 0, (EIF_REFERENCE (*)())&GE_new306, 0},
{307, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new307, 0},
{308, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new308, 0},
{309, 0, (EIF_REFERENCE (*)())&GE_new309, 0},
{310, 0, (EIF_REFERENCE (*)())&GE_new310, 0},
{311, 0, (EIF_REFERENCE (*)())&GE_new311, 0},
{312, 0, (EIF_REFERENCE (*)())&GE_new312, 0},
{313, 0, (EIF_REFERENCE (*)())&GE_new313, 0},
{314, 0, (EIF_REFERENCE (*)())&GE_new314, 0},
{315, 0, (EIF_REFERENCE (*)())&GE_new315, 0},
{316, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new316, 0},
{317, 0, (EIF_REFERENCE (*)())&GE_new317, 0},
{318, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new318, 0},
{319, 0, (EIF_REFERENCE (*)())&GE_new319, 0},
{320, 0, (EIF_REFERENCE (*)())&GE_new320, 0},
{321, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new321, 0},
{322, 0, 0, 0},
{323, 0, 0, 0},
{324, GE_TYPE_FLAG_DEFERRED, 0, 0},
{325, GE_TYPE_FLAG_DEFERRED, 0, 0},
{326, GE_TYPE_FLAG_DEFERRED, 0, 0},
{327, 0, 0, 0},
{328, GE_TYPE_FLAG_DEFERRED, 0, 0},
{329, GE_TYPE_FLAG_DEFERRED, 0, 0},
{330, GE_TYPE_FLAG_DEFERRED, 0, 0},
{331, GE_TYPE_FLAG_DEFERRED, 0, 0},
{332, 0, (EIF_REFERENCE (*)())&GE_new332, 0},
{333, 0, (EIF_REFERENCE (*)())&GE_new333, 0},
{334, GE_TYPE_FLAG_DEFERRED, 0, 0},
{335, GE_TYPE_FLAG_DEFERRED, 0, 0},
{336, GE_TYPE_FLAG_DEFERRED, 0, 0},
{337, GE_TYPE_FLAG_DEFERRED, 0, 0},
{338, GE_TYPE_FLAG_DEFERRED, 0, 0},
{339, GE_TYPE_FLAG_DEFERRED, 0, 0},
{340, GE_TYPE_FLAG_DEFERRED, 0, 0},
{341, GE_TYPE_FLAG_DEFERRED, 0, 0},
{342, GE_TYPE_FLAG_DEFERRED, 0, 0},
{343, GE_TYPE_FLAG_DEFERRED, 0, 0},
{344, 0, (EIF_REFERENCE (*)())&GE_new344, 0},
{345, 0, (EIF_REFERENCE (*)())&GE_new345, 0},
{346, 0, 0, 0},
{347, 0, (EIF_REFERENCE (*)())&GE_new347, 0},
{348, 0, (EIF_REFERENCE (*)())&GE_new348, 0},
{349, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new349, 0},
{350, 0, (EIF_REFERENCE (*)())&GE_new350, 0},
{351, 0, (EIF_REFERENCE (*)())&GE_new351, 0},
{352, 0, (EIF_REFERENCE (*)())&GE_new352, 0},
{353, 0, (EIF_REFERENCE (*)())&GE_new353, 0},
{354, 0, (EIF_REFERENCE (*)())&GE_new354, 0},
{355, 0, (EIF_REFERENCE (*)())&GE_new355, 0},
{356, 0, 0, 0},
{357, 0, (EIF_REFERENCE (*)())&GE_new357, 0},
{358, 0, (EIF_REFERENCE (*)())&GE_new358, 0},
{359, 0, (EIF_REFERENCE (*)())&GE_new359, 0},
{360, 0, (EIF_REFERENCE (*)())&GE_new360, 0},
{361, 0, (EIF_REFERENCE (*)())&GE_new361, 0},
{362, 0, (EIF_REFERENCE (*)())&GE_new362, 0},
{363, 0, (EIF_REFERENCE (*)())&GE_new363, 0},
{364, 0, (EIF_REFERENCE (*)())&GE_new364, 0},
{365, 0, (EIF_REFERENCE (*)())&GE_new365, 0},
{366, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new366, 0},
{367, 0, (EIF_REFERENCE (*)())&GE_new367, 0},
{368, 0, (EIF_REFERENCE (*)())&GE_new368, 0},
{369, 0, (EIF_REFERENCE (*)())&GE_new369, 0},
{370, GE_TYPE_FLAG_DEFERRED, 0, 0},
{371, 0, (EIF_REFERENCE (*)())&GE_new371, 0},
{372, 0, (EIF_REFERENCE (*)())&GE_new372, 0},
{373, 0, (EIF_REFERENCE (*)())&GE_new373, 0},
{374, 0, (EIF_REFERENCE (*)())&GE_new374, 0},
{375, 0, (EIF_REFERENCE (*)())&GE_new375, 0},
{376, 0, (EIF_REFERENCE (*)())&GE_new376, 0},
{377, 0, (EIF_REFERENCE (*)())&GE_new377, 0},
{378, 0, (EIF_REFERENCE (*)())&GE_new378, 0},
{379, 0, (EIF_REFERENCE (*)())&GE_new379, 0},
{380, 0, (EIF_REFERENCE (*)())&GE_new380, 0},
{381, 0, (EIF_REFERENCE (*)())&GE_new381, 0},
{382, 0, (EIF_REFERENCE (*)())&GE_new382, 0},
{383, 0, (EIF_REFERENCE (*)())&GE_new383, 0},
{384, 0, (EIF_REFERENCE (*)())&GE_new384, 0},
{385, 0, (EIF_REFERENCE (*)())&GE_new385, 0},
{386, 0, (EIF_REFERENCE (*)())&GE_new386, 0},
{387, 0, (EIF_REFERENCE (*)())&GE_new387, 0},
{388, 0, (EIF_REFERENCE (*)())&GE_new388, 0},
{389, GE_TYPE_FLAG_DEFERRED, (EIF_REFERENCE (*)())&GE_new389, 0},
{390, 0, (EIF_REFERENCE (*)())&GE_new390, 0},
{391, 0, (EIF_REFERENCE (*)())&GE_new391, 0},
{392, 0, (EIF_REFERENCE (*)())&GE_new392, 0},
{393, GE_TYPE_FLAG_DEFERRED, 0, 0},
{394, GE_TYPE_FLAG_DEFERRED, 0, 0},
{395, 0, 0, 0},
{396, 0, (EIF_REFERENCE (*)())&GE_new396, 0},
{397, 0, (EIF_REFERENCE (*)())&GE_new397, 0},
{398, 0, (EIF_REFERENCE (*)())&GE_new398, 0},
{399, 0, (EIF_REFERENCE (*)())&GE_new399, 0},
{400, 0, (EIF_REFERENCE (*)())&GE_new400, 0},
{401, 0, (EIF_REFERENCE (*)())&GE_new401, 0},
{402, 0, (EIF_REFERENCE (*)())&GE_new402, 0},
{403, 0, (EIF_REFERENCE (*)())&GE_new403, 0},
{404, 0, (EIF_REFERENCE (*)())&GE_new404, 0},
{405, 0, (EIF_REFERENCE (*)())&GE_new405, 0},
{406, 0, (EIF_REFERENCE (*)())&GE_new406, 0},
{407, 0, (EIF_REFERENCE (*)())&GE_new407, 0},
{408, 0, (EIF_REFERENCE (*)())&GE_new408, 0},
{409, 0, 0, 0},
{410, 0, (EIF_REFERENCE (*)())&GE_new410, 0},
{411, 0, (EIF_REFERENCE (*)())&GE_new411, &T411f28},
{412, 0, (EIF_REFERENCE (*)())&GE_new412, 0},
{413, 0, (EIF_REFERENCE (*)())&GE_new413, 0},
{414, 0, (EIF_REFERENCE (*)())&GE_new414, 0},
{415, 0, 0, 0},
{416, 0, (EIF_REFERENCE (*)())&GE_new416, 0},
{417, 0, 0, 0},
{418, 0, (EIF_REFERENCE (*)())&GE_new418, 0},
{419, 0, (EIF_REFERENCE (*)())&GE_new419, 0},
{420, 0, 0, 0},
{421, 0, 0, 0},
{422, 0, (EIF_REFERENCE (*)())&GE_new422, 0},
{423, 0, 0, 0},
{424, 0, (EIF_REFERENCE (*)())&GE_new424, 0},
{425, GE_TYPE_FLAG_DEFERRED, 0, 0},
{426, GE_TYPE_FLAG_DEFERRED, 0, 0},
{427, GE_TYPE_FLAG_DEFERRED, 0, 0},
{428, 0, 0, 0},
{429, 0, (EIF_REFERENCE (*)())&GE_new429, 0},
{430, GE_TYPE_FLAG_DEFERRED, 0, 0},
{431, 0, (EIF_REFERENCE (*)())&GE_new431, 0},
{432, 0, (EIF_REFERENCE (*)())&GE_new432, 0},
{433, 0, (EIF_REFERENCE (*)())&GE_new433, 0},
{434, 0, (EIF_REFERENCE (*)())&GE_new434, 0},
{435, GE_TYPE_FLAG_DEFERRED, 0, 0},
{436, GE_TYPE_FLAG_DEFERRED, 0, 0},
{437, GE_TYPE_FLAG_DEFERRED, 0, 0},
{438, 0, (EIF_REFERENCE (*)())&GE_new438, 0},
{439, 0, (EIF_REFERENCE (*)())&GE_new439, 0},
{440, GE_TYPE_FLAG_DEFERRED, 0, 0},
{441, GE_TYPE_FLAG_DEFERRED, 0, 0},
{442, GE_TYPE_FLAG_DEFERRED, 0, 0},
{443, GE_TYPE_FLAG_DEFERRED, 0, 0},
{444, 0, (EIF_REFERENCE (*)())&GE_new444, 0},
{445, 0, (EIF_REFERENCE (*)())&GE_new445, 0},
{446, GE_TYPE_FLAG_DEFERRED, 0, 0},
{447, 0, 0, 0},
{448, GE_TYPE_FLAG_DEFERRED, 0, 0},
{449, 0, (EIF_REFERENCE (*)())&GE_new449, 0},
{450, GE_TYPE_FLAG_DEFERRED, 0, 0},
{451, 0, (EIF_REFERENCE (*)())&GE_new451, &T451f31},
{452, 0, (EIF_REFERENCE (*)())&GE_new452, 0},
{453, 0, 0, 0},
{454, 0, (EIF_REFERENCE (*)())&GE_new454, 0},
{455, 0, 0, 0},
{456, 0, (EIF_REFERENCE (*)())&GE_new456, 0},
{457, 0, 0, 0},
{458, GE_TYPE_FLAG_DEFERRED, 0, 0},
{459, GE_TYPE_FLAG_DEFERRED, 0, 0},
{460, GE_TYPE_FLAG_DEFERRED, 0, 0},
{461, 0, 0, 0},
{462, GE_TYPE_FLAG_DEFERRED, 0, 0},
{463, GE_TYPE_FLAG_DEFERRED, 0, 0},
{464, 0, (EIF_REFERENCE (*)())&GE_new464, 0},
{465, GE_TYPE_FLAG_DEFERRED, 0, 0},
{466, GE_TYPE_FLAG_DEFERRED, 0, 0},
{467, GE_TYPE_FLAG_DEFERRED, 0, 0},
{468, 0, 0, 0},
{469, GE_TYPE_FLAG_DEFERRED, 0, 0},
{470, GE_TYPE_FLAG_DEFERRED, 0, 0},
{471, GE_TYPE_FLAG_DEFERRED, 0, 0},
{472, 0, (EIF_REFERENCE (*)())&GE_new472, 0},
{473, 0, 0, 0},
{474, 0, (EIF_REFERENCE (*)())&GE_new474, 0},
{475, 0, (EIF_REFERENCE (*)())&GE_new475, 0},
{476, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new476, 0},
{477, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new477, 0},
{478, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new478, 0},
{479, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new479, 0},
{480, 0, (EIF_REFERENCE (*)())&GE_new480, 0},
{481, GE_TYPE_FLAG_DEFERRED, 0, 0},
{482, GE_TYPE_FLAG_DEFERRED, 0, 0},
{483, GE_TYPE_FLAG_DEFERRED, 0, 0},
{484, GE_TYPE_FLAG_DEFERRED, 0, 0},
{485, 0, (EIF_REFERENCE (*)())&GE_new485, 0},
{486, GE_TYPE_FLAG_DEFERRED, 0, 0},
{487, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new487, 0},
{488, GE_TYPE_FLAG_DEFERRED, 0, 0},
{489, GE_TYPE_FLAG_DEFERRED, 0, 0},
{490, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new490, 0},
{491, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new491, 0},
{492, 0, (EIF_REFERENCE (*)())&GE_new492, 0},
{493, GE_TYPE_FLAG_DEFERRED, 0, 0},
{494, 0, (EIF_REFERENCE (*)())&GE_new494, 0},
{495, 0, (EIF_REFERENCE (*)())&GE_new495, 0},
{496, 0, (EIF_REFERENCE (*)())&GE_new496, 0},
{497, 0, 0, 0},
{498, 0, (EIF_REFERENCE (*)())&GE_new498, 0},
{499, 0, 0, 0},
{500, 0, (EIF_REFERENCE (*)())&GE_new500, 0},
{501, 0, (EIF_REFERENCE (*)())&GE_new501, 0},
{502, 0, (EIF_REFERENCE (*)())&GE_new502, 0},
{503, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new503, 0},
{504, 0, 0, 0},
{505, 0, (EIF_REFERENCE (*)())&GE_new505, 0},
{506, 0, (EIF_REFERENCE (*)())&GE_new506, 0},
{507, 0, (EIF_REFERENCE (*)())&GE_new507, 0},
{508, 0, 0, 0},
{509, GE_TYPE_FLAG_DEFERRED, 0, 0},
{510, 0, (EIF_REFERENCE (*)())&GE_new510, 0},
{511, GE_TYPE_FLAG_DEFERRED, 0, 0},
{512, 0, (EIF_REFERENCE (*)())&GE_new512, 0},
{513, 0, (EIF_REFERENCE (*)())&GE_new513, 0},
{514, 0, (EIF_REFERENCE (*)())&GE_new514, 0},
{515, 0, (EIF_REFERENCE (*)())&GE_new515, 0},
{516, 0, (EIF_REFERENCE (*)())&GE_new516, 0},
{517, 0, (EIF_REFERENCE (*)())&GE_new517, 0},
{518, 0, (EIF_REFERENCE (*)())&GE_new518, 0},
{519, 0, (EIF_REFERENCE (*)())&GE_new519, 0},
{520, 0, (EIF_REFERENCE (*)())&GE_new520, 0},
{521, 0, (EIF_REFERENCE (*)())&GE_new521, 0},
{522, 0, (EIF_REFERENCE (*)())&GE_new522, 0},
{523, 0, (EIF_REFERENCE (*)())&GE_new523, 0},
{524, 0, (EIF_REFERENCE (*)())&GE_new524, 0},
{525, 0, (EIF_REFERENCE (*)())&GE_new525, 0},
{526, 0, (EIF_REFERENCE (*)())&GE_new526, 0},
{527, 0, (EIF_REFERENCE (*)())&GE_new527, 0},
{528, 0, 0, 0},
{529, 0, (EIF_REFERENCE (*)())&GE_new529, 0},
{530, 0, (EIF_REFERENCE (*)())&GE_new530, 0},
{531, GE_TYPE_FLAG_DEFERRED, 0, 0},
{532, 0, 0, 0},
{533, 0, (EIF_REFERENCE (*)())&GE_new533, 0},
{534, GE_TYPE_FLAG_DEFERRED, 0, 0},
{535, GE_TYPE_FLAG_DEFERRED, 0, 0},
{536, 0, (EIF_REFERENCE (*)())&GE_new536, 0},
{537, GE_TYPE_FLAG_DEFERRED, 0, 0},
{538, 0, (EIF_REFERENCE (*)())&GE_new538, 0},
{539, 0, (EIF_REFERENCE (*)())&GE_new539, 0},
{540, 0, (EIF_REFERENCE (*)())&GE_new540, 0},
{541, 0, 0, 0},
{542, 0, (EIF_REFERENCE (*)())&GE_new542, 0},
{543, 0, (EIF_REFERENCE (*)())&GE_new543, 0},
{544, 0, (EIF_REFERENCE (*)())&GE_new544, 0},
{545, 0, 0, 0},
{546, 0, 0, 0},
{547, 0, (EIF_REFERENCE (*)())&GE_new547, 0},
{548, 0, (EIF_REFERENCE (*)())&GE_new548, 0},
{549, 0, (EIF_REFERENCE (*)())&GE_new549, 0},
{550, 0, 0, 0},
{551, 0, (EIF_REFERENCE (*)())&GE_new551, 0},
{552, 0, (EIF_REFERENCE (*)())&GE_new552, 0},
{553, 0, (EIF_REFERENCE (*)())&GE_new553, 0},
{554, 0, (EIF_REFERENCE (*)())&GE_new554, 0},
{555, 0, 0, 0},
{556, 0, 0, 0},
{557, 0, (EIF_REFERENCE (*)())&GE_new557, 0},
{558, GE_TYPE_FLAG_DEFERRED, 0, 0},
{559, 0, (EIF_REFERENCE (*)())&GE_new559, 0},
{560, 0, (EIF_REFERENCE (*)())&GE_new560, 0},
{561, 0, 0, 0},
{562, GE_TYPE_FLAG_DEFERRED, 0, 0},
{563, 0, 0, 0},
{564, 0, (EIF_REFERENCE (*)())&GE_new564, 0},
{565, 0, 0, 0},
{566, 0, 0, 0},
{567, 0, 0, 0},
{568, 0, 0, 0},
{569, 0, (EIF_REFERENCE (*)())&GE_new569, 0},
{570, GE_TYPE_FLAG_DEFERRED, 0, 0},
{571, 0, (EIF_REFERENCE (*)())&GE_new571, 0},
{572, GE_TYPE_FLAG_DEFERRED, 0, 0},
{573, GE_TYPE_FLAG_DEFERRED, 0, 0},
{574, 0, 0, 0},
{575, 0, (EIF_REFERENCE (*)())&GE_new575, 0},
{576, 0, (EIF_REFERENCE (*)())&GE_new576, 0},
{577, GE_TYPE_FLAG_DEFERRED, 0, 0},
{578, 0, 0, 0},
{579, GE_TYPE_FLAG_DEFERRED, 0, 0},
{580, 0, 0, 0},
{581, 0, (EIF_REFERENCE (*)())&GE_new581, 0},
{582, 0, 0, 0},
{583, 0, (EIF_REFERENCE (*)())&GE_new583, 0},
{584, 0, (EIF_REFERENCE (*)())&GE_new584, 0},
{585, 0, 0, 0},
{586, 0, (EIF_REFERENCE (*)())&GE_new586, 0},
{587, 0, (EIF_REFERENCE (*)())&GE_new587, 0},
{588, 0, (EIF_REFERENCE (*)())&GE_new588, 0},
{589, 0, (EIF_REFERENCE (*)())&GE_new589, 0},
{590, GE_TYPE_FLAG_DEFERRED, 0, 0},
{591, GE_TYPE_FLAG_DEFERRED, 0, 0},
{592, 0, (EIF_REFERENCE (*)())&GE_new592, 0},
{593, GE_TYPE_FLAG_DEFERRED, 0, 0},
{594, 0, 0, 0},
{595, 0, (EIF_REFERENCE (*)())&GE_new595, 0},
{596, 0, (EIF_REFERENCE (*)())&GE_new596, 0},
{597, GE_TYPE_FLAG_DEFERRED, 0, 0},
{598, GE_TYPE_FLAG_EXPANDED, 0, 0},
{599, 0, (EIF_REFERENCE (*)())&GE_new599, 0},
{600, 0, 0, 0},
{601, 0, (EIF_REFERENCE (*)())&GE_new601, 0},
{602, GE_TYPE_FLAG_DEFERRED, 0, 0},
{603, 0, (EIF_REFERENCE (*)())&GE_new603, 0},
{604, 0, (EIF_REFERENCE (*)())&GE_new604, 0},
{605, GE_TYPE_FLAG_DEFERRED, (EIF_REFERENCE (*)())&GE_new605, 0},
{606, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new606, 0},
{607, GE_TYPE_FLAG_EXPANDED, 0, 0},
{608, 0, (EIF_REFERENCE (*)())&GE_new608, 0},
{609, 0, 0, 0},
{610, 0, 0, 0},
{611, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new611, 0},
{612, 0, (EIF_REFERENCE (*)())&GE_new612, 0},
{613, 0, 0, 0},
{614, 0, (EIF_REFERENCE (*)())&GE_new614, 0},
{615, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new615, 0},
{616, 0, (EIF_REFERENCE (*)())&GE_new616, 0},
{617, 0, 0, 0},
{618, 0, (EIF_REFERENCE (*)())&GE_new618, 0},
{619, 0, 0, 0},
{620, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new620, 0},
{621, 0, (EIF_REFERENCE (*)())&GE_new621, 0},
{622, 0, 0, 0},
{623, 0, (EIF_REFERENCE (*)())&GE_new623, 0},
{624, 0, 0, 0},
{625, 0, 0, 0},
{626, 0, (EIF_REFERENCE (*)())&GE_new626, 0},
{627, 0, (EIF_REFERENCE (*)())&GE_new627, 0},
{628, 0, 0, 0},
{629, 0, (EIF_REFERENCE (*)())&GE_new629, 0},
{630, 0, (EIF_REFERENCE (*)())&GE_new630, 0},
{631, GE_TYPE_FLAG_DEFERRED, 0, 0},
{632, 0, (EIF_REFERENCE (*)())&GE_new632, 0},
{633, 0, (EIF_REFERENCE (*)())&GE_new633, 0},
{634, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new634, 0},
{635, 0, (EIF_REFERENCE (*)())&GE_new635, 0},
{636, GE_TYPE_FLAG_DEFERRED, 0, 0},
{637, 0, (EIF_REFERENCE (*)())&GE_new637, 0},
{638, 0, (EIF_REFERENCE (*)())&GE_new638, 0},
{639, 0, 0, 0},
{640, GE_TYPE_FLAG_DEFERRED, 0, 0},
{641, 0, 0, 0},
{642, 0, (EIF_REFERENCE (*)())&GE_new642, 0},
{643, 0, (EIF_REFERENCE (*)())&GE_new643, 0},
{644, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new644, 0},
{645, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new645, 0},
{646, GE_TYPE_FLAG_DEFERRED, 0, 0},
{647, 0, (EIF_REFERENCE (*)())&GE_new647, 0},
{648, 0, (EIF_REFERENCE (*)())&GE_new648, 0},
{649, 0, (EIF_REFERENCE (*)())&GE_new649, 0},
{650, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new650, 0},
{651, 0, (EIF_REFERENCE (*)())&GE_new651, 0},
{652, 0, (EIF_REFERENCE (*)())&GE_new652, 0},
{653, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new653, 0},
{654, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new654, 0},
{655, 0, (EIF_REFERENCE (*)())&GE_new655, 0},
{656, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new656, 0},
{657, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new657, 0},
{658, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new658, 0},
{659, 0, (EIF_REFERENCE (*)())&GE_new659, 0},
{660, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new660, 0},
{661, 0, (EIF_REFERENCE (*)())&GE_new661, 0},
{662, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new662, 0},
{663, 0, (EIF_REFERENCE (*)())&GE_new663, 0},
{664, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new664, 0},
{665, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new665, 0},
{666, GE_TYPE_FLAG_DEFERRED, 0, 0},
{667, 0, (EIF_REFERENCE (*)())&GE_new667, 0},
{668, 0, (EIF_REFERENCE (*)())&GE_new668, 0},
{669, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new669, 0},
{670, 0, (EIF_REFERENCE (*)())&GE_new670, 0},
{671, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new671, 0},
{672, 0, (EIF_REFERENCE (*)())&GE_new672, 0},
{673, GE_TYPE_FLAG_DEFERRED, 0, 0},
{674, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new674, 0},
{675, 0, (EIF_REFERENCE (*)())&GE_new675, 0},
{676, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new676, 0},
{677, 0, (EIF_REFERENCE (*)())&GE_new677, 0},
{678, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new678, 0},
{679, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new679, 0},
{680, 0, (EIF_REFERENCE (*)())&GE_new680, 0},
{681, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new681, 0},
{682, 0, (EIF_REFERENCE (*)())&GE_new682, 0},
{683, 0, (EIF_REFERENCE (*)())&GE_new683, 0},
{684, 0, (EIF_REFERENCE (*)())&GE_new684, 0},
{685, 0, (EIF_REFERENCE (*)())&GE_new685, 0},
{686, 0, (EIF_REFERENCE (*)())&GE_new686, 0},
{687, 0, (EIF_REFERENCE (*)())&GE_new687, 0},
{688, 0, 0, 0},
{689, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new689, 0},
{690, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new690, 0},
{691, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new691, 0},
{692, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new692, 0},
{693, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new693, 0},
{694, 0, (EIF_REFERENCE (*)())&GE_new694, 0},
{695, GE_TYPE_FLAG_TUPLE, 0, 0},
{696, 0, (EIF_REFERENCE (*)())&GE_new696, 0},
{697, 0, 0, 0},
{698, 0, (EIF_REFERENCE (*)())&GE_new698, 0},
{699, 0, (EIF_REFERENCE (*)())&GE_new699, 0},
{700, 0, (EIF_REFERENCE (*)())&GE_new700, 0},
{701, 0, (EIF_REFERENCE (*)())&GE_new701, 0},
{702, GE_TYPE_FLAG_DEFERRED, 0, 0},
{703, 0, 0, 0},
{704, 0, 0, 0},
{705, GE_TYPE_FLAG_DEFERRED, 0, 0},
{706, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new706, 0},
{707, GE_TYPE_FLAG_DEFERRED, 0, 0},
{708, 0, 0, 0},
{709, 0, 0, 0},
{710, GE_TYPE_FLAG_DEFERRED, 0, 0},
{711, 0, 0, 0},
{712, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new712, 0},
{713, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new713, 0},
{714, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new714, 0},
{715, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new715, 0},
{716, 0, (EIF_REFERENCE (*)())&GE_new716, 0},
{717, 0, (EIF_REFERENCE (*)())&GE_new717, 0},
{718, 0, 0, 0},
{719, 0, 0, 0},
{720, 0, 0, 0},
{721, GE_TYPE_FLAG_DEFERRED, 0, 0},
{722, GE_TYPE_FLAG_DEFERRED, 0, 0},
{723, 0, (EIF_REFERENCE (*)())&GE_new723, 0},
{724, 0, (EIF_REFERENCE (*)())&GE_new724, 0},
{725, 0, 0, 0},
{726, 0, 0, 0},
{727, 0, 0, 0},
{728, 0, 0, 0},
{729, 0, (EIF_REFERENCE (*)())&GE_new729, 0},
{730, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new730, 0},
{731, 0, (EIF_REFERENCE (*)())&GE_new731, 0},
{732, 0, (EIF_REFERENCE (*)())&GE_new732, 0},
{733, 0, (EIF_REFERENCE (*)())&GE_new733, 0},
{734, GE_TYPE_FLAG_DEFERRED, 0, 0},
{735, GE_TYPE_FLAG_DEFERRED, 0, 0},
{736, 0, (EIF_REFERENCE (*)())&GE_new736, 0},
{737, 0, (EIF_REFERENCE (*)())&GE_new737, 0},
{738, 0, (EIF_REFERENCE (*)())&GE_new738, 0},
{739, GE_TYPE_FLAG_DEFERRED, 0, 0},
{740, 0, (EIF_REFERENCE (*)())&GE_new740, 0},
{741, GE_TYPE_FLAG_DEFERRED, 0, 0},
{742, 0, (EIF_REFERENCE (*)())&GE_new742, 0},
{743, 0, (EIF_REFERENCE (*)())&GE_new743, 0},
{744, 0, (EIF_REFERENCE (*)())&GE_new744, 0},
{745, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new745, 0},
{746, 0, (EIF_REFERENCE (*)())&GE_new746, 0},
{747, 0, (EIF_REFERENCE (*)())&GE_new747, 0},
{748, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new748, 0},
{749, 0, (EIF_REFERENCE (*)())&GE_new749, 0},
{750, 0, (EIF_REFERENCE (*)())&GE_new750, 0},
{751, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new751, 0},
{752, 0, (EIF_REFERENCE (*)())&GE_new752, 0},
{753, 0, (EIF_REFERENCE (*)())&GE_new753, 0},
{754, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new754, 0},
{755, 0, (EIF_REFERENCE (*)())&GE_new755, 0},
{756, 0, (EIF_REFERENCE (*)())&GE_new756, 0},
{757, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new757, 0},
{758, 0, (EIF_REFERENCE (*)())&GE_new758, 0},
{759, 0, (EIF_REFERENCE (*)())&GE_new759, 0},
{760, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new760, 0},
{761, 0, (EIF_REFERENCE (*)())&GE_new761, 0},
{762, 0, (EIF_REFERENCE (*)())&GE_new762, 0},
{763, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new763, 0},
{764, 0, (EIF_REFERENCE (*)())&GE_new764, 0},
{765, 0, (EIF_REFERENCE (*)())&GE_new765, 0},
{766, 0, (EIF_REFERENCE (*)())&GE_new766, 0},
{767, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new767, 0},
{768, 0, 0, 0},
{769, GE_TYPE_FLAG_DEFERRED, 0, 0},
{770, GE_TYPE_FLAG_DEFERRED, 0, 0},
{771, GE_TYPE_FLAG_DEFERRED, 0, 0},
{772, 0, (EIF_REFERENCE (*)())&GE_new772, 0},
{773, 0, (EIF_REFERENCE (*)())&GE_new773, 0},
{774, GE_TYPE_FLAG_DEFERRED, 0, 0},
{775, 0, (EIF_REFERENCE (*)())&GE_new775, 0},
{776, GE_TYPE_FLAG_TUPLE, 0, 0},
{777, 0, (EIF_REFERENCE (*)())&GE_new777, 0},
{778, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new778, 0},
{779, 0, 0, 0},
{780, 0, 0, 0},
{781, 0, 0, 0},
{782, 0, 0, 0},
{783, 0, (EIF_REFERENCE (*)())&GE_new783, 0},
{784, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new784, 0},
{785, 0, 0, 0},
{786, 0, 0, 0},
{787, 0, 0, 0},
{788, 0, 0, 0},
{789, 0, (EIF_REFERENCE (*)())&GE_new789, 0},
{790, 0, (EIF_REFERENCE (*)())&GE_new790, 0},
{791, 0, (EIF_REFERENCE (*)())&GE_new791, 0},
{792, 0, (EIF_REFERENCE (*)())&GE_new792, 0},
{793, 0, (EIF_REFERENCE (*)())&GE_new793, 0},
{794, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new794, 0},
{795, GE_TYPE_FLAG_TUPLE, 0, 0},
{796, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new796, 0},
{797, 0, 0, 0},
{798, 0, (EIF_REFERENCE (*)())&GE_new798, 0},
{799, 0, (EIF_REFERENCE (*)())&GE_new799, 0},
{800, 0, (EIF_REFERENCE (*)())&GE_new800, 0},
{801, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new801, 0},
{802, 0, 0, 0},
{803, 0, (EIF_REFERENCE (*)())&GE_new803, 0},
{804, 0, 0, 0},
{805, 0, 0, 0},
{806, 0, 0, 0},
{807, 0, (EIF_REFERENCE (*)())&GE_new807, 0},
{808, 0, (EIF_REFERENCE (*)())&GE_new808, 0},
{809, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new809, 0},
{810, 0, (EIF_REFERENCE (*)())&GE_new810, 0},
{811, GE_TYPE_FLAG_TUPLE, 0, 0},
{812, 0, (EIF_REFERENCE (*)())&GE_new812, 0},
{813, 0, 0, 0},
{814, 0, 0, 0},
{815, 0, (EIF_REFERENCE (*)())&GE_new815, 0},
{816, 0, (EIF_REFERENCE (*)())&GE_new816, 0},
{817, 0, 0, 0},
{818, 0, 0, 0},
{819, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new819, 0},
{820, 0, (EIF_REFERENCE (*)())&GE_new820, 0},
{821, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new821, 0},
{822, GE_TYPE_FLAG_TUPLE, 0, 0},
{823, 0, 0, 0},
{824, 0, 0, 0},
{825, 0, 0, 0},
{826, 0, 0, 0},
{827, GE_TYPE_FLAG_TUPLE, 0, 0},
{828, 0, (EIF_REFERENCE (*)())&GE_new828, 0},
{829, 0, (EIF_REFERENCE (*)())&GE_new829, 0},
{830, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new830, 0},
{831, 0, (EIF_REFERENCE (*)())&GE_new831, 0},
{832, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new832, 0},
{833, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new833, 0},
{834, 0, (EIF_REFERENCE (*)())&GE_new834, 0},
{835, 0, (EIF_REFERENCE (*)())&GE_new835, 0},
{836, GE_TYPE_FLAG_DEFERRED, 0, 0},
{837, 0, 0, 0},
{838, GE_TYPE_FLAG_DEFERRED, 0, 0},
{839, 0, 0, 0},
{840, GE_TYPE_FLAG_DEFERRED, 0, 0},
{841, GE_TYPE_FLAG_DEFERRED, 0, 0},
{842, GE_TYPE_FLAG_DEFERRED, 0, 0},
{843, 0, 0, 0},
{844, GE_TYPE_FLAG_DEFERRED, 0, 0},
{845, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new845, 0},
{846, 0, (EIF_REFERENCE (*)())&GE_new846, 0},
{847, GE_TYPE_FLAG_DEFERRED, 0, 0},
{848, 0, (EIF_REFERENCE (*)())&GE_new848, 0},
{849, 0, 0, 0},
{850, 0, (EIF_REFERENCE (*)())&GE_new850, 0},
{851, 0, (EIF_REFERENCE (*)())&GE_new851, 0},
{852, GE_TYPE_FLAG_DEFERRED, 0, 0},
{853, 0, (EIF_REFERENCE (*)())&GE_new853, 0},
{854, 0, (EIF_REFERENCE (*)())&GE_new854, 0},
{855, 0, (EIF_REFERENCE (*)())&GE_new855, 0},
{856, 0, (EIF_REFERENCE (*)())&GE_new856, 0},
{857, 0, (EIF_REFERENCE (*)())&GE_new857, 0},
{858, 0, (EIF_REFERENCE (*)())&GE_new858, 0},
{859, 0, (EIF_REFERENCE (*)())&GE_new859, 0},
{860, 0, (EIF_REFERENCE (*)())&GE_new860, 0},
{861, 0, (EIF_REFERENCE (*)())&GE_new861, 0},
{862, 0, (EIF_REFERENCE (*)())&GE_new862, 0},
{863, 0, (EIF_REFERENCE (*)())&GE_new863, 0},
{864, 0, (EIF_REFERENCE (*)())&GE_new864, 0},
{865, 0, (EIF_REFERENCE (*)())&GE_new865, 0},
{866, 0, (EIF_REFERENCE (*)())&GE_new866, 0},
{867, 0, (EIF_REFERENCE (*)())&GE_new867, 0},
{868, 0, 0, 0},
{869, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new869, 0},
{870, 0, (EIF_REFERENCE (*)())&GE_new870, 0},
{871, 0, 0, 0},
{872, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new872, 0},
{873, 0, (EIF_REFERENCE (*)())&GE_new873, 0},
{874, 0, 0, 0},
{875, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new875, 0},
{876, 0, (EIF_REFERENCE (*)())&GE_new876, 0},
{877, 0, 0, 0},
{878, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new878, 0},
{879, 0, (EIF_REFERENCE (*)())&GE_new879, 0},
{880, GE_TYPE_FLAG_DEFERRED, 0, 0},
{881, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new881, 0},
{882, 0, (EIF_REFERENCE (*)())&GE_new882, 0},
{883, GE_TYPE_FLAG_DEFERRED, 0, 0},
{884, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new884, 0},
{885, 0, (EIF_REFERENCE (*)())&GE_new885, 0},
{886, 0, 0, 0},
{887, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new887, 0},
{888, 0, (EIF_REFERENCE (*)())&GE_new888, 0},
{889, GE_TYPE_FLAG_DEFERRED, 0, 0},
{890, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new890, 0},
{891, 0, (EIF_REFERENCE (*)())&GE_new891, 0},
{892, 0, 0, 0},
{893, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new893, 0},
{894, 0, (EIF_REFERENCE (*)())&GE_new894, 0},
{895, 0, 0, 0},
{896, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new896, 0},
{897, 0, (EIF_REFERENCE (*)())&GE_new897, 0},
{898, GE_TYPE_FLAG_DEFERRED, 0, 0},
{899, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new899, 0},
{900, 0, (EIF_REFERENCE (*)())&GE_new900, 0},
{901, 0, 0, 0},
{902, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new902, 0},
{903, 0, (EIF_REFERENCE (*)())&GE_new903, 0},
{904, GE_TYPE_FLAG_DEFERRED, 0, 0},
{905, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new905, 0},
{906, 0, (EIF_REFERENCE (*)())&GE_new906, 0},
{907, GE_TYPE_FLAG_DEFERRED, 0, 0},
{908, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new908, 0},
{909, 0, (EIF_REFERENCE (*)())&GE_new909, 0},
{910, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new910, 0},
{911, 0, (EIF_REFERENCE (*)())&GE_new911, 0},
{912, 0, 0, 0},
{913, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new913, 0},
{914, 0, (EIF_REFERENCE (*)())&GE_new914, 0},
{915, 0, 0, 0},
{916, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new916, 0},
{917, 0, (EIF_REFERENCE (*)())&GE_new917, 0},
{918, 0, 0, 0},
{919, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new919, 0},
{920, 0, (EIF_REFERENCE (*)())&GE_new920, 0},
{921, 0, 0, 0},
{922, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new922, 0},
{923, 0, (EIF_REFERENCE (*)())&GE_new923, 0},
{924, 0, 0, 0},
{925, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new925, 0},
{926, 0, (EIF_REFERENCE (*)())&GE_new926, 0},
{927, 0, 0, 0},
{928, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new928, 0},
{929, 0, (EIF_REFERENCE (*)())&GE_new929, 0},
{930, 0, 0, 0},
{931, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new931, 0},
{932, 0, (EIF_REFERENCE (*)())&GE_new932, 0},
{933, 0, 0, 0},
{934, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new934, 0},
{935, 0, (EIF_REFERENCE (*)())&GE_new935, 0},
{936, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new936, 0},
{937, 0, (EIF_REFERENCE (*)())&GE_new937, 0},
{938, GE_TYPE_FLAG_DEFERRED, 0, 0},
{939, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new939, 0},
{940, 0, (EIF_REFERENCE (*)())&GE_new940, 0},
{941, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new941, 0},
{942, 0, (EIF_REFERENCE (*)())&GE_new942, 0},
{943, GE_TYPE_FLAG_DEFERRED, 0, 0},
{944, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new944, 0},
{945, 0, (EIF_REFERENCE (*)())&GE_new945, 0},
{946, GE_TYPE_FLAG_DEFERRED, 0, 0},
{947, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new947, 0},
{948, 0, (EIF_REFERENCE (*)())&GE_new948, 0},
{949, 0, 0, 0},
{950, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new950, 0},
{951, 0, (EIF_REFERENCE (*)())&GE_new951, 0},
{952, GE_TYPE_FLAG_DEFERRED, 0, 0},
{953, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new953, 0},
{954, 0, (EIF_REFERENCE (*)())&GE_new954, 0},
{955, 0, 0, 0},
{956, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new956, 0},
{957, 0, (EIF_REFERENCE (*)())&GE_new957, 0},
{958, GE_TYPE_FLAG_DEFERRED, 0, 0},
{959, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new959, 0},
{960, 0, (EIF_REFERENCE (*)())&GE_new960, 0},
{961, 0, 0, 0},
{962, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new962, 0},
{963, 0, (EIF_REFERENCE (*)())&GE_new963, 0},
{964, 0, 0, 0},
{965, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new965, 0},
{966, 0, (EIF_REFERENCE (*)())&GE_new966, 0},
{967, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new967, 0},
{968, 0, (EIF_REFERENCE (*)())&GE_new968, 0},
{969, 0, 0, 0},
{970, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new970, 0},
{971, 0, (EIF_REFERENCE (*)())&GE_new971, 0},
{972, GE_TYPE_FLAG_DEFERRED, 0, 0},
{973, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new973, 0},
{974, 0, (EIF_REFERENCE (*)())&GE_new974, 0},
{975, GE_TYPE_FLAG_DEFERRED, 0, 0},
{976, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new976, 0},
{977, 0, (EIF_REFERENCE (*)())&GE_new977, 0},
{978, GE_TYPE_FLAG_DEFERRED, 0, 0},
{979, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new979, 0},
{980, 0, (EIF_REFERENCE (*)())&GE_new980, 0},
{981, 0, 0, 0},
{982, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new982, 0},
{983, 0, (EIF_REFERENCE (*)())&GE_new983, 0},
{984, 0, 0, 0},
{985, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new985, 0},
{986, 0, (EIF_REFERENCE (*)())&GE_new986, 0},
{987, GE_TYPE_FLAG_DEFERRED, 0, 0},
{988, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new988, 0},
{989, 0, (EIF_REFERENCE (*)())&GE_new989, 0},
{990, 0, 0, 0},
{991, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new991, 0},
{992, 0, (EIF_REFERENCE (*)())&GE_new992, 0},
{993, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new993, 0},
{994, 0, (EIF_REFERENCE (*)())&GE_new994, 0},
{995, GE_TYPE_FLAG_DEFERRED, 0, 0},
{996, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new996, 0},
{997, 0, (EIF_REFERENCE (*)())&GE_new997, 0},
{998, GE_TYPE_FLAG_DEFERRED, 0, 0},
{999, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new999, 0},
{1000, 0, (EIF_REFERENCE (*)())&GE_new1000, 0},
{1001, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1002, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1002, 0},
{1003, 0, (EIF_REFERENCE (*)())&GE_new1003, 0},
{1004, 0, 0, 0},
{1005, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1005, 0},
{1006, 0, (EIF_REFERENCE (*)())&GE_new1006, 0},
{1007, 0, 0, 0},
{1008, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1008, 0},
{1009, 0, (EIF_REFERENCE (*)())&GE_new1009, 0},
{1010, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1011, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1011, 0},
{1012, 0, (EIF_REFERENCE (*)())&GE_new1012, 0},
{1013, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1014, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1014, 0},
{1015, 0, (EIF_REFERENCE (*)())&GE_new1015, 0},
{1016, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1017, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1017, 0},
{1018, 0, (EIF_REFERENCE (*)())&GE_new1018, 0},
{1019, 0, 0, 0},
{1020, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1020, 0},
{1021, 0, (EIF_REFERENCE (*)())&GE_new1021, 0},
{1022, 0, 0, 0},
{1023, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1023, 0},
{1024, 0, (EIF_REFERENCE (*)())&GE_new1024, 0},
{1025, 0, 0, 0},
{1026, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1026, 0},
{1027, 0, (EIF_REFERENCE (*)())&GE_new1027, 0},
{1028, 0, 0, 0},
{1029, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1029, 0},
{1030, 0, (EIF_REFERENCE (*)())&GE_new1030, 0},
{1031, 0, 0, 0},
{1032, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1032, 0},
{1033, 0, (EIF_REFERENCE (*)())&GE_new1033, 0},
{1034, 0, 0, 0},
{1035, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1035, 0},
{1036, 0, (EIF_REFERENCE (*)())&GE_new1036, 0},
{1037, 0, 0, 0},
{1038, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1038, 0},
{1039, 0, (EIF_REFERENCE (*)())&GE_new1039, 0},
{1040, 0, 0, 0},
{1041, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1041, 0},
{1042, 0, (EIF_REFERENCE (*)())&GE_new1042, 0},
{1043, 0, 0, 0},
{1044, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1044, 0},
{1045, 0, (EIF_REFERENCE (*)())&GE_new1045, 0},
{1046, 0, 0, 0},
{1047, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1047, 0},
{1048, 0, (EIF_REFERENCE (*)())&GE_new1048, 0},
{1049, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1050, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1050, 0},
{1051, 0, (EIF_REFERENCE (*)())&GE_new1051, 0},
{1052, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1052, 0},
{1053, 0, (EIF_REFERENCE (*)())&GE_new1053, 0},
{1054, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1054, 0},
{1055, 0, (EIF_REFERENCE (*)())&GE_new1055, 0},
{1056, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1057, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1057, 0},
{1058, 0, (EIF_REFERENCE (*)())&GE_new1058, 0},
{1059, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1060, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1060, 0},
{1061, 0, (EIF_REFERENCE (*)())&GE_new1061, 0},
{1062, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1063, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1063, 0},
{1064, 0, (EIF_REFERENCE (*)())&GE_new1064, 0},
{1065, 0, 0, 0},
{1066, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1066, 0},
{1067, 0, (EIF_REFERENCE (*)())&GE_new1067, 0},
{1068, 0, 0, 0},
{1069, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1069, 0},
{1070, 0, (EIF_REFERENCE (*)())&GE_new1070, 0},
{1071, 0, 0, 0},
{1072, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1072, 0},
{1073, 0, (EIF_REFERENCE (*)())&GE_new1073, 0},
{1074, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1074, 0},
{1075, 0, (EIF_REFERENCE (*)())&GE_new1075, 0},
{1076, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1077, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1077, 0},
{1078, 0, (EIF_REFERENCE (*)())&GE_new1078, 0},
{1079, 0, 0, 0},
{1080, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1080, 0},
{1081, 0, (EIF_REFERENCE (*)())&GE_new1081, 0},
{1082, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1083, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1083, 0},
{1084, 0, (EIF_REFERENCE (*)())&GE_new1084, 0},
{1085, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1085, 0},
{1086, 0, (EIF_REFERENCE (*)())&GE_new1086, 0},
{1087, 0, 0, 0},
{1088, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1088, 0},
{1089, 0, (EIF_REFERENCE (*)())&GE_new1089, 0},
{1090, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1091, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1091, 0},
{1092, 0, (EIF_REFERENCE (*)())&GE_new1092, 0},
{1093, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1093, 0},
{1094, 0, (EIF_REFERENCE (*)())&GE_new1094, 0},
{1095, 0, 0, 0},
{1096, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1096, 0},
{1097, 0, (EIF_REFERENCE (*)())&GE_new1097, 0},
{1098, 0, 0, 0},
{1099, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1099, 0},
{1100, 0, (EIF_REFERENCE (*)())&GE_new1100, 0},
{1101, 0, 0, 0},
{1102, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1102, 0},
{1103, 0, (EIF_REFERENCE (*)())&GE_new1103, 0},
{1104, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1105, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1105, 0},
{1106, 0, (EIF_REFERENCE (*)())&GE_new1106, 0},
{1107, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1108, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1108, 0},
{1109, 0, (EIF_REFERENCE (*)())&GE_new1109, 0},
{1110, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1111, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1111, 0},
{1112, 0, (EIF_REFERENCE (*)())&GE_new1112, 0},
{1113, 0, 0, 0},
{1114, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1114, 0},
{1115, 0, (EIF_REFERENCE (*)())&GE_new1115, 0},
{1116, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1117, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1117, 0},
{1118, 0, (EIF_REFERENCE (*)())&GE_new1118, 0},
{1119, 0, 0, 0},
{1120, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1120, 0},
{1121, 0, (EIF_REFERENCE (*)())&GE_new1121, 0},
{1122, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1123, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1123, 0},
{1124, 0, (EIF_REFERENCE (*)())&GE_new1124, 0},
{1125, 0, 0, 0},
{1126, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1126, 0},
{1127, 0, (EIF_REFERENCE (*)())&GE_new1127, 0},
{1128, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1128, 0},
{1129, 0, (EIF_REFERENCE (*)())&GE_new1129, 0},
{1130, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1131, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1131, 0},
{1132, 0, (EIF_REFERENCE (*)())&GE_new1132, 0},
{1133, 0, 0, 0},
{1134, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1134, 0},
{1135, 0, (EIF_REFERENCE (*)())&GE_new1135, 0},
{1136, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1137, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1137, 0},
{1138, 0, (EIF_REFERENCE (*)())&GE_new1138, 0},
{1139, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1139, 0},
{1140, 0, (EIF_REFERENCE (*)())&GE_new1140, 0},
{1141, 0, 0, 0},
{1142, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1142, 0},
{1143, 0, (EIF_REFERENCE (*)())&GE_new1143, 0},
{1144, 0, 0, 0},
{1145, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1145, 0},
{1146, 0, (EIF_REFERENCE (*)())&GE_new1146, 0},
{1147, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1148, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1148, 0},
{1149, 0, (EIF_REFERENCE (*)())&GE_new1149, 0},
{1150, 0, 0, 0},
{1151, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1151, 0},
{1152, 0, (EIF_REFERENCE (*)())&GE_new1152, 0},
{1153, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1153, 0},
{1154, 0, (EIF_REFERENCE (*)())&GE_new1154, 0},
{1155, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1156, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1156, 0},
{1157, 0, (EIF_REFERENCE (*)())&GE_new1157, 0},
{1158, 0, 0, 0},
{1159, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1159, 0},
{1160, 0, (EIF_REFERENCE (*)())&GE_new1160, 0},
{1161, 0, 0, 0},
{1162, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1162, 0},
{1163, 0, (EIF_REFERENCE (*)())&GE_new1163, 0},
{1164, 0, 0, 0},
{1165, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1165, 0},
{1166, 0, (EIF_REFERENCE (*)())&GE_new1166, 0},
{1167, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1168, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1168, 0},
{1169, 0, (EIF_REFERENCE (*)())&GE_new1169, 0},
{1170, 0, 0, 0},
{1171, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1171, 0},
{1172, 0, (EIF_REFERENCE (*)())&GE_new1172, 0},
{1173, 0, 0, 0},
{1174, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1174, 0},
{1175, 0, (EIF_REFERENCE (*)())&GE_new1175, 0},
{1176, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1176, 0},
{1177, 0, (EIF_REFERENCE (*)())&GE_new1177, 0},
{1178, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1178, 0},
{1179, 0, (EIF_REFERENCE (*)())&GE_new1179, 0},
{1180, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1181, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1181, 0},
{1182, 0, (EIF_REFERENCE (*)())&GE_new1182, 0},
{1183, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1183, 0},
{1184, 0, (EIF_REFERENCE (*)())&GE_new1184, 0},
{1185, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1186, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1186, 0},
{1187, 0, (EIF_REFERENCE (*)())&GE_new1187, 0},
{1188, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1188, 0},
{1189, 0, (EIF_REFERENCE (*)())&GE_new1189, 0},
{1190, 0, 0, 0},
{1191, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1191, 0},
{1192, 0, (EIF_REFERENCE (*)())&GE_new1192, 0},
{1193, 0, 0, 0},
{1194, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1194, 0},
{1195, 0, (EIF_REFERENCE (*)())&GE_new1195, 0},
{1196, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1196, 0},
{1197, 0, (EIF_REFERENCE (*)())&GE_new1197, 0},
{1198, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1199, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1199, 0},
{1200, 0, (EIF_REFERENCE (*)())&GE_new1200, 0},
{1201, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1202, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1202, 0},
{1203, 0, (EIF_REFERENCE (*)())&GE_new1203, 0},
{1204, 0, 0, 0},
{1205, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1205, 0},
{1206, 0, (EIF_REFERENCE (*)())&GE_new1206, 0},
{1207, 0, 0, 0},
{1208, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1208, 0},
{1209, 0, (EIF_REFERENCE (*)())&GE_new1209, 0},
{1210, 0, 0, 0},
{1211, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1211, 0},
{1212, 0, (EIF_REFERENCE (*)())&GE_new1212, 0},
{1213, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1213, 0},
{1214, 0, (EIF_REFERENCE (*)())&GE_new1214, 0},
{1215, 0, (EIF_REFERENCE (*)())&GE_new1215, 0},
{1216, 0, (EIF_REFERENCE (*)())&GE_new1216, 0},
{1217, 0, (EIF_REFERENCE (*)())&GE_new1217, 0},
{1218, 0, (EIF_REFERENCE (*)())&GE_new1218, 0},
{1219, 0, (EIF_REFERENCE (*)())&GE_new1219, 0},
{1220, 0, 0, 0},
{1221, 0, (EIF_REFERENCE (*)())&GE_new1221, 0},
{1222, 0, (EIF_REFERENCE (*)())&GE_new1222, 0},
{1223, 0, 0, 0},
{1224, 0, (EIF_REFERENCE (*)())&GE_new1224, 0},
{1225, 0, (EIF_REFERENCE (*)())&GE_new1225, 0},
{1226, 0, (EIF_REFERENCE (*)())&GE_new1226, 0},
{1227, 0, (EIF_REFERENCE (*)())&GE_new1227, 0},
{1228, 0, (EIF_REFERENCE (*)())&GE_new1228, 0},
{1229, 0, (EIF_REFERENCE (*)())&GE_new1229, 0},
{1230, 0, (EIF_REFERENCE (*)())&GE_new1230, 0},
{1231, 0, (EIF_REFERENCE (*)())&GE_new1231, 0},
{1232, 0, (EIF_REFERENCE (*)())&GE_new1232, 0},
{1233, 0, (EIF_REFERENCE (*)())&GE_new1233, 0},
{1234, 0, (EIF_REFERENCE (*)())&GE_new1234, 0},
{1235, 0, (EIF_REFERENCE (*)())&GE_new1235, 0},
{1236, 0, (EIF_REFERENCE (*)())&GE_new1236, 0},
{1237, 0, (EIF_REFERENCE (*)())&GE_new1237, 0},
{1238, 0, (EIF_REFERENCE (*)())&GE_new1238, 0},
{1239, 0, (EIF_REFERENCE (*)())&GE_new1239, 0},
{1240, 0, (EIF_REFERENCE (*)())&GE_new1240, 0},
{1241, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1242, 0, (EIF_REFERENCE (*)())&GE_new1242, 0},
{1243, 0, (EIF_REFERENCE (*)())&GE_new1243, 0},
{1244, 0, (EIF_REFERENCE (*)())&GE_new1244, 0},
{1245, 0, 0, 0},
{1246, 0, (EIF_REFERENCE (*)())&GE_new1246, 0},
{1247, 0, (EIF_REFERENCE (*)())&GE_new1247, 0},
{1248, 0, (EIF_REFERENCE (*)())&GE_new1248, 0},
{1249, 0, (EIF_REFERENCE (*)())&GE_new1249, 0},
{1250, 0, (EIF_REFERENCE (*)())&GE_new1250, 0},
{1251, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1251, 0},
{1252, 0, (EIF_REFERENCE (*)())&GE_new1252, 0},
{1253, 0, (EIF_REFERENCE (*)())&GE_new1253, 0},
{1254, 0, 0, 0},
{1255, 0, (EIF_REFERENCE (*)())&GE_new1255, 0},
{1256, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1257, 0, 0, 0},
{1258, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1258, 0},
{1259, 0, (EIF_REFERENCE (*)())&GE_new1259, 0},
{1260, 0, (EIF_REFERENCE (*)())&GE_new1260, 0},
{1261, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1261, 0},
{1262, 0, (EIF_REFERENCE (*)())&GE_new1262, 0},
{1263, 0, (EIF_REFERENCE (*)())&GE_new1263, 0},
{1264, 0, 0, 0},
{1265, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1265, 0},
{1266, 0, (EIF_REFERENCE (*)())&GE_new1266, 0},
{1267, 0, (EIF_REFERENCE (*)())&GE_new1267, 0},
{1268, 0, 0, 0},
{1269, 0, 0, 0},
{1270, 0, 0, 0},
{1271, 0, (EIF_REFERENCE (*)())&GE_new1271, 0},
{1272, 0, 0, 0},
{1273, 0, (EIF_REFERENCE (*)())&GE_new1273, 0},
{1274, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1274, 0},
{1275, 0, (EIF_REFERENCE (*)())&GE_new1275, 0},
{1276, 0, (EIF_REFERENCE (*)())&GE_new1276, 0},
{1277, 0, 0, 0},
{1278, 0, 0, 0},
{1279, 0, (EIF_REFERENCE (*)())&GE_new1279, 0},
{1280, 0, 0, 0},
{1281, 0, 0, 0},
{1282, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1282, 0},
{1283, 0, (EIF_REFERENCE (*)())&GE_new1283, 0},
{1284, 0, (EIF_REFERENCE (*)())&GE_new1284, 0},
{1285, 0, 0, 0},
{1286, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1286, 0},
{1287, 0, (EIF_REFERENCE (*)())&GE_new1287, 0},
{1288, 0, (EIF_REFERENCE (*)())&GE_new1288, 0},
{1289, 0, 0, 0},
{1290, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1290, 0},
{1291, 0, (EIF_REFERENCE (*)())&GE_new1291, 0},
{1292, 0, (EIF_REFERENCE (*)())&GE_new1292, 0},
{1293, 0, 0, 0},
{1294, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1294, 0},
{1295, 0, (EIF_REFERENCE (*)())&GE_new1295, 0},
{1296, 0, (EIF_REFERENCE (*)())&GE_new1296, 0},
{1297, 0, 0, 0},
{1298, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1298, 0},
{1299, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1300, 0, (EIF_REFERENCE (*)())&GE_new1300, 0},
{1301, 0, (EIF_REFERENCE (*)())&GE_new1301, 0},
{1302, 0, (EIF_REFERENCE (*)())&GE_new1302, 0},
{1303, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1303, 0},
{1304, 0, (EIF_REFERENCE (*)())&GE_new1304, 0},
{1305, 0, 0, 0},
{1306, 0, 0, 0},
{1307, 0, 0, 0},
{1308, 0, 0, 0},
{1309, 0, (EIF_REFERENCE (*)())&GE_new1309, 0},
{1310, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1310, 0},
{1311, 0, (EIF_REFERENCE (*)())&GE_new1311, 0},
{1312, 0, (EIF_REFERENCE (*)())&GE_new1312, 0},
{1313, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1313, 0},
{1314, 0, 0, 0},
{1315, 0, 0, 0},
{1316, 0, (EIF_REFERENCE (*)())&GE_new1316, 0},
{1317, 0, (EIF_REFERENCE (*)())&GE_new1317, 0},
{1318, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1318, 0},
{1319, 0, 0, 0},
{1320, 0, 0, 0},
{1321, 0, (EIF_REFERENCE (*)())&GE_new1321, 0},
{1322, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1322, 0},
{1323, 0, 0, 0},
{1324, 0, 0, 0},
{1325, 0, (EIF_REFERENCE (*)())&GE_new1325, 0},
{1326, 0, (EIF_REFERENCE (*)())&GE_new1326, 0},
{1327, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1327, 0},
{1328, 0, (EIF_REFERENCE (*)())&GE_new1328, 0},
{1329, 0, (EIF_REFERENCE (*)())&GE_new1329, 0},
{1330, 0, 0, 0},
{1331, 0, (EIF_REFERENCE (*)())&GE_new1331, 0},
{1332, 0, 0, 0},
{1333, 0, 0, 0},
{1334, 0, 0, 0},
{1335, 0, 0, 0},
{1336, 0, 0, 0},
{1337, 0, (EIF_REFERENCE (*)())&GE_new1337, 0},
{1338, 0, (EIF_REFERENCE (*)())&GE_new1338, 0},
{1339, 0, (EIF_REFERENCE (*)())&GE_new1339, 0},
{1340, 0, 0, 0},
{1341, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1342, 0, (EIF_REFERENCE (*)())&GE_new1342, 0},
{1343, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1343, 0},
{1344, GE_TYPE_FLAG_EXPANDED, 0, 0},
{1345, 0, (EIF_REFERENCE (*)())&GE_new1345, 0},
{1346, 0, (EIF_REFERENCE (*)())&GE_new1346, 0},
{1347, 0, 0, 0},
{1348, 0, 0, 0},
{1349, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1349, 0},
{1350, 0, (EIF_REFERENCE (*)())&GE_new1350, 0},
{1351, 0, (EIF_REFERENCE (*)())&GE_new1351, 0},
{1352, 0, (EIF_REFERENCE (*)())&GE_new1352, 0},
{1353, 0, (EIF_REFERENCE (*)())&GE_new1353, 0},
{1354, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1355, 0, 0, 0},
{1356, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1357, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1358, 0, 0, 0},
{1359, 0, (EIF_REFERENCE (*)())&GE_new1359, 0},
{1360, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1361, 0, (EIF_REFERENCE (*)())&GE_new1361, 0},
{1362, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1363, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1363, 0},
{1364, 0, (EIF_REFERENCE (*)())&GE_new1364, 0},
{1365, 0, (EIF_REFERENCE (*)())&GE_new1365, 0},
{1366, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1366, 0},
{1367, 0, (EIF_REFERENCE (*)())&GE_new1367, 0},
{1368, 0, (EIF_REFERENCE (*)())&GE_new1368, 0},
{1369, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1369, 0},
{1370, 0, (EIF_REFERENCE (*)())&GE_new1370, 0},
{1371, 0, (EIF_REFERENCE (*)())&GE_new1371, 0},
{1372, 0, (EIF_REFERENCE (*)())&GE_new1372, 0},
{1373, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1373, 0},
{1374, 0, (EIF_REFERENCE (*)())&GE_new1374, 0},
{1375, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1375, 0},
{1376, 0, (EIF_REFERENCE (*)())&GE_new1376, 0},
{1377, 0, (EIF_REFERENCE (*)())&GE_new1377, 0},
{1378, 0, 0, 0},
{1379, 0, (EIF_REFERENCE (*)())&GE_new1379, 0},
{1380, 0, (EIF_REFERENCE (*)())&GE_new1380, 0},
{1381, 0, 0, 0},
{1382, 0, 0, 0},
{1383, 0, 0, 0},
{1384, 0, (EIF_REFERENCE (*)())&GE_new1384, 0},
{1385, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1385, 0},
{1386, 0, (EIF_REFERENCE (*)())&GE_new1386, 0},
{1387, 0, (EIF_REFERENCE (*)())&GE_new1387, 0},
{1388, 0, (EIF_REFERENCE (*)())&GE_new1388, 0},
{1389, 0, 0, 0},
{1390, 0, 0, 0},
{1391, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1392, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1392, 0},
{1393, 0, (EIF_REFERENCE (*)())&GE_new1393, 0},
{1394, 0, (EIF_REFERENCE (*)())&GE_new1394, 0},
{1395, 0, (EIF_REFERENCE (*)())&GE_new1395, 0},
{1396, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1397, 0, 0, 0},
{1398, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1398, 0},
{1399, 0, (EIF_REFERENCE (*)())&GE_new1399, 0},
{1400, 0, (EIF_REFERENCE (*)())&GE_new1400, 0},
{1401, 0, 0, 0},
{1402, 0, (EIF_REFERENCE (*)())&GE_new1402, 0},
{1403, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1404, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1404, 0},
{1405, 0, (EIF_REFERENCE (*)())&GE_new1405, 0},
{1406, 0, (EIF_REFERENCE (*)())&GE_new1406, 0},
{1407, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1407, 0},
{1408, 0, 0, 0},
{1409, 0, (EIF_REFERENCE (*)())&GE_new1409, 0},
{1410, 0, 0, 0},
{1411, 0, (EIF_REFERENCE (*)())&GE_new1411, 0},
{1412, 0, 0, 0},
{1413, 0, 0, 0},
{1414, 0, 0, 0},
{1415, 0, (EIF_REFERENCE (*)())&GE_new1415, 0},
{1416, 0, (EIF_REFERENCE (*)())&GE_new1416, 0},
{1417, 0, 0, 0},
{1418, 0, (EIF_REFERENCE (*)())&GE_new1418, 0},
{1419, 0, (EIF_REFERENCE (*)())&GE_new1419, 0},
{1420, 0, 0, 0},
{1421, 0, 0, 0},
{1422, 0, (EIF_REFERENCE (*)())&GE_new1422, 0},
{1423, 0, 0, 0},
{1424, 0, (EIF_REFERENCE (*)())&GE_new1424, 0},
{1425, 0, 0, 0},
{1426, 0, (EIF_REFERENCE (*)())&GE_new1426, 0},
{1427, 0, (EIF_REFERENCE (*)())&GE_new1427, 0},
{1428, 0, (EIF_REFERENCE (*)())&GE_new1428, 0},
{1429, 0, (EIF_REFERENCE (*)())&GE_new1429, 0},
{1430, 0, (EIF_REFERENCE (*)())&GE_new1430, 0},
{1431, 0, (EIF_REFERENCE (*)())&GE_new1431, 0},
{1432, 0, (EIF_REFERENCE (*)())&GE_new1432, 0},
{1433, 0, (EIF_REFERENCE (*)())&GE_new1433, 0},
{1434, 0, (EIF_REFERENCE (*)())&GE_new1434, 0},
{1435, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1436, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1437, 0, 0, 0},
{1438, 0, (EIF_REFERENCE (*)())&GE_new1438, 0},
{1439, 0, (EIF_REFERENCE (*)())&GE_new1439, 0},
{1440, 0, 0, 0},
{1441, 0, 0, 0},
{1442, 0, 0, 0},
{1443, 0, 0, 0},
{1444, 0, 0, 0},
{1445, 0, 0, 0},
{1446, 0, 0, 0},
{1447, 0, 0, 0},
{1448, 0, 0, 0},
{1449, 0, 0, 0},
{1450, 0, 0, 0},
{1451, 0, 0, 0},
{1452, 0, 0, 0},
{1453, 0, (EIF_REFERENCE (*)())&GE_new1453, 0},
{1454, 0, 0, 0},
{1455, 0, (EIF_REFERENCE (*)())&GE_new1455, 0},
{1456, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1457, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1458, 0, 0, 0},
{1459, 0, (EIF_REFERENCE (*)())&GE_new1459, 0},
{1460, 0, 0, 0},
{1461, 0, (EIF_REFERENCE (*)())&GE_new1461, 0},
{1462, 0, 0, 0},
{1463, 0, (EIF_REFERENCE (*)())&GE_new1463, 0},
{1464, 0, (EIF_REFERENCE (*)())&GE_new1464, 0},
{1465, 0, 0, 0},
{1466, 0, (EIF_REFERENCE (*)())&GE_new1466, 0},
{1467, 0, (EIF_REFERENCE (*)())&GE_new1467, 0},
{1468, 0, 0, 0},
{1469, 0, (EIF_REFERENCE (*)())&GE_new1469, 0},
{1470, 0, (EIF_REFERENCE (*)())&GE_new1470, 0},
{1471, 0, 0, 0},
{1472, 0, (EIF_REFERENCE (*)())&GE_new1472, 0},
{1473, 0, (EIF_REFERENCE (*)())&GE_new1473, 0},
{1474, 0, 0, 0},
{1475, 0, (EIF_REFERENCE (*)())&GE_new1475, 0},
{1476, 0, (EIF_REFERENCE (*)())&GE_new1476, 0},
{1477, 0, 0, 0},
{1478, 0, (EIF_REFERENCE (*)())&GE_new1478, 0},
{1479, 0, (EIF_REFERENCE (*)())&GE_new1479, 0},
{1480, 0, 0, 0},
{1481, 0, (EIF_REFERENCE (*)())&GE_new1481, 0},
{1482, 0, (EIF_REFERENCE (*)())&GE_new1482, 0},
{1483, 0, 0, 0},
{1484, 0, (EIF_REFERENCE (*)())&GE_new1484, 0},
{1485, 0, (EIF_REFERENCE (*)())&GE_new1485, 0},
{1486, 0, 0, 0},
{1487, 0, (EIF_REFERENCE (*)())&GE_new1487, 0},
{1488, 0, (EIF_REFERENCE (*)())&GE_new1488, 0},
{1489, 0, 0, 0},
{1490, 0, (EIF_REFERENCE (*)())&GE_new1490, 0},
{1491, 0, 0, 0},
{1492, 0, (EIF_REFERENCE (*)())&GE_new1492, 0},
{1493, 0, (EIF_REFERENCE (*)())&GE_new1493, 0},
{1494, 0, 0, 0},
{1495, 0, 0, 0},
{1496, 0, 0, 0},
{1497, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1497, 0},
{1498, 0, (EIF_REFERENCE (*)())&GE_new1498, 0},
{1499, 0, 0, 0},
{1500, 0, (EIF_REFERENCE (*)())&GE_new1500, 0},
{1501, 0, (EIF_REFERENCE (*)())&GE_new1501, 0},
{1502, 0, 0, 0},
{1503, 0, (EIF_REFERENCE (*)())&GE_new1503, 0},
{1504, 0, 0, 0},
{1505, 0, (EIF_REFERENCE (*)())&GE_new1505, 0},
{1506, 0, (EIF_REFERENCE (*)())&GE_new1506, 0},
{1507, 0, 0, 0},
{1508, 0, (EIF_REFERENCE (*)())&GE_new1508, 0},
{1509, 0, (EIF_REFERENCE (*)())&GE_new1509, 0},
{1510, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1511, 0, 0, 0},
{1512, 0, 0, 0},
{1513, 0, 0, 0},
{1514, 0, 0, 0},
{1515, 0, 0, 0},
{1516, 0, 0, 0},
{1517, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1518, 0, (EIF_REFERENCE (*)())&GE_new1518, 0},
{1519, 0, (EIF_REFERENCE (*)())&GE_new1519, 0},
{1520, 0, (EIF_REFERENCE (*)())&GE_new1520, 0},
{1521, 0, (EIF_REFERENCE (*)())&GE_new1521, 0},
{1522, 0, (EIF_REFERENCE (*)())&GE_new1522, 0},
{1523, 0, (EIF_REFERENCE (*)())&GE_new1523, 0},
{1524, 0, (EIF_REFERENCE (*)())&GE_new1524, 0},
{1525, 0, (EIF_REFERENCE (*)())&GE_new1525, 0},
{1526, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1526, 0},
{1527, 0, 0, 0},
{1528, 0, (EIF_REFERENCE (*)())&GE_new1528, 0},
{1529, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1530, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1531, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1532, 0, (EIF_REFERENCE (*)())&GE_new1532, 0},
{1533, 0, (EIF_REFERENCE (*)())&GE_new1533, 0},
{1534, 0, (EIF_REFERENCE (*)())&GE_new1534, 0},
{1535, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1536, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1537, 0, (EIF_REFERENCE (*)())&GE_new1537, 0},
{1538, GE_TYPE_FLAG_EXPANDED, 0, 0},
{1539, 0, 0, 0},
{1540, 0, (EIF_REFERENCE (*)())&GE_new1540, 0},
{1541, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1542, 0, (EIF_REFERENCE (*)())&GE_new1542, 0},
{1543, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1544, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1545, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1546, 0, (EIF_REFERENCE (*)())&GE_new1546, 0},
{1547, 0, (EIF_REFERENCE (*)())&GE_new1547, 0},
{1548, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1548, 0},
{1549, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1549, 0},
{1550, 0, (EIF_REFERENCE (*)())&GE_new1550, 0},
{1551, 0, (EIF_REFERENCE (*)())&GE_new1551, 0},
{1552, 0, 0, 0},
{1553, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1553, 0},
{1554, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1554, 0},
{1555, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1555, 0},
{1556, 0, (EIF_REFERENCE (*)())&GE_new1556, 0},
{1557, 0, (EIF_REFERENCE (*)())&GE_new1557, 0},
{1558, 0, (EIF_REFERENCE (*)())&GE_new1558, 0},
{1559, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1560, 0, 0, 0},
{1561, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1562, 0, (EIF_REFERENCE (*)())&GE_new1562, 0},
{1563, 0, 0, 0},
{1564, 0, (EIF_REFERENCE (*)())&GE_new1564, 0},
{1565, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1566, 0, (EIF_REFERENCE (*)())&GE_new1566, 0},
{1567, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1568, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1569, 0, (EIF_REFERENCE (*)())&GE_new1569, 0},
{1570, 0, 0, 0},
{1571, 0, 0, 0},
{1572, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1572, 0},
{1573, 0, (EIF_REFERENCE (*)())&GE_new1573, 0},
{1574, 0, (EIF_REFERENCE (*)())&GE_new1574, 0},
{1575, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1575, 0},
{1576, 0, (EIF_REFERENCE (*)())&GE_new1576, 0},
{1577, 0, (EIF_REFERENCE (*)())&GE_new1577, 0},
{1578, 0, (EIF_REFERENCE (*)())&GE_new1578, 0},
{1579, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1580, 0, 0, 0},
{1581, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1582, 0, 0, 0},
{1583, 0, (EIF_REFERENCE (*)())&GE_new1583, 0},
{1584, 0, 0, 0},
{1585, 0, (EIF_REFERENCE (*)())&GE_new1585, 0},
{1586, 0, 0, 0},
{1587, 0, 0, 0},
{1588, 0, 0, 0},
{1589, 0, 0, 0},
{1590, 0, 0, 0},
{1591, 0, 0, 0},
{1592, 0, 0, 0},
{1593, 0, 0, 0},
{1594, 0, 0, 0},
{1595, 0, 0, 0},
{1596, 0, 0, 0},
{1597, 0, 0, 0},
{1598, 0, 0, 0},
{1599, 0, 0, 0},
{1600, 0, 0, 0},
{1601, 0, 0, 0},
{1602, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1603, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1604, 0, 0, 0},
{1605, 0, 0, 0},
{1606, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1607, 0, 0, 0},
{1608, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1609, 0, 0, 0},
{1610, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1611, 0, 0, 0},
{1612, 0, 0, 0},
{1613, 0, 0, 0},
{1614, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1615, 0, 0, 0},
{1616, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1617, 0, 0, 0},
{1618, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1619, 0, 0, 0},
{1620, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1621, 0, 0, 0},
{1622, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1623, 0, 0, 0},
{1624, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1625, 0, (EIF_REFERENCE (*)())&GE_new1625, 0},
{1626, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1627, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1628, 0, 0, 0},
{1629, 0, 0, 0},
{1630, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1631, 0, (EIF_REFERENCE (*)())&GE_new1631, 0},
{1632, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1633, 0, 0, 0},
{1634, 0, 0, 0},
{1635, 0, 0, 0},
{1636, 0, 0, 0},
{1637, 0, 0, 0},
{1638, 0, 0, 0},
{1639, 0, 0, 0},
{1640, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1641, 0, 0, 0},
{1642, 0, 0, 0},
{1643, 0, 0, 0},
{1644, 0, 0, 0},
{1645, 0, 0, 0},
{1646, 0, 0, 0},
{1647, 0, 0, 0},
{1648, 0, 0, 0},
{1649, 0, 0, 0},
{1650, 0, 0, 0},
{1651, 0, 0, 0},
{1652, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1653, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1654, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1655, 0, (EIF_REFERENCE (*)())&GE_new1655, 0},
{1656, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1657, 0, 0, 0},
{1658, 0, 0, 0},
{1659, 0, 0, 0},
{1660, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1661, 0, 0, 0},
{1662, 0, 0, 0},
{1663, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1664, 0, 0, 0},
{1665, 0, 0, 0},
{1666, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1667, 0, 0, 0},
{1668, 0, 0, 0},
{1669, 0, 0, 0},
{1670, 0, 0, 0},
{1671, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1672, 0, 0, 0},
{1673, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1674, 0, 0, 0},
{1675, 0, (EIF_REFERENCE (*)())&GE_new1675, 0},
{1676, 0, (EIF_REFERENCE (*)())&GE_new1676, 0},
{1677, 0, (EIF_REFERENCE (*)())&GE_new1677, 0},
{1678, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1679, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1680, 0, 0, 0},
{1681, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1682, 0, 0, 0},
{1683, 0, 0, 0},
{1684, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1685, 0, 0, 0},
{1686, 0, 0, 0},
{1687, 0, 0, 0},
{1688, 0, 0, 0},
{1689, 0, 0, 0},
{1690, 0, 0, 0},
{1691, 0, 0, 0},
{1692, 0, 0, 0},
{1693, 0, 0, 0},
{1694, 0, 0, 0},
{1695, 0, 0, 0},
{1696, 0, 0, 0},
{1697, 0, 0, 0},
{1698, 0, 0, 0},
{1699, 0, 0, 0},
{1700, 0, 0, 0},
{1701, 0, 0, 0},
{1702, 0, 0, 0},
{1703, 0, 0, 0},
{1704, 0, 0, 0},
{1705, 0, 0, 0},
{1706, 0, 0, 0},
{1707, 0, 0, 0},
{1708, 0, 0, 0},
{1709, 0, 0, 0},
{1710, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1711, 0, 0, 0},
{1712, 0, (EIF_REFERENCE (*)())&GE_new1712, 0},
{1713, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1714, 0, 0, 0},
{1715, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1716, 0, (EIF_REFERENCE (*)())&GE_new1716, 0},
{1717, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1718, 0, (EIF_REFERENCE (*)())&GE_new1718, 0},
{1719, 0, 0, 0},
{1720, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1721, 0, (EIF_REFERENCE (*)())&GE_new1721, 0},
{1722, 0, (EIF_REFERENCE (*)())&GE_new1722, 0},
{1723, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1724, 0, (EIF_REFERENCE (*)())&GE_new1724, 0},
{1725, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1726, 0, (EIF_REFERENCE (*)())&GE_new1726, 0},
{1727, 0, 0, 0},
{1728, 0, (EIF_REFERENCE (*)())&GE_new1728, 0},
{1729, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1730, 0, (EIF_REFERENCE (*)())&GE_new1730, 0},
{1731, 0, (EIF_REFERENCE (*)())&GE_new1731, 0},
{1732, 0, 0, 0},
{1733, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1734, 0, (EIF_REFERENCE (*)())&GE_new1734, 0},
{1735, 0, (EIF_REFERENCE (*)())&GE_new1735, 0},
{1736, 0, 0, 0},
{1737, 0, 0, 0},
{1738, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1739, 0, 0, 0},
{1740, 0, 0, 0},
{1741, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1742, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1743, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1744, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1745, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1746, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1747, 0, 0, 0},
{1748, 0, (EIF_REFERENCE (*)())&GE_new1748, 0},
{1749, 0, (EIF_REFERENCE (*)())&GE_new1749, 0},
{1750, 0, (EIF_REFERENCE (*)())&GE_new1750, 0},
{1751, 0, 0, 0},
{1752, 0, 0, 0},
{1753, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1753, 0},
{1754, 0, (EIF_REFERENCE (*)())&GE_new1754, 0},
{1755, 0, (EIF_REFERENCE (*)())&GE_new1755, 0},
{1756, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1756, 0},
{1757, 0, (EIF_REFERENCE (*)())&GE_new1757, 0},
{1758, 0, (EIF_REFERENCE (*)())&GE_new1758, 0},
{1759, 0, (EIF_REFERENCE (*)())&GE_new1759, 0},
{1760, GE_TYPE_FLAG_TUPLE, 0, 0},
{1761, 0, 0, 0},
{1762, 0, (EIF_REFERENCE (*)())&GE_new1762, 0},
{1763, 0, (EIF_REFERENCE (*)())&GE_new1763, 0},
{1764, 0, (EIF_REFERENCE (*)())&GE_new1764, 0},
{1765, 0, (EIF_REFERENCE (*)())&GE_new1765, 0},
{1766, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1767, 0, 0, 0},
{1768, 0, (EIF_REFERENCE (*)())&GE_new1768, 0},
{1769, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1770, 0, 0, 0},
{1771, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1771, 0},
{1772, 0, (EIF_REFERENCE (*)())&GE_new1772, 0},
{1773, 0, (EIF_REFERENCE (*)())&GE_new1773, 0},
{1774, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1775, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1776, 0, (EIF_REFERENCE (*)())&GE_new1776, 0},
{1777, 0, (EIF_REFERENCE (*)())&GE_new1777, 0},
{1778, 0, (EIF_REFERENCE (*)())&GE_new1778, 0},
{1779, 0, (EIF_REFERENCE (*)())&GE_new1779, 0},
{1780, 0, (EIF_REFERENCE (*)())&GE_new1780, 0},
{1781, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1782, 0, 0, 0},
{1783, 0, (EIF_REFERENCE (*)())&GE_new1783, 0},
{1784, 0, (EIF_REFERENCE (*)())&GE_new1784, 0},
{1785, 0, (EIF_REFERENCE (*)())&GE_new1785, 0},
{1786, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1786, 0},
{1787, 0, (EIF_REFERENCE (*)())&GE_new1787, 0},
{1788, 0, (EIF_REFERENCE (*)())&GE_new1788, 0},
{1789, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1789, 0},
{1790, 0, 0, 0},
{1791, 0, 0, 0},
{1792, 0, (EIF_REFERENCE (*)())&GE_new1792, 0},
{1793, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1793, 0},
{1794, 0, (EIF_REFERENCE (*)())&GE_new1794, 0},
{1795, 0, (EIF_REFERENCE (*)())&GE_new1795, 0},
{1796, 0, (EIF_REFERENCE (*)())&GE_new1796, 0},
{1797, 0, (EIF_REFERENCE (*)())&GE_new1797, 0},
{1798, GE_TYPE_FLAG_TUPLE, 0, 0},
{1799, 0, 0, 0},
{1800, 0, 0, 0},
{1801, 0, (EIF_REFERENCE (*)())&GE_new1801, 0},
{1802, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1802, 0},
{1803, 0, (EIF_REFERENCE (*)())&GE_new1803, 0},
{1804, 0, (EIF_REFERENCE (*)())&GE_new1804, 0},
{1805, 0, (EIF_REFERENCE (*)())&GE_new1805, 0},
{1806, 0, (EIF_REFERENCE (*)())&GE_new1806, 0},
{1807, 0, (EIF_REFERENCE (*)())&GE_new1807, 0},
{1808, 0, (EIF_REFERENCE (*)())&GE_new1808, 0},
{1809, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1809, 0},
{1810, 0, 0, 0},
{1811, 0, 0, 0},
{1812, 0, (EIF_REFERENCE (*)())&GE_new1812, 0},
{1813, 0, 0, 0},
{1814, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1814, 0},
{1815, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1816, 0, (EIF_REFERENCE (*)())&GE_new1816, 0},
{1817, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1817, 0},
{1818, 0, (EIF_REFERENCE (*)())&GE_new1818, 0},
{1819, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1820, 0, (EIF_REFERENCE (*)())&GE_new1820, 0},
{1821, 0, 0, 0},
{1822, 0, (EIF_REFERENCE (*)())&GE_new1822, 0},
{1823, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1824, 0, 0, 0},
{1825, 0, (EIF_REFERENCE (*)())&GE_new1825, 0},
{1826, 0, (EIF_REFERENCE (*)())&GE_new1826, 0},
{1827, 0, 0, 0},
{1828, 0, (EIF_REFERENCE (*)())&GE_new1828, 0},
{1829, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1829, 0},
{1830, 0, 0, 0},
{1831, 0, 0, 0},
{1832, 0, 0, 0},
{1833, 0, 0, 0},
{1834, 0, (EIF_REFERENCE (*)())&GE_new1834, 0},
{1835, 0, (EIF_REFERENCE (*)())&GE_new1835, 0},
{1836, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1837, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1838, 0, 0, 0},
{1839, 0, (EIF_REFERENCE (*)())&GE_new1839, 0},
{1840, 0, (EIF_REFERENCE (*)())&GE_new1840, 0},
{1841, 0, (EIF_REFERENCE (*)())&GE_new1841, 0},
{1842, 0, (EIF_REFERENCE (*)())&GE_new1842, 0},
{1843, 0, 0, 0},
{1844, 0, (EIF_REFERENCE (*)())&GE_new1844, 0},
{1845, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1846, 0, (EIF_REFERENCE (*)())&GE_new1846, 0},
{1847, 0, 0, 0},
{1848, 0, (EIF_REFERENCE (*)())&GE_new1848, 0},
{1849, 0, (EIF_REFERENCE (*)())&GE_new1849, 0},
{1850, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1850, 0},
{1851, 0, (EIF_REFERENCE (*)())&GE_new1851, 0},
{1852, 0, (EIF_REFERENCE (*)())&GE_new1852, 0},
{1853, GE_TYPE_FLAG_TUPLE, 0, 0},
{1854, 0, (EIF_REFERENCE (*)())&GE_new1854, 0},
{1855, 0, (EIF_REFERENCE (*)())&GE_new1855, 0},
{1856, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1856, 0},
{1857, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1857, 0},
{1858, 0, (EIF_REFERENCE (*)())&GE_new1858, 0},
{1859, 0, (EIF_REFERENCE (*)())&GE_new1859, 0},
{1860, GE_TYPE_FLAG_TUPLE, 0, 0},
{1861, 0, (EIF_REFERENCE (*)())&GE_new1861, 0},
{1862, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1862, 0},
{1863, 0, (EIF_REFERENCE (*)())&GE_new1863, 0},
{1864, 0, (EIF_REFERENCE (*)())&GE_new1864, 0},
{1865, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1865, 0},
{1866, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1866, 0},
{1867, 0, (EIF_REFERENCE (*)())&GE_new1867, 0},
{1868, 0, (EIF_REFERENCE (*)())&GE_new1868, 0},
{1869, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1869, 0},
{1870, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1870, 0},
{1871, 0, (EIF_REFERENCE (*)())&GE_new1871, 0},
{1872, 0, (EIF_REFERENCE (*)())&GE_new1872, 0},
{1873, 0, 0, 0},
{1874, 0, (EIF_REFERENCE (*)())&GE_new1874, 0},
{1875, 0, 0, 0},
{1876, 0, (EIF_REFERENCE (*)())&GE_new1876, 0},
{1877, 0, 0, 0},
{1878, 0, (EIF_REFERENCE (*)())&GE_new1878, 0},
{1879, 0, 0, 0},
{1880, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1880, 0},
{1881, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1882, 0, (EIF_REFERENCE (*)())&GE_new1882, 0},
{1883, 0, 0, 0},
{1884, 0, 0, 0},
{1885, 0, 0, 0},
{1886, 0, (EIF_REFERENCE (*)())&GE_new1886, 0},
{1887, 0, (EIF_REFERENCE (*)())&GE_new1887, 0},
{1888, 0, 0, 0},
{1889, 0, 0, 0},
{1890, 0, 0, 0},
{1891, 0, 0, 0},
{1892, 0, (EIF_REFERENCE (*)())&GE_new1892, 0},
{1893, 0, 0, 0},
{1894, 0, (EIF_REFERENCE (*)())&GE_new1894, 0},
{1895, 0, (EIF_REFERENCE (*)())&GE_new1895, 0},
{1896, 0, (EIF_REFERENCE (*)())&GE_new1896, 0},
{1897, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1897, 0},
{1898, 0, 0, 0},
{1899, 0, 0, 0},
{1900, 0, 0, 0},
{1901, 0, 0, 0},
{1902, 0, 0, 0},
{1903, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1903, 0},
{1904, 0, (EIF_REFERENCE (*)())&GE_new1904, 0},
{1905, 0, (EIF_REFERENCE (*)())&GE_new1905, 0},
{1906, 0, 0, 0},
{1907, 0, 0, 0},
{1908, 0, 0, 0},
{1909, 0, (EIF_REFERENCE (*)())&GE_new1909, 0},
{1910, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1910, 0},
{1911, 0, 0, 0},
{1912, 0, (EIF_REFERENCE (*)())&GE_new1912, 0},
{1913, 0, (EIF_REFERENCE (*)())&GE_new1913, 0},
{1914, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1914, 0},
{1915, 0, (EIF_REFERENCE (*)())&GE_new1915, 0},
{1916, 0, 0, 0},
{1917, 0, (EIF_REFERENCE (*)())&GE_new1917, 0},
{1918, 0, (EIF_REFERENCE (*)())&GE_new1918, 0},
{1919, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1919, 0},
{1920, 0, (EIF_REFERENCE (*)())&GE_new1920, 0},
{1921, 0, (EIF_REFERENCE (*)())&GE_new1921, 0},
{1922, 0, 0, 0},
{1923, 0, (EIF_REFERENCE (*)())&GE_new1923, 0},
{1924, 0, (EIF_REFERENCE (*)())&GE_new1924, 0},
{1925, 0, (EIF_REFERENCE (*)())&GE_new1925, 0},
{1926, 0, (EIF_REFERENCE (*)())&GE_new1926, 0},
{1927, 0, 0, 0},
{1928, 0, 0, 0},
{1929, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1930, 0, (EIF_REFERENCE (*)())&GE_new1930, 0},
{1931, 0, (EIF_REFERENCE (*)())&GE_new1931, 0},
{1932, 0, (EIF_REFERENCE (*)())&GE_new1932, 0},
{1933, 0, (EIF_REFERENCE (*)())&GE_new1933, 0},
{1934, 0, (EIF_REFERENCE (*)())&GE_new1934, 0},
{1935, 0, (EIF_REFERENCE (*)())&GE_new1935, 0},
{1936, 0, (EIF_REFERENCE (*)())&GE_new1936, 0},
{1937, 0, (EIF_REFERENCE (*)())&GE_new1937, 0},
{1938, 0, (EIF_REFERENCE (*)())&GE_new1938, 0},
{1939, 0, (EIF_REFERENCE (*)())&GE_new1939, 0},
{1940, 0, 0, 0},
{1941, 0, (EIF_REFERENCE (*)())&GE_new1941, 0},
{1942, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1943, 0, (EIF_REFERENCE (*)())&GE_new1943, 0},
{1944, 0, (EIF_REFERENCE (*)())&GE_new1944, 0},
{1945, 0, 0, 0},
{1946, 0, (EIF_REFERENCE (*)())&GE_new1946, 0},
{1947, 0, (EIF_REFERENCE (*)())&GE_new1947, 0},
{1948, 0, 0, 0},
{1949, 0, (EIF_REFERENCE (*)())&GE_new1949, 0},
{1950, 0, (EIF_REFERENCE (*)())&GE_new1950, 0},
{1951, 0, (EIF_REFERENCE (*)())&GE_new1951, 0},
{1952, 0, 0, 0},
{1953, 0, 0, 0},
{1954, 0, 0, 0},
{1955, 0, 0, 0},
{1956, 0, (EIF_REFERENCE (*)())&GE_new1956, 0},
{1957, 0, 0, 0},
{1958, 0, 0, 0},
{1959, 0, (EIF_REFERENCE (*)())&GE_new1959, 0},
{1960, 0, 0, 0},
{1961, 0, (EIF_REFERENCE (*)())&GE_new1961, 0},
{1962, 0, 0, 0},
{1963, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new1963, 0},
{1964, 0, (EIF_REFERENCE (*)())&GE_new1964, 0},
{1965, 0, (EIF_REFERENCE (*)())&GE_new1965, 0},
{1966, 0, 0, 0},
{1967, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1968, 0, (EIF_REFERENCE (*)())&GE_new1968, 0},
{1969, 0, 0, 0},
{1970, 0, (EIF_REFERENCE (*)())&GE_new1970, 0},
{1971, 0, 0, 0},
{1972, 0, (EIF_REFERENCE (*)())&GE_new1972, 0},
{1973, 0, 0, 0},
{1974, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1975, 0, 0, 0},
{1976, 0, 0, 0},
{1977, 0, 0, 0},
{1978, 0, (EIF_REFERENCE (*)())&GE_new1978, 0},
{1979, 0, (EIF_REFERENCE (*)())&GE_new1979, 0},
{1980, 0, (EIF_REFERENCE (*)())&GE_new1980, 0},
{1981, 0, 0, 0},
{1982, 0, (EIF_REFERENCE (*)())&GE_new1982, 0},
{1983, 0, 0, 0},
{1984, 0, 0, 0},
{1985, 0, 0, 0},
{1986, 0, (EIF_REFERENCE (*)())&GE_new1986, 0},
{1987, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1988, 0, (EIF_REFERENCE (*)())&GE_new1988, 0},
{1989, 0, (EIF_REFERENCE (*)())&GE_new1989, 0},
{1990, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1990, 0},
{1991, 0, (EIF_REFERENCE (*)())&GE_new1991, 0},
{1992, 0, (EIF_REFERENCE (*)())&GE_new1992, 0},
{1993, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1993, 0},
{1994, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new1994, 0},
{1995, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1996, 0, 0, 0},
{1997, GE_TYPE_FLAG_DEFERRED, 0, 0},
{1998, 0, (EIF_REFERENCE (*)())&GE_new1998, 0},
{1999, 0, 0, 0},
{2000, GE_TYPE_FLAG_EXPANDED, 0, 0},
{2001, 0, (EIF_REFERENCE (*)())&GE_new2001, 0},
{2002, 0, (EIF_REFERENCE (*)())&GE_new2002, 0},
{2003, 0, (EIF_REFERENCE (*)())&GE_new2003, 0},
{2004, 0, (EIF_REFERENCE (*)())&GE_new2004, 0},
{2005, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2006, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2007, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2008, 0, 0, 0},
{2009, 0, (EIF_REFERENCE (*)())&GE_new2009, 0},
{2010, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2010, 0},
{2011, 0, 0, 0},
{2012, 0, (EIF_REFERENCE (*)())&GE_new2012, 0},
{2013, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2014, 0, (EIF_REFERENCE (*)())&GE_new2014, 0},
{2015, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2015, 0},
{2016, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2017, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2018, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2019, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2020, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2021, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2022, 0, (EIF_REFERENCE (*)())&GE_new2022, 0},
{2023, 0, 0, 0},
{2024, 0, 0, 0},
{2025, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2026, 0, 0, 0},
{2027, 0, (EIF_REFERENCE (*)())&GE_new2027, 0},
{2028, 0, 0, 0},
{2029, 0, 0, 0},
{2030, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2031, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2032, 0, (EIF_REFERENCE (*)())&GE_new2032, 0},
{2033, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2034, 0, (EIF_REFERENCE (*)())&GE_new2034, 0},
{2035, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2036, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2037, 0, (EIF_REFERENCE (*)())&GE_new2037, 0},
{2038, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2039, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2040, 0, (EIF_REFERENCE (*)())&GE_new2040, 0},
{2041, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2042, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2042, 0},
{2043, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2044, 0, (EIF_REFERENCE (*)())&GE_new2044, 0},
{2045, 0, (EIF_REFERENCE (*)())&GE_new2045, 0},
{2046, 0, (EIF_REFERENCE (*)())&GE_new2046, 0},
{2047, 0, (EIF_REFERENCE (*)())&GE_new2047, 0},
{2048, 0, (EIF_REFERENCE (*)())&GE_new2048, 0},
{2049, 0, (EIF_REFERENCE (*)())&GE_new2049, 0},
{2050, 0, (EIF_REFERENCE (*)())&GE_new2050, 0},
{2051, 0, (EIF_REFERENCE (*)())&GE_new2051, 0},
{2052, 0, (EIF_REFERENCE (*)())&GE_new2052, 0},
{2053, 0, (EIF_REFERENCE (*)())&GE_new2053, 0},
{2054, 0, (EIF_REFERENCE (*)())&GE_new2054, 0},
{2055, 0, (EIF_REFERENCE (*)())&GE_new2055, 0},
{2056, 0, (EIF_REFERENCE (*)())&GE_new2056, 0},
{2057, 0, (EIF_REFERENCE (*)())&GE_new2057, 0},
{2058, 0, (EIF_REFERENCE (*)())&GE_new2058, 0},
{2059, 0, (EIF_REFERENCE (*)())&GE_new2059, 0},
{2060, 0, (EIF_REFERENCE (*)())&GE_new2060, 0},
{2061, 0, (EIF_REFERENCE (*)())&GE_new2061, 0},
{2062, 0, (EIF_REFERENCE (*)())&GE_new2062, 0},
{2063, 0, (EIF_REFERENCE (*)())&GE_new2063, 0},
{2064, 0, (EIF_REFERENCE (*)())&GE_new2064, 0},
{2065, 0, (EIF_REFERENCE (*)())&GE_new2065, 0},
{2066, 0, (EIF_REFERENCE (*)())&GE_new2066, 0},
{2067, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2068, 0, (EIF_REFERENCE (*)())&GE_new2068, 0},
{2069, 0, (EIF_REFERENCE (*)())&GE_new2069, 0},
{2070, 0, (EIF_REFERENCE (*)())&GE_new2070, 0},
{2071, 0, (EIF_REFERENCE (*)())&GE_new2071, 0},
{2072, 0, (EIF_REFERENCE (*)())&GE_new2072, 0},
{2073, 0, (EIF_REFERENCE (*)())&GE_new2073, 0},
{2074, 0, (EIF_REFERENCE (*)())&GE_new2074, 0},
{2075, 0, (EIF_REFERENCE (*)())&GE_new2075, 0},
{2076, 0, (EIF_REFERENCE (*)())&GE_new2076, 0},
{2077, 0, (EIF_REFERENCE (*)())&GE_new2077, 0},
{2078, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2079, 0, (EIF_REFERENCE (*)())&GE_new2079, 0},
{2080, 0, (EIF_REFERENCE (*)())&GE_new2080, 0},
{2081, 0, (EIF_REFERENCE (*)())&GE_new2081, 0},
{2082, 0, (EIF_REFERENCE (*)())&GE_new2082, 0},
{2083, 0, (EIF_REFERENCE (*)())&GE_new2083, 0},
{2084, 0, (EIF_REFERENCE (*)())&GE_new2084, 0},
{2085, 0, (EIF_REFERENCE (*)())&GE_new2085, 0},
{2086, 0, (EIF_REFERENCE (*)())&GE_new2086, 0},
{2087, 0, (EIF_REFERENCE (*)())&GE_new2087, 0},
{2088, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2089, 0, (EIF_REFERENCE (*)())&GE_new2089, 0},
{2090, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2091, 0, (EIF_REFERENCE (*)())&GE_new2091, 0},
{2092, 0, (EIF_REFERENCE (*)())&GE_new2092, 0},
{2093, 0, (EIF_REFERENCE (*)())&GE_new2093, 0},
{2094, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2095, 0, (EIF_REFERENCE (*)())&GE_new2095, 0},
{2096, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2097, 0, (EIF_REFERENCE (*)())&GE_new2097, 0},
{2098, 0, (EIF_REFERENCE (*)())&GE_new2098, 0},
{2099, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2100, 0, (EIF_REFERENCE (*)())&GE_new2100, 0},
{2101, 0, (EIF_REFERENCE (*)())&GE_new2101, 0},
{2102, 0, (EIF_REFERENCE (*)())&GE_new2102, 0},
{2103, 0, (EIF_REFERENCE (*)())&GE_new2103, 0},
{2104, 0, (EIF_REFERENCE (*)())&GE_new2104, 0},
{2105, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2106, 0, (EIF_REFERENCE (*)())&GE_new2106, 0},
{2107, 0, (EIF_REFERENCE (*)())&GE_new2107, 0},
{2108, 0, (EIF_REFERENCE (*)())&GE_new2108, 0},
{2109, 0, (EIF_REFERENCE (*)())&GE_new2109, 0},
{2110, 0, (EIF_REFERENCE (*)())&GE_new2110, 0},
{2111, 0, (EIF_REFERENCE (*)())&GE_new2111, 0},
{2112, 0, (EIF_REFERENCE (*)())&GE_new2112, 0},
{2113, 0, (EIF_REFERENCE (*)())&GE_new2113, 0},
{2114, 0, (EIF_REFERENCE (*)())&GE_new2114, 0},
{2115, 0, (EIF_REFERENCE (*)())&GE_new2115, 0},
{2116, 0, (EIF_REFERENCE (*)())&GE_new2116, 0},
{2117, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2118, 0, (EIF_REFERENCE (*)())&GE_new2118, 0},
{2119, 0, (EIF_REFERENCE (*)())&GE_new2119, 0},
{2120, 0, (EIF_REFERENCE (*)())&GE_new2120, 0},
{2121, 0, (EIF_REFERENCE (*)())&GE_new2121, 0},
{2122, 0, (EIF_REFERENCE (*)())&GE_new2122, 0},
{2123, 0, (EIF_REFERENCE (*)())&GE_new2123, 0},
{2124, 0, (EIF_REFERENCE (*)())&GE_new2124, 0},
{2125, 0, (EIF_REFERENCE (*)())&GE_new2125, 0},
{2126, 0, (EIF_REFERENCE (*)())&GE_new2126, 0},
{2127, 0, (EIF_REFERENCE (*)())&GE_new2127, 0},
{2128, 0, (EIF_REFERENCE (*)())&GE_new2128, 0},
{2129, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2130, 0, (EIF_REFERENCE (*)())&GE_new2130, 0},
{2131, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2132, 0, (EIF_REFERENCE (*)())&GE_new2132, 0},
{2133, 0, (EIF_REFERENCE (*)())&GE_new2133, 0},
{2134, 0, (EIF_REFERENCE (*)())&GE_new2134, 0},
{2135, 0, (EIF_REFERENCE (*)())&GE_new2135, 0},
{2136, 0, (EIF_REFERENCE (*)())&GE_new2136, 0},
{2137, 0, (EIF_REFERENCE (*)())&GE_new2137, 0},
{2138, 0, (EIF_REFERENCE (*)())&GE_new2138, 0},
{2139, 0, (EIF_REFERENCE (*)())&GE_new2139, 0},
{2140, 0, (EIF_REFERENCE (*)())&GE_new2140, 0},
{2141, 0, (EIF_REFERENCE (*)())&GE_new2141, 0},
{2142, 0, (EIF_REFERENCE (*)())&GE_new2142, 0},
{2143, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2144, 0, (EIF_REFERENCE (*)())&GE_new2144, 0},
{2145, 0, (EIF_REFERENCE (*)())&GE_new2145, 0},
{2146, 0, (EIF_REFERENCE (*)())&GE_new2146, 0},
{2147, 0, (EIF_REFERENCE (*)())&GE_new2147, 0},
{2148, 0, (EIF_REFERENCE (*)())&GE_new2148, 0},
{2149, 0, (EIF_REFERENCE (*)())&GE_new2149, 0},
{2150, 0, (EIF_REFERENCE (*)())&GE_new2150, 0},
{2151, 0, (EIF_REFERENCE (*)())&GE_new2151, 0},
{2152, 0, (EIF_REFERENCE (*)())&GE_new2152, 0},
{2153, 0, (EIF_REFERENCE (*)())&GE_new2153, 0},
{2154, 0, (EIF_REFERENCE (*)())&GE_new2154, 0},
{2155, 0, (EIF_REFERENCE (*)())&GE_new2155, 0},
{2156, 0, (EIF_REFERENCE (*)())&GE_new2156, 0},
{2157, 0, (EIF_REFERENCE (*)())&GE_new2157, 0},
{2158, 0, (EIF_REFERENCE (*)())&GE_new2158, 0},
{2159, 0, (EIF_REFERENCE (*)())&GE_new2159, 0},
{2160, 0, (EIF_REFERENCE (*)())&GE_new2160, 0},
{2161, 0, (EIF_REFERENCE (*)())&GE_new2161, 0},
{2162, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2163, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2163, 0},
{2164, 0, (EIF_REFERENCE (*)())&GE_new2164, 0},
{2165, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2166, 0, (EIF_REFERENCE (*)())&GE_new2166, 0},
{2167, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2168, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2169, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2169, 0},
{2170, GE_TYPE_FLAG_TUPLE, 0, 0},
{2171, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2172, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2173, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2174, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2175, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2176, 0, 0, 0},
{2177, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2178, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2179, 0, 0, 0},
{2180, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2181, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2182, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2183, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2184, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2185, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2186, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2187, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2188, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2189, 0, 0, 0},
{2190, 0, 0, 0},
{2191, 0, (EIF_REFERENCE (*)())&GE_new2191, 0},
{2192, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2193, 0, 0, 0},
{2194, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2195, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2196, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2196, 0},
{2197, 0, (EIF_REFERENCE (*)())&GE_new2197, 0},
{2198, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2199, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2199, 0},
{2200, 0, (EIF_REFERENCE (*)())&GE_new2200, 0},
{2201, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2202, 0, (EIF_REFERENCE (*)())&GE_new2202, 0},
{2203, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2203, 0},
{2204, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2204, 0},
{2205, 0, (EIF_REFERENCE (*)())&GE_new2205, 0},
{2206, 0, 0, 0},
{2207, 0, (EIF_REFERENCE (*)())&GE_new2207, 0},
{2208, 0, (EIF_REFERENCE (*)())&GE_new2208, 0},
{2209, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2209, 0},
{2210, 0, (EIF_REFERENCE (*)())&GE_new2210, 0},
{2211, 0, (EIF_REFERENCE (*)())&GE_new2211, 0},
{2212, 0, (EIF_REFERENCE (*)())&GE_new2212, 0},
{2213, 0, (EIF_REFERENCE (*)())&GE_new2213, 0},
{2214, 0, (EIF_REFERENCE (*)())&GE_new2214, 0},
{2215, 0, (EIF_REFERENCE (*)())&GE_new2215, 0},
{2216, 0, (EIF_REFERENCE (*)())&GE_new2216, 0},
{2217, 0, (EIF_REFERENCE (*)())&GE_new2217, 0},
{2218, 0, (EIF_REFERENCE (*)())&GE_new2218, 0},
{2219, 0, (EIF_REFERENCE (*)())&GE_new2219, 0},
{2220, 0, 0, 0},
{2221, 0, (EIF_REFERENCE (*)())&GE_new2221, 0},
{2222, 0, (EIF_REFERENCE (*)())&GE_new2222, 0},
{2223, 0, (EIF_REFERENCE (*)())&GE_new2223, 0},
{2224, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2224, 0},
{2225, 0, (EIF_REFERENCE (*)())&GE_new2225, 0},
{2226, 0, (EIF_REFERENCE (*)())&GE_new2226, 0},
{2227, 0, (EIF_REFERENCE (*)())&GE_new2227, 0},
{2228, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2228, 0},
{2229, 0, 0, 0},
{2230, GE_TYPE_FLAG_TUPLE, 0, 0},
{2231, 0, 0, 0},
{2232, 0, 0, 0},
{2233, 0, (EIF_REFERENCE (*)())&GE_new2233, 0},
{2234, 0, (EIF_REFERENCE (*)())&GE_new2234, 0},
{2235, 0, (EIF_REFERENCE (*)())&GE_new2235, 0},
{2236, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2236, 0},
{2237, 0, (EIF_REFERENCE (*)())&GE_new2237, 0},
{2238, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2238, 0},
{2239, 0, (EIF_REFERENCE (*)())&GE_new2239, 0},
{2240, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2240, 0},
{2241, 0, (EIF_REFERENCE (*)())&GE_new2241, 0},
{2242, 0, 0, 0},
{2243, 0, (EIF_REFERENCE (*)())&GE_new2243, 0},
{2244, 0, 0, 0},
{2245, 0, 0, 0},
{2246, 0, 0, 0},
{2247, 0, 0, 0},
{2248, 0, 0, 0},
{2249, 0, (EIF_REFERENCE (*)())&GE_new2249, 0},
{2250, 0, (EIF_REFERENCE (*)())&GE_new2250, 0},
{2251, 0, (EIF_REFERENCE (*)())&GE_new2251, 0},
{2252, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2252, 0},
{2253, 0, (EIF_REFERENCE (*)())&GE_new2253, 0},
{2254, 0, (EIF_REFERENCE (*)())&GE_new2254, 0},
{2255, 0, 0, 0},
{2256, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2256, 0},
{2257, 0, (EIF_REFERENCE (*)())&GE_new2257, 0},
{2258, 0, (EIF_REFERENCE (*)())&GE_new2258, 0},
{2259, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2260, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2260, 0},
{2261, 0, (EIF_REFERENCE (*)())&GE_new2261, 0},
{2262, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2262, 0},
{2263, 0, 0, 0},
{2264, 0, 0, 0},
{2265, 0, 0, 0},
{2266, 0, (EIF_REFERENCE (*)())&GE_new2266, 0},
{2267, 0, (EIF_REFERENCE (*)())&GE_new2267, 0},
{2268, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2268, 0},
{2269, 0, (EIF_REFERENCE (*)())&GE_new2269, 0},
{2270, 0, (EIF_REFERENCE (*)())&GE_new2270, 0},
{2271, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2271, 0},
{2272, 0, (EIF_REFERENCE (*)())&GE_new2272, 0},
{2273, 0, (EIF_REFERENCE (*)())&GE_new2273, 0},
{2274, 0, (EIF_REFERENCE (*)())&GE_new2274, 0},
{2275, 0, 0, 0},
{2276, 0, (EIF_REFERENCE (*)())&GE_new2276, 0},
{2277, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2277, 0},
{2278, 0, (EIF_REFERENCE (*)())&GE_new2278, 0},
{2279, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2279, 0},
{2280, 0, (EIF_REFERENCE (*)())&GE_new2280, 0},
{2281, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2282, 0, (EIF_REFERENCE (*)())&GE_new2282, 0},
{2283, 0, (EIF_REFERENCE (*)())&GE_new2283, 0},
{2284, 0, 0, 0},
{2285, 0, (EIF_REFERENCE (*)())&GE_new2285, 0},
{2286, 0, 0, 0},
{2287, 0, (EIF_REFERENCE (*)())&GE_new2287, 0},
{2288, 0, (EIF_REFERENCE (*)())&GE_new2288, 0},
{2289, 0, (EIF_REFERENCE (*)())&GE_new2289, 0},
{2290, 0, 0, 0},
{2291, 0, 0, 0},
{2292, 0, 0, 0},
{2293, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2293, 0},
{2294, 0, (EIF_REFERENCE (*)())&GE_new2294, 0},
{2295, 0, (EIF_REFERENCE (*)())&GE_new2295, 0},
{2296, 0, (EIF_REFERENCE (*)())&GE_new2296, 0},
{2297, 0, 0, 0},
{2298, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2298, 0},
{2299, 0, (EIF_REFERENCE (*)())&GE_new2299, 0},
{2300, 0, (EIF_REFERENCE (*)())&GE_new2300, 0},
{2301, 0, 0, 0},
{2302, 0, (EIF_REFERENCE (*)())&GE_new2302, 0},
{2303, 0, (EIF_REFERENCE (*)())&GE_new2303, 0},
{2304, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2304, 0},
{2305, 0, (EIF_REFERENCE (*)())&GE_new2305, 0},
{2306, 0, (EIF_REFERENCE (*)())&GE_new2306, 0},
{2307, 0, 0, 0},
{2308, 0, (EIF_REFERENCE (*)())&GE_new2308, 0},
{2309, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2309, 0},
{2310, 0, 0, 0},
{2311, 0, 0, 0},
{2312, 0, 0, 0},
{2313, 0, 0, 0},
{2314, 0, 0, 0},
{2315, 0, 0, 0},
{2316, 0, 0, 0},
{2317, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2317, 0},
{2318, 0, (EIF_REFERENCE (*)())&GE_new2318, 0},
{2319, 0, (EIF_REFERENCE (*)())&GE_new2319, 0},
{2320, 0, (EIF_REFERENCE (*)())&GE_new2320, 0},
{2321, 0, 0, 0},
{2322, 0, (EIF_REFERENCE (*)())&GE_new2322, 0},
{2323, 0, 0, 0},
{2324, 0, 0, 0},
{2325, 0, 0, 0},
{2326, 0, 0, 0},
{2327, 0, 0, 0},
{2328, 0, 0, 0},
{2329, 0, (EIF_REFERENCE (*)())&GE_new2329, 0},
{2330, 0, (EIF_REFERENCE (*)())&GE_new2330, 0},
{2331, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2331, 0},
{2332, 0, 0, 0},
{2333, 0, 0, 0},
{2334, 0, (EIF_REFERENCE (*)())&GE_new2334, 0},
{2335, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2336, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2336, 0},
{2337, 0, (EIF_REFERENCE (*)())&GE_new2337, 0},
{2338, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2339, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2339, 0},
{2340, 0, (EIF_REFERENCE (*)())&GE_new2340, 0},
{2341, 0, (EIF_REFERENCE (*)())&GE_new2341, 0},
{2342, 0, 0, 0},
{2343, 0, (EIF_REFERENCE (*)())&GE_new2343, 0},
{2344, 0, (EIF_REFERENCE (*)())&GE_new2344, 0},
{2345, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2345, 0},
{2346, 0, (EIF_REFERENCE (*)())&GE_new2346, 0},
{2347, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2347, 0},
{2348, 0, (EIF_REFERENCE (*)())&GE_new2348, 0},
{2349, 0, (EIF_REFERENCE (*)())&GE_new2349, 0},
{2350, 0, 0, 0},
{2351, 0, 0, 0},
{2352, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2352, 0},
{2353, 0, 0, 0},
{2354, 0, 0, 0},
{2355, 0, 0, 0},
{2356, 0, 0, 0},
{2357, 0, (EIF_REFERENCE (*)())&GE_new2357, 0},
{2358, 0, (EIF_REFERENCE (*)())&GE_new2358, 0},
{2359, 0, (EIF_REFERENCE (*)())&GE_new2359, 0},
{2360, 0, 0, 0},
{2361, 0, (EIF_REFERENCE (*)())&GE_new2361, 0},
{2362, 0, (EIF_REFERENCE (*)())&GE_new2362, 0},
{2363, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2363, 0},
{2364, 0, (EIF_REFERENCE (*)())&GE_new2364, 0},
{2365, 0, (EIF_REFERENCE (*)())&GE_new2365, 0},
{2366, 0, 0, 0},
{2367, 0, 0, 0},
{2368, 0, (EIF_REFERENCE (*)())&GE_new2368, 0},
{2369, 0, (EIF_REFERENCE (*)())&GE_new2369, 0},
{2370, 0, (EIF_REFERENCE (*)())&GE_new2370, 0},
{2371, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2371, 0},
{2372, 0, (EIF_REFERENCE (*)())&GE_new2372, 0},
{2373, 0, (EIF_REFERENCE (*)())&GE_new2373, 0},
{2374, 0, (EIF_REFERENCE (*)())&GE_new2374, 0},
{2375, 0, 0, 0},
{2376, 0, 0, 0},
{2377, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2377, 0},
{2378, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2378, 0},
{2379, 0, (EIF_REFERENCE (*)())&GE_new2379, 0},
{2380, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2380, 0},
{2381, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2382, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2382, 0},
{2383, 0, (EIF_REFERENCE (*)())&GE_new2383, 0},
{2384, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2384, 0},
{2385, 0, (EIF_REFERENCE (*)())&GE_new2385, 0},
{2386, 0, 0, 0},
{2387, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2388, 0, (EIF_REFERENCE (*)())&GE_new2388, 0},
{2389, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2389, 0},
{2390, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2391, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2392, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2393, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2394, 0, 0, 0},
{2395, 0, (EIF_REFERENCE (*)())&GE_new2395, 0},
{2396, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2397, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2397, 0},
{2398, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2398, 0},
{2399, 0, 0, 0},
{2400, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2400, 0},
{2401, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2402, 0, (EIF_REFERENCE (*)())&GE_new2402, 0},
{2403, 0, 0, 0},
{2404, 0, 0, 0},
{2405, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2406, 0, 0, 0},
{2407, 0, (EIF_REFERENCE (*)())&GE_new2407, 0},
{2408, 0, 0, 0},
{2409, 0, 0, 0},
{2410, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2410, 0},
{2411, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2412, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2413, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2414, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2415, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2416, GE_TYPE_FLAG_TUPLE, 0, 0},
{2417, GE_TYPE_FLAG_TUPLE, 0, 0},
{2418, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2418, 0},
{2419, 0, (EIF_REFERENCE (*)())&GE_new2419, 0},
{2420, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2420, 0},
{2421, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2421, 0},
{2422, 0, (EIF_REFERENCE (*)())&GE_new2422, 0},
{2423, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2423, 0},
{2424, 0, (EIF_REFERENCE (*)())&GE_new2424, 0},
{2425, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2425, 0},
{2426, 0, (EIF_REFERENCE (*)())&GE_new2426, 0},
{2427, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2427, 0},
{2428, 0, (EIF_REFERENCE (*)())&GE_new2428, 0},
{2429, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2429, 0},
{2430, 0, (EIF_REFERENCE (*)())&GE_new2430, 0},
{2431, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2431, 0},
{2432, 0, (EIF_REFERENCE (*)())&GE_new2432, 0},
{2433, 0, (EIF_REFERENCE (*)())&GE_new2433, 0},
{2434, GE_TYPE_FLAG_TUPLE, 0, 0},
{2435, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2436, 0, 0, 0},
{2437, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2438, 0, 0, 0},
{2439, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2440, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2441, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2442, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2443, 0, 0, 0},
{2444, 0, (EIF_REFERENCE (*)())&GE_new2444, 0},
{2445, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2446, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2446, 0},
{2447, 0, (EIF_REFERENCE (*)())&GE_new2447, 0},
{2448, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2448, 0},
{2449, 0, (EIF_REFERENCE (*)())&GE_new2449, 0},
{2450, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2450, 0},
{2451, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2452, 0, (EIF_REFERENCE (*)())&GE_new2452, 0},
{2453, 0, 0, 0},
{2454, 0, 0, 0},
{2455, 0, 0, 0},
{2456, 0, 0, 0},
{2457, 0, (EIF_REFERENCE (*)())&GE_new2457, 0},
{2458, 0, 0, 0},
{2459, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2459, 0},
{2460, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2461, 0, (EIF_REFERENCE (*)())&GE_new2461, 0},
{2462, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2463, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2463, 0},
{2464, 0, (EIF_REFERENCE (*)())&GE_new2464, 0},
{2465, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2465, 0},
{2466, 0, (EIF_REFERENCE (*)())&GE_new2466, 0},
{2467, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2467, 0},
{2468, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2469, 0, (EIF_REFERENCE (*)())&GE_new2469, 0},
{2470, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2470, 0},
{2471, 0, (EIF_REFERENCE (*)())&GE_new2471, 0},
{2472, 0, (EIF_REFERENCE (*)())&GE_new2472, 0},
{2473, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2474, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2475, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2475, 0},
{2476, 0, (EIF_REFERENCE (*)())&GE_new2476, 0},
{2477, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2477, 0},
{2478, 0, (EIF_REFERENCE (*)())&GE_new2478, 0},
{2479, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2479, 0},
{2480, 0, (EIF_REFERENCE (*)())&GE_new2480, 0},
{2481, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2482, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2482, 0},
{2483, 0, (EIF_REFERENCE (*)())&GE_new2483, 0},
{2484, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2485, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2485, 0},
{2486, 0, (EIF_REFERENCE (*)())&GE_new2486, 0},
{2487, 0, (EIF_REFERENCE (*)())&GE_new2487, 0},
{2488, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2489, 0, (EIF_REFERENCE (*)())&GE_new2489, 0},
{2490, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2491, 0, 0, 0},
{2492, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2493, 0, (EIF_REFERENCE (*)())&GE_new2493, 0},
{2494, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2495, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2495, 0},
{2496, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2497, 0, (EIF_REFERENCE (*)())&GE_new2497, 0},
{2498, 0, 0, 0},
{2499, 0, (EIF_REFERENCE (*)())&GE_new2499, 0},
{2500, 0, 0, 0},
{2501, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2501, 0},
{2502, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2502, 0},
{2503, 0, (EIF_REFERENCE (*)())&GE_new2503, 0},
{2504, 0, (EIF_REFERENCE (*)())&GE_new2504, 0},
{2505, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2505, 0},
{2506, 0, (EIF_REFERENCE (*)())&GE_new2506, 0},
{2507, 0, (EIF_REFERENCE (*)())&GE_new2507, 0},
{2508, 0, (EIF_REFERENCE (*)())&GE_new2508, 0},
{2509, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2509, 0},
{2510, 0, (EIF_REFERENCE (*)())&GE_new2510, 0},
{2511, GE_TYPE_FLAG_TUPLE, 0, 0},
{2512, 0, (EIF_REFERENCE (*)())&GE_new2512, 0},
{2513, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2513, 0},
{2514, 0, (EIF_REFERENCE (*)())&GE_new2514, 0},
{2515, GE_TYPE_FLAG_TUPLE, 0, 0},
{2516, 0, (EIF_REFERENCE (*)())&GE_new2516, 0},
{2517, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2517, 0},
{2518, 0, (EIF_REFERENCE (*)())&GE_new2518, 0},
{2519, GE_TYPE_FLAG_TUPLE, 0, 0},
{2520, 0, (EIF_REFERENCE (*)())&GE_new2520, 0},
{2521, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2521, 0},
{2522, 0, (EIF_REFERENCE (*)())&GE_new2522, 0},
{2523, GE_TYPE_FLAG_TUPLE, 0, 0},
{2524, 0, (EIF_REFERENCE (*)())&GE_new2524, 0},
{2525, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2525, 0},
{2526, 0, (EIF_REFERENCE (*)())&GE_new2526, 0},
{2527, GE_TYPE_FLAG_TUPLE, 0, 0},
{2528, 0, (EIF_REFERENCE (*)())&GE_new2528, 0},
{2529, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2529, 0},
{2530, 0, (EIF_REFERENCE (*)())&GE_new2530, 0},
{2531, GE_TYPE_FLAG_TUPLE, 0, 0},
{2532, 0, (EIF_REFERENCE (*)())&GE_new2532, 0},
{2533, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2533, 0},
{2534, 0, (EIF_REFERENCE (*)())&GE_new2534, 0},
{2535, GE_TYPE_FLAG_TUPLE, 0, 0},
{2536, 0, (EIF_REFERENCE (*)())&GE_new2536, 0},
{2537, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2537, 0},
{2538, 0, (EIF_REFERENCE (*)())&GE_new2538, 0},
{2539, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2539, 0},
{2540, 0, (EIF_REFERENCE (*)())&GE_new2540, 0},
{2541, 0, (EIF_REFERENCE (*)())&GE_new2541, 0},
{2542, 0, (EIF_REFERENCE (*)())&GE_new2542, 0},
{2543, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2543, 0},
{2544, 0, (EIF_REFERENCE (*)())&GE_new2544, 0},
{2545, 0, (EIF_REFERENCE (*)())&GE_new2545, 0},
{2546, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2546, 0},
{2547, 0, (EIF_REFERENCE (*)())&GE_new2547, 0},
{2548, 0, 0, 0},
{2549, 0, (EIF_REFERENCE (*)())&GE_new2549, 0},
{2550, 0, 0, 0},
{2551, 0, (EIF_REFERENCE (*)())&GE_new2551, 0},
{2552, 0, 0, 0},
{2553, 0, 0, 0},
{2554, 0, 0, 0},
{2555, 0, (EIF_REFERENCE (*)())&GE_new2555, 0},
{2556, 0, 0, 0},
{2557, 0, 0, 0},
{2558, 0, (EIF_REFERENCE (*)())&GE_new2558, 0},
{2559, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2559, 0},
{2560, 0, 0, 0},
{2561, 0, 0, 0},
{2562, 0, 0, 0},
{2563, 0, (EIF_REFERENCE (*)())&GE_new2563, 0},
{2564, 0, (EIF_REFERENCE (*)())&GE_new2564, 0},
{2565, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2565, 0},
{2566, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2566, 0},
{2567, 0, (EIF_REFERENCE (*)())&GE_new2567, 0},
{2568, 0, (EIF_REFERENCE (*)())&GE_new2568, 0},
{2569, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2570, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2571, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2572, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2573, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2574, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2575, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2576, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2577, 0, (EIF_REFERENCE (*)())&GE_new2577, 0},
{2578, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2578, 0},
{2579, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2580, 0, (EIF_REFERENCE (*)())&GE_new2580, 0},
{2581, 0, (EIF_REFERENCE (*)())&GE_new2581, 0},
{2582, 0, 0, 0},
{2583, 0, (EIF_REFERENCE (*)())&GE_new2583, 0},
{2584, 0, 0, 0},
{2585, 0, 0, 0},
{2586, 0, 0, 0},
{2587, 0, 0, 0},
{2588, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2589, 0, 0, 0},
{2590, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2591, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2592, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2593, 0, 0, 0},
{2594, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2594, 0},
{2595, 0, (EIF_REFERENCE (*)())&GE_new2595, 0},
{2596, GE_TYPE_FLAG_DEFERRED, (EIF_REFERENCE (*)())&GE_new2596, 0},
{2597, 0, (EIF_REFERENCE (*)())&GE_new2597, 0},
{2598, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2599, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2600, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2601, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2602, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2603, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2604, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2605, 0, 0, 0},
{2606, 0, 0, 0},
{2607, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2608, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2609, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2610, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2611, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2612, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2613, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2614, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2615, 0, (EIF_REFERENCE (*)())&GE_new2615, 0},
{2616, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2617, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2618, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2619, 0, 0, 0},
{2620, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2621, 0, (EIF_REFERENCE (*)())&GE_new2621, 0},
{2622, 0, (EIF_REFERENCE (*)())&GE_new2622, 0},
{2623, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2624, 0, 0, 0},
{2625, 0, 0, 0},
{2626, 0, 0, 0},
{2627, 0, 0, 0},
{2628, 0, 0, 0},
{2629, 0, 0, 0},
{2630, 0, 0, 0},
{2631, 0, 0, 0},
{2632, 0, 0, 0},
{2633, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2634, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2635, 0, 0, 0},
{2636, 0, 0, 0},
{2637, 0, 0, 0},
{2638, 0, 0, 0},
{2639, 0, 0, 0},
{2640, 0, 0, 0},
{2641, 0, 0, 0},
{2642, 0, 0, 0},
{2643, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2644, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2645, 0, 0, 0},
{2646, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2646, 0},
{2647, 0, 0, 0},
{2648, 0, 0, 0},
{2649, 0, 0, 0},
{2650, 0, (EIF_REFERENCE (*)())&GE_new2650, 0},
{2651, 0, (EIF_REFERENCE (*)())&GE_new2651, 0},
{2652, 0, 0, 0},
{2653, 0, (EIF_REFERENCE (*)())&GE_new2653, 0},
{2654, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2654, 0},
{2655, 0, (EIF_REFERENCE (*)())&GE_new2655, 0},
{2656, GE_TYPE_FLAG_TUPLE, 0, 0},
{2657, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2657, 0},
{2658, 0, 0, 0},
{2659, 0, 0, 0},
{2660, 0, 0, 0},
{2661, 0, (EIF_REFERENCE (*)())&GE_new2661, 0},
{2662, 0, (EIF_REFERENCE (*)())&GE_new2662, 0},
{2663, 0, 0, 0},
{2664, 0, (EIF_REFERENCE (*)())&GE_new2664, 0},
{2665, 0, (EIF_REFERENCE (*)())&GE_new2665, 0},
{2666, 0, (EIF_REFERENCE (*)())&GE_new2666, 0},
{2667, 0, 0, 0},
{2668, 0, 0, 0},
{2669, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2670, 0, (EIF_REFERENCE (*)())&GE_new2670, 0},
{2671, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2672, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2673, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2674, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2675, 0, (EIF_REFERENCE (*)())&GE_new2675, 0},
{2676, 0, (EIF_REFERENCE (*)())&GE_new2676, 0},
{2677, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2678, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2679, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2680, 0, 0, 0},
{2681, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2682, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2683, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2684, 0, (EIF_REFERENCE (*)())&GE_new2684, 0},
{2685, 0, (EIF_REFERENCE (*)())&GE_new2685, 0},
{2686, 0, (EIF_REFERENCE (*)())&GE_new2686, 0},
{2687, 0, 0, 0},
{2688, 0, 0, 0},
{2689, 0, 0, 0},
{2690, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2691, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2692, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2693, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2694, 0, 0, 0},
{2695, 0, 0, 0},
{2696, 0, 0, 0},
{2697, 0, (EIF_REFERENCE (*)())&GE_new2697, 0},
{2698, 0, 0, 0},
{2699, 0, 0, 0},
{2700, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2701, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2702, 0, (EIF_REFERENCE (*)())&GE_new2702, 0},
{2703, 0, 0, 0},
{2704, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2704, 0},
{2705, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2705, 0},
{2706, 0, (EIF_REFERENCE (*)())&GE_new2706, 0},
{2707, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2707, 0},
{2708, 0, (EIF_REFERENCE (*)())&GE_new2708, 0},
{2709, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2709, 0},
{2710, 0, 0, 0},
{2711, 0, 0, 0},
{2712, 0, (EIF_REFERENCE (*)())&GE_new2712, 0},
{2713, 0, 0, 0},
{2714, GE_TYPE_FLAG_TUPLE, 0, 0},
{2715, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2716, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2717, 0, 0, 0},
{2718, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2718, 0},
{2719, 0, (EIF_REFERENCE (*)())&GE_new2719, 0},
{2720, 0, (EIF_REFERENCE (*)())&GE_new2720, 0},
{2721, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2721, 0},
{2722, 0, (EIF_REFERENCE (*)())&GE_new2722, 0},
{2723, 0, (EIF_REFERENCE (*)())&GE_new2723, 0},
{2724, 0, (EIF_REFERENCE (*)())&GE_new2724, 0},
{2725, 0, (EIF_REFERENCE (*)())&GE_new2725, 0},
{2726, 0, (EIF_REFERENCE (*)())&GE_new2726, 0},
{2727, 0, (EIF_REFERENCE (*)())&GE_new2727, 0},
{2728, 0, (EIF_REFERENCE (*)())&GE_new2728, 0},
{2729, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2729, 0},
{2730, 0, (EIF_REFERENCE (*)())&GE_new2730, 0},
{2731, 0, (EIF_REFERENCE (*)())&GE_new2731, 0},
{2732, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2732, 0},
{2733, 0, 0, 0},
{2734, 0, 0, 0},
{2735, 0, (EIF_REFERENCE (*)())&GE_new2735, 0},
{2736, 0, (EIF_REFERENCE (*)())&GE_new2736, 0},
{2737, 0, (EIF_REFERENCE (*)())&GE_new2737, 0},
{2738, 0, (EIF_REFERENCE (*)())&GE_new2738, 0},
{2739, 0, (EIF_REFERENCE (*)())&GE_new2739, 0},
{2740, 0, (EIF_REFERENCE (*)())&GE_new2740, 0},
{2741, 0, (EIF_REFERENCE (*)())&GE_new2741, 0},
{2742, 0, (EIF_REFERENCE (*)())&GE_new2742, 0},
{2743, 0, (EIF_REFERENCE (*)())&GE_new2743, 0},
{2744, 0, (EIF_REFERENCE (*)())&GE_new2744, 0},
{2745, 0, (EIF_REFERENCE (*)())&GE_new2745, 0},
{2746, 0, (EIF_REFERENCE (*)())&GE_new2746, 0},
{2747, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2747, 0},
{2748, 0, (EIF_REFERENCE (*)())&GE_new2748, 0},
{2749, 0, (EIF_REFERENCE (*)())&GE_new2749, 0},
{2750, 0, (EIF_REFERENCE (*)())&GE_new2750, 0},
{2751, 0, 0, 0},
{2752, 0, (EIF_REFERENCE (*)())&GE_new2752, 0},
{2753, 0, (EIF_REFERENCE (*)())&GE_new2753, 0},
{2754, 0, (EIF_REFERENCE (*)())&GE_new2754, 0},
{2755, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2755, 0},
{2756, 0, (EIF_REFERENCE (*)())&GE_new2756, 0},
{2757, 0, (EIF_REFERENCE (*)())&GE_new2757, 0},
{2758, 0, 0, 0},
{2759, 0, (EIF_REFERENCE (*)())&GE_new2759, 0},
{2760, 0, (EIF_REFERENCE (*)())&GE_new2760, 0},
{2761, 0, (EIF_REFERENCE (*)())&GE_new2761, 0},
{2762, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2763, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2763, 0},
{2764, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2765, 0, 0, 0},
{2766, 0, 0, 0},
{2767, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2768, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2769, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2770, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2771, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2771, 0},
{2772, 0, 0, 0},
{2773, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2774, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2775, 0, 0, 0},
{2776, 0, (EIF_REFERENCE (*)())&GE_new2776, 0},
{2777, 0, (EIF_REFERENCE (*)())&GE_new2777, 0},
{2778, 0, (EIF_REFERENCE (*)())&GE_new2778, 0},
{2779, 0, (EIF_REFERENCE (*)())&GE_new2779, 0},
{2780, 0, (EIF_REFERENCE (*)())&GE_new2780, 0},
{2781, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2781, 0},
{2782, 0, (EIF_REFERENCE (*)())&GE_new2782, 0},
{2783, 0, (EIF_REFERENCE (*)())&GE_new2783, 0},
{2784, 0, 0, 0},
{2785, 0, 0, 0},
{2786, 0, 0, 0},
{2787, 0, 0, 0},
{2788, 0, (EIF_REFERENCE (*)())&GE_new2788, 0},
{2789, 0, 0, 0},
{2790, 0, (EIF_REFERENCE (*)())&GE_new2790, 0},
{2791, 0, 0, 0},
{2792, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2793, 0, (EIF_REFERENCE (*)())&GE_new2793, 0},
{2794, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2795, 0, (EIF_REFERENCE (*)())&GE_new2795, 0},
{2796, 0, (EIF_REFERENCE (*)())&GE_new2796, 0},
{2797, 0, (EIF_REFERENCE (*)())&GE_new2797, 0},
{2798, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2798, 0},
{2799, 0, 0, 0},
{2800, 0, (EIF_REFERENCE (*)())&GE_new2800, 0},
{2801, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2802, 0, (EIF_REFERENCE (*)())&GE_new2802, 0},
{2803, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2804, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2804, 0},
{2805, 0, 0, 0},
{2806, 0, 0, 0},
{2807, 0, (EIF_REFERENCE (*)())&GE_new2807, 0},
{2808, 0, (EIF_REFERENCE (*)())&GE_new2808, 0},
{2809, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2810, 0, 0, 0},
{2811, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2811, 0},
{2812, 0, (EIF_REFERENCE (*)())&GE_new2812, 0},
{2813, 0, (EIF_REFERENCE (*)())&GE_new2813, 0},
{2814, 0, (EIF_REFERENCE (*)())&GE_new2814, 0},
{2815, 0, (EIF_REFERENCE (*)())&GE_new2815, 0},
{2816, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2816, 0},
{2817, 0, (EIF_REFERENCE (*)())&GE_new2817, 0},
{2818, 0, (EIF_REFERENCE (*)())&GE_new2818, 0},
{2819, 0, 0, 0},
{2820, 0, (EIF_REFERENCE (*)())&GE_new2820, 0},
{2821, 0, (EIF_REFERENCE (*)())&GE_new2821, 0},
{2822, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2823, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2823, 0},
{2824, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2824, 0},
{2825, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2825, 0},
{2826, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2826, 0},
{2827, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2827, 0},
{2828, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2828, 0},
{2829, 0, 0, 0},
{2830, GE_TYPE_FLAG_TUPLE, (EIF_REFERENCE (*)())&GE_new2830, 0},
{2831, 0, (EIF_REFERENCE (*)())&GE_new2831, 0},
{2832, 0, 0, 0},
{2833, GE_TYPE_FLAG_TUPLE, 0, 0},
{2834, 0, 0, 0},
{2835, 0, 0, 0},
{2836, 0, (EIF_REFERENCE (*)())&GE_new2836, 0},
{2837, 0, 0, 0},
{2838, 0, (EIF_REFERENCE (*)())&GE_new2838, 0},
{2839, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2840, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2841, 0, (EIF_REFERENCE (*)())&GE_new2841, 0},
{2842, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2843, GE_TYPE_FLAG_DEFERRED, 0, 0},
{2844, 0, (EIF_REFERENCE (*)())&GE_new2844, 0},
{2845, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2845, 0},
{2846, GE_TYPE_FLAG_SPECIAL, (EIF_REFERENCE (*)())&GE_new2846, 0},
{2847, 0, (EIF_REFERENCE (*)())&GE_new2847, 0},
{2848, 0, (EIF_REFERENCE (*)())&GE_new2848, 0},
{2849, 0, 0, 0}
};

int GE_main(int argc, EIF_NATIVE_CHAR** argv)
{
	T0* t1;
	GE_context tc = GE_default_context;
	GE_context* ac = &tc;
	GE_type_info_count = 2849;
	GE_argc = argc;
	GE_argv = argv;
	GE_main_context = ac;
	GE_system_name = "gec";
	GE_root_class_name = "GEC";
	GE_init_gc();
	GE_new_exception_manager = &GE_new20;
	GE_init_exception_manager = &T20f14;
	GE_last_exception = &T20f1;
	GE_once_raise = &T20f15;
	GE_set_exception_data = &T20f16;
	GE_init_onces(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 495, 0);
	GE_thread_onces_set_counts(4, 1, 0, 0, 0, 10, 0, 0, 0, 0, 4, 0, 0, 0, 455, 0);
	GE_init_thread(ac);
	GE_init_exception(ac);
	GE_init_console();
	GE_init_identified();
	GE_init_const();
	t1 = T25c58(ac);
	return 0;
}


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to manipulate strings"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2016-2017, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef GE_STRING_C
#define GE_STRING_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_STRING_H
#include "ge_string.h"
#endif
#ifndef GE_NATIVE_STRING_H
#include "ge_native_string.h"
#endif
#ifndef GE_GC_H
#include "ge_gc.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Number of EIF_CHARACTER_32 characters which can be read from
 * the first `n' native characters in native string `s'.
 * Invalid native characters are escaped.
 */
static int GE_nstr_str32len(EIF_NATIVE_CHAR* s, EIF_INTEGER n)
{
	int i, j;
#ifdef EIF_WINDOWS
	uint16_t c1, c2;
#else
	uint8_t c1, c2, c3, c4;
#endif

	j = 0;
	for (i = 0; i < n; i++) {
#ifdef EIF_WINDOWS
		c1 = (uint16_t)s[i];
		if (c1 == 0) {
			return j;
		} else if (c1 < 0xD800 || c1 >= 0xE000) {
				/* Codepoint from Basic Multilingual Plane: one 16-bit code unit. */
			j++;
		} else if (c1 <= 0xDBFF && i + 1 < n) {
				/* Check if a lead surrogate (value between 0xD800 and 0xDBFF) is followed by a trail surrogate. */
			c2 = (uint16_t)s[i + 1];
			if (c2 >= 0xDC00 && c2 <= 0xDFFF) {
				/* Supplementary Planes: surrogate pair with lead and trail surrogates. */
				i++;
				j++;
			} else {
				j += 6;
			}
		} else {
			j += 6;
		}
#else
		c1 = (uint8_t)s[i];
		if (c1 == 0) {
			return j;
		} else if (c1 <= 0x7F) {
			j++;
		} else if ((c1 & 0xE0) == 0xC0) {
			if (i + 1 < n) {
				c2 = (uint8_t)s[i + 1];
				if ((c2 & 0xC0) == 0x80) {
					j++;
					i++;
				} else {
					j += 3;
				}
			} else {
				j += 3;
			}
		} else if ((c1 & 0xF0) == 0xE0) {
			if (i + 2 < n) {
				c2 = (uint8_t)s[i + 1];
				c3 = (uint8_t)s[i + 2];
				if ((c2 & 0xC0) == 0x80 && (c3 & 0xC0) == 0x80) {
					j++;
					i +=2;
				} else {
					j += 3;
				}
			} else {
				j += 3;
			}
		} else if ((c1 & 0xF8) == 0xF0) {
			if (i + 3 < n) {
				c2 = (uint8_t)s[i + 1];
				c3 = (uint8_t)s[i + 2];
				c4 = (uint8_t)s[i + 3];
				if ((c2 & 0xC0) == 0x80 && (c3 & 0xC0) == 0x80 && (c4 & 0xC0) == 0x80) {
					j++;
					i +=3;
				} else {
					j += 3;
				}
			} else {
				j += 3;
			}
		} else {
			j += 3;
		}
#endif
	}
	return j;
}

/*
 * Hexadecimal representation of `a_code'.
 * `a_code' is expected to be between 0 and 15.
 */
static char GE_to_hex(uint16_t a_code)
{
	switch (a_code) {
	case 0:
		return '0';
	case 1:
		return '1';
	case 2:
		return '2';
	case 3:
		return '3';
	case 4:
		return '4';
	case 5:
		return '5';
	case 6:
		return '6';
	case 7:
		return '7';
	case 8:
		return '8';
	case 9:
		return '9';
	case 10:
		return 'A';
	case 11:
		return 'B';
	case 12:
		return 'C';
	case 13:
		return 'D';
	case 14:
		return 'E';
	default:
		return 'F';
	}
}

/*
 * Copy escaped version of `c' to `a_buffer'.
 * `a_buffer' is expected to have enough space for 6 characters.
 */
static void GE_uint16_to_escaped_str32(uint16_t c, EIF_CHARACTER_32* a_buffer)
{
	int i = 0;

	a_buffer[i] = (EIF_CHARACTER_32)0x0000FFFD;
	i++;
	a_buffer[i] = (EIF_CHARACTER_32)'u';
	i++;
	a_buffer[i] = (EIF_CHARACTER_32)GE_to_hex((c & 0xF000) >> 12);
	i++;
	a_buffer[i] = (EIF_CHARACTER_32)GE_to_hex((c & 0x0F00) >> 8);
	i++;
	a_buffer[i] = (EIF_CHARACTER_32)GE_to_hex((c & 0x00F0) >> 4);
	i++;
	a_buffer[i] = (EIF_CHARACTER_32)GE_to_hex(c & 0x000F);
}

#ifndef __LCC__
/* lcc-win32 complains about this used static function. */

/*
 * Copy escaped version of `c' to `a_buffer'.
 * `a_buffer' is expected to have enough space for 3 characters.
 */
static void GE_uint8_to_escaped_str32(uint8_t c, EIF_CHARACTER_32* a_buffer)
{
	int i = 0;

	a_buffer[i] = (EIF_CHARACTER_32)0x0000FFFD;
	i++;
	a_buffer[i] = (EIF_CHARACTER_32)GE_to_hex((uint16_t)((c & 0xF0) >> 4));
	i++;
	a_buffer[i] = (EIF_CHARACTER_32)GE_to_hex((uint16_t)(c & 0x0F));
}
#endif

/*
 * Copy to `a_buffer' the EIF_CHARACTER_32 characters corresponding to the
 * first `n' native characters in the native string `s'.
 * `a_buffer' is expected to have enough space.
 * Invalid native characters are escaped.
 */
static void GE_nstr_to_str32(EIF_NATIVE_CHAR* s, EIF_CHARACTER_32* a_buffer, EIF_INTEGER n)
{
	int i, j;
#ifdef EIF_WINDOWS
	uint16_t c1, c2;
#else
	uint8_t c1, c2, c3, c4;
#endif

	j = 0;
	for (i = 0; i < n; i++) {
#ifdef EIF_WINDOWS
		c1 = (uint16_t)s[i];
		if (c1 < 0xD800 || c1 >= 0xE000) {
				/* Codepoint from Basic Multilingual Plane: one 16-bit code unit. */
			a_buffer[j] = (EIF_CHARACTER_32)(c1);
			j++;
		} else if (c1 <= 0xDBFF && i + 1 < n) {
				/* Check if a lead surrogate (value between 0xD800 and 0xDBFF) is followed by a trail surrogate. */
			c2 = (uint16_t)s[i + 1];
			if (c2 >= 0xDC00 && c2 <= 0xDFFF) {
					/* Supplementary Planes: surrogate pair with lead and trail surrogates. */
				a_buffer[j] = (EIF_CHARACTER_32)(((uint32_t)c1 << 10) + (uint32_t)c2 - 0x035FDC00);
				j++;
				i++;
			} else {
				GE_uint16_to_escaped_str32(c1, a_buffer + j);
				j += 6;
			}
		} else {
			GE_uint16_to_escaped_str32(c1, a_buffer + j);
			j += 6;
		}
#else
		c1 = (uint8_t)s[i];
		if (c1 <= 0x7F) {
			a_buffer[j] = (EIF_CHARACTER_32)(c1);
			j++;
		} else if ((c1 & 0xE0) == 0xC0) {
			if (i + 1 < n) {
				c2 = (uint8_t)s[i + 1];
				if ((c2 & 0xC0) == 0x80) {
					a_buffer[j] = (EIF_CHARACTER_32)((((uint32_t)c1 & 0x0000001F) << 6) | ((uint32_t)c2 & 0x0000003F));
					j++;
					i++;
				} else {
					GE_uint8_to_escaped_str32(c1, a_buffer + j);
					j += 3;
				}
			} else {
				GE_uint8_to_escaped_str32(c1, a_buffer + j);
				j += 3;
			}
		} else if ((c1 & 0xF0) == 0xE0) {
			if (i + 2 < n) {
				c2 = (uint8_t)s[i + 1];
				c3 = (uint8_t)s[i + 2];
				if ((c2 & 0xC0) == 0x80 && (c3 & 0xC0) == 0x80) {
					a_buffer[j] = (EIF_CHARACTER_32)((((uint32_t)c1 & 0x0000000F) << 12) | (((uint32_t)c2 & 0x0000003F) << 6) | ((uint32_t)c3 & 0x0000003F));
					j++;
					i +=2;
				} else {
					GE_uint8_to_escaped_str32(c1, a_buffer + j);
					j += 3;
				}
			} else {
				GE_uint8_to_escaped_str32(c1, a_buffer + j);
				j += 3;
			}
		} else if ((c1 & 0xF8) == 0xF0) {
			if (i + 3 < n) {
				c2 = (uint8_t)s[i + 1];
				c3 = (uint8_t)s[i + 2];
				c4 = (uint8_t)s[i + 3];
				if ((c2 & 0xC0) == 0x80 && (c3 & 0xC0) == 0x80 && (c4 & 0xC0) == 0x80) {
					a_buffer[j] = (EIF_CHARACTER_32)((((uint32_t)c1 & 0x00000007) << 18) | (((uint32_t)c2 & 0x0000003F) << 12) | (((uint32_t)c3 & 0x0000003F) << 6) | ((uint32_t)c4 & 0x0000003F));
					j++;
					i +=3;
				} else {
					GE_uint8_to_escaped_str32(c1, a_buffer + j);
					j += 3;
				}
			} else {
				GE_uint8_to_escaped_str32(c1, a_buffer + j);
				j += 3;
			}
		} else {
			GE_uint8_to_escaped_str32(c1, a_buffer + j);
			j += 3;
		}
#endif
	}
}

/*
 * Copy to `a_buffer' the EIF_CHARACTER_32 characters corresponding to the
 * first `n' characters in the ASCII string `s'.
 * `a_buffer' is expected to have enough space for `n' characters.
 */
static void GE_str8_to_str32(const char* s, EIF_CHARACTER_32* a_buffer, EIF_INTEGER n)
{
	int i;
	for (i = 0; i < n; i++) {
		a_buffer[i] = (EIF_CHARACTER_32)s[i];
	}
}

/*
 * New Eiffel string of type "STRING_8" containing the
 * first `c' characters found in ASCII string `s'.
 */
EIF_REFERENCE GE_ms8(const char* s, EIF_INTEGER c)
{
	EIF_STRING* l_string;
	EIF_SPECIAL* l_area;
	EIF_CHARACTER_8* l_area_base_address;

	l_string = (EIF_STRING*)GE_new_str8(c);
	l_area = (EIF_SPECIAL*)(l_string->area);
	l_area_base_address = (EIF_CHARACTER_8*)((char*)l_area + l_area->offset);
	memcpy((char*)l_area_base_address, s, c);
#ifndef GE_alloc_atomic_cleared
	*(l_area_base_address + c) = (EIF_CHARACTER_8)'\0';
#endif
	l_area->count = (c + 1);
	l_string->count = c;
	return (EIF_REFERENCE)l_string;
}

/*
 * New Eiffel string of type "STRING_8" containing all
 * characters found in the null-terminated ASCII string `s'.
 */
EIF_REFERENCE GE_str8(const char* s)
{
	return GE_ms8(s, strlen(s));
}

/*
 * New Eiffel string of type "STRING_32" containing the
 * first `c' characters found in ASCII string `s'.
 */
EIF_REFERENCE GE_ms32(const char* s, EIF_INTEGER c)
{
	EIF_STRING* l_string;
	EIF_SPECIAL* l_area;
	EIF_CHARACTER_32* l_area_base_address;

	l_string = (EIF_STRING*)GE_new_str32(c);
	l_area = (EIF_SPECIAL*)(l_string->area);
	l_area_base_address = (EIF_CHARACTER_32*)((char*)l_area + l_area->offset);
	GE_str8_to_str32(s, l_area_base_address, c);
#ifndef GE_alloc_atomic_cleared
	*(l_area_base_address + c) = (EIF_CHARACTER_32)'\0';
#endif
	l_area->count = (c + 1);
	l_string->count = c;
	return (EIF_REFERENCE)l_string;
}

/*
 * New Eiffel string of type "STRING_32" containing all
 * characters found in the null-terminated ASCII string `s'.
 */
EIF_REFERENCE GE_str32(const char* s)
{
	return GE_ms32(s, strlen(s));
}

/*
 * New Eiffel string of type "IMMUTABLE_STRING_32" containing
 * the first `c' characters found in ASCII string `s'.
 */
EIF_REFERENCE GE_ims32(const char* s, EIF_INTEGER c)
{
	EIF_STRING* l_string;
	EIF_SPECIAL* l_area;
	EIF_CHARACTER_32* l_area_base_address;

	l_string = (EIF_STRING*)GE_new_istr32(c);
	l_area = (EIF_SPECIAL*)(l_string->area);
	l_area_base_address = (EIF_CHARACTER_32*)((char*)l_area + l_area->offset);
	GE_str8_to_str32(s, l_area_base_address, c);
#ifndef GE_alloc_atomic_cleared
	*(l_area_base_address + c) = (EIF_CHARACTER_32)'\0';
#endif
	l_area->count = (c + 1);
	l_string->count = c;
	return (EIF_REFERENCE)l_string;
}

/*
 * New Eiffel string of type "IMMUTABLE_STRING_32" containing all
 * characters found in the null-terminated ASCII string `s'.
 */
EIF_REFERENCE GE_istr32(const char* s)
{
	return GE_ims32(s, strlen(s));
}

/*
 * New Eiffel string of type "IMMUTABLE_STRING_32" containing the
 * first `n' native characters found in native string `s'.
 * Invalid native characters are escaped.
 */
EIF_REFERENCE GE_ims32_from_nstr(EIF_NATIVE_CHAR* s, EIF_INTEGER n)
{
	EIF_STRING* l_string;
	EIF_SPECIAL* l_area;
	EIF_CHARACTER_32* l_area_base_address;
	EIF_INTEGER c;

	c = GE_nstr_str32len(s, n);
	l_string = (EIF_STRING*)GE_new_istr32(c);
	l_area = (EIF_SPECIAL*)(l_string->area);
	l_area_base_address = (EIF_CHARACTER_32*)((char*)l_area + l_area->offset);
	GE_nstr_to_str32(s, l_area_base_address, n);
#ifndef GE_alloc_atomic_cleared
	*(l_area_base_address + c) = (EIF_CHARACTER_32)'\0';
#endif
	l_area->count = (c + 1);
	l_string->count = c;
	return (EIF_REFERENCE)l_string;
}

/*
 * New Eiffel string of type "IMMUTABLE_STRING_32" containing all
 * characters found in the null-terminated native string `s'.
 * Invalid native characters are escaped.
 */
EIF_REFERENCE GE_istr32_from_nstr(EIF_NATIVE_CHAR* s)
{
	return GE_ims32_from_nstr(s, GE_nstrlen(s));
}

/*
 * New Eiffel string of type "STRING" containing all
 * characters found in the null-terminated ASCII string `s'
 */
EIF_REFERENCE GE_str(const char* s)
{
	return GE_ms(s, strlen(s));
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement type information"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2016-2018, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef GE_TYPES_C
#define GE_TYPES_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_TYPES_H
#include "ge_types.h"
#endif
#ifndef GE_STRING_H
#include "ge_string.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Number of type infos in `GE_type_infos'.
 * Do not take into account the fake item at index 0.
 */
int GE_type_info_count;

/*
 * Encode a EIF_TYPE into a EIF_ENCODED_TYPE.
 * The lower part of EIF_ENCODED_TYPE contains the .id field,
 * and the upper part the .annotations.
 */
EIF_ENCODED_TYPE GE_encoded_type(EIF_TYPE a_type)
{
	EIF_ENCODED_TYPE l_result;

#if defined(_MSC_VER)
		/* This code below is just optimized as one move by cl on x86 platforms.
		 * The else-part below generates non-optimal code with cl.
		 */
	memcpy(&l_result, &a_type, sizeof(EIF_ENCODED_TYPE));
#else
		/* This code below is just optimized as one move by gcc/clang on x86 platforms. */
	l_result = a_type.annotations;
	l_result = (l_result << 16) | a_type.id;
#endif
	return l_result;
}

/*
 * Decode a EIF_ENCODED_TYPE into a EIF_TYPE.
 * The lower part of EIF_ENCODED_TYPE contains the .id field,
 * and the upper part the .annotations.
 */
EIF_TYPE GE_decoded_type(EIF_ENCODED_TYPE a_type)
{
	EIF_TYPE l_result;

#if defined(_MSC_VER)
		/* This code below is just optimized as one move by cl on x86 platforms.
		 * The else-part below generates non-optimal code with cl.
		 */
	memcpy(&l_result, &a_type, sizeof(EIF_TYPE));
#else
		/* This code below is just optimized as one move by gcc/clang on x86 platforms. */
	l_result.id = a_type & 0x0000FFFF;
	l_result.annotations = a_type >> 16;
#endif
	return l_result;
}

/*
 * Type with `a_id' and `a_annotations'.
 */
EIF_TYPE GE_new_type(EIF_TYPE_INDEX a_id, EIF_TYPE_INDEX a_annotations)
{
	EIF_TYPE l_result;
	l_result.id = a_id;
	l_result.annotations = a_annotations;
	return l_result;
}

/*
 * Associated detachable type of `a_type' if any,
 * otherwise `a_type'.
 */
EIF_TYPE GE_non_attached_type(EIF_TYPE a_type)
{
		/* Since types are by default detachable, we simply remove
		 * all attachment marks. */
	a_type.annotations &= ~(ATTACHED_FLAG | DETACHABLE_FLAG);
	return a_type;
}

/*
 * Associated attached type of `a_type' if any,
 * otherwise `a_type'.
 */
EIF_TYPE GE_attached_type(EIF_TYPE a_type)
{
	if (!GE_is_expanded_type_index(a_type.id)) {
		a_type.annotations &= ~DETACHABLE_FLAG;
		a_type.annotations |= ATTACHED_FLAG;
	}
	return a_type;
}

/*
 * Is `a_type' a SPECIAL type of user-defined expanded type?
 */
EIF_BOOLEAN GE_is_special_of_expanded_type_index(EIF_TYPE_INDEX a_type)
{
	EIF_BOOLEAN l_result = EIF_FALSE;
#ifdef GE_USE_TYPE_GENERIC_PARAMETERS
	EIF_TYPE_INDEX l_generic_parameter;
	uint32_t l_flags;

	if ((GE_type_infos[a_type].flags & GE_TYPE_FLAG_SPECIAL)) {
		l_generic_parameter = GE_decoded_type(GE_type_infos[a_type].generic_parameters[0]).id;
		l_flags = GE_type_infos[l_generic_parameter].flags;
		l_result = EIF_TEST((l_flags & GE_TYPE_FLAG_EXPANDED) && !(l_flags & GE_TYPE_FLAG_BASIC_MASK));
	}
#endif
	return l_result;
}

/*
 * Is `a_type' a SPECIAL type of reference type?
 */
EIF_BOOLEAN GE_is_special_of_reference_type_index(EIF_TYPE_INDEX a_type)
{
	EIF_BOOLEAN l_result = EIF_FALSE;
#ifdef GE_USE_TYPE_GENERIC_PARAMETERS
	EIF_TYPE_INDEX l_generic_parameter;
	uint32_t l_flags;

	if ((GE_type_infos[a_type].flags & GE_TYPE_FLAG_SPECIAL)) {
		l_generic_parameter = GE_decoded_type(GE_type_infos[a_type].generic_parameters[0]).id;
		l_flags = GE_type_infos[l_generic_parameter].flags;
		l_result = EIF_TEST(!(l_flags & GE_TYPE_FLAG_EXPANDED));
	}
#endif
	return l_result;
}

/*
 * Is `a_type' a SPECIAL type of reference type or basic expanded type?
 * (Note that user-defined expanded types are excluded.)
 */
EIF_BOOLEAN GE_is_special_of_reference_or_basic_expanded_type_index(EIF_TYPE_INDEX a_type)
{
	EIF_BOOLEAN l_result = EIF_FALSE;
#ifdef GE_USE_TYPE_GENERIC_PARAMETERS
	EIF_TYPE_INDEX l_generic_parameter;
	uint32_t l_flags;

	if ((GE_type_infos[a_type].flags & GE_TYPE_FLAG_SPECIAL)) {
		l_generic_parameter = GE_decoded_type(GE_type_infos[a_type].generic_parameters[0]).id;
		l_flags = GE_type_infos[l_generic_parameter].flags;
		l_result = EIF_TEST(!(l_flags & GE_TYPE_FLAG_EXPANDED) || (l_flags & GE_TYPE_FLAG_BASIC_MASK));
	}
#endif
	return l_result;
}

/*
 * Does `i'-th field of `a_object + a_physical_offset' (which is expected to be reference)
 * denote a reference with copy semantics?
 */
EIF_BOOLEAN GE_is_copy_semantics_field(EIF_INTEGER i, EIF_POINTER a_object, EIF_INTEGER a_physical_offset)
{
	EIF_REFERENCE l_object;

	l_object = GE_reference_field(i, a_object, a_physical_offset);
	if (l_object) {
		return GE_is_expanded_object(l_object);
	} else {
		return EIF_FALSE;
	}
}

/*
 * Does `i'-th item of special `a_object' (which is expected to be reference)
 * denote a reference with copy semantics?
 */
EIF_BOOLEAN GE_is_special_copy_semantics_item(EIF_INTEGER i, EIF_POINTER a_object)
{
#if defined(GE_USE_ATTRIBUTES) && defined(GE_USE_ATTRIBUTE_OFFSET)
	EIF_REFERENCE l_object;
	GE_type_info l_type_info;

	l_type_info = GE_type_infos[((EIF_REFERENCE)a_object)->id];
		/* The last pseudo attribute is the item at index 0 in the special object */
	l_object = *(EIF_REFERENCE*)((char*)a_object + l_type_info.attributes[l_type_info.attribute_count - 1]->offset + i * sizeof(EIF_REFERENCE));
	if (l_object) {
		return GE_is_expanded_object(l_object);
	} else {
		return EIF_FALSE;
	}
#else
	return EIF_FALSE;
#endif
}

/*
 * Generator class name of `a_type'.
 */
EIF_REFERENCE GE_generator_of_type_index(EIF_TYPE_INDEX a_type)
{
	const char* l_generator;
#ifdef GE_USE_TYPE_GENERATOR
/* TODO: check that `a_type' is valid. */
	l_generator = GE_type_infos[a_type].generator;
#else
	l_generator = "";
#endif
	return GE_str(l_generator);
}

/*
 * Full name of `a_type'.
 */
EIF_REFERENCE GE_generating_type_of_encoded_type(EIF_ENCODED_TYPE a_type)
{
	const char* l_name;
#ifdef GE_USE_TYPE_NAME
/* TODO: check that `a_type' is valid. */
/* TODO: handle type annotations. */
	l_name = GE_type_infos[GE_decoded_type(a_type).id].name;
#else
	l_name = "";
#endif
	return GE_str(l_name);
}

/*
 * Encoded type whose name is `a_name'.
 * -1 if no such type.
 */
EIF_ENCODED_TYPE GE_encoded_type_from_name(EIF_POINTER a_name)
{
#ifdef GE_USE_TYPE_NAME
/* TODO: check that `a_type' is valid. */
/* TODO: handle type annotations. */
	int i;

	for (i = 1; i <= GE_type_info_count; i++) {
		if (strcmp((char*)a_name, GE_type_infos[i].name) == 0) {
			return (EIF_INTEGER)GE_encoded_type(GE_new_type(i, 0x0));
		}
	}
#endif
	return EIF_NO_TYPE;
}

/*
 * Does `a_type_1' conform to `a_type_2'?
 */
EIF_BOOLEAN GE_encoded_type_conforms_to(EIF_ENCODED_TYPE a_type_1, EIF_ENCODED_TYPE a_type_2)
{
#ifdef GE_USE_ANCESTORS
	GE_type_info l_type_info_1;
	GE_ancestor** l_ancestors;
	uint32_t l_ancestor_count, i;
	EIF_TYPE_INDEX l_type_index_1, l_type_index_2, l_ancestor_type_index;

/* TODO: take into account type annotation */
	l_type_index_1 = GE_decoded_type(a_type_1).id;
	l_type_index_2 = GE_decoded_type(a_type_2).id;
	l_type_info_1 = GE_type_infos[l_type_index_1];
	if (l_type_info_1.flags & GE_TYPE_FLAG_NONE) {
			/* NONE */
		uint32_t l_flags = GE_type_infos[l_type_index_2].flags;
		return EIF_TEST(!(l_flags & GE_TYPE_FLAG_EXPANDED));
	} else {
		l_ancestors = l_type_info_1.ancestors;
		l_ancestor_count = l_type_info_1.ancestor_count;
		for (i = 0; i < l_ancestor_count; i++) {
			l_ancestor_type_index = l_ancestors[i]->type_id;
			if (l_ancestor_type_index == l_type_index_2) {
				return EIF_TRUE;
			} else if (l_ancestor_type_index > l_type_index_2) {
				return EIF_FALSE;
			}
		}
	}
#endif
	return EIF_FALSE;
}

/*
 * Number of generic parameters.
 */
EIF_INTEGER GE_generic_parameter_count_of_type_index(EIF_TYPE_INDEX a_type)
{
#ifdef GE_USE_TYPE_GENERIC_PARAMETERS
	return (EIF_INTEGER)GE_type_infos[a_type].generic_parameter_count;
#else
	return (EIF_INTEGER)0;
#endif
}

/*
 * Type of `i'-th generic parameter of `a_type'.
 */
EIF_INTEGER GE_generic_parameter_of_type_index(EIF_TYPE_INDEX a_type, EIF_INTEGER i)
{
#ifdef GE_USE_TYPE_GENERIC_PARAMETERS
/* TODO: check that `a_type' and `i' are valid. */
	return (EIF_INTEGER)GE_type_infos[a_type].generic_parameters[i - 1];
#else
	return (EIF_INTEGER)0;
#endif
}

/*
 * Number of fields of an object of dynamic type `a_type'.
 */
EIF_INTEGER GE_field_count_of_type_index(EIF_TYPE_INDEX a_type)
{
#if defined(GE_USE_ATTRIBUTES) && defined(GE_USE_ATTRIBUTE_OFFSET)
/* TODO: check that `a_type' is valid. */
	return (EIF_INTEGER)GE_type_infos[a_type].attribute_count;
#else
	return (EIF_INTEGER)0;
#endif
}

/*
 * Physical offset of the `i'-th field for an object of dynamic type `a_type'.
 */
EIF_INTEGER GE_field_offset_of_type_index(EIF_INTEGER i, EIF_TYPE_INDEX a_type)
{
#if defined(GE_USE_ATTRIBUTES) && defined(GE_USE_ATTRIBUTE_OFFSET)
/* TODO: check that `a_type' and `i' are valid. */
	return (EIF_INTEGER)GE_type_infos[a_type].attributes[i - 1]->offset;
#else
	return (EIF_INTEGER)0;
#endif
}

/*
 * Name of the `i'-th field for an object of dynamic type `a_type'.
 */
EIF_POINTER GE_field_name_of_type_index(EIF_INTEGER i, EIF_TYPE_INDEX a_type)
{
#if defined(GE_USE_ATTRIBUTES) && defined(GE_USE_ATTRIBUTE_NAME)
/* TODO: check that `a_type' and `i' are valid. */
	return (EIF_POINTER)GE_type_infos[a_type].attributes[i - 1]->name;
#else
	return (EIF_POINTER)0;
#endif
}

/*
 * Static type of the `i'-th field for an object of dynamic type `a_type'.
 */
EIF_INTEGER GE_field_static_type_of_type_index(EIF_INTEGER i, EIF_TYPE_INDEX a_type)
{
#if defined(GE_USE_ATTRIBUTES) && defined(GE_USE_ATTRIBUTE_TYPE_ID)
/* TODO: check that `a_type' and `i' are valid. */
	return (EIF_INTEGER)GE_type_infos[a_type].attributes[i - 1]->type_id;
#else
	return (EIF_INTEGER)0;
#endif
}

/*
 * Kind of type of the `i'-th field for an object of dynamic type `a_type'.
 */
EIF_INTEGER GE_field_type_kind_of_type_index(EIF_INTEGER i, EIF_TYPE_INDEX a_type)
{
#if defined(GE_USE_ATTRIBUTES) && defined(GE_USE_ATTRIBUTE_TYPE_ID)
	uint32_t l_flags = GE_type_infos[GE_decoded_type(GE_type_infos[a_type].attributes[i - 1]->type_id).id].flags;
	if (l_flags & GE_TYPE_FLAG_BASIC_MASK) {
		switch (l_flags & GE_TYPE_FLAG_BASIC_MASK) {
		case GE_TYPE_FLAG_BOOLEAN:
			return (EIF_INTEGER)GE_TYPE_KIND_BOOLEAN;
		case GE_TYPE_FLAG_CHARACTER_8:
			return (EIF_INTEGER)GE_TYPE_KIND_CHARACTER_8;
		case GE_TYPE_FLAG_CHARACTER_32:
			return (EIF_INTEGER)GE_TYPE_KIND_CHARACTER_32;
		case GE_TYPE_FLAG_INTEGER_8:
			return (EIF_INTEGER)GE_TYPE_KIND_INTEGER_8;
		case GE_TYPE_FLAG_INTEGER_16:
			return (EIF_INTEGER)GE_TYPE_KIND_INTEGER_16;
		case GE_TYPE_FLAG_INTEGER_32:
			return (EIF_INTEGER)GE_TYPE_KIND_INTEGER_32;
		case GE_TYPE_FLAG_INTEGER_64:
			return (EIF_INTEGER)GE_TYPE_KIND_INTEGER_64;
		case GE_TYPE_FLAG_NATURAL_8:
			return (EIF_INTEGER)GE_TYPE_KIND_NATURAL_8;
		case GE_TYPE_FLAG_NATURAL_16:
			return (EIF_INTEGER)GE_TYPE_KIND_NATURAL_16;
		case GE_TYPE_FLAG_NATURAL_32:
			return (EIF_INTEGER)GE_TYPE_KIND_NATURAL_32;
		case GE_TYPE_FLAG_NATURAL_64:
			return (EIF_INTEGER)GE_TYPE_KIND_NATURAL_64;
		case GE_TYPE_FLAG_POINTER:
			return (EIF_INTEGER)GE_TYPE_KIND_POINTER;
		case GE_TYPE_FLAG_REAL_32:
			return (EIF_INTEGER)GE_TYPE_KIND_REAL_32;
		case GE_TYPE_FLAG_REAL_64:
			return (EIF_INTEGER)GE_TYPE_KIND_REAL_64;
		default:
			return (EIF_INTEGER)GE_TYPE_KIND_INVALID;
		}
	} else if (l_flags & GE_TYPE_FLAG_EXPANDED) {
		return (EIF_INTEGER)GE_TYPE_KIND_EXPANDED;
	} else {
		return (EIF_INTEGER)GE_TYPE_KIND_REFERENCE;
	}
#else
	return (EIF_INTEGER)GE_TYPE_KIND_INVALID;
#endif
}

/*
 * Physical size of `a_object'.
 */
EIF_NATURAL_64 GE_object_size(EIF_POINTER a_object)
{
#ifdef GE_USE_TYPE_OBJECT_SIZE
	EIF_TYPE_INDEX l_type_index = ((EIF_REFERENCE)(a_object))->id;
	uint64_t l_size = GE_type_infos[l_type_index].object_size;
#ifdef GE_USE_TYPE_GENERIC_PARAMETERS
	if (GE_is_special_type_index(l_type_index)) {
		EIF_TYPE_INDEX l_generic_parameter = GE_decoded_type(GE_type_infos[l_type_index].generic_parameters[0]).id;
		uint32_t l_flags = GE_type_infos[l_generic_parameter].flags;
		EIF_INTEGER l_capacity = ((EIF_SPECIAL*)a_object)->capacity;
		uint64_t l_item_size;

		if (l_flags & GE_TYPE_FLAG_BASIC_MASK) {
			switch (l_flags & GE_TYPE_FLAG_BASIC_MASK) {
			case GE_TYPE_FLAG_BOOLEAN:
				l_item_size = sizeof(EIF_BOOLEAN);
				break;
			case GE_TYPE_FLAG_CHARACTER_8:
				l_item_size = sizeof(EIF_CHARACTER_8);
				break;
			case GE_TYPE_FLAG_CHARACTER_32:
				l_item_size = sizeof(EIF_CHARACTER_32);
				break;
			case GE_TYPE_FLAG_INTEGER_8:
				l_item_size = sizeof(EIF_INTEGER_8);
				break;
			case GE_TYPE_FLAG_INTEGER_16:
				l_item_size = sizeof(EIF_INTEGER_16);
				break;
			case GE_TYPE_FLAG_INTEGER_32:
				l_item_size = sizeof(EIF_INTEGER_32);
				break;
			case GE_TYPE_FLAG_INTEGER_64:
				l_item_size = sizeof(EIF_INTEGER_64);
				break;
			case GE_TYPE_FLAG_NATURAL_8:
				l_item_size = sizeof(EIF_NATURAL_8);
				break;
			case GE_TYPE_FLAG_NATURAL_16:
				l_item_size = sizeof(EIF_NATURAL_16);
				break;
			case GE_TYPE_FLAG_NATURAL_32:
				l_item_size = sizeof(EIF_NATURAL_32);
				break;
			case GE_TYPE_FLAG_NATURAL_64:
				l_item_size = sizeof(EIF_NATURAL_64);
				break;
			case GE_TYPE_FLAG_POINTER:
				l_item_size = sizeof(EIF_POINTER);
				break;
			case GE_TYPE_FLAG_REAL_32:
				l_item_size = sizeof(EIF_REAL_32);
				break;
			case GE_TYPE_FLAG_REAL_64:
				l_item_size = sizeof(EIF_REAL_64);
				break;
			default:
				l_item_size = 0;
			}
		} else if (l_flags & GE_TYPE_FLAG_EXPANDED) {
			l_item_size = GE_type_infos[l_generic_parameter].object_size;
		} else {
			l_item_size = sizeof(EIF_REFERENCE);
		}
		l_size += l_capacity * l_item_size;
	}
#endif
	return (EIF_NATURAL_64)l_size;
#else
	return (EIF_NATURAL_64)0;
#endif
}

/*
 * Is `i'-th field of objects of type `a_type' a user-defined expanded attribute?
 */
EIF_BOOLEAN GE_is_field_expanded_of_type_index(EIF_INTEGER i, EIF_TYPE_INDEX a_type)
{
#if defined(GE_USE_ATTRIBUTES) && defined(GE_USE_ATTRIBUTE_TYPE_ID)
	uint32_t l_flags = GE_type_infos[GE_decoded_type(GE_type_infos[a_type].attributes[i - 1]->type_id).id].flags;
	return EIF_TEST((l_flags & GE_TYPE_FLAG_EXPANDED) && !(l_flags & GE_TYPE_FLAG_BASIC_MASK));
#else
	return EIF_FALSE;
#endif
}

/*
 * Get a lock on `GE_mark_object' and `GE_unmark_object' routines so that
 * 2 threads cannot `GE_mark_object' and `GE_unmark_object' at the same time.
 */
void GE_lock_marking(void)
{
#ifdef GE_USE_THREADS
/* TODO */
#endif
}

/*
 * Release a lock on `GE_mark_object' and `GE_unmark_object', so that another
 * thread can use `GE_mark_object' and `GE_unmark_object'.
 */
void GE_unlock_marking(void)
{
#ifdef GE_USE_THREADS
/* TODO */
#endif
}

/*
 * Is `obj' marked?
 */
EIF_BOOLEAN GE_is_object_marked(EIF_POINTER obj)
{
	return EIF_TEST(((EIF_REFERENCE)obj)->flags & GE_OBJECT_FLAG_MARKED);
}

/*
 * Mark `obj'.
 */
void GE_mark_object(EIF_POINTER obj)
{
	((EIF_REFERENCE)obj)->flags |= GE_OBJECT_FLAG_MARKED;
}

/*
 * Unmark `obj'.
 */
void GE_unmark_object(EIF_POINTER obj)
{
	((EIF_REFERENCE)obj)->flags &= ~GE_OBJECT_FLAG_MARKED;
}

/*
 * New instance of dynamic `a_type'.
 * Note: returned object is not initialized and may
 * hence violate its invariant.
 * `a_type' cannot represent a SPECIAL type, use
 * `GE_new_special_instance_of_special_type_index' instead.
 */
EIF_REFERENCE GE_new_instance_of_type_index(EIF_TYPE_INDEX a_type)
{
	EIF_REFERENCE (*l_new)(EIF_BOOLEAN);

	l_new = (EIF_REFERENCE (*)(EIF_BOOLEAN))GE_type_infos[a_type].new_instance;
	if (l_new) {
		return l_new(EIF_TRUE);
	} else {
		return EIF_VOID;
	}
}

/*
 * New instance of dynamic `a_type' that represents
 * a SPECIAL with can contain `a_capacity' element. To create a SPECIAL of
 * basic type, use `SPECIAL'.
 */
EIF_REFERENCE GE_new_special_any_instance_of_type_index(EIF_TYPE_INDEX a_type, EIF_INTEGER a_capacity)
{
	EIF_REFERENCE (*l_new)(EIF_INTEGER,EIF_BOOLEAN);

	l_new = (EIF_REFERENCE (*)(EIF_INTEGER,EIF_BOOLEAN))GE_type_infos[a_type].new_instance;
	if (l_new) {
		return l_new(a_capacity, EIF_TRUE);
	} else {
		return EIF_VOID;
	}
}

/*
 * New instance of TYPE for object of type `a_type'.
 */
EIF_REFERENCE GE_new_type_instance_of_encoded_type(EIF_ENCODED_TYPE a_type)
{
	EIF_TYPE_INDEX l_type_index;
	EIF_REFERENCE l_result;

/* TODO: take into account type annotation. */
	l_type_index = GE_decoded_type(a_type).id;
	l_result = (EIF_REFERENCE)&(GE_types[l_type_index]);
	if (l_result->id == 0) {
		l_result = EIF_VOID;
		GE_raise(GE_EX_PROG);
	}
	return l_result;
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to access garbage collector facilities"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2007-2017, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef GE_GC_C
#define GE_GC_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_GC_H
#include "ge_gc.h"
#endif
#ifndef GE_TYPES_H
#include "ge_types.h"
#endif

/*
 * Allocate memory that does not contain pointers to collectable objects.
 * The allocated memory is zeroed.
 * The allocated object is itself not collectable.
 * Do not raise an exception when no-more-memory.
 */
#ifdef GE_USE_BOEHM_GC
void* GE_unprotected_calloc_atomic_uncollectable(size_t nelem, size_t elsize)
{
	void* new_p;

	new_p = GC_malloc_atomic_uncollectable(nelem * elsize);
	if (new_p) {
		memset(new_p, 0, nelem * elsize);
	}
	return new_p;
}
#endif

/*
 * Allocate more memory for the given pointer.
 * The reallocated pointer keeps the same properties (e.g. atomic or not, collectable or not).
 * The extra allocated memory is zeroed.
 * Raise an exception when no-more-memory.
 */
void* GE_recalloc(void* p, size_t old_nelem, size_t new_nelem, size_t elsize)
{
	void* new_p;
#ifdef GE_USE_BOEHM_GC
	new_p = GE_null(GC_REALLOC(p, new_nelem * elsize));
#else /* No GC */
	new_p = GE_null(realloc(p, new_nelem * elsize));
#endif
	memset(((char*)new_p) + (old_nelem * elsize), 0, (new_nelem - old_nelem) * elsize);
	return new_p;
}

/*
 * Allocate more memory for the given pointer.
 * The reallocated pointer keeps the same properties (e.g. atomic or not, collectable or not).
 * The extra allocated memory is zeroed.
 * Do not raise an exception when no-more-memory.
 */
void* GE_unprotected_recalloc(void* p, size_t old_nelem, size_t new_nelem, size_t elsize)
{
	void* new_p;
#ifdef GE_USE_BOEHM_GC
	new_p = GC_REALLOC(p, new_nelem * elsize);
#else /* No GC */
	new_p = realloc(p, new_nelem * elsize);
#endif
	if (new_p) {
		memset(((char*)new_p) + (old_nelem * elsize), 0, (new_nelem - old_nelem) * elsize);
	}
	return new_p;
}

/*
 * Call dispose routine `disp' on object `C'.
 */
#ifdef GE_USE_BOEHM_GC
void GE_boehm_dispose(void* C, void* disp) {
	((GE_types[((EIF_REFERENCE)C)->id]).dispose)(GE_current_context(), (EIF_REFERENCE) C);
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class THREAD and related threading facilities"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2016-2018, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef GE_THREAD_C
#define GE_THREAD_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifdef GE_USE_THREADS

#ifndef GE_THREAD_H
#include "ge_thread.h"
#endif
#ifndef GE_GC_H
#include "ge_gc.h"
#endif
#ifndef GE_ONCE_H
#include "ge_once.h"
#endif
#ifndef GE_TIME_H
#include "ge_time.h"
#endif

#ifdef GE_USE_POSIX_THREADS
#include <limits.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Numbers of once-per-thread features.
 */
static unsigned int GE_thread_onces_boolean_count;
static unsigned int GE_thread_onces_character_8_count;
static unsigned int GE_thread_onces_character_32_count;
static unsigned int GE_thread_onces_integer_8_count;
static unsigned int GE_thread_onces_integer_16_count;
static unsigned int GE_thread_onces_integer_32_count;
static unsigned int GE_thread_onces_integer_64_count;
static unsigned int GE_thread_onces_natural_8_count;
static unsigned int GE_thread_onces_natural_16_count;
static unsigned int GE_thread_onces_natural_32_count;
static unsigned int GE_thread_onces_natural_64_count;
static unsigned int GE_thread_onces_pointer_count;
static unsigned int GE_thread_onces_real_32_count;
static unsigned int GE_thread_onces_real_64_count;
static unsigned int GE_thread_onces_reference_count;
static unsigned int GE_thread_onces_procedure_count;

/*
 * Mutexes used to protect the calls to once-per-process features.
 */
GE_once_mutexes* GE_process_once_mutexes;

/*
 * Create a new 'GE_once_mutexes' struct which can deal with the
 * numbers of once features passed as argument.
 */
GE_once_mutexes* GE_new_once_mutexes(
	unsigned int a_boolean_count,
	unsigned int a_character_8_count,
	unsigned int a_character_32_count,
	unsigned int a_integer_8_count,
	unsigned int a_integer_16_count,
	unsigned int a_integer_32_count,
	unsigned int a_integer_64_count,
	unsigned int a_natural_8_count,
	unsigned int a_natural_16_count,
	unsigned int a_natural_32_count,
	unsigned int a_natural_64_count,
	unsigned int a_pointer_count,
	unsigned int a_real_32_count,
	unsigned int a_real_64_count,
	unsigned int a_reference_count,
	unsigned int a_procedure_count)
{
	GE_once_mutexes* l_once_mutexes;
	unsigned int i;

	l_once_mutexes = (GE_once_mutexes*)GE_calloc_atomic_uncollectable(1, sizeof(GE_once_mutexes));
	if (a_boolean_count > 0) {
		l_once_mutexes->boolean_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_boolean_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_boolean_count; i++) {
			l_once_mutexes->boolean_mutex[i] = GE_mutex_create();
		}
	}
	if (a_character_8_count > 0) {
		l_once_mutexes->character_8_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_character_8_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_character_8_count; i++) {
			l_once_mutexes->character_8_mutex[i] = GE_mutex_create();
		}
	}
	if (a_character_32_count > 0) {
		l_once_mutexes->character_32_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_character_32_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_character_32_count; i++) {
			l_once_mutexes->character_32_mutex[i] = GE_mutex_create();
		}
	}
	if (a_integer_8_count > 0) {
		l_once_mutexes->integer_8_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_integer_8_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_integer_8_count; i++) {
			l_once_mutexes->integer_8_mutex[i] = GE_mutex_create();
		}
	}
	if (a_integer_16_count > 0) {
		l_once_mutexes->integer_16_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_integer_16_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_integer_16_count; i++) {
			l_once_mutexes->integer_16_mutex[i] = GE_mutex_create();
		}
	}
	if (a_integer_32_count > 0) {
		l_once_mutexes->integer_32_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_integer_32_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_integer_32_count; i++) {
			l_once_mutexes->integer_32_mutex[i] = GE_mutex_create();
		}
	}
	if (a_integer_64_count > 0) {
		l_once_mutexes->integer_64_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_integer_64_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_integer_64_count; i++) {
			l_once_mutexes->integer_64_mutex[i] = GE_mutex_create();
		}
	}
	if (a_natural_8_count > 0) {
		l_once_mutexes->natural_8_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_natural_8_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_natural_8_count; i++) {
			l_once_mutexes->natural_8_mutex[i] = GE_mutex_create();
		}
	}
	if (a_natural_16_count > 0) {
		l_once_mutexes->natural_16_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_natural_16_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_natural_16_count; i++) {
			l_once_mutexes->natural_16_mutex[i] = GE_mutex_create();
		}
	}
	if (a_natural_32_count > 0) {
		l_once_mutexes->natural_32_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_natural_32_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_natural_32_count; i++) {
			l_once_mutexes->natural_32_mutex[i] = GE_mutex_create();
		}
	}
	if (a_natural_64_count > 0) {
		l_once_mutexes->natural_64_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_natural_64_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_natural_64_count; i++) {
			l_once_mutexes->natural_64_mutex[i] = GE_mutex_create();
		}
	}
	if (a_pointer_count > 0) {
		l_once_mutexes->pointer_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_pointer_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_pointer_count; i++) {
			l_once_mutexes->pointer_mutex[i] = GE_mutex_create();
		}
	}
	if (a_real_32_count > 0) {
		l_once_mutexes->real_32_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_real_32_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_real_32_count; i++) {
			l_once_mutexes->real_32_mutex[i] = GE_mutex_create();
		}
	}
	if (a_real_64_count > 0) {
		l_once_mutexes->real_64_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_real_64_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_real_64_count; i++) {
			l_once_mutexes->real_64_mutex[i] = GE_mutex_create();
		}
	}
	if (a_reference_count > 0) {
		l_once_mutexes->reference_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_reference_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_reference_count; i++) {
			l_once_mutexes->reference_mutex[i] = GE_mutex_create();
		}
	}
	if (a_procedure_count > 0) {
		l_once_mutexes->procedure_mutex = (EIF_POINTER*)GE_malloc_atomic_uncollectable(a_procedure_count * sizeof(EIF_POINTER));
		for (i = 0; i < a_procedure_count; i++) {
			l_once_mutexes->procedure_mutex[i] = GE_mutex_create();
		}
	}
	return l_once_mutexes;
}

/*
 * Keep track of the numbers of once-per-thread features.
 */
void GE_thread_onces_set_counts(
	unsigned int a_boolean_count,
	unsigned int a_character_8_count,
	unsigned int a_character_32_count,
	unsigned int a_integer_8_count,
	unsigned int a_integer_16_count,
	unsigned int a_integer_32_count,
	unsigned int a_integer_64_count,
	unsigned int a_natural_8_count,
	unsigned int a_natural_16_count,
	unsigned int a_natural_32_count,
	unsigned int a_natural_64_count,
	unsigned int a_pointer_count,
	unsigned int a_real_32_count,
	unsigned int a_real_64_count,
	unsigned int a_reference_count,
	unsigned int a_procedure_count)
{
	GE_thread_onces_boolean_count = a_boolean_count;
	GE_thread_onces_character_8_count = a_character_8_count;
	GE_thread_onces_character_32_count = a_character_32_count;
	GE_thread_onces_integer_8_count = a_integer_8_count;
	GE_thread_onces_integer_16_count = a_integer_16_count;
	GE_thread_onces_integer_32_count = a_integer_32_count;
	GE_thread_onces_integer_64_count = a_integer_64_count;
	GE_thread_onces_natural_8_count = a_natural_8_count;
	GE_thread_onces_natural_16_count = a_natural_16_count;
	GE_thread_onces_natural_32_count = a_natural_32_count;
	GE_thread_onces_natural_64_count = a_natural_64_count;
	GE_thread_onces_pointer_count = a_pointer_count;
	GE_thread_onces_real_32_count = a_real_32_count;
	GE_thread_onces_real_64_count = a_real_64_count;
	GE_thread_onces_reference_count = a_reference_count;
	GE_thread_onces_procedure_count = a_procedure_count;
}

/*
 * Initialize `process_onces' and `thread_onces' in `a_context'.
 */
static void GE_thread_init_onces(GE_context* a_context)
{
	a_context->process_onces = GE_new_onces(
		GE_process_onces->boolean_count,
		GE_process_onces->character_8_count,
		GE_process_onces->character_32_count,
		GE_process_onces->integer_8_count,
		GE_process_onces->integer_16_count,
		GE_process_onces->integer_32_count,
		GE_process_onces->integer_64_count,
		GE_process_onces->natural_8_count,
		GE_process_onces->natural_16_count,
		GE_process_onces->natural_32_count,
		GE_process_onces->natural_64_count,
		GE_process_onces->pointer_count,
		GE_process_onces->real_32_count,
		GE_process_onces->real_64_count,
		GE_process_onces->reference_count,
		GE_process_onces->procedure_count);
	a_context->thread_onces = GE_new_onces(
		GE_thread_onces_boolean_count,
		GE_thread_onces_character_8_count,
		GE_thread_onces_character_32_count,
		GE_thread_onces_integer_8_count,
		GE_thread_onces_integer_16_count,
		GE_thread_onces_integer_32_count,
		GE_thread_onces_integer_64_count,
		GE_thread_onces_natural_8_count,
		GE_thread_onces_natural_16_count,
		GE_thread_onces_natural_32_count,
		GE_thread_onces_natural_64_count,
		GE_thread_onces_pointer_count,
		GE_thread_onces_real_32_count,
		GE_thread_onces_real_64_count,
		GE_thread_onces_reference_count,
		GE_thread_onces_procedure_count);
}

/* Key to access Thread Specific Data. */
static EIF_TSD_TYPE GE_thread_context_key;

#define GE_THREAD_OK 1
#define GE_THREAD_BUSY 2
#define GE_THREAD_TIMEDOUT 3
#define GE_THREAD_ERROR 4

/*
 * Create a new mutex.
 * Do not raise an exception in case of error (just return a null pointer).
 */
static EIF_POINTER GE_unprotected_mutex_create(uintptr_t a_spin_count)
{
#ifdef GE_USE_POSIX_THREADS
	EIF_MUTEX_TYPE* l_mutex;

	l_mutex = (EIF_MUTEX_TYPE*)GE_unprotected_malloc_atomic_uncollectable(sizeof(EIF_MUTEX_TYPE));
	if (l_mutex) {
			/* Make the mutex recursive by default. */
			/* This allows a thread to lock the mutex several times without blocking itself. */
		pthread_mutexattr_t l_attr;
		pthread_mutexattr_init(&l_attr);
		pthread_mutexattr_settype(&l_attr, PTHREAD_MUTEX_RECURSIVE);
		if (pthread_mutex_init(l_mutex, &l_attr)) {
			GE_free(l_mutex);
			l_mutex = NULL;
		}
		pthread_mutexattr_destroy(&l_attr);
	}
	return (EIF_POINTER)l_mutex;
#elif defined EIF_WINDOWS
	EIF_CS_TYPE* l_section;

	l_section = (EIF_CS_TYPE*)GE_unprotected_malloc_atomic_uncollectable(sizeof(EIF_CS_TYPE));
	if (l_section) {
		if (!InitializeCriticalSectionAndSpinCount(l_section, (DWORD)a_spin_count)) {
			GE_free(l_section);
			l_section = NULL;
		}
	}
	return (EIF_POINTER)l_section;
#else
	return (EIF_POINTER)0;
#endif
}

/*
 * Create a new mutex.
 */
EIF_POINTER GE_mutex_create(void)
{
	EIF_POINTER l_mutex;

	l_mutex = GE_unprotected_mutex_create(4000);
	if (!l_mutex) {
		GE_raise_with_message(GE_EX_EXT, "Cannot create mutex");
	}
	return l_mutex;
}

/*
 * Lock mutex.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_mutex_lock(EIF_POINTER a_mutex)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_mutex_lock((EIF_MUTEX_TYPE*)a_mutex)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	EnterCriticalSection((EIF_CS_TYPE*)a_mutex);
	return GE_THREAD_OK;
#else
	return GE_THREAD_ERROR;
	GE_raise_with_message(GE_EX_EXT, "Cannot lock mutex");
#endif
}

/*
 * Lock mutex.
 */
void GE_mutex_lock(EIF_POINTER a_mutex)
{
	if (GE_unprotected_mutex_lock(a_mutex) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot lock mutex");
	}
}

/*
 * Try to lock mutex.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_mutex_try_lock(EIF_POINTER a_mutex)
{
#ifdef GE_USE_POSIX_THREADS
	switch (pthread_mutex_trylock((EIF_MUTEX_TYPE*)a_mutex)) {
	case EBUSY:
		return GE_THREAD_BUSY;
	case 0:
		return GE_THREAD_OK;
	default:
		return GE_THREAD_ERROR;
	}
#elif defined EIF_WINDOWS
	if (TryEnterCriticalSection((EIF_CS_TYPE*)a_mutex)) {
		return GE_THREAD_OK;
	} else {
		return GE_THREAD_BUSY;
	}
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Try to lock mutex. Return True on success.
 */
EIF_BOOLEAN GE_mutex_try_lock(EIF_POINTER a_mutex)
{
	switch (GE_unprotected_mutex_try_lock(a_mutex)) {
	case GE_THREAD_OK:
		return EIF_TRUE;
	case GE_THREAD_BUSY:
		return EIF_FALSE;
	default:
		GE_raise_with_message(GE_EX_EXT, "Cannot lock mutex");
		return EIF_FALSE;
	}
}

/*
 * Unlock mutex.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_mutex_unlock(EIF_POINTER a_mutex)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_mutex_unlock((EIF_MUTEX_TYPE*)a_mutex)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	LeaveCriticalSection((EIF_CS_TYPE*)a_mutex);
	return GE_THREAD_OK;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Unlock mutex.
 */
void GE_mutex_unlock(EIF_POINTER a_mutex)
{
	if (GE_unprotected_mutex_unlock(a_mutex) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot unlock mutex");
	}
}

/*
 * Destroy and free all resources used by mutex.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_mutex_destroy(EIF_POINTER a_mutex)
{
#ifdef GE_USE_POSIX_THREADS
	int l_result = GE_THREAD_OK;

	if (a_mutex) {
		if (pthread_mutex_destroy((EIF_MUTEX_TYPE*)a_mutex)) {
			l_result = GE_THREAD_ERROR;
		}
		GE_free(a_mutex);
	}
	return l_result;
#elif defined EIF_WINDOWS
	if (a_mutex) {
		DeleteCriticalSection((EIF_CS_TYPE*)a_mutex);
		GE_free(a_mutex);
	}
	return GE_THREAD_OK;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Destroy and free all resources used by mutex.
 */
void GE_mutex_destroy(EIF_POINTER a_mutex)
{
	GE_unprotected_mutex_destroy(a_mutex);
}

/*
 * Create a new semaphore allowing `a_count' threads
 * to go into a critical section.
 * Do not raise an exception in case of error (just return a null pointer).
 */
static EIF_POINTER GE_unprotected_semaphore_create(EIF_INTEGER a_count)
{
	EIF_SEM_TYPE* l_semaphore;

#ifdef GE_USE_POSIX_THREADS
	l_semaphore = (EIF_SEM_TYPE*)GE_unprotected_malloc_atomic_uncollectable(sizeof(EIF_SEM_TYPE));
	if (l_semaphore) {
		if (sem_init(l_semaphore, 0, a_count)) {
			GE_free(l_semaphore);
			l_semaphore = NULL;
		}
	}
	return (EIF_POINTER)l_semaphore;
#elif defined EIF_WINDOWS
	l_semaphore = CreateSemaphore(NULL, (LONG)a_count, (LONG)0x7fffffff, NULL);
	return (EIF_POINTER)l_semaphore;
#else
	return (EIF_POINTER)0;
#endif
}

/*
 * Create a new semaphore allowing `a_count' threads
 * to go into a critical section.
 */
EIF_POINTER GE_semaphore_create(EIF_INTEGER a_count)
{
	EIF_POINTER l_semaphore;

	l_semaphore = GE_unprotected_semaphore_create(a_count);
	if (!l_semaphore) {
		GE_raise_with_message(GE_EX_EXT, "Cannot create semaphore");
	}
	return l_semaphore;
}

/*
 * Decrement semaphore count, waiting if necessary
 * until that becomes possible.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_semaphore_wait(EIF_POINTER a_semaphore)
{
#ifdef GE_USE_POSIX_THREADS
	if (sem_wait((EIF_SEM_TYPE*)a_semaphore)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	switch (WaitForSingleObject((EIF_SEM_TYPE*)a_semaphore, INFINITE)) {
	case WAIT_FAILED:
	case WAIT_ABANDONED:
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Decrement semaphore count, waiting if necessary
 * until that becomes possible.
 */
void GE_semaphore_wait(EIF_POINTER a_semaphore)
{
	if (GE_unprotected_semaphore_wait(a_semaphore) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot wait on semaphore");
	}
}

/*
 * Has client been successful in decrementing semaphore
 * count without waiting?
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_semaphore_try_wait(EIF_POINTER a_semaphore)
{
#ifdef GE_USE_POSIX_THREADS
	if (sem_trywait((EIF_SEM_TYPE*)a_semaphore)) {
		switch (errno) {
		case EBUSY:
		case EAGAIN:
			return GE_THREAD_BUSY;
		case 0:
			return GE_THREAD_OK;
		default:
			return GE_THREAD_ERROR;
		}
	} else {
		return GE_THREAD_OK;
	}
#elif defined EIF_WINDOWS
	switch (WaitForSingleObject((EIF_SEM_TYPE*)a_semaphore, 0)) {
	case WAIT_FAILED:
	case WAIT_ABANDONED:
		return GE_THREAD_ERROR;
	case WAIT_TIMEOUT:
		return GE_THREAD_BUSY;
	default:
		return GE_THREAD_OK;
	}
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Has client been successful in decrementing semaphore
 * count without waiting?
 */
EIF_BOOLEAN GE_semaphore_try_wait(EIF_POINTER a_semaphore)
{
	switch (GE_unprotected_semaphore_try_wait(a_semaphore)) {
	case GE_THREAD_OK:
		return EIF_TRUE;
	case GE_THREAD_BUSY:
		return EIF_FALSE;
	default:
		GE_raise_with_message(GE_EX_EXT, "Cannot try_wait on semaphore");
		return EIF_FALSE;
	}
}

/*
 * Increment semaphore count.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_semaphore_post(EIF_POINTER a_semaphore)
{
#ifdef GE_USE_POSIX_THREADS
	if (sem_post((EIF_SEM_TYPE*)a_semaphore)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	if (!ReleaseSemaphore((EIF_SEM_TYPE*)a_semaphore, 1, NULL)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Increment semaphore count.
 */
void GE_semaphore_post(EIF_POINTER a_semaphore)
{
	if (GE_unprotected_semaphore_post(a_semaphore) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot post on semaphore");
	}
}

/*
 * Destroy and free all resources used by semaphore.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_semaphore_destroy(EIF_POINTER a_semaphore)
{
#ifdef GE_USE_POSIX_THREADS
	int l_result = GE_THREAD_OK;

	if (a_semaphore) {
		if (sem_destroy((EIF_SEM_TYPE*)a_semaphore)) {
			l_result = GE_THREAD_ERROR;
		}
		GE_free(a_semaphore);
	}
	return l_result;
#elif defined EIF_WINDOWS
	int l_result = GE_THREAD_OK;

	if (a_semaphore) {
		if (!CloseHandle((EIF_SEM_TYPE*)a_semaphore)) {
			l_result = GE_THREAD_ERROR;
		}
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Destroy and free all resources used by semaphore.
 */
void GE_semaphore_destroy(EIF_POINTER a_semaphore)
{
	GE_unprotected_semaphore_destroy(a_semaphore);
}

/*
 * Create a new condition variable.
 * Do not raise an exception in case of error (just return a null pointer).
 */
static EIF_POINTER GE_unprotected_condition_variable_create(void)
{
	EIF_COND_TYPE* l_condition_variable;

#ifdef GE_USE_POSIX_THREADS
	l_condition_variable = (EIF_COND_TYPE*)GE_unprotected_malloc_atomic_uncollectable(sizeof(EIF_COND_TYPE));
	if (l_condition_variable) {
		if (pthread_cond_init(l_condition_variable, NULL)) {
			GE_free(l_condition_variable);
			l_condition_variable = NULL;
		}
	}
	return (EIF_POINTER)l_condition_variable;
#elif defined EIF_WINDOWS
	EIF_SEM_TYPE* l_semaphore;
	EIF_CS_TYPE* l_section;

	l_condition_variable = (EIF_COND_TYPE*)GE_unprotected_malloc_atomic_uncollectable(sizeof(EIF_COND_TYPE));
	if (l_condition_variable) {
		memset(l_condition_variable, 0, sizeof(EIF_COND_TYPE));
		l_semaphore = (EIF_SEM_TYPE*)GE_unprotected_semaphore_create(0);
		if (l_semaphore) {
			l_condition_variable->semaphore = l_semaphore;
			l_section = (EIF_CS_TYPE*)GE_unprotected_mutex_create(100);
			if (l_section) {
				l_condition_variable->csection = l_section;
			} else {
				GE_unprotected_semaphore_destroy((EIF_POINTER)l_semaphore);
				GE_free(l_condition_variable);
				l_condition_variable = NULL;
			}
		} else {
			GE_free(l_condition_variable);
			l_condition_variable = NULL;
		}
	}
	return (EIF_POINTER)l_condition_variable;
#else
	return (EIF_POINTER)0;
#endif
}

/*
 * Create a new condition variable.
 */
EIF_POINTER GE_condition_variable_create(void)
{
	EIF_POINTER l_condition_variable;

	l_condition_variable = GE_unprotected_condition_variable_create();
	if (!l_condition_variable) {
		GE_raise_with_message(GE_EX_EXT, "Cannot create condition variable");
	}
	return l_condition_variable;
}

/*
 * Unblock all threads blocked on condition variable.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_condition_variable_broadcast(EIF_POINTER a_condition_variable)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_cond_broadcast((EIF_COND_TYPE*)a_condition_variable)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	EIF_COND_TYPE* l_condition_variable;
	unsigned long l_num_wake = 0;
	int l_result = GE_THREAD_OK;

	l_condition_variable = (EIF_COND_TYPE*)a_condition_variable;
	l_result = GE_unprotected_mutex_lock((EIF_POINTER)l_condition_variable->csection);
	if (l_result == GE_THREAD_OK) {
		if (l_condition_variable->num_waiting > l_condition_variable->num_wake) {
			l_num_wake = l_condition_variable->num_waiting - l_condition_variable->num_wake;
			l_condition_variable->num_wake = l_condition_variable->num_waiting;
			l_condition_variable->generation++;
		}
		l_result = GE_unprotected_mutex_unlock((EIF_POINTER)l_condition_variable->csection);
		while ((l_result == GE_THREAD_OK) && l_num_wake) {
			l_result = GE_unprotected_semaphore_post((EIF_POINTER)l_condition_variable->semaphore);
			l_num_wake--;
		}
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Unblock all threads blocked on condition variable.
 */
void GE_condition_variable_broadcast(EIF_POINTER a_condition_variable)
{
	if (GE_unprotected_condition_variable_broadcast(a_condition_variable) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot broadcast on condition variable");
	}
}

/*
 * Unblock one thread blocked on condition variable.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_condition_variable_signal(EIF_POINTER a_condition_variable)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_cond_signal((EIF_COND_TYPE*)a_condition_variable)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	EIF_COND_TYPE* l_condition_variable;
	unsigned int l_wake = 0;
	int l_result = GE_THREAD_OK;

	l_condition_variable = (EIF_COND_TYPE*)a_condition_variable;
	l_result = GE_unprotected_mutex_lock((EIF_POINTER)l_condition_variable->csection);
	if (l_result == GE_THREAD_OK) {
			/* Do nothing if they are more signaled ones than awaiting threads. */
		if (l_condition_variable->num_waiting > l_condition_variable->num_wake) {
			l_wake = 1;
			l_condition_variable->num_wake++;
			l_condition_variable->generation++;
		}
		l_result = GE_unprotected_mutex_unlock((EIF_POINTER)l_condition_variable->csection);
		if ((l_result == GE_THREAD_OK) && l_wake) {
			l_result = GE_unprotected_semaphore_post((EIF_POINTER)l_condition_variable->semaphore);
		}
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Unblock one thread blocked on condition variable.
 */
void GE_condition_variable_signal(EIF_POINTER a_condition_variable)
{
	if (GE_unprotected_condition_variable_signal(a_condition_variable) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot signal on condition variable");
	}
}

#ifdef GE_USE_POSIX_THREADS
/*
 * Given a timeout in milliseconds, computes a timespec structure equivalent.
 * `a_timeout': Timeout to convert in milliseconds.
 *
 */
static struct timespec GE_timeout_to_timespec(uintptr_t a_timeout)
{
	time_t l_seconds = a_timeout / 1000;	/* `a_timeout' is in millisecond */
	long l_nano_seconds = (a_timeout % 1000) * 1000000;	/* Reminder in nanoseconds */
	struct timespec tspec;
	struct timeval now;
	GE_ftime(&now);
	tspec.tv_sec = now.tv_sec + l_seconds;
	l_nano_seconds += (now.tv_usec * 1000);
	tspec.tv_nsec = l_nano_seconds;
		/* If `l_nano_seconds' is greater than 1 second, we need to update `tspec'
		 * accordingly otherwise we may get EINVAL on some platforms. */
	if (l_nano_seconds > 1000000000) {
		tspec.tv_sec++;
		tspec.tv_nsec -= 1000000000;
	}
	return tspec;
}
#endif

/*
 * Block calling thread on condition variable for at most `a_timeout' milliseconds.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_condition_variable_wait_with_timeout(EIF_POINTER a_condition_variable, EIF_POINTER a_mutex, uintptr_t a_timeout)
{
#ifdef GE_USE_POSIX_THREADS
	struct timespec l_tspec = GE_timeout_to_timespec(a_timeout);
	switch (pthread_cond_timedwait((EIF_COND_TYPE*)a_condition_variable, (EIF_MUTEX_TYPE*)a_mutex, &l_tspec)) {
	case 0:
		return GE_THREAD_OK;
	case ETIMEDOUT:
		return GE_THREAD_TIMEDOUT;
	default:
		return GE_THREAD_ERROR;
	}
#elif defined EIF_WINDOWS
	EIF_COND_TYPE* l_condition_variable;
	unsigned int l_wake = 0;
	unsigned long l_generation;

	l_condition_variable = (EIF_COND_TYPE*)a_condition_variable;
	GE_unprotected_mutex_lock((EIF_POINTER)l_condition_variable->csection);
	l_condition_variable->num_waiting++;
	l_generation = l_condition_variable->generation;
	GE_unprotected_mutex_unlock((EIF_POINTER)l_condition_variable->csection);
	GE_unprotected_mutex_unlock(a_mutex);
	for (;;) {
		switch (WaitForSingleObject(l_condition_variable->semaphore, (DWORD)a_timeout)) {
		case WAIT_FAILED:
		case WAIT_ABANDONED:
			GE_unprotected_mutex_lock(a_mutex);
			return GE_THREAD_ERROR;
		case WAIT_TIMEOUT:
			GE_unprotected_mutex_lock((EIF_POINTER)l_condition_variable->csection);
			l_condition_variable->num_waiting--;
			GE_unprotected_mutex_unlock((EIF_POINTER)l_condition_variable->csection);
			GE_unprotected_mutex_lock(a_mutex);
			return GE_THREAD_TIMEDOUT;
		default:
			GE_unprotected_mutex_lock((EIF_POINTER)l_condition_variable->csection);
			if (l_condition_variable->num_wake) {
				if (l_condition_variable->generation != l_generation) {
					l_condition_variable->num_wake--;
					l_condition_variable->num_waiting--;
					GE_unprotected_mutex_unlock((EIF_POINTER)l_condition_variable->csection);
					GE_unprotected_mutex_lock(a_mutex);
					return GE_THREAD_OK;
				} else {
					l_wake = 1;
				}
			}
			GE_unprotected_mutex_unlock((EIF_POINTER)l_condition_variable->csection);
			if (l_wake) {
				l_wake = 0;
				GE_unprotected_semaphore_post((EIF_POINTER)l_condition_variable->semaphore);
			}
		}
	}
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Block calling thread on condition variable for at most `a_timeout' milliseconds.
 * Return 1 is we got the condition variable on time, otherwise return 0.
 */
EIF_INTEGER GE_condition_variable_wait_with_timeout(EIF_POINTER a_condition_variable, EIF_POINTER a_mutex, EIF_INTEGER a_timeout)
{
	switch (GE_unprotected_condition_variable_wait_with_timeout(a_condition_variable, a_mutex, (uintptr_t)a_timeout)) {
	case GE_THREAD_OK:
		return 1;
	case GE_THREAD_TIMEDOUT:
		return 0;
	default:
		GE_raise_with_message(GE_EX_EXT, "Cannot wait with timeout on condition variable");
		return -1;
	}
}

/*
 * Block calling thread on condition variable.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_condition_variable_wait(EIF_POINTER a_condition_variable, EIF_POINTER a_mutex)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_cond_wait((EIF_COND_TYPE*)a_condition_variable, (EIF_MUTEX_TYPE*)a_mutex)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	return GE_unprotected_condition_variable_wait_with_timeout(a_condition_variable, a_mutex, (uintptr_t)INFINITE);
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Block calling thread on condition variable.
 */
void GE_condition_variable_wait(EIF_POINTER a_condition_variable, EIF_POINTER a_mutex)
{
	if (GE_unprotected_condition_variable_wait(a_condition_variable, a_mutex) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot wait on condition variable");
	}
}

/*
 * Destroy and free all resources used by condition variable.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_condition_variable_destroy(EIF_POINTER a_condition_variable)
{
#ifdef GE_USE_POSIX_THREADS
	int l_result = GE_THREAD_OK;

	if (a_condition_variable) {
		if (pthread_cond_destroy((EIF_COND_TYPE*)a_condition_variable)) {
			l_result = GE_THREAD_ERROR;
		}
		GE_free(a_condition_variable);
	}
	return l_result;
#elif defined EIF_WINDOWS
	EIF_COND_TYPE* l_condition_variable;
	EIF_CS_TYPE* l_section;
	int l_result = GE_THREAD_OK;
	int l_other_result;

	if (a_condition_variable) {
		l_condition_variable = (EIF_COND_TYPE*)a_condition_variable;
		l_other_result = GE_unprotected_semaphore_destroy((EIF_POINTER)l_condition_variable->semaphore);
		if (l_other_result != GE_THREAD_OK) {
			l_result = l_other_result;
		}
		l_other_result = GE_unprotected_mutex_destroy((EIF_POINTER)l_condition_variable->csection);
		if (l_other_result != GE_THREAD_OK) {
			l_result = l_other_result;
		}
		GE_free(a_condition_variable);
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Destroy and free all resources used by condition variable.
 */
void GE_condition_variable_destroy(EIF_POINTER a_condition_variable)
{
	GE_unprotected_condition_variable_destroy(a_condition_variable);
}

/*
 * Create a new read-write lock.
 * Do not raise an exception in case of error (just return a null pointer).
 */
static EIF_POINTER GE_unprotected_read_write_lock_create(void)
{
	EIF_RWL_TYPE* l_read_write_lock;

#ifdef GE_USE_POSIX_THREADS
	l_read_write_lock = (EIF_RWL_TYPE*)GE_unprotected_malloc_atomic_uncollectable(sizeof(EIF_RWL_TYPE));
	if (l_read_write_lock) {
		if (pthread_rwlock_init(l_read_write_lock, NULL)) {
			GE_free(l_read_write_lock);
			l_read_write_lock = NULL;
		}
	}
	return (EIF_POINTER)l_read_write_lock;
#elif defined EIF_WINDOWS
	EIF_MUTEX_TYPE* l_mutex;
	EIF_COND_TYPE* l_readers_ok;
	EIF_COND_TYPE* l_writers_ok;

	l_read_write_lock = (EIF_RWL_TYPE*)GE_unprotected_malloc_atomic_uncollectable(sizeof(EIF_RWL_TYPE));
	if (l_read_write_lock) {
		l_mutex = (EIF_MUTEX_TYPE*)GE_unprotected_mutex_create(4000);
		if (l_mutex) {
			l_readers_ok = (EIF_COND_TYPE*)GE_unprotected_condition_variable_create();
			if (l_readers_ok) {
				l_writers_ok = (EIF_COND_TYPE*)GE_unprotected_condition_variable_create();
				if (l_writers_ok) {
					l_read_write_lock->m = l_mutex;
					l_read_write_lock->readers_ok = l_readers_ok;
					l_read_write_lock->writers_ok = l_writers_ok;
					l_read_write_lock->rwlock = 0;
					l_read_write_lock->waiting_writers = 0;
				} else {
					GE_unprotected_condition_variable_destroy((EIF_POINTER)l_readers_ok);
					GE_unprotected_mutex_destroy((EIF_POINTER)l_mutex);
					GE_free(l_read_write_lock);
					l_read_write_lock = NULL;
				}
			} else {
				GE_unprotected_mutex_destroy((EIF_POINTER)l_mutex);
				GE_free(l_read_write_lock);
				l_read_write_lock = NULL;
			}
		} else {
			GE_free(l_read_write_lock);
			l_read_write_lock = NULL;
		}
	}
	return (EIF_POINTER)l_read_write_lock;
#else
	return (EIF_POINTER)0;
#endif
}

/*
 * Create a new read-write lock.
 */
EIF_POINTER GE_read_write_lock_create(void)
{
	EIF_POINTER l_read_write_lock;

	l_read_write_lock = GE_unprotected_read_write_lock_create();
	if (!l_read_write_lock) {
		GE_raise_with_message(GE_EX_EXT, "Cannot create read-write lock variable");
	}
	return l_read_write_lock;
}

/*
 * Acquire a read lock. Multiple readers can go if there are no writer.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_read_write_lock_read_lock(EIF_POINTER a_read_write_lock)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_rwlock_rdlock((EIF_RWL_TYPE*)a_read_write_lock)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	EIF_RWL_TYPE* l_read_write_lock;
	int l_result;

	l_read_write_lock = (EIF_RWL_TYPE*)a_read_write_lock;
	l_result = GE_unprotected_mutex_lock((EIF_POINTER)l_read_write_lock->m);
	if (l_result == GE_THREAD_OK) {
		while ((l_read_write_lock->rwlock < 0 || l_read_write_lock->waiting_writers) && (l_result == GE_THREAD_OK)) {
			l_result = GE_unprotected_condition_variable_wait((EIF_POINTER)l_read_write_lock->readers_ok, (EIF_POINTER)l_read_write_lock->m);
		}
		if (l_result == GE_THREAD_OK) {
			l_read_write_lock->rwlock++;
		}
		l_result = GE_unprotected_mutex_unlock((EIF_POINTER)l_read_write_lock->m);
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Acquire a read lock. Multiple readers can go if there are no writer.
 */
void GE_read_write_lock_read_lock(EIF_POINTER a_read_write_lock)
{
	if (GE_unprotected_read_write_lock_read_lock(a_read_write_lock) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot read lock");
	}
}

/*
 * Acquire a write lock. Only a single write can proceed.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_read_write_lock_write_lock(EIF_POINTER a_read_write_lock)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_rwlock_wrlock((EIF_RWL_TYPE*)a_read_write_lock)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	EIF_RWL_TYPE* l_read_write_lock;
	int l_result;

	l_read_write_lock = (EIF_RWL_TYPE*)a_read_write_lock;
	l_result = GE_unprotected_mutex_lock((EIF_POINTER)l_read_write_lock->m);
	if (l_result == GE_THREAD_OK) {
		while ((l_read_write_lock->rwlock != 0) && (l_result == GE_THREAD_OK)) {
			l_read_write_lock->waiting_writers++;
			l_result = GE_unprotected_condition_variable_wait((EIF_POINTER)l_read_write_lock->writers_ok, (EIF_POINTER)l_read_write_lock->m);
			l_read_write_lock->waiting_writers--;
		}
		if (l_result == GE_THREAD_OK) {
			l_read_write_lock->rwlock = -1;
		}
		l_result = GE_unprotected_mutex_unlock((EIF_POINTER)l_read_write_lock->m);
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Acquire a write lock. Only a single write can proceed.
 */
void GE_read_write_lock_write_lock(EIF_POINTER a_read_write_lock)
{
	if (GE_unprotected_read_write_lock_write_lock(a_read_write_lock) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot write lock");
	}
}

/*
 * Unlock a read or write lock.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_read_write_lock_unlock(EIF_POINTER a_read_write_lock)
{
#ifdef GE_USE_POSIX_THREADS
	if (pthread_rwlock_unlock((EIF_RWL_TYPE*)a_read_write_lock)) {
		return GE_THREAD_ERROR;
	}
	return GE_THREAD_OK;
#elif defined EIF_WINDOWS
	EIF_RWL_TYPE* l_read_write_lock;
	int l_result;
	int ww, wr;

	l_read_write_lock = (EIF_RWL_TYPE*)a_read_write_lock;
	l_result = GE_unprotected_mutex_lock((EIF_POINTER)l_read_write_lock->m);
	if (l_result == GE_THREAD_OK) {
			/* rwlock < 0 iflocked for writing */
		if (l_read_write_lock->rwlock < 0) {
			l_read_write_lock->rwlock = 0;
		} else {
			l_read_write_lock->rwlock--;
		}

			/* Keep flags that show if there are waiting readers or writers
			 * so that we can wake them up outside the mocitor lock. */
		ww = (l_read_write_lock->waiting_writers && l_read_write_lock->rwlock == 0);
		wr = (l_read_write_lock->waiting_writers == 0);

		l_result = GE_unprotected_mutex_unlock((EIF_POINTER)l_read_write_lock->m);
		if (l_result == GE_THREAD_OK) {
				/* Wake up a waiting writer first. Otherwise wake up all readers. */
			if (ww) {
				l_result = GE_unprotected_condition_variable_signal((EIF_POINTER)l_read_write_lock->writers_ok);
			} else if (wr) {
				l_result = GE_unprotected_condition_variable_broadcast((EIF_POINTER)l_read_write_lock->readers_ok);
			}
		}
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Unlock a read or write lock.
 */
void GE_read_write_lock_unlock(EIF_POINTER a_read_write_lock)
{
	if (GE_unprotected_read_write_lock_unlock(a_read_write_lock) != GE_THREAD_OK) {
		GE_raise_with_message(GE_EX_EXT, "Cannot unlock read-write lock");
	}
}

/*
 * Destroy and free all resources used by read-write lock.
 * Do not raise an exception in case of error (just return a status).
 */
static int GE_unprotected_read_write_lock_destroy(EIF_POINTER a_read_write_lock)
{
#ifdef GE_USE_POSIX_THREADS
	int l_result = GE_THREAD_OK;

	if (a_read_write_lock) {
		if (pthread_rwlock_destroy((EIF_RWL_TYPE*)a_read_write_lock)) {
			l_result = GE_THREAD_ERROR;
		}
		GE_free(a_read_write_lock);
	}
	return l_result;
#elif defined EIF_WINDOWS
	EIF_RWL_TYPE* l_read_write_lock;
	int l_result = GE_THREAD_OK;
	int l_other_result;

	if (a_read_write_lock) {
		l_read_write_lock = (EIF_RWL_TYPE*)a_read_write_lock;
		l_other_result = GE_unprotected_mutex_destroy((EIF_POINTER)l_read_write_lock->m);
		if (l_other_result != GE_THREAD_OK) {
			l_result = l_other_result;
		}
		l_other_result = GE_unprotected_condition_variable_destroy((EIF_POINTER)l_read_write_lock->readers_ok);
		if (l_other_result != GE_THREAD_OK) {
			l_result = l_other_result;
		}
		l_other_result = GE_unprotected_condition_variable_destroy((EIF_POINTER)l_read_write_lock->writers_ok);
		if (l_other_result != GE_THREAD_OK) {
			l_result = l_other_result;
		}
		GE_free(l_read_write_lock);
	}
	return l_result;
#else
	return GE_THREAD_ERROR;
#endif
}

/*
 * Destroy and free all resources used by read-write lock.
 */
void GE_read_write_lock_destroy(EIF_POINTER a_read_write_lock)
{
	GE_unprotected_read_write_lock_destroy(a_read_write_lock);
}

/*
 * Pointer to current thread.
 */
static EIF_THR_TYPE GE_current_thread(void)
{
#ifdef GE_USE_POSIX_THREADS
	return pthread_self();
#elif defined EIF_WINDOWS
		/* On Windows, `GetCurrentThread' returns a pseudo handle to the Current thread, */
		/* so we have to do something special on Windows. */
	return OpenThread(THREAD_ALL_ACCESS, FALSE, GetCurrentThreadId());
#endif
}

/*
 * Register context of current thread.
 */
static void GE_register_thread_context(GE_context* a_context)
{
	EIF_TSD_SET(GE_thread_context_key, a_context, "Cannot bind thread context to TSD.");
}

/*
 * Set priority level to thread.
 */
static void GE_thread_set_priority(EIF_THR_TYPE a_thread_id, unsigned int a_priority)
{
#ifdef GE_USE_POSIX_THREADS
	struct sched_param l_param;
	memset(&l_param, 0, sizeof(struct sched_param));
	l_param.sched_priority = a_priority;
	pthread_setschedparam(a_thread_id, SCHED_OTHER, &l_param);
#elif defined(EIF_WINDOWS)
	int l_win_priority;
	switch (a_priority) {
		case EIF_MIN_THR_PRIORITY:
			l_win_priority = THREAD_PRIORITY_LOWEST;
			break;
		case EIF_MAX_THR_PRIORITY:
			l_win_priority = THREAD_PRIORITY_HIGHEST;
			break;
		default:
			if (a_priority <= EIF_BELOW_NORMAL_THR_PRIORITY) {
				l_win_priority = THREAD_PRIORITY_BELOW_NORMAL;
			} else if (a_priority < EIF_ABOVE_NORMAL_THR_PRIORITY) {
				l_win_priority = THREAD_PRIORITY_NORMAL;
			} else {
				l_win_priority = THREAD_PRIORITY_ABOVE_NORMAL;
			}
	}
	SetThreadPriority(a_thread_id, l_win_priority);
#endif
}

/*
 * Routine to be called from the new thread when created.
 */
#ifdef EIF_WINDOWS
static unsigned __stdcall GE_thread_routine(void* arg)
#else
static void* GE_thread_routine(void* arg)
#endif
{
	GE_thread_context* l_thread_context = (GE_thread_context*)arg;
	GE_context l_context = GE_default_context;

	SIGBLOCK;
	GE_unprotected_mutex_lock((EIF_POINTER)l_thread_context->parent_context->children_mutex);
	l_context.thread = l_thread_context;
	GE_thread_init_onces(&l_context);
	GE_init_exception(&l_context);
	GE_register_thread_context(&l_context);
	GE_thread_set_priority(l_thread_context->thread_id, l_thread_context->initial_priority);
	GE_unprotected_mutex_unlock((EIF_POINTER)l_thread_context->parent_context->children_mutex);
	SIGRESUME;
	l_thread_context->routine(l_thread_context->current);
	GE_thread_exit();
#ifdef EIF_WINDOWS
	return 0;
#else
	return NULL;
#endif
}

/*
 * Initialize data to handle threads.
 * To be called at the beginning of the main function
 * on the main thread.
 */
void GE_init_thread(GE_context* a_context)
{
	GE_thread_context* l_thread_context;

	EIF_TSD_CREATE(GE_thread_context_key, "Cannot create GE_thread_context_key");
	l_thread_context = (GE_thread_context*)GE_unprotected_calloc_uncollectable(1, sizeof(GE_thread_context));
	if (l_thread_context) {
		a_context->thread = l_thread_context;
		l_thread_context->thread_id = GE_current_thread();
		l_thread_context->is_alive = 1;
		GE_thread_init_onces(a_context);
		GE_register_thread_context(a_context);
	} else {
		GE_raise_with_message(GE_EX_EXT, "Cannot create thread context");
	}
}

/*
 * Create a new thread with attributes `attr' and execute
 * Eiffel routine `routine' on object `current'.
 */
void GE_thread_create_with_attr(EIF_REFERENCE current, void (*routine)(EIF_REFERENCE), void (*set_terminated)(EIF_REFERENCE,EIF_BOOLEAN), EIF_THR_ATTR_TYPE* attr)
{
	EIF_THR_TYPE l_thread_id;
	GE_thread_context* l_thread_context;
	GE_thread_context* l_current_thread_context;
	EIF_MUTEX_TYPE* l_mutex;
	EIF_COND_TYPE* l_condition_variable;
	int l_raise_error = 0;

	l_thread_context = (GE_thread_context*)GE_unprotected_calloc_uncollectable(1, sizeof(GE_thread_context));
	if (!l_thread_context) {
		l_raise_error = 1;
	} else {
		l_thread_context->current = current;
		l_thread_context->routine = routine;
		l_thread_context->set_terminated = set_terminated;
		l_thread_context->initial_priority = attr->priority;
		l_thread_context->is_alive = 1;
		l_current_thread_context = GE_thread_current_context()->thread;
		l_thread_context->parent_context = l_current_thread_context;
		if (!l_current_thread_context->children_mutex) {
				/* This is the first thread that we create from this thread. */
			l_mutex = (EIF_MUTEX_TYPE*)GE_unprotected_mutex_create(4000);
			if (l_mutex) {
				l_condition_variable = (EIF_COND_TYPE*)GE_unprotected_condition_variable_create();
				if (l_condition_variable) {
					l_current_thread_context->children_mutex = l_mutex;
					l_current_thread_context->children_cond = l_condition_variable;
					l_current_thread_context->n_children = 1;
				} else {
					GE_unprotected_mutex_destroy((EIF_POINTER)l_mutex);
					GE_free(l_thread_context);
					GE_raise_with_message(GE_EX_EXT, "Cannot create thread children condition variable");
				}
			} else {
				GE_free(l_thread_context);
				GE_raise_with_message(GE_EX_EXT, "Cannot create thread children mutex");
			}
		} else {
			SIGBLOCK;
			GE_unprotected_mutex_lock((EIF_POINTER)l_current_thread_context->children_mutex);
			l_current_thread_context->n_children++;
			GE_unprotected_mutex_unlock((EIF_POINTER)l_current_thread_context->children_mutex);
			SIGRESUME;
		}
#ifdef GE_USE_POSIX_THREADS
		{
			pthread_attr_t l_attr;
			int res;

			if (pthread_attr_init(&l_attr) == 0) {
					/* Initialize the stack size if more than the minimum. */
				if (attr->stack_size >= PTHREAD_STACK_MIN) {
					pthread_attr_setstacksize(&l_attr, attr->stack_size);
				}
				if (attr->priority != EIF_DEFAULT_THR_PRIORITY) {
					struct sched_param l_param;
					memset(&l_param, 0, sizeof(struct sched_param));
					l_param.sched_priority = attr->priority;
					pthread_attr_setschedpolicy(&l_attr, SCHED_OTHER);
					pthread_attr_setschedparam(&l_attr, &l_param);
				}
					/* We always create threads detached. */
				pthread_attr_setdetachstate(&l_attr, PTHREAD_CREATE_DETACHED);

				SIGBLOCK;
				GE_unprotected_mutex_lock((EIF_POINTER)l_current_thread_context->children_mutex);
				if (pthread_create(&l_thread_id, &l_attr, GE_thread_routine, l_thread_context) == 0) {
					l_thread_context->thread_id = l_thread_id;
					l_current_thread_context->last_thread_id = l_thread_id;
					pthread_attr_destroy(&l_attr);
				} else {
					pthread_attr_destroy(&l_attr);
					GE_free(l_thread_context);
					l_current_thread_context->n_children--;
					l_raise_error = 1;
				}
				GE_unprotected_mutex_unlock((EIF_POINTER)l_current_thread_context->children_mutex);
				SIGRESUME;
			}
		}
#elif defined EIF_WINDOWS
		SIGBLOCK;
		GE_unprotected_mutex_lock((EIF_POINTER)l_current_thread_context->children_mutex);
		l_thread_id = (EIF_THR_TYPE)_beginthreadex(NULL, (unsigned int)attr->stack_size, GE_thread_routine, l_thread_context, 0, NULL);
		if (l_thread_id == 0) {
			GE_free(l_thread_context);
			l_current_thread_context->n_children--;
			l_raise_error = 1;
		} else {
			l_thread_context->thread_id = l_thread_id;
			l_current_thread_context->last_thread_id = l_thread_id;
		}
		GE_unprotected_mutex_unlock((EIF_POINTER)l_current_thread_context->children_mutex);
		SIGRESUME;
#else
		GE_free(l_thread_context);
		SIGBLOCK;
		GE_unprotected_mutex_lock((EIF_POINTER)l_current_thread_context->children_mutex);
		l_current_thread_context->n_children--;
		GE_unprotected_mutex_unlock((EIF_POINTER)l_current_thread_context->children_mutex);
		SIGRESUME;
		l_raise_error = 1;
#endif
	}
	if (l_raise_error) {
		GE_raise_with_message(GE_EX_EXT, "Cannot create thread");
	}
}

/*
 * Execution context of current thread.
 */
GE_context* GE_thread_current_context(void)
{
	GE_context* volatile l_context;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	return l_context;
}

/*
 * Thread ID of current thread.
 */
EIF_POINTER GE_thread_id(void)
{
	GE_context* volatile l_context;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	return (EIF_POINTER)(l_context->thread->thread_id);
}

/*
 * Thread ID of last thread created from current thread.
 */
EIF_POINTER GE_last_thread_created(void)
{
	GE_context* volatile l_context;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	return (EIF_POINTER)(l_context->thread->last_thread_id);
}

#ifdef EIF_WINDOWS
/*
 * Support for Windows GUI that requires that all GUI operations are performed in the same thread.
 * Allocate new structure of the given size `a_size', assign it to `wel_per_thread_data'.
 * Return newly allocated memory block. It will be freed automatically on thread termination.
 */
void* GE_thread_create_wel_per_thread_data(size_t a_size)
{
	void* l_result;
	GE_context* volatile l_context;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	l_result = (void*)GE_calloc_uncollectable(1, a_size);
	l_context->wel_per_thread_data = l_result;
	return l_result;
}
#endif

/*
 * Waits until a thread sets `terminated' from `obj' to True,
 * which means it is terminated. The calling thread must be the
 * direct parent of the thread, or the function might loop indefinitely.
 */
void GE_thread_wait(EIF_REFERENCE obj, EIF_BOOLEAN (*get_terminated)(EIF_REFERENCE))
{
	GE_context* volatile l_context;
	GE_thread_context* l_thread_context;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	l_thread_context = l_context->thread;
		/* If no thread has been launched, the mutex isn't initialized. */
	if (l_thread_context->children_mutex) {
		SIGBLOCK;
		GE_unprotected_mutex_lock((EIF_POINTER)l_thread_context->children_mutex);
		while (get_terminated(obj) == EIF_FALSE) {
			GE_unprotected_condition_variable_wait((EIF_POINTER)l_thread_context->children_cond, (EIF_POINTER)l_thread_context->children_mutex);
		}
		GE_unprotected_mutex_unlock((EIF_POINTER)l_thread_context->children_mutex);
		SIGRESUME;
	}
}

/*
 * Waits until a thread sets `terminated' from `obj' to True,
 * which means it is terminated, or reaching `a_timeout_ms'.
 * The calling thread must be the direct parent of the thread,
 * or the function might loop indefinitely.
 */
EIF_BOOLEAN GE_thread_wait_with_timeout(EIF_REFERENCE obj, EIF_BOOLEAN (*get_terminated)(EIF_REFERENCE), EIF_NATURAL_64 a_timeout_ms)
{
	GE_context* volatile l_context;
	GE_thread_context* l_thread_context;
	int l_result = GE_THREAD_OK;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	l_thread_context = l_context->thread;
		/* If no thread has been launched, the mutex isn't initialized. */
	if (l_thread_context->children_mutex) {
		SIGBLOCK;
		GE_unprotected_mutex_lock((EIF_POINTER)l_thread_context->children_mutex);
		while ((get_terminated(obj) == EIF_FALSE) && (l_result == GE_THREAD_OK)) {
			l_result = GE_unprotected_condition_variable_wait_with_timeout((EIF_POINTER)l_thread_context->children_cond, (EIF_POINTER)l_thread_context->children_mutex, a_timeout_ms);
		}
		GE_unprotected_mutex_unlock((EIF_POINTER)l_thread_context->children_mutex);
		SIGRESUME;
	}
	return (l_result == GE_THREAD_TIMEDOUT ? EIF_FALSE : EIF_TRUE);
}

/*
 * Yields execution to other threads.
 */
void GE_thread_yield(void)
{
#ifdef GE_USE_POSIX_THREADS
#ifdef _POSIX_PRIORITY_SCHEDULING
	sched_yield();
#else
	usleep(1);
#endif
#elif defined EIF_WINDOWS
	if (SwitchToThread()) {
			/* We are able to give our timeslice to another thread of equal priority running on the same processor. */
	} else {
			/* There are no waiting threads on the current processor with the same thread priority so Sleep(0) yields to any available threads on any processor.
			 * However the current thread is still marked as runnable so if there are no threads of the same thread priority in a waiting state then it will return
			 * immediately and not relinquish our timeslice, which Sleep(1) will do but unfortunately the timer resolution may be up to 15ms on multicore systems before returning. */
		Sleep(0);
	}
#endif
}

/*
 * The calling thread waits for all other children threads to terminate.
 */
void GE_thread_join_all(void)
{
	GE_context* volatile l_context;
	GE_thread_context* l_thread_context;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	l_thread_context = l_context->thread;
		/* If no thread has been launched, the mutex isn't initialized. */
	if (l_thread_context->children_mutex) {
		SIGBLOCK;
		GE_unprotected_mutex_lock((EIF_POINTER)l_thread_context->children_mutex);
		while (l_thread_context->n_children != 0) {
			GE_unprotected_condition_variable_wait((EIF_POINTER)l_thread_context->children_cond, (EIF_POINTER)l_thread_context->children_mutex);
		}
		GE_unprotected_mutex_unlock((EIF_POINTER)l_thread_context->children_mutex);
		SIGRESUME;
	}
}

/*
 * Function called to terminate a thread launched by Eiffel with `GE_thread_create_with_attr'.
 * This function must be called from the thread itself (not the parent).
 */
void GE_thread_exit(void)
{
	GE_context* volatile l_context;
	GE_thread_context* l_thread_context;
	GE_thread_context* l_parent_thread_context;
	EIF_THR_TYPE l_thread_id;
	int l_free_thread_context;

	EIF_TSD_GET(GE_context*, GE_thread_context_key, l_context, "Cannot get execution context for current thread");
	l_thread_context = l_context->thread;
	if (!l_thread_context->thread_exiting) {
		l_thread_context->thread_exiting = 1;
		if (l_thread_context->current) {
			if (l_thread_context->set_terminated) {
				l_thread_context->set_terminated(l_thread_context->current, EIF_TRUE);
			}
			l_thread_context->current = EIF_VOID;
		}
		l_parent_thread_context = l_thread_context->parent_context;
		if (l_parent_thread_context) {
			SIGBLOCK;
			GE_unprotected_mutex_lock((EIF_POINTER)l_parent_thread_context->children_mutex);
			l_parent_thread_context->n_children--;
			l_free_thread_context = (!l_parent_thread_context->is_alive) && (l_parent_thread_context->n_children == 0);
			GE_unprotected_condition_variable_broadcast((EIF_POINTER)l_parent_thread_context->children_cond);
			GE_unprotected_mutex_unlock((EIF_POINTER)l_parent_thread_context->children_mutex);
			SIGRESUME;
			if (l_free_thread_context) {
				GE_unprotected_mutex_destroy((EIF_POINTER)l_parent_thread_context->children_mutex);
				GE_unprotected_condition_variable_destroy((EIF_POINTER)l_parent_thread_context->children_cond);
				GE_free(l_parent_thread_context);
				l_thread_context->parent_context = NULL;
			}
		}
		l_thread_id = l_thread_context->thread_id;
		if (l_thread_context->children_mutex) {
			SIGBLOCK;
			GE_unprotected_mutex_lock((EIF_POINTER)l_thread_context->children_mutex);
			l_free_thread_context = (l_thread_context->n_children == 0);
			if (!l_free_thread_context) {
					/* We cannot destroy ourself because we still have some running children
					 * threads, we therefore needs to mark ourself dead. */
				l_thread_context->is_alive = 0;
			}
			GE_unprotected_mutex_unlock((EIF_POINTER)l_thread_context->children_mutex);
			SIGRESUME;
		} else {
			l_free_thread_context = 1;
		}
		if (l_free_thread_context) {
			if (l_thread_context->children_mutex) {
				GE_unprotected_mutex_destroy((EIF_POINTER)l_thread_context->children_mutex);
				GE_unprotected_condition_variable_destroy((EIF_POINTER)l_thread_context->children_cond);
			}
			GE_free(l_thread_context);
		}
#ifdef EIF_WINDOWS
		if (!CloseHandle(l_thread_id)) {
			GE_raise_with_message(GE_EX_EXT, "Cannot close thread");
		}
#endif
		EIF_TSD_SET(GE_thread_context_key, 0, "Cannot remove thread context to TSD.");
		GE_free_onces(l_context->process_onces);
		GE_free_onces(l_context->thread_onces);
		GE_free_exception(l_context);
		if (l_context->wel_per_thread_data) {
			GE_free(l_context->wel_per_thread_data);
			l_context->wel_per_thread_data = 0;
		}
#ifdef GE_USE_POSIX_THREADS
		pthread_exit(NULL);
#elif defined EIF_WINDOWS
		_endthreadex(0);
#endif
	}
}

/*
 * Default thread priority level.
 */
EIF_INTEGER GE_thread_default_priority(void)
{
	return EIF_DEFAULT_THR_PRIORITY;
}

/*
 * Minimum thread priority level.
 */
EIF_INTEGER GE_thread_min_priority(void)
{
	return EIF_MIN_THR_PRIORITY;
}

/*
 * Maximum thread priority level.
 */
EIF_INTEGER GE_thread_max_priority(void)
{
	return EIF_MAX_THR_PRIORITY;
}

#ifdef __cplusplus
}
#endif

#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class CONSOLE"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2007-2018, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef GE_CONSOLE_C
#define GE_CONSOLE_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_CONSOLE_H
#include "ge_console.h"
#endif
#ifndef GE_EIFFEL_H
#include "ge_eiffel.h"
#endif
#ifndef GE_EXCEPTION_H
#include "ge_exception.h"
#endif
#ifdef GE_USE_THREADS
#ifndef GE_THREAD_H
#include "ge_thread.h"
#endif
#endif

#ifdef EIF_WINDOWS
#include <stdio.h>
#include <windows.h>
#include <io.h>
#include <fcntl.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifdef EIF_WINDOWS

static EIF_BOOLEAN GE_console_allocated = EIF_FALSE;
#ifdef GE_USE_THREADS
static EIF_POINTER GE_console_mutex = 0;
#endif

/*
 * Initialize mutex to determine whether a new
 * console needs to be created.
 */
void GE_init_console(void)
{
#ifdef GE_USE_THREADS
	GE_console_mutex = GE_mutex_create();
#endif
}

/*
 * Create a new DOS console if needed (i.e. in case of a Windows application).
 */
void GE_show_console(void)
{
#ifdef GE_USE_THREADS
	if (GE_console_mutex) {
		GE_mutex_lock(GE_console_mutex);
#endif
	if (!GE_console_allocated) {
		HANDLE hconin, hconout, hconerr;
		CONSOLE_SCREEN_BUFFER_INFO csbi;
		BOOL bLaunched;
		BOOL bSuccess;
		int hCrt;
#ifdef __LCC__
extern FILE * __cdecl _fdopen(int, const char *);
extern int _open_osfhandle(long, int);
#elif !defined EIF_BORLAND
		FILE *hf;
#endif

		bSuccess = AllocConsole();
			/* Get all Std handles and raise an IO exception if we fail getting one. */
		hconout = GetStdHandle(STD_OUTPUT_HANDLE);
		if (hconout == INVALID_HANDLE_VALUE) {
#ifdef GE_USE_THREADS
			GE_mutex_unlock(GE_console_mutex);
#endif
			GE_raise(GE_EX_PROG);
		}
		hconerr = GetStdHandle(STD_ERROR_HANDLE);
		if (hconerr == INVALID_HANDLE_VALUE) {
#ifdef GE_USE_THREADS
			GE_mutex_unlock(GE_console_mutex);
#endif
			GE_raise(GE_EX_PROG);
		}
		hconin = GetStdHandle(STD_INPUT_HANDLE);
		if (hconin == INVALID_HANDLE_VALUE) {
#ifdef GE_USE_THREADS
			GE_mutex_unlock(GE_console_mutex);
#endif
			GE_raise(GE_EX_PROG);
		}
		if (bSuccess) {
				/*
					Console was manually created, we are most likely in
					a Windows application that tries to output something.
					Therefore we need to correctly associated all standard
					handles `stdin', `stdout' and `stderr' to the new created console.
					Code was taken from http://codeguru.earthweb.com/console/Console.html
					But also checkout Microsoft support web site:
					http://support.microsoft.com/default.aspx?scid=kb;EN-US;q105305
					Note: For Borland, the above trick does not work, one has to
					duplicate the handle, unfortunately the solution does not work
					with Microsoft which explains the ifdef statement.
				*/
			hCrt = _open_osfhandle((intptr_t)hconout, _O_TEXT);
#if defined(__LCC__) || defined(EIF_BORLAND)
			dup2(hCrt, _fileno(stdout));
#else
			hf = _fdopen (hCrt, "w");
			*stdout = *hf;
#endif
			setvbuf(stdout, NULL, _IONBF, 0);
			hCrt = _open_osfhandle((intptr_t)hconerr, _O_TEXT);
#if defined(__LCC__) || defined(EIF_BORLAND)
			dup2(hCrt, _fileno(stderr));
#else
			hf = _fdopen(hCrt, "w");
			*stderr = *hf;
#endif
			setvbuf(stderr, NULL, _IONBF, 0);
			hCrt = _open_osfhandle((intptr_t)hconin, _O_TEXT | _O_RDONLY);
#if defined(__LCC__) || defined(EIF_BORLAND)
			dup2(hCrt, _fileno(stdin));
#else
			hf = _fdopen(hCrt, "r");
			*stdin = *hf;
#endif
		}
			/*
				We are computing the cursor position to figure out, if the application
				has been launched from a DOS console or from the Windows Shell.
			*/
		GetConsoleScreenBufferInfo(hconout, &csbi);
		bLaunched = ((csbi.dwCursorPosition.X == 0) && (csbi.dwCursorPosition.Y == 0));
		if ((csbi.dwSize.X <= 0) || (csbi.dwSize.Y <= 0))
			bLaunched = FALSE;
/*
		if (bLaunched == TRUE)
			eif_register_cleanup (eif_console_cleanup);
*/

		GE_console_allocated = EIF_TRUE;
	}
#ifdef GE_USE_THREADS
		GE_mutex_unlock(GE_console_mutex);
	}
#endif
}

#endif

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class EXCEPTION"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2007-2018, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef GE_EXCEPTION_C
#define GE_EXCEPTION_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_EXCEPTION_H
#include "ge_exception.h"
#endif
#ifndef GE_GC_H
#include "ge_gc.h"
#endif
#ifndef GE_STRING_H
#include "ge_string.h"
#endif
#ifndef GE_CONSOLE_H
#include "ge_console.h"
#endif
#ifdef GE_USE_THREADS
#ifndef GE_THREAD_H
#include "ge_thread.h"
#endif
#endif

#ifdef EIF_WINDOWS
#ifdef __LCC__
#include <windows.h>
#else
#include <winbase.h>
#endif
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Pre-defined exception tags. No restriction on size.
 */
static char* GE_exception_tags[] = {
	(char *) 0,							/* Nothing */
	"Feature call on void target.",		/* GE_EX_VOID */
	"No more memory.",					/* GE_EX_MEM */
	"Precondition violated.",			/* GE_EX_PRE */
	"Postcondition violated.",			/* GE_EX_POST */
	"Floating point exception.",		/* GE_EX_FLOAT */
	"Class invariant violated.",		/* GE_EX_CINV */
	"Assertion violated.",				/* GE_EX_CHECK */
	"Routine failure.",					/* GE_EX_FAIL */
	"Unmatched inspect value.",			/* GE_EX_WHEN */
	"Non-decreasing loop variant or negative value reached.",		/* GE_EX_VAR */
	"Loop invariant violated.",			/* GE_EX_LINV */
	"Operating system signal.",			/* GE_EX_SIG */
	"Eiffel run-time panic.",			/* GE_EX_BYE */
	"Exception in rescue clause.",		/* GE_EX_RESC */
	"Out of memory.",					/* GE_EX_OMEM */
	"Resumption attempt failed.",		/* GE_EX_RES */
	"Create on deferred.",				/* GE_EX_CDEF */
	"External event.",					/* GE_EX_EXT */
	"Void assigned to expanded.",		/* GE_EX_VEXP */
	"Exception in signal handler.",		/* GE_EX_HDLR */
	"I/O error.",						/* GE_EX_IO */
	"Operating system error.",			/* GE_EX_SYS */
	"Retrieval error.",					/* GE_EX_RETR */
	"Developer exception.",				/* GE_EX_PROG */
	"Eiffel run-time fatal error.",		/* GE_EX_FATAL */
	"CECIL cannot call melted code",	/* GE_EX_DOL */
	"Runtime I/O error.",				/* GE_EX_ISE_IO */
	"COM error.",						/* GE_EX_COM */
	"Runtime check violated.",			/* GE_EX_RT_CHECK */
	"Old expression evaluation failed.",/* GE_EX_OLD */
	"Serialization failed."				/* GE_EX_SEL */
	"SCOOP processor dirty."			/* GE_EX_DIRTY */
};

/*
 * Exception tag associated with `a_code'.
 */
char* GE_exception_tag(long a_code)
{
	if (a_code < 0) {
		return "User-defined exception.";
	} else if (a_code < 1 || a_code > GE_EX_NEX) {
		return "Unknown exception.";
	} else {
		return GE_exception_tags[a_code];
	}
}

/*
 * Initialize `a_trace'.
 */
static void GE_init_exception_trace_buffer(GE_exception_trace_buffer* a_trace)
{
	a_trace->count = 0;
	a_trace->capacity = 0;
	a_trace->area = (char*)GE_unprotected_calloc_atomic_uncollectable(4096, 1);
	if (a_trace->area) {
		a_trace->capacity = 4096;
	}
}

/*
 * Free memory allocated in `a_trace'.
 */
static void GE_free_exception_trace_buffer(GE_exception_trace_buffer* a_trace)
{
	a_trace->count = 0;
	a_trace->capacity = 0;
	if (a_trace->area) {
	 GE_free(a_trace->area);
	}
}

/*
 * Append `a_string' to `a_trace'.
 * Resize area if needed.
 */
static void GE_append_to_exception_trace_buffer(GE_exception_trace_buffer* a_trace, char* a_string)
{
	int l_length = strlen(a_string);
	uint32_t l_new_capacity;
	char* l_new_area;

	if (a_trace->area) {
		if ((a_trace->capacity - a_trace->count) <= l_length) {
			l_new_capacity = a_trace->capacity + l_length + 512;
			l_new_area = (char*)GE_unprotected_recalloc(a_trace->area, a_trace->capacity, l_new_capacity, 1);
			if (l_new_area) {
				a_trace->area = l_new_area;
				a_trace->capacity = l_new_capacity;
			}
		}
	} else {
		GE_init_exception_trace_buffer(a_trace);
	}
	if ((a_trace->capacity - a_trace->count) > l_length) {
		strcpy(a_trace->area + a_trace->count, a_string);
		a_trace->count += l_length;
	}
}

/*
 * Wipe out `a_trace'.
 */
static void GE_wipe_out_exception_trace_buffer(GE_exception_trace_buffer* a_trace)
{
	char* l_area = a_trace->area;

	if (l_area) {
		memset(l_area, 0, a_trace->count);
		a_trace->count = 0;
	}
}

/*
 * Print first line of exception which contains `a_class_name', `a_feature_name'
 * and `a_tag_name' to `a_trace'.
 */
static void GE_print_class_feature_tag(GE_exception_trace_buffer* a_trace, const char* a_class_name, const char* a_feature_name, const char* a_tag_name)
{
	char buffer[256];
	int l_class_count, l_feature_count, l_tag_count;

		/* We are trying to provide the best format possible so that we can see all the useful
		 * information about the location and the reason of the crash.
		 * Note that the C format `%width[.precision]s' means that we will display `width'
		 * characters on the screen and only `precision' characters from `s' will be displayed,
		 * meaning that if `precision' is smaller than `width' the text is right aligned.
		 *
		 * Note: because `buffer' has a fixed size of 256, we need to use `precision' to avoid
		 * writting more than `buffer' can hold. And for `sprintf', a null character is appended
		 * after the last character written, which should be taken into account.
		 */
	l_class_count = (int)strlen(a_class_name);
	l_feature_count = (int)strlen(a_feature_name);
	l_tag_count = (int)strlen(a_tag_name);

		/* 1 - precision of 211 = 254 - 43, 43 being number of characters written
		 *      for `a_class_name' and `a_feature_name'. */
		/* 2 - precision of 234 = 254 - 20, 20 being number of characters written
		 *      for `a_class_name'.*/
		/* 3 - precision of 254, 254 being number of characters written
		 *      excluding `\n' and null character appended at the end */
		/* 4 - precision of 251, 231 and 208 being number of characters written
		 *      excluding eclipse from above numbers. */
	if (l_class_count > 19) {
		if (l_class_count > 251) {
			sprintf(buffer, "%.251s...\n", a_class_name);
		} else {
			sprintf(buffer, "%*.254s\n", l_class_count, a_class_name);
		}
		GE_append_to_exception_trace_buffer(a_trace, buffer);
		if (l_feature_count > 22) {
			if (l_feature_count > 231) {
				sprintf(buffer, "%.231s...\n", a_feature_name);
			} else {
				sprintf(buffer, "%*.234s\n", 20 + l_feature_count, a_feature_name);
			}
			GE_append_to_exception_trace_buffer(a_trace, buffer);
			if (l_tag_count > 0) {
				if (l_tag_count > 208) {
					sprintf(buffer, "%.208s...\n", a_tag_name);
				} else {
					sprintf(buffer, "%*.211s\n", 43 + l_tag_count, a_tag_name);
				}
				GE_append_to_exception_trace_buffer(a_trace, buffer);
			}
		} else {
			if (l_tag_count > 208) {
				sprintf(buffer, "%*.22s %.208s...\n", 20 + l_feature_count, a_feature_name, a_tag_name);
			} else {
				sprintf(buffer, "%*.22s %*.211s\n", 20 + l_feature_count, a_feature_name, (43 + l_tag_count) - (20 + l_feature_count + 1), a_tag_name);
			}
			GE_append_to_exception_trace_buffer(a_trace, buffer);
		}
	} else {
		if (l_feature_count > 22) {
			if (l_feature_count > 208) {
				sprintf(buffer, "%-19.19s %.208s...\n", a_class_name, a_feature_name);
			} else {
				sprintf(buffer, "%-19.19s %*.211s\n", a_class_name, l_feature_count, a_feature_name);
			}
			GE_append_to_exception_trace_buffer(a_trace, buffer);
			if (l_tag_count > 0) {
				if (l_tag_count > 208) {
					sprintf(buffer, "%.208s...\n", a_tag_name);
				} else {
					sprintf(buffer, "%*.211s\n", 43 + l_tag_count, a_tag_name);
				}
				GE_append_to_exception_trace_buffer(a_trace, buffer);
			}
		} else {
			if (l_tag_count > 208) {
				sprintf(buffer, "%-19.19s %-22.22s %-29.208s...\n", a_class_name, a_feature_name, a_tag_name);
			} else {
				sprintf(buffer, "%-19.19s %-22.22s %-29.211s\n", a_class_name, a_feature_name, a_tag_name);
			}
			GE_append_to_exception_trace_buffer(a_trace, buffer);
		}
	}
}

/*
 * Print second line of exception which contains `a_object_addr', `a_location',
 * `a_reason' and `a_effect' to `a_trace'.
 */
static void GE_print_object_location_reason_effect(GE_exception_trace_buffer* a_trace, void* a_object_addr, char* a_location, char* a_reason, char* a_effect)
{
	char buffer[256];
	int l_location_count, l_reason_count, l_effect_count;

		/* We are trying to provide the best format possible so that we can see all the useful
		 * information about the location and the reason of the crash.
		 * Note that the C format `%width[.precision]s' means that we will display `width'
		 * characters on the screen and only `precision' characters from `s' will be displayed,
		 * meaning that if `precision' is smaller than `width' the text is right aligned.
		 *
		 * Note: because `buffer' has a fixed size of 256, we need to use `precision' to avoid
		 * writting more than `buffer' can hold.
		 */

	l_location_count = (int)strlen(a_location);
	l_reason_count = (int)strlen(a_reason);
	l_effect_count = (int)strlen(a_effect);

		/* 1 - precision of 211 = 254 - 43, 43 being number of characters written
			   for `a_object_addr' and `a_location'.
		 * 2 - precision of 181 = 254 - 73, 73 being number of characters written
			   for `a_object_addr', `a_location' and `a_reason'.
		 * 3 - 22, number of characters written for `a_location'
		 * 4 - 29, number of characters written for `a_reason' */

		/* Check this for formatting using `printf':
		 * http://en.wikipedia.org/wiki/Printf#printf_format_placeholders */

		/* Print object address with 16 digits to be ready when pointers
		 * will be on 64 bits on all platform. */
	sprintf(buffer, "<%016" EIF_POINTER_DISPLAY ">  ", (unsigned long)(intptr_t)a_object_addr);
	GE_append_to_exception_trace_buffer(a_trace, buffer);

	if (l_location_count > 22) {
		sprintf(buffer, "%*.254s\n", l_location_count, a_location);
		GE_append_to_exception_trace_buffer(a_trace, buffer);
		if (l_reason_count > 29) {
			sprintf(buffer, "%*.211s\n", 43 + l_reason_count, a_reason);
			GE_append_to_exception_trace_buffer(a_trace, buffer);
			sprintf(buffer, "%*.181s\n", 73 + l_effect_count, a_effect);
			GE_append_to_exception_trace_buffer(a_trace, buffer);
		} else {
			sprintf(buffer, "%*.29s %*.181s\n", 43 + l_reason_count, a_reason, (73 + l_effect_count) - (43 + l_reason_count + 1), a_effect);
			GE_append_to_exception_trace_buffer(a_trace, buffer);
		}
	} else {
		if (l_reason_count > 29) {
			sprintf(buffer,"%-22.22s %*.211s\n", a_location, l_reason_count, a_reason);
			GE_append_to_exception_trace_buffer(a_trace, buffer);
			sprintf(buffer, "%*.181s\n", 73 + l_effect_count, a_effect);
			GE_append_to_exception_trace_buffer(a_trace, buffer);
		} else {
			sprintf(buffer,"%-22.22s %-29.29s %*.181s\n", a_location, a_reason, l_effect_count, a_effect);
			GE_append_to_exception_trace_buffer(a_trace, buffer);
		}
	}
}

/*
 * Print to `a_trace' the exception trace corresponding to `a_context'.
 */
static void GE_print_exception_trace(GE_context* a_context, long a_code, const char* a_tag, GE_exception_trace_buffer* a_trace)
{
	char buffer[1024];
	GE_call* l_call;
	char* l_tag;
	char l_tag_buf[256];
	void* l_object = NULL;
	char* l_location = "";
	char* l_reason;
	char* l_effect;
	char* l_root_class;
	char* l_root_feature = "root's creation";
	const char* l_class_name;
	const char* l_feature_name;

#ifdef GE_USE_THREADS
	sprintf(buffer, "%s\n", "******************************** Thread exception *****************************");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
	if (a_context == GE_main_context) {
			/* Main thread. */
		sprintf(buffer,"%-19.19s %-22.22s 0x%" EIF_POINTER_DISPLAY " %s\n", "In thread", "Root thread", (unsigned long)0, "(thread id)");
	} else {
		sprintf(buffer,"%-19.19s %-22.22s 0x%" EIF_POINTER_DISPLAY " %s\n", "In thread", "Child thread", (unsigned long)(uint64_t)a_context->thread->thread_id, "(thread id)");
	}
	GE_append_to_exception_trace_buffer(a_trace, buffer);
	sprintf(buffer, "%s\n", "*******************************************************************************");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
#endif
	sprintf(buffer, "%s\n", "-------------------------------------------------------------------------------");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
	sprintf(buffer, "%-19.19s %-22.22s %-29.29s %-6.6s\n", "Class / Object", "Routine", "Nature of exception", "Effect");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
	sprintf(buffer, "%s\n", "-------------------------------------------------------------------------------");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
	if (GE_root_class_name) {
		l_root_class = GE_root_class_name;
	} else {
		l_root_class = "ROOT CLASS";
	}
	l_call = a_context->call;
	if (l_call) {
		l_class_name = l_call->class_name;
		l_feature_name = l_call->feature_name;
#ifdef GE_USE_CURRENT_IN_EXCEPTION_TRACE
		l_object = l_call->object;
#endif
	} else {
		l_class_name = l_root_class;
		l_feature_name = l_root_feature;
	}
	if (a_tag) {
		sprintf(l_tag_buf, "%.254s:", a_tag);
		l_tag = l_tag_buf;
	} else {
		l_tag = "";
	}
	GE_print_class_feature_tag(a_trace, l_class_name, l_feature_name, l_tag);
	l_reason = GE_exception_tag(a_code);
	l_effect = "Fail";
	GE_print_object_location_reason_effect(a_trace, l_object, l_location, l_reason, l_effect);
	sprintf(buffer, "%s\n", "-------------------------------------------------------------------------------");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
	while (l_call) {
		l_tag = "";
		GE_print_class_feature_tag(a_trace, l_call->class_name, l_call->feature_name, l_tag);
#ifdef GE_USE_CURRENT_IN_EXCEPTION_TRACE
		l_object = l_call->object;
#endif
		l_reason = "Routine failure.";
		l_effect = "Fail";
		GE_print_object_location_reason_effect(a_trace, l_object, l_location, l_reason, l_effect);
		sprintf(buffer, "%s\n", "-------------------------------------------------------------------------------");
		GE_append_to_exception_trace_buffer(a_trace, buffer);
		l_call = l_call->caller;
	}
	l_tag = "";
	GE_print_class_feature_tag(a_trace, l_root_class, l_root_feature, l_tag);
#ifdef GE_USE_CURRENT_IN_EXCEPTION_TRACE
	l_object = NULL;
#endif
	l_reason = "Routine failure.";
	l_effect = "Exit";
	GE_print_object_location_reason_effect(a_trace, l_object, l_location, l_reason, l_effect);
	sprintf(buffer, "%s\n", "-------------------------------------------------------------------------------");
	GE_append_to_exception_trace_buffer(a_trace, buffer);
}

/*
 * Default initialization for `GE_context'.
 */
GE_context GE_default_context = {0, 0, 0, 0, 0, 0, '\1', 0, 0, {0, 0, 0}, {0, 0, 0}, 1
#ifdef GE_USE_THREADS
	, 0, 0, 0, 0
#endif
	};

/*
 * Execution context of main thread.
 * Should be used from the main thread only.
 */
GE_context* GE_main_context;

/*
 * Execution context of current thread.
 */
GE_context* GE_current_context(void)
{
#ifdef GE_USE_THREADS
	return GE_thread_current_context();
#else
	return GE_main_context;
#endif
}

/*
 * Initialization of exception handling.
 */
void GE_init_exception(GE_context* a_context)
{
	EIF_REFERENCE l_exception_manager;

	GE_init_exception_trace_buffer(&a_context->exception_trace_buffer);
	GE_init_exception_trace_buffer(&a_context->last_exception_trace);
	l_exception_manager = GE_new_exception_manager(EIF_TRUE);
	a_context->exception_manager = l_exception_manager;
	GE_init_exception_manager(a_context, l_exception_manager);
}

/*
 * Free memory allocated in `a_context' for exception handling.
 */
void GE_free_exception(GE_context* a_context)
{
	GE_free_exception_trace_buffer(&a_context->exception_trace_buffer);
	GE_free_exception_trace_buffer(&a_context->last_exception_trace);
	a_context->exception_manager = EIF_VOID;
}

/*
 * Pointer to function to create a new exception manager object
 * (of type ISE_EXCEPTION_MANAGER).
 */
EIF_REFERENCE (*GE_new_exception_manager)(EIF_BOOLEAN);

/*
 * Pointer to Eiffel routine ISE_EXCEPTION_MANAGER.init_exception_manager.
 */
void (*GE_init_exception_manager)(GE_context*, EIF_REFERENCE);

/*
 * Pointer to Eiffel routine ISE_EXCEPTION_MANAGER.last_exception.
 */
EIF_REFERENCE (*GE_last_exception)(GE_context*, EIF_REFERENCE);

/*
 * Pointer to Eiffel routine ISE_EXCEPTION_MANAGER.once_raise.
 */
void (*GE_once_raise)(GE_context*, EIF_REFERENCE, EIF_REFERENCE);

/*
 * Pointer to Eiffel routine ISE_EXCEPTION_MANAGER.set_exception_data.
 */
void (*GE_set_exception_data)(GE_context*, EIF_REFERENCE, EIF_INTEGER_32, EIF_BOOLEAN, EIF_INTEGER_32, EIF_INTEGER_32, EIF_REFERENCE, EIF_REFERENCE, EIF_REFERENCE, EIF_REFERENCE, EIF_REFERENCE, EIF_REFERENCE, EIF_INTEGER_32, EIF_BOOLEAN);

/*
 * Jump to execute the rescue of the last routine with a rescue
 * in the call stack.
 */
void GE_jump_to_last_rescue(GE_context* a_context)
{
	char* l_exception_trace;

	GE_rescue* r = a_context->last_rescue;
	if (r != 0) {
		a_context->last_rescue = r->previous;
		a_context->raising_exception = '\0';
		GE_longjmp(r->jb, 1);
	}
	if (a_context->exception_trace_enabled) {
		GE_show_console();
		if (GE_system_name) {
			fprintf(stderr, "\n%s: system execution failed.\n", GE_system_name);
		} else {
			fprintf(stderr, "\nsystem execution failed.\n");
		}
		l_exception_trace = a_context->last_exception_trace.area;
		if (l_exception_trace) {
			fprintf(stderr, "Following is the set of recorded exceptions:\n\n");
			fprintf(stderr, "%s", l_exception_trace);
		} else {
			fprintf(stderr, "No exception trace found.\n");
		}
	}
	exit(1);
}

/*
 * Call feature EXCEPTION_MANAGER.set_exception_data.
 */
static void GE_call_set_exception_data(GE_context* a_context, long code, int new_obj, int signal_code, int error_code, const char* tag, char* recipient, char* eclass, char* rf_routine, char* rf_class, char* trace, int line_number, int is_invariant_entry)
{
	EIF_REFERENCE l_tag;
	EIF_REFERENCE l_recipient;
	EIF_REFERENCE l_eclass;
	EIF_REFERENCE l_rf_routine;
	EIF_REFERENCE l_rf_class;
	EIF_REFERENCE l_trace;
	EIF_REFERENCE l_exception_manager;

	l_exception_manager = a_context->exception_manager;
	if (!l_exception_manager) {
		GE_init_exception(a_context);
		l_exception_manager = a_context->exception_manager;
	}
	if (tag) {
		l_tag = GE_str(tag);
	} else {
		l_tag = GE_ms("", 0);
	}
	if (recipient) {
		l_recipient = GE_str(recipient);
	} else {
		l_recipient = GE_ms("", 0);
	}
	if (eclass) {
		l_eclass = GE_str(eclass);
	} else {
		l_eclass = GE_ms("", 0);
	}
	if (rf_routine) {
		l_rf_routine = GE_str(rf_routine);
	} else {
		l_rf_routine = GE_ms("", 0);
	}
	if (rf_class) {
		l_rf_class = GE_str(rf_class);
	} else {
		l_rf_class = GE_ms("", 0);
	}
	if (trace && a_context->exception_trace_enabled) {
		l_trace = GE_str(trace);
	} else {
		l_trace = GE_ms("", 0);
	}
	GE_set_exception_data(a_context, l_exception_manager, (EIF_INTEGER_32) code, EIF_TEST(new_obj), (EIF_INTEGER_32) signal_code, (EIF_INTEGER_32) error_code, l_tag, l_recipient, l_eclass, l_rf_routine, l_rf_class, l_trace, (EIF_INTEGER_32) line_number, EIF_TEST(is_invariant_entry));
}

/*
 * Raise an exception.
 */
static void GE_raise_exception(long code, int new_obj, int signal_code, int error_code, const char* tag, char* recipient, char* eclass, char* rf_routine, char* rf_class, char* trace, int line_number, int is_invariant_entry)
{
	char* l_trace;
	GE_exception_trace_buffer* l_trace_buffer;
	GE_context* l_context;

	l_context = GE_current_context();
	if (!l_context) {
		GE_show_console();
		if (GE_system_name) {
			fprintf(stderr, "\n%s: system execution failed.\n", GE_system_name);
		} else {
			fprintf(stderr, "\nsystem execution failed.\n");
		}
		fprintf(stderr, "Panic: No execution context found.\n");
		exit(1);
	} else if (l_context->raising_exception) {
		GE_show_console();
		if (GE_system_name) {
			fprintf(stderr, "\n%s: system execution failed.\n", GE_system_name);
		} else {
			fprintf(stderr, "\nsystem execution failed.\n");
		}
		fprintf(stderr, "Panic: A crash occurred while processing exceptions.\n");
		l_trace = l_context->last_exception_trace.area;
		if (l_trace) {
			fprintf(stderr, "Following is the set of recorded exceptions\n");
			fprintf(stderr, "NB: The raised panic may have induced completely inconsistent information:\n\n");
			fprintf(stderr, "%s", l_trace);
		} else {
			fprintf(stderr, "No exception trace found.\n");
		}
		exit(1);
	} else {
		l_context->raising_exception = '\1';
		l_context->exception_code = code;
		l_context->exception_tag = tag;
		if (code != GE_EX_FAIL) {
			GE_wipe_out_exception_trace_buffer(&l_context->last_exception_trace);
		}
		l_trace = trace;
		if (l_context->exception_trace_enabled && !l_trace) {
			l_trace_buffer = &l_context->exception_trace_buffer;
			GE_wipe_out_exception_trace_buffer(l_trace_buffer);
			GE_print_exception_trace(l_context, code, tag, l_trace_buffer);
			l_trace = l_trace_buffer->area;
		}
		if ((code != GE_EX_FAIL) && l_trace) {
			GE_append_to_exception_trace_buffer(&l_context->last_exception_trace, l_trace);
		}
		GE_call_set_exception_data(l_context, code, new_obj, signal_code, error_code, tag, recipient, eclass, rf_routine, rf_class, l_trace, line_number, is_invariant_entry);
		l_context->raising_exception = '\0';
		l_context->exception_code = 0;
		l_context->exception_tag = (char*)0;
		GE_jump_to_last_rescue(l_context);
	}
}

/*
 * Raise an exception with code `a_code'.
 */
void GE_raise(long a_code)
{
	GE_raise_with_message(a_code, NULL);
}

/*
 * Raise an exception with code `a_code' and message `msg'.
 */
void GE_raise_with_message(long a_code, const char* msg)
{
	GE_raise_exception(a_code, 1, -1, -1, msg, NULL, NULL, NULL, NULL, NULL, -1, 0);
}

/*
 * Raise an exception from EXCEPTION_MANAGER.
 */
void GE_developer_raise(long a_code, char* a_meaning, char* a_message)
{
	GE_raise_exception(a_code, 0, -1, -1, a_message, NULL, NULL, NULL, NULL, NULL, -1, 0);
}

/*
 * Raise exception which was raised the first time a once routine
 * was executed when executing it again.
 */
void GE_raise_once_exception(GE_context* a_context, EIF_REFERENCE a_exception)
{
	EIF_REFERENCE l_exception_manager;

	l_exception_manager = a_context->exception_manager;
	if (l_exception_manager) {
		GE_once_raise(a_context, l_exception_manager, a_exception);
	}
}

/*
 * Exception, if any, which was last raised in `a_context'.
 */
EIF_REFERENCE GE_last_exception_raised(GE_context* a_context)
{
	EIF_REFERENCE l_exception_manager;

	l_exception_manager = a_context->exception_manager;
	if (l_exception_manager) {
		return GE_last_exception(a_context, l_exception_manager);
	}
	return EIF_VOID;
}

/*
 * Set `in_assertion' to 'not b'.
 * Return the opposite of previous value.
 */
EIF_BOOLEAN GE_check_assert(EIF_BOOLEAN b)
{
	EIF_BOOLEAN l_old_value;
	GE_context* l_context;

	l_context = GE_current_context();
	l_old_value = EIF_TEST(!(l_context->in_assertion));
	l_context->in_assertion = (b?0:1);
	return l_old_value;
}

/*
 * Check whether the type id of `obj' is not in `type_ids'.
 * If it is, then raise a CAT-call exception. Don't do anything if `obj' is Void.
 * `nb' is the number of ids in `type_ids' and is expected to be >0.
 * `type_ids' is sorted in increasing order.
 * Return `obj'.
 */
EIF_REFERENCE GE_check_catcall(EIF_REFERENCE obj, EIF_TYPE_INDEX type_ids[], int nb)
{
	if (obj) {
		int type_id = obj->id;
		if (type_id < type_ids[0]) {
			/* Done */
		} else if (type_id > type_ids[nb-1]) {
			/* Done */
		} else {
			int i;
			for (i = 0; i < nb; i++) {
				if (type_id == type_ids[i]) {
					GE_show_console();
					fprintf(stderr, "CAT-call error!\n");
#ifdef EIF_DEBUG
					{
						char c;
						fprintf(stderr, "Press Enter...\n");
						scanf("%c", &c);
					}
#endif
					GE_raise_with_message(GE_EX_PROG, "CAT-call error.");
					break;
				} else if (type_id < type_ids[i]) {
						/* type-ids are sorted in increasing order. */
					break;
				}
			}
		}
	}
	return (obj);
}

/*
 * Check whether `obj' is Void.
 * If it is, then raise a call-on-void-target exception.
 * Return `obj'.
 */
EIF_REFERENCE GE_check_void(EIF_REFERENCE obj)
{
	if (!obj) {
		GE_show_console();
		fprintf(stderr, "Call on Void target!\n");
#ifdef EIF_DEBUG
		{
			char c;
			fprintf(stderr, "Press Enter...\n");
			scanf("%c", &c);
		}
#endif
		GE_raise(GE_EX_VOID);
	}
	return (obj);
}

/*
 * Check whether `ptr' is a null pointer.
 * If it is, then raise a no-more-memory exception.
 * Return `ptr'.
 */
void* GE_check_null(void* ptr)
{
	if (!ptr) {
		GE_show_console();
		fprintf(stderr, "No more memory!\n");
#ifdef EIF_DEBUG
		{
			char c;
			fprintf(stderr, "Press Enter...\n");
			scanf("%c", &c);
		}
#endif
		GE_raise(GE_EX_MEM);
	}
	return (ptr);
}

#ifdef EIF_WINDOWS
static LONG WINAPI GE_windows_exception_filter(LPEXCEPTION_POINTERS a_exception)
{
		/* In order to be able to catch exceptions that cannot be caught by
		 * just using signals on Windows, we need to set `windows_exception_filter'
		 * as an unhandled exception filter.
		 */

	switch (a_exception->ExceptionRecord->ExceptionCode) {
		case STATUS_STACK_OVERFLOW:
			GE_raise_with_message(GE_EX_EXT, "Stack overflow");
			break;

		case STATUS_INTEGER_DIVIDE_BY_ZERO:
			GE_raise_with_message(GE_EX_FLOAT, "Integer division by Zero");
			break;

		default:
			GE_raise_with_message(GE_EX_EXT, "Unhandled exception");
			break;
	}

		/* Possible return values include:
		 * EXCEPTION_CONTINUE_EXECUTION : Returns to the statement that caused the exception
		 *    and re-executes that statement. (Causes an infinite loop of calling the exception
		 *    handler if the handler does not fix the problem)
		 * EXCEPTION_EXECUTE_HANDLER: Passes the exception to default handler, in our case
		 *    none, since `windows_exception_filter' is the default one now.
		 * EXCEPTION_CONTINUE_SEARCH: Continue to search up the stack for a handle
		 */
	return EXCEPTION_EXECUTE_HANDLER;
}

/*
 * Set default exception handler.
 */
void GE_set_windows_exception_filter(void)
{
	LPTOP_LEVEL_EXCEPTION_FILTER old_exception_handler = NULL;
	old_exception_handler = SetUnhandledExceptionFilter (GE_windows_exception_filter);
}
#endif

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement once features"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2017, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef GE_ONCE_C
#define GE_ONCE_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_ONCE_H
#include "ge_once.h"
#endif
#ifndef GE_GC_H
#include "ge_gc.h"
#endif
#ifdef GE_USE_THREADS
#ifndef GE_THREAD_H
#include "ge_thread.h"
#endif
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Variable to keep track of the call status
 * and results of once-per-process features.
 */
GE_onces* GE_process_onces;

/*
 * Initialize `GE_process_onces'.
 */
void GE_init_onces(
	unsigned int a_boolean_count,
	unsigned int a_character_8_count,
	unsigned int a_character_32_count,
	unsigned int a_integer_8_count,
	unsigned int a_integer_16_count,
	unsigned int a_integer_32_count,
	unsigned int a_integer_64_count,
	unsigned int a_natural_8_count,
	unsigned int a_natural_16_count,
	unsigned int a_natural_32_count,
	unsigned int a_natural_64_count,
	unsigned int a_pointer_count,
	unsigned int a_real_32_count,
	unsigned int a_real_64_count,
	unsigned int a_reference_count,
	unsigned int a_procedure_count)
{
	GE_process_onces = GE_new_onces(
		a_boolean_count,
		a_character_8_count,
		a_character_32_count,
		a_integer_8_count,
		a_integer_16_count,
		a_integer_32_count,
		a_integer_64_count,
		a_natural_8_count,
		a_natural_16_count,
		a_natural_32_count,
		a_natural_64_count,
		a_pointer_count,
		a_real_32_count,
		a_real_64_count,
		a_reference_count,
		a_procedure_count);
#ifdef GE_USE_THREADS
	GE_process_once_mutexes = GE_new_once_mutexes(
		a_boolean_count,
		a_character_8_count,
		a_character_32_count,
		a_integer_8_count,
		a_integer_16_count,
		a_integer_32_count,
		a_integer_64_count,
		a_natural_8_count,
		a_natural_16_count,
		a_natural_32_count,
		a_natural_64_count,
		a_pointer_count,
		a_real_32_count,
		a_real_64_count,
		a_reference_count,
		a_procedure_count);
#endif
}

/*
 * Create a new 'GE_onces' struct which can deal with the
 * numbers of once features passed as argument.
 */
GE_onces* GE_new_onces(
	unsigned int a_boolean_count,
	unsigned int a_character_8_count,
	unsigned int a_character_32_count,
	unsigned int a_integer_8_count,
	unsigned int a_integer_16_count,
	unsigned int a_integer_32_count,
	unsigned int a_integer_64_count,
	unsigned int a_natural_8_count,
	unsigned int a_natural_16_count,
	unsigned int a_natural_32_count,
	unsigned int a_natural_64_count,
	unsigned int a_pointer_count,
	unsigned int a_real_32_count,
	unsigned int a_real_64_count,
	unsigned int a_reference_count,
	unsigned int a_procedure_count)
{
	GE_onces* l_onces;

	l_onces = (GE_onces*)GE_calloc_atomic_uncollectable(1, sizeof(GE_onces));
	if (a_boolean_count > 0) {
		l_onces->boolean_value = (EIF_BOOLEAN*)GE_calloc_atomic_uncollectable(a_boolean_count, sizeof(EIF_BOOLEAN));
		l_onces->boolean_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_boolean_count, sizeof(EIF_REFERENCE));
		l_onces->boolean_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_boolean_count, sizeof(unsigned char));
		l_onces->boolean_count = a_boolean_count;
	}
	if (a_character_8_count > 0) {
		l_onces->character_8_value = (EIF_CHARACTER_8*)GE_calloc_atomic_uncollectable(a_character_8_count, sizeof(EIF_CHARACTER_8));
		l_onces->character_8_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_character_8_count, sizeof(EIF_REFERENCE));
		l_onces->character_8_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_character_8_count, sizeof(unsigned char));
		l_onces->character_8_count = a_character_8_count;
	}
	if (a_character_32_count > 0) {
		l_onces->character_32_value = (EIF_CHARACTER_32*)GE_calloc_atomic_uncollectable(a_character_32_count, sizeof(EIF_CHARACTER_32));
		l_onces->character_32_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_character_32_count, sizeof(EIF_REFERENCE));
		l_onces->character_32_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_character_32_count, sizeof(unsigned char));
		l_onces->character_32_count = a_character_32_count;
	}
	if (a_integer_8_count > 0) {
		l_onces->integer_8_value = (EIF_INTEGER_8*)GE_calloc_atomic_uncollectable(a_integer_8_count, sizeof(EIF_INTEGER_8));
		l_onces->integer_8_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_integer_8_count, sizeof(EIF_REFERENCE));
		l_onces->integer_8_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_integer_8_count, sizeof(unsigned char));
		l_onces->integer_8_count = a_integer_8_count;
	}
	if (a_integer_16_count > 0) {
		l_onces->integer_16_value = (EIF_INTEGER_16*)GE_calloc_atomic_uncollectable(a_integer_16_count, sizeof(EIF_INTEGER_16));
		l_onces->integer_16_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_integer_16_count, sizeof(EIF_REFERENCE));
		l_onces->integer_16_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_integer_16_count, sizeof(unsigned char));
		l_onces->integer_16_count = a_integer_16_count;
	}
	if (a_integer_32_count > 0) {
		l_onces->integer_32_value = (EIF_INTEGER_32*)GE_calloc_atomic_uncollectable(a_integer_32_count, sizeof(EIF_INTEGER_32));
		l_onces->integer_32_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_integer_32_count, sizeof(EIF_REFERENCE));
		l_onces->integer_32_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_integer_32_count, sizeof(unsigned char));
		l_onces->integer_32_count = a_integer_32_count;
	}
	if (a_integer_64_count > 0) {
		l_onces->integer_64_value = (EIF_INTEGER_64*)GE_calloc_atomic_uncollectable(a_integer_64_count, sizeof(EIF_INTEGER_64));
		l_onces->integer_64_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_integer_64_count, sizeof(EIF_REFERENCE));
		l_onces->integer_64_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_integer_64_count, sizeof(unsigned char));
		l_onces->integer_64_count = a_integer_64_count;
	}
	if (a_natural_8_count > 0) {
		l_onces->natural_8_value = (EIF_NATURAL_8*)GE_calloc_atomic_uncollectable(a_natural_8_count, sizeof(EIF_NATURAL_8));
		l_onces->natural_8_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_natural_8_count, sizeof(EIF_REFERENCE));
		l_onces->natural_8_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_natural_8_count, sizeof(unsigned char));
		l_onces->natural_8_count = a_natural_8_count;
	}
	if (a_natural_16_count > 0) {
		l_onces->natural_16_value = (EIF_NATURAL_16*)GE_calloc_atomic_uncollectable(a_natural_16_count, sizeof(EIF_NATURAL_16));
		l_onces->natural_16_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_natural_16_count, sizeof(EIF_REFERENCE));
		l_onces->natural_16_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_natural_16_count, sizeof(unsigned char));
		l_onces->natural_16_count = a_natural_16_count;
	}
	if (a_natural_32_count > 0) {
		l_onces->natural_32_value = (EIF_NATURAL_32*)GE_calloc_atomic_uncollectable(a_natural_32_count, sizeof(EIF_NATURAL_32));
		l_onces->natural_32_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_natural_32_count, sizeof(EIF_REFERENCE));
		l_onces->natural_32_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_natural_32_count, sizeof(unsigned char));
		l_onces->natural_32_count = a_natural_32_count;
	}
	if (a_natural_64_count > 0) {
		l_onces->natural_64_value = (EIF_NATURAL_64*)GE_calloc_atomic_uncollectable(a_natural_64_count, sizeof(EIF_NATURAL_64));
		l_onces->natural_64_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_natural_64_count, sizeof(EIF_REFERENCE));
		l_onces->natural_64_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_natural_64_count, sizeof(unsigned char));
		l_onces->natural_64_count = a_natural_64_count;
	}
	if (a_pointer_count > 0) {
		l_onces->pointer_value = (EIF_POINTER*)GE_calloc_atomic_uncollectable(a_pointer_count, sizeof(EIF_POINTER));
		l_onces->pointer_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_pointer_count, sizeof(EIF_REFERENCE));
		l_onces->pointer_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_pointer_count, sizeof(unsigned char));
		l_onces->pointer_count = a_pointer_count;
	}
	if (a_real_32_count > 0) {
		l_onces->real_32_value = (EIF_REAL_32*)GE_calloc_atomic_uncollectable(a_real_32_count, sizeof(EIF_REAL_32));
		l_onces->real_32_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_real_32_count, sizeof(EIF_REFERENCE));
		l_onces->real_32_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_real_32_count, sizeof(unsigned char));
		l_onces->real_32_count = a_real_32_count;
	}
	if (a_real_64_count > 0) {
		l_onces->real_64_value = (EIF_REAL_64*)GE_calloc_atomic_uncollectable(a_real_64_count, sizeof(EIF_REAL_64));
		l_onces->real_64_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_real_64_count, sizeof(EIF_REFERENCE));
		l_onces->real_64_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_real_64_count, sizeof(unsigned char));
		l_onces->real_64_count = a_real_64_count;
	}
	if (a_reference_count > 0) {
		l_onces->reference_value = (EIF_REFERENCE*)GE_calloc_uncollectable(a_reference_count, sizeof(EIF_REFERENCE));
		l_onces->reference_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_reference_count, sizeof(EIF_REFERENCE));
		l_onces->reference_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_reference_count, sizeof(unsigned char));
		l_onces->reference_count = a_reference_count;
	}
	if (a_procedure_count > 0) {
		l_onces->procedure_exception = (EIF_REFERENCE*)GE_calloc_uncollectable(a_procedure_count, sizeof(EIF_REFERENCE));
		l_onces->procedure_status = (unsigned char*)GE_calloc_atomic_uncollectable(a_procedure_count, sizeof(unsigned char));
		l_onces->procedure_count = a_procedure_count;
	}
	return l_onces;
}

/*
 * Free memory allocated by `a_onces'.
 */
void GE_free_onces(GE_onces* a_onces)
{
	if (a_onces->boolean_value) {
		GE_free(a_onces->boolean_value);
	}
	if (a_onces->boolean_exception) {
		GE_free(a_onces->boolean_exception);
	}
	if (a_onces->boolean_status) {
		GE_free(a_onces->boolean_status);
	}
	if (a_onces->character_8_value) {
		GE_free(a_onces->character_8_value);
	}
	if (a_onces->character_8_exception) {
		GE_free(a_onces->character_8_exception);
	}
	if (a_onces->character_8_status) {
		GE_free(a_onces->character_8_status);
	}
	if (a_onces->character_32_value) {
		GE_free(a_onces->character_32_value);
	}
	if (a_onces->character_32_exception) {
		GE_free(a_onces->character_32_exception);
	}
	if (a_onces->character_32_status) {
		GE_free(a_onces->character_32_status);
	}
	if (a_onces->integer_8_value) {
		GE_free(a_onces->integer_8_value);
	}
	if (a_onces->integer_8_exception) {
		GE_free(a_onces->integer_8_exception);
	}
	if (a_onces->integer_8_status) {
		GE_free(a_onces->integer_8_status);
	}
	if (a_onces->integer_16_value) {
		GE_free(a_onces->integer_16_value);
	}
	if (a_onces->integer_16_exception) {
		GE_free(a_onces->integer_16_exception);
	}
	if (a_onces->integer_16_status) {
		GE_free(a_onces->integer_16_status);
	}
	if (a_onces->integer_32_value) {
		GE_free(a_onces->integer_32_value);
	}
	if (a_onces->integer_32_exception) {
		GE_free(a_onces->integer_32_exception);
	}
	if (a_onces->integer_32_status) {
		GE_free(a_onces->integer_32_status);
	}
	if (a_onces->integer_64_value) {
		GE_free(a_onces->integer_64_value);
	}
	if (a_onces->integer_64_exception) {
		GE_free(a_onces->integer_64_exception);
	}
	if (a_onces->integer_64_status) {
		GE_free(a_onces->integer_64_status);
	}
	if (a_onces->natural_8_value) {
		GE_free(a_onces->natural_8_value);
	}
	if (a_onces->natural_8_exception) {
		GE_free(a_onces->natural_8_exception);
	}
	if (a_onces->natural_8_status) {
		GE_free(a_onces->natural_8_status);
	}
	if (a_onces->natural_16_value) {
		GE_free(a_onces->natural_16_value);
	}
	if (a_onces->natural_16_exception) {
		GE_free(a_onces->natural_16_exception);
	}
	if (a_onces->natural_16_status) {
		GE_free(a_onces->natural_16_status);
	}
	if (a_onces->natural_32_value) {
		GE_free(a_onces->natural_32_value);
	}
	if (a_onces->natural_32_exception) {
		GE_free(a_onces->natural_32_exception);
	}
	if (a_onces->natural_32_status) {
		GE_free(a_onces->natural_32_status);
	}
	if (a_onces->natural_64_value) {
		GE_free(a_onces->natural_64_value);
	}
	if (a_onces->natural_64_exception) {
		GE_free(a_onces->natural_64_exception);
	}
	if (a_onces->natural_64_status) {
		GE_free(a_onces->natural_64_status);
	}
	if (a_onces->pointer_value) {
		GE_free(a_onces->pointer_value);
	}
	if (a_onces->pointer_exception) {
		GE_free(a_onces->pointer_exception);
	}
	if (a_onces->pointer_status) {
		GE_free(a_onces->pointer_status);
	}
	if (a_onces->real_32_value) {
		GE_free(a_onces->real_32_value);
	}
	if (a_onces->real_32_exception) {
		GE_free(a_onces->real_32_exception);
	}
	if (a_onces->real_32_status) {
		GE_free(a_onces->real_32_status);
	}
	if (a_onces->real_64_value) {
		GE_free(a_onces->real_64_value);
	}
	if (a_onces->real_64_exception) {
		GE_free(a_onces->real_64_exception);
	}
	if (a_onces->real_64_status) {
		GE_free(a_onces->real_64_status);
	}
	if (a_onces->reference_value) {
		GE_free(a_onces->reference_value);
	}
	if (a_onces->reference_exception) {
		GE_free(a_onces->reference_exception);
	}
	if (a_onces->reference_status) {
		GE_free(a_onces->reference_status);
	}
	if (a_onces->procedure_exception) {
		GE_free(a_onces->procedure_exception);
	}
	if (a_onces->procedure_status) {
		GE_free(a_onces->procedure_status);
	}
	GE_free(a_onces);
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class ARGUMENTS"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2007-2017, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef GE_ARGUMENTS_C
#define GE_ARGUMENTS_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_ARGUMENTS_H
#include "ge_arguments.h"
#endif
#ifndef GE_CONSOLE_H
#include "ge_console.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

int GE_argc;
EIF_NATIVE_CHAR** GE_argv;

	/* Clean up function */
typedef void (* EIF_CLEANUP)(EIF_BOOLEAN);
void eif_register_cleanup(EIF_CLEANUP f)
{
	/* TODO: Needed to compile some code at AXAR */
	GE_show_console();
	fprintf(stderr, "'eif_register_cleanup' in 'ge_arguments.h' not implemented\n");
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement the program initialization"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2007-2017, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef GE_MAIN_C
#define GE_MAIN_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_MAIN_H
#include "ge_main.h"
#endif
#ifndef GE_ARGUMENTS_H
#include "ge_arguments.h"
#endif
#ifndef GE_NATIVE_STRING_H
#include "ge_native_string.h"
#endif
#ifndef GE_GC_H
#include "ge_gc.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * System name.
 */
char* GE_system_name = NULL;

/*
 * Root class name.
 */
char* GE_root_class_name = NULL;

#ifdef EIF_WINDOWS

/*
 * Used in WEL.
 */
HINSTANCE eif_hInstance;
HINSTANCE eif_hPrevInstance;
LPWSTR eif_lpCmdLine;
int eif_nCmdShow;

/*
 * Break the shell command held in `cmd', putting each shell word
 * in a separate array entry, hence building an argument
 * suitable for the 'main'. Note that `cmd' will be altered
 * and `argvp' will point to some chunks of it.
 */
void GE_get_argcargv(EIF_NATIVE_CHAR* cmd, int* argc, EIF_NATIVE_CHAR*** argvp)
{
	int quoted = 0; /* parsing inside a quoted string? */
	int nbs; /* number of backspaces */
	int i;
	EIF_NATIVE_CHAR *p = NULL, *pe = NULL; /* pointers in `cmd' */
	EIF_NATIVE_CHAR *qb = NULL, *q = NULL; /* pointers in arguments */

	*argc = 0;
	/* Remove leading and trailing white spaces */
	for (p = cmd; *p == L' ' || *p == L'\t'; p++)
		; /* empty */
	for (pe = p + GE_nstrlen(p) - 1; pe >= p && (*pe == L' ' || *pe == L'\t'); pe--)
		; /* empty */
	if (p <= pe) {
		*argc = *argc + 1; /* at least one argument */
		qb = q = GE_unprotected_malloc_atomic_uncollectable((pe - p + 2) * sizeof(EIF_NATIVE_CHAR));
		if (!qb) {
			return;
		}
		do {
			switch(*p) {
				case L' ':
				case L'\t':
					if (quoted) {
						do {
							*q++ = *p++;
						} while(*p == L' ' || *p == L'\t');
					} else {
						do {
							p++;
						} while(*p == L' ' || *p == L'\t');
						*q++ = L'\0';
						*argc = *argc + 1;
					}
					break;
				case L'\"':
					quoted = ! quoted;
					p++;
					break;
				case L'\\':
					for (nbs = 0; *p == L'\\'; nbs++)
						*q++ = *p++;
					if (*p == L'\"') {
						if (nbs % 2) { /* odd number of backslashes */
							q -= (nbs + 1) / 2;
							*q++ = *p++;
						} else { /* even number of backslashes */
							quoted = ! quoted;
							q -= nbs / 2;
							p++;
						}
					}
					break;
				default:
					*q++ = *p++;
			}
		} while (p <= pe);
		*q++ = L'\0';
	}

	if (!argvp) {
		GE_free(qb);
		return;
	}

	*argvp = (EIF_NATIVE_CHAR**)GE_unprotected_malloc_atomic_uncollectable((*argc+1)*sizeof(EIF_NATIVE_CHAR*));
	if (!(*argvp)) {
		GE_free(qb);
		return;
	}

	for (i = 0; i < *argc; i++) {
		(*argvp)[i] = qb;
		qb += GE_nstrlen(qb) + 1;
	}
	(*argvp)[i] = (EIF_NATIVE_CHAR*)0;
}

int main(void)
{
	int code;
	int argc;
	EIF_NATIVE_CHAR** argv;
	EIF_NATIVE_CHAR* cmd;
#ifdef EIF_WINDOWS
	GE_set_windows_exception_filter();
		/* Variables used in WEL. */
	eif_hInstance = GetModuleHandle(NULL);
	eif_hPrevInstance = NULL;
	eif_lpCmdLine = GetCommandLineW();
	eif_nCmdShow = SW_SHOW;
#endif
	cmd = GE_nstrdup(GetCommandLineW());
	GE_get_argcargv(cmd, &argc, &argv);
	code = GE_main(argc, argv);
	free(cmd);
	if (argc > 0) {
		GE_free(argv[0]);
	}
	GE_free(argv);
	return code;
}

/*
 * Main entry point when compiling a Windows application.
 * See:
 *    http://en.wikipedia.org/wiki/WinMain
 *    http://msdn2.microsoft.com/en-us/library/ms633559.aspx
 */
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	return main();
}

#else

int main(int argc, char** argv)
{
	return GE_main(argc, argv);
}

#endif

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class IDENTIFIED"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2007-2018, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef GE_IDENTIFIED_C
#define GE_IDENTIFIED_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_IDENTIFIED_H
#include "ge_identified.h"
#endif
#ifndef GE_GC_H
#include "ge_gc.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Weak pointers.
 */

/*
 * Weak pointer structure.
 */
typedef struct GE_weak_pointer {
	EIF_REFERENCE object;
} GE_weak_pointer;

/*
 * Create a new weak pointer to `object'.
 */
GE_weak_pointer* GE_new_weak_pointer(EIF_REFERENCE object)
{
	GE_weak_pointer* wp;

	if (object == 0) {
		return (GE_weak_pointer*)0;
	} else {
		wp = (GE_weak_pointer*)GE_malloc_atomic(sizeof(GE_weak_pointer));
		wp->object = object;
#ifdef GE_USE_BOEHM_GC
		GC_GENERAL_REGISTER_DISAPPEARING_LINK((void**)(&wp->object), GC_base(object));
#endif
		return wp;
	}
}

/*
 * Direct access to the object held in the weak pointer.
 */
EIF_REFERENCE GE_weak_pointer_object_without_lock(GE_weak_pointer* wp)
{
	if (wp == 0) {
		return (EIF_REFERENCE)0;
	} else {
		return (wp->object);
	}
}

/*
 * Access to the object held in the weak pointer.
 */
#ifdef GE_USE_BOEHM_GC
EIF_REFERENCE GE_weak_pointer_object(GE_weak_pointer* wp)
{
	return (EIF_REFERENCE)GC_call_with_alloc_lock((GC_fn_type)GE_weak_pointer_object_without_lock, wp);
}
#else /* No GC */
#define GE_weak_pointer_object(wp) GE_weak_pointer_object_without_lock(wp)
#endif


/*
 * Identified data structures and functions.
 */

/*
 * Size of inner arrays in `GE_id_objects'.
 */
#define GE_ID_OBJECT_CHUNK_SIZE 512

/*
 * Number of slots to be added to the outer array of
 * `GE_id_objects' when resizing it.
 */
#define GE_ID_OBJECT_CAPACITY_INCREMENT 512

/*
 * Array of arrays of weak pointers. Each inner array has the same size
 * (GE_ID_OBJECT_CHUNK_SIZE). Given an id, the weak pointer associated
 * the object, if any, is at index (id % GE_ID_OBJECT_CHUNK_SIZE) in the
 * inner array located at index (id / GE_ID_OBJECT_CHUNK_SIZE) in the
 * outer array.
 */
GE_weak_pointer*** GE_id_objects;

/*
 * Capacity of the outer array of `GE_id_objects'.
 */
EIF_INTEGER_32 GE_id_objects_capacity;

/*
 * Last id associated with an object.
 */
EIF_INTEGER_32 GE_last_object_id;

/*
 * Initialize data to keep track of object ids.
 */
void GE_init_identified(void)
{
	GE_id_objects = (GE_weak_pointer***)0;
	GE_id_objects_capacity = 0;
	GE_last_object_id = 0;
}

/*
 * Get a new id for `object', assuming it is NOT in the stack.
 */
EIF_INTEGER_32 GE_object_id(EIF_OBJECT object)
{
	GE_weak_pointer** id_object_chunk;
	EIF_INTEGER_32 i;
	EIF_INTEGER_32 l_old_capacity;

	GE_last_object_id++;
	i = GE_last_object_id / GE_ID_OBJECT_CHUNK_SIZE;
	if (i >= GE_id_objects_capacity) {
		l_old_capacity = GE_id_objects_capacity;
		GE_id_objects_capacity = GE_id_objects_capacity + GE_ID_OBJECT_CAPACITY_INCREMENT;
		if (GE_id_objects == 0) {
			GE_id_objects = GE_calloc_atomic_uncollectable(GE_id_objects_capacity, sizeof(GE_weak_pointer**));
		} else {
			GE_id_objects = GE_recalloc(GE_id_objects, l_old_capacity, GE_id_objects_capacity, sizeof(GE_weak_pointer**));
		}
	}
	id_object_chunk = GE_id_objects[i];
	if (id_object_chunk == 0) {
		id_object_chunk = GE_calloc_uncollectable(GE_ID_OBJECT_CHUNK_SIZE, sizeof(GE_weak_pointer*));
		GE_id_objects[i] = id_object_chunk;
	}
	i = GE_last_object_id % GE_ID_OBJECT_CHUNK_SIZE;
	id_object_chunk[i] = GE_new_weak_pointer(object);
	return GE_last_object_id;
}

/*
 * Return the object associated with `id'.
 */
EIF_REFERENCE GE_id_object(EIF_INTEGER_32 id)
{
	GE_weak_pointer** id_object_chunk;
	GE_weak_pointer* wp;
	EIF_REFERENCE object;
	EIF_INTEGER_32 i;

	i = id / GE_ID_OBJECT_CHUNK_SIZE;
	if (i >= GE_id_objects_capacity) {
		return (EIF_REFERENCE) 0;
	} else {
		id_object_chunk = GE_id_objects[i];
		if (id_object_chunk == 0) {
			return (EIF_REFERENCE)0;
		} else {
			i = id % GE_ID_OBJECT_CHUNK_SIZE;
			wp = id_object_chunk[i];
			if (wp == 0) {
				return (EIF_REFERENCE)0;
			} else {
				object = GE_weak_pointer_object(wp);
				if (object == 0) {
					id_object_chunk[i] = (GE_weak_pointer*)0;
#ifdef GE_USE_BOEHM_GC
					GC_unregister_disappearing_link((void**)(&wp->object));
#endif
					GE_free(wp);
					return (EIF_REFERENCE)0;
				} else {
					return object;
				}
			}
		}
	}
}

/*
 * Remove the object associated with `id' from the stack.
 */
void GE_object_id_free(EIF_INTEGER_32 id)
{
	GE_weak_pointer** id_object_chunk;
	GE_weak_pointer* wp;
	EIF_REFERENCE object;
	EIF_INTEGER_32 i;

	i = id / GE_ID_OBJECT_CHUNK_SIZE;
	if (i < GE_id_objects_capacity) {
		id_object_chunk = GE_id_objects[i];
		if (id_object_chunk != 0) {
			i = id % GE_ID_OBJECT_CHUNK_SIZE;
			wp = id_object_chunk[i];
			if (wp != 0) {
				object = GE_weak_pointer_object(wp);
				if (object != 0) {
#ifdef GE_USE_BOEHM_GC
					GC_unregister_disappearing_link((void**)(&wp->object));
#endif
				}
				id_object_chunk[i] = (GE_weak_pointer*)0;
				GE_free(wp);
			}
		}
	}
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"Part of ISE Eiffel runtime. Needed to compile the EiffelCOM library."

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2010-2018, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef EIF_CECIL_C
#define EIF_CECIL_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef EIF_CECIL_H
#include "eif_cecil.h"
#endif
#ifndef GE_CONSOLE_H
#include "ge_console.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

EIF_PROCEDURE eif_procedure(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_procedure' in 'eif_cecil.c' not implemented\n");
	return (EIF_PROCEDURE)0;
}

EIF_INTEGER_FUNCTION eif_integer_function(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_integer_function' in 'eif_cecil.c' not implemented\n");
	return (EIF_INTEGER_FUNCTION)0;
}

EIF_REFERENCE_FUNCTION eif_reference_function(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_reference_function' in 'eif_cecil.c' not implemented\n");
	return (EIF_REFERENCE_FUNCTION)0;
}

EIF_POINTER_FUNCTION eif_pointer_function(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_pointer_function' in 'eif_cecil.c' not implemented\n");
	return (EIF_POINTER_FUNCTION)0;
}

EIF_BOOLEAN_FUNCTION eif_boolean_function(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_boolean_function' in 'eif_cecil.c' not implemented\n");
	return (EIF_BOOLEAN_FUNCTION)0;
}

EIF_REAL_32_FUNCTION eif_real_32_function(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_real_32_function' in 'eif_cecil.c' not implemented\n");
	return (EIF_REAL_32_FUNCTION)0;
}

EIF_REAL_64_FUNCTION eif_real_64_function(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_real_64_function' in 'eif_cecil.c' not implemented\n");
	return (EIF_REAL_64_FUNCTION)0;
}

EIF_CHARACTER_8_FUNCTION eif_character_8_function(char* rout, EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_character_8_function' in 'eif_cecil.c' not implemented\n");
	return (EIF_CHARACTER_8_FUNCTION)0;
}

EIF_OBJECT eif_create(EIF_TYPE_ID cid)
{
	/* TODO */
	GE_show_console();
	fprintf(stderr, "'eif_create' in 'eif_cecil.c' not implemented\n");
	return (EIF_OBJECT)0;
}

EIF_TYPE_ID eif_type_id(char* type_string)
{
	GE_show_console();
	fprintf(stderr, "'eif_type_id' in 'eif_cecil.c' not implemented\n");
	return EIF_NO_TYPE;
}

extern EIF_INTEGER eifaddr_offset(EIF_REFERENCE object, char *name, int * const ret)
{
	GE_show_console();
	fprintf(stderr, "'eifaddr_offset' in 'eif_cecil.c' not implemented\n");
	return 0;
}

EIF_TYPE_ID eiftype(EIF_OBJECT object)
{
		/* Obsolete. Use "eif_type_by_reference" instead.
		 * Return the Type id of the specified object.
		 */
	return (EIF_TYPE_ID)object->id;
}

EIF_TYPE_ID eif_type_by_reference(EIF_REFERENCE object)
{
		/* Return type id of the direct reference "object" */
	return (EIF_TYPE_ID)object->id;
}

EIF_TYPE_INDEX eif_gen_param_id(EIF_TYPE_INDEX dftype, uint32_t pos)
{
	GE_show_console();
	fprintf(stderr, "'eif_gen_param_id' in 'eif_cecil.c' not implemented\n");
	return 0;
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"Part of ISE Eiffel runtime. Needed to compile the EiffelCOM library."

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2010-2017, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef EIF_PLUG_C
#define EIF_PLUG_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef EIF_PLUG_H
#include "eif_plug.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

int nstcall = 0;

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class EXCEPTIONS"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2007-2018, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef EIF_EXCEPT_C
#define EIF_EXCEPT_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef EIF_EXCEPT_H
#include "eif_except.h"
#endif
#ifndef GE_STRING_H
#include "ge_string.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Raise an Eiffel exception.
 */
void eraise(const char* name, long code)
{
	GE_raise_with_message(code, name);
}

/*
 * Raise an Eiffel exception of the given code with no associated tag.
 */
void xraise(int code)
{
	GE_raise((long)code);
}

/*
 * Raise an "Operating system error" exception.
 */
void esys(void)
{
	if (errno == 0) {
			/* External event */
		GE_raise(GE_EX_EXT);
	} else {
			/* Operating system error */
		GE_raise(GE_EX_SYS);
	}
}

/*
 * As a special case, an I/O error is raised when a system call which is I/O bound fails.
 */
void eise_io(const char* tag)
{
	GE_raise_with_message(GE_EX_ISE_IO, tag);
}

/*
 * Raise a "No more memory" exception.
 */
 void enomem(void) {
	GE_raise(GE_EX_OMEM);
 }

/*
 * Raise EiffelCOM exception.
 */
void com_eraise(const char* tag, long num)
{
	GE_raise_with_message(num, tag);
}

/*
 * Terminate execution with exit status `code',
 * without triggering an exception.
 */
void esdie(int code)
{
/* TODO: check that the Boehm GC triggers the 'dispose' routines. */
	exit(code);
}

/*
 * Exception tag associated with `code'.
 * This is a duplication from Eiffel classes, but still used for trace printing and in EiffelCom.
 */
EIF_REFERENCE eename(long code)
{
	return GE_str(GE_exception_tag(code));
}

/*
 * Is exception `ex' defined?
 * Used in EiffelCOM.
 */
char eedefined(long ex)
{
	return (char)((ex > 0 && ex <= GE_EX_NEX)? 1 : 0);
}

/*
 * Enable/diable printing of the exception trace.
 * Per thead information.
 */
void eetrace(char b)
{
	GE_context* context;

	context = GE_current_context();
	context->exception_trace_enabled = b;
}

/*
 * Is current execution during rescue?
 */
EIF_BOOLEAN eif_is_in_rescue(void)
{
	GE_context* context;

	context = GE_current_context();
	return (EIF_TEST(context->in_rescue > 0));
}

#ifdef EIF_WINDOWS
/*
 * Set default exception handler.
 */
void set_windows_exception_filter(void)
{
	GE_set_windows_exception_filter();
}
#endif

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class REAL"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2013-2017, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef GE_REAL_C
#define GE_REAL_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_REAL_H
#include "ge_real.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Bit representation of `v'.
 */
EIF_NATURAL_32 GE_real_32_to_bits(EIF_REAL_32 v)
{
	return *(EIF_NATURAL_32*)&v;
}

/*
 * Bit representation of `v'.
 */
EIF_NATURAL_64 GE_real_64_to_bits(EIF_REAL_64 v)
{
	return *(EIF_NATURAL_64*)&v;
}

/*
 * Real value with `v' as bit representation.
 */
EIF_REAL_32 GE_real_32_from_bits(EIF_NATURAL_32 v)
{
	return *(EIF_REAL_32*)&v;
}

/*
 * Real value with `v' as bit representation.
 */
EIF_REAL_64 GE_real_64_from_bits(EIF_NATURAL_64 v)
{
	return *(EIF_REAL_64*)&v;
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class FILE"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2006-2018, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef EIF_FILE_C
#define EIF_FILE_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef EIF_FILE_H
#include "eif_file.h"
#endif
#ifndef EIF_EXCEPT_H
#include "eif_except.h"
#endif
#ifndef GE_STRING_H
#include "ge_string.h"
#endif
#ifndef GE_REAL_H
#include "ge_real.h"
#endif

/* HAS_CHOWN:
 *	This symbol, if defined, indicates that the chown routine is
 *	available.
 */
#ifndef EIF_WINDOWS
#define HAS_CHOWN
#endif

/* HAS_GETEUID:
 *	This symbol, if defined, indicates that the geteuid system call is
 *	available
 */
#ifndef EIF_WINDOWS
#define  HAS_GETEUID
#endif

/* HAS_GETGRGID:
 *	This symbol, if defined, indicates that the getgrgid system call is
 *	available
 */
#ifndef EIF_WINDOWS
#define  HAS_GETGRGID
#endif

/* HAS_GETGROUPS:
 *	This symbol, if defined, indicates that the getgroups() routine is
 *	available to get the list of process groups.  If unavailable, multiple
 *	groups are probably not supported.
 */
#ifndef EIF_WINDOWS
#define HAS_GETGROUPS
#define Groups_t gid_t	/* Type for 2nd arg to getgroups() */
#endif

/* HAS_GETPWUID:
 *	This symbol, if defined, indicates that the getpwuid system call is
 *	available
 */
#ifndef EIF_WINDOWS
#define  HAS_GETPWUID
#endif

/* HAS_LINK:
 *	This symbol, if defined, indicates that the link routine is
 *	available to create hard links.
 */
#ifndef EIF_WINDOWS
#define HAS_LINK
#endif

/* HAS_LSTAT:
 *	This symbol, if defined, indicates that the lstat routine is
 *	available to do file stats on symbolic links.
 */
#ifndef EIF_WINDOWS
#define HAS_LSTAT
#endif


#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#ifdef EIF_WINDOWS
#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600) /* Borland before 6.0 */
#include <utime.h>
#else
#include <sys/utime.h>
#ifdef __LCC__
extern int utime(const char *, struct utimbuf *);
#include <sys/stat.h>
#endif
#endif
#include <io.h> /* for access, chmod */
#include <direct.h> /* for (ch|mk|rm)dir */
#include <wchar.h>
#else
#include <utime.h>
#include <unistd.h>
#include <pwd.h>
#include <grp.h>
#endif

#ifndef NAME_MAX
#define NAME_MAX 10 /* Maximum length for user/group name */
#endif

#ifndef FILE_TYPE_MAX
#define FILE_TYPE_MAX 5		/* max size of fopen type string (like "a+b") */
#endif

#ifndef S_IRUSR
#define S_IRUSR 0000400
#endif
#ifndef S_IWUSR
#define S_IWUSR 0000200
#endif
#ifndef S_IXUSR
#define S_IXUSR 0000100
#endif
#ifndef S_IRGRP
#define S_IRGRP 0000040
#endif
#ifndef S_IWGRP
#define S_IWGRP 0000020
#endif
#ifndef S_IXGRP
#define S_IXGRP 0000010
#endif
#ifndef S_IROTH
#define S_IROTH 0000004
#endif
#ifndef S_IWOTH
#define S_IWOTH 0000002
#endif
#ifndef S_IXOTH
#define S_IXOTH 0000001
#endif
#ifndef S_IFDIR
#define S_IFDIR 0040000
#endif
#ifndef S_IFCHR
#define S_IFCHR 0020000
#endif
#ifdef __LCC__
#ifndef _S_IFCHR
#define _S_IFCHR S_IFCHR
#endif
#endif
#ifndef S_IFBLK
#define S_IFBLK 0060000
#endif
#ifndef S_IFREG
#define S_IFREG 0100000
#endif
#ifndef S_IFIFO
#define S_IFIFO 0010000
#endif
#ifndef S_IFLNK
#define S_IFLNK 0120000
#endif
#ifndef S_IFSOCK
#define S_IFSOCK 0140000
#endif
#ifndef S_IFMT
#define S_IFMT 0170000
#endif
#ifndef S_ISREG
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#endif
#ifndef S_ISDIR
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
#ifndef S_ISCHR
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
#endif
#ifndef S_ISBLK
#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
#endif
#ifndef S_ISLNK
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
#endif
#ifndef S_ISFIFO
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
#endif
#ifndef S_ISSOCK
#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
#endif

/* The following access constants seems to be universally accepeted. And
 * anyway, it's only after BSD 4.1 that the symbolic constants appeared.
 */
#ifndef R_OK
#define R_OK 4
#define W_OK 2
#define X_OK 1
#define F_OK 0
#endif

#define FS_START	0			/* Beginning of file for `fseek' */
#define FS_CUR		1			/* Current position for `fseek' */
#define FS_END		2			/* End of file for `fseek' */
/* Keep only permission mode */
#ifndef ST_MODE
#define ST_MODE 0x0fff
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifdef EIF_WINDOWS
#	ifdef __LCC__
#		define rt_stat		_wstat
#		define rt_fstat		fstat
#	elif defined(EIF_64_BITS)
#		define rt_stat		_wstat64
#		define rt_fstat		_fstat64
#	else
#		define rt_stat		_wstat64i32
#		define rt_fstat		_fstat64i32
#	endif
#	define rt_access		_waccess
#else
#	define rt_stat			stat
#	define rt_lstat			lstat
#	define rt_fstat			fstat
#	define rt_access		access
#endif

static int rt_mkdir(EIF_FILENAME path, int mode)
{
#ifdef EIF_WINDOWS
	return _wmkdir(path);
#else
	return mkdir(path, mode);
#endif
}

static int rt_rename(EIF_FILENAME from, EIF_FILENAME to)
{
#ifdef EIF_WINDOWS
	return _wrename(from, to);
#else
	return rename(from, to);
#endif
}

static int rt_rmdir(EIF_FILENAME path)
{
#ifdef EIF_WINDOWS
	return _wrmdir(path);
#else
	return rmdir(path);
#endif
}

static int rt_unlink(EIF_FILENAME path)
{
#ifdef EIF_WINDOWS
	return _wunlink(path);
#else
	return unlink(path);
#endif
}

static FILE* rt_file_fopen(EIF_FILENAME name, EIF_FILENAME type)
{
#ifdef EIF_WINDOWS
	return _wfopen(name, type);
#else
	return fopen(name, type);
#endif
}

static FILE* rt_file_fdopen(int fd, EIF_FILENAME type)
{
#ifdef EIF_WINDOWS
	return _wfdopen(fd, type);
#else
	return fdopen(fd, type);
#endif
}

static FILE* rt_file_freopen(EIF_FILENAME name, EIF_FILENAME type, FILE* stream)
{
#ifdef EIF_WINDOWS
	return _wfreopen(name, type, stream);
#else
	return freopen(name, type, stream);
#endif
}

static int rt_utime(EIF_FILENAME path, struct utimbuf* times)
{
#ifdef EIF_WINDOWS
	return _wutime(path, (struct _utimbuf*)times);
#else
	return utime(path, times);
#endif
}

/*
 * Swallow next character if it is a new line.
 */
static void rt_swallow_nl(FILE* f)
{
		/* getc() cannot be used as it doesn't set the EOF flag */

	if (f != stdin) {
		if (fscanf(f, "\n") == EOF && ferror(f)) {
			eise_io("FILE: error during reading the end of the file,");
		}
	} else {
		int c;

		errno = 0;
		c = getc(f);
		if (c == EOF && ferror(f))
			eise_io("FILE: error during reading the end of the file.");

		if (c != '\n' && EOF == ungetc(c, f))
			eise_io("FILE: End of file.");
	}
}

static void rt_file_stat(EIF_FILENAME path, rt_stat_buf* buf)
{
		/* To preserve compatibility we always follow symbolic links and raise an exception upon failure. */
	if (eif_file_stat(path, buf, 1) == -1) {
		esys();
	}
}

/*
 * Set `file_type', given `how' the file is being opened and a `mode' create a platform specific character
 * string (UTF-16 encoding on Windows and a byte sequence otherwise) that can be used by
 * the underlying OS system call to open the mode in the proper mode (e.g. open append,
 * read-write mode, ....).
 */
static void rt_file_set_open_mode(EIF_NATIVE_CHAR file_type[FILE_TYPE_MAX], int how, char mode)
{
	file_type[4] = '\0';
	file_type[3] = '\0';
	file_type[2] = '\0';
	if (how >= 10) how -= 10;
	switch (how) {
		case 0:
		case 3: file_type[0] = 'r'; break;
		case 1:
		case 4: file_type[0] = 'w'; break;
		case 2:
		case 5: file_type[0] = 'a'; break;
		default: file_type[0] = 'r'; break;
	}
	file_type[1] = mode;
	switch (how) {
		case 3:
		case 4:
		case 5:
			if (mode == '\0') {
				file_type[1] = '+';
			} else {
				file_type[2] = '+';
			}
	}
#ifdef EIF_WINDOWS
	/* We make sure that files created in Eiffel are not inheritable
	 * by default as otherwise it makes things too complicated for the
	 * end user when spawing child processes. */
	if (file_type[1] == '\0') {
		file_type[1] = 'N';
	} else if (file_type[2] == '\0') {
		file_type[2] = 'N';
	} else {
		file_type[3] = 'N';
	}
#endif
}

/*
 * Create directory `dirname'.
 */
void eif_file_mkdir(EIF_FILENAME dirname)
{
	errno = 0;
	if (rt_mkdir(dirname, 0777) == -1) {
		esys(); /* Raise exception */
	}
}

/*
 * Rename file `from' into `to'.
 */
void eif_file_rename(EIF_FILENAME from, EIF_FILENAME to)
{
	for (;;) {
#ifdef EIF_WINDOWS
		if (eif_file_exists(to)) {
				/* To have the same behavior as Unix, we need to remove the destination file if it exists.
				 * Of course we can do this only if `from' and `to' do not represent the same file.
				 * To check this, we use `CreateFile' to open both file, and then using the information
				 * returned by `GetFileInformationByHandle' we can check whether or not they are indeed
				 * the same. */
			BY_HANDLE_FILE_INFORMATION l_to_info, l_from_info;
			HANDLE l_from_file = CreateFileW(from, GENERIC_READ, FILE_SHARE_READ, NULL,
				OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
			HANDLE l_to_file = CreateFileW(to, GENERIC_READ, FILE_SHARE_READ, NULL,
					OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

			if ((l_from_file == INVALID_HANDLE_VALUE) || (l_to_file == INVALID_HANDLE_VALUE)) {
					/* We do not need the handles anymore, simply close them. Since Microsoft
					 * API accepts INVALID_HANDLE_VALUE we don't check the validity of arguments. */
				CloseHandle(l_from_file);
				CloseHandle(l_to_file);

					/* For some reasons we cannot open the file. This should not happen, maybe the OS has
					 * removed `from' or `to'. In that case, we simply try to remove destination as we were
					 * doing in former revision of `file_rename'. */
				_wremove(to);
			} else {
				BOOL success = GetFileInformationByHandle(l_from_file, &l_from_info);
				if (success) {
					success = GetFileInformationByHandle(l_to_file, &l_to_info);
						/* We do not need the handles anymore, simply close them. */
					CloseHandle(l_from_file);
					CloseHandle(l_to_file);
					if (success) {
							/* Check that `from' and `to' do not represent the same file. */
						if
							((l_from_info.dwVolumeSerialNumber != l_to_info.dwVolumeSerialNumber) ||
							(l_from_info.nFileIndexLow != l_to_info.nFileIndexLow) ||
							(l_from_info.nFileIndexHigh != l_to_info.nFileIndexHigh))
						{
							_wremove(to);
						} else {
								/* Files are identical, nothing to be done apart from */
							break;
						}
					} else {
							/* An error occurred while retrieving the information about `from' and `to'. Like
							 * for the case where `l_from_file' and `l_to_file' are invalid, we try to remove
							 * the file. */
						_wremove(to);
					}
				} else {
						/* We do not need the handles anymore, simply close them. */
					CloseHandle(l_from_file);
					CloseHandle(l_to_file);
						/* An error occurred while retrieving the information about `from' and `to'. Like
						 * for the case where `l_from_file' and `l_to_file' are invalid, we try to remove
						 * the file. */
					_wremove(to);
				}
			}
		}
#endif
		errno = 0;
		if (rt_rename(from, to) == -1) {
			esys(); /* Raise exception */
		}
		break;
	}
}

/*
 * Link file `from' into `to'.
 */
void eif_file_link(EIF_FILENAME from, EIF_FILENAME to)
{
#ifdef HAS_LINK
	errno = 0;
	if (link(from, to) == -1) {
		esys(); /* Raise exception */
	}
#endif
}

/*
 * Delete file or directory `name'.
 */
void eif_file_unlink(EIF_FILENAME name)
{
	rt_stat_buf buf;				/* File statistics */
	int status;						/* Status from system call */

	status = eif_file_stat(name, &buf, 0);				/* Side effect: ensure file exists */
	if (status == -1) {				/* An error occurred */
		esys();
	} else {
		for (;;) {
			errno = 0;						/* Reset error condition */
			if (S_ISDIR(buf.st_mode))		/* Directory */
				status = rt_rmdir(name);		/* Remove only if empty */
			else
				status = rt_unlink(name);		/* Not a directory */
			if (status == -1) {				/* An error occurred */
				if (errno == EINTR)			/* Interrupted by signal */
					continue;				/* Re-issue system call */
				else
					esys();					/* Raise exception */
			}
			break;
		}
	}
}

/*
 * Open file `name' with the corresponding type `how'.
 */
EIF_POINTER eif_file_open(EIF_FILENAME name, int how)
{
	FILE* fp;
	EIF_NATIVE_CHAR l_mode[FILE_TYPE_MAX];
	errno = 0;
#if defined EIF_WINDOWS
	rt_file_set_open_mode(l_mode, how, (how < 10 ? 't' : 'b'));
#else
	rt_file_set_open_mode(l_mode, how, '\0');
#endif
	fp = (FILE*)rt_file_fopen(name, l_mode);
	if (fp == (FILE*)0) {
		esys(); /* Open failed, raise exception */
	}
	return (EIF_POINTER)fp;
}

/*
 * Open file `fd' with the corresponding type `how'.
 */
EIF_POINTER eif_file_dopen(int fd, int how)
{
	FILE* fp;
	EIF_NATIVE_CHAR l_mode[FILE_TYPE_MAX];
	errno = 0;
#ifdef EIF_WINDOWS
	rt_file_set_open_mode(l_mode, how, (how < 10 ? 't' : 'b'));
#else
	rt_file_set_open_mode(l_mode, how, '\0');
#endif
	fp = (FILE*)rt_file_fdopen(fd, l_mode);
	if (fp == (FILE*)0) {
		esys(); /* Open failed, raise exception */
	}
	return (EIF_POINTER)fp;
}

/*
 * Reopen file `name' with the corresponding type `how' and substitute that
 * to the old stream described by `old'. This is useful to redirect 'stdout'
 * to another place, for instance.
 */
EIF_POINTER eif_file_reopen(EIF_FILENAME name, int how, FILE *old)
{
	FILE* fp;
	EIF_NATIVE_CHAR l_mode[FILE_TYPE_MAX];
	errno = 0;
#ifdef EIF_WINDOWS
	rt_file_set_open_mode(l_mode, how, (how < 10 ? 't' : 'b'));
#else
	rt_file_set_open_mode(l_mode, how, '\0');
#endif
	fp = (FILE*)rt_file_freopen(name, l_mode, old);
	if (fp == (FILE*)0) {
		esys(); /* Open failed, raise exception */
	}
	return (EIF_POINTER)fp;
}

/*
 * Close the file.
 */
void eif_file_close(FILE* fp)
{
	errno = 0;
	if (fclose(fp) != 0) {
		esys(); /* Close failed, raise exception */
	}
}

/*
 * Flush data held in stdio buffer.
 */
void eif_file_flush(FILE* fp)
{
	errno = 0;
	if (fflush(fp) != 0) {
	    esys(); /* Flush failed, raise exception */
	}
#ifdef EIF_WINDOWS
		/* On Windows, it does not write directly to disk, so we have to force it. See KB66052:
		 * http://support.microsoft.com/kb/66052
		 * We ignore bad file descriptor case, as it is most likely when calling it on one of the standard
		 * input/outputs. */
#ifdef __LCC__
extern int _commit(int);
#endif
	if ((0 != _commit(fileno(fp))) && (errno != EBADF)) {
		esys();
	}
#endif
}

/*
 * Return the associated file descriptor.
 */
EIF_INTEGER eif_file_fd(FILE* f)
{
	int res;
	if (!f) {
		res = 0;
		eraise("invalid file pointer", EN_EXT);
	} else {
		res = fileno(f);
		if (res == -1) {
			eraise("error occurred", EN_EXT);
		}
	}
	return (EIF_INTEGER)res;
}

/*
 * Get a character from `f'.
 */
EIF_CHARACTER_8 eif_file_gc(FILE* f)
{
	int c;
	errno = 0;
	c = getc(f);
	if (c == EOF && ferror(f)) {
		eise_io("FILE: unable to read CHARACTER value.");
	}
	return (EIF_CHARACTER_8)c;
}

/*
 * Get a string from `f' and fill it into `s' (at most `bound' characters),
 * with `start' being the amount of bytes already stored within s. This
 * means we really have to read (bound - start) characters.
 */
EIF_INTEGER eif_file_gs(FILE* f, char* s, EIF_INTEGER bound, EIF_INTEGER start)
{
	EIF_INTEGER amount;
	int c = '\0';
	EIF_INTEGER read;

	amount = bound - start;
	s += start;
	errno = 0;
	read = 0;
	while (amount-- > 0) {
		if ((c = getc(f)) == '\n' || c == EOF)
			break;
		*s++ = c;
		read++;
	}
	if (c == EOF && ferror(f)) {
			/* An I/O error occurred */
			/* Raise exception */
		eise_io("FILE: unable to read current line.");
	}
	if (c == EOF || c == '\n')
#ifdef EIF_WINDOWS
		if ((read > 0) && (*(s-1) == '\r'))
			return read - 1;
		else
			return read;
#else
		return read;
#endif
	if (amount == -1)
		return (read + 1);
	return bound - start + 1;
}

/*
 * Read min (bound, remaining bytes in file) characters into `s' and
 * return the number of characters read.
 */
EIF_INTEGER eif_file_gss(FILE* f, char* s, EIF_INTEGER bound)
{
	size_t amount = fread(s, sizeof(char), (size_t)bound, f);

	if (ferror(f)) {	/* An I/O error occurred */
		eise_io("FILE: unable to read stream.");					/* Raise exception */
	}

	return (EIF_INTEGER)amount;	/* Number of characters read */
}

/*
 * Get a word from `f' and fill it into `s' (at most `bound' characters),
 * with `start' being the amount of bytes already stored within s. This
 * means we really have to read (bound - start) characters. Any leading
 * spaces are skipped.
 */
EIF_INTEGER eif_file_gw(FILE* f, char* s, EIF_INTEGER bound, EIF_INTEGER start)
{
	EIF_INTEGER amount;	/* Amount of bytes to be read */
	int c = 0;			/* Last char read */

	amount = bound - start;		/* Characters to be read */
	s += start;					/* Where read characters are written */
	errno = 0;					/* No error, a priori */

	if (start == 0)	{			/* First call */
		while ((c = getc(f)) != EOF)
			if (!isspace(c))
				break;
		if (c == EOF && ferror(f))	/* An I/O error occurred */
			eise_io("FILE: unable to read word.");					/* Raise exception */
		if (c == EOF)
			return (EIF_INTEGER)0;				/* Reached EOF before word */
		else if (EOF == ungetc(c, f))
			eise_io("FILE: unable to read word.");
	}

	while (amount-- > 0) {
		c = getc(f);
		if (c == EOF)
			break;
		if (isspace(c)) {
			if (EOF == ungetc(c, f))
				eise_io("FILE: unable to read word.");
			break;
		}
		*s++ = (char)c;
	}

	if (c == EOF && ferror(f))	/* An I/O error occurred */
		eise_io("FILE: unable to read word.");					/* Raise exception */

	/* If we managed to get the whole string, return the number of characters
	 * read. Otherwise, return (bound - start + 1) to indicate an error
	 * condition.
	 */

	if (c == EOF || isspace(c))
		return bound - start - amount - 1;	/* Number of characters read */

	return bound - start + 1;			/* Error condition */
}

/*
 * Look ahead one character. If EOF, return 0.
 */
EIF_CHARACTER_8 eif_file_lh(FILE* f)
{
	int c;

	errno = 0;
	c = getc(f);
	if (c == EOF && ferror(f))
		eise_io("FILE: error when reading a character ahead.");

	if (c != EOF && EOF == ungetc(c, f))
		eise_io("FILE: error when reading a character ahead.");

	return (EIF_CHARACTER_8)(c == EOF ? (char)0 : (char)c);
}

/*
 * Size of file `fp'.
 */
EIF_INTEGER eif_file_size(FILE* fp)
{
	rt_stat_buf buf;

	errno = 0;
	if (fflush(fp) != 0) {
		esys();
	}
	if (rt_fstat(fileno(fp), &buf) == -1)
		esys();		/* An error occurred: raise exception */
		/* FIXME: This code should be upgraded to use 64-bit */
	return (EIF_INTEGER)buf.st_size;
}

/*
 * Read upto next input line.
 */
void eif_file_tnil(FILE* f)
{
	int c;

	errno = 0;
	while ((c = getc(f)) != '\n' && c != EOF)
		;
	if (c == EOF && ferror(f))
		eise_io("FILE: error during reading the end of the file.");
}

/*
 * Current position within file.
 */
EIF_INTEGER eif_file_tell(FILE* f)
{
	long res;

	if (f == (FILE*)0) {
		eraise("invalid file pointer", EN_EXT);
	}

	res = ftell(f);
	if (res == -1) {
		eraise("error occurred", EN_EXT);
	}
	return (EIF_INTEGER)res;
}

/*
 * Touch file `name' by setting both access and modification time to the
 * current time stamp. This external function exists only because there
 * is no way within UNIX_FILE to get the current time stamp. Otherwise,
 * we could simply call file_utime.
 */
void eif_file_touch(EIF_FILENAME name)
{
	eif_file_utime(name, time((time_t*) 0), 2);
}

/*
 * Modify the modification and/or the access time stored in the file's
 * inode. The 'how' parameter tells which attributes should be set.
 */
void eif_file_utime(EIF_FILENAME name, time_t stamp, int how)
{
	struct utimbuf tp;	/* Time array */
	rt_stat_buf buf;	/* File statistics */
	int status;			/* System call status */

	if (how < 2) {				/* Need to fetch time from inode */
		rt_file_stat(name, &buf);
		switch (how) {
		case 0:					/* Change only access time */
			tp.actime = stamp;
			tp.modtime = buf.st_mtime;
			break;
		case 1:					/* Change only modification time */
			tp.actime = buf.st_atime;
			tp.modtime = stamp;
			break;
		}
	} else
		tp.actime = tp.modtime = stamp;	/* Change both access and modification times */
	errno = 0;

	if (rt_utime(name, &tp) == -1) {
			/* Raise exception */
		esys();
	}
}

/*
 * This is an encapsulation of the stat() system call. The routine either
 * succeeds and returns or fails and raises the appropriate exception.
 */
int eif_file_stat(EIF_FILENAME path, rt_stat_buf* buf, int follow)
{
	int status;			/* System call status */

	for (;;) {
		errno = 0;						/* Reset error condition */
#ifdef HAS_LSTAT
		status = rt_lstat(path, buf);
		if ((status == 0) && (follow) && (S_ISLNK(buf->st_mode))) {
				/* We found a file which is a symbolic link and we are asked to
				 * follow the link to fetch properties on the link location.
				 * We call `rt_stat' to make sure the link is valid. It is going to
				 * slow down current call by stating twice the info, but this
				 * case is quite rare and there is a benefit in using `lstat'
				 * over `rt_stat' the first time as more than 90% of the files
				 * we stat are not symlink. */
			status = rt_stat(path, buf);
		}
#else
		status = rt_stat(path, buf);		/* Get file statistics */
#endif
		if ((status == -1) && (errno == EINTR)) {
				/* Call was interrupted by a signal we re-issue it. */
			continue;
		}
		break;
	}
	return status;
}

/*
 * Change permissions of file `name', using an interface like chmod(1).
 * The flag is true if permissions are to be added, 0 to remove them.
 */
void eif_file_perm(EIF_FILENAME name, char* who, char* what, int flag)
{
	int fmode;					/* File mode to be altered */
	rt_stat_buf buf;			/* File statistics */

		/* We need to follow links since `chmod' does follow them to change the permissions. */
	if (eif_file_stat(name, &buf, 1)) {
		esys();
	} else {
		fmode = (int)buf.st_mode;	/* Fetch current file mode */

		switch (*who) {
		case 'u':
			while (*what)
				switch (*what++) {
#ifdef EIF_WINDOWS
				case 's': break;
				case 'r': break;
				case 'w': break;
				case 'x': break;
#else
				case 's':
					if (flag) fmode |= S_ISUID; else fmode &= ~S_ISUID;
					break;
				case 'r':
					if (flag) fmode |= S_IRUSR; else fmode &= ~S_IRUSR;
					break;
				case 'w':
					if (flag) fmode |= S_IWUSR; else fmode &= ~S_IWUSR;
					break;
				case 'x':
					if (flag) fmode |= S_IXUSR; else fmode &= ~S_IXUSR;
					break;
#endif
				default:
					eraise("invalid user permission", EN_EXT);
				}
			break;
		case 'g':
			while (*what)
				switch (*what++) {
				case 's':
#ifdef S_ISGID
					if (flag) fmode |= S_ISGID; else fmode &= ~S_ISGID;
#endif
					break;
				case 'r':
#ifdef S_IRGRP
					if (flag) fmode |= S_IRGRP; else fmode &= ~S_IRGRP;
#endif
					break;
				case 'w':
#ifdef S_IWGRP
					if (flag) fmode |= S_IWGRP; else fmode &= ~S_IWGRP;
#endif
					break;
				case 'x':
#ifdef S_IXGRP
					if (flag) fmode |= S_IXGRP; else fmode &= ~S_IXGRP;
#endif
					break;
				default:
					eraise("invalid group permission", EN_EXT);
				}
			break;
		case 'o':
			while (*what)
				switch (*what++) {
				case 't':
#ifdef S_ISVTX
					if (flag) fmode |= S_ISVTX; else fmode &= ~S_ISVTX;
#endif
					break;
				case 'r':
#ifdef S_IROTH
					if (flag) fmode |= S_IROTH; else fmode &= ~S_IROTH;
#endif
					break;
				case 'w':
#ifdef S_IWOTH
					if (flag) fmode |= S_IWOTH; else fmode &= ~S_IWOTH;
#endif
					break;
				case 'x':
#ifdef S_IXOTH
					if (flag) fmode |= S_IXOTH; else fmode &= ~S_IXOTH;
#endif
					break;
				default:
					eraise("invalid other permission", EN_EXT);
				}
			break;
		default:
			eraise("invalid permission target", EN_EXT);
		}
		eif_file_chmod(name, fmode);
	}
}

/*
 * Change permission mode on file `path'.
 */
void eif_file_chmod(EIF_FILENAME path, int mode)
{
	errno = 0;
#ifdef EIF_WINDOWS
	if (_wchmod(path, mode) == -1) {
#else
	if (chmod(path, mode) == -1) {
#endif
		esys();
	}
}

/*
 * Change the owner of the file to `uid'.
 */
void eif_file_chown(EIF_FILENAME name, int uid)
{
#ifdef HAS_CHOWN
	int gid;
	rt_stat_buf buf;

	rt_file_stat(name, &buf);
	gid = buf.st_gid;
	errno = 0;
	if (chown(name, uid, gid) == -1) {
		esys();
	}
#endif
}

/*
 * Change the group of the file to `gid'.
 */
void eif_file_chgrp(EIF_FILENAME name, int gid)
{
#ifdef HAS_CHOWN
	int uid;
	rt_stat_buf buf;

	rt_file_stat(name, &buf);
	uid = buf.st_uid;
	errno = 0;
	if (chown(name, uid, gid) == -1) {
		esys();
	}
#endif
}

/*
 * Put new_line onto `f'.
 */
void eif_file_tnwl(FILE *f)
{
	errno = 0;
	if (putc('\n', f) == EOF) {
		eise_io("FILE: unable to write new line.");
	}
}

/*
 * Append a copy of `other' to `f'.
 */
void eif_file_append(FILE* f, FILE* other, EIF_INTEGER l)
{
	size_t amount;
	char buffer[512];
	int bufsize = 512;

	errno = 0;
	if (fseek(other, 0, FS_START) != 0) {
		esys();
	}
	if (fseek(f, 0, FS_END) != 0) {
		esys();
	}
	while (l > 0) {
		amount = l;
		if (l < bufsize)
			amount = l;
		else
			amount = bufsize;
		if (amount != fread(buffer, sizeof(char), amount, other)) {
			eise_io("FILE: unable to read appended file.");
			break;
		}
		l -= (EIF_INTEGER)amount;
		if (amount != fwrite(buffer, sizeof(char), amount, f)) {
			eise_io("FILE: unable to write appended file.");
			break;
		}
	}
}

/*
 * Write string `str' on `f'.
 */
void eif_file_ps(FILE* f, char* str, EIF_INTEGER len)
{
	errno = 0;
	if (len == 0) {
		/* Nothing to be done. */
	} else if (fwrite(str, sizeof(char) * len, 1, f) != 1) {
		eise_io("FILE: unable to write STRING object.");
	}
}

/*
 * Write character `c' on `f'.
 */
void eif_file_pc(FILE* f, char c)
{
	errno = 0;
	if (putc(c, f) == EOF) {
		eise_io("FILE: unable to write CHARACTER value.");
	}
}

/*
 * Go to absolute position `pos' counted from start.
 */
void eif_file_go(FILE* f, EIF_INTEGER pos)
{
	errno = 0;
	if (fseek(f, pos, FS_START) != 0) {
		esys();
	}
	clearerr(f);
}

/*
 * Go to absolute position `pos' counted from end.
 */
void eif_file_recede(FILE* f, EIF_INTEGER pos)
{
	errno = 0;
	if (fseek(f, -pos, FS_END) != 0) {
		esys();
	}
	clearerr(f);
}

/*
 * Go to absolute position `pos' counted from current position.
 */
void eif_file_move(FILE* f, EIF_INTEGER pos)
{
	errno = 0;
	if (fseek(f, pos, FS_CUR) != 0) {
		esys();
	}
	clearerr(f);
}

/*
 * End of file.
 */
EIF_BOOLEAN eif_file_feof(FILE* fp)
{
	return (EIF_BOOLEAN)(feof(fp) != 0);
}

/*
 * Test whether file exists or not. If `name' represents a symbolic link,
 * it will check that pointed file does exist.
 */
EIF_BOOLEAN eif_file_exists(EIF_FILENAME name)
{
	int status;					/* System call status */
	rt_stat_buf buf;			/* Buffer to get file statistics */

	status = eif_file_stat(name, &buf, 1);

#ifdef EOVERFLOW
	if (status == -1) {
			/* If the file is larger than what our file routines can handle
			 * it does not mean that the file does not exist. It does but we
			 * cannot handle it.
			 * This is needed to be able to check existence of file bigger than 2GB.
			 */
		return (errno == EOVERFLOW ? EIF_TRUE : EIF_FALSE);
	} else {
		return EIF_TRUE;
	}
#else
	return (status == -1 ? EIF_FALSE : EIF_TRUE);
#endif
}

/*
 * Test whether file exists or not without following the symbolic link
 * if `name' represents one.
 */
EIF_BOOLEAN eif_file_path_exists(EIF_FILENAME name)
{
	int status;					/* System call status */
	rt_stat_buf buf;			/* Buffer to get file statistics */

	status = eif_file_stat(name, &buf, 0);

#ifdef EOVERFLOW
	if (status == -1) {
			/* If the file is larger than what our file routines can handle
			 * it does not mean that the file does not exist. It does but we
			 * cannot handle it.
			 * This is needed to be able to check existence of file bigger than 2GB.
			 */
		return (errno == EOVERFLOW ? EIF_TRUE : EIF_FALSE);
	} else {
		return EIF_TRUE;
	}
#else
	return (status == -1 ? EIF_FALSE : EIF_TRUE);
#endif
}

/*
 * Check whether access permission `op' are possible on file `name' using
 * real UID and real GID. This is probably only useful to setuid or setgid
 * programs.
 */
EIF_BOOLEAN eif_file_access(EIF_FILENAME name, EIF_INTEGER op)
{
	switch (op) {
	case 0: /* Does file exist? */
		return (EIF_BOOLEAN)((-1 != rt_access(name, F_OK)) ? '\01' : '\0');
	case 1: /* Test for search permission */
		return (EIF_BOOLEAN)((-1 != rt_access(name, X_OK)) ? '\01' : '\0');
	case 2: /* Test for write permission */
		return (EIF_BOOLEAN)((-1 != rt_access(name, W_OK)) ? '\01' : '\0');
	case 3: /* Test for read permission */
		return (EIF_BOOLEAN)((-1 != rt_access(name, R_OK)) ? '\01' : '\0');
	default:
		return EIF_FALSE;
	}
}

/*
 * Check whether the file `path' may be created: we need write permissions
 * in the parent directory and there must not be any file bearing that name
 * with no write permissions...
 */
EIF_BOOLEAN eif_file_creatable(EIF_FILENAME path, EIF_INTEGER nbytes)
{
	rt_stat_buf buf;			/* Buffer to get parent directory statistics */
	EIF_FILENAME temp = NULL;
	EIF_FILENAME ptr;
	size_t l_extra_bytes;

		/* Allocate one extra character, just to be sure since we might be appending characters. */
#ifdef EIF_WINDOWS
	l_extra_bytes = sizeof(wchar_t);
#else
	l_extra_bytes = sizeof(char);
#endif
	temp = (EIF_FILENAME)malloc(nbytes + l_extra_bytes);
	if (!temp) {
		enomem();
	} else {
			/* Search the directory separator. */
#ifdef EIF_WINDOWS
		memcpy(temp, path, nbytes);
		ptr = wcsrchr(temp, '\\');
		if (!ptr) {
				/* On Windows we can have a forward slash as separator. */
			ptr = wcsrchr(temp, '/');
		}
#else
		strcpy(temp, path);
		ptr = strrchr(temp, '/');
#endif
		if (ptr) {
			*ptr = '\0';
#ifdef EIF_WINDOWS
			if ((ptr == temp) || (*(ptr -1) == ':')) {
					/* path is of the form a:\bbb or \bbb, parent is a:\ or \ */
				wcscat(ptr, L"\\");
			}
#endif
		} else {
#ifdef EIF_WINDOWS
			wcsncpy(temp, L".", 2);
#else
			strcpy(temp, ".");
#endif
		}

			/* Does the parent exist? */
		if (!eif_file_exists(temp)) {
			free(temp);
			return (EIF_BOOLEAN)'\0';
		}

		rt_file_stat(temp, &buf);
		free(temp);

		if (S_ISDIR(buf.st_mode)) {	/* Is parent a directory? */
			if (eif_file_eaccess(&buf, 1)) {	/* Check for write permissions */
					/* Check if a non writable file `path' exists */
				if (eif_file_exists(path)) {
					rt_file_stat(path, &buf);
					if (S_ISDIR(buf.st_mode)) {
							/* File exists and it is already a directory, thus we cannot create a file. */
						return (EIF_BOOLEAN)'\0';
					} else {
						return (eif_file_eaccess(&buf, 1)); /* Check for write permissions to re create it */
					}
				}

				return (EIF_BOOLEAN)'\01';
			}
		}
	}
	return (EIF_BOOLEAN)'\0';
}

/*
 * Get an integer from `f'.
 */
EIF_INTEGER eif_file_gi(FILE* f)
{
	EIF_INTEGER i;

	errno = 0;
	if (fscanf(f, "%d", &i) < 0) {
		eise_io("FILE: unable to read INTEGER value.");
	}
	rt_swallow_nl(f);
	return i;
}

/*
 * Get a real from `f'.
 */
EIF_REAL_32 eif_file_gr(FILE* f)
{
	EIF_REAL_32 r;
	errno = 0;
	if (fscanf(f, "%f", &r) < 0) {
		eise_io("FILE: unable to read REAL value.");
	}
	rt_swallow_nl(f);
	return r;
}

/*
 * Get a double from `f'.
 */
EIF_REAL_64 eif_file_gd(FILE* f)
{
	EIF_REAL_64 d;
	errno = 0;
	if (fscanf(f, "%lf", &d) < 0) {
		eise_io("FILE: unable to read DOUBLE value.");
	}
	rt_swallow_nl(f);
	return d;
}

/*
 * Write `number' on `f'.
 */
void eif_file_pi(FILE* f, EIF_INTEGER number)
{
	errno = 0;
	if (fprintf(f, "%d", number) < 0) {
		eise_io("FILE: unable to write INTEGER value.");
	}
}

/*
 * Write `number' on `f'.
 */
void eif_file_pr(FILE* f, EIF_REAL_32 number)
{
	int res;
	errno = 0;

	if (number != number) {
		res = fprintf(f, "%s", "NaN");
	} else if (GE_real_32_is_negative_infinity(number)) {
		res = fprintf(f, "%s", "-Infinity");
	} else if (GE_real_32_is_positive_infinity(number)) {
		res = fprintf(f, "%s", "Infinity");
	} else {
		res = fprintf(f, "%g", number);
	}
    if (res < 0) {
		eise_io("FILE: unable to write REAL_32 value.");
	}
}

/*
 * Write double `val' onto `f'.
 */
void eif_file_pd(FILE* f, EIF_REAL_64 val)
{
	int res;
	errno = 0;

	if (val != val) {
		res = fprintf(f, "%s", "NaN");
	} else if (GE_real_64_is_negative_infinity(val)) {
		res = fprintf(f, "%s", "-Infinity");
	} else if (GE_real_64_is_positive_infinity(val)) {
			res = fprintf(f, "%s", "Infinity");
	} else {
		res = fprintf(f, "%.17g", val);
	}

	if (res < 0) {
		eise_io("FILE: unable to write REAL_64 value.");
	}
}

/*
 * Size of the stat structure. This is used by the Eiffel side to create
 * the area (special object) which will play the role of a stat buffer
 * structure.
 */
EIF_INTEGER stat_size(void)
{
	return (EIF_INTEGER)sizeof(rt_stat_buf);
}

#ifdef HAS_GETGROUPS
/*
 * Does the list of groups the user belongs to include `gid'?
 */
static EIF_BOOLEAN eif_group_in_list(int gid)
{
	Groups_t* group_list;
	int i, nb_groups, nb_groups_max;

	nb_groups_max = getgroups(0, (Groups_t*)0);
	if (nb_groups_max <= 0) {
		return EIF_FALSE;
	} else {
		group_list = (Groups_t*)malloc(nb_groups_max * sizeof(Groups_t));
		if (group_list == (Groups_t*)0) {
			xraise(EN_IO);
			return EIF_FALSE;
		} else if ((nb_groups = getgroups(nb_groups_max, group_list)) == -1) {
			free(group_list);
			xraise(EN_IO);
			return EIF_FALSE;
		} else {
			for (i = 0; i < nb_groups; i++)
				if (group_list[i] == gid) {
					free(group_list);
					return EIF_TRUE;
				}
			free(group_list);
			return EIF_FALSE;
		}
	}
}
#endif

/*
 * Check file permissions using effective UID and effective GID. The
 * current permission mode is held in the st_mode field of the stat()
 * buffer structure `buf'.
 */
EIF_BOOLEAN eif_file_eaccess(rt_stat_buf* buf, int op)
{
	int mode = buf->st_mode & ST_MODE;	/* Current mode */
#ifdef HAS_GETEUID
	int uid = buf->st_uid;				/* File owner */
	int gid = buf->st_gid;				/* File group */
	int euid, egid;						/* Effective user and group */
#endif

    switch (op) {
	case 0: /* Is file readable */
#ifdef EIF_WINDOWS
	return ((mode && S_IREAD) ? EIF_TRUE : EIF_FALSE);
#elif defined HAS_GETEUID
		euid = geteuid();
		egid = getegid();

		if (euid == 0)
			return EIF_TRUE;
		else if (uid == euid)
			return ((mode & S_IRUSR) ? EIF_TRUE : EIF_FALSE);
		else if (gid == egid)
			return ((mode & S_IRGRP) ? EIF_TRUE : EIF_FALSE);
#ifdef HAS_GETGROUPS
		else if (eif_group_in_list(gid))
			return ((mode & S_IRGRP) ? EIF_TRUE : EIF_FALSE);
#endif
		else
			return ((mode & S_IROTH) ? EIF_TRUE : EIF_FALSE);
#endif
	case 1: /* Is file writable */
#ifdef EIF_WINDOWS
		return ((mode & S_IWRITE) ? EIF_TRUE : EIF_FALSE);
#elif defined HAS_GETEUID
		euid = geteuid();
		egid = getegid();

		if (euid == 0)
			return EIF_TRUE;
		else if (uid == euid)
			return ((mode & S_IWUSR) ? EIF_TRUE : EIF_FALSE);
		else if (gid == egid)
			return ((mode & S_IWGRP) ? EIF_TRUE : EIF_FALSE);
#ifdef HAS_GETGROUPS
		else if (eif_group_in_list(gid))
			return ((mode & S_IWGRP) ? EIF_TRUE : EIF_FALSE);
#endif
		else
			return ((mode & S_IWOTH) ? EIF_TRUE : EIF_FALSE);
#endif
	case 2: /* Is file executable */
#ifdef EIF_WINDOWS
		return EIF_TRUE;
#elif defined HAS_GETEUID
		euid = geteuid();
		egid = getegid();

		if (euid == 0)
			return EIF_TRUE;
		else if (uid == euid)
			return ((mode & S_IXUSR) ? EIF_TRUE : EIF_FALSE);
		else if (gid == egid)
			return ((mode & S_IXGRP) ? EIF_TRUE : EIF_FALSE);
#ifdef HAS_GETGROUPS
		else if (eif_group_in_list(gid))
			return ((mode & S_IXGRP) ? EIF_TRUE : EIF_FALSE);
#endif
		else
			return ((mode & S_IXOTH) ? EIF_TRUE : EIF_FALSE);
#endif
	case 3: /* Is file setuid */
#ifdef EIF_WINDOWS
		return EIF_FALSE;
#else
		return ((mode & S_ISUID) ? EIF_TRUE : EIF_FALSE);
#endif
	case 4: /* Is file setgid */
#ifdef EIF_WINDOWS
		return EIF_FALSE;
#else
		return ((mode & S_ISGID) ? EIF_TRUE : EIF_FALSE);
#endif
	case 5: /* Is file sticky */
#ifdef EIF_WINDOWS
		return EIF_FALSE;
#else
		return ((mode & S_ISVTX) ? EIF_TRUE : EIF_FALSE);
#endif
	case 6: /* Is file owned by effective UID */
#ifdef HAS_GETEUID
		return ((uid == geteuid()) ? EIF_TRUE : EIF_FALSE);
#else
		return EIF_TRUE;
#endif
	case 7: /* Is file owned by real UID */
#ifdef HAS_GETEUID
		return ((uid == getuid()) ? EIF_TRUE : EIF_FALSE);
#else
		return EIF_TRUE;
#endif
	default:
		return EIF_FALSE;
	}
}

/*
 * Perform the field dereferencing from the appropriate stat structure,
 * which Eiffel cannot do directly.
 */
EIF_INTEGER eif_file_info(rt_stat_buf* buf, int op)
{
	switch (op) {
	case 0:	/* File permission mode */
		return (EIF_INTEGER)(buf->st_mode & ST_MODE);
	case 1:	/* Inode number */
		return (EIF_INTEGER)buf->st_ino;
	case 2:	/* Device inode resides on */
		return (EIF_INTEGER)buf->st_dev;
	case 3:	/* Device type */
		return (EIF_INTEGER)buf->st_rdev;
	case 4:	/* UID of file */
		return (EIF_INTEGER)buf->st_uid;
	case 5:	/* GID of file */
		return (EIF_INTEGER)buf->st_gid;
	case 6:	/* Size of file, in bytes */
			/* FIXME: This code should be upgraded to use 64-bit */
		return (EIF_INTEGER) buf->st_size;
	case 7:	/* Last modification time on file */
			/* FIXME: This code should be upgraded to use 64-bit */
		return (EIF_INTEGER)buf->st_mtime;
	case 8:	/* Last access made on file */
			/* FIXME: This code should be upgraded to use 64-bit */
		return (EIF_INTEGER)buf->st_atime;
	case 9:	/* Last status change */
			/* FIXME: This code should be upgraded to use 64-bit */
		return (EIF_INTEGER)buf->st_ctime;
	case 10: /* Number of links */
		return (EIF_INTEGER)buf->st_nlink;
	case 11: /* File type */
		return (EIF_INTEGER)(buf->st_mode & S_IFMT);
	case 12: /* Is file a directory */
		return (EIF_INTEGER)S_ISDIR(buf->st_mode);
	case 13: /* Is file a regular (plain) one */
		if (S_ISREG(buf->st_mode) || (0 == (buf->st_mode & S_IFMT)))
			return (EIF_INTEGER)EIF_TRUE;
		return (EIF_INTEGER)0;
	case 14: /* Is file a device, ie character or block device. */
		return (S_ISCHR(buf->st_mode) || S_ISBLK(buf->st_mode));
	case 15: /* Is file a character device */
		return (EIF_INTEGER)S_ISCHR(buf->st_mode);
	case 16: /* Is file a block device */
		return (EIF_INTEGER)S_ISBLK(buf->st_mode);
	case 17: /* Is file a FIFO */
		return (EIF_INTEGER)S_ISFIFO(buf->st_mode);
	case 18: /* Is file a symbolic link */
		return (EIF_INTEGER)S_ISLNK(buf->st_mode);
	case 19: /* Is file a socket */
		return (EIF_INTEGER)S_ISSOCK(buf->st_mode);
	default:
		return (EIF_INTEGER)0;
    }
}

/*
 * Return the Eiffel string filled in with the name associated with `uid'
 * if found in /etc/passwd. Otherwise, return fill it in with the numeric
 * value.
 */
EIF_REFERENCE eif_file_owner(int uid)
{
	char str[NAME_MAX];
#ifdef HAS_GETPWUID
	struct passwd* pp;

	pp = getpwuid(uid);
	if (pp == (struct passwd*) 0)
		sprintf(str, "%d", uid);		/* Not available: use UID */
	else
		strcpy(str, pp->pw_name);		/* Available: fetch login name */
#else
	sprintf(str, "%d", uid);			/* Not available: use UID */
#endif
	return GE_str(str);
}

/*
 * Return the Eiffel string filled in with the name associated with `gid'
 * if found in /etc/group. Otherwise, return fill it in with the numeric
 * value.
 */
EIF_REFERENCE eif_file_group(int gid)
{
	char str[NAME_MAX];
#ifdef HAS_GETGRGID
	struct group* gp; /* %%ss moved from above */

	gp = getgrgid(gid);
	if (gp == (struct group*)0)
		sprintf(str, "%d", gid);		/* Not available: use GID */
	else
		strcpy(str, gp->gr_name);		/* Available: fetch login name */
#else
	sprintf(str, "%d", gid);			/* Not available: use UID */
#endif
	return GE_str(str);
}

/*
 * Get an integer from `f'.
 */
EIF_INTEGER eif_file_gib(FILE* f)
{
	EIF_INTEGER i;
	errno = 0;
	if (fread (&i, sizeof(EIF_INTEGER), 1, f) != 1) {
		eise_io("FILE: unable to read INTEGER value.");
	}
	return i;
}

/*
 * Get a real from `f'.
 */
EIF_REAL_32 eif_file_grb(FILE* f)
{
	EIF_REAL_32 r;
	errno = 0;
	if (fread (&r, sizeof(EIF_REAL_32), 1, f) != 1) {
		eise_io("FILE: unable to read REAL_32 value.");
	}
	return r;
}

/*
 * Get a double from `f'.
 */
EIF_REAL_64 eif_file_gdb(FILE* f)
{
	EIF_REAL_64 d;
	errno = 0;
	if (fread (&d, sizeof(EIF_REAL_64), 1, f) != 1) {
		eise_io("FILE: unable to read REAL_64 value.");
	}
	return d;
}

/*
 * Open file `name' with the corresponding type `how'.
 */
EIF_POINTER eif_file_binary_open(EIF_FILENAME name, int how)
{
	FILE* fp;
	EIF_NATIVE_CHAR l_mode[FILE_TYPE_MAX];
	errno = 0;
#ifdef EIF_WINDOWS
	rt_file_set_open_mode(l_mode, how, 'b');
#else
	rt_file_set_open_mode(l_mode, how, '\0');
#endif
	fp = (FILE*)rt_file_fopen(name, l_mode);
	if (fp == (FILE*)0) {
		esys(); /* Open failed, raise exception */
	}
	return (EIF_POINTER)fp;

}

/*
 * Open file `fd' with the corresponding type `how'.
 */
EIF_POINTER eif_file_binary_dopen(int fd, int how)
{
	FILE* fp;
	EIF_NATIVE_CHAR l_mode[FILE_TYPE_MAX];
	errno = 0;
#ifdef EIF_WINDOWS
	rt_file_set_open_mode(l_mode, how, 'b');
#else
	rt_file_set_open_mode(l_mode, how, '\0');
#endif
	fp = (FILE*)rt_file_fdopen(fd, l_mode);
	if (fp == (FILE*)0) {
		esys(); /* Open failed, raise exception */
	}
	return (EIF_POINTER)fp;
}

/*
 * Reopen file `name' with the corresponding type `how' and substitute that
 * to the old stream described by `old'. This is useful to redirect 'stdout'
 * to another place, for instance.
 */
EIF_POINTER eif_file_binary_reopen(EIF_FILENAME name, int how, FILE* old)
{
	FILE* fp;
	EIF_NATIVE_CHAR l_mode[FILE_TYPE_MAX];
	errno = 0;
#ifdef EIF_WINDOWS
	rt_file_set_open_mode(l_mode, how, 'b');
#else
	rt_file_set_open_mode(l_mode, how, '\0');
#endif
	fp = (FILE*)rt_file_freopen(name, l_mode, old);
	if (fp == (FILE*)0) {
		esys(); /* Open failed, raise exception */
	}
	return (EIF_POINTER)fp;
}

/*
 * Write `number' on `f'.
 */
void eif_file_pib(FILE* f, EIF_INTEGER number)
{
	errno = 0;
	if (fwrite(&number, sizeof(EIF_INTEGER),1, f) != 1) {
		eise_io("FILE: unable to write INTEGER value.");
	}
}

/*
 * Write `number' on `f'.
 */
void eif_file_prb(FILE* f, EIF_REAL_32 number)
{
	errno = 0;
    if (fwrite(&number, sizeof(EIF_REAL_32),1, f) != 1) {
		eise_io("FILE: unable to write REAL_32 value.");
	}
}

/*
 * Write double `val' onto `f'.
 */
void eif_file_pdb(FILE* f, EIF_REAL_64 val)
{
	errno = 0;
	if (fwrite(&val, sizeof(EIF_REAL_64), 1, f) != 1) {
		eise_io("FILE: unable to write REAL_64 value.");
	}
}

/*
 * Access time of a file.
 * Seconds since epoch (01 January 1970) in UTC or 0 if time cannot be retrieved.
 * mode: Mode of operation: non-zero for modification and zero for access time.
 */
static EIF_INTEGER eif_file_date_for(EIF_FILENAME name, int mode)
{
	EIF_INTEGER result = 0;
#ifdef EIF_WINDOWS
		/* On NTFS file system, windows store UTC file stamps in 100 of nanoseconds
		 * starting from January 1st 0. Converted in seconds, this time is greater
		 * than 232 therefore we substract the EPOCH date January 1st 1970 to get
		 * a 32 bits representation of the date.
		 * FIXME: Manu 01/28/2004: On FAT file system, the date is in local time,
		 * meaning that the code below does not compensate if you change your timezone
		 * and will return a different date value for the same stamp just because
		 * you are in different time zone.
		 */

		 /* WARNING: This is using the Ansi version of the Win32 API. Remember
		  * that if you are doing any change below.
		  */

	WIN32_FIND_DATAW l_find_data;
	HANDLE l_file_handle;
	ULARGE_INTEGER l_date;

	l_file_handle = FindFirstFileW(name, &l_find_data);
	if (l_file_handle != INVALID_HANDLE_VALUE) {
			/* We do not need the file handle anymore, so we close it to
			 * avoid handle leak. */
		FindClose(l_file_handle);
		if (mode) {
			l_date.LowPart = l_find_data.ftLastWriteTime.dwLowDateTime;
			l_date.HighPart = l_find_data.ftLastWriteTime.dwHighDateTime;
		} else {
			l_date.LowPart = l_find_data.ftLastAccessTime.dwLowDateTime;
			l_date.HighPart = l_find_data.ftLastAccessTime.dwHighDateTime;
		}
			/* Convert 100-nanosecond intervals to seconds
			 * and ajust "1 Jan 1601" to "1 Jan 1970".
			 * The difference between "1 Jan 1601" and "1 Jan 1970"
			 * can be precomputed using the following code:
			 *	SYSTEMTIME epoch = {1970, 1, 0, 1, 0, 0, 0, 0};
			 *	FILETIME epoch_file;
			 *	ULARGE_INTEGER epoch_date;
			 *	SystemTimeToFileTime (&epoch, &epoch_file);
			 *	epoch_date.LowPart = epoch_file.dwLowDateTime;
			 *	epoch_date.HighPart = epoch_file.dwHighDateTime;
			 * time_shift = epoch_date.QuadPart / 10000000UL; // 11644473600
			 */
		result = (EIF_INTEGER)(l_date.QuadPart / GE_nat64(10000000) - GE_nat64(11644473600));
	}
#else
	rt_stat_buf	info;
	if (-1 != eif_file_stat(name, &info, 1)) {
		result = (mode ? (EIF_INTEGER)info.st_mtime: (EIF_INTEGER)info.st_atime);
	}
#endif
	return result;
}

/*
 * Modification time of a file.
 * Seconds since epoch (01 January 1970) in UTC or 0 if time cannot be retrieved.
 */
EIF_INTEGER eif_file_date(EIF_FILENAME name)
{
	return eif_file_date_for(name, 1);
}

/*
 * Access time of a file.
 * Seconds since epoch (01 January 1970) in UTC or 0 if time cannot be retrieved.
 */
EIF_INTEGER eif_file_access_date(EIF_FILENAME name)
{
	return eif_file_date_for(name, 0);
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class CONSOLE"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2006-2017, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef EIF_CONSOLE_C
#define EIF_CONSOLE_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef EIF_CONSOLE_H
#include "eif_console.h"
#endif
#ifndef EIF_FILE_H
#include "eif_file.h"
#endif
#ifndef GE_CONSOLE_H
#include "ge_console.h"
#endif

#include <stdio.h>

#ifdef __cplusplus
extern "C" {
#endif

EIF_POINTER console_def(EIF_INTEGER file)
{
	switch (file) {
	case 0:
		return (EIF_POINTER)stdin;
	case 1:
		setvbuf(stdout, NULL, _IONBF, 0);
		return (EIF_POINTER)stdout;
	case 2:
		setvbuf (stderr, NULL, _IONBF, 0);
		return (EIF_POINTER)stderr;
	default:
		return NULL;
	}
}

EIF_BOOLEAN console_eof(FILE* fp)
{
	GE_show_console();
	return eif_file_feof(fp);
}

EIF_CHARACTER_8 console_separator(FILE *f)
{
	GE_show_console();
	return eif_file_lh(f);
}

void console_ps(FILE* f, char* str, EIF_INTEGER len)
{
	GE_show_console();
	eif_file_ps(f, str, len);
}

void console_pr(FILE* f, EIF_REAL_32 number)
{
	GE_show_console();
	eif_file_pr(f, number);
}

void console_pc(FILE* f, EIF_CHARACTER_8 c)
{
	GE_show_console();
	eif_file_pc(f, c);
}

void console_pd(FILE* f, EIF_REAL_64 val)
{
	GE_show_console();
	eif_file_pd(f, val);
}

void console_pi(FILE* f, EIF_INTEGER number)
{
	GE_show_console();
	eif_file_pi(f, number);
}

void console_tnwl(FILE* f)
{
	GE_show_console();
	console_pc(f,'\n');
}

EIF_CHARACTER_8 console_readchar(FILE* f)
{
	GE_show_console();
	return eif_file_gc(f);
}

EIF_REAL_32 console_readreal(FILE* f)
{
	GE_show_console();
	return eif_file_gr(f);
}

EIF_INTEGER console_readint(FILE* f)
{
	GE_show_console();
	return eif_file_gi(f);
}

EIF_REAL_64 console_readdouble(FILE* f)
{
	GE_show_console();
	return eif_file_gd(f);
}

EIF_INTEGER console_readword(FILE* f, char* s, EIF_INTEGER bound, EIF_INTEGER start)
{
	GE_show_console();
	return eif_file_gw(f, s, bound, start);
}

EIF_INTEGER console_readline(FILE* f, char* s, EIF_INTEGER bound, EIF_INTEGER start)
{
	GE_show_console();
	return eif_file_gs(f, s, bound, start);
}

void console_next_line(FILE* f)
{
	GE_show_console();
	eif_file_tnil(f);
}

EIF_INTEGER console_readstream(FILE* f, char* s, EIF_INTEGER bound)
{
	GE_show_console();
	return eif_file_gss(f, s, bound);
}

void console_file_close (FILE* f)
{
	GE_show_console();
	eif_file_close(f);
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class EXECUTION_ENVIRONMENT"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2006-2017, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef EIF_MISC_C
#define EIF_MISC_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef EIF_MISC_H
#include "eif_misc.h"
#endif

#include <stdlib.h>
#ifdef WIN32
#include <windows.h>
#include <string.h>
#include <direct.h> /* for 'getcwd' */
#endif

#ifndef PATH_MAX
#define PATH_MAX 1024 /* Maximum length of full path name */
#endif

#ifdef __cplusplus
extern "C" {
#endif

EIF_INTEGER eif_system(EIF_NATIVE_CHAR* s)
{
#ifdef EIF_WINDOWS
	return (EIF_INTEGER)_wsystem(s);
#else
	return (EIF_INTEGER)system(s);
#endif
}

void eif_system_asynchronous(EIF_NATIVE_CHAR* cmd)
{
#ifdef EIF_WINDOWS
	STARTUPINFOW siStartInfo;
	PROCESS_INFORMATION procinfo;
	wchar_t* current_dir;
	EIF_INTEGER result;

	current_dir = (wchar_t*)_wgetcwd(NULL, PATH_MAX);
	memset(&siStartInfo, 0, sizeof(siStartInfo));
	siStartInfo.cb = sizeof(STARTUPINFO);
	siStartInfo.lpTitle = NULL;
	siStartInfo.lpReserved = NULL;
	siStartInfo.lpReserved2 = NULL;
	siStartInfo.cbReserved2 = 0;
	siStartInfo.lpDesktop = NULL;
	siStartInfo.dwFlags = STARTF_FORCEONFEEDBACK;
	result = CreateProcessW(
		NULL,
		cmd,
		NULL,
		NULL,
		TRUE,
		CREATE_NEW_CONSOLE,
		NULL,
		current_dir,
		&siStartInfo,
		&procinfo);
	if (result) {
		CloseHandle(procinfo.hProcess);
		CloseHandle(procinfo.hThread);
	}
	_wchdir(current_dir);
	free(current_dir);
#else
	int status;

	switch (fork()) {
	case -1:
		return;
	case 0:
		break;
	default:
		return;
	}
	status = system(cmd);
	exit(0);
#endif
}

void eif_sleep(EIF_INTEGER_64 nanoseconds)
{
	/*
	 * Suspend thread execution for interval specified by `nanoseconds'.
	 * Use the most precise sleep function if possible.
	 */

#ifdef HAS_NANOSLEEP
	struct timespec req;
	struct timespec rem;
	req.tv_sec = nanoseconds / 1000000000;
	req.tv_nsec = nanoseconds % 1000000000;
	while ((nanosleep (&req, &rem) == -1) && (errno == EINTR)) {
			/* Function is interrupted by a signal.   */
			/* Let's call it again to complete pause. */
		req = rem;
	}
#else
#	ifdef HAS_USLEEP
#		define EIF_SLEEP_PRECISION 1000
#		define EIF_SLEEP_TYPE      unsigned long
#		define EIF_SLEEP_FUNCTION  usleep
#	elif defined EIF_WINDOWS
#		define EIF_SLEEP_PRECISION 1000000
#		define EIF_SLEEP_TYPE      DWORD
#		define EIF_SLEEP_FUNCTION  Sleep
#	else
#		define EIF_SLEEP_PRECISION 1000000000
#		define EIF_SLEEP_TYPE      unsigned int
#		define EIF_SLEEP_FUNCTION  sleep
#	endif
		/* Set total delay time */
	EIF_INTEGER_64 total_time = nanoseconds / EIF_SLEEP_PRECISION;
		/* Set maximum timeout that can be handled by one API call */
	EIF_SLEEP_TYPE timeout = ~((~ (EIF_SLEEP_TYPE) 0) << (sizeof timeout * 8 - 1));
	if ((nanoseconds % EIF_SLEEP_PRECISION) > 0) {
			/* Increase delay to handle underflow */
		total_time++;
	}
	while (total_time > 0) {
			/* Sleep for maximum timeout not exceeding time left */
		if (timeout > total_time) {
			timeout = (EIF_SLEEP_TYPE)total_time;
		}
		EIF_SLEEP_FUNCTION(timeout);
		total_time -= timeout;
	}
#  undef EIF_SLEEP_PRECISION
#  undef EIF_SLEEP_TYPE
#  undef EIF_SLEEP_FUNCTION
#endif
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class DIRECTORY"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2006-2018, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef EIF_DIR_C
#define EIF_DIR_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef EIF_DIR_H
#include "eif_dir.h"
#endif

#include <sys/stat.h>
#ifdef EIF_WINDOWS
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
	HANDLE handle;
	WIN32_FIND_DATAW last_entry;
	wchar_t	*name;
} GE_directory;
#ifdef __cplusplus
}
#endif
#include <io.h> /* for 'access' */
#include <direct.h> /* (ch|rm)dir */
#include <wchar.h>
#else
#include <dirent.h>
#include <unistd.h>
#endif
#include <string.h>

#ifndef PATH_MAX
#define PATH_MAX 1024 /* Maximum length of full path name */
#endif

#ifndef S_IRUSR
#define S_IRUSR 0000400
#endif
#ifndef S_IWUSR
#define S_IWUSR 0000200
#endif
#ifndef S_IXUSR
#define S_IXUSR 0000100
#endif
#ifndef S_IRGRP
#define S_IRGRP 0000040
#endif
#ifndef S_IWGRP
#define S_IWGRP 0000020
#endif
#ifndef S_IXGRP
#define S_IXGRP 0000010
#endif
#ifndef S_IROTH
#define S_IROTH 0000004
#endif
#ifndef S_IWOTH
#define S_IWOTH 0000002
#endif
#ifndef S_IXOTH
#define S_IXOTH 0000001
#endif
#ifndef S_IFDIR
#define S_IFDIR 0040000
#endif
#ifndef S_IFCHR
#define S_IFCHR 0020000
#endif
#ifdef __LCC__
#ifndef _S_IFCHR
#define _S_IFCHR S_IFCHR
#endif
#endif
#ifndef S_IFBLK
#define S_IFBLK 0060000
#endif
#ifndef S_IFREG
#define S_IFREG 0100000
#endif
#ifndef S_IFIFO
#define S_IFIFO 0010000
#endif
#ifndef S_IFLNK
#define S_IFLNK 0120000
#endif
#ifndef S_IFSOCK
#define S_IFSOCK 0140000
#endif
#ifndef S_IFMT
#define S_IFMT 0170000
#endif
#ifndef S_ISREG
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#endif
#ifndef S_ISDIR
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
#ifndef S_ISCHR
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
#endif
#ifndef S_ISBLK
#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
#endif
#ifndef S_ISLNK
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
#endif
#ifndef S_ISFIFO
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
#endif

/* Keep only permission mode */
#ifndef ST_MODE
#define ST_MODE 0x0fff
#endif

/* The following access constants seems to be universally accepeted. And
 * anyway, it's only after BSD 4.1 that the symbolic constants appeared.
 */
#ifndef R_OK
#define R_OK 4
#define W_OK 2
#define X_OK 1
#define F_OK 0
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifdef EIF_WINDOWS
#	ifdef __LCC__
#		define rt_stat_buf	struct stat
#	elif defined EIF_64_BITS
#		define rt_stat_buf	struct _stat64
#	else
#		define rt_stat_buf	struct _stat64i32
#	endif
#else
#	define rt_stat_buf		struct stat
#endif

#ifdef EIF_WINDOWS
#	ifdef __LCC__
#		define rt_stat		_wstat
#		define rt_fstat		fstat
#	elif defined(EIF_64_BITS)
#		define rt_stat		_wstat64
#		define rt_fstat		_fstat64
#	else
#		define rt_stat		_wstat64i32
#		define rt_fstat		_fstat64i32
#	endif
#	define rt_access		_waccess
#else
#	define rt_stat			stat
#	define rt_fstat			fstat
#	define rt_access		access
#endif

EIF_POINTER eif_dir_open(EIF_FILENAME dirname)
{
#ifdef EIF_WINDOWS
	GE_directory* result = (GE_directory*)malloc(sizeof(GE_directory));
	result->name = dirname;
	result->handle = 0;
	return result;
#else
	return (opendir(((char*)dirname)));
#endif
}

EIF_POINTER eif_dir_next(EIF_POINTER dir)
{
#ifdef EIF_WINDOWS
	BOOL r;
	size_t a_name_length;
	wchar_t * wname;
	GE_directory* GE_dir = (GE_directory*)dir;
	HANDLE h = GE_dir->handle;

	if (h) {
		r = FindNextFileW(h, &(GE_dir->last_entry));
	} else {
		r = EIF_FALSE;
			/* Allocate additional space for "\\*": 2 characters + terminating zero */
		a_name_length = wcslen(GE_dir->name);
		wname = (wchar_t *)malloc((a_name_length + 3) * sizeof(wchar_t));
		if (!wname) {
			enomem();
		} else {
			wcscpy(wname, GE_dir->name);
			if (wname[a_name_length - 1] == '\\') {
				wcscat(wname, L"*");
			} else {
				wcscat(wname , L"\\*");
			}
			h = FindFirstFileW(wname, &(GE_dir->last_entry));
			free(wname);
			if (h != INVALID_HANDLE_VALUE) {
				GE_dir->handle = h;
				r = EIF_TRUE;
			}
		}
	}
	if (r) {
		return GE_dir->last_entry.cFileName;
	} else {
		return NULL;
	}
#else
	struct dirent* p = readdir((DIR*)dir);
	if (p) {
		return p->d_name;
	} else {
		return NULL;
	}
#endif
}

EIF_POINTER eif_dir_rewind(EIF_POINTER dir, EIF_FILENAME a_name)
{
#ifdef EIF_WINDOWS
	GE_directory* GE_dir = (GE_directory*)dir;
	HANDLE h = GE_dir->handle;

	if (h) {
		FindClose(h);
	}
	GE_dir->handle = 0;
#else
	DIR* GE_dir = (DIR*)dir;
	rewinddir(GE_dir);
#endif
	return GE_dir;
}

void eif_dir_close(EIF_POINTER dir)
{
#ifdef EIF_WINDOWS
	GE_directory* GE_dir = (GE_directory*)dir;
	HANDLE h = GE_dir->handle;

	if (h) {
		FindClose(h);
	}
	GE_dir->handle = 0;
	free(GE_dir);
#else
	closedir((DIR*)dir);
#endif
}

EIF_BOOLEAN eif_dir_exists(EIF_FILENAME dirname)
{
	rt_stat_buf buf;

	return (EIF_BOOLEAN)((!rt_stat (dirname, &buf) && S_ISDIR(buf.st_mode)) ? EIF_TRUE : EIF_FALSE);
}

EIF_BOOLEAN eif_dir_is_readable(EIF_FILENAME dirname)
{
#ifdef EIF_WINDOWS
	return (EIF_BOOLEAN)(_waccess (dirname, R_OK) != -1);
#else
	int uid, gid;
	int euid, egid;
	int mode;
	rt_stat_buf buf;

	rt_stat(dirname, &buf);
	mode = buf.st_mode & ST_MODE;
	uid = buf.st_uid;
	gid = buf.st_gid;
	euid = geteuid();
	egid = getegid();
	if (euid == 0)
		return EIF_TRUE;
	else if (uid == euid)
		return ((mode & S_IRUSR) ? EIF_TRUE : EIF_FALSE);
	else if (gid == egid)
		return ((mode & S_IRGRP) ? EIF_TRUE : EIF_FALSE);
#ifdef HAS_GETGROUPS
	else if (eif_group_in_list(gid))
		return ((mode & S_IRGRP) ? EIF_TRUE : EIF_FALSE);
#endif
	else
		return ((mode & S_IROTH) ? EIF_TRUE : EIF_FALSE);
#endif
}

EIF_BOOLEAN eif_dir_is_executable(EIF_FILENAME dirname)
{
#ifdef EIF_WINDOWS
	return (EIF_BOOLEAN)(_waccess(dirname, F_OK) != -1);
#else
	int uid, gid;
	int euid, egid;
	int mode;
	rt_stat_buf buf;

	rt_stat(dirname, &buf);
	mode = buf.st_mode & ST_MODE;
	uid = buf.st_uid;
	gid = buf.st_gid;
	euid = geteuid();
	egid = getegid();
	if (euid == 0)
		return EIF_TRUE;
	else if (uid == euid)
		return ((mode & S_IXUSR) ? EIF_TRUE : EIF_FALSE);
	else if (gid == egid)
		return ((mode & S_IXGRP) ? EIF_TRUE : EIF_FALSE);
#ifdef HAS_GETGROUPS
	else if (eif_group_in_list(gid))
		return ((mode & S_IXGRP) ? EIF_TRUE : EIF_FALSE);
#endif
	else
		return ((mode & S_IXOTH) ? EIF_TRUE : EIF_FALSE);
#endif
}

EIF_BOOLEAN eif_dir_is_writable(EIF_FILENAME dirname)
{
#ifdef EIF_WINDOWS
	return (EIF_BOOLEAN)(_waccess(dirname, W_OK) != -1);
#else
	int uid, gid;
	int euid, egid;
	int mode;
	rt_stat_buf buf;

	rt_stat(dirname, &buf);
	mode = buf.st_mode & ST_MODE;
	uid = buf.st_uid;
	gid = buf.st_gid;
	euid = geteuid();
	egid = getegid();
	if (euid == 0)
		return EIF_TRUE;
	else if (uid == euid)
		return ((mode & S_IWUSR) ? EIF_TRUE : EIF_FALSE);
	else if (gid == egid)
		return ((mode & S_IWGRP) ? EIF_TRUE : EIF_FALSE);
#ifdef HAS_GETGROUPS
	else if (eif_group_in_list(gid))
		return ((mode & S_IWGRP) ? EIF_TRUE : EIF_FALSE);
#endif
	else
		return ((mode & S_IWOTH) ? EIF_TRUE : EIF_FALSE);
#endif
}

EIF_BOOLEAN eif_dir_is_deletable(EIF_FILENAME name)
{
	return eif_dir_is_writable(name);
}

EIF_CHARACTER_8 eif_dir_separator(void)
{
#ifdef EIF_WINDOWS
	return (EIF_CHARACTER_8)'\\';
#else
	return (EIF_CHARACTER_8)'/';
#endif
}

EIF_INTEGER eif_dir_current(EIF_FILENAME a_buffer, EIF_INTEGER a_count)
{
	EIF_INTEGER l_nbytes;

#ifdef EIF_WINDOWS
	wchar_t *subpart;
	wchar_t drive[2];
	drive [0] = '.';
	drive [1] = '\0';
		/* First calculate the length of the buffer we need to hold the current working directory. */
	l_nbytes = (GetFullPathNameW(drive, 0, NULL, &subpart) + 1) * sizeof(wchar_t);

	if (l_nbytes == 0) {
			/* Failure: we cannot retrieve our current directory. */
		l_nbytes = -1;
	} else {
		if (a_buffer && (a_count >= l_nbytes)) {
			l_nbytes = (GetFullPathNameW(drive, l_nbytes / sizeof(wchar_t), a_buffer, &subpart) + 1) * sizeof(wchar_t);
		}
	}
	return l_nbytes;
#else
	char *cwd;
	cwd = getcwd(NULL, PATH_MAX);

	if (cwd) {
		l_nbytes = (strlen(cwd) + 1) * sizeof(char);
		if (a_buffer && (a_count >= l_nbytes)) {
			memcpy(a_buffer, cwd, l_nbytes);
		}
		free(cwd);	/* Not `eif_free', getcwd() call malloc in POSIX.1 */
	} else {
		l_nbytes = -1;
	}

	return l_nbytes;

#endif
}

EIF_INTEGER eif_chdir(EIF_FILENAME path)
{
#ifdef EIF_WINDOWS
	return _wchdir(path);
#else
	return chdir(path);
#endif
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
/*
	description:

		"C functions used to implement class COM_FAILURE"

	system: "Gobo Eiffel Compiler"
	copyright: "Copyright (c) 2016-2018, Eric Bezault and others"
	license: "MIT License"
	date: "$Date: 2019-02-05 23:54:36 +0000 (Tue, 05 Feb 2019) $"
	revision: "$Revision: 102790 $"
*/

#ifndef GE_COM_FAILURE_C
#define GE_COM_FAILURE_C
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#ifndef GE_COM_FAILURE_H
#include "ge_com_failure.h"
#endif

#ifdef EIF_WINDOWS
#include <winerror.h>
#include <tchar.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

EIF_INTEGER GE_ccom_hresult(EIF_POINTER an_exception_code)
{
#ifdef EIF_WINDOWS
	char* stopstring = NULL;
	long result = 0, high_bits = 0, low_bits = 0;
	char high_str[7];
	char* exception_code = (char*)(an_exception_code);

	if (exception_code != NULL) {
		strncpy(high_str, exception_code, 6);
		high_str[6] = '\0';

		high_bits = strtol(high_str, &stopstring, 16);
		low_bits = strtol(exception_code + 6, &stopstring, 16);
		result = (high_bits << 16) + low_bits;
	}
	return (EIF_INTEGER)result;
#else
	return 0;
#endif
}

EIF_INTEGER GE_ccom_hresult_code(EIF_INTEGER an_hresult)
{
#ifdef EIF_WINDOWS
	return HRESULT_CODE(an_hresult);
#else
	return 0;
#endif
}

EIF_INTEGER GE_ccom_hresult_facility(EIF_INTEGER an_hresult)
{
#ifdef EIF_WINDOWS
	return HRESULT_FACILITY(an_hresult);
#else
	return 0;
#endif
}

/*
 * Get text from error `a_code'. It is up to the caller to free
 * the returned buffer using `GE_ccom_local_free'.
 */
EIF_POINTER GE_ccom_error_text(EIF_INTEGER a_code)
{
#ifdef EIF_WINDOWS
	LPVOID result;
	FormatMessage(
		FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
		NULL,
		a_code,
		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
		(LPTSTR)&result,
		0,
		NULL
		);
	return result;
#else
	return 0;
#endif
}

/*
 * Number of characters in `ptr'.
 */
EIF_INTEGER_32 GE_ccom_strlen(EIF_POINTER ptr)
{
#ifdef EIF_WINDOWS
	return (EIF_INTEGER_32)_tcslen((TCHAR*)ptr);
#else
	return 0;
#endif
}

/*
 * Number of bytes occupied by a TCHAR.
 */
EIF_INTEGER_32 GE_ccom_character_size(void)
{
#ifdef EIF_WINDOWS
	return sizeof(TCHAR);
#else
	return 0;
#endif
}

/*
 * Free `a_ptr' using LocalFree.
 */
void GE_ccom_local_free(EIF_POINTER a_ptr)
{
#ifdef EIF_WINDOWS
	LocalFree((HLOCAL)a_ptr);
#endif
}

#ifdef __cplusplus
}
#endif

#endif
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif
