From decb27eaa2b0e2777276077d88eacef5cc0ceb28 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Wed, 21 Mar 2007 04:23:59 +0000 Subject: [PATCH] Massive update of directive handling, including handling of extern, global, and common declare. The latter no longer passes through objfmt at parse time; instead the objfmt must handle them at output time (objfmt-specific extensions are parsed & stored by the parser). Directives are now handled using a list (with function pointers) rather than a single function entry point. svn path=/trunk/yasm/; revision=1819 --- frontends/yasm/yasm.c | 4 +- libyasm/arch.h | 50 +- libyasm/coretype.h | 16 +- libyasm/dbgfmt.h | 25 +- libyasm/hamt.c | 45 +- libyasm/hamt.h | 3 +- libyasm/linemap.c | 2 +- libyasm/objfmt.h | 96 +- libyasm/section.c | 162 + libyasm/section.h | 21 + libyasm/symrec.c | 139 +- libyasm/symrec.h | 59 +- libyasm/valparam.c | 44 + libyasm/valparam.h | 52 + modules/arch/x86/x86arch.c | 99 +- modules/arch/x86/x86arch.h | 3 +- modules/arch/x86/x86id.c | 4 +- modules/dbgfmts/codeview/cv-dbgfmt.c | 9 +- modules/dbgfmts/dwarf2/dwarf2-dbgfmt.c | 15 +- modules/dbgfmts/dwarf2/dwarf2-dbgfmt.h | 9 +- modules/dbgfmts/dwarf2/dwarf2-line.c | 333 +- .../dwarf2/tests/pass32/dwarf32_testhd.hex | 188 +- .../dwarf2/tests/pass64/dwarf64_leb128.hex | 23024 ++++++++-------- .../tests/passwin64/dwarfwin64_testhd.errwarn | 2 + modules/dbgfmts/null/null-dbgfmt.c | 9 +- modules/dbgfmts/stabs/stabs-dbgfmt.c | 9 +- modules/objfmts/bin/bin-objfmt.c | 153 +- modules/objfmts/coff/coff-objfmt.c | 269 +- modules/objfmts/coff/win64-except.c | 4 +- modules/objfmts/dbg/dbg-objfmt.c | 80 +- modules/objfmts/elf/elf-objfmt.c | 422 +- modules/objfmts/elf/elf.c | 2 - modules/objfmts/elf/elf.h | 2 +- modules/objfmts/elf/tests/elfmanysym.hex | 96 +- modules/objfmts/elf/tests/elfvisibility.asm | 5 + modules/objfmts/elf/tests/elfvisibility.hex | 8 +- .../elf/tests/gas64/elf_gas64_reloc.hex | 12 +- modules/objfmts/macho/macho-objfmt.c | 86 +- modules/objfmts/rdf/rdf-objfmt.c | 368 +- modules/objfmts/rdf/tests/rdfabs.errwarn | 4 +- modules/objfmts/xdf/xdf-objfmt.c | 58 +- modules/parsers/gas/gas-parse.c | 236 +- modules/parsers/gas/gas-parser.h | 7 - modules/parsers/gas/gas-token.re | 20 - modules/parsers/nasm/nasm-parse.c | 188 +- 45 files changed, 13019 insertions(+), 13423 deletions(-) diff --git a/frontends/yasm/yasm.c b/frontends/yasm/yasm.c index 4a315bda..effe0e99 100644 --- a/frontends/yasm/yasm.c +++ b/frontends/yasm/yasm.c @@ -453,7 +453,7 @@ do_assemble(FILE *in) yasm_symtab_parser_finalize(object->symtab, strcmp(cur_parser_module->keyword, "gas")==0 || strcmp(cur_parser_module->keyword, "gnu")==0, - object, errwarns); + errwarns); check_errors(errwarns, object, linemap); /* Finalize parse */ @@ -604,7 +604,7 @@ main(int argc, char *argv[]) /* Check for arch help */ if (machine_name && strcmp(machine_name, "help") == 0) { - yasm_arch_machine *m = cur_arch_module->machines; + const yasm_arch_machine *m = cur_arch_module->machines; printf(_("Available %s for %s `%s':\n"), _("machines"), _("architecture"), cur_arch_module->keyword); while (m->keyword && m->name) { diff --git a/libyasm/arch.h b/libyasm/arch.h index 4a12884d..6ee9cdd9 100644 --- a/libyasm/arch.h +++ b/libyasm/arch.h @@ -106,6 +106,9 @@ typedef struct yasm_arch_module { */ const char *keyword; + /** NULL-terminated list of directives. NULL if none. */ + /*@null@*/ const yasm_directive *directives; + /** Create architecture. * Module-level implementation of yasm_arch_create(). * Call yasm_arch_create() instead of calling this function. @@ -133,11 +136,6 @@ typedef struct yasm_arch_module { */ int (*set_var) (yasm_arch *arch, const char *var, unsigned long val); - /** Module-level implementation of yasm_arch_parse_cpu(). - * Call yasm_arch_parse_cpu() instead of calling this function. - */ - void (*parse_cpu) (yasm_arch *arch, const char *cpuid, size_t cpuid_len); - /** Module-level implementation of yasm_arch_parse_check_insnprefix(). * Call yasm_arch_parse_check_insnprefix() instead of calling this function. */ @@ -152,14 +150,6 @@ typedef struct yasm_arch_module { (yasm_arch *arch, /*@out@*/ uintptr_t *data, const char *id, size_t id_len); - /** Module-level implementation of yasm_arch_parse_directive(). - * Call yasm_arch_parse_directive() instead of calling this function. - */ - int (*parse_directive) (yasm_arch *arch, const char *name, - /*@null@*/ yasm_valparamhead *valparams, - /*@null@*/ yasm_valparamhead *objext_valparams, - yasm_object *object, unsigned long line); - /** Module-level implementation of yasm_arch_get_fill(). * Call yasm_arch_get_fill() instead of calling this function. */ @@ -219,7 +209,7 @@ typedef struct yasm_arch_module { * Call yasm_arch_get_machine() to get the active machine of a particular * #yasm_arch. */ - yasm_arch_machine *machines; + const yasm_arch_machine *machines; /** Default machine keyword. * Call yasm_arch_get_machine() to get the active machine of a particular @@ -352,15 +342,6 @@ unsigned int yasm_arch_get_address_size(const yasm_arch *arch); */ int yasm_arch_set_var(yasm_arch *arch, const char *var, unsigned long val); -/** Switch available instructions/registers/etc based on a user-specified - * CPU identifier. Should modify behavior ONLY of parse_* functions! The - * bytecode and output functions should be able to handle any CPU. - * \param arch architecture - * \param cpuid cpu identifier as in the input file - * \param cpuid_len length of cpu identifier string - */ -void yasm_arch_parse_cpu(yasm_arch *arch, const char *cpuid, size_t cpuid_len); - /** Check an generic identifier to see if it matches architecture specific * names for instructions or instruction prefixes. Unrecognized identifiers * should return #YASM_ARCH_NOTINSNPREFIX so they can be treated as normal @@ -393,23 +374,6 @@ yasm_arch_regtmod yasm_arch_parse_check_regtmod (yasm_arch *arch, /*@out@*/ uintptr_t *data, const char *id, size_t id_len); -/** Handle architecture-specific directives. - * Should modify behavior ONLY of parse functions, much like parse_cpu(). - * \param arch architecture - * \param name directive name - * \param valparams value/parameters - * \param objext_valparams object format extensions - * value/parameters - * \param object object - * \param line virtual line (as from yasm_linemap) - * \return Nonzero if directive was not recognized; 0 if directive was - * recognized, even if it wasn't valid. - */ -int yasm_arch_parse_directive(yasm_arch *arch, const char *name, - /*@null@*/ yasm_valparamhead *valparams, - /*@null@*/ yasm_valparamhead *objext_valparams, - yasm_object *object, unsigned long line); - /** Get NOP fill patterns for 1-15 bytes of fill. * \param arch architecture * \return 16-entry array of arrays; [0] is unused, [1] - [15] point to arrays @@ -542,18 +506,12 @@ yasm_effaddr *yasm_arch_ea_create(yasm_arch *arch, /*@keep@*/ yasm_expr *e); ((yasm_arch_base *)arch)->module->get_address_size(arch) #define yasm_arch_set_var(arch, var, val) \ ((yasm_arch_base *)arch)->module->set_var(arch, var, val) -#define yasm_arch_parse_cpu(arch, cpuid, cpuid_len) \ - ((yasm_arch_base *)arch)->module->parse_cpu(arch, cpuid, cpuid_len) #define yasm_arch_parse_check_insnprefix(arch, data, id, id_len) \ ((yasm_arch_base *)arch)->module->parse_check_insnprefix(arch, data, id, \ id_len) #define yasm_arch_parse_check_regtmod(arch, data, id, id_len) \ ((yasm_arch_base *)arch)->module->parse_check_regtmod(arch, data, id, \ id_len) -#define yasm_arch_parse_directive(arch, name, valparams, objext_valparams, \ - object, line) \ - ((yasm_arch_base *)arch)->module->parse_directive \ - (arch, name, valparams, objext_valparams, object, line) #define yasm_arch_get_fill(arch) \ ((yasm_arch_base *)arch)->module->get_fill(arch) #define yasm_arch_finalize_insn(arch, bc, prev_bc, data, num_operands, \ diff --git a/libyasm/coretype.h b/libyasm/coretype.h index 3f5e3a79..b07d8d68 100644 --- a/libyasm/coretype.h +++ b/libyasm/coretype.h @@ -187,6 +187,10 @@ typedef struct yasm_valparam yasm_valparam; * \see valparam.h for related functions. */ typedef struct yasm_valparamhead yasm_valparamhead; +/** Directive list entry. + * \see valparam.h for details and related functions. + */ +typedef struct yasm_directive yasm_directive; /** A list of instruction operands (opaque type). * The list goes from left-to-right as parsed. @@ -232,18 +236,6 @@ typedef enum yasm_expr_op { YASM_EXPR_SEGOFF /**< The ':' in segment:offset. */ } yasm_expr_op; -/** Symbol record visibility. - * \see symrec.h for related functions. - * \note YASM_SYM_EXTERN and YASM_SYM_COMMON are mutually exclusive. - */ -typedef enum yasm_sym_vis { - YASM_SYM_LOCAL = 0, /**< Default, local only */ - YASM_SYM_GLOBAL = 1 << 0, /**< If symbol is declared GLOBAL */ - YASM_SYM_COMMON = 1 << 1, /**< If symbol is declared COMMON */ - YASM_SYM_EXTERN = 1 << 2, /**< If symbol is declared EXTERN */ - YASM_SYM_DLOCAL = 1 << 3 /**< If symbol is explicitly declared LOCAL */ -} yasm_sym_vis; - /** Convert yasm_value to its byte representation. Usually implemented by * object formats to keep track of relocations and verify legal expressions. * Must put the value into the least significant bits of the destination, diff --git a/libyasm/dbgfmt.h b/libyasm/dbgfmt.h index acf357a6..021127e7 100644 --- a/libyasm/dbgfmt.h +++ b/libyasm/dbgfmt.h @@ -52,6 +52,9 @@ struct yasm_dbgfmt_module { /** Keyword used to select debug format. */ const char *keyword; + /** NULL-terminated list of directives. NULL if none. */ + /*@null@*/ const yasm_directive *directives; + /** Create debug format. * Module-level implementation of yasm_dbgfmt_create(). * The filenames are provided solely for informational purposes. @@ -65,13 +68,6 @@ struct yasm_dbgfmt_module { */ void (*destroy) (/*@only@*/ yasm_dbgfmt *dbgfmt); - /** Module-level implementation of yasm_dbgfmt_directive(). - * Call yasm_dbgfmt_directive() instead of calling this function. - */ - int (*directive) (yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *valparams, - unsigned long line); - /** Module-level implementation of yasm_dbgfmt_generate(). * Call yasm_dbgfmt_generate() instead of calling this function. */ @@ -100,18 +96,6 @@ const char *yasm_dbgfmt_keyword(const yasm_dbgfmt *dbgfmt); */ void yasm_dbgfmt_destroy(/*@only@*/ yasm_dbgfmt *dbgfmt); -/** DEBUG directive support. - * \param object object - * \param name directive name - * \param valparams value/parameters - * \param line virtual line (from yasm_linemap) - * \return Nonzero if directive was not recognized; 0 if directive was - * recognized even if it wasn't valid. - */ -int yasm_dbgfmt_directive(yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *valparams, - unsigned long line); - /** Generate debugging information bytecodes. * \param object object * \param linemap virtual/physical line mapping @@ -133,9 +117,6 @@ void yasm_dbgfmt_generate(yasm_object *object, yasm_linemap *linemap, #define yasm_dbgfmt_destroy(dbgfmt) \ ((yasm_dbgfmt_base *)dbgfmt)->module->destroy(dbgfmt) -#define yasm_dbgfmt_directive(object, name, valparams, line) \ - ((yasm_dbgfmt_base *)((object)->dbgfmt))->module->directive \ - (object, name, valparams, line) #define yasm_dbgfmt_generate(object, linemap, ews) \ ((yasm_dbgfmt_base *)((object)->dbgfmt))->module->generate \ (object, linemap, ews) diff --git a/libyasm/hamt.c b/libyasm/hamt.c index 6eee0586..c6617b6d 100644 --- a/libyasm/hamt.c +++ b/libyasm/hamt.c @@ -33,6 +33,8 @@ #include "util.h" /*@unused@*/ RCSID("$Id$"); +#include + #include "libyasm-stdint.h" #include "coretype.h" #include "hamt.h" @@ -53,6 +55,8 @@ struct HAMT { HAMTNode *root; /*@exits@*/ void (*error_func) (const char *file, unsigned int line, const char *message); + unsigned long (*HashKey) (const char *key); + unsigned long (*ReHashKey) (const char *key, int Level); }; /* XXX make a portable version of this. This depends on the pointer being @@ -92,8 +96,26 @@ ReHashKey(const char *key, int Level) return vHash; } +static unsigned long +HashKey_nocase(const char *key) +{ + unsigned long a=31415, b=27183, vHash; + for (vHash=0; *key; key++, a*=b) + vHash = a*vHash + tolower(*key); + return vHash; +} + +static unsigned long +ReHashKey_nocase(const char *key, int Level) +{ + unsigned long a=31415, b=27183, vHash; + for (vHash=0; *key; key++, a*=b) + vHash = a*vHash*(unsigned long)Level + tolower(*key); + return vHash; +} + HAMT * -HAMT_create(/*@exits@*/ void (*error_func) +HAMT_create(int nocase, /*@exits@*/ void (*error_func) (const char *file, unsigned int line, const char *message)) { /*@out@*/ HAMT *hamt = yasm_xmalloc(sizeof(HAMT)); @@ -108,6 +130,13 @@ HAMT_create(/*@exits@*/ void (*error_func) } hamt->error_func = error_func; + if (nocase) { + hamt->HashKey = HashKey_nocase; + hamt->ReHashKey = ReHashKey_nocase; + } else { + hamt->HashKey = HashKey; + hamt->ReHashKey = ReHashKey; + } return hamt; } @@ -195,7 +224,7 @@ HAMT_insert(HAMT *hamt, const char *str, void *data, int *replace, int keypartbits = 0; int level = 0; - key = HashKey(str); + key = hamt->HashKey(str); keypart = key & 0x1F; node = &hamt->root[keypart]; @@ -236,9 +265,9 @@ HAMT_insert(HAMT *hamt, const char *str, void *data, int *replace, keypartbits += 5; if (keypartbits > 30) { /* Exceeded 32 bits: rehash */ - key = ReHashKey(str, level); - key2 = ReHashKey(((HAMTEntry *)(node->BaseValue))->str, - level); + key = hamt->ReHashKey(str, level); + key2 = hamt->ReHashKey( + ((HAMTEntry *)(node->BaseValue))->str, level); keypartbits = 0; } keypart = (key >> keypartbits) & 0x1F; @@ -288,7 +317,7 @@ HAMT_insert(HAMT *hamt, const char *str, void *data, int *replace, keypartbits += 5; if (keypartbits > 30) { /* Exceeded 32 bits of current key: rehash */ - key = ReHashKey(str, level); + key = hamt->ReHashKey(str, level); keypartbits = 0; } keypart = (key >> keypartbits) & 0x1F; @@ -347,7 +376,7 @@ HAMT_search(HAMT *hamt, const char *str) int keypartbits = 0; int level = 0; - key = HashKey(str); + key = hamt->HashKey(str); keypart = key & 0x1F; node = &hamt->root[keypart]; @@ -366,7 +395,7 @@ HAMT_search(HAMT *hamt, const char *str) keypartbits += 5; if (keypartbits > 30) { /* Exceeded 32 bits of current key: rehash */ - key = ReHashKey(str, level); + key = hamt->ReHashKey(str, level); keypartbits = 0; } keypart = (key >> keypartbits) & 0x1F; diff --git a/libyasm/hamt.h b/libyasm/hamt.h index 865844ca..88204eda 100644 --- a/libyasm/hamt.h +++ b/libyasm/hamt.h @@ -41,10 +41,11 @@ typedef struct HAMTEntry HAMTEntry; /** Create new, empty, HAMT. error_func() is called when an internal error is * encountered--it should NOT return to the calling function. + * \param nocase nonzero if HAMT should be case-insensitive * \param error_func function called on internal error * \return New, empty, hash array mapped trie. */ -HAMT *HAMT_create(/*@exits@*/ void (*error_func) +HAMT *HAMT_create(int nocase, /*@exits@*/ void (*error_func) (const char *file, unsigned int line, const char *message)); /** Delete HAMT and all data associated with it. Uses deletefunc() to delete diff --git a/libyasm/linemap.c b/libyasm/linemap.c index 08ad385b..bf28cb49 100644 --- a/libyasm/linemap.c +++ b/libyasm/linemap.c @@ -151,7 +151,7 @@ yasm_linemap_create(void) size_t i; yasm_linemap *linemap = yasm_xmalloc(sizeof(yasm_linemap)); - linemap->filenames = HAMT_create(yasm_internal_error_); + linemap->filenames = HAMT_create(0, yasm_internal_error_); linemap->current = 1; diff --git a/libyasm/objfmt.h b/libyasm/objfmt.h index 9ada7d2c..ce610b06 100644 --- a/libyasm/objfmt.h +++ b/libyasm/objfmt.h @@ -74,6 +74,9 @@ struct yasm_objfmt_module { */ const char *default_dbgfmt_keyword; + /** NULL-terminated list of directives. NULL if none. */ + /*@null@*/ const yasm_directive *directives; + /** Create object format. * Module-level implementation of yasm_objfmt_create(). * Call yasm_objfmt_create() instead of calling this function. @@ -106,35 +109,6 @@ struct yasm_objfmt_module { (*section_switch)(yasm_object *object, yasm_valparamhead *valparams, /*@null@*/ yasm_valparamhead *objext_valparams, unsigned long line); - - /** Module-level implementation of yasm_objfmt_extern_declare(). - * Call yasm_objfmt_extern_declare() instead of calling this function. - */ - yasm_symrec * (*extern_declare) - (yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *objext_valparams, unsigned long line); - - /** Module-level implementation of yasm_objfmt_global_declare(). - * Call yasm_objfmt_global_declare() instead of calling this function. - */ - yasm_symrec * (*global_declare) - (yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *objext_valparams, unsigned long line); - - /** Module-level implementation of yasm_objfmt_common_declare(). - * Call yasm_objfmt_common_declare() instead of calling this function. - */ - yasm_symrec * (*common_declare) - (yasm_object *object, const char *name, /*@only@*/ yasm_expr *size, - /*@null@*/ yasm_valparamhead *objext_valparams, unsigned long line); - - /** Module-level implementation of yasm_objfmt_directive(). - * Call yasm_objfmt_directive() instead of calling this function. - */ - int (*directive) (yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *valparams, - /*@null@*/ yasm_valparamhead *objext_valparams, - unsigned long line); }; /** Create object format. @@ -182,58 +156,6 @@ yasm_section *yasm_objfmt_add_default_section(yasm_object *object); (yasm_object *object, yasm_valparamhead *valparams, /*@null@*/ yasm_valparamhead *objext_valparams, unsigned long line); -/** Declare an "extern" (importing from another module) symbol. Should - * call yasm_symtab_declare(). - * \param object object - * \param name symbol name - * \param objext_valparams object format-specific value/paramaters - * \param line virtual line (from yasm_linemap) - * \return Declared symbol. - */ -yasm_symrec *yasm_objfmt_extern_declare - (yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *objext_valparams, unsigned long line); - -/** Declare a "global" (exporting to other modules) symbol. Should call - * yasm_symtab_declare(). - * \param object object - * \param name symbol name - * \param objext_valparams object format-specific value/paramaters - * \param line virtual line (from yasm_linemap) - * \return Declared symbol. - */ -yasm_symrec *yasm_objfmt_global_declare - (yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *objext_valparams, unsigned long line); - -/** Declare a "common" (shared space with other modules) symbol. Should - * call yasm_symtab_declare(). - * declaration. - * \param object object - * \param name symbol name - * \param size common data size - * \param objext_valparams object format-specific value/paramaters - * \param line virtual line (from yasm_linemap) - * \return Declared symbol. - */ -yasm_symrec *yasm_objfmt_common_declare - (yasm_object *object, const char *name, /*@only@*/ yasm_expr *size, - /*@null@*/ yasm_valparamhead *objext_valparams, unsigned long line); - -/** Handle object format-specific directives. - * \param object object - * \param name directive name - * \param valparams value/parameters - * \param objext_valparams object format-specific value/parameters - * \param line virtual line (from yasm_linemap) - * \return Nonzero if directive was not recognized; 0 if directive was - * recognized, even if it wasn't valid. - */ -int yasm_objfmt_directive(yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *valparams, - /*@null@*/ yasm_valparamhead *objext_valparams, - unsigned long line); - #ifndef YASM_DOXYGEN /* Inline macro implementations for objfmt functions */ @@ -248,18 +170,6 @@ int yasm_objfmt_directive(yasm_object *object, const char *name, #define yasm_objfmt_section_switch(object, vpms, oe_vpms, line) \ ((yasm_objfmt_base *)((object)->objfmt))->module->section_switch \ (object, vpms, oe_vpms, line) -#define yasm_objfmt_extern_declare(object, name, oe_vpms, line) \ - ((yasm_objfmt_base *)((object)->objfmt))->module->extern_declare \ - (object, name, oe_vpms, line) -#define yasm_objfmt_global_declare(object, name, oe_vpms, line) \ - ((yasm_objfmt_base *)((object)->objfmt))->module->global_declare \ - (object, name, oe_vpms, line) -#define yasm_objfmt_common_declare(object, name, size, oe_vpms, line) \ - ((yasm_objfmt_base *)((object)->objfmt))->module->common_declare \ - (object, name, size, oe_vpms, line) -#define yasm_objfmt_directive(object, name, vpms, oe_vpms, line) \ - ((yasm_objfmt_base *)((object)->objfmt))->module->directive \ - (object, name, vpms, oe_vpms, line) #define yasm_objfmt_add_default_section(object) \ ((yasm_objfmt_base *)((object)->objfmt))->module->add_default_section \ (object) diff --git a/libyasm/section.c b/libyasm/section.c index 812218ac..02b6741d 100644 --- a/libyasm/section.c +++ b/libyasm/section.c @@ -32,6 +32,7 @@ #include "libyasm-stdint.h" #include "coretype.h" +#include "hamt.h" #include "valparam.h" #include "assocdat.h" @@ -101,6 +102,130 @@ struct yasm_section { static void yasm_section_destroy(/*@only@*/ yasm_section *sect); +/* Wrapper around directive for HAMT insertion */ +typedef struct yasm_directive_wrap { + const yasm_directive *directive; +} yasm_directive_wrap; + +/* + * Standard "builtin" object directives. + */ + +static void +dir_extern(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) +{ + yasm_valparam *vp = yasm_vps_first(valparams); + yasm_symrec *sym; + sym = yasm_symtab_declare(object->symtab, vp->val, YASM_SYM_EXTERN, line); + if (objext_valparams) { + yasm_valparamhead *vps = yasm_vps_create(); + *vps = *objext_valparams; /* structure copy */ + yasm_vps_initialize(objext_valparams); /* don't double-free */ + yasm_symrec_set_objext_valparams(sym, vps); + } +} + +static void +dir_global(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) +{ + yasm_valparam *vp = yasm_vps_first(valparams); + yasm_symrec *sym; + sym = yasm_symtab_declare(object->symtab, vp->val, YASM_SYM_GLOBAL, line); + if (objext_valparams) { + yasm_valparamhead *vps = yasm_vps_create(); + *vps = *objext_valparams; /* structure copy */ + yasm_vps_initialize(objext_valparams); /* don't double-free */ + yasm_symrec_set_objext_valparams(sym, vps); + } +} + +static void +dir_common(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) +{ + yasm_valparam *vp = yasm_vps_first(valparams); + yasm_valparam *vp2 = yasm_vps_next(vp); + yasm_expr *size = yasm_vp_expr(vp2, object->symtab, line); + yasm_symrec *sym; + + if (!size) { + yasm_error_set(YASM_ERROR_SYNTAX, + N_("no size specified in %s declaration"), "COMMON"); + return; + } + sym = yasm_symtab_declare(object->symtab, vp->val, YASM_SYM_COMMON, line); + yasm_symrec_set_common_size(sym, size); + if (objext_valparams) { + yasm_valparamhead *vps = yasm_vps_create(); + *vps = *objext_valparams; /* structure copy */ + yasm_vps_initialize(objext_valparams); /* don't double-free */ + yasm_symrec_set_objext_valparams(sym, vps); + } +} + +static void +dir_section(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) +{ + yasm_section *new_section = + yasm_objfmt_section_switch(object, valparams, objext_valparams, line); + if (new_section) + object->cur_section = new_section; + else + yasm_error_set(YASM_ERROR_SYNTAX, + N_("invalid argument to directive `%s'"), "SECTION"); +} + +static const yasm_directive object_directives[] = { + { ".extern", "gas", dir_extern, YASM_DIR_ID_REQUIRED }, + { ".global", "gas", dir_global, YASM_DIR_ID_REQUIRED }, + { ".globl", "gas", dir_global, YASM_DIR_ID_REQUIRED }, + { "extern", "nasm", dir_extern, YASM_DIR_ID_REQUIRED }, + { "global", "nasm", dir_global, YASM_DIR_ID_REQUIRED }, + { "common", "nasm", dir_common, YASM_DIR_ID_REQUIRED }, + { "section", "nasm", dir_section, YASM_DIR_ARG_REQUIRED }, + { "segment", "nasm", dir_section, YASM_DIR_ARG_REQUIRED }, + { NULL, NULL, NULL, 0 } +}; + +static void +directive_level2_delete(/*@only@*/ void *data) +{ + yasm_xfree(data); +} + +static void +directive_level1_delete(/*@only@*/ void *data) +{ + HAMT_destroy(data, directive_level2_delete); +} + +static void +directives_add(yasm_object *object, /*@null@*/ const yasm_directive *dir) +{ + if (!dir) + return; + + while (dir->name) { + HAMT *level2 = HAMT_search(object->directives, dir->parser); + int replace; + yasm_directive_wrap *wrap = yasm_xmalloc(sizeof(yasm_directive_wrap)); + + if (!level2) { + replace = 0; + level2 = HAMT_insert(object->directives, dir->parser, + HAMT_create(1, yasm_internal_error_), + &replace, directive_level1_delete); + } + replace = 0; + wrap->directive = dir; + HAMT_insert(level2, dir->name, wrap, &replace, + directive_level2_delete); + dir++; + } +} /*@-compdestroy@*/ yasm_object * @@ -121,6 +246,9 @@ yasm_object_create(const char *src_filename, const char *obj_filename, /* Initialize sections linked list */ STAILQ_INIT(&object->sections); + /* Create directives HAMT */ + object->directives = HAMT_create(1, yasm_internal_error_); + /* Initialize the target architecture */ object->arch = arch; @@ -167,6 +295,15 @@ yasm_object_create(const char *src_filename, const char *obj_filename, goto error; } + /* Add directives to HAMT. Note ordering here determines priority. */ + directives_add(object, + ((yasm_objfmt_base *)object->objfmt)->module->directives); + directives_add(object, + ((yasm_dbgfmt_base *)object->dbgfmt)->module->directives); + directives_add(object, + ((yasm_arch_base *)object->arch)->module->directives); + directives_add(object, object_directives); + return object; error: @@ -274,6 +411,28 @@ yasm_object_create_absolute(yasm_object *object, yasm_expr *start, } /*@=onlytrans@*/ +int +yasm_object_directive(yasm_object *object, const char *name, + const char *parser, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, + unsigned long line) +{ + HAMT *level2; + yasm_directive_wrap *wrap; + + level2 = HAMT_search(object->directives, parser); + if (!level2) + return 1; + + wrap = HAMT_search(level2, name); + if (!wrap) + return 1; + + yasm_call_directive(wrap->directive, object, valparams, objext_valparams, + line); + return 0; +} + void yasm_object_set_source_fn(yasm_object *object, const char *src_filename) { @@ -358,6 +517,9 @@ yasm_object_destroy(yasm_object *object) cur = next; } + /* Delete directives HAMT */ + HAMT_destroy(object->directives, directive_level1_delete); + /* Delete associated filenames */ yasm_xfree(object->src_filename); yasm_xfree(object->obj_filename); diff --git a/libyasm/section.h b/libyasm/section.h index 07db95ff..1b1b18f3 100644 --- a/libyasm/section.h +++ b/libyasm/section.h @@ -61,7 +61,13 @@ struct yasm_object { /*@dependent@*/ yasm_section *cur_section; #ifdef YASM_LIB_INTERNAL + /** Linked list of sections. */ /*@reldef@*/ STAILQ_HEAD(yasm_sectionhead, yasm_section) sections; + + /** Directives, organized as two level HAMT; first level is parser, + * second level is directive name. + */ + /*@owned@*/ struct HAMT *directives; #endif }; @@ -112,6 +118,21 @@ struct yasm_object { /*@dependent@*/ yasm_section *yasm_object_create_absolute (yasm_object *object, /*@keep@*/ yasm_expr *start, unsigned long line); +/** Handle a directive. Passed down to object format, debug format, or + * architecture as appropriate. + * \param object object + * \param name directive name + * \param parser parser keyword + * \param valparams value/parameters + * \param objext_valparams "object format-specific" value/parameters + * \param line virtual line (from yasm_linemap) + * \return 0 if directive recognized, nonzero if unrecognized. + */ +int yasm_object_directive(yasm_object *object, const char *name, + const char *parser, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, + unsigned long line); + /** Delete (free allocated memory for) an object. All sections in the * object and all bytecodes within those sections are also deleted. * \param object object diff --git a/libyasm/symrec.c b/libyasm/symrec.c index 1b8e7219..30b6c91f 100644 --- a/libyasm/symrec.c +++ b/libyasm/symrec.c @@ -34,6 +34,7 @@ #include "libyasm-stdint.h" #include "coretype.h" +#include "valparam.h" #include "hamt.h" #include "assocdat.h" @@ -64,7 +65,9 @@ struct yasm_symrec { sym_type type; yasm_sym_status status; yasm_sym_vis visibility; - unsigned long line; /* symbol was first declared or used on */ + unsigned long def_line; /* line where symbol was first defined */ + unsigned long decl_line; /* line where symbol was first declared */ + unsigned long use_line; /* line where symbol was first used */ union { yasm_expr *expn; /* equ value */ @@ -89,12 +92,48 @@ struct yasm_symtab { SLIST_HEAD(nontablesymhead_s, non_table_symrec_s) non_table_syms; }; +static void +objext_valparams_destroy(void *data) +{ + yasm_vps_destroy((yasm_valparamhead *)data); +} + +static void +objext_valparams_print(void *data, FILE *f, int indent_level) +{ + yasm_vps_print((yasm_valparamhead *)data, f); +} + +static yasm_assoc_data_callback objext_valparams_cb = { + objext_valparams_destroy, + objext_valparams_print +}; + +static void +common_size_destroy(void *data) +{ + yasm_expr **e = (yasm_expr **)data; + yasm_expr_destroy(*e); + yasm_xfree(data); +} + +static void +common_size_print(void *data, FILE *f, int indent_level) +{ + yasm_expr **e = (yasm_expr **)data; + yasm_expr_print(*e, f); +} + +static yasm_assoc_data_callback common_size_cb = { + common_size_destroy, + common_size_print +}; yasm_symtab * yasm_symtab_create(void) { yasm_symtab *symtab = yasm_xmalloc(sizeof(yasm_symtab)); - symtab->sym_table = HAMT_create(yasm_internal_error_); + symtab->sym_table = HAMT_create(0, yasm_internal_error_); SLIST_INIT(&symtab->non_table_syms); return symtab; } @@ -116,7 +155,9 @@ symrec_new_common(/*@keep@*/ char *name) yasm_symrec *rec = yasm_xmalloc(sizeof(yasm_symrec)); rec->name = name; rec->type = SYM_UNKNOWN; - rec->line = 0; + rec->def_line = 0; + rec->decl_line = 0; + rec->use_line = 0; rec->visibility = YASM_SYM_LOCAL; rec->assoc_data = NULL; return rec; @@ -190,7 +231,9 @@ yasm_symrec * yasm_symtab_abs_sym(yasm_symtab *symtab) { yasm_symrec *rec = symtab_get_or_new(symtab, "", 1); - rec->line = 0; + rec->def_line = 0; + rec->decl_line = 0; + rec->use_line = 0; rec->type = SYM_EQU; rec->value.expn = yasm_expr_create_ident(yasm_expr_int(yasm_intnum_create_uint(0)), 0); @@ -202,8 +245,8 @@ yasm_symrec * yasm_symtab_use(yasm_symtab *symtab, const char *name, unsigned long line) { yasm_symrec *rec = symtab_get_or_new(symtab, name, 1); - if (rec->line == 0) - rec->line = line; /* set line number of first use */ + if (rec->use_line == 0) + rec->use_line = line; /* set line number of first use */ rec->status |= YASM_SYM_USED; return rec; } @@ -222,15 +265,15 @@ symtab_define(yasm_symtab *symtab, const char *name, sym_type type, /* Has it been defined before (either by DEFINED or COMMON/EXTERN)? */ if (rec->status & YASM_SYM_DEFINED) { - yasm_error_set_xref(rec->line, N_("`%s' previously defined here"), - name); + yasm_error_set_xref(rec->def_line!=0 ? rec->def_line : rec->decl_line, + N_("`%s' previously defined here"), name); yasm_error_set(YASM_ERROR_GENERAL, N_("redefinition of `%s'"), name); } else { if (rec->visibility & YASM_SYM_EXTERN) yasm_warn_set(YASM_WARN_GENERAL, N_("`%s' both defined and declared extern"), name); - rec->line = line; /* set line number of definition */ + rec->def_line = line; /* set line number of definition */ rec->type = type; rec->status |= YASM_SYM_DEFINED; } @@ -313,18 +356,18 @@ yasm_symrec_declare(yasm_symrec *rec, yasm_sym_vis vis, unsigned long line) (!(rec->status & YASM_SYM_DEFINED) && (!(rec->visibility & (YASM_SYM_COMMON | YASM_SYM_EXTERN)) || ((rec->visibility & YASM_SYM_COMMON) && (vis == YASM_SYM_COMMON)) || - ((rec->visibility & YASM_SYM_EXTERN) && (vis == YASM_SYM_EXTERN))))) + ((rec->visibility & YASM_SYM_EXTERN) && (vis == YASM_SYM_EXTERN))))) { + rec->decl_line = line; rec->visibility |= vis; - else + } else yasm_error_set(YASM_ERROR_GENERAL, N_("duplicate definition of `%s'; first defined on line %lu"), - rec->name, rec->line); + rec->name, rec->def_line!=0 ? rec->def_line : rec->decl_line); } typedef struct symtab_finalize_info { unsigned long firstundef_line; int undef_extern; - /*@null@*/ yasm_object *object; yasm_errwarns *errwarns; } symtab_finalize_info; @@ -337,14 +380,14 @@ symtab_parser_finalize_checksym(yasm_symrec *sym, /*@null@*/ void *d) /* error if a symbol is used but never defined or extern/common declared */ if ((sym->status & YASM_SYM_USED) && !(sym->status & YASM_SYM_DEFINED) && !(sym->visibility & (YASM_SYM_EXTERN | YASM_SYM_COMMON))) { - if (info->undef_extern && info->object) - yasm_objfmt_extern_declare(info->object, sym->name, NULL, 1); + if (info->undef_extern) + sym->visibility |= YASM_SYM_EXTERN; else { yasm_error_set(YASM_ERROR_GENERAL, N_("undefined symbol `%s' (first use)"), sym->name); - yasm_errwarn_propagate(info->errwarns, sym->line); - if (sym->line < info->firstundef_line) - info->firstundef_line = sym->line; + yasm_errwarn_propagate(info->errwarns, sym->use_line); + if (sym->use_line < info->firstundef_line) + info->firstundef_line = sym->use_line; } } @@ -361,10 +404,10 @@ symtab_parser_finalize_checksym(yasm_symrec *sym, /*@null@*/ void *d) yasm_expr_create(YASM_EXPR_SUB, yasm_expr_precbc(sym->value.precbc), yasm_expr_precbc(yasm_section_bcs_first(sect)), - sym->line), + sym->def_line), YASM_EXPR_ADD, yasm_expr_copy(yasm_section_get_start(sect)), - sym->line); + sym->def_line); sym->status |= YASM_SYM_VALUED; } @@ -373,12 +416,11 @@ symtab_parser_finalize_checksym(yasm_symrec *sym, /*@null@*/ void *d) void yasm_symtab_parser_finalize(yasm_symtab *symtab, int undef_extern, - yasm_object *object, yasm_errwarns *errwarns) + yasm_errwarns *errwarns) { symtab_finalize_info info; info.firstundef_line = ULONG_MAX; info.undef_extern = undef_extern; - info.object = object; info.errwarns = errwarns; yasm_symtab_traverse(symtab, &info, symtab_parser_finalize_checksym); if (info.firstundef_line < ULONG_MAX) { @@ -448,9 +490,21 @@ yasm_symrec_get_status(const yasm_symrec *sym) } unsigned long -yasm_symrec_get_line(const yasm_symrec *sym) +yasm_symrec_get_def_line(const yasm_symrec *sym) { - return sym->line; + return sym->def_line; +} + +unsigned long +yasm_symrec_get_decl_line(const yasm_symrec *sym) +{ + return sym->decl_line; +} + +unsigned long +yasm_symrec_get_use_line(const yasm_symrec *sym) +{ + return sym->use_line; } const yasm_expr * @@ -477,7 +531,8 @@ yasm_symrec_get_label(const yasm_symrec *sym, int yasm_symrec_is_abs(const yasm_symrec *sym) { - return (sym->line == 0 && sym->type == SYM_EQU && sym->name[0] == '\0'); + return (sym->def_line == 0 && sym->type == SYM_EQU && + sym->name[0] == '\0'); } int @@ -492,6 +547,34 @@ yasm_symrec_is_curpos(const yasm_symrec *sym) return (sym->type == SYM_CURPOS); } +void +yasm_symrec_set_objext_valparams(yasm_symrec *sym, + /*@only@*/ yasm_valparamhead *objext_valparams) +{ + yasm_symrec_add_data(sym, &objext_valparams_cb, objext_valparams); +} + +yasm_valparamhead * +yasm_symrec_get_objext_valparams(yasm_symrec *sym) +{ + return yasm_symrec_get_data(sym, &objext_valparams_cb); +} + +void +yasm_symrec_set_common_size(yasm_symrec *sym, + /*@only@*/ yasm_expr *common_size) +{ + yasm_expr **ep = yasm_xmalloc(sizeof(yasm_expr *)); + *ep = common_size; + yasm_symrec_add_data(sym, &common_size_cb, ep); +} + +yasm_expr ** +yasm_symrec_get_common_size(yasm_symrec *sym) +{ + return (yasm_expr **)yasm_symrec_get_data(sym, &common_size_cb); +} + void * yasm_symrec_get_data(yasm_symrec *sym, const yasm_assoc_data_callback *callback) @@ -570,5 +653,9 @@ yasm_symrec_print(const yasm_symrec *sym, FILE *f, int indent_level) yasm__assoc_data_print(sym->assoc_data, f, indent_level+1); } - fprintf(f, "%*sLine Index=%lu\n", indent_level, "", sym->line); + fprintf(f, "%*sLine Index (Defined)=%lu\n", indent_level, "", + sym->def_line); + fprintf(f, "%*sLine Index (Declared)=%lu\n", indent_level, "", + sym->decl_line); + fprintf(f, "%*sLine Index (Used)=%lu\n", indent_level, "", sym->use_line); } diff --git a/libyasm/symrec.h b/libyasm/symrec.h index 6cf97559..624a3e98 100644 --- a/libyasm/symrec.h +++ b/libyasm/symrec.h @@ -46,6 +46,16 @@ typedef enum yasm_sym_status { YASM_SYM_NOTINTABLE = 1 << 3 /**< if it's not in sym_table (ex. '$') */ } yasm_sym_status; +/** Symbol record visibility. + * \note YASM_SYM_EXTERN and YASM_SYM_COMMON are mutually exclusive. + */ +typedef enum yasm_sym_vis { + YASM_SYM_LOCAL = 0, /**< Default, local only */ + YASM_SYM_GLOBAL = 1 << 0, /**< If symbol is declared GLOBAL */ + YASM_SYM_COMMON = 1 << 1, /**< If symbol is declared COMMON */ + YASM_SYM_EXTERN = 1 << 2, /**< If symbol is declared EXTERN */ + YASM_SYM_DLOCAL = 1 << 3 /**< If symbol is explicitly declared LOCAL */ +} yasm_sym_vis; /** Create a new symbol table. */ yasm_symtab *yasm_symtab_create(void); @@ -202,13 +212,10 @@ yasm_symrec *yasm_symtab_iter_value(const yasm_symtab_iter *cur); * used but never defined or declared #YASM_SYM_EXTERN or #YASM_SYM_COMMON. * \param symtab symbol table * \param undef_extern if nonzero, all undef syms should be declared extern - * \param object object to notify about new extern decls - * (may be NULL if undef_extern is 0) * \param errwarns error/warning set * \note Errors/warnings are stored into errwarns. */ void yasm_symtab_parser_finalize(yasm_symtab *symtab, int undef_extern, - /*@null@*/ yasm_object *object, yasm_errwarns *errwarns); /** Print the symbol table. For debugging purposes. @@ -236,11 +243,23 @@ yasm_sym_vis yasm_symrec_get_visibility(const yasm_symrec *sym); */ yasm_sym_status yasm_symrec_get_status(const yasm_symrec *sym); -/** Get the virtual line of a symbol (where it was first declared or used). +/** Get the virtual line of where a symbol was first defined. * \param sym symbol * \return line virtual line */ -unsigned long yasm_symrec_get_line(const yasm_symrec *sym); +unsigned long yasm_symrec_get_def_line(const yasm_symrec *sym); + +/** Get the virtual line of where a symbol was first declared. + * \param sym symbol + * \return line virtual line + */ +unsigned long yasm_symrec_get_decl_line(const yasm_symrec *sym); + +/** Get the virtual line of where a symbol was first used. + * \param sym symbol + * \return line virtual line + */ +unsigned long yasm_symrec_get_use_line(const yasm_symrec *sym); /** Get EQU value of a symbol. * \param sym symbol @@ -280,6 +299,36 @@ int yasm_symrec_is_special(const yasm_symrec *sym); */ int yasm_symrec_is_curpos(const yasm_symrec *sym); +/** Set object-extended valparams. + * \param sym symbol + * \param objext_valparams object-extended valparams + */ +void yasm_symrec_set_objext_valparams + (yasm_symrec *sym, /*@only@*/ yasm_valparamhead *objext_valparams); + +/** Get object-extended valparams, if any, associated with symbol's + * declaration. + * \param sym symbol + * \return Object-extended valparams (NULL if none). + */ +/*@null@*/ /*@dependent@*/ yasm_valparamhead *yasm_symrec_get_objext_valparams + (yasm_symrec *sym); + +/** Set common size of symbol. + * \param sym symbol + * \param common_size common size expression + */ +void yasm_symrec_set_common_size + (yasm_symrec *sym, /*@only@*/ yasm_expr *common_size); + +/** Get common size of symbol, if symbol is declared COMMON and a size was set + * for it. + * \param sym symbol + * \return Common size (NULL if none). + */ +/*@dependent@*/ /*@null@*/ yasm_expr **yasm_symrec_get_common_size + (yasm_symrec *sym); + /** Get associated data for a symbol and data callback. * \param sym symbol * \param callback callback used when adding data diff --git a/libyasm/valparam.c b/libyasm/valparam.c index 7513b148..ee3acd54 100644 --- a/libyasm/valparam.c +++ b/libyasm/valparam.c @@ -32,9 +32,37 @@ #include "coretype.h" #include "valparam.h" +#include "errwarn.h" #include "expr.h" +#include "symrec.h" +void +yasm_call_directive(const yasm_directive *directive, yasm_object *object, + yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) +{ + yasm_valparam *vp; + + if ((directive->flags & (YASM_DIR_ARG_REQUIRED|YASM_DIR_ID_REQUIRED)) && + (!valparams || !yasm_vps_first(valparams))) { + yasm_error_set(YASM_ERROR_SYNTAX, + N_("directive `%s' requires an argument"), + directive->name); + return; + } + if (valparams) { + vp = yasm_vps_first(valparams); + if ((directive->flags & YASM_DIR_ID_REQUIRED) && !vp->val) { + yasm_error_set(YASM_ERROR_SYNTAX, + N_("directive `%s' requires an identifier parameter"), + directive->name); + return; + } + } + directive->handler(object, valparams, objext_valparams, line); +} + yasm_valparam * yasm_vp_create(/*@keep@*/ char *v, /*@keep@*/ yasm_expr *p) { @@ -44,6 +72,22 @@ yasm_vp_create(/*@keep@*/ char *v, /*@keep@*/ yasm_expr *p) return r; } +/*@null@*/ /*@only@*/ yasm_expr * +yasm_vp_expr(yasm_valparam *vp, yasm_symtab *symtab, unsigned long line) +{ + if (!vp) + return NULL; + if (vp->val) { + return yasm_expr_create_ident(yasm_expr_sym( + yasm_symtab_use(symtab, vp->val, line)), line); + } else if (vp->param) { + yasm_expr *e = vp->param; + vp->param = NULL; /* to avoid double-free */ + return e; + } else + return NULL; +} + void yasm_vps_delete(yasm_valparamhead *headp) { diff --git a/libyasm/valparam.h b/libyasm/valparam.h index eef1989a..a288d052 100644 --- a/libyasm/valparam.h +++ b/libyasm/valparam.h @@ -46,6 +46,47 @@ struct yasm_valparam { /*@reldef@*/ STAILQ_HEAD(yasm_valparamhead, yasm_valparam); #endif +/** Directive list entry structure. */ +struct yasm_directive { + /** Directive name. GAS directives should include the ".", NASM + * directives should just be the raw name (not including the []). + * NULL entry required to terminate list of directives. + */ + /*@null@*/ const char *name; + + const char *parser; /**< Parser keyword */ + + /** Handler callback function for the directive. + * \param object object + * \param valparams value/parameters + * \param objext_valparams object format-specific value/parameters + * \param line virtual line (from yasm_linemap) + */ + void (*handler) (yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line); + + /* Flags for pre-handler parameter checking. */ + enum yasm_directive_flags { + YASM_DIR_ANY = 0, /**< Any valparams accepted */ + YASM_DIR_ARG_REQUIRED = 1, /**< Require at least 1 valparam */ + YASM_DIR_ID_REQUIRED = 2 /**< First valparam must be ID */ + } flags; +}; + +/** Call a directive. Performs any valparam checks asked for by the + * directive prior to call. Note that for a variety of reasons, a directive + * can generate an error. + * \param directive directive + * \param object object + * \param valparams value/parameters + * \param objext_valparams object format-specific value/parameters + * \param line virtual line (from yasm_linemap) + */ +void yasm_call_directive(const yasm_directive *directive, yasm_object *object, + yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, + unsigned long line); + /** Create a new valparam. * \param v value * \param p parameter @@ -53,6 +94,17 @@ struct yasm_valparam { */ yasm_valparam *yasm_vp_create(/*@keep@*/ char *v, /*@keep@*/ yasm_expr *p); +/** Get a valparam as an expr. If the valparam is a value, it's treated + * as a symbol (yasm_symtab_use() is called to convert it). The valparam + * is modified as necessary to avoid double-frees. + * \param vp valparam + * \param symtab symbol table + * \param line virtual line + * \return Expression, or NULL if vp is NULL or if val and param are both NULL. + */ +/*@null@*/ /*@only@*/ yasm_expr *yasm_vp_expr + (yasm_valparam *vp, yasm_symtab *symtab, unsigned long line); + /** Create a new linked list of valparams. * \return Newly allocated valparam list. */ diff --git a/modules/arch/x86/x86arch.c b/modules/arch/x86/x86arch.c index 645c0b98..387c7e5d 100644 --- a/modules/arch/x86/x86arch.c +++ b/modules/arch/x86/x86arch.c @@ -118,35 +118,72 @@ x86_set_var(yasm_arch *arch, const char *var, unsigned long val) return 0; } -static int -x86_parse_directive(yasm_arch *arch, const char *name, - /*@null@*/ yasm_valparamhead *valparams, - /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - /*@unused@*/ yasm_object *object, - /*@unused@*/ unsigned long line) +static void +x86_dir_cpu(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) { - yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch; + yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)object->arch; + + yasm_valparam *vp; + yasm_vps_foreach(vp, valparams) { + if (vp->val) + yasm_x86__parse_cpu(arch_x86, vp->val, strlen(vp->val)); + else if (vp->param) { + const yasm_intnum *intcpu; + intcpu = yasm_expr_get_intnum(&vp->param, 0); + if (!intcpu) + yasm_error_set(YASM_ERROR_SYNTAX, + N_("invalid argument to [%s]"), "CPU"); + else { + char strcpu[16]; + sprintf(strcpu, "%lu", yasm_intnum_get_uint(intcpu)); + yasm_x86__parse_cpu(arch_x86, strcpu, strlen(strcpu)); + } + } + } +} + +static void +x86_dir_bits(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) +{ + yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)object->arch; yasm_valparam *vp; const yasm_intnum *intn; long lval; - if (yasm__strcasecmp(name, "bits") == 0) { - if (!valparams) - yasm_error_set(YASM_ERROR_VALUE, N_("[%s] requires an argument"), - "BITS"); - else if ((vp = yasm_vps_first(valparams)) && !vp->val && - vp->param != NULL && - (intn = yasm_expr_get_intnum(&vp->param, 0)) != NULL && - (lval = yasm_intnum_get_int(intn)) && - (lval == 16 || lval == 32 || lval == 64)) - arch_x86->mode_bits = (unsigned char)lval; - else - yasm_error_set(YASM_ERROR_VALUE, N_("invalid argument to [%s]"), - "BITS"); - return 0; - } else - return 1; + if ((vp = yasm_vps_first(valparams)) && !vp->val && vp->param != NULL && + (intn = yasm_expr_get_intnum(&vp->param, 0)) != NULL && + (lval = yasm_intnum_get_int(intn)) && + (lval == 16 || lval == 32 || lval == 64)) + arch_x86->mode_bits = (unsigned char)lval; + else + yasm_error_set(YASM_ERROR_VALUE, N_("invalid argument to [%s]"), + "BITS"); +} + +static void +x86_dir_code16(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) +{ + yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)object->arch; + arch_x86->mode_bits = 16; +} + +static void +x86_dir_code32(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) +{ + yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)object->arch; + arch_x86->mode_bits = 32; +} + +static void +x86_dir_code64(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) +{ + yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)object->arch; + arch_x86->mode_bits = 64; } static const unsigned char ** @@ -438,25 +475,33 @@ x86_segreg_print(yasm_arch *arch, uintptr_t segreg, FILE *f) } /* Define x86 machines -- see arch.h for details */ -static yasm_arch_machine x86_machines[] = { +static const yasm_arch_machine x86_machines[] = { { "IA-32 and derivatives", "x86" }, { "AMD64", "amd64" }, { NULL, NULL } }; +static const yasm_directive x86_directives[] = { + { "cpu", "nasm", x86_dir_cpu, YASM_DIR_ARG_REQUIRED }, + { "bits", "nasm", x86_dir_bits, YASM_DIR_ARG_REQUIRED }, + { ".code16", "gas", x86_dir_code16, YASM_DIR_ANY }, + { ".code32", "gas", x86_dir_code32, YASM_DIR_ANY }, + { ".code64", "gas", x86_dir_code64, YASM_DIR_ANY }, + { NULL, NULL, NULL, 0 } +}; + /* Define arch structure -- see arch.h for details */ yasm_arch_module yasm_x86_LTX_arch = { "x86 (IA-32 and derivatives), AMD64", "x86", + x86_directives, x86_create, x86_destroy, x86_get_machine, x86_get_address_size, x86_set_var, - yasm_x86__parse_cpu, yasm_x86__parse_check_insnprefix, yasm_x86__parse_check_regtmod, - x86_parse_directive, x86_get_fill, yasm_x86__finalize_insn, yasm_x86__floatnum_tobytes, diff --git a/modules/arch/x86/x86arch.h b/modules/arch/x86/x86arch.h index 24b39bd6..95fe775e 100644 --- a/modules/arch/x86/x86arch.h +++ b/modules/arch/x86/x86arch.h @@ -259,7 +259,8 @@ int yasm_x86__expr_checkea (x86_effaddr *x86_ea, unsigned char *addrsize, unsigned int bits, int address16_op, unsigned char *rex, yasm_bytecode *bc); -void yasm_x86__parse_cpu(yasm_arch *arch, const char *cpuid, size_t cpuid_len); +void yasm_x86__parse_cpu(yasm_arch_x86 *arch_x86, const char *cpuid, + size_t cpuid_len); yasm_arch_insnprefix yasm_x86__parse_check_insnprefix (yasm_arch *arch, /*@out@*/ uintptr_t data[4], const char *id, diff --git a/modules/arch/x86/x86id.c b/modules/arch/x86/x86id.c index 93c48b45..977c5928 100644 --- a/modules/arch/x86/x86id.c +++ b/modules/arch/x86/x86id.c @@ -3295,9 +3295,9 @@ yasm_x86__parse_check_insnprefix(yasm_arch *arch, uintptr_t data[4], } void -yasm_x86__parse_cpu(yasm_arch *arch, const char *cpuid, size_t cpuid_len) +yasm_x86__parse_cpu(yasm_arch_x86 *arch_x86, const char *cpuid, + size_t cpuid_len) { - yasm_arch_x86 *arch_x86 = (yasm_arch_x86 *)arch; /*@null@*/ const cpu_parse_data *pdata; size_t i; static char lcaseid[16]; diff --git a/modules/dbgfmts/codeview/cv-dbgfmt.c b/modules/dbgfmts/codeview/cv-dbgfmt.c index 1b045fcf..6ec6407d 100644 --- a/modules/dbgfmts/codeview/cv-dbgfmt.c +++ b/modules/dbgfmts/codeview/cv-dbgfmt.c @@ -99,19 +99,12 @@ cv_dbgfmt_generate(yasm_object *object, yasm_linemap *linemap, yasm_cv__generate_type(object); } -static int -cv_dbgfmt_directive(yasm_object *object, const char *name, - yasm_valparamhead *valparams, unsigned long line) -{ - return 1; /* TODO */ -} - /* Define dbgfmt structure -- see dbgfmt.h for details */ yasm_dbgfmt_module yasm_cv8_LTX_dbgfmt = { "CodeView debugging format for VC8", "cv8", + NULL, /* no directives */ cv8_dbgfmt_create, cv_dbgfmt_destroy, - cv_dbgfmt_directive, cv_dbgfmt_generate }; diff --git a/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.c b/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.c index eb76fa30..e498f0d1 100644 --- a/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.c +++ b/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.c @@ -330,19 +330,20 @@ dwarf2_section_data_print(void *data, FILE *f, int indent_level) /* TODO */ } -static int -dwarf2_dbgfmt_directive(yasm_object *object, const char *name, - yasm_valparamhead *valparams, unsigned long line) -{ - return yasm_dwarf2__line_directive(object, name, valparams, line); -} +static const yasm_directive dwarf2_directives[] = { + { ".loc", "gas", yasm_dwarf2__dir_loc, YASM_DIR_ARG_REQUIRED }, + { ".file", "gas", yasm_dwarf2__dir_file, YASM_DIR_ARG_REQUIRED }, + { "loc", "nasm", yasm_dwarf2__dir_loc, YASM_DIR_ARG_REQUIRED }, + { "file", "nasm", yasm_dwarf2__dir_file, YASM_DIR_ARG_REQUIRED }, + { NULL, NULL, NULL, 0 } +}; /* Define dbgfmt structure -- see dbgfmt.h for details */ yasm_dbgfmt_module yasm_dwarf2_LTX_dbgfmt = { "DWARF2 debugging format", "dwarf2", + dwarf2_directives, dwarf2_dbgfmt_create, dwarf2_dbgfmt_destroy, - dwarf2_dbgfmt_directive, dwarf2_dbgfmt_generate }; diff --git a/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.h b/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.h index 1c361b0c..eeba0a19 100644 --- a/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.h +++ b/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.h @@ -107,9 +107,12 @@ yasm_section *yasm_dwarf2__generate_line (yasm_object *object, yasm_linemap *linemap, yasm_errwarns *errwarns, int asm_source, /*@out@*/ yasm_section **main_code, /*@out@*/ size_t *num_line_sections); -int yasm_dwarf2__line_directive - (yasm_object *object, const char *name, yasm_valparamhead *valparams, - unsigned long line); +void yasm_dwarf2__dir_loc(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, + unsigned long line); +void yasm_dwarf2__dir_file(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, + unsigned long line); /* Address range table functions */ yasm_section *yasm_dwarf2__generate_aranges(yasm_object *object, diff --git a/modules/dbgfmts/dwarf2/dwarf2-line.c b/modules/dbgfmts/dwarf2/dwarf2-line.c index c38fda4c..6b80ac31 100644 --- a/modules/dbgfmts/dwarf2/dwarf2-line.c +++ b/modules/dbgfmts/dwarf2/dwarf2-line.c @@ -826,188 +826,187 @@ dwarf2_line_op_bc_tobytes(yasm_bytecode *bc, unsigned char **bufp, void *d, return 0; } -int -yasm_dwarf2__line_directive(yasm_object *object, const char *name, - yasm_valparamhead *valparams, unsigned long line) +void +yasm_dwarf2__dir_loc(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) { - yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt; yasm_valparam *vp; - if (yasm__strcasecmp(name, "loc") == 0) { - /*@dependent@*/ /*@null@*/ const yasm_intnum *intn; - dwarf2_section_data *dsd; - dwarf2_loc *loc = yasm_xmalloc(sizeof(dwarf2_loc)); - /* File number (required) */ - if (!valparams || !(vp = yasm_vps_first(valparams)) || !vp->param) { - yasm_error_set(YASM_ERROR_SYNTAX, N_("file number required")); - yasm_xfree(loc); - return 0; - } + /*@dependent@*/ /*@null@*/ const yasm_intnum *intn; + dwarf2_section_data *dsd; + dwarf2_loc *loc = yasm_xmalloc(sizeof(dwarf2_loc)); + + /* File number (required) */ + if (!valparams || !(vp = yasm_vps_first(valparams)) || !vp->param) { + yasm_error_set(YASM_ERROR_SYNTAX, N_("file number required")); + yasm_xfree(loc); + return; + } + intn = yasm_expr_get_intnum(&vp->param, 0); + if (!intn) { + yasm_error_set(YASM_ERROR_NOT_CONSTANT, + N_("file number is not a constant")); + yasm_xfree(loc); + return; + } + if (yasm_intnum_sign(intn) != 1) { + yasm_error_set(YASM_ERROR_VALUE, N_("file number less than one")); + yasm_xfree(loc); + return; + } + loc->file = yasm_intnum_get_uint(intn); + + /* Line number (required) */ + vp = yasm_vps_next(vp); + if (!vp || !vp->param) { + yasm_error_set(YASM_ERROR_SYNTAX, N_("line number required")); + yasm_xfree(loc); + return; + } + intn = yasm_expr_get_intnum(&vp->param, 0); + if (!intn) { + yasm_error_set(YASM_ERROR_NOT_CONSTANT, + N_("file number is not a constant")); + yasm_xfree(loc); + return; + } + loc->line = yasm_intnum_get_uint(intn); + + /* Generate new section data if it doesn't already exist */ + dsd = yasm_section_get_data(object->cur_section, + &yasm_dwarf2__section_data_cb); + if (!dsd) { + dsd = yasm_xmalloc(sizeof(dwarf2_section_data)); + STAILQ_INIT(&dsd->locs); + yasm_section_add_data(object->cur_section, + &yasm_dwarf2__section_data_cb, dsd); + } + + /* Defaults for optional settings */ + loc->column = 0; + loc->isa_change = 0; + loc->isa = 0; + loc->is_stmt = IS_STMT_NOCHANGE; + loc->basic_block = 0; + loc->prologue_end = 0; + loc->epilogue_begin = 0; + + /* Optional column number */ + vp = yasm_vps_next(vp); + if (vp && vp->param) { intn = yasm_expr_get_intnum(&vp->param, 0); if (!intn) { yasm_error_set(YASM_ERROR_NOT_CONSTANT, - N_("file number is not a constant")); + N_("column number is not a constant")); yasm_xfree(loc); - return 0; + return; } - if (yasm_intnum_sign(intn) != 1) { - yasm_error_set(YASM_ERROR_VALUE, - N_("file number less than one")); - yasm_xfree(loc); - return 0; - } - loc->file = yasm_intnum_get_uint(intn); - - /* Line number (required) */ + loc->column = yasm_intnum_get_uint(intn); vp = yasm_vps_next(vp); - if (!vp || !vp->param) { - yasm_error_set(YASM_ERROR_SYNTAX, N_("line number required")); - yasm_xfree(loc); - return 0; - } - intn = yasm_expr_get_intnum(&vp->param, 0); - if (!intn) { - yasm_error_set(YASM_ERROR_NOT_CONSTANT, - N_("file number is not a constant")); - yasm_xfree(loc); - return 0; - } - loc->line = yasm_intnum_get_uint(intn); + } - /* Generate new section data if it doesn't already exist */ - dsd = yasm_section_get_data(object->cur_section, - &yasm_dwarf2__section_data_cb); - if (!dsd) { - dsd = yasm_xmalloc(sizeof(dwarf2_section_data)); - STAILQ_INIT(&dsd->locs); - yasm_section_add_data(object->cur_section, - &yasm_dwarf2__section_data_cb, dsd); - } - - /* Defaults for optional settings */ - loc->column = 0; - loc->isa_change = 0; - loc->isa = 0; - loc->is_stmt = IS_STMT_NOCHANGE; - loc->basic_block = 0; - loc->prologue_end = 0; - loc->epilogue_begin = 0; - - /* Optional column number */ - vp = yasm_vps_next(vp); - if (vp && vp->param) { + /* Other options */ + while (vp && vp->val) { + if (yasm__strcasecmp(vp->val, "basic_block") == 0) + loc->basic_block = 1; + else if (yasm__strcasecmp(vp->val, "prologue_end") == 0) + loc->prologue_end = 1; + else if (yasm__strcasecmp(vp->val, "epilogue_begin") == 0) + loc->epilogue_begin = 1; + else if (yasm__strcasecmp(vp->val, "is_stmt") == 0) { + if (!vp->param) { + yasm_error_set(YASM_ERROR_SYNTAX, + N_("is_stmt requires value")); + yasm_xfree(loc); + return; + } intn = yasm_expr_get_intnum(&vp->param, 0); if (!intn) { yasm_error_set(YASM_ERROR_NOT_CONSTANT, - N_("column number is not a constant")); + N_("is_stmt value is not a constant")); yasm_xfree(loc); - return 0; + return; } - loc->column = yasm_intnum_get_uint(intn); - vp = yasm_vps_next(vp); - } - - /* Other options */ - while (vp && vp->val) { - if (yasm__strcasecmp(vp->val, "basic_block") == 0) - loc->basic_block = 1; - else if (yasm__strcasecmp(vp->val, "prologue_end") == 0) - loc->prologue_end = 1; - else if (yasm__strcasecmp(vp->val, "epilogue_begin") == 0) - loc->epilogue_begin = 1; - else if (yasm__strcasecmp(vp->val, "is_stmt") == 0) { - if (!vp->param) { - yasm_error_set(YASM_ERROR_SYNTAX, - N_("is_stmt requires value")); - yasm_xfree(loc); - return 0; - } - intn = yasm_expr_get_intnum(&vp->param, 0); - if (!intn) { - yasm_error_set(YASM_ERROR_NOT_CONSTANT, - N_("is_stmt value is not a constant")); - yasm_xfree(loc); - return 0; - } - if (yasm_intnum_is_zero(intn)) - loc->is_stmt = IS_STMT_SET; - else if (yasm_intnum_is_pos1(intn)) - loc->is_stmt = IS_STMT_CLEAR; - else { - yasm_error_set(YASM_ERROR_VALUE, - N_("is_stmt value not 0 or 1")); - yasm_xfree(loc); - return 0; - } - } else if (yasm__strcasecmp(vp->val, "isa") == 0) { - if (!vp->param) { - yasm_error_set(YASM_ERROR_SYNTAX, N_("isa requires value")); - yasm_xfree(loc); - return 0; - } - intn = yasm_expr_get_intnum(&vp->param, 0); - if (!intn) { - yasm_error_set(YASM_ERROR_NOT_CONSTANT, - N_("isa value is not a constant")); - yasm_xfree(loc); - return 0; - } - if (yasm_intnum_sign(intn) < 0) { - yasm_error_set(YASM_ERROR_VALUE, - N_("isa value less than zero")); - yasm_xfree(loc); - return 0; - } - loc->isa_change = 1; - loc->isa = yasm_intnum_get_uint(intn); - } else - yasm_warn_set(YASM_WARN_GENERAL, - N_("unrecognized loc option `%s'"), vp->val); - } - - /* Append new location */ - loc->vline = line; - loc->bc = NULL; - loc->sym = NULL; - STAILQ_INSERT_TAIL(&dsd->locs, loc, link); - - return 0; - } else if (yasm__strcasecmp(name, "file") == 0) { - /*@dependent@*/ /*@null@*/ const yasm_intnum *file_intn; - unsigned long filenum; - - if (!valparams) { - yasm_error_set(YASM_ERROR_SYNTAX, N_("[%s] requires an argument"), - "FILE"); - return 0; - } - - vp = yasm_vps_first(valparams); - if (vp->val) { - /* Just a bare filename */ - yasm_object_set_source_fn(object, vp->val); - return 0; - } - - /* Otherwise.. first vp is the file number */ - file_intn = yasm_expr_get_intnum(&vp->param, 0); - if (!file_intn) { - yasm_error_set(YASM_ERROR_NOT_CONSTANT, - N_("file number is not a constant")); - return 0; - } - filenum = yasm_intnum_get_uint(file_intn); - - vp = yasm_vps_next(vp); - if (!vp || !vp->val) { - yasm_error_set(YASM_ERROR_SYNTAX, - N_("file number given but no filename")); - return 0; - } - - dwarf2_dbgfmt_add_file(dbgfmt_dwarf2, filenum, vp->val); - return 0; + if (yasm_intnum_is_zero(intn)) + loc->is_stmt = IS_STMT_SET; + else if (yasm_intnum_is_pos1(intn)) + loc->is_stmt = IS_STMT_CLEAR; + else { + yasm_error_set(YASM_ERROR_VALUE, + N_("is_stmt value not 0 or 1")); + yasm_xfree(loc); + return; + } + } else if (yasm__strcasecmp(vp->val, "isa") == 0) { + if (!vp->param) { + yasm_error_set(YASM_ERROR_SYNTAX, N_("isa requires value")); + yasm_xfree(loc); + return; + } + intn = yasm_expr_get_intnum(&vp->param, 0); + if (!intn) { + yasm_error_set(YASM_ERROR_NOT_CONSTANT, + N_("isa value is not a constant")); + yasm_xfree(loc); + return; + } + if (yasm_intnum_sign(intn) < 0) { + yasm_error_set(YASM_ERROR_VALUE, + N_("isa value less than zero")); + yasm_xfree(loc); + return; + } + loc->isa_change = 1; + loc->isa = yasm_intnum_get_uint(intn); + } else + yasm_warn_set(YASM_WARN_GENERAL, + N_("unrecognized loc option `%s'"), vp->val); } - return 1; + + /* Append new location */ + loc->vline = line; + loc->bc = NULL; + loc->sym = NULL; + STAILQ_INSERT_TAIL(&dsd->locs, loc, link); } +void +yasm_dwarf2__dir_file(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) +{ + yasm_dbgfmt_dwarf2 *dbgfmt_dwarf2 = (yasm_dbgfmt_dwarf2 *)object->dbgfmt; + yasm_valparam *vp; + /*@dependent@*/ /*@null@*/ const yasm_intnum *file_intn; + unsigned long filenum; + + if (!valparams) { + yasm_error_set(YASM_ERROR_SYNTAX, N_("[%s] requires an argument"), + "FILE"); + return; + } + + vp = yasm_vps_first(valparams); + if (vp->val) { + /* Just a bare filename */ + yasm_object_set_source_fn(object, vp->val); + return; + } + + /* Otherwise.. first vp is the file number */ + file_intn = yasm_expr_get_intnum(&vp->param, 0); + if (!file_intn) { + yasm_error_set(YASM_ERROR_NOT_CONSTANT, + N_("file number is not a constant")); + return; + } + filenum = yasm_intnum_get_uint(file_intn); + + vp = yasm_vps_next(vp); + if (!vp || !vp->val) { + yasm_error_set(YASM_ERROR_SYNTAX, + N_("file number given but no filename")); + return; + } + + dwarf2_dbgfmt_add_file(dbgfmt_dwarf2, filenum, vp->val); +} diff --git a/modules/dbgfmts/dwarf2/tests/pass32/dwarf32_testhd.hex b/modules/dbgfmts/dwarf2/tests/pass32/dwarf32_testhd.hex index c145c87f..e73e882a 100644 --- a/modules/dbgfmts/dwarf2/tests/pass32/dwarf32_testhd.hex +++ b/modules/dbgfmts/dwarf2/tests/pass32/dwarf32_testhd.hex @@ -3038,70 +3038,6 @@ e3 69 6e 00 -5f -5f -73 -74 -64 -65 -72 -72 -70 -00 -66 -70 -72 -69 -6e -74 -66 -00 -66 -6f -70 -65 -6e -00 -70 -72 -69 -6e -74 -66 -00 -66 -67 -65 -74 -63 -00 -5f -5f -69 -73 -74 -68 -72 -65 -61 -64 -65 -64 -00 -66 -65 -72 -72 -6f -72 -00 -66 -63 -6c -6f -73 -65 -00 2e 4c 64 @@ -3217,6 +3153,16 @@ e3 4c 32 00 +5f +5f +73 +74 +64 +65 +72 +72 +70 +00 2e 4c 43 @@ -3224,10 +3170,24 @@ e3 49 34 00 +66 +70 +72 +69 +6e +74 +66 +00 2e 4c 31 00 +66 +6f +70 +65 +6e +00 2e 4c 34 @@ -3236,6 +3196,32 @@ e3 4c 36 00 +70 +72 +69 +6e +74 +66 +00 +66 +67 +65 +74 +63 +00 +5f +5f +69 +73 +74 +68 +72 +65 +61 +64 +65 +64 +00 2e 4c 38 @@ -3248,6 +3234,20 @@ e3 4c 37 00 +66 +65 +72 +72 +6f +72 +00 +66 +63 +6c +6f +73 +65 +00 2e 4c 46 @@ -4554,7 +4554,7 @@ e3 00 04 00 -de +d0 00 00 00 @@ -4570,7 +4570,7 @@ cc 00 04 00 -da +cc 00 00 00 @@ -4586,7 +4586,7 @@ af 00 04 00 -d6 +c8 00 00 00 @@ -4602,7 +4602,7 @@ d6 00 04 00 -d2 +aa 00 00 00 @@ -4618,7 +4618,7 @@ d2 00 04 00 -ce +a6 00 00 00 @@ -4634,7 +4634,7 @@ ce 00 04 00 -ca +9c 00 00 00 @@ -4650,7 +4650,7 @@ dc 00 04 00 -c3 +8d 00 00 00 @@ -4666,7 +4666,7 @@ c3 00 04 00 -bf +7f 00 00 00 @@ -4682,7 +4682,7 @@ bf 00 04 00 -b8 +78 00 00 00 @@ -4698,7 +4698,7 @@ b8 00 04 00 -b1 +71 00 00 00 @@ -4714,7 +4714,7 @@ b1 00 04 00 -aa +6a 00 00 00 @@ -4730,7 +4730,7 @@ aa 00 04 00 -a3 +63 00 00 00 @@ -4746,7 +4746,7 @@ a3 00 04 00 -9d +5d 00 00 00 @@ -4762,7 +4762,7 @@ a3 00 04 00 -98 +58 00 00 00 @@ -4778,7 +4778,7 @@ a3 00 0b 00 -93 +53 00 00 00 @@ -4794,7 +4794,7 @@ a3 00 0b 00 -8e +4e 00 00 00 @@ -4810,7 +4810,7 @@ a3 00 0b 00 -89 +49 00 00 00 @@ -4826,7 +4826,7 @@ a3 00 0b 00 -84 +44 00 00 00 @@ -4858,7 +4858,7 @@ a3 00 0b 00 -7c +3c 00 00 00 @@ -4874,7 +4874,7 @@ a3 00 04 00 -6e +2e 00 00 00 @@ -4906,7 +4906,7 @@ a3 00 09 00 -60 +20 00 00 00 @@ -4938,7 +4938,7 @@ a3 00 07 00 -50 +10 00 00 00 @@ -5002,7 +5002,7 @@ e3 00 04 00 -10 +83 00 00 00 @@ -5018,7 +5018,7 @@ e3 00 00 00 -1a +94 00 00 00 @@ -5034,7 +5034,7 @@ e3 00 00 00 -22 +a0 00 00 00 @@ -5050,7 +5050,7 @@ e3 00 00 00 -28 +ae 00 00 00 @@ -5066,7 +5066,7 @@ e3 00 00 00 -2f +b5 00 00 00 @@ -5082,7 +5082,7 @@ e3 00 00 00 -35 +bb 00 00 00 @@ -5098,7 +5098,7 @@ e3 00 00 00 -42 +d4 00 00 00 @@ -5114,7 +5114,7 @@ e3 00 00 00 -49 +db 00 00 00 diff --git a/modules/dbgfmts/dwarf2/tests/pass64/dwarf64_leb128.hex b/modules/dbgfmts/dwarf2/tests/pass64/dwarf64_leb128.hex index 178ae19f..af09833c 100644 --- a/modules/dbgfmts/dwarf2/tests/pass64/dwarf64_leb128.hex +++ b/modules/dbgfmts/dwarf2/tests/pass64/dwarf64_leb128.hex @@ -6246,7 +6246,7 @@ ff 00 00 00 -b6 +9e 04 00 00 @@ -6294,7 +6294,7 @@ ff 00 00 00 -b6 +9e 04 00 00 @@ -6342,7 +6342,7 @@ ff 00 00 00 -b6 +9e 04 00 00 @@ -6390,7 +6390,7 @@ ff 00 00 00 -b6 +9e 04 00 00 @@ -6438,7 +6438,7 @@ ff 00 00 00 -b6 +9e 04 00 00 @@ -6486,7 +6486,7 @@ ff 00 00 00 -b7 +9f 04 00 00 @@ -6558,7 +6558,7 @@ ff 00 00 00 -b8 +a1 04 00 00 @@ -6606,7 +6606,7 @@ ff 00 00 00 -b9 +a2 04 00 00 @@ -6654,7 +6654,7 @@ a4 00 00 00 -b9 +a2 04 00 00 @@ -6702,7 +6702,7 @@ b0 00 00 00 -b9 +a2 04 00 00 @@ -6750,7 +6750,7 @@ bc 00 00 00 -b9 +a2 04 00 00 @@ -6798,7 +6798,7 @@ cc 00 00 00 -b9 +a2 04 00 00 @@ -6822,7 +6822,7 @@ f0 00 00 00 -ba +a4 04 00 00 @@ -6894,7 +6894,7 @@ ff 00 00 00 -bb +a5 04 00 00 @@ -6942,7 +6942,7 @@ ff 00 00 00 -bc +a6 04 00 00 @@ -6990,7 +6990,7 @@ ff 00 00 00 -bd +a7 04 00 00 @@ -7038,7 +7038,7 @@ ff 00 00 00 -be +a8 04 00 00 @@ -7086,7 +7086,7 @@ ff 00 00 00 -bf +a9 04 00 00 @@ -7110,7 +7110,7 @@ d0 00 00 00 -ba +a4 04 00 00 @@ -7134,7 +7134,7 @@ db 00 00 00 -c0 +ab 04 00 00 @@ -7182,7 +7182,7 @@ f5 00 00 00 -c1 +ac 04 00 00 @@ -7230,7 +7230,7 @@ ff 00 00 00 -bc +a6 04 00 00 @@ -7278,7 +7278,7 @@ ff 00 00 00 -bd +a7 04 00 00 @@ -7326,7 +7326,7 @@ ff 00 00 00 -be +a8 04 00 00 @@ -7374,7 +7374,7 @@ ff 00 00 00 -bf +a9 04 00 00 @@ -7398,7 +7398,7 @@ b0 00 00 00 -ba +a4 04 00 00 @@ -7422,7 +7422,7 @@ bb 00 00 00 -c0 +ab 04 00 00 @@ -7470,7 +7470,7 @@ d9 00 00 00 -c2 +ae 04 00 00 @@ -7518,7 +7518,7 @@ e5 00 00 00 -bc +a6 04 00 00 @@ -7566,7 +7566,7 @@ ff 00 00 00 -bd +a7 04 00 00 @@ -7614,7 +7614,7 @@ ff 00 00 00 -be +a8 04 00 00 @@ -7662,7 +7662,7 @@ ff 00 00 00 -bf +a9 04 00 00 @@ -7686,7 +7686,7 @@ ff 00 00 00 -ba +a4 04 00 00 @@ -7710,7 +7710,7 @@ ff 00 00 00 -c0 +ab 04 00 00 @@ -7758,7 +7758,7 @@ b9 00 00 00 -c3 +b0 04 00 00 @@ -7806,7 +7806,7 @@ c5 00 00 00 -bc +a6 04 00 00 @@ -7854,7 +7854,7 @@ e5 00 00 00 -bd +a7 04 00 00 @@ -7902,7 +7902,7 @@ ff 00 00 00 -be +a8 04 00 00 @@ -7950,7 +7950,7 @@ ff 00 00 00 -bf +a9 04 00 00 @@ -7974,7 +7974,7 @@ ff 00 00 00 -ba +a4 04 00 00 @@ -7998,7 +7998,7 @@ ff 00 00 00 -c0 +ab 04 00 00 @@ -8070,7 +8070,7 @@ ff 00 00 00 -be +a8 04 00 00 @@ -8118,7 +8118,7 @@ ff 00 00 00 -c4 +b2 04 00 00 @@ -8166,7 +8166,7 @@ ff 00 00 00 -bf +a9 04 00 00 @@ -8214,7 +8214,7 @@ ff 00 00 00 -c5 +b3 04 00 00 @@ -8262,7 +8262,7 @@ ff 00 00 00 -c6 +b4 04 00 00 @@ -8310,7 +8310,7 @@ ac 00 00 00 -be +a8 04 00 00 @@ -8334,7 +8334,7 @@ eb 00 00 00 -ba +a4 04 00 00 @@ -8382,7 +8382,7 @@ ff 00 00 00 -c4 +b2 04 00 00 @@ -8430,7 +8430,7 @@ ff 00 00 00 -c6 +b4 04 00 00 @@ -8478,7 +8478,7 @@ ff 00 00 00 -c7 +b7 04 00 00 @@ -8502,7 +8502,7 @@ ff 00 00 00 -ba +a4 04 00 00 @@ -8550,7 +8550,7 @@ ff 00 00 00 -be +a8 04 00 00 @@ -8574,7 +8574,7 @@ ff 00 00 00 -ba +a4 04 00 00 @@ -8598,7 +8598,7 @@ f5 00 00 00 -be +a8 04 00 00 @@ -8622,7 +8622,7 @@ ff 00 00 00 -c8 +ba 04 00 00 @@ -8646,7 +8646,7 @@ ff 00 00 00 -b9 +a2 04 00 00 @@ -8670,7 +8670,7 @@ ff 00 00 00 -c8 +ba 04 00 00 @@ -8718,7 +8718,7 @@ ff 00 00 00 -c4 +b2 04 00 00 @@ -8742,7 +8742,7 @@ ac 00 00 00 -c6 +b4 04 00 00 @@ -8790,7 +8790,7 @@ cd 00 00 00 -c4 +b2 04 00 00 @@ -8814,7 +8814,7 @@ df 00 00 00 -c6 +b4 04 00 00 @@ -8910,7 +8910,7 @@ ff 00 00 00 -c9 +bc 04 00 00 @@ -8958,7 +8958,7 @@ ff 00 00 00 -bc +a6 04 00 00 @@ -9006,7 +9006,7 @@ ff 00 00 00 -bd +a7 04 00 00 @@ -9054,7 +9054,7 @@ ff 00 00 00 -be +a8 04 00 00 @@ -9126,7 +9126,7 @@ c6 00 00 00 -c9 +bc 04 00 00 @@ -9174,7 +9174,7 @@ db 00 00 00 -ca +bd 04 00 00 @@ -9198,7 +9198,7 @@ e8 00 00 00 -b9 +a2 04 00 00 @@ -9270,7 +9270,7 @@ ff 00 00 00 -cb +be 04 00 00 @@ -9342,7 +9342,7 @@ ff 00 00 00 -cb +be 04 00 00 @@ -9390,7 +9390,7 @@ ff 00 00 00 -c4 +b2 04 00 00 @@ -9414,7 +9414,7 @@ ff 00 00 00 -cc +bf 04 00 00 @@ -9462,7 +9462,7 @@ ff 00 00 00 -cd +c0 04 00 00 @@ -9510,7 +9510,7 @@ ff 00 00 00 -c4 +b2 04 00 00 @@ -9534,7 +9534,7 @@ ff 00 00 00 -ce +c1 04 00 00 @@ -9582,7 +9582,7 @@ ff 00 00 00 -cd +c0 04 00 00 @@ -9630,7 +9630,7 @@ ff 00 00 00 -c4 +b2 04 00 00 @@ -9654,7 +9654,7 @@ ff 00 00 00 -ce +c1 04 00 00 @@ -9702,7 +9702,7 @@ b0 00 00 00 -cd +c0 04 00 00 @@ -9750,7 +9750,7 @@ c1 00 00 00 -c4 +b2 04 00 00 @@ -9774,7 +9774,7 @@ cc 00 00 00 -cf +c2 04 00 00 @@ -9846,7 +9846,7 @@ e7 00 00 00 -d0 +c3 04 00 00 @@ -9918,7 +9918,7 @@ f6 00 00 00 -d0 +c3 04 00 00 @@ -9966,7 +9966,7 @@ ff 00 00 00 -c7 +b7 04 00 00 @@ -10014,7 +10014,7 @@ ff 00 00 00 -ca +bd 04 00 00 @@ -10062,7 +10062,7 @@ ff 00 00 00 -c4 +b2 04 00 00 @@ -10086,7 +10086,7 @@ ff 00 00 00 -cc +bf 04 00 00 @@ -10134,7 +10134,7 @@ ff 00 00 00 -d1 +c4 04 00 00 @@ -10182,7 +10182,7 @@ ff 00 00 00 -d2 +c5 04 00 00 @@ -10230,7 +10230,7 @@ a3 00 00 00 -d3 +c6 04 00 00 @@ -10278,7 +10278,7 @@ ba 00 00 00 -d4 +c7 04 00 00 @@ -10326,7 +10326,7 @@ d1 00 00 00 -d5 +c8 04 00 00 @@ -10374,7 +10374,7 @@ e8 00 00 00 -d6 +c9 04 00 00 @@ -10422,7 +10422,7 @@ ff 00 00 00 -d4 +c7 04 00 00 @@ -10470,7 +10470,7 @@ ff 00 00 00 -d7 +ca 04 00 00 @@ -10518,7 +10518,7 @@ ff 00 00 00 -ca +bd 04 00 00 @@ -10566,7 +10566,7 @@ ff 00 00 00 -c5 +b3 04 00 00 @@ -10614,7 +10614,7 @@ ff 00 00 00 -ca +bd 04 00 00 @@ -10662,7 +10662,7 @@ ff 00 00 00 -d8 +cb 04 00 00 @@ -10710,7 +10710,7 @@ ff 00 00 00 -c4 +b2 04 00 00 @@ -10734,7 +10734,7 @@ ff 00 00 00 -cc +bf 04 00 00 @@ -10782,7 +10782,7 @@ a5 00 00 00 -c4 +b2 04 00 00 @@ -10806,7 +10806,7 @@ b0 00 00 00 -ce +c1 04 00 00 @@ -10854,7 +10854,7 @@ c4 00 00 00 -cd +c0 04 00 00 @@ -10902,7 +10902,7 @@ d5 00 00 00 -c4 +b2 04 00 00 @@ -10926,7 +10926,7 @@ e0 00 00 00 -ce +c1 04 00 00 @@ -10974,7 +10974,7 @@ f3 00 00 00 -cd +c0 04 00 00 @@ -11022,7 +11022,7 @@ ff 00 00 00 -c4 +b2 04 00 00 @@ -11046,7 +11046,7 @@ ff 00 00 00 -cf +c2 04 00 00 @@ -11094,7 +11094,7 @@ ff 00 00 00 -cd +c0 04 00 00 @@ -11166,7 +11166,7 @@ ff 00 00 00 -d0 +c3 04 00 00 @@ -11214,7 +11214,7 @@ ff 00 00 00 -d7 +ca 04 00 00 @@ -11238,7 +11238,7 @@ ff 00 00 00 -cc +bf 04 00 00 @@ -11262,7 +11262,7 @@ ff 00 00 00 -cc +bf 04 00 00 @@ -11310,7 +11310,7 @@ ff 00 00 00 -c4 +b2 04 00 00 @@ -11334,7 +11334,7 @@ c7 00 00 00 -b9 +a2 04 00 00 @@ -11358,7 +11358,7 @@ ff 00 00 00 -d9 +d0 04 00 00 @@ -11382,7 +11382,7 @@ ff 00 00 00 -da +d2 04 00 00 @@ -11454,7 +11454,7 @@ ff 00 00 00 -c9 +bc 04 00 00 @@ -11478,7 +11478,7 @@ b7 00 00 00 -bd +a7 04 00 00 @@ -11550,7 +11550,7 @@ e0 00 00 00 -c9 +bc 04 00 00 @@ -11574,7 +11574,7 @@ ff 00 00 00 -db +d5 04 00 00 @@ -11622,7 +11622,7 @@ ff 00 00 00 -c7 +b7 04 00 00 @@ -11670,7 +11670,7 @@ ff 00 00 00 -bc +a6 04 00 00 @@ -11718,7 +11718,7 @@ ff 00 00 00 -bd +a7 04 00 00 @@ -11766,7 +11766,7 @@ a3 00 00 00 -c4 +b2 04 00 00 @@ -11790,7 +11790,7 @@ b5 00 00 00 -c6 +b4 04 00 00 @@ -11814,7 +11814,7 @@ d2 00 00 00 -db +d5 04 00 00 @@ -11838,7 +11838,7 @@ ea 00 00 00 -bc +a6 04 00 00 @@ -11862,7 +11862,7 @@ ff 00 00 00 -db +d5 04 00 00 @@ -11886,7 +11886,7 @@ ff 00 00 00 -dc +d7 04 00 00 @@ -11934,7 +11934,7 @@ ff 00 00 00 -c7 +b7 04 00 00 @@ -11982,7 +11982,7 @@ ff 00 00 00 -dd +d8 04 00 00 @@ -12030,7 +12030,7 @@ ff 00 00 00 -bc +a6 04 00 00 @@ -12078,7 +12078,7 @@ ff 00 00 00 -ca +bd 04 00 00 @@ -12174,7 +12174,7 @@ a6 00 00 00 -c9 +bc 04 00 00 @@ -12222,7 +12222,7 @@ ff 00 00 00 -c4 +b2 04 00 00 @@ -12246,7 +12246,7 @@ ff 00 00 00 -c6 +b4 04 00 00 @@ -12270,7 +12270,7 @@ ff 00 00 00 -de +da 04 00 00 @@ -12294,7 +12294,7 @@ aa 00 00 00 -df +db 04 00 00 @@ -12366,7 +12366,7 @@ d0 00 00 00 -c9 +bc 04 00 00 @@ -12390,7 +12390,7 @@ d9 00 00 00 -c8 +ba 04 00 00 @@ -12414,7 +12414,7 @@ ff 00 00 00 -e0 +dc 04 00 00 @@ -12462,7 +12462,7 @@ ff 00 00 00 -ca +bd 04 00 00 @@ -12510,7 +12510,7 @@ ff 00 00 00 -c5 +b3 04 00 00 @@ -12558,7 +12558,7 @@ ff 00 00 00 -cc +bf 04 00 00 @@ -12606,7 +12606,7 @@ b8 00 00 00 -bf +a9 04 00 00 @@ -12630,7 +12630,7 @@ ff 00 00 00 -e1 +dd 04 00 00 @@ -12678,7 +12678,7 @@ c7 00 00 00 -bf +a9 04 00 00 @@ -12750,7 +12750,7 @@ e1 00 00 00 -c9 +bc 04 00 00 @@ -12774,7 +12774,7 @@ f4 00 00 00 -db +d5 04 00 00 @@ -12798,7 +12798,7 @@ ff 00 00 00 -dc +d7 04 00 00 @@ -12846,7 +12846,7 @@ ff 00 00 00 -c4 +b2 04 00 00 @@ -12870,7 +12870,7 @@ ff 00 00 00 -c6 +b4 04 00 00 @@ -12894,7 +12894,7 @@ ff 00 00 00 -bc +a6 04 00 00 @@ -12918,7 +12918,7 @@ d4 00 00 00 -db +d5 04 00 00 @@ -12942,7 +12942,7 @@ e3 00 00 00 -bc +a6 04 00 00 @@ -12966,7 +12966,7 @@ ff 00 00 00 -bd +a7 04 00 00 @@ -13014,7 +13014,7 @@ ff 00 00 00 -c7 +b7 04 00 00 @@ -13062,7 +13062,7 @@ ff 00 00 00 -bc +a6 04 00 00 @@ -13110,7 +13110,7 @@ ff 00 00 00 -c4 +b2 04 00 00 @@ -13134,7 +13134,7 @@ ac 00 00 00 -c6 +b4 04 00 00 @@ -13158,7 +13158,7 @@ b9 00 00 00 -db +d5 04 00 00 @@ -13206,7 +13206,7 @@ cd 00 00 00 -c7 +b7 04 00 00 @@ -13254,7 +13254,7 @@ d9 00 00 00 -bc +a6 04 00 00 @@ -13278,7 +13278,7 @@ ff 00 00 00 -bc +a6 04 00 00 @@ -13302,7 +13302,7 @@ ff 00 00 00 -bc +a6 04 00 00 @@ -13350,7 +13350,7 @@ ab 00 00 00 -e2 +e1 04 00 00 @@ -13374,7 +13374,7 @@ b4 00 00 00 -e3 +e2 04 00 00 @@ -13422,7 +13422,7 @@ cd 00 00 00 -e2 +e1 04 00 00 @@ -13446,7 +13446,7 @@ d7 00 00 00 -c8 +ba 04 00 00 @@ -13902,7 +13902,7 @@ ff 00 00 00 -c8 +ba 04 00 00 @@ -49347,6 +49347,188 @@ d6 69 6e 00 +2e +4c +64 +65 +62 +75 +67 +5f +61 +62 +62 +72 +65 +76 +30 +00 +2e +4c +64 +65 +62 +75 +67 +5f +69 +6e +66 +6f +30 +00 +2e +4c +64 +65 +62 +75 +67 +5f +6c +69 +6e +65 +30 +00 +2e +4c +74 +65 +78 +74 +30 +00 +2e +4c +43 +30 +00 +2e +4c +43 +31 +00 +2e +4c +43 +32 +00 +2e +4c +43 +33 +00 +2e +4c +43 +34 +00 +2e +4c +43 +35 +00 +2e +4c +43 +36 +00 +2e +4c +43 +37 +00 +2e +4c +43 +38 +00 +2e +4c +43 +39 +00 +2e +4c +43 +31 +30 +00 +2e +4c +43 +31 +31 +00 +2e +4c +43 +31 +32 +00 +2e +4c +43 +31 +33 +00 +2e +4c +43 +31 +34 +00 +2e +4c +43 +31 +35 +00 +2e +4c +43 +31 +36 +00 +2e +4c +43 +31 +37 +00 +2e +4c +43 +31 +38 +00 +2e +4c +46 +42 +32 +35 +00 +2e +4c +56 +4c +30 +00 +2e +4c +43 +46 +49 +30 +00 +2e +4c +56 +4c +31 +00 42 69 74 @@ -49364,6 +49546,47 @@ d6 74 65 00 +63 +6f +6e +76 +5f +62 +76 +00 +72 +65 +73 +75 +6c +74 +00 +73 +70 +61 +72 +65 +00 +6f +70 +31 +73 +74 +61 +74 +69 +63 +00 +6f +70 +32 +73 +74 +61 +74 +69 +63 +00 42 69 74 @@ -49395,6 +49618,59 @@ d6 6f 74 00 +66 +72 +6f +6d +5f +64 +65 +63 +5f +64 +61 +74 +61 +00 +2e +4c +56 +4c +32 +00 +2e +4c +46 +45 +32 +35 +00 +2e +4c +46 +42 +32 +36 +00 +2e +4c +56 +4c +33 +00 +2e +4c +43 +46 +49 +31 +00 +2e +4c +56 +4c +34 +00 42 69 74 @@ -49448,6 +49724,78 @@ d6 6f 79 00 +2e +4c +56 +4c +35 +00 +2e +4c +46 +45 +32 +36 +00 +2e +4c +43 +31 +39 +00 +2e +4c +46 +42 +32 +37 +00 +2e +4c +56 +4c +36 +00 +2e +4c +43 +46 +49 +32 +00 +2e +4c +43 +46 +49 +33 +00 +2e +4c +43 +46 +49 +34 +00 +2e +4c +56 +4c +37 +00 +2e +4c +43 +46 +49 +35 +00 +2e +4c +56 +4c +38 +00 79 61 73 @@ -49461,6 +49809,33 @@ d6 6f 63 00 +2e +4c +56 +4c +39 +00 +2e +4c +56 +4c +31 +30 +00 +2e +4c +56 +4c +31 +31 +00 +2e +4c +56 +4c +31 +32 +00 42 69 74 @@ -49487,6 +49862,15 @@ d6 69 63 00 +2e +4c +31 +33 +00 +2e +4c +36 +00 53 65 74 @@ -49495,6 +49879,10 @@ d6 61 78 00 +2e +4c +38 +00 42 69 74 @@ -49516,6 +49904,41 @@ d6 61 64 00 +2e +4c +56 +4c +31 +33 +00 +2e +4c +56 +4c +31 +34 +00 +2e +4c +56 +4c +31 +35 +00 +2e +4c +56 +4c +31 +36 +00 +2e +4c +56 +4c +31 +37 +00 42 69 74 @@ -49532,6 +49955,41 @@ d6 6e 65 00 +2e +4c +56 +4c +31 +38 +00 +2e +4c +56 +4c +31 +39 +00 +2e +4c +56 +4c +32 +30 +00 +2e +4c +56 +4c +32 +31 +00 +2e +4c +56 +4c +32 +32 +00 79 61 73 @@ -49546,6 +50004,83 @@ d6 6e 67 00 +2e +4c +46 +45 +32 +37 +00 +2e +4c +46 +42 +32 +38 +00 +2e +4c +56 +4c +32 +33 +00 +2e +4c +43 +46 +49 +36 +00 +2e +4c +43 +46 +49 +37 +00 +2e +4c +43 +46 +49 +38 +00 +2e +4c +56 +4c +32 +34 +00 +2e +4c +43 +46 +49 +39 +00 +2e +4c +56 +4c +32 +35 +00 +2e +4c +56 +4c +32 +36 +00 +2e +4c +56 +4c +32 +37 +00 73 74 72 @@ -49553,6 +50088,16 @@ d6 65 6e 00 +2e +4c +32 +31 +00 +2e +4c +31 +35 +00 42 69 74 @@ -49572,6 +50117,172 @@ d6 69 6e 00 +2e +4c +31 +37 +00 +2e +4c +56 +4c +32 +38 +00 +2e +4c +56 +4c +32 +39 +00 +2e +4c +56 +4c +33 +30 +00 +2e +4c +56 +4c +33 +31 +00 +2e +4c +56 +4c +33 +32 +00 +2e +4c +56 +4c +33 +33 +00 +2e +4c +56 +4c +33 +34 +00 +2e +4c +56 +4c +33 +35 +00 +2e +4c +56 +4c +33 +36 +00 +2e +4c +56 +4c +33 +37 +00 +2e +4c +46 +45 +32 +38 +00 +2e +4c +46 +42 +32 +39 +00 +2e +4c +56 +4c +33 +38 +00 +2e +4c +43 +46 +49 +31 +30 +00 +2e +4c +43 +46 +49 +31 +31 +00 +2e +4c +43 +46 +49 +31 +32 +00 +2e +4c +56 +4c +33 +39 +00 +2e +4c +43 +46 +49 +31 +33 +00 +2e +4c +56 +4c +34 +30 +00 +2e +4c +56 +4c +34 +31 +00 +2e +4c +56 +4c +34 +32 +00 +2e +4c +32 +39 +00 +2e +4c +32 +33 +00 42 69 74 @@ -49591,6 +50302,172 @@ d6 63 74 00 +2e +4c +32 +35 +00 +2e +4c +56 +4c +34 +33 +00 +2e +4c +56 +4c +34 +34 +00 +2e +4c +56 +4c +34 +35 +00 +2e +4c +56 +4c +34 +36 +00 +2e +4c +56 +4c +34 +37 +00 +2e +4c +56 +4c +34 +38 +00 +2e +4c +56 +4c +34 +39 +00 +2e +4c +56 +4c +35 +30 +00 +2e +4c +56 +4c +35 +31 +00 +2e +4c +56 +4c +35 +32 +00 +2e +4c +46 +45 +32 +39 +00 +2e +4c +46 +42 +33 +30 +00 +2e +4c +56 +4c +35 +33 +00 +2e +4c +43 +46 +49 +31 +34 +00 +2e +4c +43 +46 +49 +31 +35 +00 +2e +4c +43 +46 +49 +31 +36 +00 +2e +4c +56 +4c +35 +34 +00 +2e +4c +43 +46 +49 +31 +37 +00 +2e +4c +56 +4c +35 +35 +00 +2e +4c +56 +4c +35 +36 +00 +2e +4c +56 +4c +35 +37 +00 +2e +4c +33 +37 +00 +2e +4c +33 +31 +00 42 69 74 @@ -49610,6 +50487,342 @@ d6 65 78 00 +2e +4c +33 +33 +00 +2e +4c +56 +4c +35 +38 +00 +2e +4c +56 +4c +35 +39 +00 +2e +4c +56 +4c +36 +30 +00 +2e +4c +56 +4c +36 +31 +00 +2e +4c +56 +4c +36 +32 +00 +2e +4c +56 +4c +36 +33 +00 +2e +4c +56 +4c +36 +34 +00 +2e +4c +56 +4c +36 +35 +00 +2e +4c +56 +4c +36 +36 +00 +2e +4c +56 +4c +36 +37 +00 +2e +4c +46 +45 +33 +30 +00 +2e +4c +43 +32 +30 +00 +2e +4c +46 +42 +33 +31 +00 +2e +4c +56 +4c +36 +38 +00 +2e +4c +43 +46 +49 +31 +38 +00 +2e +4c +43 +46 +49 +31 +39 +00 +2e +4c +43 +46 +49 +32 +30 +00 +2e +4c +43 +46 +49 +32 +31 +00 +2e +4c +43 +46 +49 +32 +32 +00 +2e +4c +56 +4c +36 +39 +00 +2e +4c +56 +4c +37 +30 +00 +2e +4c +56 +4c +37 +31 +00 +2e +4c +56 +4c +37 +32 +00 +2e +4c +35 +39 +00 +2e +4c +33 +39 +00 +2e +4c +36 +30 +00 +2e +4c +34 +33 +00 +2e +4c +34 +34 +00 +2e +4c +56 +4c +37 +33 +00 +2e +4c +35 +30 +00 +2e +4c +34 +35 +00 +2e +4c +35 +35 +00 +2e +4c +35 +36 +00 +2e +4c +35 +37 +00 +2e +4c +34 +39 +00 +2e +4c +34 +38 +00 +2e +4c +56 +4c +37 +34 +00 +2e +4c +56 +4c +37 +35 +00 +2e +4c +34 +37 +00 +2e +4c +56 +4c +37 +36 +00 +2e +4c +56 +4c +37 +37 +00 +2e +4c +34 +36 +00 +2e +4c +56 +4c +37 +38 +00 +2e +4c +56 +4c +37 +39 +00 +2e +4c +56 +4c +38 +30 +00 +2e +4c +56 +4c +38 +31 +00 +2e +4c +56 +4c +38 +32 +00 +2e +4c +56 +4c +38 +33 +00 +2e +4c +56 +4c +38 +34 +00 +2e +4c +56 +4c +38 +35 +00 +2e +4c +36 +31 +00 42 69 74 @@ -49626,6 +50839,25 @@ d6 74 79 00 +2e +4c +56 +4c +38 +36 +00 +2e +4c +56 +4c +38 +37 +00 +2e +4c +35 +31 +00 42 69 74 @@ -49668,6 +50900,125 @@ d6 72 65 00 +2e +4c +56 +4c +38 +38 +00 +2e +4c +46 +45 +33 +31 +00 +2e +4c +46 +42 +33 +32 +00 +2e +4c +56 +4c +38 +39 +00 +2e +4c +43 +46 +49 +32 +33 +00 +2e +4c +56 +4c +39 +30 +00 +2e +4c +56 +4c +39 +31 +00 +2e +4c +56 +4c +39 +32 +00 +2e +4c +46 +45 +33 +32 +00 +2e +4c +46 +42 +33 +33 +00 +2e +4c +56 +4c +39 +33 +00 +2e +4c +43 +46 +49 +32 +34 +00 +2e +4c +56 +4c +39 +34 +00 +2e +4c +36 +35 +00 +2e +4c +56 +4c +39 +35 +00 +2e +4c +56 +4c +39 +36 +00 +2e +4c +56 +4c +39 +37 +00 42 69 74 @@ -49685,6 +51036,239 @@ d6 74 65 00 +2e +4c +56 +4c +39 +38 +00 +2e +4c +56 +4c +39 +39 +00 +2e +4c +46 +45 +33 +33 +00 +2e +4c +46 +42 +33 +34 +00 +2e +4c +56 +4c +31 +30 +30 +00 +2e +4c +43 +46 +49 +32 +35 +00 +2e +4c +43 +46 +49 +32 +36 +00 +2e +4c +56 +4c +31 +30 +31 +00 +2e +4c +43 +46 +49 +32 +37 +00 +2e +4c +56 +4c +31 +30 +32 +00 +2e +4c +56 +4c +31 +30 +33 +00 +2e +4c +37 +31 +00 +2e +4c +37 +34 +00 +2e +4c +56 +4c +31 +30 +34 +00 +2e +4c +56 +4c +31 +30 +35 +00 +2e +4c +56 +4c +31 +30 +36 +00 +2e +4c +56 +4c +31 +30 +37 +00 +2e +4c +56 +4c +31 +30 +38 +00 +2e +4c +56 +4c +31 +30 +39 +00 +2e +4c +56 +4c +31 +31 +30 +00 +2e +4c +56 +4c +31 +31 +31 +00 +2e +4c +56 +4c +31 +31 +32 +00 +2e +4c +56 +4c +31 +31 +33 +00 +2e +4c +56 +4c +31 +31 +34 +00 +2e +4c +46 +45 +33 +34 +00 +2e +4c +46 +42 +33 +35 +00 +2e +4c +56 +4c +31 +31 +35 +00 +2e +4c +43 +46 +49 +32 +38 +00 +2e +4c +56 +4c +31 +31 +36 +00 +2e +4c +37 +39 +00 +2e +4c +56 +4c +31 +31 +37 +00 79 61 73 @@ -49696,6 +51280,425 @@ d6 65 65 00 +2e +4c +56 +4c +31 +31 +38 +00 +2e +4c +56 +4c +31 +31 +39 +00 +2e +4c +56 +4c +31 +32 +30 +00 +2e +4c +56 +4c +31 +32 +31 +00 +2e +4c +56 +4c +31 +32 +32 +00 +2e +4c +46 +45 +33 +35 +00 +2e +4c +43 +32 +31 +00 +2e +4c +43 +32 +32 +00 +2e +4c +43 +32 +33 +00 +2e +4c +43 +32 +34 +00 +2e +4c +43 +32 +35 +00 +2e +4c +43 +32 +36 +00 +2e +4c +43 +32 +37 +00 +2e +4c +46 +42 +33 +36 +00 +2e +4c +56 +4c +31 +32 +33 +00 +2e +4c +43 +46 +49 +32 +39 +00 +2e +4c +43 +46 +49 +33 +30 +00 +2e +4c +43 +46 +49 +33 +31 +00 +2e +4c +43 +46 +49 +33 +32 +00 +2e +4c +43 +46 +49 +33 +33 +00 +2e +4c +43 +46 +49 +33 +34 +00 +2e +4c +43 +46 +49 +33 +35 +00 +2e +4c +56 +4c +31 +32 +34 +00 +2e +4c +56 +4c +31 +32 +35 +00 +2e +4c +31 +34 +36 +00 +2e +4c +56 +4c +31 +32 +36 +00 +2e +4c +56 +4c +31 +32 +37 +00 +2e +4c +56 +4c +31 +32 +38 +00 +2e +4c +56 +4c +31 +32 +39 +00 +2e +4c +38 +33 +00 +2e +4c +56 +4c +31 +33 +30 +00 +2e +4c +38 +36 +00 +2e +4c +31 +34 +37 +00 +2e +4c +56 +4c +31 +33 +31 +00 +2e +4c +38 +39 +00 +2e +4c +31 +34 +38 +00 +2e +4c +39 +32 +00 +2e +4c +31 +32 +31 +00 +2e +4c +39 +33 +00 +2e +4c +39 +34 +00 +2e +4c +39 +35 +00 +2e +4c +39 +36 +00 +2e +4c +39 +38 +00 +2e +4c +31 +30 +30 +00 +2e +4c +31 +30 +31 +00 +2e +4c +31 +30 +32 +00 +2e +4c +31 +30 +33 +00 +2e +4c +31 +30 +34 +00 +2e +4c +31 +30 +35 +00 +2e +4c +31 +30 +36 +00 +2e +4c +31 +30 +37 +00 +2e +4c +31 +30 +38 +00 +2e +4c +31 +30 +39 +00 +2e +4c +31 +31 +30 +00 +2e +4c +31 +31 +31 +00 +2e +4c +31 +31 +32 +00 +2e +4c +31 +31 +33 +00 +2e +4c +31 +31 +34 +00 +2e +4c +31 +31 +35 +00 +2e +4c +31 +31 +36 +00 +2e +4c +31 +31 +37 +00 +2e +4c +31 +31 +38 +00 +2e +4c +31 +31 +39 +00 +2e +4c +31 +32 +30 +00 79 61 73 @@ -49717,6 +51720,146 @@ d6 72 5f 00 +2e +4c +56 +4c +31 +33 +32 +00 +2e +4c +31 +32 +32 +00 +2e +4c +31 +33 +36 +00 +2e +4c +31 +34 +39 +00 +2e +4c +31 +33 +38 +00 +2e +4c +31 +34 +33 +00 +2e +4c +56 +4c +31 +33 +33 +00 +2e +4c +56 +4c +31 +33 +34 +00 +2e +4c +56 +4c +31 +33 +35 +00 +2e +4c +56 +4c +31 +33 +36 +00 +2e +4c +56 +4c +31 +33 +37 +00 +2e +4c +56 +4c +31 +33 +38 +00 +2e +4c +56 +4c +31 +33 +39 +00 +2e +4c +56 +4c +31 +34 +30 +00 +2e +4c +31 +35 +30 +00 +2e +4c +56 +4c +31 +34 +31 +00 +2e +4c +56 +4c +31 +34 +32 +00 +2e +4c +56 +4c +31 +34 +33 +00 +2e +4c +56 +4c +31 +34 +34 +00 42 69 74 @@ -49732,6 +51875,14 @@ d6 70 79 00 +2e +4c +56 +4c +31 +34 +35 +00 42 69 74 @@ -49749,6 +51900,46 @@ d6 64 65 00 +2e +4c +56 +4c +31 +34 +36 +00 +2e +4c +56 +4c +31 +34 +37 +00 +2e +4c +56 +4c +31 +34 +38 +00 +2e +4c +56 +4c +31 +34 +39 +00 +2e +4c +56 +4c +31 +35 +30 +00 42 69 74 @@ -49768,6 +51959,12 @@ d6 74 79 00 +2e +4c +31 +34 +35 +00 42 69 74 @@ -49782,6 +51979,22 @@ d6 53 42 00 +2e +4c +56 +4c +31 +35 +31 +00 +2e +4c +56 +4c +31 +35 +32 +00 42 69 74 @@ -49804,6 +52017,38 @@ d6 72 65 00 +2e +4c +56 +4c +31 +35 +33 +00 +2e +4c +56 +4c +31 +35 +34 +00 +2e +4c +56 +4c +31 +35 +35 +00 +2e +4c +56 +4c +31 +35 +36 +00 42 69 74 @@ -49820,6 +52065,22 @@ d6 61 6c 00 +2e +4c +56 +4c +31 +35 +37 +00 +2e +4c +56 +4c +31 +35 +38 +00 79 61 73 @@ -49832,6 +52093,84 @@ d6 6f 72 00 +2e +4c +56 +4c +31 +35 +39 +00 +2e +4c +56 +4c +31 +36 +30 +00 +2e +4c +56 +4c +31 +36 +31 +00 +2e +4c +56 +4c +31 +36 +32 +00 +2e +4c +56 +4c +31 +36 +33 +00 +2e +4c +56 +4c +31 +36 +34 +00 +2e +4c +56 +4c +31 +36 +35 +00 +2e +4c +56 +4c +31 +36 +36 +00 +2e +4c +31 +35 +31 +00 +2e +4c +56 +4c +31 +36 +37 +00 42 69 74 @@ -49851,6 +52190,22 @@ d6 6c 79 00 +2e +4c +56 +4c +31 +36 +38 +00 +2e +4c +56 +4c +31 +36 +39 +00 42 69 74 @@ -49865,6 +52220,22 @@ d6 64 64 00 +2e +4c +56 +4c +31 +37 +30 +00 +2e +4c +56 +4c +31 +37 +31 +00 42 69 74 @@ -49879,6 +52250,22 @@ d6 75 62 00 +2e +4c +56 +4c +31 +37 +32 +00 +2e +4c +56 +4c +31 +37 +33 +00 53 65 74 @@ -49889,6 +52276,22 @@ d6 6f 6e 00 +2e +4c +56 +4c +31 +37 +34 +00 +2e +4c +56 +4c +31 +37 +35 +00 53 65 74 @@ -49906,6 +52309,22 @@ d6 6f 6e 00 +2e +4c +56 +4c +31 +37 +36 +00 +2e +4c +56 +4c +31 +37 +37 +00 53 65 74 @@ -49922,6 +52341,30 @@ d6 4f 72 00 +2e +4c +56 +4c +31 +37 +38 +00 +2e +4c +56 +4c +31 +37 +39 +00 +2e +4c +56 +4c +31 +38 +30 +00 53 65 74 @@ -49937,6 +52380,44 @@ d6 6e 74 00 +2e +4c +56 +4c +31 +38 +31 +00 +2e +4c +31 +32 +35 +00 +2e +4c +56 +4c +31 +38 +32 +00 +2e +4c +56 +4c +31 +38 +33 +00 +2e +4c +56 +4c +31 +38 +34 +00 42 69 74 @@ -49958,6 +52439,328 @@ d6 68 74 00 +2e +4c +56 +4c +31 +38 +35 +00 +2e +4c +56 +4c +31 +38 +36 +00 +2e +4c +31 +35 +32 +00 +2e +4c +56 +4c +31 +38 +37 +00 +2e +4c +56 +4c +31 +38 +38 +00 +2e +4c +56 +4c +31 +38 +39 +00 +2e +4c +56 +4c +31 +39 +30 +00 +2e +4c +56 +4c +31 +39 +31 +00 +2e +4c +56 +4c +31 +39 +32 +00 +2e +4c +56 +4c +31 +39 +33 +00 +2e +4c +56 +4c +31 +39 +34 +00 +2e +4c +56 +4c +31 +39 +35 +00 +2e +4c +56 +4c +31 +39 +36 +00 +2e +4c +56 +4c +31 +39 +37 +00 +2e +4c +46 +45 +33 +36 +00 +2e +4c +46 +42 +33 +37 +00 +2e +4c +56 +4c +31 +39 +38 +00 +2e +4c +43 +46 +49 +33 +36 +00 +2e +4c +56 +4c +31 +39 +39 +00 +2e +4c +31 +35 +37 +00 +2e +4c +56 +4c +32 +30 +30 +00 +2e +4c +56 +4c +32 +30 +31 +00 +2e +4c +56 +4c +32 +30 +32 +00 +2e +4c +56 +4c +32 +30 +33 +00 +2e +4c +46 +45 +33 +37 +00 +2e +4c +46 +42 +33 +38 +00 +2e +4c +56 +4c +32 +30 +34 +00 +2e +4c +31 +35 +39 +00 +2e +4c +46 +45 +33 +38 +00 +2e +4c +46 +42 +33 +39 +00 +2e +4c +56 +4c +32 +30 +35 +00 +2e +4c +31 +36 +35 +00 +2e +4c +31 +36 +38 +00 +2e +4c +46 +45 +33 +39 +00 +2e +4c +46 +42 +34 +30 +00 +2e +4c +56 +4c +32 +30 +36 +00 +2e +4c +43 +46 +49 +33 +37 +00 +2e +4c +56 +4c +32 +30 +37 +00 +2e +4c +31 +37 +37 +00 +2e +4c +31 +37 +31 +00 +2e +4c +56 +4c +32 +30 +38 +00 +2e +4c +56 +4c +32 +30 +39 +00 +2e +4c +56 +4c +32 +31 +30 +00 42 69 74 @@ -49976,6 +52779,50 @@ d6 6c 6c 00 +2e +4c +56 +4c +32 +31 +31 +00 +2e +4c +46 +45 +34 +30 +00 +2e +4c +46 +42 +34 +31 +00 +2e +4c +56 +4c +32 +31 +32 +00 +2e +4c +31 +38 +36 +00 +2e +4c +56 +4c +32 +31 +33 +00 42 69 74 @@ -49991,6 +52838,228 @@ d6 67 6e 00 +2e +4c +46 +45 +34 +31 +00 +2e +4c +43 +32 +38 +00 +2e +4c +46 +42 +34 +32 +00 +2e +4c +56 +4c +32 +31 +34 +00 +2e +4c +43 +46 +49 +33 +38 +00 +2e +4c +56 +4c +32 +31 +35 +00 +2e +4c +31 +38 +39 +00 +2e +4c +31 +39 +34 +00 +2e +4c +56 +4c +32 +31 +36 +00 +2e +4c +56 +4c +32 +31 +37 +00 +2e +4c +56 +4c +32 +31 +38 +00 +2e +4c +56 +4c +32 +31 +39 +00 +2e +4c +56 +4c +32 +32 +30 +00 +2e +4c +56 +4c +32 +32 +31 +00 +2e +4c +56 +4c +32 +32 +32 +00 +2e +4c +46 +45 +34 +32 +00 +2e +4c +46 +42 +34 +33 +00 +2e +4c +56 +4c +32 +32 +33 +00 +2e +4c +43 +46 +49 +33 +39 +00 +2e +4c +56 +4c +32 +32 +34 +00 +2e +4c +31 +39 +37 +00 +2e +4c +56 +4c +32 +32 +35 +00 +2e +4c +32 +30 +38 +00 +2e +4c +56 +4c +32 +32 +36 +00 +2e +4c +32 +30 +31 +00 +2e +4c +56 +4c +32 +32 +37 +00 +2e +4c +56 +4c +32 +32 +38 +00 +2e +4c +31 +39 +39 +00 +2e +4c +56 +4c +32 +32 +39 +00 +2e +4c +56 +4c +32 +33 +30 +00 42 69 74 @@ -50006,6 +53075,394 @@ d6 62 5f 00 +2e +4c +42 +42 +32 +00 +2e +4c +32 +30 +39 +00 +2e +4c +56 +4c +32 +33 +31 +00 +2e +4c +32 +30 +33 +00 +2e +4c +42 +45 +32 +00 +2e +4c +56 +4c +32 +33 +32 +00 +2e +4c +56 +4c +32 +33 +33 +00 +2e +4c +56 +4c +32 +33 +34 +00 +2e +4c +42 +42 +33 +00 +2e +4c +56 +4c +32 +33 +35 +00 +2e +4c +42 +45 +33 +00 +2e +4c +56 +4c +32 +33 +36 +00 +2e +4c +42 +42 +34 +00 +2e +4c +56 +4c +32 +33 +37 +00 +2e +4c +42 +45 +34 +00 +2e +4c +46 +45 +34 +33 +00 +2e +4c +46 +42 +34 +35 +00 +2e +4c +56 +4c +32 +33 +38 +00 +2e +4c +43 +46 +49 +34 +30 +00 +2e +4c +43 +46 +49 +34 +31 +00 +2e +4c +43 +46 +49 +34 +32 +00 +2e +4c +43 +46 +49 +34 +33 +00 +2e +4c +43 +46 +49 +34 +34 +00 +2e +4c +43 +46 +49 +34 +35 +00 +2e +4c +43 +46 +49 +34 +36 +00 +2e +4c +56 +4c +32 +33 +39 +00 +2e +4c +32 +33 +30 +00 +2e +4c +56 +4c +32 +34 +30 +00 +2e +4c +56 +4c +32 +34 +31 +00 +2e +4c +56 +4c +32 +34 +32 +00 +2e +4c +56 +4c +32 +34 +33 +00 +2e +4c +32 +31 +35 +00 +2e +4c +56 +4c +32 +34 +34 +00 +2e +4c +32 +31 +38 +00 +2e +4c +32 +33 +31 +00 +2e +4c +32 +31 +39 +00 +2e +4c +32 +32 +33 +00 +2e +4c +56 +4c +32 +34 +35 +00 +2e +4c +32 +33 +32 +00 +2e +4c +56 +4c +32 +34 +36 +00 +2e +4c +56 +4c +32 +34 +37 +00 +2e +4c +56 +4c +32 +34 +38 +00 +2e +4c +56 +4c +32 +34 +39 +00 +2e +4c +56 +4c +32 +35 +30 +00 +2e +4c +56 +4c +32 +35 +31 +00 +2e +4c +56 +4c +32 +35 +32 +00 +2e +4c +56 +4c +32 +35 +33 +00 +2e +4c +56 +4c +32 +35 +34 +00 +2e +4c +56 +4c +32 +35 +35 +00 +2e +4c +42 +42 +35 +00 +2e +4c +56 +4c +32 +35 +36 +00 +2e +4c +56 +4c +32 +35 +37 +00 +2e +4c +32 +32 +32 +00 42 69 74 @@ -50028,6 +53485,56 @@ d6 68 74 00 +2e +4c +56 +4c +32 +35 +38 +00 +2e +4c +42 +45 +35 +00 +2e +4c +32 +33 +33 +00 +2e +4c +56 +4c +32 +35 +39 +00 +2e +4c +56 +4c +32 +36 +30 +00 +2e +4c +56 +4c +32 +36 +31 +00 +2e +4c +42 +42 +36 +00 42 69 74 @@ -50042,6 +53549,288 @@ d6 65 63 00 +2e +4c +56 +4c +32 +36 +32 +00 +2e +4c +56 +4c +32 +36 +33 +00 +2e +4c +42 +45 +36 +00 +2e +4c +56 +4c +32 +36 +34 +00 +2e +4c +56 +4c +32 +36 +35 +00 +2e +4c +56 +4c +32 +36 +36 +00 +2e +4c +46 +45 +34 +35 +00 +2e +4c +43 +32 +39 +00 +2e +4c +43 +33 +30 +00 +2e +4c +43 +33 +31 +00 +2e +4c +43 +33 +32 +00 +2e +4c +46 +42 +34 +34 +00 +2e +4c +56 +4c +32 +36 +37 +00 +2e +4c +43 +46 +49 +34 +37 +00 +2e +4c +43 +46 +49 +34 +38 +00 +2e +4c +43 +46 +49 +34 +39 +00 +2e +4c +43 +46 +49 +35 +30 +00 +2e +4c +43 +46 +49 +35 +31 +00 +2e +4c +43 +46 +49 +35 +32 +00 +2e +4c +56 +4c +32 +36 +38 +00 +2e +4c +43 +46 +49 +35 +33 +00 +2e +4c +56 +4c +32 +36 +39 +00 +2e +4c +56 +4c +32 +37 +30 +00 +2e +4c +32 +36 +33 +00 +2e +4c +56 +4c +32 +37 +31 +00 +2e +4c +32 +33 +37 +00 +2e +4c +32 +36 +34 +00 +2e +4c +56 +4c +32 +37 +32 +00 +2e +4c +32 +33 +38 +00 +2e +4c +32 +36 +35 +00 +2e +4c +32 +34 +30 +00 +2e +4c +32 +34 +33 +00 +2e +4c +32 +36 +36 +00 +2e +4c +32 +34 +36 +00 +2e +4c +56 +4c +32 +37 +33 +00 +2e +4c +56 +4c +32 +37 +34 +00 +2e +4c +32 +36 +37 +00 +2e +4c +32 +34 +39 +00 +2e +4c +32 +36 +38 +00 +2e +4c +32 +35 +34 +00 42 69 74 @@ -50087,6 +53876,98 @@ d6 61 64 00 +2e +4c +56 +4c +32 +37 +35 +00 +2e +4c +32 +35 +38 +00 +2e +4c +56 +4c +32 +37 +36 +00 +2e +4c +32 +36 +30 +00 +2e +4c +56 +4c +32 +37 +37 +00 +2e +4c +56 +4c +32 +37 +38 +00 +2e +4c +56 +4c +32 +37 +39 +00 +2e +4c +56 +4c +32 +38 +30 +00 +2e +4c +56 +4c +32 +38 +31 +00 +2e +4c +56 +4c +32 +38 +32 +00 +2e +4c +56 +4c +32 +38 +33 +00 +2e +4c +56 +4c +32 +38 +34 +00 42 69 74 @@ -50109,6 +53990,30 @@ d6 72 65 00 +2e +4c +56 +4c +32 +38 +35 +00 +2e +4c +56 +4c +32 +38 +36 +00 +2e +4c +56 +4c +32 +38 +37 +00 6d 65 6d @@ -50116,6 +54021,728 @@ d6 70 79 00 +2e +4c +56 +4c +32 +38 +38 +00 +2e +4c +56 +4c +32 +38 +39 +00 +2e +4c +56 +4c +32 +39 +30 +00 +2e +4c +56 +4c +32 +39 +31 +00 +2e +4c +56 +4c +32 +39 +32 +00 +2e +4c +32 +35 +35 +00 +2e +4c +32 +35 +37 +00 +2e +4c +56 +4c +32 +39 +33 +00 +2e +4c +46 +45 +34 +34 +00 +2e +4c +46 +42 +34 +36 +00 +2e +4c +56 +4c +32 +39 +34 +00 +2e +4c +43 +46 +49 +35 +34 +00 +2e +4c +43 +46 +49 +35 +35 +00 +2e +4c +43 +46 +49 +35 +36 +00 +2e +4c +43 +46 +49 +35 +37 +00 +2e +4c +43 +46 +49 +35 +38 +00 +2e +4c +43 +46 +49 +35 +39 +00 +2e +4c +56 +4c +32 +39 +35 +00 +2e +4c +56 +4c +32 +39 +36 +00 +2e +4c +32 +37 +30 +00 +2e +4c +56 +4c +32 +39 +37 +00 +2e +4c +32 +39 +30 +00 +2e +4c +32 +37 +32 +00 +2e +4c +56 +4c +32 +39 +38 +00 +2e +4c +32 +39 +31 +00 +2e +4c +56 +4c +32 +39 +39 +00 +2e +4c +32 +37 +37 +00 +2e +4c +56 +4c +33 +30 +30 +00 +2e +4c +32 +38 +31 +00 +2e +4c +56 +4c +33 +30 +31 +00 +2e +4c +32 +39 +32 +00 +2e +4c +56 +4c +33 +30 +32 +00 +2e +4c +32 +38 +34 +00 +2e +4c +56 +4c +33 +30 +33 +00 +2e +4c +32 +37 +34 +00 +2e +4c +56 +4c +33 +30 +34 +00 +2e +4c +56 +4c +33 +30 +35 +00 +2e +4c +56 +4c +33 +30 +36 +00 +2e +4c +56 +4c +33 +30 +37 +00 +2e +4c +56 +4c +33 +30 +38 +00 +2e +4c +56 +4c +33 +30 +39 +00 +2e +4c +56 +4c +33 +31 +30 +00 +2e +4c +56 +4c +33 +31 +31 +00 +2e +4c +32 +39 +33 +00 +2e +4c +56 +4c +33 +31 +32 +00 +2e +4c +56 +4c +33 +31 +33 +00 +2e +4c +56 +4c +33 +31 +34 +00 +2e +4c +32 +38 +35 +00 +2e +4c +56 +4c +33 +31 +35 +00 +2e +4c +56 +4c +33 +31 +36 +00 +2e +4c +56 +4c +33 +31 +37 +00 +2e +4c +46 +45 +34 +36 +00 +2e +4c +46 +42 +34 +37 +00 +2e +4c +56 +4c +33 +31 +38 +00 +2e +4c +43 +46 +49 +36 +30 +00 +2e +4c +43 +46 +49 +36 +31 +00 +2e +4c +43 +46 +49 +36 +32 +00 +2e +4c +43 +46 +49 +36 +33 +00 +2e +4c +56 +4c +33 +31 +39 +00 +2e +4c +56 +4c +33 +32 +30 +00 +2e +4c +32 +39 +35 +00 +2e +4c +56 +4c +33 +32 +31 +00 +2e +4c +32 +39 +39 +00 +2e +4c +32 +39 +37 +00 +2e +4c +56 +4c +33 +32 +32 +00 +2e +4c +33 +30 +32 +00 +2e +4c +56 +4c +33 +32 +33 +00 +2e +4c +33 +30 +38 +00 +2e +4c +33 +30 +34 +00 +2e +4c +33 +30 +37 +00 +2e +4c +56 +4c +33 +32 +34 +00 +2e +4c +56 +4c +33 +32 +35 +00 +2e +4c +56 +4c +33 +32 +36 +00 +2e +4c +56 +4c +33 +32 +37 +00 +2e +4c +56 +4c +33 +32 +38 +00 +2e +4c +56 +4c +33 +32 +39 +00 +2e +4c +56 +4c +33 +33 +30 +00 +2e +4c +46 +45 +34 +37 +00 +2e +4c +43 +33 +33 +00 +2e +4c +43 +33 +34 +00 +2e +4c +46 +42 +34 +38 +00 +2e +4c +56 +4c +33 +33 +31 +00 +2e +4c +43 +46 +49 +36 +34 +00 +2e +4c +43 +46 +49 +36 +35 +00 +2e +4c +43 +46 +49 +36 +36 +00 +2e +4c +43 +46 +49 +36 +37 +00 +2e +4c +56 +4c +33 +33 +32 +00 +2e +4c +33 +31 +31 +00 +2e +4c +56 +4c +33 +33 +33 +00 +2e +4c +33 +31 +35 +00 +2e +4c +56 +4c +33 +33 +34 +00 +2e +4c +56 +4c +33 +33 +35 +00 +2e +4c +56 +4c +33 +33 +36 +00 +2e +4c +56 +4c +33 +33 +37 +00 +2e +4c +56 +4c +33 +33 +38 +00 +2e +4c +56 +4c +33 +33 +39 +00 +2e +4c +56 +4c +33 +34 +30 +00 66 70 72 @@ -50124,6 +54751,22 @@ d6 74 66 00 +2e +4c +56 +4c +33 +34 +31 +00 +2e +4c +56 +4c +33 +34 +32 +00 42 69 74 @@ -50141,6 +54784,242 @@ d6 65 78 00 +2e +4c +56 +4c +33 +34 +33 +00 +2e +4c +56 +4c +33 +34 +34 +00 +2e +4c +56 +4c +33 +34 +35 +00 +2e +4c +56 +4c +33 +34 +36 +00 +2e +4c +56 +4c +33 +34 +37 +00 +2e +4c +56 +4c +33 +34 +38 +00 +2e +4c +46 +45 +34 +38 +00 +2e +4c +43 +33 +35 +00 +2e +4c +43 +33 +36 +00 +2e +4c +43 +33 +37 +00 +2e +4c +43 +33 +38 +00 +2e +4c +43 +33 +39 +00 +2e +4c +43 +34 +30 +00 +2e +4c +43 +34 +31 +00 +2e +4c +43 +34 +32 +00 +2e +4c +43 +34 +33 +00 +2e +4c +46 +42 +35 +30 +00 +2e +4c +56 +4c +33 +34 +39 +00 +2e +4c +43 +46 +49 +36 +38 +00 +2e +4c +56 +4c +33 +35 +30 +00 +2e +4c +43 +46 +49 +36 +39 +00 +2e +4c +56 +4c +33 +35 +31 +00 +2e +4c +43 +46 +49 +37 +30 +00 +2e +4c +56 +4c +33 +35 +32 +00 +2e +4c +43 +46 +49 +37 +31 +00 +2e +4c +56 +4c +33 +35 +33 +00 +2e +4c +43 +46 +49 +37 +32 +00 +2e +4c +56 +4c +33 +35 +34 +00 +2e +4c +43 +46 +49 +37 +33 +00 +2e +4c +56 +4c +33 +35 +35 +00 +2e +4c +43 +46 +49 +37 +34 +00 +2e +4c +56 +4c +33 +35 +36 +00 42 69 74 @@ -50156,6 +55035,91 @@ d6 6f 74 00 +2e +4c +33 +36 +36 +00 +2e +4c +56 +4c +33 +35 +37 +00 +2e +4c +56 +4c +33 +35 +38 +00 +2e +4c +56 +4c +33 +35 +39 +00 +2e +4c +56 +4c +33 +36 +30 +00 +2e +4c +56 +4c +33 +36 +31 +00 +2e +4c +56 +4c +33 +36 +32 +00 +2e +4c +56 +4c +33 +36 +33 +00 +2e +4c +56 +4c +33 +36 +34 +00 +2e +4c +56 +4c +33 +36 +35 +00 +66 +61 +69 +6c +65 +64 +00 70 72 69 @@ -50163,6 +55127,82 @@ d6 74 66 00 +2e +4c +56 +4c +33 +36 +36 +00 +2e +4c +33 +32 +30 +00 +2e +4c +56 +4c +33 +36 +37 +00 +2e +4c +33 +37 +30 +00 +2e +4c +42 +42 +37 +00 +2e +4c +42 +42 +38 +00 +2e +4c +42 +42 +39 +00 +2e +4c +56 +4c +33 +36 +38 +00 +2e +4c +33 +36 +35 +00 +66 +61 +69 +6c +6d +73 +67 +00 +2e +4c +56 +4c +33 +36 +39 +00 73 70 72 @@ -50171,6 +55211,24 @@ d6 74 66 00 +2e +4c +33 +33 +31 +00 +2e +4c +42 +45 +39 +00 +2e +4c +42 +45 +38 +00 70 75 74 @@ -50193,6 +55251,59 @@ d6 73 68 00 +2e +4c +33 +36 +37 +00 +2e +4c +42 +45 +37 +00 +2e +4c +42 +42 +31 +30 +00 +2e +4c +42 +45 +31 +30 +00 +2e +4c +33 +36 +38 +00 +2e +4c +42 +42 +31 +31 +00 +2e +4c +42 +42 +31 +32 +00 +2e +4c +42 +42 +31 +33 +00 79 61 73 @@ -50209,5117 +55320,6 @@ d6 00 2e 4c -64 -65 -62 -75 -67 -5f -61 -62 -62 -72 -65 -76 -30 -00 -2e -4c -64 -65 -62 -75 -67 -5f -69 -6e -66 -6f -30 -00 -2e -4c -64 -65 -62 -75 -67 -5f -6c -69 -6e -65 -30 -00 -2e -4c -74 -65 -78 -74 -30 -00 -2e -4c -43 -30 -00 -2e -4c -43 -31 -00 -2e -4c -43 -32 -00 -2e -4c -43 -33 -00 -2e -4c -43 -34 -00 -2e -4c -43 -35 -00 -2e -4c -43 -36 -00 -2e -4c -43 -37 -00 -2e -4c -43 -38 -00 -2e -4c -43 -39 -00 -2e -4c -43 -31 -30 -00 -2e -4c -43 -31 -31 -00 -2e -4c -43 -31 -32 -00 -2e -4c -43 -31 -33 -00 -2e -4c -43 -31 -34 -00 -2e -4c -43 -31 -35 -00 -2e -4c -43 -31 -36 -00 -2e -4c -43 -31 -37 -00 -2e -4c -43 -31 -38 -00 -2e -4c -46 -42 -32 -35 -00 -2e -4c -56 -4c -30 -00 -2e -4c -43 -46 -49 -30 -00 -2e -4c -56 -4c -31 -00 -63 -6f -6e -76 -5f -62 -76 -00 -72 -65 -73 -75 -6c -74 -00 -73 -70 -61 -72 -65 -00 -6f -70 -31 -73 -74 -61 -74 -69 -63 -00 -6f -70 -32 -73 -74 -61 -74 -69 -63 -00 -66 -72 -6f -6d -5f -64 -65 -63 -5f -64 -61 -74 -61 -00 -2e -4c -56 -4c -32 -00 -2e -4c -46 -45 -32 -35 -00 -2e -4c -46 -42 -32 -36 -00 -2e -4c -56 -4c -33 -00 -2e -4c -43 -46 -49 -31 -00 -2e -4c -56 -4c -34 -00 -2e -4c -56 -4c -35 -00 -2e -4c -46 -45 -32 -36 -00 -2e -4c -43 -31 -39 -00 -2e -4c -46 -42 -32 -37 -00 -2e -4c -56 -4c -36 -00 -2e -4c -43 -46 -49 -32 -00 -2e -4c -43 -46 -49 -33 -00 -2e -4c -43 -46 -49 -34 -00 -2e -4c -56 -4c -37 -00 -2e -4c -43 -46 -49 -35 -00 -2e -4c -56 -4c -38 -00 -2e -4c -56 -4c -39 -00 -2e -4c -56 -4c -31 -30 -00 -2e -4c -56 -4c -31 -31 -00 -2e -4c -56 -4c -31 -32 -00 -2e -4c -31 -33 -00 -2e -4c -36 -00 -2e -4c -38 -00 -2e -4c -56 -4c -31 -33 -00 -2e -4c -56 -4c -31 -34 -00 -2e -4c -56 -4c -31 -35 -00 -2e -4c -56 -4c -31 -36 -00 -2e -4c -56 -4c -31 -37 -00 -2e -4c -56 -4c -31 -38 -00 -2e -4c -56 -4c -31 -39 -00 -2e -4c -56 -4c -32 -30 -00 -2e -4c -56 -4c -32 -31 -00 -2e -4c -56 -4c -32 -32 -00 -2e -4c -46 -45 -32 -37 -00 -2e -4c -46 -42 -32 -38 -00 -2e -4c -56 -4c -32 -33 -00 -2e -4c -43 -46 -49 -36 -00 -2e -4c -43 -46 -49 -37 -00 -2e -4c -43 -46 -49 -38 -00 -2e -4c -56 -4c -32 -34 -00 -2e -4c -43 -46 -49 -39 -00 -2e -4c -56 -4c -32 -35 -00 -2e -4c -56 -4c -32 -36 -00 -2e -4c -56 -4c -32 -37 -00 -2e -4c -32 -31 -00 -2e -4c -31 -35 -00 -2e -4c -31 -37 -00 -2e -4c -56 -4c -32 -38 -00 -2e -4c -56 -4c -32 -39 -00 -2e -4c -56 -4c -33 -30 -00 -2e -4c -56 -4c -33 -31 -00 -2e -4c -56 -4c -33 -32 -00 -2e -4c -56 -4c -33 -33 -00 -2e -4c -56 -4c -33 -34 -00 -2e -4c -56 -4c -33 -35 -00 -2e -4c -56 -4c -33 -36 -00 -2e -4c -56 -4c -33 -37 -00 -2e -4c -46 -45 -32 -38 -00 -2e -4c -46 -42 -32 -39 -00 -2e -4c -56 -4c -33 -38 -00 -2e -4c -43 -46 -49 -31 -30 -00 -2e -4c -43 -46 -49 -31 -31 -00 -2e -4c -43 -46 -49 -31 -32 -00 -2e -4c -56 -4c -33 -39 -00 -2e -4c -43 -46 -49 -31 -33 -00 -2e -4c -56 -4c -34 -30 -00 -2e -4c -56 -4c -34 -31 -00 -2e -4c -56 -4c -34 -32 -00 -2e -4c -32 -39 -00 -2e -4c -32 -33 -00 -2e -4c -32 -35 -00 -2e -4c -56 -4c -34 -33 -00 -2e -4c -56 -4c -34 -34 -00 -2e -4c -56 -4c -34 -35 -00 -2e -4c -56 -4c -34 -36 -00 -2e -4c -56 -4c -34 -37 -00 -2e -4c -56 -4c -34 -38 -00 -2e -4c -56 -4c -34 -39 -00 -2e -4c -56 -4c -35 -30 -00 -2e -4c -56 -4c -35 -31 -00 -2e -4c -56 -4c -35 -32 -00 -2e -4c -46 -45 -32 -39 -00 -2e -4c -46 -42 -33 -30 -00 -2e -4c -56 -4c -35 -33 -00 -2e -4c -43 -46 -49 -31 -34 -00 -2e -4c -43 -46 -49 -31 -35 -00 -2e -4c -43 -46 -49 -31 -36 -00 -2e -4c -56 -4c -35 -34 -00 -2e -4c -43 -46 -49 -31 -37 -00 -2e -4c -56 -4c -35 -35 -00 -2e -4c -56 -4c -35 -36 -00 -2e -4c -56 -4c -35 -37 -00 -2e -4c -33 -37 -00 -2e -4c -33 -31 -00 -2e -4c -33 -33 -00 -2e -4c -56 -4c -35 -38 -00 -2e -4c -56 -4c -35 -39 -00 -2e -4c -56 -4c -36 -30 -00 -2e -4c -56 -4c -36 -31 -00 -2e -4c -56 -4c -36 -32 -00 -2e -4c -56 -4c -36 -33 -00 -2e -4c -56 -4c -36 -34 -00 -2e -4c -56 -4c -36 -35 -00 -2e -4c -56 -4c -36 -36 -00 -2e -4c -56 -4c -36 -37 -00 -2e -4c -46 -45 -33 -30 -00 -2e -4c -43 -32 -30 -00 -2e -4c -46 -42 -33 -31 -00 -2e -4c -56 -4c -36 -38 -00 -2e -4c -43 -46 -49 -31 -38 -00 -2e -4c -43 -46 -49 -31 -39 -00 -2e -4c -43 -46 -49 -32 -30 -00 -2e -4c -43 -46 -49 -32 -31 -00 -2e -4c -43 -46 -49 -32 -32 -00 -2e -4c -56 -4c -36 -39 -00 -2e -4c -56 -4c -37 -30 -00 -2e -4c -56 -4c -37 -31 -00 -2e -4c -56 -4c -37 -32 -00 -2e -4c -35 -39 -00 -2e -4c -33 -39 -00 -2e -4c -36 -30 -00 -2e -4c -34 -33 -00 -2e -4c -34 -34 -00 -2e -4c -56 -4c -37 -33 -00 -2e -4c -35 -30 -00 -2e -4c -34 -35 -00 -2e -4c -35 -35 -00 -2e -4c -35 -36 -00 -2e -4c -35 -37 -00 -2e -4c -34 -39 -00 -2e -4c -34 -38 -00 -2e -4c -56 -4c -37 -34 -00 -2e -4c -56 -4c -37 -35 -00 -2e -4c -34 -37 -00 -2e -4c -56 -4c -37 -36 -00 -2e -4c -56 -4c -37 -37 -00 -2e -4c -34 -36 -00 -2e -4c -56 -4c -37 -38 -00 -2e -4c -56 -4c -37 -39 -00 -2e -4c -56 -4c -38 -30 -00 -2e -4c -56 -4c -38 -31 -00 -2e -4c -56 -4c -38 -32 -00 -2e -4c -56 -4c -38 -33 -00 -2e -4c -56 -4c -38 -34 -00 -2e -4c -56 -4c -38 -35 -00 -2e -4c -36 -31 -00 -2e -4c -56 -4c -38 -36 -00 -2e -4c -56 -4c -38 -37 -00 -2e -4c -35 -31 -00 -2e -4c -56 -4c -38 -38 -00 -2e -4c -46 -45 -33 -31 -00 -2e -4c -46 -42 -33 -32 -00 -2e -4c -56 -4c -38 -39 -00 -2e -4c -43 -46 -49 -32 -33 -00 -2e -4c -56 -4c -39 -30 -00 -2e -4c -56 -4c -39 -31 -00 -2e -4c -56 -4c -39 -32 -00 -2e -4c -46 -45 -33 -32 -00 -2e -4c -46 -42 -33 -33 -00 -2e -4c -56 -4c -39 -33 -00 -2e -4c -43 -46 -49 -32 -34 -00 -2e -4c -56 -4c -39 -34 -00 -2e -4c -36 -35 -00 -2e -4c -56 -4c -39 -35 -00 -2e -4c -56 -4c -39 -36 -00 -2e -4c -56 -4c -39 -37 -00 -2e -4c -56 -4c -39 -38 -00 -2e -4c -56 -4c -39 -39 -00 -2e -4c -46 -45 -33 -33 -00 -2e -4c -46 -42 -33 -34 -00 -2e -4c -56 -4c -31 -30 -30 -00 -2e -4c -43 -46 -49 -32 -35 -00 -2e -4c -43 -46 -49 -32 -36 -00 -2e -4c -56 -4c -31 -30 -31 -00 -2e -4c -43 -46 -49 -32 -37 -00 -2e -4c -56 -4c -31 -30 -32 -00 -2e -4c -56 -4c -31 -30 -33 -00 -2e -4c -37 -31 -00 -2e -4c -37 -34 -00 -2e -4c -56 -4c -31 -30 -34 -00 -2e -4c -56 -4c -31 -30 -35 -00 -2e -4c -56 -4c -31 -30 -36 -00 -2e -4c -56 -4c -31 -30 -37 -00 -2e -4c -56 -4c -31 -30 -38 -00 -2e -4c -56 -4c -31 -30 -39 -00 -2e -4c -56 -4c -31 -31 -30 -00 -2e -4c -56 -4c -31 -31 -31 -00 -2e -4c -56 -4c -31 -31 -32 -00 -2e -4c -56 -4c -31 -31 -33 -00 -2e -4c -56 -4c -31 -31 -34 -00 -2e -4c -46 -45 -33 -34 -00 -2e -4c -46 -42 -33 -35 -00 -2e -4c -56 -4c -31 -31 -35 -00 -2e -4c -43 -46 -49 -32 -38 -00 -2e -4c -56 -4c -31 -31 -36 -00 -2e -4c -37 -39 -00 -2e -4c -56 -4c -31 -31 -37 -00 -2e -4c -56 -4c -31 -31 -38 -00 -2e -4c -56 -4c -31 -31 -39 -00 -2e -4c -56 -4c -31 -32 -30 -00 -2e -4c -56 -4c -31 -32 -31 -00 -2e -4c -56 -4c -31 -32 -32 -00 -2e -4c -46 -45 -33 -35 -00 -2e -4c -43 -32 -31 -00 -2e -4c -43 -32 -32 -00 -2e -4c -43 -32 -33 -00 -2e -4c -43 -32 -34 -00 -2e -4c -43 -32 -35 -00 -2e -4c -43 -32 -36 -00 -2e -4c -43 -32 -37 -00 -2e -4c -46 -42 -33 -36 -00 -2e -4c -56 -4c -31 -32 -33 -00 -2e -4c -43 -46 -49 -32 -39 -00 -2e -4c -43 -46 -49 -33 -30 -00 -2e -4c -43 -46 -49 -33 -31 -00 -2e -4c -43 -46 -49 -33 -32 -00 -2e -4c -43 -46 -49 -33 -33 -00 -2e -4c -43 -46 -49 -33 -34 -00 -2e -4c -43 -46 -49 -33 -35 -00 -2e -4c -56 -4c -31 -32 -34 -00 -2e -4c -56 -4c -31 -32 -35 -00 -2e -4c -31 -34 -36 -00 -2e -4c -56 -4c -31 -32 -36 -00 -2e -4c -56 -4c -31 -32 -37 -00 -2e -4c -56 -4c -31 -32 -38 -00 -2e -4c -56 -4c -31 -32 -39 -00 -2e -4c -38 -33 -00 -2e -4c -56 -4c -31 -33 -30 -00 -2e -4c -38 -36 -00 -2e -4c -31 -34 -37 -00 -2e -4c -56 -4c -31 -33 -31 -00 -2e -4c -38 -39 -00 -2e -4c -31 -34 -38 -00 -2e -4c -39 -32 -00 -2e -4c -31 -32 -31 -00 -2e -4c -39 -33 -00 -2e -4c -39 -34 -00 -2e -4c -39 -35 -00 -2e -4c -39 -36 -00 -2e -4c -39 -38 -00 -2e -4c -31 -30 -30 -00 -2e -4c -31 -30 -31 -00 -2e -4c -31 -30 -32 -00 -2e -4c -31 -30 -33 -00 -2e -4c -31 -30 -34 -00 -2e -4c -31 -30 -35 -00 -2e -4c -31 -30 -36 -00 -2e -4c -31 -30 -37 -00 -2e -4c -31 -30 -38 -00 -2e -4c -31 -30 -39 -00 -2e -4c -31 -31 -30 -00 -2e -4c -31 -31 -31 -00 -2e -4c -31 -31 -32 -00 -2e -4c -31 -31 -33 -00 -2e -4c -31 -31 -34 -00 -2e -4c -31 -31 -35 -00 -2e -4c -31 -31 -36 -00 -2e -4c -31 -31 -37 -00 -2e -4c -31 -31 -38 -00 -2e -4c -31 -31 -39 -00 -2e -4c -31 -32 -30 -00 -2e -4c -56 -4c -31 -33 -32 -00 -2e -4c -31 -32 -32 -00 -2e -4c -31 -33 -36 -00 -2e -4c -31 -34 -39 -00 -2e -4c -31 -33 -38 -00 -2e -4c -31 -34 -33 -00 -2e -4c -56 -4c -31 -33 -33 -00 -2e -4c -56 -4c -31 -33 -34 -00 -2e -4c -56 -4c -31 -33 -35 -00 -2e -4c -56 -4c -31 -33 -36 -00 -2e -4c -56 -4c -31 -33 -37 -00 -2e -4c -56 -4c -31 -33 -38 -00 -2e -4c -56 -4c -31 -33 -39 -00 -2e -4c -56 -4c -31 -34 -30 -00 -2e -4c -31 -35 -30 -00 -2e -4c -56 -4c -31 -34 -31 -00 -2e -4c -56 -4c -31 -34 -32 -00 -2e -4c -56 -4c -31 -34 -33 -00 -2e -4c -56 -4c -31 -34 -34 -00 -2e -4c -56 -4c -31 -34 -35 -00 -2e -4c -56 -4c -31 -34 -36 -00 -2e -4c -56 -4c -31 -34 -37 -00 -2e -4c -56 -4c -31 -34 -38 -00 -2e -4c -56 -4c -31 -34 -39 -00 -2e -4c -56 -4c -31 -35 -30 -00 -2e -4c -31 -34 -35 -00 -2e -4c -56 -4c -31 -35 -31 -00 -2e -4c -56 -4c -31 -35 -32 -00 -2e -4c -56 -4c -31 -35 -33 -00 -2e -4c -56 -4c -31 -35 -34 -00 -2e -4c -56 -4c -31 -35 -35 -00 -2e -4c -56 -4c -31 -35 -36 -00 -2e -4c -56 -4c -31 -35 -37 -00 -2e -4c -56 -4c -31 -35 -38 -00 -2e -4c -56 -4c -31 -35 -39 -00 -2e -4c -56 -4c -31 -36 -30 -00 -2e -4c -56 -4c -31 -36 -31 -00 -2e -4c -56 -4c -31 -36 -32 -00 -2e -4c -56 -4c -31 -36 -33 -00 -2e -4c -56 -4c -31 -36 -34 -00 -2e -4c -56 -4c -31 -36 -35 -00 -2e -4c -56 -4c -31 -36 -36 -00 -2e -4c -31 -35 -31 -00 -2e -4c -56 -4c -31 -36 -37 -00 -2e -4c -56 -4c -31 -36 -38 -00 -2e -4c -56 -4c -31 -36 -39 -00 -2e -4c -56 -4c -31 -37 -30 -00 -2e -4c -56 -4c -31 -37 -31 -00 -2e -4c -56 -4c -31 -37 -32 -00 -2e -4c -56 -4c -31 -37 -33 -00 -2e -4c -56 -4c -31 -37 -34 -00 -2e -4c -56 -4c -31 -37 -35 -00 -2e -4c -56 -4c -31 -37 -36 -00 -2e -4c -56 -4c -31 -37 -37 -00 -2e -4c -56 -4c -31 -37 -38 -00 -2e -4c -56 -4c -31 -37 -39 -00 -2e -4c -56 -4c -31 -38 -30 -00 -2e -4c -56 -4c -31 -38 -31 -00 -2e -4c -31 -32 -35 -00 -2e -4c -56 -4c -31 -38 -32 -00 -2e -4c -56 -4c -31 -38 -33 -00 -2e -4c -56 -4c -31 -38 -34 -00 -2e -4c -56 -4c -31 -38 -35 -00 -2e -4c -56 -4c -31 -38 -36 -00 -2e -4c -31 -35 -32 -00 -2e -4c -56 -4c -31 -38 -37 -00 -2e -4c -56 -4c -31 -38 -38 -00 -2e -4c -56 -4c -31 -38 -39 -00 -2e -4c -56 -4c -31 -39 -30 -00 -2e -4c -56 -4c -31 -39 -31 -00 -2e -4c -56 -4c -31 -39 -32 -00 -2e -4c -56 -4c -31 -39 -33 -00 -2e -4c -56 -4c -31 -39 -34 -00 -2e -4c -56 -4c -31 -39 -35 -00 -2e -4c -56 -4c -31 -39 -36 -00 -2e -4c -56 -4c -31 -39 -37 -00 -2e -4c -46 -45 -33 -36 -00 -2e -4c -46 -42 -33 -37 -00 -2e -4c -56 -4c -31 -39 -38 -00 -2e -4c -43 -46 -49 -33 -36 -00 -2e -4c -56 -4c -31 -39 -39 -00 -2e -4c -31 -35 -37 -00 -2e -4c -56 -4c -32 -30 -30 -00 -2e -4c -56 -4c -32 -30 -31 -00 -2e -4c -56 -4c -32 -30 -32 -00 -2e -4c -56 -4c -32 -30 -33 -00 -2e -4c -46 -45 -33 -37 -00 -2e -4c -46 -42 -33 -38 -00 -2e -4c -56 -4c -32 -30 -34 -00 -2e -4c -31 -35 -39 -00 -2e -4c -46 -45 -33 -38 -00 -2e -4c -46 -42 -33 -39 -00 -2e -4c -56 -4c -32 -30 -35 -00 -2e -4c -31 -36 -35 -00 -2e -4c -31 -36 -38 -00 -2e -4c -46 -45 -33 -39 -00 -2e -4c -46 -42 -34 -30 -00 -2e -4c -56 -4c -32 -30 -36 -00 -2e -4c -43 -46 -49 -33 -37 -00 -2e -4c -56 -4c -32 -30 -37 -00 -2e -4c -31 -37 -37 -00 -2e -4c -31 -37 -31 -00 -2e -4c -56 -4c -32 -30 -38 -00 -2e -4c -56 -4c -32 -30 -39 -00 -2e -4c -56 -4c -32 -31 -30 -00 -2e -4c -56 -4c -32 -31 -31 -00 -2e -4c -46 -45 -34 -30 -00 -2e -4c -46 -42 -34 -31 -00 -2e -4c -56 -4c -32 -31 -32 -00 -2e -4c -31 -38 -36 -00 -2e -4c -56 -4c -32 -31 -33 -00 -2e -4c -46 -45 -34 -31 -00 -2e -4c -43 -32 -38 -00 -2e -4c -46 -42 -34 -32 -00 -2e -4c -56 -4c -32 -31 -34 -00 -2e -4c -43 -46 -49 -33 -38 -00 -2e -4c -56 -4c -32 -31 -35 -00 -2e -4c -31 -38 -39 -00 -2e -4c -31 -39 -34 -00 -2e -4c -56 -4c -32 -31 -36 -00 -2e -4c -56 -4c -32 -31 -37 -00 -2e -4c -56 -4c -32 -31 -38 -00 -2e -4c -56 -4c -32 -31 -39 -00 -2e -4c -56 -4c -32 -32 -30 -00 -2e -4c -56 -4c -32 -32 -31 -00 -2e -4c -56 -4c -32 -32 -32 -00 -2e -4c -46 -45 -34 -32 -00 -2e -4c -46 -42 -34 -33 -00 -2e -4c -56 -4c -32 -32 -33 -00 -2e -4c -43 -46 -49 -33 -39 -00 -2e -4c -56 -4c -32 -32 -34 -00 -2e -4c -31 -39 -37 -00 -2e -4c -56 -4c -32 -32 -35 -00 -2e -4c -32 -30 -38 -00 -2e -4c -56 -4c -32 -32 -36 -00 -2e -4c -32 -30 -31 -00 -2e -4c -56 -4c -32 -32 -37 -00 -2e -4c -56 -4c -32 -32 -38 -00 -2e -4c -31 -39 -39 -00 -2e -4c -56 -4c -32 -32 -39 -00 -2e -4c -56 -4c -32 -33 -30 -00 -2e -4c -42 -42 -32 -00 -2e -4c -32 -30 -39 -00 -2e -4c -56 -4c -32 -33 -31 -00 -2e -4c -32 -30 -33 -00 -2e -4c -42 -45 -32 -00 -2e -4c -56 -4c -32 -33 -32 -00 -2e -4c -56 -4c -32 -33 -33 -00 -2e -4c -56 -4c -32 -33 -34 -00 -2e -4c -42 -42 -33 -00 -2e -4c -56 -4c -32 -33 -35 -00 -2e -4c -42 -45 -33 -00 -2e -4c -56 -4c -32 -33 -36 -00 -2e -4c -42 -42 -34 -00 -2e -4c -56 -4c -32 -33 -37 -00 -2e -4c -42 -45 -34 -00 -2e -4c -46 -45 -34 -33 -00 -2e -4c -46 -42 -34 -35 -00 -2e -4c -56 -4c -32 -33 -38 -00 -2e -4c -43 -46 -49 -34 -30 -00 -2e -4c -43 -46 -49 -34 -31 -00 -2e -4c -43 -46 -49 -34 -32 -00 -2e -4c -43 -46 -49 -34 -33 -00 -2e -4c -43 -46 -49 -34 -34 -00 -2e -4c -43 -46 -49 -34 -35 -00 -2e -4c -43 -46 -49 -34 -36 -00 -2e -4c -56 -4c -32 -33 -39 -00 -2e -4c -32 -33 -30 -00 -2e -4c -56 -4c -32 -34 -30 -00 -2e -4c -56 -4c -32 -34 -31 -00 -2e -4c -56 -4c -32 -34 -32 -00 -2e -4c -56 -4c -32 -34 -33 -00 -2e -4c -32 -31 -35 -00 -2e -4c -56 -4c -32 -34 -34 -00 -2e -4c -32 -31 -38 -00 -2e -4c -32 -33 -31 -00 -2e -4c -32 -31 -39 -00 -2e -4c -32 -32 -33 -00 -2e -4c -56 -4c -32 -34 -35 -00 -2e -4c -32 -33 -32 -00 -2e -4c -56 -4c -32 -34 -36 -00 -2e -4c -56 -4c -32 -34 -37 -00 -2e -4c -56 -4c -32 -34 -38 -00 -2e -4c -56 -4c -32 -34 -39 -00 -2e -4c -56 -4c -32 -35 -30 -00 -2e -4c -56 -4c -32 -35 -31 -00 -2e -4c -56 -4c -32 -35 -32 -00 -2e -4c -56 -4c -32 -35 -33 -00 -2e -4c -56 -4c -32 -35 -34 -00 -2e -4c -56 -4c -32 -35 -35 -00 -2e -4c -42 -42 -35 -00 -2e -4c -56 -4c -32 -35 -36 -00 -2e -4c -56 -4c -32 -35 -37 -00 -2e -4c -32 -32 -32 -00 -2e -4c -56 -4c -32 -35 -38 -00 -2e -4c -42 -45 -35 -00 -2e -4c -32 -33 -33 -00 -2e -4c -56 -4c -32 -35 -39 -00 -2e -4c -56 -4c -32 -36 -30 -00 -2e -4c -56 -4c -32 -36 -31 -00 -2e -4c -42 -42 -36 -00 -2e -4c -56 -4c -32 -36 -32 -00 -2e -4c -56 -4c -32 -36 -33 -00 -2e -4c -42 -45 -36 -00 -2e -4c -56 -4c -32 -36 -34 -00 -2e -4c -56 -4c -32 -36 -35 -00 -2e -4c -56 -4c -32 -36 -36 -00 -2e -4c -46 -45 -34 -35 -00 -2e -4c -43 -32 -39 -00 -2e -4c -43 -33 -30 -00 -2e -4c -43 -33 -31 -00 -2e -4c -43 -33 -32 -00 -2e -4c -46 -42 -34 -34 -00 -2e -4c -56 -4c -32 -36 -37 -00 -2e -4c -43 -46 -49 -34 -37 -00 -2e -4c -43 -46 -49 -34 -38 -00 -2e -4c -43 -46 -49 -34 -39 -00 -2e -4c -43 -46 -49 -35 -30 -00 -2e -4c -43 -46 -49 -35 -31 -00 -2e -4c -43 -46 -49 -35 -32 -00 -2e -4c -56 -4c -32 -36 -38 -00 -2e -4c -43 -46 -49 -35 -33 -00 -2e -4c -56 -4c -32 -36 -39 -00 -2e -4c -56 -4c -32 -37 -30 -00 -2e -4c -32 -36 -33 -00 -2e -4c -56 -4c -32 -37 -31 -00 -2e -4c -32 -33 -37 -00 -2e -4c -32 -36 -34 -00 -2e -4c -56 -4c -32 -37 -32 -00 -2e -4c -32 -33 -38 -00 -2e -4c -32 -36 -35 -00 -2e -4c -32 -34 -30 -00 -2e -4c -32 -34 -33 -00 -2e -4c -32 -36 -36 -00 -2e -4c -32 -34 -36 -00 -2e -4c -56 -4c -32 -37 -33 -00 -2e -4c -56 -4c -32 -37 -34 -00 -2e -4c -32 -36 -37 -00 -2e -4c -32 -34 -39 -00 -2e -4c -32 -36 -38 -00 -2e -4c -32 -35 -34 -00 -2e -4c -56 -4c -32 -37 -35 -00 -2e -4c -32 -35 -38 -00 -2e -4c -56 -4c -32 -37 -36 -00 -2e -4c -32 -36 -30 -00 -2e -4c -56 -4c -32 -37 -37 -00 -2e -4c -56 -4c -32 -37 -38 -00 -2e -4c -56 -4c -32 -37 -39 -00 -2e -4c -56 -4c -32 -38 -30 -00 -2e -4c -56 -4c -32 -38 -31 -00 -2e -4c -56 -4c -32 -38 -32 -00 -2e -4c -56 -4c -32 -38 -33 -00 -2e -4c -56 -4c -32 -38 -34 -00 -2e -4c -56 -4c -32 -38 -35 -00 -2e -4c -56 -4c -32 -38 -36 -00 -2e -4c -56 -4c -32 -38 -37 -00 -2e -4c -56 -4c -32 -38 -38 -00 -2e -4c -56 -4c -32 -38 -39 -00 -2e -4c -56 -4c -32 -39 -30 -00 -2e -4c -56 -4c -32 -39 -31 -00 -2e -4c -56 -4c -32 -39 -32 -00 -2e -4c -32 -35 -35 -00 -2e -4c -32 -35 -37 -00 -2e -4c -56 -4c -32 -39 -33 -00 -2e -4c -46 -45 -34 -34 -00 -2e -4c -46 -42 -34 -36 -00 -2e -4c -56 -4c -32 -39 -34 -00 -2e -4c -43 -46 -49 -35 -34 -00 -2e -4c -43 -46 -49 -35 -35 -00 -2e -4c -43 -46 -49 -35 -36 -00 -2e -4c -43 -46 -49 -35 -37 -00 -2e -4c -43 -46 -49 -35 -38 -00 -2e -4c -43 -46 -49 -35 -39 -00 -2e -4c -56 -4c -32 -39 -35 -00 -2e -4c -56 -4c -32 -39 -36 -00 -2e -4c -32 -37 -30 -00 -2e -4c -56 -4c -32 -39 -37 -00 -2e -4c -32 -39 -30 -00 -2e -4c -32 -37 -32 -00 -2e -4c -56 -4c -32 -39 -38 -00 -2e -4c -32 -39 -31 -00 -2e -4c -56 -4c -32 -39 -39 -00 -2e -4c -32 -37 -37 -00 -2e -4c -56 -4c -33 -30 -30 -00 -2e -4c -32 -38 -31 -00 -2e -4c -56 -4c -33 -30 -31 -00 -2e -4c -32 -39 -32 -00 -2e -4c -56 -4c -33 -30 -32 -00 -2e -4c -32 -38 -34 -00 -2e -4c -56 -4c -33 -30 -33 -00 -2e -4c -32 -37 -34 -00 -2e -4c -56 -4c -33 -30 -34 -00 -2e -4c -56 -4c -33 -30 -35 -00 -2e -4c -56 -4c -33 -30 -36 -00 -2e -4c -56 -4c -33 -30 -37 -00 -2e -4c -56 -4c -33 -30 -38 -00 -2e -4c -56 -4c -33 -30 -39 -00 -2e -4c -56 -4c -33 -31 -30 -00 -2e -4c -56 -4c -33 -31 -31 -00 -2e -4c -32 -39 -33 -00 -2e -4c -56 -4c -33 -31 -32 -00 -2e -4c -56 -4c -33 -31 -33 -00 -2e -4c -56 -4c -33 -31 -34 -00 -2e -4c -32 -38 -35 -00 -2e -4c -56 -4c -33 -31 -35 -00 -2e -4c -56 -4c -33 -31 -36 -00 -2e -4c -56 -4c -33 -31 -37 -00 -2e -4c -46 -45 -34 -36 -00 -2e -4c -46 -42 -34 -37 -00 -2e -4c -56 -4c -33 -31 -38 -00 -2e -4c -43 -46 -49 -36 -30 -00 -2e -4c -43 -46 -49 -36 -31 -00 -2e -4c -43 -46 -49 -36 -32 -00 -2e -4c -43 -46 -49 -36 -33 -00 -2e -4c -56 -4c -33 -31 -39 -00 -2e -4c -56 -4c -33 -32 -30 -00 -2e -4c -32 -39 -35 -00 -2e -4c -56 -4c -33 -32 -31 -00 -2e -4c -32 -39 -39 -00 -2e -4c -32 -39 -37 -00 -2e -4c -56 -4c -33 -32 -32 -00 -2e -4c -33 -30 -32 -00 -2e -4c -56 -4c -33 -32 -33 -00 -2e -4c -33 -30 -38 -00 -2e -4c -33 -30 -34 -00 -2e -4c -33 -30 -37 -00 -2e -4c -56 -4c -33 -32 -34 -00 -2e -4c -56 -4c -33 -32 -35 -00 -2e -4c -56 -4c -33 -32 -36 -00 -2e -4c -56 -4c -33 -32 -37 -00 -2e -4c -56 -4c -33 -32 -38 -00 -2e -4c -56 -4c -33 -32 -39 -00 -2e -4c -56 -4c -33 -33 -30 -00 -2e -4c -46 -45 -34 -37 -00 -2e -4c -43 -33 -33 -00 -2e -4c -43 -33 -34 -00 -2e -4c -46 -42 -34 -38 -00 -2e -4c -56 -4c -33 -33 -31 -00 -2e -4c -43 -46 -49 -36 -34 -00 -2e -4c -43 -46 -49 -36 -35 -00 -2e -4c -43 -46 -49 -36 -36 -00 -2e -4c -43 -46 -49 -36 -37 -00 -2e -4c -56 -4c -33 -33 -32 -00 -2e -4c -33 -31 -31 -00 -2e -4c -56 -4c -33 -33 -33 -00 -2e -4c -33 -31 -35 -00 -2e -4c -56 -4c -33 -33 -34 -00 -2e -4c -56 -4c -33 -33 -35 -00 -2e -4c -56 -4c -33 -33 -36 -00 -2e -4c -56 -4c -33 -33 -37 -00 -2e -4c -56 -4c -33 -33 -38 -00 -2e -4c -56 -4c -33 -33 -39 -00 -2e -4c -56 -4c -33 -34 -30 -00 -2e -4c -56 -4c -33 -34 -31 -00 -2e -4c -56 -4c -33 -34 -32 -00 -2e -4c -56 -4c -33 -34 -33 -00 -2e -4c -56 -4c -33 -34 -34 -00 -2e -4c -56 -4c -33 -34 -35 -00 -2e -4c -56 -4c -33 -34 -36 -00 -2e -4c -56 -4c -33 -34 -37 -00 -2e -4c -56 -4c -33 -34 -38 -00 -2e -4c -46 -45 -34 -38 -00 -2e -4c -43 -33 -35 -00 -2e -4c -43 -33 -36 -00 -2e -4c -43 -33 -37 -00 -2e -4c -43 -33 -38 -00 -2e -4c -43 -33 -39 -00 -2e -4c -43 -34 -30 -00 -2e -4c -43 -34 -31 -00 -2e -4c -43 -34 -32 -00 -2e -4c -43 -34 -33 -00 -2e -4c -46 -42 -35 -30 -00 -2e -4c -56 -4c -33 -34 -39 -00 -2e -4c -43 -46 -49 -36 -38 -00 -2e -4c -56 -4c -33 -35 -30 -00 -2e -4c -43 -46 -49 -36 -39 -00 -2e -4c -56 -4c -33 -35 -31 -00 -2e -4c -43 -46 -49 -37 -30 -00 -2e -4c -56 -4c -33 -35 -32 -00 -2e -4c -43 -46 -49 -37 -31 -00 -2e -4c -56 -4c -33 -35 -33 -00 -2e -4c -43 -46 -49 -37 -32 -00 -2e -4c -56 -4c -33 -35 -34 -00 -2e -4c -43 -46 -49 -37 -33 -00 -2e -4c -56 -4c -33 -35 -35 -00 -2e -4c -43 -46 -49 -37 -34 -00 -2e -4c -56 -4c -33 -35 -36 -00 -2e -4c -33 -36 -36 -00 -2e -4c -56 -4c -33 -35 -37 -00 -2e -4c -56 -4c -33 -35 -38 -00 -2e -4c -56 -4c -33 -35 -39 -00 -2e -4c -56 -4c -33 -36 -30 -00 -2e -4c -56 -4c -33 -36 -31 -00 -2e -4c -56 -4c -33 -36 -32 -00 -2e -4c -56 -4c -33 -36 -33 -00 -2e -4c -56 -4c -33 -36 -34 -00 -2e -4c -56 -4c -33 -36 -35 -00 -66 -61 -69 -6c -65 -64 -00 -2e -4c -56 -4c -33 -36 -36 -00 -2e -4c -33 -32 -30 -00 -2e -4c -56 -4c -33 -36 -37 -00 -2e -4c -33 -37 -30 -00 -2e -4c -42 -42 -37 -00 -2e -4c -42 -42 -38 -00 -2e -4c -42 -42 -39 -00 -2e -4c -56 -4c -33 -36 -38 -00 -2e -4c -33 -36 -35 -00 -66 -61 -69 -6c -6d -73 -67 -00 -2e -4c -56 -4c -33 -36 -39 -00 -2e -4c -33 -33 -31 -00 -2e -4c -42 -45 -39 -00 -2e -4c -42 -45 -38 -00 -2e -4c -33 -36 -37 -00 -2e -4c -42 -45 -37 -00 -2e -4c -42 -42 -31 -30 -00 -2e -4c -42 -45 -31 -30 -00 -2e -4c -33 -36 -38 -00 -2e -4c -42 -42 -31 -31 -00 -2e -4c -42 -42 -31 -32 -00 -2e -4c -42 -42 -31 -33 -00 -2e -4c 56 4c 33 @@ -70014,54 +70014,6 @@ c0 00 00 00 -69 -19 -00 -00 -00 -00 -04 -00 -fd -15 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -62 -19 -00 -00 -00 -00 -04 -00 -fd -15 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 5b 19 00 @@ -70086,7 +70038,7 @@ fd 00 00 00 -55 +54 19 00 00 @@ -70094,8 +70046,8 @@ fd 00 04 00 -16 -17 +fd +15 00 00 00 @@ -70110,7 +70062,7 @@ fd 00 00 00 -4e +4d 19 00 00 @@ -70118,7 +70070,7 @@ fd 00 04 00 -df +fd 15 00 00 @@ -70142,6 +70094,54 @@ df 00 04 00 +16 +17 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +40 +19 +00 +00 +00 +00 +04 +00 +df +15 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +39 +19 +00 +00 +00 +00 +04 +00 db 15 00 @@ -70158,7 +70158,7 @@ db 00 00 00 -41 +33 19 00 00 @@ -70182,7 +70182,7 @@ d8 00 00 00 -3b +2d 19 00 00 @@ -70206,7 +70206,7 @@ d6 00 00 00 -35 +11 19 00 00 @@ -70230,126 +70230,6 @@ bf 00 00 00 -2f -19 -00 -00 -00 -00 -04 -00 -bf -15 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -29 -19 -00 -00 -00 -00 -04 -00 -bf -15 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -21 -19 -00 -00 -00 -00 -04 -00 -b5 -15 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -19 -19 -00 -00 -00 -00 -12 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -13 -19 -00 -00 -00 -00 -04 -00 -a9 -15 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 0b 19 00 @@ -70358,7 +70238,7 @@ a9 00 04 00 -a9 +bf 15 00 00 @@ -70382,7 +70262,7 @@ a9 00 04 00 -6e +bf 15 00 00 @@ -70398,7 +70278,103 @@ a9 00 00 00 -ff +f5 +18 +00 +00 +00 +00 +04 +00 +b5 +15 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ed +18 +00 +00 +00 +00 +12 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +e7 +18 +00 +00 +00 +00 +04 +00 +a9 +15 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +df +18 +00 +00 +00 +00 +04 +00 +a9 +15 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +d9 18 00 00 @@ -70422,7 +70398,7 @@ ff 00 00 00 -f9 +d3 18 00 00 @@ -70446,7 +70422,7 @@ f9 00 00 00 -f3 +cd 18 00 00 @@ -70470,7 +70446,7 @@ f3 00 00 00 -eb +c7 18 00 00 @@ -70494,7 +70470,31 @@ eb 00 00 00 -e5 +bf +18 +00 +00 +00 +00 +04 +00 +6e +15 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +b9 18 00 00 @@ -70518,7 +70518,7 @@ fd 00 00 00 -dd +b1 18 00 00 @@ -70542,7 +70542,7 @@ dd 00 00 00 -d6 +a3 18 00 00 @@ -70566,7 +70566,7 @@ d6 00 00 00 -ce +9b 18 00 00 @@ -70590,7 +70590,7 @@ ce 00 00 00 -c6 +93 18 00 00 @@ -70614,7 +70614,7 @@ c6 00 00 00 -be +8b 18 00 00 @@ -70638,7 +70638,7 @@ be 00 00 00 -b6 +83 18 00 00 @@ -70662,7 +70662,7 @@ b6 00 00 00 -ae +7b 18 00 00 @@ -70686,7 +70686,7 @@ ae 00 00 00 -a6 +73 18 00 00 @@ -70710,7 +70710,7 @@ a6 00 00 00 -9e +6b 18 00 00 @@ -70734,7 +70734,7 @@ a6 00 00 00 -96 +63 18 00 00 @@ -70758,7 +70758,7 @@ a6 00 00 00 -8e +5b 18 00 00 @@ -70782,7 +70782,7 @@ a6 00 00 00 -88 +55 18 00 00 @@ -70806,7 +70806,7 @@ a6 00 00 00 -80 +3e 18 00 00 @@ -70830,7 +70830,7 @@ a6 00 00 00 -78 +36 18 00 00 @@ -70854,7 +70854,7 @@ a6 00 00 00 -70 +2e 18 00 00 @@ -70878,7 +70878,7 @@ fa 00 00 00 -68 +26 18 00 00 @@ -70902,7 +70902,7 @@ fa 00 00 00 -60 +1e 18 00 00 @@ -70926,7 +70926,7 @@ f9 00 00 00 -58 +16 18 00 00 @@ -70950,7 +70950,7 @@ f9 00 00 00 -50 +0e 18 00 00 @@ -70974,7 +70974,7 @@ f8 00 00 00 -48 +06 18 00 00 @@ -70998,8 +70998,8 @@ f8 00 00 00 -40 -18 +fe +17 00 00 00 @@ -71022,8 +71022,8 @@ f6 00 00 00 -38 -18 +f6 +17 00 00 00 @@ -71046,8 +71046,8 @@ f6 00 00 00 -30 -18 +ee +17 00 00 00 @@ -71070,8 +71070,8 @@ f4 00 00 00 -28 -18 +e6 +17 00 00 00 @@ -71094,8 +71094,8 @@ f4 00 00 00 -20 -18 +de +17 00 00 00 @@ -71118,8 +71118,8 @@ f2 00 00 00 -18 -18 +d6 +17 00 00 00 @@ -71142,8 +71142,8 @@ f2 00 00 00 -10 -18 +ce +17 00 00 00 @@ -71166,8 +71166,8 @@ f0 00 00 00 -09 -18 +c7 +17 00 00 00 @@ -71190,8 +71190,8 @@ f0 00 00 00 -03 -18 +c1 +17 00 00 00 @@ -71214,7 +71214,7 @@ f8 00 00 00 -fd +bb 17 00 00 @@ -71238,7 +71238,7 @@ eb 00 00 00 -f7 +b5 17 00 00 @@ -71262,7 +71262,7 @@ f7 00 00 00 -f1 +af 17 00 00 @@ -71286,7 +71286,7 @@ f1 00 00 00 -eb +a9 17 00 00 @@ -71310,7 +71310,7 @@ e8 00 00 00 -e5 +a3 17 00 00 @@ -71334,7 +71334,7 @@ e8 00 00 00 -df +9d 17 00 00 @@ -71358,7 +71358,7 @@ e7 00 00 00 -d9 +97 17 00 00 @@ -71382,7 +71382,7 @@ e5 00 00 00 -d3 +91 17 00 00 @@ -71406,7 +71406,7 @@ d2 00 00 00 -cc +8a 17 00 00 @@ -71430,7 +71430,7 @@ f0 00 00 00 -c4 +82 17 00 00 @@ -71454,7 +71454,7 @@ f0 00 00 00 -bc +7a 17 00 00 @@ -71478,7 +71478,7 @@ ed 00 00 00 -b4 +72 17 00 00 @@ -71502,7 +71502,7 @@ e9 00 00 00 -ac +6a 17 00 00 @@ -71526,7 +71526,7 @@ e4 00 00 00 -a4 +62 17 00 00 @@ -71550,7 +71550,7 @@ df 00 00 00 -9c +5a 17 00 00 @@ -71574,7 +71574,7 @@ bf 00 00 00 -94 +41 17 00 00 @@ -71598,7 +71598,7 @@ b3 00 00 00 -8c +39 17 00 00 @@ -71622,7 +71622,7 @@ af 00 00 00 -84 +29 17 00 00 @@ -71646,7 +71646,7 @@ aa 00 00 00 -7c +21 17 00 00 @@ -71670,7 +71670,7 @@ a4 00 00 00 -74 +19 17 00 00 @@ -71694,7 +71694,7 @@ a4 00 00 00 -6c +11 17 00 00 @@ -71718,294 +71718,6 @@ a4 00 00 00 -64 -17 -00 -00 -00 -00 -04 -00 -87 -14 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -5c -17 -00 -00 -00 -00 -04 -00 -86 -14 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -54 -17 -00 -00 -00 -00 -04 -00 -82 -14 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -4e -17 -00 -00 -00 -00 -04 -00 -b0 -14 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -46 -17 -00 -00 -00 -00 -04 -00 -70 -14 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -40 -17 -00 -00 -00 -00 -04 -00 -87 -14 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -38 -17 -00 -00 -00 -00 -04 -00 -66 -14 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -30 -17 -00 -00 -00 -00 -04 -00 -66 -14 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -28 -17 -00 -00 -00 -00 -04 -00 -62 -14 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -20 -17 -00 -00 -00 -00 -04 -00 -5a -14 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -18 -17 -00 -00 -00 -00 -04 -00 -55 -14 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -10 -17 -00 -00 -00 -00 -04 -00 -50 -14 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 09 17 00 @@ -72014,6 +71726,270 @@ b0 00 04 00 +87 +14 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +01 +17 +00 +00 +00 +00 +04 +00 +86 +14 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +f9 +16 +00 +00 +00 +00 +04 +00 +82 +14 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +f3 +16 +00 +00 +00 +00 +04 +00 +b0 +14 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +eb +16 +00 +00 +00 +00 +04 +00 +70 +14 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +e5 +16 +00 +00 +00 +00 +04 +00 +87 +14 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +dd +16 +00 +00 +00 +00 +04 +00 +66 +14 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +d5 +16 +00 +00 +00 +00 +04 +00 +66 +14 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +cd +16 +00 +00 +00 +00 +04 +00 +62 +14 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +c5 +16 +00 +00 +00 +00 +04 +00 +5a +14 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +bd +16 +00 +00 +00 +00 +04 +00 +55 +14 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +b5 +16 +00 +00 +00 +00 +04 +00 50 14 00 @@ -72030,8 +72006,32 @@ b0 00 00 00 -03 -17 +ae +16 +00 +00 +00 +00 +04 +00 +50 +14 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +a8 +16 00 00 00 @@ -72054,7 +72054,7 @@ ca 00 00 00 -fd +a2 16 00 00 @@ -72078,7 +72078,7 @@ c1 00 00 00 -f6 +9b 16 00 00 @@ -72102,7 +72102,7 @@ f6 00 00 00 -ee +93 16 00 00 @@ -72126,7 +72126,7 @@ ee 00 00 00 -e6 +8b 16 00 00 @@ -72150,7 +72150,7 @@ e6 00 00 00 -de +83 16 00 00 @@ -72174,7 +72174,7 @@ de 00 00 00 -d6 +7b 16 00 00 @@ -72198,7 +72198,7 @@ d6 00 00 00 -ce +73 16 00 00 @@ -72222,7 +72222,7 @@ ce 00 00 00 -c6 +6b 16 00 00 @@ -72246,7 +72246,7 @@ c6 00 00 00 -be +63 16 00 00 @@ -72270,7 +72270,7 @@ fe 00 00 00 -b8 +5d 16 00 00 @@ -72294,7 +72294,7 @@ e1 00 00 00 -b2 +57 16 00 00 @@ -72318,7 +72318,7 @@ b2 00 00 00 -ac +51 16 00 00 @@ -72342,7 +72342,7 @@ b5 00 00 00 -a4 +49 16 00 00 @@ -72366,7 +72366,7 @@ b5 00 00 00 -9e +43 16 00 00 @@ -72390,7 +72390,7 @@ b5 00 00 00 -96 +3b 16 00 00 @@ -72414,7 +72414,7 @@ b5 00 00 00 -90 +35 16 00 00 @@ -72438,7 +72438,7 @@ b5 00 00 00 -8a +2f 16 00 00 @@ -72462,7 +72462,7 @@ fe 00 00 00 -82 +27 16 00 00 @@ -72486,7 +72486,7 @@ fe 00 00 00 -7c +21 16 00 00 @@ -72510,7 +72510,7 @@ fe 00 00 00 -74 +19 16 00 00 @@ -72534,7 +72534,7 @@ fe 00 00 00 -6c +11 16 00 00 @@ -72558,7 +72558,7 @@ fe 00 00 00 -64 +09 16 00 00 @@ -72582,7 +72582,7 @@ fe 00 00 00 -5c +01 16 00 00 @@ -72606,8 +72606,8 @@ fe 00 00 00 -54 -16 +f9 +15 00 00 00 @@ -72630,8 +72630,8 @@ fe 00 00 00 -4c -16 +f1 +15 00 00 00 @@ -72654,8 +72654,8 @@ fe 00 00 00 -44 -16 +e9 +15 00 00 00 @@ -72678,8 +72678,8 @@ fe 00 00 00 -3d -16 +e2 +15 00 00 00 @@ -72702,8 +72702,8 @@ fe 00 00 00 -36 -16 +db +15 00 00 00 @@ -72726,8 +72726,8 @@ fe 00 00 00 -2e -16 +d3 +15 00 00 00 @@ -72750,151 +72750,7 @@ fe 00 00 00 -26 -16 -00 -00 -00 -00 -04 -00 -2d -13 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -1e -16 -00 -00 -00 -00 -04 -00 -1c -13 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -18 -16 -00 -00 -00 -00 -04 -00 -f4 -12 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -10 -16 -00 -00 -00 -00 -04 -00 -f4 -12 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -08 -16 -00 -00 -00 -00 -04 -00 -eb -12 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -16 -00 -00 -00 -00 -04 -00 -e2 -12 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -fa +cb 15 00 00 @@ -72918,7 +72774,151 @@ fa 00 00 00 -f2 +c3 +15 +00 +00 +00 +00 +04 +00 +1c +13 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +bd +15 +00 +00 +00 +00 +04 +00 +f4 +12 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +b5 +15 +00 +00 +00 +00 +04 +00 +f4 +12 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ad +15 +00 +00 +00 +00 +04 +00 +eb +12 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +a5 +15 +00 +00 +00 +00 +04 +00 +e2 +12 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +9f +15 +00 +00 +00 +00 +04 +00 +2d +13 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +97 15 00 00 @@ -72942,7 +72942,7 @@ cd 00 00 00 -ea +8f 15 00 00 @@ -72966,7 +72966,7 @@ c2 00 00 00 -e2 +87 15 00 00 @@ -72990,7 +72990,7 @@ c1 00 00 00 -da +7f 15 00 00 @@ -73014,7 +73014,7 @@ bd 00 00 00 -d2 +77 15 00 00 @@ -73038,7 +73038,7 @@ b8 00 00 00 -ca +6f 15 00 00 @@ -73062,7 +73062,7 @@ b3 00 00 00 -c2 +67 15 00 00 @@ -73086,7 +73086,7 @@ ae 00 00 00 -ba +5f 15 00 00 @@ -73110,7 +73110,7 @@ a9 00 00 00 -b4 +59 15 00 00 @@ -73134,7 +73134,7 @@ a5 00 00 00 -ac +51 15 00 00 @@ -73158,7 +73158,7 @@ a5 00 00 00 -a6 +4b 15 00 00 @@ -73182,7 +73182,7 @@ a1 00 00 00 -9e +43 15 00 00 @@ -73206,7 +73206,7 @@ a1 00 00 00 -98 +3d 15 00 00 @@ -73230,7 +73230,7 @@ f2 00 00 00 -90 +35 15 00 00 @@ -73254,7 +73254,7 @@ f2 00 00 00 -8a +2f 15 00 00 @@ -73278,7 +73278,7 @@ f2 00 00 00 -82 +27 15 00 00 @@ -73302,7 +73302,7 @@ f2 00 00 00 -7c +21 15 00 00 @@ -73326,7 +73326,7 @@ f2 00 00 00 -74 +19 15 00 00 @@ -73350,7 +73350,7 @@ f2 00 00 00 -6e +13 15 00 00 @@ -73374,7 +73374,7 @@ d0 00 00 00 -66 +0b 15 00 00 @@ -73398,7 +73398,7 @@ d0 00 00 00 -60 +05 15 00 00 @@ -73422,8 +73422,8 @@ d0 00 00 00 -5a -15 +ff +14 00 00 00 @@ -73446,8 +73446,8 @@ d0 00 00 00 -52 -15 +f7 +14 00 00 00 @@ -73470,8 +73470,8 @@ d0 00 00 00 -4c -15 +f1 +14 00 00 00 @@ -73494,8 +73494,8 @@ c2 00 00 00 -44 -15 +e9 +14 00 00 00 @@ -73518,8 +73518,8 @@ c2 00 00 00 -3c -15 +e1 +14 00 00 00 @@ -73542,8 +73542,8 @@ c2 00 00 00 -34 -15 +d9 +14 00 00 00 @@ -73566,8 +73566,8 @@ c2 00 00 00 -2c -15 +d1 +14 00 00 00 @@ -73590,8 +73590,8 @@ c2 00 00 00 -24 -15 +c9 +14 00 00 00 @@ -73614,8 +73614,8 @@ c2 00 00 00 -1c -15 +c1 +14 00 00 00 @@ -73638,8 +73638,8 @@ c2 00 00 00 +b9 14 -15 00 00 00 @@ -73662,8 +73662,8 @@ c2 00 00 00 -0c -15 +b1 +14 00 00 00 @@ -73686,31 +73686,7 @@ c2 00 00 00 -04 -15 -00 -00 -00 -00 -04 -00 -30 -12 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -fd +a9 14 00 00 @@ -73734,7 +73710,31 @@ fd 00 00 00 -f6 +a2 +14 +00 +00 +00 +00 +04 +00 +30 +12 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +9b 14 00 00 @@ -73758,7 +73758,7 @@ f6 00 00 00 -ee +93 14 00 00 @@ -73782,7 +73782,7 @@ ee 00 00 00 -e8 +8d 14 00 00 @@ -73806,7 +73806,7 @@ e8 00 00 00 -e2 +87 14 00 00 @@ -73830,7 +73830,7 @@ e2 00 00 00 -da +7f 14 00 00 @@ -73854,7 +73854,7 @@ fe 00 00 00 -d2 +77 14 00 00 @@ -73878,7 +73878,7 @@ ea 00 00 00 -ca +6f 14 00 00 @@ -73902,7 +73902,7 @@ e5 00 00 00 -c2 +67 14 00 00 @@ -73926,7 +73926,7 @@ d0 00 00 00 -ba +5f 14 00 00 @@ -73950,7 +73950,7 @@ ba 00 00 00 -b2 +50 14 00 00 @@ -73974,7 +73974,7 @@ b2 00 00 00 -aa +48 14 00 00 @@ -73998,7 +73998,7 @@ aa 00 00 00 -a2 +40 14 00 00 @@ -74022,7 +74022,7 @@ a2 00 00 00 -9a +22 14 00 00 @@ -74046,7 +74046,7 @@ a2 00 00 00 -92 +1a 14 00 00 @@ -74070,7 +74070,7 @@ ff 00 00 00 -8a +12 14 00 00 @@ -74094,7 +74094,7 @@ fb 00 00 00 -82 +0a 14 00 00 @@ -74118,7 +74118,7 @@ f6 00 00 00 -7a +02 14 00 00 @@ -74142,438 +74142,6 @@ f1 00 00 00 -72 -14 -00 -00 -00 -00 -04 -00 -ec -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -6a -14 -00 -00 -00 -00 -04 -00 -e7 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -62 -14 -00 -00 -00 -00 -04 -00 -e2 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -5c -14 -00 -00 -00 -00 -04 -00 -d4 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -54 -14 -00 -00 -00 -00 -04 -00 -bf -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -4e -14 -00 -00 -00 -00 -04 -00 -83 -11 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -46 -14 -00 -00 -00 -00 -04 -00 -b6 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -40 -14 -00 -00 -00 -00 -04 -00 -8f -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -3a -14 -00 -00 -00 -00 -04 -00 -f0 -11 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -34 -14 -00 -00 -00 -00 -04 -00 -84 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -2e -14 -00 -00 -00 -00 -04 -00 -36 -11 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -26 -14 -00 -00 -00 -00 -04 -00 -76 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -1e -14 -00 -00 -00 -00 -04 -00 -51 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -18 -14 -00 -00 -00 -00 -04 -00 -4a -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -12 -14 -00 -00 -00 -00 -04 -00 -1a -11 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -0c -14 -00 -00 -00 -00 -04 -00 -00 -11 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -06 -14 -00 -00 -00 -00 -04 -00 -1d -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -14 -00 -00 -00 -00 -04 -00 -98 -11 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 fa 13 00 @@ -74582,7 +74150,7 @@ fa 00 04 00 -11 +ec 10 00 00 @@ -74606,6 +74174,414 @@ f2 00 04 00 +e7 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ea +13 +00 +00 +00 +00 +04 +00 +e2 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +e4 +13 +00 +00 +00 +00 +04 +00 +d4 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +dc +13 +00 +00 +00 +00 +04 +00 +bf +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +d6 +13 +00 +00 +00 +00 +04 +00 +83 +11 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ce +13 +00 +00 +00 +00 +04 +00 +b6 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +9b +13 +00 +00 +00 +00 +04 +00 +8f +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +95 +13 +00 +00 +00 +00 +04 +00 +f0 +11 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +8f +13 +00 +00 +00 +00 +04 +00 +84 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +89 +13 +00 +00 +00 +00 +04 +00 +36 +11 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +81 +13 +00 +00 +00 +00 +04 +00 +76 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +79 +13 +00 +00 +00 +00 +04 +00 +51 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +73 +13 +00 +00 +00 +00 +04 +00 +4a +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +6d +13 +00 +00 +00 +00 +04 +00 +1a +11 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +67 +13 +00 +00 +00 +00 +04 +00 +00 +11 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +61 +13 +00 +00 +00 +00 +04 +00 +1d +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +5b +13 +00 +00 +00 +00 +04 +00 +98 +11 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +55 +13 +00 +00 +00 +00 +04 +00 11 10 00 @@ -74622,7 +74598,31 @@ f2 00 00 00 -ec +4d +13 +00 +00 +00 +00 +04 +00 +11 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +47 13 00 00 @@ -74646,7 +74646,7 @@ d0 00 00 00 -e6 +41 13 00 00 @@ -74670,7 +74670,7 @@ fd 00 00 00 -de +39 13 00 00 @@ -74694,7 +74694,7 @@ fd 00 00 00 -d8 +33 13 00 00 @@ -74718,7 +74718,7 @@ d8 00 00 00 -d0 +2b 13 00 00 @@ -74742,7 +74742,7 @@ f7 00 00 00 -c8 +23 13 00 00 @@ -74766,7 +74766,7 @@ db 00 00 00 -c0 +1b 13 00 00 @@ -74790,7 +74790,7 @@ db 00 00 00 -b8 +13 13 00 00 @@ -74814,7 +74814,7 @@ d7 00 00 00 -b0 +0b 13 00 00 @@ -74838,7 +74838,7 @@ d4 00 00 00 -a8 +03 13 00 00 @@ -74862,8 +74862,8 @@ cf 00 00 00 -a0 -13 +fb +12 00 00 00 @@ -74886,8 +74886,8 @@ c7 00 00 00 -98 -13 +f3 +12 00 00 00 @@ -74910,8 +74910,8 @@ c2 00 00 00 -90 -13 +eb +12 00 00 00 @@ -74934,8 +74934,8 @@ ba 00 00 00 -88 -13 +e3 +12 00 00 00 @@ -74958,8 +74958,8 @@ b5 00 00 00 -80 -13 +db +12 00 00 00 @@ -74982,8 +74982,8 @@ b0 00 00 00 -79 -13 +d4 +12 00 00 00 @@ -75006,8 +75006,8 @@ b0 00 00 00 -73 -13 +ce +12 00 00 00 @@ -75030,8 +75030,8 @@ b8 00 00 00 -6d -13 +c8 +12 00 00 00 @@ -75054,8 +75054,8 @@ a6 00 00 00 -67 -13 +c2 +12 00 00 00 @@ -75078,8 +75078,8 @@ a6 00 00 00 -61 -13 +bc +12 00 00 00 @@ -75102,8 +75102,8 @@ a6 00 00 00 -5a -13 +b5 +12 00 00 00 @@ -75126,8 +75126,8 @@ a8 00 00 00 -52 -13 +ad +12 00 00 00 @@ -75150,8 +75150,8 @@ a3 00 00 00 -4a -13 +a5 +12 00 00 00 @@ -75174,8 +75174,8 @@ a3 00 00 00 -42 -13 +9d +12 00 00 00 @@ -75198,8 +75198,8 @@ a3 00 00 00 -3c -13 +97 +12 00 00 00 @@ -75222,8 +75222,8 @@ a3 00 00 00 -34 -13 +8f +12 00 00 00 @@ -75246,8 +75246,8 @@ a3 00 00 00 -2c -13 +87 +12 00 00 00 @@ -75270,8 +75270,8 @@ a3 00 00 00 -26 -13 +73 +12 00 00 00 @@ -75294,8 +75294,8 @@ a3 00 00 00 -1e -13 +6b +12 00 00 00 @@ -75318,8 +75318,8 @@ a3 00 00 00 -16 -13 +63 +12 00 00 00 @@ -75342,8 +75342,8 @@ a3 00 00 00 -0e -13 +5b +12 00 00 00 @@ -75366,8 +75366,8 @@ a3 00 00 00 -08 -13 +55 +12 00 00 00 @@ -75390,31 +75390,7 @@ a3 00 00 00 -02 -13 -00 -00 -00 -00 -04 -00 -45 -0f -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -fa +4f 12 00 00 @@ -75438,7 +75414,31 @@ fa 00 00 00 -f4 +47 +12 +00 +00 +00 +00 +04 +00 +45 +0f +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +2b 12 00 00 @@ -75462,7 +75462,7 @@ f4 00 00 00 -ec +23 12 00 00 @@ -75486,7 +75486,7 @@ ec 00 00 00 -e4 +1b 12 00 00 @@ -75510,7 +75510,7 @@ e4 00 00 00 -de +15 12 00 00 @@ -75534,7 +75534,7 @@ de 00 00 00 -d6 +0d 12 00 00 @@ -75558,7 +75558,7 @@ d6 00 00 00 -ce +05 12 00 00 @@ -75582,8 +75582,8 @@ ce 00 00 00 -c6 -12 +fd +11 00 00 00 @@ -75606,8 +75606,8 @@ c6 00 00 00 -be -12 +f5 +11 00 00 00 @@ -75630,8 +75630,8 @@ be 00 00 00 -b6 -12 +ed +11 00 00 00 @@ -75654,8 +75654,8 @@ b6 00 00 00 -ae -12 +e5 +11 00 00 00 @@ -75678,8 +75678,8 @@ ae 00 00 00 -a6 -12 +dd +11 00 00 00 @@ -75702,8 +75702,8 @@ fc 00 00 00 -9e -12 +d5 +11 00 00 00 @@ -75726,8 +75726,8 @@ f7 00 00 00 -96 -12 +cd +11 00 00 00 @@ -75750,8 +75750,8 @@ ee 00 00 00 -8e -12 +c5 +11 00 00 00 @@ -75774,8 +75774,8 @@ e6 00 00 00 -88 -12 +bf +11 00 00 00 @@ -75798,8 +75798,8 @@ e6 00 00 00 -80 -12 +b7 +11 00 00 00 @@ -75822,8 +75822,8 @@ d6 00 00 00 -7a -12 +b1 +11 00 00 00 @@ -75846,8 +75846,8 @@ e6 00 00 00 -74 -12 +ab +11 00 00 00 @@ -75870,8 +75870,8 @@ c9 00 00 00 -6e -12 +a5 +11 00 00 00 @@ -75894,8 +75894,8 @@ c9 00 00 00 -68 -12 +9f +11 00 00 00 @@ -75918,8 +75918,8 @@ f7 00 00 00 -60 -12 +97 +11 00 00 00 @@ -75942,8 +75942,8 @@ c2 00 00 00 -5a -12 +91 +11 00 00 00 @@ -75966,8 +75966,8 @@ b9 00 00 00 -52 -12 +89 +11 00 00 00 @@ -75990,8 +75990,8 @@ b9 00 00 00 -4a -12 +81 +11 00 00 00 @@ -76014,8 +76014,8 @@ a2 00 00 00 -42 -12 +79 +11 00 00 00 @@ -76038,8 +76038,8 @@ a2 00 00 00 -3a -12 +71 +11 00 00 00 @@ -76062,8 +76062,8 @@ a2 00 00 00 -34 -12 +6b +11 00 00 00 @@ -76086,8 +76086,8 @@ a2 00 00 00 -2c -12 +63 +11 00 00 00 @@ -76110,8 +76110,8 @@ a2 00 00 00 -24 -12 +5b +11 00 00 00 @@ -76134,8 +76134,8 @@ a2 00 00 00 -1c -12 +53 +11 00 00 00 @@ -76158,8 +76158,8 @@ a2 00 00 00 -14 -12 +4b +11 00 00 00 @@ -76182,8 +76182,8 @@ a2 00 00 00 -0c -12 +43 +11 00 00 00 @@ -76206,8 +76206,8 @@ a2 00 00 00 -04 -12 +3b +11 00 00 00 @@ -76230,7 +76230,7 @@ a2 00 00 00 -fc +33 11 00 00 @@ -76254,7 +76254,7 @@ fc 00 00 00 -f4 +2b 11 00 00 @@ -76278,7 +76278,7 @@ f4 00 00 00 -ec +23 11 00 00 @@ -76302,7 +76302,7 @@ ec 00 00 00 -e5 +1c 11 00 00 @@ -76326,7 +76326,7 @@ e5 00 00 00 -de +15 11 00 00 @@ -76350,7 +76350,7 @@ de 00 00 00 -d8 +0f 11 00 00 @@ -76374,7 +76374,7 @@ d8 00 00 00 -d0 +07 11 00 00 @@ -76398,7 +76398,7 @@ d0 00 00 00 -ca +01 11 00 00 @@ -76422,8 +76422,8 @@ ca 00 00 00 -c2 -11 +f9 +10 00 00 00 @@ -76446,8 +76446,8 @@ c2 00 00 00 -bc -11 +f3 +10 00 00 00 @@ -76470,8 +76470,8 @@ bc 00 00 00 -b4 -11 +eb +10 00 00 00 @@ -76494,8 +76494,8 @@ b4 00 00 00 -ae -11 +e5 +10 00 00 00 @@ -76518,8 +76518,8 @@ ae 00 00 00 -a6 -11 +dd +10 00 00 00 @@ -76542,8 +76542,8 @@ a6 00 00 00 -9e -11 +d5 +10 00 00 00 @@ -76566,8 +76566,8 @@ a6 00 00 00 -96 -11 +cd +10 00 00 00 @@ -76590,8 +76590,8 @@ a6 00 00 00 -90 -11 +c7 +10 00 00 00 @@ -76614,8 +76614,8 @@ a6 00 00 00 -8a -11 +c1 +10 00 00 00 @@ -76638,8 +76638,8 @@ a6 00 00 00 -82 -11 +b9 +10 00 00 00 @@ -76662,8 +76662,8 @@ a6 00 00 00 -7c -11 +b3 +10 00 00 00 @@ -76686,8 +76686,8 @@ a6 00 00 00 -76 -11 +ad +10 00 00 00 @@ -76710,8 +76710,8 @@ a6 00 00 00 -6e -11 +96 +10 00 00 00 @@ -76734,8 +76734,8 @@ fb 00 00 00 -66 -11 +8e +10 00 00 00 @@ -76758,8 +76758,8 @@ f0 00 00 00 -60 -11 +88 +10 00 00 00 @@ -76782,8 +76782,8 @@ ef 00 00 00 -58 -11 +80 +10 00 00 00 @@ -76806,8 +76806,8 @@ e8 00 00 00 -50 -11 +78 +10 00 00 00 @@ -76830,8 +76830,8 @@ e7 00 00 00 -4a -11 +72 +10 00 00 00 @@ -76854,8 +76854,8 @@ e6 00 00 00 -42 -11 +6a +10 00 00 00 @@ -76878,8 +76878,8 @@ e6 00 00 00 -3c -11 +64 +10 00 00 00 @@ -76902,8 +76902,8 @@ e6 00 00 00 -34 -11 +5c +10 00 00 00 @@ -76926,8 +76926,8 @@ cb 00 00 00 -2e -11 +56 +10 00 00 00 @@ -76950,8 +76950,8 @@ e8 00 00 00 -26 -11 +4e +10 00 00 00 @@ -76974,8 +76974,8 @@ c1 00 00 00 -1e -11 +46 +10 00 00 00 @@ -76998,8 +76998,8 @@ c1 00 00 00 -16 -11 +3e +10 00 00 00 @@ -77022,8 +77022,8 @@ c0 00 00 00 -0f -11 +37 +10 00 00 00 @@ -77046,8 +77046,8 @@ c0 00 00 00 -08 -11 +30 +10 00 00 00 @@ -77070,8 +77070,8 @@ bb 00 00 00 -00 -11 +28 +10 00 00 00 @@ -77094,7 +77094,7 @@ b6 00 00 00 -f8 +20 10 00 00 @@ -77118,7 +77118,7 @@ ab 00 00 00 -f0 +18 10 00 00 @@ -77142,7 +77142,7 @@ a8 00 00 00 -e8 +10 10 00 00 @@ -77166,7 +77166,7 @@ a7 00 00 00 -e0 +08 10 00 00 @@ -77190,7 +77190,7 @@ e0 00 00 00 -d8 +00 10 00 00 @@ -77214,8 +77214,8 @@ d8 00 00 00 -d0 -10 +f8 +0f 00 00 00 @@ -77238,8 +77238,8 @@ d0 00 00 00 -ca -10 +f2 +0f 00 00 00 @@ -77262,8 +77262,8 @@ a8 00 00 00 -c4 -10 +ec +0f 00 00 00 @@ -77286,8 +77286,8 @@ a0 00 00 00 -bc -10 +e4 +0f 00 00 00 @@ -77310,8 +77310,8 @@ bc 00 00 00 -b4 -10 +dc +0f 00 00 00 @@ -77334,8 +77334,8 @@ b4 00 00 00 -ac -10 +d4 +0f 00 00 00 @@ -77358,8 +77358,8 @@ ac 00 00 00 -a5 -10 +cd +0f 00 00 00 @@ -77382,8 +77382,8 @@ a5 00 00 00 -9f -10 +c7 +0f 00 00 00 @@ -77406,8 +77406,8 @@ a5 00 00 00 -98 -10 +c0 +0f 00 00 00 @@ -77430,8 +77430,8 @@ a5 00 00 00 -90 -10 +a9 +0f 00 00 00 @@ -77454,8 +77454,8 @@ a5 00 00 00 -8a -10 +a3 +0f 00 00 00 @@ -77478,8 +77478,8 @@ a5 00 00 00 -82 -10 +9b +0f 00 00 00 @@ -77502,8 +77502,8 @@ a5 00 00 00 -7b -10 +94 +0f 00 00 00 @@ -77526,8 +77526,8 @@ a5 00 00 00 -74 -10 +8d +0f 00 00 00 @@ -77550,8 +77550,8 @@ a5 00 00 00 -6c -10 +85 +0f 00 00 00 @@ -77574,8 +77574,8 @@ a5 00 00 00 -64 -10 +6b +0f 00 00 00 @@ -77598,8 +77598,8 @@ a5 00 00 00 -5c -10 +63 +0f 00 00 00 @@ -77622,8 +77622,8 @@ a5 00 00 00 -54 -10 +5b +0f 00 00 00 @@ -77646,8 +77646,8 @@ a5 00 00 00 -4e -10 +55 +0f 00 00 00 @@ -77670,8 +77670,8 @@ a5 00 00 00 -48 -10 +4f +0f 00 00 00 @@ -77694,8 +77694,8 @@ a5 00 00 00 -40 -10 +47 +0f 00 00 00 @@ -77718,8 +77718,8 @@ a5 00 00 00 -38 -10 +3f +0f 00 00 00 @@ -77742,8 +77742,32 @@ a5 00 00 00 +37 +0f +00 +00 +00 +00 +04 +00 +20 +0d +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 30 -10 +0f 00 00 00 @@ -77767,31 +77791,7 @@ a5 00 00 29 -10 -00 -00 -00 -00 -04 -00 -20 -0d -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -22 -10 +0f 00 00 00 @@ -77814,8 +77814,8 @@ a5 00 00 00 -1c -10 +23 +0f 00 00 00 @@ -77838,8 +77838,8 @@ a5 00 00 00 -16 -10 +1d +0f 00 00 00 @@ -77862,8 +77862,32 @@ a5 00 00 00 +15 +0f +00 +00 +00 +00 +04 +00 +00 +0d +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 0e -10 +0f 00 00 00 @@ -77887,31 +77911,7 @@ a5 00 00 07 -10 -00 -00 -00 -00 -04 -00 -00 -0d -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -10 +0f 00 00 00 @@ -77934,7 +77934,7 @@ f7 00 00 00 -fa +01 0f 00 00 @@ -77958,8 +77958,32 @@ f4 00 00 00 +f9 +0e +00 +00 +00 +00 +04 +00 +e0 +0c +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 f2 -0f +0e 00 00 00 @@ -77983,31 +78007,7 @@ e0 00 00 eb -0f -00 -00 -00 -00 -04 -00 -e0 -0c -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -e4 -0f +0e 00 00 00 @@ -78030,8 +78030,8 @@ db 00 00 00 -dc -0f +e3 +0e 00 00 00 @@ -78054,8 +78054,8 @@ da 00 00 00 -d4 -0f +db +0e 00 00 00 @@ -78078,8 +78078,8 @@ c3 00 00 00 -cc -0f +d3 +0e 00 00 00 @@ -78102,8 +78102,8 @@ c2 00 00 00 -c4 -0f +cb +0e 00 00 00 @@ -78126,8 +78126,8 @@ ba 00 00 00 -be -0f +c5 +0e 00 00 00 @@ -78150,8 +78150,8 @@ c3 00 00 00 -b6 -0f +bd +0e 00 00 00 @@ -78174,8 +78174,8 @@ b1 00 00 00 -ae -0f +b5 +0e 00 00 00 @@ -78198,8 +78198,32 @@ b1 00 00 00 +ad +0e +00 +00 +00 +00 +04 +00 +b0 +0c +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 a6 -0f +0e 00 00 00 @@ -78223,31 +78247,7 @@ b0 00 00 9f -0f -00 -00 -00 -00 -04 -00 -b0 -0c -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -98 -0f +0e 00 00 00 @@ -78270,8 +78270,8 @@ a2 00 00 00 -90 -0f +97 +0e 00 00 00 @@ -78294,8 +78294,8 @@ a2 00 00 00 -88 -0f +8f +0e 00 00 00 @@ -78318,8 +78318,8 @@ a2 00 00 00 -80 -0f +87 +0e 00 00 00 @@ -78342,8 +78342,8 @@ a2 00 00 00 -78 -0f +7f +0e 00 00 00 @@ -78366,8 +78366,8 @@ a2 00 00 00 -70 -0f +77 +0e 00 00 00 @@ -78390,8 +78390,8 @@ a2 00 00 00 -68 -0f +6f +0e 00 00 00 @@ -78414,8 +78414,8 @@ a2 00 00 00 -60 -0f +67 +0e 00 00 00 @@ -78438,8 +78438,8 @@ fc 00 00 00 -58 -0f +5f +0e 00 00 00 @@ -78462,8 +78462,8 @@ d9 00 00 00 -50 -0f +57 +0e 00 00 00 @@ -78486,8 +78486,8 @@ cd 00 00 00 -48 -0f +4f +0e 00 00 00 @@ -78510,8 +78510,8 @@ a9 00 00 00 -40 -0f +47 +0e 00 00 00 @@ -78534,8 +78534,8 @@ a9 00 00 00 -3a -0f +41 +0e 00 00 00 @@ -78558,8 +78558,8 @@ a9 00 00 00 -32 -0f +39 +0e 00 00 00 @@ -78582,8 +78582,8 @@ a9 00 00 00 -2a -0f +31 +0e 00 00 00 @@ -78606,8 +78606,8 @@ a9 00 00 00 -22 -0f +14 +0e 00 00 00 @@ -78630,8 +78630,8 @@ a9 00 00 00 -1a -0f +0c +0e 00 00 00 @@ -78654,8 +78654,8 @@ a9 00 00 00 -12 -0f +04 +0e 00 00 00 @@ -78678,8 +78678,8 @@ a9 00 00 00 -0c -0f +fe +0d 00 00 00 @@ -78702,8 +78702,8 @@ a9 00 00 00 -04 -0f +f6 +0d 00 00 00 @@ -78726,8 +78726,8 @@ a9 00 00 00 -fc -0e +df +0d 00 00 00 @@ -78750,8 +78750,8 @@ fc 00 00 00 -f4 -0e +d7 +0d 00 00 00 @@ -78774,8 +78774,8 @@ f1 00 00 00 -ec -0e +cf +0d 00 00 00 @@ -78798,8 +78798,8 @@ ec 00 00 00 -e4 -0e +b7 +0d 00 00 00 @@ -78822,8 +78822,8 @@ da 00 00 00 -dc -0e +af +0d 00 00 00 @@ -78846,8 +78846,8 @@ d5 00 00 00 -d4 -0e +96 +0d 00 00 00 @@ -78870,8 +78870,8 @@ c3 00 00 00 -cc -0e +8e +0d 00 00 00 @@ -78894,8 +78894,8 @@ be 00 00 00 -c4 -0e +7c +0d 00 00 00 @@ -78918,8 +78918,8 @@ ac 00 00 00 -bc -0e +74 +0d 00 00 00 @@ -78942,8 +78942,8 @@ a7 00 00 00 -b4 -0e +5e +0d 00 00 00 @@ -78966,8 +78966,8 @@ b4 00 00 00 -ac -0e +56 +0d 00 00 00 @@ -78990,8 +78990,8 @@ ac 00 00 00 -a4 -0e +40 +0d 00 00 00 @@ -79014,8 +79014,8 @@ a4 00 00 00 -9c -0e +38 +0d 00 00 00 @@ -79038,8 +79038,8 @@ a4 00 00 00 -94 -0e +1d +0d 00 00 00 @@ -79062,8 +79062,8 @@ a4 00 00 00 -8e -0e +17 +0d 00 00 00 @@ -79086,8 +79086,8 @@ a4 00 00 00 -86 -0e +0f +0d 00 00 00 @@ -79110,8 +79110,8 @@ a4 00 00 00 -7e -0e +07 +0d 00 00 00 @@ -79134,8 +79134,8 @@ a4 00 00 00 -76 -0e +ff +0c 00 00 00 @@ -79158,8 +79158,8 @@ a4 00 00 00 -6e -0e +f7 +0c 00 00 00 @@ -79182,8 +79182,8 @@ a4 00 00 00 -66 -0e +ef +0c 00 00 00 @@ -79206,8 +79206,8 @@ a4 00 00 00 -5e -0e +e7 +0c 00 00 00 @@ -79230,8 +79230,8 @@ a4 00 00 00 -56 -0e +df +0c 00 00 00 @@ -79254,8 +79254,8 @@ ff 00 00 00 -4e -0e +d7 +0c 00 00 00 @@ -79278,8 +79278,8 @@ f0 00 00 00 -46 -0e +c3 +0c 00 00 00 @@ -79302,8 +79302,8 @@ e6 00 00 00 -3e -0e +bb +0c 00 00 00 @@ -79326,8 +79326,8 @@ d7 00 00 00 -36 -0e +a3 +0c 00 00 00 @@ -79350,8 +79350,8 @@ c5 00 00 00 -2e -0e +9b +0c 00 00 00 @@ -79374,8 +79374,8 @@ b9 00 00 00 -26 -0e +93 +0c 00 00 00 @@ -79398,8 +79398,8 @@ b9 00 00 00 -1e -0e +8b +0c 00 00 00 @@ -79422,8 +79422,8 @@ b9 00 00 00 -16 -0e +6d +0c 00 00 00 @@ -79446,8 +79446,8 @@ b9 00 00 00 -0e -0e +65 +0c 00 00 00 @@ -79470,8 +79470,8 @@ b9 00 00 00 -08 -0e +51 +0c 00 00 00 @@ -79494,8 +79494,8 @@ b9 00 00 00 -00 -0e +36 +0c 00 00 00 @@ -79518,8 +79518,8 @@ b9 00 00 00 -f8 -0d +2e +0c 00 00 00 @@ -79542,8 +79542,8 @@ f8 00 00 00 -f0 -0d +26 +0c 00 00 00 @@ -79566,8 +79566,8 @@ f0 00 00 00 -e8 -0d +1e +0c 00 00 00 @@ -79590,8 +79590,8 @@ e8 00 00 00 -e0 -0d +16 +0c 00 00 00 @@ -79614,8 +79614,8 @@ e0 00 00 00 -d8 -0d +fd +0b 00 00 00 @@ -79638,8 +79638,8 @@ f9 00 00 00 -d0 -0d +e6 +0b 00 00 00 @@ -79662,8 +79662,8 @@ b5 00 00 00 -c8 -0d +de +0b 00 00 00 @@ -79686,8 +79686,8 @@ ab 00 00 00 -c0 -0d +d6 +0b 00 00 00 @@ -79710,8 +79710,8 @@ a8 00 00 00 -b8 -0d +ce +0b 00 00 00 @@ -79734,8 +79734,8 @@ a0 00 00 00 -b2 -0d +c8 +0b 00 00 00 @@ -79758,8 +79758,8 @@ d0 00 00 00 -aa -0d +c0 +0b 00 00 00 @@ -79782,8 +79782,8 @@ aa 00 00 00 -a2 -0d +b8 +0b 00 00 00 @@ -79806,8 +79806,8 @@ a2 00 00 00 -9a -0d +b0 +0b 00 00 00 @@ -79830,8 +79830,8 @@ a2 00 00 00 -92 -0d +a8 +0b 00 00 00 @@ -79854,8 +79854,8 @@ a2 00 00 00 -8a -0d +a0 +0b 00 00 00 @@ -79878,8 +79878,8 @@ a2 00 00 00 -82 -0d +98 +0b 00 00 00 @@ -79902,8 +79902,8 @@ a2 00 00 00 -7a -0d +90 +0b 00 00 00 @@ -79926,8 +79926,8 @@ a2 00 00 00 -72 -0d +88 +0b 00 00 00 @@ -79950,8 +79950,8 @@ a2 00 00 00 -6c -0d +82 +0b 00 00 00 @@ -79974,8 +79974,8 @@ a2 00 00 00 -66 -0d +7c +0b 00 00 00 @@ -79998,8 +79998,8 @@ a2 00 00 00 -60 -0d +76 +0b 00 00 00 @@ -80022,8 +80022,8 @@ e4 00 00 00 -5a -0d +70 +0b 00 00 00 @@ -80046,8 +80046,8 @@ e4 00 00 00 -54 -0d +6a +0b 00 00 00 @@ -80070,8 +80070,8 @@ e4 00 00 00 -4c -0d +62 +0b 00 00 00 @@ -80094,8 +80094,8 @@ e4 00 00 00 -46 -0d +47 +0b 00 00 00 @@ -80118,8 +80118,8 @@ f0 00 00 00 -40 -0d +41 +0b 00 00 00 @@ -80142,8 +80142,8 @@ d7 00 00 00 -3a -0d +3b +0b 00 00 00 @@ -80166,8 +80166,8 @@ d7 00 00 00 -34 -0d +35 +0b 00 00 00 @@ -80190,8 +80190,8 @@ fc 00 00 00 -2e -0d +2f +0b 00 00 00 @@ -80214,8 +80214,8 @@ cd 00 00 00 -28 -0d +29 +0b 00 00 00 @@ -80238,8 +80238,8 @@ cd 00 00 00 -22 -0d +23 +0b 00 00 00 @@ -80262,8 +80262,8 @@ b9 00 00 00 -1c -0d +1d +0b 00 00 00 @@ -80286,8 +80286,8 @@ b9 00 00 00 -16 -0d +17 +0b 00 00 00 @@ -80310,8 +80310,8 @@ b9 00 00 00 -10 -0d +11 +0b 00 00 00 @@ -80334,8 +80334,8 @@ b9 00 00 00 -0a -0d +0b +0b 00 00 00 @@ -80358,8 +80358,8 @@ b9 00 00 00 -04 -0d +05 +0b 00 00 00 @@ -80382,8 +80382,8 @@ b9 00 00 00 -fe -0c +ff +0a 00 00 00 @@ -80406,8 +80406,8 @@ fe 00 00 00 -f8 -0c +f9 +0a 00 00 00 @@ -80430,8 +80430,8 @@ f8 00 00 00 -f2 -0c +f3 +0a 00 00 00 @@ -80454,8 +80454,8 @@ f1 00 00 00 -ec -0c +ed +0a 00 00 00 @@ -80478,8 +80478,8 @@ da 00 00 00 -e6 -0c +e7 +0a 00 00 00 @@ -80502,8 +80502,8 @@ c3 00 00 00 -e0 -0c +e1 +0a 00 00 00 @@ -80526,8 +80526,8 @@ ac 00 00 00 -da -0c +db +0a 00 00 00 @@ -80550,8 +80550,8 @@ da 00 00 00 -d4 -0c +d5 +0a 00 00 00 @@ -80574,8 +80574,8 @@ d4 00 00 00 -ce -0c +cf +0a 00 00 00 @@ -80598,8 +80598,8 @@ f9 00 00 00 -c9 -0c +ca +0a 00 00 00 @@ -80622,8 +80622,8 @@ c9 00 00 00 -c4 -0c +c5 +0a 00 00 00 @@ -80646,8 +80646,8 @@ c4 00 00 00 -bf -0c +c0 +0a 00 00 00 @@ -80670,8 +80670,8 @@ bf 00 00 00 -ba -0c +bb +0a 00 00 00 @@ -80694,8 +80694,8 @@ ba 00 00 00 -b5 -0c +b6 +0a 00 00 00 @@ -80718,8 +80718,8 @@ b5 00 00 00 -af -0c +b0 +0a 00 00 00 @@ -80742,8 +80742,8 @@ af 00 00 00 -aa -0c +ab +0a 00 00 00 @@ -80766,8 +80766,8 @@ aa 00 00 00 -a4 -0c +a5 +0a 00 00 00 @@ -80790,8 +80790,8 @@ b5 00 00 00 -9f -0c +a0 +0a 00 00 00 @@ -80814,8 +80814,8 @@ b5 00 00 00 -97 -0c +98 +0a 00 00 00 @@ -80838,8 +80838,8 @@ e3 00 00 00 -91 -0c +92 +0a 00 00 00 @@ -80862,8 +80862,8 @@ a0 00 00 00 -8c -0c +8d +0a 00 00 00 @@ -80886,8 +80886,8 @@ e3 00 00 00 -84 -0c +85 +0a 00 00 00 @@ -80910,8 +80910,8 @@ b3 00 00 00 -7f -0c +80 +0a 00 00 00 @@ -80934,8 +80934,8 @@ b0 00 00 00 -77 -0c +78 +0a 00 00 00 @@ -80958,8 +80958,8 @@ b0 00 00 00 -6f -0c +70 +0a 00 00 00 @@ -80982,8 +80982,8 @@ b0 00 00 00 -67 -0c +68 +0a 00 00 00 @@ -81006,8 +81006,8 @@ b0 00 00 00 -5f -0c +60 +0a 00 00 00 @@ -81030,8 +81030,8 @@ b0 00 00 00 -59 -0c +5a +0a 00 00 00 @@ -81054,8 +81054,8 @@ a8 00 00 00 -51 -0c +52 +0a 00 00 00 @@ -81078,8 +81078,8 @@ a8 00 00 00 -49 -0c +4a +0a 00 00 00 @@ -81102,8 +81102,8 @@ a8 00 00 00 -41 -0c +42 +0a 00 00 00 @@ -81126,8 +81126,8 @@ a8 00 00 00 -39 -0c +3a +0a 00 00 00 @@ -81150,8 +81150,8 @@ a8 00 00 00 -31 -0c +32 +0a 00 00 00 @@ -81174,8 +81174,8 @@ a8 00 00 00 -29 -0c +2a +0a 00 00 00 @@ -81198,8 +81198,8 @@ a8 00 00 00 -21 -0c +22 +0a 00 00 00 @@ -81222,8 +81222,8 @@ a8 00 00 00 -19 -0c +1a +0a 00 00 00 @@ -81246,8 +81246,8 @@ a8 00 00 00 -11 -0c +12 +0a 00 00 00 @@ -81270,56 +81270,56 @@ a8 00 00 00 +0a +0a +00 +00 +00 +00 +04 +00 +50 +07 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +03 +0a +00 +00 +00 +00 +04 +00 +50 +07 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +fd 09 -0c -00 -00 -00 -00 -04 -00 -50 -07 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -02 -0c -00 -00 -00 -00 -04 -00 -50 -07 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -fc -0b 00 00 00 @@ -81342,8 +81342,8 @@ fc 00 00 00 -f6 -0b +f7 +09 00 00 00 @@ -81366,8 +81366,8 @@ f6 00 00 00 -f0 -0b +f1 +09 00 00 00 @@ -81390,8 +81390,8 @@ f0 00 00 00 -ea -0b +eb +09 00 00 00 @@ -81414,8 +81414,8 @@ ea 00 00 00 -e4 -0b +e5 +09 00 00 00 @@ -81438,8 +81438,8 @@ e4 00 00 00 -de -0b +df +09 00 00 00 @@ -81462,8 +81462,8 @@ de 00 00 00 -d8 -0b +d9 +09 00 00 00 @@ -81486,8 +81486,8 @@ d8 00 00 00 -d1 -0b +d2 +09 00 00 00 @@ -81510,8 +81510,8 @@ d1 00 00 00 -c9 -0b +ca +09 00 00 00 @@ -81534,8 +81534,8 @@ c9 00 00 00 -c1 -0b +c2 +09 00 00 00 @@ -81558,8 +81558,8 @@ c1 00 00 00 -b9 -0b +ba +09 00 00 00 @@ -81582,8 +81582,8 @@ b9 00 00 00 -b1 -0b +b2 +09 00 00 00 @@ -81606,8 +81606,8 @@ b1 00 00 00 -a9 -0b +aa +09 00 00 00 @@ -81630,8 +81630,8 @@ a9 00 00 00 -a1 -0b +97 +09 00 00 00 @@ -81654,8 +81654,8 @@ a1 00 00 00 -9c -0b +92 +09 00 00 00 @@ -81678,8 +81678,8 @@ a1 00 00 00 -94 -0b +8a +09 00 00 00 @@ -81702,8 +81702,8 @@ a1 00 00 00 -8c -0b +82 +09 00 00 00 @@ -81726,8 +81726,8 @@ a1 00 00 00 -84 -0b +7a +09 00 00 00 @@ -81750,8 +81750,8 @@ a1 00 00 00 -7d -0b +73 +09 00 00 00 @@ -81774,8 +81774,8 @@ a1 00 00 00 -76 -0b +6c +09 00 00 00 @@ -81798,8 +81798,8 @@ a1 00 00 00 -6e -0b +64 +09 00 00 00 @@ -81822,1854 +81822,6 @@ a1 00 00 00 -66 -0b -00 -00 -00 -00 -04 -00 -16 -07 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -5e -0b -00 -00 -00 -00 -04 -00 -11 -07 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -56 -0b -00 -00 -00 -00 -04 -00 -ea -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -4e -0b -00 -00 -00 -00 -04 -00 -e9 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -46 -0b -00 -00 -00 -00 -04 -00 -e5 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -3e -0b -00 -00 -00 -00 -04 -00 -e0 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -36 -0b -00 -00 -00 -00 -04 -00 -c7 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -2e -0b -00 -00 -00 -00 -04 -00 -c6 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -26 -0b -00 -00 -00 -00 -04 -00 -c2 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -1e -0b -00 -00 -00 -00 -04 -00 -bd -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -19 -0b -00 -00 -00 -00 -04 -00 -f0 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -14 -0b -00 -00 -00 -00 -04 -00 -c7 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -0c -0b -00 -00 -00 -00 -04 -00 -a2 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -04 -0b -00 -00 -00 -00 -04 -00 -96 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -fc -0a -00 -00 -00 -00 -04 -00 -96 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -f4 -0a -00 -00 -00 -00 -04 -00 -92 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -ec -0a -00 -00 -00 -00 -04 -00 -8d -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -e4 -0a -00 -00 -00 -00 -04 -00 -85 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -dc -0a -00 -00 -00 -00 -04 -00 -80 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -d5 -0a -00 -00 -00 -00 -04 -00 -80 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -ce -0a -00 -00 -00 -00 -04 -00 -71 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -c7 -0a -00 -00 -00 -00 -04 -00 -70 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -c0 -0a -00 -00 -00 -00 -04 -00 -59 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -b9 -0a -00 -00 -00 -00 -04 -00 -0c -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -b2 -0a -00 -00 -00 -00 -04 -00 -0a -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -ab -0a -00 -00 -00 -00 -04 -00 -09 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -a6 -0a -00 -00 -00 -00 -04 -00 -10 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -9f -0a -00 -00 -00 -00 -04 -00 -04 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -97 -0a -00 -00 -00 -00 -04 -00 -04 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -90 -0a -00 -00 -00 -00 -04 -00 -00 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -89 -0a -00 -00 -00 -00 -04 -00 -00 -06 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -82 -0a -00 -00 -00 -00 -04 -00 -ff -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -7b -0a -00 -00 -00 -00 -04 -00 -fe -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -74 -0a -00 -00 -00 -00 -04 -00 -e9 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -6d -0a -00 -00 -00 -00 -04 -00 -e1 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -65 -0a -00 -00 -00 -00 -04 -00 -e1 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -5e -0a -00 -00 -00 -00 -04 -00 -e0 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -57 -0a -00 -00 -00 -00 -04 -00 -e0 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -50 -0a -00 -00 -00 -00 -04 -00 -d5 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -49 -0a -00 -00 -00 -00 -04 -00 -b9 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -44 -0a -00 -00 -00 -00 -04 -00 -70 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -3d -0a -00 -00 -00 -00 -04 -00 -6c -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -36 -0a -00 -00 -00 -00 -04 -00 -6a -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -31 -0a -00 -00 -00 -00 -04 -00 -66 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -2a -0a -00 -00 -00 -00 -04 -00 -1d -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -23 -0a -00 -00 -00 -00 -04 -00 -1c -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -1c -0a -00 -00 -00 -00 -04 -00 -18 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -15 -0a -00 -00 -00 -00 -04 -00 -0e -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -0e -0a -00 -00 -00 -00 -04 -00 -09 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -07 -0a -00 -00 -00 -00 -04 -00 -04 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -0a -00 -00 -00 -00 -04 -00 -01 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -f9 -09 -00 -00 -00 -00 -04 -00 -fa -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -f4 -09 -00 -00 -00 -00 -04 -00 -f6 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -ed -09 -00 -00 -00 -00 -04 -00 -f6 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -e6 -09 -00 -00 -00 -00 -04 -00 -eb -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -e1 -09 -00 -00 -00 -00 -04 -00 -e6 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -da -09 -00 -00 -00 -00 -04 -00 -e6 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -d3 -09 -00 -00 -00 -00 -04 -00 -db -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -ce -09 -00 -00 -00 -00 -04 -00 -d6 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -c9 -09 -00 -00 -00 -00 -04 -00 -c5 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -c4 -09 -00 -00 -00 -00 -04 -00 -b9 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -bf -09 -00 -00 -00 -00 -04 -00 -c2 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -ba -09 -00 -00 -00 -00 -04 -00 -cb -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -b5 -09 -00 -00 -00 -00 -04 -00 -01 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -b0 -09 -00 -00 -00 -00 -0d -00 -08 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -a9 -09 -00 -00 -00 -00 -04 -00 -be -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -a4 -09 -00 -00 -00 -00 -04 -00 -20 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -9f -09 -00 -00 -00 -00 -04 -00 -b5 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -9a -09 -00 -00 -00 -00 -04 -00 -37 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -95 -09 -00 -00 -00 -00 -04 -00 -9b -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -90 -09 -00 -00 -00 -00 -04 -00 -50 -05 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -89 -09 -00 -00 -00 -00 -04 -00 -7f -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -82 -09 -00 -00 -00 -00 -04 -00 -79 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -7b -09 -00 -00 -00 -00 -04 -00 -73 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -74 -09 -00 -00 -00 -00 -04 -00 -6e -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -6c -09 -00 -00 -00 -00 -04 -00 -6e -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -64 -09 -00 -00 -00 -00 -04 -00 -67 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 5c 09 00 @@ -83678,8 +81830,8 @@ b5 00 04 00 -62 -04 +16 +07 00 00 00 @@ -83702,8 +81854,8 @@ b5 00 04 00 -5d -04 +11 +07 00 00 00 @@ -83726,8 +81878,8 @@ b5 00 04 00 -55 -04 +ea +06 00 00 00 @@ -83742,7 +81894,7 @@ b5 00 00 00 -45 +44 09 00 00 @@ -83750,8 +81902,8 @@ b5 00 04 00 -50 -04 +e9 +06 00 00 00 @@ -83766,7 +81918,7 @@ b5 00 00 00 -3e +3c 09 00 00 @@ -83774,8 +81926,8 @@ b5 00 04 00 -50 -04 +e5 +06 00 00 00 @@ -83790,31 +81942,7 @@ b5 00 00 00 -38 -09 -00 -00 -00 -00 -11 -00 -30 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -31 +34 09 00 00 @@ -83822,8 +81950,8 @@ b5 00 04 00 -46 -04 +e0 +06 00 00 00 @@ -83838,7 +81966,7 @@ b5 00 00 00 -2a +2c 09 00 00 @@ -83846,8 +81974,8 @@ b5 00 04 00 -2e -04 +c7 +06 00 00 00 @@ -83862,7 +81990,7 @@ b5 00 00 00 -23 +24 09 00 00 @@ -83870,8 +81998,8 @@ b5 00 04 00 -2d -04 +c6 +06 00 00 00 @@ -83894,8 +82022,8 @@ b5 00 04 00 -29 -04 +c2 +06 00 00 00 @@ -83910,7 +82038,7 @@ b5 00 00 00 -15 +14 09 00 00 @@ -83918,8 +82046,8 @@ b5 00 04 00 -24 -04 +bd +06 00 00 00 @@ -83934,7 +82062,7 @@ b5 00 00 00 -0e +0f 09 00 00 @@ -83942,8 +82070,8 @@ b5 00 04 00 -20 -04 +f0 +06 00 00 00 @@ -83958,7 +82086,7 @@ b5 00 00 00 -07 +0a 09 00 00 @@ -83966,23 +82094,23 @@ b5 00 04 00 +c7 +06 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 02 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 09 00 00 @@ -83990,8 +82118,8 @@ b5 00 04 00 -01 -04 +a2 +06 00 00 00 @@ -84006,7 +82134,7 @@ b5 00 00 00 -f9 +fa 08 00 00 @@ -84014,8 +82142,8 @@ f9 00 04 00 -fd -03 +96 +06 00 00 00 @@ -84038,8 +82166,8 @@ f2 00 04 00 -f8 -03 +96 +06 00 00 00 @@ -84054,7 +82182,7 @@ f8 00 00 00 -eb +ea 08 00 00 @@ -84062,311 +82190,143 @@ eb 00 04 00 -f4 -03 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -e6 -08 -00 -00 -00 -00 -04 -00 -02 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -e1 -08 -00 -00 -00 -00 -04 -00 -ae -03 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -dc -08 -00 -00 -00 -00 -04 -00 -30 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -d5 -08 -00 -00 -00 -00 -04 -00 -9a -03 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -ce -08 -00 -00 -00 -00 -04 -00 -94 -03 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -c7 -08 -00 -00 -00 -00 -04 -00 -8b -03 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -bf -08 -00 -00 -00 -00 -04 -00 -8b -03 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -b8 -08 -00 -00 -00 -00 -04 -00 -87 -03 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -b0 -08 -00 -00 -00 -00 -04 -00 -82 -03 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -a8 -08 -00 -00 -00 -00 -04 -00 -7d -03 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -a0 -08 -00 -00 -00 -00 -04 -00 -75 -03 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -99 -08 -00 -00 -00 -00 -04 -00 -70 -03 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 92 +06 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +e2 +08 +00 +00 +00 +00 +04 +00 +8d +06 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +da +08 +00 +00 +00 +00 +04 +00 +85 +06 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +d2 +08 +00 +00 +00 +00 +04 +00 +80 +06 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +cb +08 +00 +00 +00 +00 +04 +00 +80 +06 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +c4 +08 +00 +00 +00 +00 +04 +00 +71 +06 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +bd 08 00 00 @@ -84375,7 +82335,103 @@ a0 04 00 70 -03 +06 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +b6 +08 +00 +00 +00 +00 +04 +00 +59 +06 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +9e +08 +00 +00 +00 +00 +04 +00 +0c +06 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +97 +08 +00 +00 +00 +00 +04 +00 +0a +06 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +90 +08 +00 +00 +00 +00 +04 +00 +09 +06 00 00 00 @@ -84398,8 +82454,8 @@ a0 00 04 00 -66 -03 +10 +06 00 00 00 @@ -84422,8 +82478,8 @@ a0 00 04 00 -4e -03 +04 +06 00 00 00 @@ -84438,7 +82494,7 @@ a0 00 00 00 -7d +7c 08 00 00 @@ -84446,8 +82502,8 @@ a0 00 04 00 -4d -03 +04 +06 00 00 00 @@ -84462,7 +82518,7 @@ a0 00 00 00 -76 +75 08 00 00 @@ -84470,8 +82526,8 @@ a0 00 04 00 -49 -03 +00 +06 00 00 00 @@ -84486,7 +82542,7 @@ a0 00 00 00 -6f +6e 08 00 00 @@ -84494,8 +82550,8 @@ a0 00 04 00 -44 -03 +00 +06 00 00 00 @@ -84510,7 +82566,7 @@ a0 00 00 00 -68 +67 08 00 00 @@ -84518,8 +82574,8 @@ a0 00 04 00 -40 -03 +ff +05 00 00 00 @@ -84534,7 +82590,7 @@ a0 00 00 00 -61 +60 08 00 00 @@ -84542,8 +82598,8 @@ a0 00 04 00 -22 -03 +fe +05 00 00 00 @@ -84558,7 +82614,7 @@ a0 00 00 00 -5a +59 08 00 00 @@ -84566,8 +82622,8 @@ a0 00 04 00 -21 -03 +e9 +05 00 00 00 @@ -84582,7 +82638,7 @@ a0 00 00 00 -53 +52 08 00 00 @@ -84590,8 +82646,8 @@ a0 00 04 00 -1d -03 +e1 +05 00 00 00 @@ -84606,7 +82662,7 @@ a0 00 00 00 -4c +4a 08 00 00 @@ -84614,8 +82670,8 @@ a0 00 04 00 -18 -03 +e1 +05 00 00 00 @@ -84630,7 +82686,7 @@ a0 00 00 00 -45 +43 08 00 00 @@ -84638,8 +82694,8 @@ a0 00 04 00 -14 -03 +e0 +05 00 00 00 @@ -84654,7 +82710,7 @@ a0 00 00 00 -40 +3c 08 00 00 @@ -84662,8 +82718,8 @@ a0 00 04 00 -22 -03 +e0 +05 00 00 00 @@ -84678,7 +82734,7 @@ a0 00 00 00 -3b +35 08 00 00 @@ -84686,8 +82742,8 @@ a0 00 04 00 -ce -02 +d5 +05 00 00 00 @@ -84702,7 +82758,7 @@ ce 00 00 00 -36 +2e 08 00 00 @@ -84710,8 +82766,8 @@ ce 00 04 00 -50 -03 +b9 +05 00 00 00 @@ -84726,175 +82782,7 @@ ce 00 00 00 -2f -08 -00 -00 -00 -00 -04 -00 -ba -02 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -28 -08 -00 -00 -00 -00 -04 -00 -b4 -02 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -21 -08 -00 -00 -00 -00 -04 -00 -ab -02 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -19 -08 -00 -00 -00 -00 -04 -00 -ab -02 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -12 -08 -00 -00 -00 -00 -04 -00 -a7 -02 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -0a -08 -00 -00 -00 -00 -04 -00 -a2 -02 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -02 -08 -00 -00 -00 -00 -04 -00 -9d -02 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -fa +ff 07 00 00 @@ -84902,8 +82790,8 @@ fa 00 04 00 -95 -02 +70 +05 00 00 00 @@ -84918,79 +82806,7 @@ fa 00 00 00 -f3 -07 -00 -00 -00 -00 -04 -00 -90 -02 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -ec -07 -00 -00 -00 -00 -04 -00 -90 -02 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -e5 -07 -00 -00 -00 -00 -04 -00 -86 -02 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -de +f8 07 00 00 @@ -84999,7 +82815,7 @@ de 04 00 6c -02 +05 00 00 00 @@ -85014,7 +82830,7 @@ de 00 00 00 -d7 +f1 07 00 00 @@ -85022,8 +82838,8 @@ d7 00 04 00 -6b -02 +6a +05 00 00 00 @@ -85038,7 +82854,7 @@ d7 00 00 00 -d0 +dc 07 00 00 @@ -85046,8 +82862,8 @@ d0 00 04 00 -67 -02 +66 +05 00 00 00 @@ -85062,7 +82878,7 @@ d0 00 00 00 -c9 +d5 07 00 00 @@ -85070,8 +82886,8 @@ c9 00 04 00 -62 -02 +1d +05 00 00 00 @@ -85086,7 +82902,7 @@ c9 00 00 00 -c2 +ce 07 00 00 @@ -85094,8 +82910,8 @@ c2 00 04 00 -5e -02 +1c +05 00 00 00 @@ -85110,7 +82926,7 @@ c2 00 00 00 -bb +c7 07 00 00 @@ -85118,8 +82934,8 @@ bb 00 04 00 -3e -02 +18 +05 00 00 00 @@ -85134,7 +82950,7 @@ bb 00 00 00 -b4 +c0 07 00 00 @@ -85142,8 +82958,8 @@ b4 00 04 00 -3d -02 +0e +05 00 00 00 @@ -85158,7 +82974,7 @@ b4 00 00 00 -ad +b9 07 00 00 @@ -85166,8 +82982,8 @@ ad 00 04 00 -39 -02 +09 +05 00 00 00 @@ -85182,7 +82998,7 @@ ad 00 00 00 -a6 +b2 07 00 00 @@ -85190,8 +83006,56 @@ a6 00 04 00 -34 -02 +04 +05 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ab +07 +00 +00 +00 +00 +04 +00 +01 +05 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +a4 +07 +00 +00 +00 +00 +04 +00 +fa +04 00 00 00 @@ -85214,8 +83078,8 @@ a6 00 04 00 -30 -02 +f6 +04 00 00 00 @@ -85230,7 +83094,7 @@ a6 00 00 00 -9a +98 07 00 00 @@ -85238,8 +83102,8 @@ a6 00 04 00 -40 -02 +f6 +04 00 00 00 @@ -85254,7 +83118,7 @@ a6 00 00 00 -95 +91 07 00 00 @@ -85262,8 +83126,8 @@ a6 00 04 00 -ea -01 +eb +04 00 00 00 @@ -85278,7 +83142,7 @@ ea 00 00 00 -90 +8c 07 00 00 @@ -85286,8 +83150,8 @@ ea 00 04 00 -70 -02 +e6 +04 00 00 00 @@ -85302,7 +83166,7 @@ ea 00 00 00 -89 +85 07 00 00 @@ -85310,8 +83174,8 @@ ea 00 04 00 -da -01 +e6 +04 00 00 00 @@ -85326,7 +83190,7 @@ da 00 00 00 -82 +7e 07 00 00 @@ -85334,8 +83198,8 @@ da 00 04 00 -d4 -01 +db +04 00 00 00 @@ -85350,7 +83214,7 @@ d4 00 00 00 -7b +79 07 00 00 @@ -85358,8 +83222,8 @@ d4 00 04 00 -cb -01 +d6 +04 00 00 00 @@ -85382,8 +83246,8 @@ cb 00 04 00 -cb -01 +c5 +04 00 00 00 @@ -85398,7 +83262,7 @@ cb 00 00 00 -6d +6f 07 00 00 @@ -85406,8 +83270,8 @@ cb 00 04 00 -c7 -01 +b9 +05 00 00 00 @@ -85422,7 +83286,7 @@ c7 00 00 00 -66 +6a 07 00 00 @@ -85431,7 +83295,7 @@ c7 04 00 c2 -01 +05 00 00 00 @@ -85446,7 +83310,7 @@ c2 00 00 00 -5f +65 07 00 00 @@ -85454,8 +83318,8 @@ c2 00 04 00 -bd -01 +cb +05 00 00 00 @@ -85470,7 +83334,7 @@ bd 00 00 00 -58 +60 07 00 00 @@ -85478,8 +83342,8 @@ bd 00 04 00 -b5 01 +05 00 00 00 @@ -85494,7 +83358,31 @@ b5 00 00 00 -51 +5b +07 +00 +00 +00 +00 +0d +00 +08 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +54 07 00 00 @@ -85502,8 +83390,32 @@ b5 00 04 00 -b0 -01 +be +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +4f +07 +00 +00 +00 +00 +04 +00 +20 +05 00 00 00 @@ -85526,8 +83438,8 @@ b0 00 04 00 -b0 -01 +b5 +04 00 00 00 @@ -85542,7 +83454,7 @@ b0 00 00 00 -43 +45 07 00 00 @@ -85550,8 +83462,8 @@ b0 00 04 00 -a6 -01 +37 +05 00 00 00 @@ -85566,7 +83478,7 @@ a6 00 00 00 -3c +40 07 00 00 @@ -85574,8 +83486,8 @@ a6 00 04 00 -8d -01 +9b +04 00 00 00 @@ -85590,7 +83502,7 @@ a6 00 00 00 -35 +3b 07 00 00 @@ -85598,8 +83510,8 @@ a6 00 04 00 -8c -01 +50 +05 00 00 00 @@ -85614,7 +83526,7 @@ a6 00 00 00 -2e +34 07 00 00 @@ -85622,8 +83534,8 @@ a6 00 04 00 -88 -01 +7f +04 00 00 00 @@ -85638,7 +83550,7 @@ a6 00 00 00 -27 +2d 07 00 00 @@ -85646,8 +83558,8 @@ a6 00 04 00 -83 -01 +79 +04 00 00 00 @@ -85662,7 +83574,7 @@ a6 00 00 00 -20 +26 07 00 00 @@ -85670,8 +83582,8 @@ a6 00 04 00 -7e -01 +73 +04 00 00 00 @@ -85686,7 +83598,7 @@ a6 00 00 00 -19 +1f 07 00 00 @@ -85694,8 +83606,8 @@ a6 00 04 00 -5c -01 +6e +04 00 00 00 @@ -85710,7 +83622,7 @@ a6 00 00 00 -12 +17 07 00 00 @@ -85718,8 +83630,8 @@ a6 00 04 00 -5b -01 +6e +04 00 00 00 @@ -85734,7 +83646,7 @@ a6 00 00 00 -0b +0f 07 00 00 @@ -85742,23 +83654,23 @@ a6 00 04 00 -57 -01 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 +67 04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +07 07 00 00 @@ -85766,8 +83678,8 @@ a6 00 04 00 -52 -01 +62 +04 00 00 00 @@ -85782,7 +83694,7 @@ a6 00 00 00 -fd +ff 06 00 00 @@ -85790,8 +83702,8 @@ fd 00 04 00 -4d -01 +5d +04 00 00 00 @@ -85806,7 +83718,7 @@ fd 00 00 00 -f9 +f7 06 00 00 @@ -85814,33 +83726,9 @@ f9 00 04 00 -60 -01 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -f5 -06 -00 -00 -00 -00 +55 04 00 -16 -01 -00 00 00 00 @@ -85862,8 +83750,8 @@ f0 00 04 00 -90 -01 +50 +04 00 00 00 @@ -85886,32 +83774,9 @@ e9 00 04 00 -0c -01 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -e2 -06 -00 -00 -00 -00 +50 04 00 -09 -01 00 00 00 @@ -85925,248 +83790,7 @@ e2 00 00 00 -00 -db -06 -00 -00 -00 -00 -04 -00 -f4 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -d5 -06 -00 -00 -00 -00 -04 -00 -f4 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -cf -06 -00 -00 -00 -00 -04 -00 -eb -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -c8 -06 -00 -00 -00 -00 -04 -00 -eb -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -c2 -06 -00 -00 -00 -00 -04 -00 -e7 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -bb -06 -00 -00 -00 -00 -04 -00 -e2 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -b4 -06 -00 -00 -00 -00 -04 -00 -da -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -ad -06 -00 -00 -00 -00 -04 -00 -d5 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -a7 -06 -00 -00 -00 -00 -04 -00 -d0 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -a0 -06 -00 -00 -00 -00 -04 -00 -d0 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -9a +e3 06 00 00 @@ -86174,6 +83798,7 @@ d0 00 11 00 +30 00 00 00 @@ -86189,14 +83814,209 @@ d0 00 00 00 +dc +06 +00 +00 +00 +00 +04 +00 +46 +04 00 00 00 00 00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +d5 +06 +00 +00 +00 +00 +04 +00 +2e +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ce +06 +00 +00 +00 +00 +04 +00 +2d +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +c7 +06 +00 +00 +00 +00 +04 +00 +29 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +c0 +06 +00 +00 +00 +00 +04 +00 +24 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +b9 +06 +00 +00 +00 +00 +04 +00 +20 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +b2 +06 +00 +00 +00 +00 +04 +00 +02 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ab +06 +00 +00 +00 +00 +04 +00 +01 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +a4 +06 +00 +00 +00 +00 +04 +00 +fd 03 00 -11 00 00 00 @@ -86210,11 +84030,7 @@ d0 00 00 00 -00 -00 -00 -00 -93 +9d 06 00 00 @@ -86222,7 +84038,8 @@ d0 00 04 00 -d0 +f8 +03 00 00 00 @@ -86237,8 +84054,7 @@ d0 00 00 00 -00 -8d +96 06 00 00 @@ -86246,7 +84062,8 @@ d0 00 04 00 -cb +f4 +03 00 00 00 @@ -86261,8 +84078,7 @@ cb 00 00 00 -00 -87 +91 06 00 00 @@ -86270,31 +84086,9 @@ cb 00 04 00 -84 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -80 -06 -00 -00 -00 -00 +02 04 00 -84 00 00 00 @@ -86308,69 +84102,67 @@ cb 00 00 00 -00 -00 -7a -06 -00 -00 -00 -00 -04 -00 -80 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -73 -06 -00 -00 -00 -00 -04 -00 -80 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -6c -06 -00 -00 -00 -00 -04 -00 79 +06 00 00 00 00 +04 +00 +ae +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +74 +06 +00 +00 +00 +00 +04 +00 +30 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +6d +06 +00 +00 +00 +00 +04 +00 +9a +03 +00 +00 +00 00 00 00 @@ -86390,7 +84182,8 @@ cb 00 04 00 -78 +94 +03 00 00 00 @@ -86405,18 +84198,16 @@ cb 00 00 00 -00 -58 +5f 06 00 00 00 00 -12 -00 -68 04 00 +8b +03 00 00 00 @@ -86430,16 +84221,137 @@ cb 00 00 00 -4e +00 +57 06 00 00 00 00 -12 +04 +00 +8b +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +50 +06 +00 +00 +00 +00 +04 +00 +87 +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +48 +06 +00 +00 +00 +00 +04 +00 +82 +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +40 +06 +00 +00 +00 +00 +04 +00 +7d +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +38 +06 +00 +00 +00 +00 +04 +00 +75 +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +31 +06 +00 +00 +00 +00 +04 00 70 -04 +03 00 00 00 @@ -86454,103 +84366,7 @@ cb 00 00 00 -44 -06 -00 -00 -00 -00 -12 -00 -78 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -3e -06 -00 -00 -00 -00 -12 -00 -80 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -37 -06 -00 -00 -00 -00 -12 -00 -88 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -2f -06 -00 -00 -00 -00 -12 -00 -90 -04 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -29 +2a 06 00 00 @@ -86558,7 +84374,8 @@ cb 00 04 00 -04 +70 +03 00 00 00 @@ -86573,8 +84390,7 @@ cb 00 00 00 -00 -22 +23 06 00 00 @@ -86582,8 +84398,8 @@ cb 00 04 00 -04 -00 +66 +03 00 00 00 @@ -86606,8 +84422,8 @@ cb 00 04 00 -00 -00 +4e +03 00 00 00 @@ -86630,6 +84446,2190 @@ cb 00 04 00 +4d +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0e +06 +00 +00 +00 +00 +04 +00 +49 +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +07 +06 +00 +00 +00 +00 +04 +00 +44 +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +06 +00 +00 +00 +00 +04 +00 +40 +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +f9 +05 +00 +00 +00 +00 +04 +00 +22 +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +f2 +05 +00 +00 +00 +00 +04 +00 +21 +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +eb +05 +00 +00 +00 +00 +04 +00 +1d +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +e4 +05 +00 +00 +00 +00 +04 +00 +18 +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +dd +05 +00 +00 +00 +00 +04 +00 +14 +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +d8 +05 +00 +00 +00 +00 +04 +00 +22 +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +c0 +05 +00 +00 +00 +00 +04 +00 +ce +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +bb +05 +00 +00 +00 +00 +04 +00 +50 +03 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +b4 +05 +00 +00 +00 +00 +04 +00 +ba +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ad +05 +00 +00 +00 +00 +04 +00 +b4 +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +a6 +05 +00 +00 +00 +00 +04 +00 +ab +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +9e +05 +00 +00 +00 +00 +04 +00 +ab +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +97 +05 +00 +00 +00 +00 +04 +00 +a7 +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +8f +05 +00 +00 +00 +00 +04 +00 +a2 +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +87 +05 +00 +00 +00 +00 +04 +00 +9d +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +7f +05 +00 +00 +00 +00 +04 +00 +95 +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +78 +05 +00 +00 +00 +00 +04 +00 +90 +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +71 +05 +00 +00 +00 +00 +04 +00 +90 +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +6a +05 +00 +00 +00 +00 +04 +00 +86 +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +63 +05 +00 +00 +00 +00 +04 +00 +6c +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +5c +05 +00 +00 +00 +00 +04 +00 +6b +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +55 +05 +00 +00 +00 +00 +04 +00 +67 +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +4e +05 +00 +00 +00 +00 +04 +00 +62 +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +47 +05 +00 +00 +00 +00 +04 +00 +5e +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +40 +05 +00 +00 +00 +00 +04 +00 +3e +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +39 +05 +00 +00 +00 +00 +04 +00 +3d +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +32 +05 +00 +00 +00 +00 +04 +00 +39 +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +2b +05 +00 +00 +00 +00 +04 +00 +34 +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +24 +05 +00 +00 +00 +00 +04 +00 +30 +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +1f +05 +00 +00 +00 +00 +04 +00 +40 +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +07 +05 +00 +00 +00 +00 +04 +00 +ea +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +02 +05 +00 +00 +00 +00 +04 +00 +70 +02 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +f4 +04 +00 +00 +00 +00 +04 +00 +da +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ed +04 +00 +00 +00 +00 +04 +00 +d4 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +e6 +04 +00 +00 +00 +00 +04 +00 +cb +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +df +04 +00 +00 +00 +00 +04 +00 +cb +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +d8 +04 +00 +00 +00 +00 +04 +00 +c7 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +d1 +04 +00 +00 +00 +00 +04 +00 +c2 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ca +04 +00 +00 +00 +00 +04 +00 +bd +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +c3 +04 +00 +00 +00 +00 +04 +00 +b5 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +bc +04 +00 +00 +00 +00 +04 +00 +b0 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +b5 +04 +00 +00 +00 +00 +04 +00 +b0 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ae +04 +00 +00 +00 +00 +04 +00 +a6 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +99 +04 +00 +00 +00 +00 +04 +00 +8d +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +92 +04 +00 +00 +00 +00 +04 +00 +8c +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +8b +04 +00 +00 +00 +00 +04 +00 +88 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +84 +04 +00 +00 +00 +00 +04 +00 +83 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +7d +04 +00 +00 +00 +00 +04 +00 +7e +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +66 +04 +00 +00 +00 +00 +04 +00 +5c +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +5f +04 +00 +00 +00 +00 +04 +00 +5b +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +58 +04 +00 +00 +00 +00 +04 +00 +57 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +51 +04 +00 +00 +00 +00 +04 +00 +52 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +4a +04 +00 +00 +00 +00 +04 +00 +4d +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +31 +04 +00 +00 +00 +00 +04 +00 +60 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +25 +04 +00 +00 +00 +00 +04 +00 +16 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +20 +04 +00 +00 +00 +00 +04 +00 +90 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ff +03 +00 +00 +00 +00 +04 +00 +0c +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +f8 +03 +00 +00 +00 +00 +04 +00 +09 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +f1 +03 +00 +00 +00 +00 +04 +00 +f4 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +eb +03 +00 +00 +00 +00 +04 +00 +f4 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +d8 +03 +00 +00 +00 +00 +04 +00 +eb +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +d1 +03 +00 +00 +00 +00 +04 +00 +eb +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +cb +03 +00 +00 +00 +00 +04 +00 +e7 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +c4 +03 +00 +00 +00 +00 +04 +00 +e2 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +bd +03 +00 +00 +00 +00 +04 +00 +da +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +b6 +03 +00 +00 +00 +00 +04 +00 +d5 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +b0 +03 +00 +00 +00 +00 +04 +00 +d0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +a9 +03 +00 +00 +00 +00 +04 +00 +d0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +a3 +03 +00 +00 +00 +00 +11 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +03 +00 +11 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +9c +03 +00 +00 +00 +00 +04 +00 +d0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +96 +03 +00 +00 +00 +00 +04 +00 +cb +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +5b +03 +00 +00 +00 +00 +04 +00 +84 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +54 +03 +00 +00 +00 +00 +04 +00 +84 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +4e +03 +00 +00 +00 +00 +04 +00 +80 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +47 +03 +00 +00 +00 +00 +04 +00 +80 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +40 +03 +00 +00 +00 +00 +04 +00 +79 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +3a +03 +00 +00 +00 +00 +04 +00 +78 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +2c +03 +00 +00 +00 +00 +12 +00 +68 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +03 +03 +00 +00 +00 +00 +12 +00 +70 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +f9 +02 +00 +00 +00 +00 +12 +00 +78 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +f3 +02 +00 +00 +00 +00 +12 +00 +80 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ec +02 +00 +00 +00 +00 +12 +00 +88 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +e4 +02 +00 +00 +00 +00 +12 +00 +90 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +cd +02 +00 +00 +00 +00 +04 +00 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +c6 +02 +00 +00 +00 +00 +04 +00 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +c0 +02 +00 +00 +00 +00 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +b9 +02 +00 +00 +00 +00 +04 +00 00 00 00 @@ -86694,8 +86694,8 @@ cb 00 00 00 -0f -06 +b3 +02 00 00 00 @@ -86718,8 +86718,8 @@ cb 00 00 00 -09 -06 +ad +02 00 00 00 @@ -86742,8 +86742,8 @@ cb 00 00 00 -03 -06 +a7 +02 00 00 00 @@ -86766,8 +86766,8 @@ cb 00 00 00 -fd -05 +a1 +02 00 00 00 @@ -86790,8 +86790,8 @@ fd 00 00 00 -f7 -05 +9b +02 00 00 00 @@ -86814,8 +86814,8 @@ f7 00 00 00 -f1 -05 +95 +02 00 00 00 @@ -86838,8 +86838,8 @@ f1 00 00 00 -eb -05 +8f +02 00 00 00 @@ -86862,8 +86862,8 @@ eb 00 00 00 -e5 -05 +89 +02 00 00 00 @@ -86886,8 +86886,8 @@ e5 00 00 00 -df -05 +83 +02 00 00 00 @@ -86910,8 +86910,8 @@ df 00 00 00 -da -05 +7e +02 00 00 00 @@ -86934,8 +86934,8 @@ da 00 00 00 -d5 -05 +79 +02 00 00 00 @@ -86958,8 +86958,8 @@ d5 00 00 00 -d0 -05 +74 +02 00 00 00 @@ -86982,8 +86982,8 @@ d0 00 00 00 -cb -05 +6f +02 00 00 00 @@ -87006,8 +87006,8 @@ cb 00 00 00 -c6 -05 +6a +02 00 00 00 @@ -87030,8 +87030,8 @@ c6 00 00 00 -c1 -05 +65 +02 00 00 00 @@ -87054,8 +87054,8 @@ c1 00 00 00 -bc -05 +60 +02 00 00 00 @@ -87078,8 +87078,8 @@ bc 00 00 00 -b7 -05 +5b +02 00 00 00 @@ -87102,8 +87102,8 @@ b7 00 00 00 -b2 -05 +56 +02 00 00 00 @@ -87150,8 +87150,8 @@ b2 00 00 00 -ad -05 +51 +02 00 00 00 @@ -87222,8 +87222,8 @@ ad 00 00 00 -a5 -05 +49 +02 00 00 00 @@ -87246,8 +87246,8 @@ a5 00 00 00 -97 -05 +3b +02 00 00 00 @@ -87294,8 +87294,8 @@ a5 00 00 00 -89 -05 +2d +02 00 00 00 @@ -87342,8 +87342,8 @@ a5 00 00 00 -79 -05 +1d +02 00 00 00 @@ -87438,6 +87438,54 @@ a5 00 00 00 +d3 +02 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0d +03 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 2c 00 00 @@ -87462,6 +87510,54 @@ a5 00 00 00 +61 +03 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +84 +03 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 40 00 00 @@ -87486,6 +87582,150 @@ d6 00 00 00 +de +03 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +06 +04 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +29 +04 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +35 +04 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +6d +04 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +a0 +04 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 57 00 00 @@ -87510,6 +87750,54 @@ d6 00 00 00 +fb +04 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0c +05 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 6e 00 00 @@ -87534,6 +87822,30 @@ d6 00 00 00 +c5 +05 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 85 00 00 @@ -87558,6 +87870,30 @@ d6 00 00 00 +7e +06 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 9c 00 00 @@ -87582,6 +87918,78 @@ d6 00 00 00 +e1 +07 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +04 +08 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +08 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 be 00 00 @@ -87630,6 +88038,30 @@ d6 00 00 00 +a5 +08 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 ed 00 00 @@ -87678,6 +88110,30 @@ fe 00 00 00 +9f +09 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 12 01 00 @@ -87702,6 +88158,390 @@ fe 00 00 00 +4d +0b +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ee +0b +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +05 +0c +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +3e +0c +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +57 +0c +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +75 +0c +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ab +0c +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +cb +0c +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +25 +0d +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +48 +0d +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +66 +0d +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +84 +0d +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +9e +0d +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +bf +0d +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +e7 +0d +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +1c +0e +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 23 01 00 @@ -87798,6 +88638,30 @@ e0 00 00 00 +73 +0f +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 70 01 00 @@ -87822,6 +88686,30 @@ e0 00 00 00 +b1 +0f +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 81 01 00 @@ -87870,6 +88758,30 @@ c0 00 00 00 +9e +10 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 aa 01 00 @@ -87894,6 +88806,54 @@ aa 00 00 00 +31 +12 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +79 +12 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 c1 01 00 @@ -87918,6 +88878,102 @@ b0 00 00 00 +a1 +13 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +b9 +13 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +2a +14 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +58 +14 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 d7 01 00 @@ -87990,6 +89046,54 @@ a0 00 00 00 +31 +17 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +49 +17 +00 +00 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 18 02 00 @@ -88014,8 +89118,8 @@ f0 00 00 00 -1d -02 +46 +18 00 00 10 @@ -88038,8 +89142,8 @@ f0 00 00 00 -2e -02 +aa +18 00 00 10 @@ -88062,968 +89166,8 @@ f0 00 00 00 -4d -02 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -70 -02 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -82 -02 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -8f -02 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -a9 -02 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -b1 -02 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -c6 -02 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -d6 -02 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -e4 -02 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -eb -02 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -fe -02 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -11 -03 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -24 -03 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -34 -03 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -48 -03 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -5e -03 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -6f -03 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -7a -03 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -8f -03 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -9e -03 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -af -03 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -c2 -03 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -d0 -03 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -e6 -03 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -f6 -03 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -02 -04 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -15 -04 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -23 -04 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -31 -04 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -3b -04 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -4c -04 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -5c -04 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -6b -04 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -80 -04 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -92 -04 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -a1 -04 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -b0 -04 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -c6 -04 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -d4 -04 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -ec -04 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -01 -05 +fd +18 00 00 10 @@ -89047,7 +89191,7 @@ ec 00 00 17 -05 +19 00 00 10 @@ -89070,8 +89214,8 @@ ec 00 00 00 -1e -05 +1f +19 00 00 10 @@ -89095,7 +89239,7 @@ ec 00 00 26 -05 +19 00 00 10 @@ -89118,152 +89262,8 @@ ec 00 00 00 -37 -05 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -46 -05 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -4d -05 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -55 -05 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -5d -05 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -64 -05 -00 -00 -10 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -00 -6b -05 +62 +19 00 00 10 diff --git a/modules/dbgfmts/dwarf2/tests/passwin64/dwarfwin64_testhd.errwarn b/modules/dbgfmts/dwarf2/tests/passwin64/dwarfwin64_testhd.errwarn index c00bbe1e..d383da2a 100644 --- a/modules/dbgfmts/dwarf2/tests/passwin64/dwarfwin64_testhd.errwarn +++ b/modules/dbgfmts/dwarf2/tests/passwin64/dwarfwin64_testhd.errwarn @@ -4,6 +4,8 @@ -:10: warning: unrecognized section attribute: `M' -:10: warning: unrecognized section attribute: `S' -:10: warning: Unrecognized qualifier `progbits' +-:24: warning: directive `.type' not recognized +-:152: warning: directive `.size' not recognized -:153: warning: Unrecognized qualifier `progbits' -:190: warning: Unrecognized qualifier `progbits' -:232: warning: Unrecognized qualifier `progbits' diff --git a/modules/dbgfmts/null/null-dbgfmt.c b/modules/dbgfmts/null/null-dbgfmt.c index 9ddf776d..44766934 100644 --- a/modules/dbgfmts/null/null-dbgfmt.c +++ b/modules/dbgfmts/null/null-dbgfmt.c @@ -48,13 +48,6 @@ null_dbgfmt_destroy(/*@only@*/ yasm_dbgfmt *dbgfmt) yasm_xfree(dbgfmt); } -static int -null_dbgfmt_directive(yasm_object *object, const char *name, - yasm_valparamhead *valparams, unsigned long line) -{ - return 1; -} - static void null_dbgfmt_generate(yasm_object *object, yasm_linemap *linemap, yasm_errwarns *errwarns) @@ -66,8 +59,8 @@ null_dbgfmt_generate(yasm_object *object, yasm_linemap *linemap, yasm_dbgfmt_module yasm_null_LTX_dbgfmt = { "No debugging info", "null", + NULL, /* no directives */ null_dbgfmt_create, null_dbgfmt_destroy, - null_dbgfmt_directive, null_dbgfmt_generate }; diff --git a/modules/dbgfmts/stabs/stabs-dbgfmt.c b/modules/dbgfmts/stabs/stabs-dbgfmt.c index 5bf6b8ad..1942d4b1 100644 --- a/modules/dbgfmts/stabs/stabs-dbgfmt.c +++ b/modules/dbgfmts/stabs/stabs-dbgfmt.c @@ -499,19 +499,12 @@ stabs_bc_str_calc_len(yasm_bytecode *bc, yasm_bc_add_span_func add_span, return 0; } -static int -stabs_dbgfmt_directive(yasm_object *object, const char *name, - yasm_valparamhead *valparams, unsigned long line) -{ - return 1; -} - /* Define dbgfmt structure -- see dbgfmt.h for details */ yasm_dbgfmt_module yasm_stabs_LTX_dbgfmt = { "Stabs debugging format", "stabs", + NULL, /* no directives */ stabs_dbgfmt_create, stabs_dbgfmt_destroy, - stabs_dbgfmt_directive, stabs_dbgfmt_generate }; diff --git a/modules/objfmts/bin/bin-objfmt.c b/modules/objfmts/bin/bin-objfmt.c index b98ac63a..b3b12628 100644 --- a/modules/objfmts/bin/bin-objfmt.c +++ b/modules/objfmts/bin/bin-objfmt.c @@ -85,6 +85,7 @@ bin_objfmt_align_section(yasm_section *sect, yasm_section *prevsect, typedef struct bin_objfmt_output_info { yasm_object *object; + yasm_errwarns *errwarns; /*@dependent@*/ FILE *f; /*@only@*/ unsigned char *buf; /*@observer@*/ const yasm_section *sect; @@ -252,6 +253,29 @@ bin_objfmt_output_bytecode(yasm_bytecode *bc, /*@null@*/ void *d) return 0; } +static int +bin_objfmt_check_sym(yasm_symrec *sym, /*@null@*/ void *d) +{ + /*@null@*/ bin_objfmt_output_info *info = (bin_objfmt_output_info *)d; + yasm_sym_vis vis = yasm_symrec_get_visibility(sym); + assert(info != NULL); + + if (vis & YASM_SYM_EXTERN) { + yasm_warn_set(YASM_WARN_GENERAL, + N_("binary object format does not support extern variables")); + yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym)); + } else if (vis & YASM_SYM_GLOBAL) { + yasm_warn_set(YASM_WARN_GENERAL, + N_("binary object format does not support global variables")); + yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym)); + } else if (vis & YASM_SYM_COMMON) { + yasm_error_set(YASM_ERROR_TYPE, + N_("binary object format does not support common variables")); + yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym)); + } + return 0; +} + static void bin_objfmt_output(yasm_object *object, FILE *f, /*@unused@*/ int all_syms, yasm_errwarns *errwarns) @@ -266,9 +290,13 @@ bin_objfmt_output(yasm_object *object, FILE *f, /*@unused@*/ int all_syms, bin_objfmt_output_info info; info.object = object; + info.errwarns = errwarns; info.f = f; info.buf = yasm_xmalloc(REGULAR_OUTBUF_SIZE); + /* Check symbol table */ + yasm_symtab_traverse(object->symtab, &info, bin_objfmt_check_sym); + text = yasm_object_find_general(object, ".text"); data = yasm_object_find_general(object, ".data"); bss = yasm_object_find_general(object, ".bss"); @@ -467,96 +495,45 @@ bin_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams, return NULL; } -static yasm_symrec * -bin_objfmt_extern_declare(yasm_object *object, const char *name, - /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_symrec *sym; - - yasm_warn_set(YASM_WARN_GENERAL, - N_("binary object format does not support extern variables")); - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_EXTERN, line); - return sym; -} - -static yasm_symrec * -bin_objfmt_global_declare(yasm_object *object, const char *name, - /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_symrec *sym; - - yasm_warn_set(YASM_WARN_GENERAL, - N_("binary object format does not support global variables")); - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_GLOBAL, line); - return sym; -} - -static yasm_symrec * -bin_objfmt_common_declare(yasm_object *object, const char *name, - /*@only@*/ yasm_expr *size, /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_symrec *sym; - - yasm_expr_destroy(size); - yasm_error_set(YASM_ERROR_TYPE, - N_("binary object format does not support common variables")); - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_COMMON, line); - return sym; -} - -static int -bin_objfmt_directive(yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *valparams, - /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, unsigned long line) +static void +bin_objfmt_dir_org(yasm_object *object, + /*@null@*/ yasm_valparamhead *valparams, + /*@unused@*/ /*@null@*/ + yasm_valparamhead *objext_valparams, unsigned long line) { yasm_section *sect; yasm_valparam *vp; - if (yasm__strcasecmp(name, "org") == 0) { - /*@null@*/ yasm_expr *start = NULL; + /*@null@*/ yasm_expr *start = NULL; - if (!valparams) { - yasm_error_set(YASM_ERROR_SYNTAX, N_("[%s] requires an argument"), - "ORG"); - return 0; - } + if (!valparams) { + yasm_error_set(YASM_ERROR_SYNTAX, N_("[%s] requires an argument"), + "ORG"); + return; + } - /* ORG takes just a simple integer as param */ - vp = yasm_vps_first(valparams); - if (vp->val) - start = yasm_expr_create_ident(yasm_expr_sym(yasm_symtab_use( - object->symtab, vp->val, line)), line); - else if (vp->param) { - start = vp->param; - vp->param = NULL; /* Don't let valparams delete it */ - } + /* ORG takes just a simple integer as param */ + vp = yasm_vps_first(valparams); + if (vp->val) + start = yasm_expr_create_ident(yasm_expr_sym(yasm_symtab_use( + object->symtab, vp->val, line)), line); + else if (vp->param) { + start = vp->param; + vp->param = NULL; /* Don't let valparams delete it */ + } - if (!start) { - yasm_error_set(YASM_ERROR_SYNTAX, - N_("argument to ORG must be expression")); - return 0; - } + if (!start) { + yasm_error_set(YASM_ERROR_SYNTAX, + N_("argument to ORG must be expression")); + return; + } - /* ORG changes the start of the .text section */ - sect = yasm_object_find_general(object, ".text"); - if (!sect) - yasm_internal_error( - N_("bin objfmt: .text section does not exist before ORG is called?")); - yasm_section_set_start(sect, start, line); - - return 0; /* directive recognized */ - } else - return 1; /* directive unrecognized */ + /* ORG changes the start of the .text section */ + sect = yasm_object_find_general(object, ".text"); + if (!sect) + yasm_internal_error( + N_("bin objfmt: .text section does not exist before ORG is called?")); + yasm_section_set_start(sect, start, line); } @@ -566,6 +543,11 @@ static const char *bin_objfmt_dbgfmt_keywords[] = { NULL }; +static const yasm_directive bin_objfmt_directives[] = { + { "org", "nasm", bin_objfmt_dir_org, YASM_DIR_ARG_REQUIRED }, + { NULL, NULL, NULL, 0 } +}; + /* Define objfmt structure -- see objfmt.h for details */ yasm_objfmt_module yasm_bin_LTX_objfmt = { "Flat format binary", @@ -574,13 +556,10 @@ yasm_objfmt_module yasm_bin_LTX_objfmt = { 16, bin_objfmt_dbgfmt_keywords, "null", + bin_objfmt_directives, bin_objfmt_create, bin_objfmt_output, bin_objfmt_destroy, bin_objfmt_add_default_section, - bin_objfmt_section_switch, - bin_objfmt_extern_declare, - bin_objfmt_global_declare, - bin_objfmt_common_declare, - bin_objfmt_directive + bin_objfmt_section_switch }; diff --git a/modules/objfmts/coff/coff-objfmt.c b/modules/objfmts/coff/coff-objfmt.c index feb790af..c93e8eaf 100644 --- a/modules/objfmts/coff/coff-objfmt.c +++ b/modules/objfmts/coff/coff-objfmt.c @@ -168,8 +168,6 @@ typedef struct coff_symrec_data { unsigned long index; /* assigned COFF symbol table index */ coff_symrec_sclass sclass; /* storage class */ - /*@owned@*/ /*@null@*/ yasm_expr *size; /* size if COMMON declaration */ - int numaux; /* number of auxiliary entries */ coff_symtab_auxtype auxtype; /* type of aux entries */ coff_symtab_auxent aux[1]; /* actually may be any size (including 0) */ @@ -230,8 +228,7 @@ yasm_objfmt_module yasm_win64_LTX_objfmt; static /*@dependent@*/ coff_symrec_data * coff_objfmt_sym_set_data(yasm_symrec *sym, coff_symrec_sclass sclass, - /*@only@*/ /*@null@*/ yasm_expr *size, int numaux, - coff_symtab_auxtype auxtype) + int numaux, coff_symtab_auxtype auxtype) { coff_symrec_data *sym_data; @@ -239,7 +236,6 @@ coff_objfmt_sym_set_data(yasm_symrec *sym, coff_symrec_sclass sclass, (numaux-1)*sizeof(coff_symtab_auxent)); sym_data->index = 0; sym_data->sclass = sclass; - sym_data->size = size; sym_data->numaux = numaux; sym_data->auxtype = auxtype; @@ -266,7 +262,7 @@ coff_common_create(yasm_object *object) filesym = yasm_symtab_define_special(object->symtab, ".file", YASM_SYM_GLOBAL); objfmt_coff->filesym_data = - coff_objfmt_sym_set_data(filesym, COFF_SCL_FILE, NULL, 1, + coff_objfmt_sym_set_data(filesym, COFF_SCL_FILE, 1, COFF_SYMTAB_AUX_FILE); /* Filename is set in coff_objfmt_output */ objfmt_coff->filesym_data->aux[0].fname = NULL; @@ -376,8 +372,7 @@ coff_objfmt_init_new_section(yasm_object *object, yasm_section *sect, sym = yasm_symtab_define_label(object->symtab, sectname, yasm_section_bcs_first(sect), 1, line); yasm_symrec_declare(sym, YASM_SYM_GLOBAL, line); - coff_objfmt_sym_set_data(sym, COFF_SCL_STAT, NULL, 1, - COFF_SYMTAB_AUX_SECT); + coff_objfmt_sym_set_data(sym, COFF_SCL_STAT, 1, COFF_SYMTAB_AUX_SECT); data->sym = sym; return data; } @@ -506,11 +501,14 @@ coff_objfmt_output_value(yasm_value *value, unsigned char *buf, /* In standard COFF, COMMON symbols have their length added in */ if (!objfmt_coff->win32) { /*@dependent@*/ /*@null@*/ coff_symrec_data *csymd; + /*@dependent@*/ /*@null@*/ yasm_expr **csize_expr; /*@dependent@*/ /*@null@*/ yasm_intnum *common_size; csymd = yasm_symrec_get_data(sym, &coff_symrec_data_cb); assert(csymd != NULL); - common_size = yasm_expr_get_intnum(&csymd->size, 1); + csize_expr = yasm_symrec_get_common_size(sym); + assert(csize_expr != NULL); + common_size = yasm_expr_get_intnum(csize_expr, 1); if (!common_size) { yasm_error_set(YASM_ERROR_TOO_COMPLEX, N_("coff: common size too complex")); @@ -942,13 +940,20 @@ static int coff_objfmt_count_sym(yasm_symrec *sym, /*@null@*/ void *d) { /*@null@*/ coff_objfmt_output_info *info = (coff_objfmt_output_info *)d; + yasm_sym_vis vis = yasm_symrec_get_visibility(sym); + coff_symrec_data *sym_data; + assert(info != NULL); - if (info->all_syms || yasm_symrec_get_visibility(sym) != YASM_SYM_LOCAL) { + + sym_data = yasm_symrec_get_data(sym, &coff_symrec_data_cb); + if ((vis & (YASM_SYM_EXTERN|YASM_SYM_GLOBAL|YASM_SYM_COMMON)) && !sym_data) + sym_data = coff_objfmt_sym_set_data(sym, COFF_SCL_EXT, 0, + COFF_SYMTAB_AUX_NONE); + + if (info->all_syms || vis != YASM_SYM_LOCAL) { /* Save index in symrec data */ - coff_symrec_data *sym_data = - yasm_symrec_get_data(sym, &coff_symrec_data_cb); if (!sym_data) { - sym_data = coff_objfmt_sym_set_data(sym, COFF_SCL_STAT, NULL, 0, + sym_data = coff_objfmt_sym_set_data(sym, COFF_SCL_STAT, 0, COFF_SYMTAB_AUX_NONE); } sym_data->index = info->indx; @@ -1042,11 +1047,15 @@ coff_objfmt_output_sym(yasm_symrec *sym, /*@null@*/ void *d) scnum = 0xffff; /* -1 = absolute symbol */ } else { if (vis & YASM_SYM_COMMON) { - intn = yasm_expr_get_intnum(&csymd->size, 1); + /*@dependent@*/ /*@null@*/ yasm_expr **csize_expr; + csize_expr = yasm_symrec_get_common_size(sym); + assert(csize_expr != NULL); + intn = yasm_expr_get_intnum(csize_expr, 1); if (!intn) { yasm_error_set(YASM_ERROR_NOT_CONSTANT, N_("COMMON data size not an integer expression")); - yasm_errwarn_propagate(info->errwarns, csymd->size->line); + yasm_errwarn_propagate(info->errwarns, + (*csize_expr)->line); } else value = yasm_intnum_get_uint(intn); scnum = 0; @@ -1630,55 +1639,9 @@ coff_section_data_print(void *data, FILE *f, int indent_level) fprintf(f, "%*srelocs:\n", indent_level, ""); } -static yasm_symrec * -coff_objfmt_extern_declare(yasm_object *object, const char *name, /*@unused@*/ - /*@null@*/ yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_symrec *sym; - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_EXTERN, line); - coff_objfmt_sym_set_data(sym, COFF_SCL_EXT, NULL, 0, - COFF_SYMTAB_AUX_NONE); - - return sym; -} - -static yasm_symrec * -coff_objfmt_global_declare(yasm_object *object, const char *name, /*@unused@*/ - /*@null@*/ yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_symrec *sym; - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_GLOBAL, line); - coff_objfmt_sym_set_data(sym, COFF_SCL_EXT, NULL, 0, - COFF_SYMTAB_AUX_NONE); - - return sym; -} - -static yasm_symrec * -coff_objfmt_common_declare(yasm_object *object, const char *name, - /*@only@*/ yasm_expr *size, /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_symrec *sym; - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_COMMON, line); - coff_objfmt_sym_set_data(sym, COFF_SCL_EXT, size, 0, - COFF_SYMTAB_AUX_NONE); - - return sym; -} - static void coff_symrec_data_destroy(void *data) { - coff_symrec_data *csymd = (coff_symrec_data *)data; - if (csymd->size) - yasm_expr_destroy(csymd->size); yasm_xfree(data); } @@ -1689,17 +1652,11 @@ coff_symrec_data_print(void *data, FILE *f, int indent_level) fprintf(f, "%*ssymtab index=%lu\n", indent_level, "", csd->index); fprintf(f, "%*ssclass=%d\n", indent_level, "", csd->sclass); - fprintf(f, "%*ssize=", indent_level, ""); - if (csd->size) - yasm_expr_print(csd->size, f); - else - fprintf(f, "nil"); - fprintf(f, "\n"); } static void dir_export(yasm_object *object, yasm_valparamhead *valparams, - unsigned long line) + yasm_valparamhead *objext_valparams, unsigned long line) { yasm_valparam *vp; int isnew; @@ -1740,7 +1697,7 @@ dir_export(yasm_object *object, yasm_valparamhead *valparams, static void dir_ident(yasm_object *object, yasm_valparamhead *valparams, - unsigned long line) + yasm_valparamhead *objext_valparams, unsigned long line) { yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt; yasm_valparamhead sect_vps; @@ -1749,7 +1706,13 @@ dir_ident(yasm_object *object, yasm_valparamhead *valparams, const char *sectname; yasm_valparam *vp, *vp2; + /* Accept, but do nothing with empty ident */ + if (!valparams) + return; + vp = yasm_vps_first(valparams); + if (!vp) + return; if (objfmt_coff->win32) { /* Put ident data into .comment section for COFF, or .rdata$zzz @@ -1788,59 +1751,9 @@ dir_ident(yasm_object *object, yasm_valparamhead *valparams, yasm_bc_create_data(&dvs, 1, 1, object->arch, line)); } -static int -coff_objfmt_directive(yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *valparams, - /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - unsigned long line) -{ - if (yasm__strcasecmp(name, "IDENT") == 0) { - if (!valparams) { - yasm_error_set(YASM_ERROR_SYNTAX, N_("[%s] requires an argument"), - "IDENT"); - return 0; - } - dir_ident(object, valparams, line); - return 0; - } - return 1; -} - -static int -win32_objfmt_directive(yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *valparams, - /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - unsigned long line) -{ - static const struct { - const char *name; - int required_arg; - void (*func) (yasm_object *, yasm_valparamhead *, unsigned long); - } dirs[] = { - {"EXPORT", 1, dir_export}, - {"IDENT", 1, dir_ident} - }; - size_t i; - - for (i=0; iobjfmt; yasm_valparam *vp = yasm_vps_first(valparams); @@ -1902,7 +1815,7 @@ get_curpos(yasm_object *object, unsigned long line) static void dir_pushreg(yasm_object *object, yasm_valparamhead *valparams, - unsigned long line) + yasm_valparamhead *objext_valparams, unsigned long line) { yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt; yasm_valparam *vp = yasm_vps_first(valparams); @@ -1931,7 +1844,7 @@ dir_pushreg(yasm_object *object, yasm_valparamhead *valparams, static void dir_setframe(yasm_object *object, yasm_valparamhead *valparams, - unsigned long line) + yasm_valparamhead *objext_valparams, unsigned long line) { yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt; yasm_valparam *vp = yasm_vps_first(valparams); @@ -1971,7 +1884,7 @@ dir_setframe(yasm_object *object, yasm_valparamhead *valparams, static void dir_allocstack(yasm_object *object, yasm_valparamhead *valparams, - unsigned long line) + yasm_valparamhead *objext_valparams, unsigned long line) { yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt; yasm_valparam *vp = yasm_vps_first(valparams); @@ -2054,21 +1967,21 @@ dir_save_common(yasm_object *object, yasm_valparamhead *valparams, static void dir_savereg(yasm_object *object, yasm_valparamhead *valparams, - unsigned long line) + yasm_valparamhead *objext_valparams, unsigned long line) { dir_save_common(object, valparams, line, "SAVEREG", UWOP_SAVE_NONVOL); } static void dir_savexmm128(yasm_object *object, yasm_valparamhead *valparams, - unsigned long line) + yasm_valparamhead *objext_valparams, unsigned long line) { dir_save_common(object, valparams, line, "SAVEXMM128", UWOP_SAVE_XMM128); } static void dir_pushframe(yasm_object *object, /*@null@*/ yasm_valparamhead *valparams, - unsigned long line) + yasm_valparamhead *objext_valparams, unsigned long line) { yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt; yasm_valparam *vp = yasm_vps_first(valparams); @@ -2091,7 +2004,7 @@ dir_pushframe(yasm_object *object, /*@null@*/ yasm_valparamhead *valparams, static void dir_endprolog(yasm_object *object, /*@null@*/ yasm_valparamhead *valparams, - unsigned long line) + yasm_valparamhead *objext_valparams, unsigned long line) { yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt; if (!procframe_checkstate(objfmt_coff, "ENDPROLOG")) @@ -2103,7 +2016,7 @@ dir_endprolog(yasm_object *object, /*@null@*/ yasm_valparamhead *valparams, static void dir_endproc_frame(yasm_object *object, /*@null@*/ yasm_valparamhead *valparams, - unsigned long line) + yasm_valparamhead *objext_valparams, unsigned long line) { yasm_objfmt_coff *objfmt_coff = (yasm_objfmt_coff *)object->objfmt; yasm_section *sect; @@ -2191,47 +2104,6 @@ dir_endproc_frame(yasm_object *object, /*@null@*/ yasm_valparamhead *valparams, objfmt_coff->done_prolog = 0; } -static int -win64_objfmt_directive(yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *valparams, - /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - unsigned long line) -{ - static const struct { - const char *name; - int required_arg; - void (*func) (yasm_object *, yasm_valparamhead *, unsigned long); - } dirs[] = { - {"EXPORT", 1, dir_export}, - {"IDENT", 1, dir_ident}, - {"PROC_FRAME", 0, dir_proc_frame}, - {"PUSHREG", 1, dir_pushreg}, - {"SETFRAME", 1, dir_setframe}, - {"ALLOCSTACK", 1, dir_allocstack}, - {"SAVEREG", 1, dir_savereg}, - {"SAVEXMM128", 1, dir_savexmm128}, - {"PUSHFRAME", 0, dir_pushframe}, - {"ENDPROLOG", 0, dir_endprolog}, - {"ENDPROC_FRAME", 0, dir_endproc_frame} - }; - size_t i; - - for (i=0; icodes, link) { codebc = yasm_bc_create_common(&win64_uwcode_bc_callback, code, - yasm_symrec_get_line(code->loc)); + yasm_symrec_get_def_line(code->loc)); yasm_section_bcs_append(xdata, codebc); } @@ -259,7 +259,7 @@ win64_uwinfo_bc_expand(yasm_bytecode *bc, int span, long old_val, long new_val, coff_unwind_info *info = (coff_unwind_info *)bc->contents; switch (span) { case 1: - yasm_error_set_xref(yasm_symrec_get_line(info->prolog), + yasm_error_set_xref(yasm_symrec_get_def_line(info->prolog), N_("prologue ended here")); yasm_error_set(YASM_ERROR_VALUE, N_("prologue %ld bytes, must be <256"), new_val); diff --git a/modules/objfmts/dbg/dbg-objfmt.c b/modules/objfmts/dbg/dbg-objfmt.c index e65c2510..5017cb85 100644 --- a/modules/objfmts/dbg/dbg-objfmt.c +++ b/modules/objfmts/dbg/dbg-objfmt.c @@ -144,79 +144,6 @@ dbg_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams, } } -static yasm_symrec * -dbg_objfmt_extern_declare(yasm_object *object, const char *name, - /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)object->objfmt; - yasm_symrec *sym; - - fprintf(objfmt_dbg->dbgfile, "extern_declare(\"%s\", ", name); - yasm_vps_print(objext_valparams, objfmt_dbg->dbgfile); - fprintf(objfmt_dbg->dbgfile, ", %lu), returning sym\n", line); - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_EXTERN, line); - return sym; -} - -static yasm_symrec * -dbg_objfmt_global_declare(yasm_object *object, const char *name, - /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)object->objfmt; - yasm_symrec *sym; - - fprintf(objfmt_dbg->dbgfile, "global_declare(\"%s\", ", name); - yasm_vps_print(objext_valparams, objfmt_dbg->dbgfile); - fprintf(objfmt_dbg->dbgfile, ", %lu), returning sym\n", line); - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_GLOBAL, line); - return sym; -} - -static yasm_symrec * -dbg_objfmt_common_declare(yasm_object *object, const char *name, - /*@only@*/ yasm_expr *size, - /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)object->objfmt; - yasm_symrec *sym; - - assert(objfmt_dbg->dbgfile != NULL); - fprintf(objfmt_dbg->dbgfile, "common_declare(\"%s\", ", name); - yasm_expr_print(size, objfmt_dbg->dbgfile); - fprintf(objfmt_dbg->dbgfile, ", "); - yasm_vps_print(objext_valparams, objfmt_dbg->dbgfile); - fprintf(objfmt_dbg->dbgfile, ", %lu), returning sym\n", line); - yasm_expr_destroy(size); - - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_COMMON, line); - return sym; -} - -static int -dbg_objfmt_directive(yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *valparams, - /*@null@*/ yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_objfmt_dbg *objfmt_dbg = (yasm_objfmt_dbg *)object->objfmt; - fprintf(objfmt_dbg->dbgfile, "directive(\"%s\", ", name); - yasm_vps_print(valparams, objfmt_dbg->dbgfile); - fprintf(objfmt_dbg->dbgfile, ", "); - yasm_vps_print(objext_valparams, objfmt_dbg->dbgfile); - fprintf(objfmt_dbg->dbgfile, ", %lu), returning 0 (recognized)\n", line); - return 0; /* dbg format "recognizes" all directives */ -} - - /* Define valid debug formats to use with this object format */ static const char *dbg_objfmt_dbgfmt_keywords[] = { "null", @@ -231,13 +158,10 @@ yasm_objfmt_module yasm_dbg_LTX_objfmt = { 32, dbg_objfmt_dbgfmt_keywords, "null", + NULL, /* no directives */ dbg_objfmt_create, dbg_objfmt_output, dbg_objfmt_destroy, dbg_objfmt_add_default_section, - dbg_objfmt_section_switch, - dbg_objfmt_extern_declare, - dbg_objfmt_global_declare, - dbg_objfmt_common_declare, - dbg_objfmt_directive + dbg_objfmt_section_switch }; diff --git a/modules/objfmts/elf/elf-objfmt.c b/modules/objfmts/elf/elf-objfmt.c index 19dc5996..70b0f835 100644 --- a/modules/objfmts/elf/elf-objfmt.c +++ b/modules/objfmts/elf/elf-objfmt.c @@ -75,8 +75,9 @@ typedef struct { typedef struct { yasm_objfmt_elf *objfmt_elf; + yasm_errwarns *errwarns; int local_names; -} append_local_sym_info; +} build_symtab_info; yasm_objfmt_module yasm_elf_LTX_objfmt; yasm_objfmt_module yasm_elf32_LTX_objfmt; @@ -89,38 +90,170 @@ elf_objfmt_symtab_append(yasm_objfmt_elf *objfmt_elf, yasm_symrec *sym, elf_symbol_type type, elf_symbol_vis vis, yasm_expr *size, elf_address *value) { - /* Only append to table if not already appended */ elf_symtab_entry *entry = yasm_symrec_get_data(sym, &elf_symrec_data); - if (!entry || !elf_sym_in_table(entry)) { - if (!entry) { - elf_strtab_entry *name = - elf_strtab_append_str(objfmt_elf->strtab, - yasm_symrec_get_name(sym)); - entry = elf_symtab_entry_create(name, sym); - } - elf_symtab_append_entry(objfmt_elf->elf_symtab, entry); + + if (!entry) { + elf_strtab_entry *name = + elf_strtab_append_str(objfmt_elf->strtab, + yasm_symrec_get_name(sym)); + entry = elf_symtab_entry_create(name, sym); yasm_symrec_add_data(sym, &elf_symrec_data, entry); } + /* Only append to table if not already appended */ + if (!elf_sym_in_table(entry)) + elf_symtab_append_entry(objfmt_elf->elf_symtab, entry); + elf_symtab_set_nonzero(entry, NULL, sectidx, bind, type, size, value); elf_sym_set_visibility(entry, vis); return entry; } -static int -elf_objfmt_append_local_sym(yasm_symrec *sym, /*@null@*/ void *d) +static elf_symtab_entry * +build_extern(yasm_objfmt_elf *objfmt_elf, yasm_symrec *sym) { - append_local_sym_info *info = (append_local_sym_info *)d; - elf_symtab_entry *entry; + yasm_valparamhead *objext_valparams = + yasm_symrec_get_objext_valparams(sym); + + if (objext_valparams) { + yasm_valparam *vp = yasm_vps_first(objext_valparams); + for (; vp; vp = yasm_vps_next(vp)) { + if (vp->val) + yasm_error_set(YASM_ERROR_TYPE, + N_("unrecognized symbol type `%s'"), vp->val); + } + } + + return elf_objfmt_symtab_append(objfmt_elf, sym, SHN_UNDEF, STB_GLOBAL, 0, + STV_DEFAULT, NULL, NULL); +} + +static elf_symtab_entry * +build_global(yasm_objfmt_elf *objfmt_elf, yasm_symrec *sym) +{ + yasm_valparamhead *objext_valparams = + yasm_symrec_get_objext_valparams(sym); + elf_symbol_type type = 0; + yasm_expr *size = NULL; + elf_symbol_vis vis = STV_DEFAULT; + unsigned int vis_overrides = 0; + + if (objext_valparams) { + yasm_valparam *vp = yasm_vps_first(objext_valparams); + for (; vp; vp = yasm_vps_next(vp)) + { + if (vp->val) { + if (yasm__strcasecmp(vp->val, "function") == 0) + type = STT_FUNC; + else if (yasm__strcasecmp(vp->val, "data") == 0 || + yasm__strcasecmp(vp->val, "object") == 0) + type = STT_OBJECT; + else if (yasm__strcasecmp(vp->val, "internal") == 0) { + vis = STV_INTERNAL; + vis_overrides++; + } + else if (yasm__strcasecmp(vp->val, "hidden") == 0) { + vis = STV_HIDDEN; + vis_overrides++; + } + else if (yasm__strcasecmp(vp->val, "protected") == 0) { + vis = STV_PROTECTED; + vis_overrides++; + } + else + yasm_error_set(YASM_ERROR_TYPE, + N_("unrecognized symbol type `%s'"), + vp->val); + } + else if (vp->param && !size) { + size = vp->param; + vp->param = NULL; /* to avoid double-free of expr */ + } + } + if (vis_overrides > 1) { + yasm_warn_set(YASM_WARN_GENERAL, + N_("More than one symbol visibility provided; using last")); + } + } + + return elf_objfmt_symtab_append(objfmt_elf, sym, SHN_UNDEF, STB_GLOBAL, + type, vis, size, NULL); +} + +static /*@null@*/ elf_symtab_entry * +build_common(yasm_objfmt_elf *objfmt_elf, yasm_symrec *sym) +{ + yasm_expr **size = yasm_symrec_get_common_size(sym); + yasm_valparamhead *objext_valparams = + yasm_symrec_get_objext_valparams(sym); + unsigned long addralign = 0; + + if (objext_valparams) { + yasm_valparam *vp = yasm_vps_first(objext_valparams); + for (; vp; vp = yasm_vps_next(vp)) { + if (!vp->val && vp->param) { + /*@dependent@*/ /*@null@*/ const yasm_intnum *align_expr; + + align_expr = yasm_expr_get_intnum(&vp->param, 0); + if (!align_expr) { + yasm_error_set(YASM_ERROR_VALUE, + N_("alignment constraint is not an integer")); + return NULL; + } + addralign = yasm_intnum_get_uint(align_expr); + + /* Alignments must be a power of two. */ + if (!is_exp2(addralign)) { + yasm_error_set(YASM_ERROR_VALUE, + N_("alignment constraint is not a power of two")); + return NULL; + } + } else if (vp->val) + yasm_warn_set(YASM_WARN_GENERAL, + N_("Unrecognized qualifier `%s'"), vp->val); + } + } + + return elf_objfmt_symtab_append(objfmt_elf, sym, SHN_COMMON, STB_GLOBAL, + 0, STV_DEFAULT, *size, &addralign); +} + +static int +elf_objfmt_build_symtab(yasm_symrec *sym, /*@null@*/ void *d) +{ + build_symtab_info *info = (build_symtab_info *)d; + yasm_sym_vis vis = yasm_symrec_get_visibility(sym); + yasm_sym_status status = yasm_symrec_get_status(sym); + elf_symtab_entry *entry = yasm_symrec_get_data(sym, &elf_symrec_data); elf_address value=0; yasm_section *sect=NULL; yasm_bytecode *precbc=NULL; assert(info != NULL); + if (vis & YASM_SYM_EXTERN) { + entry = build_extern(info->objfmt_elf, sym); + yasm_errwarn_propagate(info->errwarns, + yasm_symrec_get_decl_line(sym)); + return 0; + } + + if (vis & YASM_SYM_COMMON) { + entry = build_common(info->objfmt_elf, sym); + yasm_errwarn_propagate(info->errwarns, + yasm_symrec_get_decl_line(sym)); + /* If the COMMON variable was actually defined, fall through. */ + if (!(status & YASM_SYM_DEFINED)) + return 0; + } + + /* Ignore any undefined at this point. */ + if (!(status & YASM_SYM_DEFINED)) + return 0; + if (!yasm_symrec_get_label(sym, &precbc)) { - if (!yasm_symrec_is_abs(sym)) /* let absolute symbol into output */ + if (!yasm_symrec_get_equ(sym) && !yasm_symrec_is_abs(sym)) return 0; precbc = NULL; } @@ -128,25 +261,44 @@ elf_objfmt_append_local_sym(yasm_symrec *sym, /*@null@*/ void *d) if (precbc) sect = yasm_bc_get_section(precbc); - entry = yasm_symrec_get_data(sym, &elf_symrec_data); - if (!entry || !elf_sym_in_table(entry)) { + if (entry && elf_sym_in_table(entry)) + ; + else if (vis & YASM_SYM_GLOBAL) { + entry = build_global(info->objfmt_elf, sym); + yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym)); + } else { int is_sect = 0; + + /* Locals (except when debugging) do not need to be + * in the symbol table, unless they're a section. + */ if (sect && !yasm_section_is_absolute(sect) && strcmp(yasm_symrec_get_name(sym), yasm_section_get_name(sect))==0) is_sect = 1; - - /* neither sections nor locals (except when debugging) need names */ +#if 0 + /* FIXME: to enable this we must have handling in place for special + * symbols. + */ + if (!info->local_names && !is_sect) + return 0; +#else + if (yasm_symrec_get_equ(sym) && !yasm_symrec_is_abs(sym)) + return 0; +#endif + entry = yasm_symrec_get_data(sym, &elf_symrec_data); if (!entry) { - elf_strtab_entry *name = info->local_names && !is_sect - ? elf_strtab_append_str(info->objfmt_elf->strtab, - yasm_symrec_get_name(sym)) - : NULL; + elf_strtab_entry *name = !info->local_names || is_sect ? NULL : + elf_strtab_append_str(info->objfmt_elf->strtab, + yasm_symrec_get_name(sym)); entry = elf_symtab_entry_create(name, sym); + yasm_symrec_add_data(sym, &elf_symrec_data, entry); } - elf_symtab_insert_local_sym(info->objfmt_elf->elf_symtab, entry); + + if (!elf_sym_in_table(entry)) + elf_symtab_insert_local_sym(info->objfmt_elf->elf_symtab, entry); + elf_symtab_set_nonzero(entry, sect, 0, STB_LOCAL, is_sect ? STT_SECTION : 0, NULL, 0); - yasm_symrec_add_data(sym, &elf_symrec_data, entry); if (is_sect) return 0; @@ -588,7 +740,7 @@ elf_objfmt_output(yasm_object *object, FILE *f, int all_syms, { yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt; elf_objfmt_output_info info; - append_local_sym_info localsym_info; + build_symtab_info buildsym_info; long pos; unsigned long elf_shead_addr; elf_secthead *esdn; @@ -614,16 +766,17 @@ elf_objfmt_output(yasm_object *object, FILE *f, int all_syms, } /* Create missing section headers */ - localsym_info.objfmt_elf = objfmt_elf; if (yasm_object_sections_traverse(object, &info, elf_objfmt_create_dbg_secthead)) return; /* add all (local) syms to symtab because relocation needs a symtab index * if all_syms, register them by name. if not, use strtab entry 0 */ - localsym_info.local_names = all_syms; - yasm_symtab_traverse(object->symtab, &localsym_info, - elf_objfmt_append_local_sym); + buildsym_info.objfmt_elf = objfmt_elf; + buildsym_info.errwarns = errwarns; + buildsym_info.local_names = all_syms; + yasm_symtab_traverse(object->symtab, &buildsym_info, + elf_objfmt_build_symtab); elf_symtab_nlocal = elf_symtab_assign_indices(objfmt_elf->elf_symtab); /* output known sections - includes reloc sections which aren't in yasm's @@ -959,135 +1112,11 @@ elf_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams, return retval; } -static yasm_symrec * -elf_objfmt_extern_declare(yasm_object *object, const char *name, /*@unused@*/ - /*@null@*/ yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt; - yasm_symrec *sym; - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_EXTERN, line); - elf_objfmt_symtab_append(objfmt_elf, sym, SHN_UNDEF, STB_GLOBAL, - 0, STV_DEFAULT, NULL, NULL); - - if (objext_valparams) { - yasm_valparam *vp = yasm_vps_first(objext_valparams); - for (; vp; vp = yasm_vps_next(vp)) - { - if (vp->val) - yasm_error_set(YASM_ERROR_TYPE, - N_("unrecognized symbol type `%s'"), vp->val); - } - } - return sym; -} - -static yasm_symrec * -elf_objfmt_global_declare(yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt; - yasm_symrec *sym; - elf_symbol_type type = 0; - yasm_expr *size = NULL; - elf_symbol_vis vis = STV_DEFAULT; - unsigned int vis_overrides = 0; - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_GLOBAL, line); - - if (objext_valparams) { - yasm_valparam *vp = yasm_vps_first(objext_valparams); - for (; vp; vp = yasm_vps_next(vp)) - { - if (vp->val) { - if (yasm__strcasecmp(vp->val, "function") == 0) - type = STT_FUNC; - else if (yasm__strcasecmp(vp->val, "data") == 0 || - yasm__strcasecmp(vp->val, "object") == 0) - type = STT_OBJECT; - else if (yasm__strcasecmp(vp->val, "internal") == 0) { - vis = STV_INTERNAL; - vis_overrides++; - } - else if (yasm__strcasecmp(vp->val, "hidden") == 0) { - vis = STV_HIDDEN; - vis_overrides++; - } - else if (yasm__strcasecmp(vp->val, "protected") == 0) { - vis = STV_PROTECTED; - vis_overrides++; - } - else - yasm_error_set(YASM_ERROR_TYPE, - N_("unrecognized symbol type `%s'"), - vp->val); - } - else if (vp->param && !size) { - size = vp->param; - vp->param = NULL; /* to avoid deleting the expr */ - } - } - if (vis_overrides > 1) { - yasm_warn_set(YASM_WARN_GENERAL, - N_("More than one symbol visibility provided; using last")); - } - } - - elf_objfmt_symtab_append(objfmt_elf, sym, SHN_UNDEF, STB_GLOBAL, - type, vis, size, NULL); - - return sym; -} - -static yasm_symrec * -elf_objfmt_common_declare(yasm_object *object, const char *name, - /*@only@*/ yasm_expr *size, /*@null@*/ - yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt; - yasm_symrec *sym; - unsigned long addralign = 0; - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_COMMON, line); - - if (objext_valparams) { - yasm_valparam *vp = yasm_vps_first(objext_valparams); - for (; vp; vp = yasm_vps_next(vp)) { - if (!vp->val && vp->param) { - /*@dependent@*/ /*@null@*/ const yasm_intnum *align_expr; - - align_expr = yasm_expr_get_intnum(&vp->param, 0); - if (!align_expr) { - yasm_error_set(YASM_ERROR_VALUE, - N_("alignment constraint is not an integer")); - return sym; - } - addralign = yasm_intnum_get_uint(align_expr); - - /* Alignments must be a power of two. */ - if (!is_exp2(addralign)) { - yasm_error_set(YASM_ERROR_VALUE, - N_("alignment constraint is not a power of two")); - return sym; - } - } else if (vp->val) - yasm_warn_set(YASM_WARN_GENERAL, - N_("Unrecognized qualifier `%s'"), vp->val); - } - } - - elf_objfmt_symtab_append(objfmt_elf, sym, SHN_COMMON, STB_GLOBAL, - 0, STV_DEFAULT, size, &addralign); - - return sym; -} - static void -dir_type(yasm_object *object, yasm_valparam *vp, unsigned long line) +dir_type(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) { + yasm_valparam *vp = yasm_vps_first(valparams); yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt; char *symname = vp->val; /* Get symbol elf data */ @@ -1116,8 +1145,10 @@ dir_type(yasm_object *object, yasm_valparam *vp, unsigned long line) } static void -dir_size(yasm_object *object, yasm_valparam *vp, unsigned long line) +dir_size(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) { + yasm_valparam *vp = yasm_vps_first(valparams); yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt; char *symname = vp->val; /* Get symbol elf data */ @@ -1144,8 +1175,10 @@ dir_size(yasm_object *object, yasm_valparam *vp, unsigned long line) } static void -dir_weak(yasm_object *object, yasm_valparam *vp, unsigned long line) +dir_weak(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) { + yasm_valparam *vp = yasm_vps_first(valparams); yasm_objfmt_elf *objfmt_elf = (yasm_objfmt_elf *)object->objfmt; char *symname = vp->val; yasm_symrec *sym = yasm_symtab_declare(object->symtab, symname, @@ -1155,11 +1188,13 @@ dir_weak(yasm_object *object, yasm_valparam *vp, unsigned long line) } static void -dir_ident(yasm_object *object, yasm_valparam *vp, unsigned long line) +dir_ident(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) { yasm_valparamhead sect_vps; yasm_datavalhead dvs; yasm_section *comment; + yasm_valparam *vp = yasm_vps_first(valparams); yasm_valparam *vp2; /* Put ident data into .comment section */ @@ -1191,40 +1226,6 @@ dir_ident(yasm_object *object, yasm_valparam *vp, unsigned long line) yasm_bc_create_data(&dvs, 1, 1, object->arch, line)); } -static int -elf_objfmt_directive(yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *valparams, - /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - unsigned long line) -{ - static const struct { - const char *name; - void (*func) (yasm_object *, yasm_valparam *, unsigned long); - } dirs[] = { - {"TYPE", dir_type}, - {"SIZE", dir_size}, - {"WEAK", dir_weak}, - {"IDENT", dir_ident} - }; - size_t i; - - for (i=0; ival) { - yasm_error_set(YASM_ERROR_SYNTAX, - N_("Symbol name not specified")); - return 0; - } - dirs[i].func(object, vp, line); - return 0; - } - } - return 1; /* unrecognized */ -} - - /* Define valid debug formats to use with this object format */ static const char *elf_objfmt_dbgfmt_keywords[] = { "null", @@ -1233,6 +1234,18 @@ static const char *elf_objfmt_dbgfmt_keywords[] = { NULL }; +static const yasm_directive elf_objfmt_directives[] = { + { ".type", "gas", dir_type, YASM_DIR_ID_REQUIRED }, + { ".size", "gas", dir_size, YASM_DIR_ID_REQUIRED }, + { ".weak", "gas", dir_weak, YASM_DIR_ID_REQUIRED }, + { ".ident", "gas", dir_ident, YASM_DIR_ARG_REQUIRED }, + { "type", "nasm", dir_type, YASM_DIR_ID_REQUIRED }, + { "size", "nasm", dir_size, YASM_DIR_ID_REQUIRED }, + { "weak", "nasm", dir_weak, YASM_DIR_ID_REQUIRED }, + { "ident", "nasm", dir_ident, YASM_DIR_ARG_REQUIRED }, + { NULL, NULL, NULL, 0 } +}; + /* Define objfmt structure -- see objfmt.h for details */ yasm_objfmt_module yasm_elf_LTX_objfmt = { "ELF", @@ -1241,15 +1254,12 @@ yasm_objfmt_module yasm_elf_LTX_objfmt = { 32, elf_objfmt_dbgfmt_keywords, "null", + elf_objfmt_directives, elf_objfmt_create, elf_objfmt_output, elf_objfmt_destroy, elf_objfmt_add_default_section, - elf_objfmt_section_switch, - elf_objfmt_extern_declare, - elf_objfmt_global_declare, - elf_objfmt_common_declare, - elf_objfmt_directive + elf_objfmt_section_switch }; yasm_objfmt_module yasm_elf32_LTX_objfmt = { @@ -1259,15 +1269,12 @@ yasm_objfmt_module yasm_elf32_LTX_objfmt = { 32, elf_objfmt_dbgfmt_keywords, "null", + elf_objfmt_directives, elf32_objfmt_create, elf_objfmt_output, elf_objfmt_destroy, elf_objfmt_add_default_section, - elf_objfmt_section_switch, - elf_objfmt_extern_declare, - elf_objfmt_global_declare, - elf_objfmt_common_declare, - elf_objfmt_directive + elf_objfmt_section_switch }; yasm_objfmt_module yasm_elf64_LTX_objfmt = { @@ -1277,13 +1284,10 @@ yasm_objfmt_module yasm_elf64_LTX_objfmt = { 64, elf_objfmt_dbgfmt_keywords, "null", + elf_objfmt_directives, elf64_objfmt_create, elf_objfmt_output, elf_objfmt_destroy, elf_objfmt_add_default_section, - elf_objfmt_section_switch, - elf_objfmt_extern_declare, - elf_objfmt_global_declare, - elf_objfmt_common_declare, - elf_objfmt_directive + elf_objfmt_section_switch }; diff --git a/modules/objfmts/elf/elf.c b/modules/objfmts/elf/elf.c index 12fc58a9..52b69ec8 100644 --- a/modules/objfmts/elf/elf.c +++ b/modules/objfmts/elf/elf.c @@ -283,8 +283,6 @@ elf_symtab_entry_destroy(elf_symtab_entry *entry) if (entry == NULL) yasm_internal_error("symtab entry is null"); - if (entry->xsize) - yasm_expr_destroy(entry->xsize); yasm_xfree(entry); } diff --git a/modules/objfmts/elf/elf.h b/modules/objfmts/elf/elf.h index 1a75f91a..c78c5f9b 100644 --- a/modules/objfmts/elf/elf.h +++ b/modules/objfmts/elf/elf.h @@ -391,7 +391,7 @@ struct elf_symtab_entry { yasm_section *sect; elf_strtab_entry *name; elf_address value; - yasm_expr *xsize; + /*@dependent@*/ yasm_expr *xsize; elf_size size; elf_section_index index; elf_symbol_binding bind; diff --git a/modules/objfmts/elf/tests/elfmanysym.hex b/modules/objfmts/elf/tests/elfmanysym.hex index a5f6e1ad..f185d3d0 100644 --- a/modules/objfmts/elf/tests/elfmanysym.hex +++ b/modules/objfmts/elf/tests/elfmanysym.hex @@ -30,7 +30,7 @@ 00 00 00 -b0 +80 10 00 00 @@ -445,37 +445,6 @@ aa 70 63 5f -65 -66 -66 -65 -63 -74 -69 -76 -65 -5f -74 -6f -5f -70 -68 -79 -73 -69 -63 -61 -6c -5f -64 -61 -74 -61 -00 -70 -70 -63 -5f 77 72 69 @@ -993,7 +962,6 @@ aa 00 00 00 -00 01 00 00 @@ -3958,7 +3926,7 @@ e9 01 00 00 -00 +05 00 00 00 @@ -3968,9 +3936,9 @@ e9 00 10 00 +04 00 -00 -5e +5c 01 00 00 @@ -3986,7 +3954,7 @@ e9 00 04 00 -7b +79 01 00 00 @@ -4002,7 +3970,7 @@ e9 00 04 00 -98 +96 01 00 00 @@ -4018,7 +3986,7 @@ e9 00 04 00 -b5 +b4 01 00 00 @@ -4034,7 +4002,7 @@ b5 00 04 00 -d3 +d2 01 00 00 @@ -4050,7 +4018,7 @@ d3 00 04 00 -f1 +f4 01 00 00 @@ -4066,7 +4034,7 @@ f1 00 04 00 -13 +10 02 00 00 @@ -4082,7 +4050,7 @@ f1 00 04 00 -2f +2e 02 00 00 @@ -4098,7 +4066,7 @@ f1 00 04 00 -4d +4c 02 00 00 @@ -4114,7 +4082,7 @@ f1 00 04 00 -6b +68 02 00 00 @@ -4130,7 +4098,7 @@ f1 00 04 00 -87 +85 02 00 00 @@ -4146,7 +4114,7 @@ f1 00 04 00 -a4 +a2 02 00 00 @@ -4162,11 +4130,11 @@ a4 00 04 00 -c1 +c3 02 00 00 -05 +00 00 00 00 @@ -4182,7 +4150,7 @@ e2 02 00 00 -00 +05 00 00 00 @@ -4194,7 +4162,7 @@ e2 00 04 00 -01 +03 03 00 00 @@ -4210,7 +4178,7 @@ e2 00 04 00 -22 +14 03 00 00 @@ -4226,23 +4194,7 @@ e2 00 04 00 -33 -03 -00 -00 -05 -00 -00 -00 -00 -00 -00 -00 -10 -00 -04 -00 -45 +26 03 00 00 @@ -4370,7 +4322,7 @@ e2 00 00 00 -56 +37 03 00 00 @@ -4406,11 +4358,11 @@ e2 00 00 00 -d4 +b4 03 00 00 -d0 +c0 0c 00 00 diff --git a/modules/objfmts/elf/tests/elfvisibility.asm b/modules/objfmts/elf/tests/elfvisibility.asm index 13203106..32d20722 100644 --- a/modules/objfmts/elf/tests/elfvisibility.asm +++ b/modules/objfmts/elf/tests/elfvisibility.asm @@ -4,3 +4,8 @@ global ghidden:hidden global ginternal:internal global gprotected:protected global gtoomany:hidden internal + +ghidden: +ginternal: +gprotected: +gtoomany: diff --git a/modules/objfmts/elf/tests/elfvisibility.hex b/modules/objfmts/elf/tests/elfvisibility.hex index c4ace91f..8da06880 100644 --- a/modules/objfmts/elf/tests/elfvisibility.hex +++ b/modules/objfmts/elf/tests/elfvisibility.hex @@ -204,7 +204,7 @@ ff 00 10 02 -00 +04 00 0b 00 @@ -220,7 +220,7 @@ ff 00 10 01 -00 +04 00 15 00 @@ -236,7 +236,7 @@ ff 00 10 03 -00 +04 00 20 00 @@ -252,7 +252,7 @@ ff 00 10 01 -00 +04 00 00 00 diff --git a/modules/objfmts/elf/tests/gas64/elf_gas64_reloc.hex b/modules/objfmts/elf/tests/gas64/elf_gas64_reloc.hex index c4dc66fb..906cce87 100644 --- a/modules/objfmts/elf/tests/gas64/elf_gas64_reloc.hex +++ b/modules/objfmts/elf/tests/gas64/elf_gas64_reloc.hex @@ -730,15 +730,15 @@ ff 2d 00 5f -5a -45 -52 -4f 56 41 52 00 5f +5a +45 +52 +4f 56 41 52 @@ -870,7 +870,7 @@ c0 00 00 00 -03 +08 00 00 00 @@ -894,7 +894,7 @@ c0 00 00 00 -0c +03 00 00 00 diff --git a/modules/objfmts/macho/macho-objfmt.c b/modules/objfmts/macho/macho-objfmt.c index ac7eacce..b07bbe0b 100644 --- a/modules/objfmts/macho/macho-objfmt.c +++ b/modules/objfmts/macho/macho-objfmt.c @@ -293,7 +293,6 @@ typedef struct macho_section_data { typedef struct macho_symrec_data { - /*@owned@*/ /*@null@*/ yasm_expr *size; /* size if COMMON declaration */ unsigned long index; /* index in output order */ yasm_intnum *value; /* valid after writing symtable to file */ unsigned long length; /* length + 1 (plus auto underscore) */ @@ -948,13 +947,14 @@ macho_objfmt_output_symtable(yasm_symrec *sym, /*@null@*/ void *d) scnum = -1; /*n_desc = REFERENCE_FLAG_UNDEFINED_LAZY; * FIXME: see definition of REFERENCE_FLAG_* above */ } else if (vis & YASM_SYM_COMMON) { + yasm_expr **csize = yasm_symrec_get_common_size(sym); n_type = N_UNDF | N_EXT; - if (symd) { - intn = yasm_expr_get_intnum(&symd->size, 1); + if (csize) { + intn = yasm_expr_get_intnum(csize, 1); if (!intn) { yasm_error_set(YASM_ERROR_NOT_CONSTANT, N_("COMMON data size not an integer expression")); - yasm_errwarn_propagate(info->errwarns, symd->size->line); + yasm_errwarn_propagate(info->errwarns, (*csize)->line); } else yasm_intnum_set_uint(val, yasm_intnum_get_uint(intn)); } @@ -1500,48 +1500,9 @@ macho_section_data_print(void *data, FILE *f, int indent_level) fprintf(f, "%*soffset=%ld\n", indent_level, "", msd->offset); } -static yasm_symrec * -macho_objfmt_extern_declare(yasm_object *object, const char *name, /*@unused@*/ - /*@null@*/ yasm_valparamhead *objext_valparams, - unsigned long line) -{ - return yasm_symtab_declare(object->symtab, name, YASM_SYM_EXTERN, line); -} - -static yasm_symrec * -macho_objfmt_global_declare(yasm_object *object, const char *name, /*@unused@*/ - /*@null@*/ yasm_valparamhead *objext_valparams, - unsigned long line) -{ - return yasm_symtab_declare(object->symtab, name, YASM_SYM_GLOBAL, line); -} - -static yasm_symrec * -macho_objfmt_common_declare(yasm_object *object, const char *name, - /*@only@*/ yasm_expr *size, - /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_symrec *sym; - macho_symrec_data *sym_data; - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_COMMON, line); - - sym_data = yasm_xmalloc(sizeof(macho_symrec_data)); - - sym_data->size = size; - yasm_symrec_add_data(sym, &macho_symrec_data_cb, sym_data); - return sym; -} - static void macho_symrec_data_destroy(void *data) { - macho_symrec_data *csymd = (macho_symrec_data *)data; - - if (csymd->size) - yasm_expr_destroy(csymd->size); yasm_xfree(data); } @@ -1550,12 +1511,6 @@ macho_symrec_data_print(void *data, FILE *f, int indent_level) { macho_symrec_data *msd = (macho_symrec_data *)data; - fprintf(f, "%*ssize=", indent_level, ""); - if (msd->size) - yasm_expr_print(msd->size, f); - else - fprintf(f, "nil"); - fprintf(f, "\n"); fprintf(f, "%*sindex=%ld\n", indent_level, "", msd->index); fprintf(f, "%*svalue=", indent_level, ""); if (msd->value) @@ -1565,18 +1520,6 @@ macho_symrec_data_print(void *data, FILE *f, int indent_level) } -static int -macho_objfmt_directive(/*@unused@*/ yasm_object *object, - /*@unused@*/ const char *name, - /*@unused@*/ /*@null@*/ yasm_valparamhead *valparams, - /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - /*@unused@*/ unsigned long line) -{ - return 1; /* no objfmt directives */ -} - - /* Define valid debug formats to use with this object format */ static const char *macho_objfmt_dbgfmt_keywords[] = { "null", @@ -1591,15 +1534,12 @@ yasm_objfmt_module yasm_macho_LTX_objfmt = { 32, macho_objfmt_dbgfmt_keywords, "null", + NULL, /* no directives */ macho_objfmt_create, macho_objfmt_output, macho_objfmt_destroy, macho_objfmt_add_default_section, - macho_objfmt_section_switch, - macho_objfmt_extern_declare, - macho_objfmt_global_declare, - macho_objfmt_common_declare, - macho_objfmt_directive + macho_objfmt_section_switch }; yasm_objfmt_module yasm_macho32_LTX_objfmt = { @@ -1609,15 +1549,12 @@ yasm_objfmt_module yasm_macho32_LTX_objfmt = { 32, macho_objfmt_dbgfmt_keywords, "null", + NULL, /* no directives */ macho32_objfmt_create, macho_objfmt_output, macho_objfmt_destroy, macho_objfmt_add_default_section, - macho_objfmt_section_switch, - macho_objfmt_extern_declare, - macho_objfmt_global_declare, - macho_objfmt_common_declare, - macho_objfmt_directive + macho_objfmt_section_switch }; yasm_objfmt_module yasm_macho64_LTX_objfmt = { @@ -1627,13 +1564,10 @@ yasm_objfmt_module yasm_macho64_LTX_objfmt = { 64, macho_objfmt_dbgfmt_keywords, "null", + NULL, /* no directives */ macho64_objfmt_create, macho_objfmt_output, macho_objfmt_destroy, macho_objfmt_add_default_section, - macho_objfmt_section_switch, - macho_objfmt_extern_declare, - macho_objfmt_global_declare, - macho_objfmt_common_declare, - macho_objfmt_directive + macho_objfmt_section_switch }; diff --git a/modules/objfmts/rdf/rdf-objfmt.c b/modules/objfmts/rdf/rdf-objfmt.c index 5d7eace7..541935de 100644 --- a/modules/objfmts/rdf/rdf-objfmt.c +++ b/modules/objfmts/rdf/rdf-objfmt.c @@ -100,10 +100,6 @@ typedef struct rdf_section_data { } rdf_section_data; typedef struct rdf_symrec_data { - /*@owned@*/ /*@null@*/ yasm_expr *size; /* size if COMMON declaration */ - unsigned long align; /* alignment if COMMON declaration */ - - unsigned int flags; /* import/export/type flags */ unsigned int segment; /* assigned RDF "segment" index */ } rdf_symrec_data; @@ -156,16 +152,11 @@ yasm_objfmt_module yasm_rdf_LTX_objfmt; static /*@dependent@*/ rdf_symrec_data * -rdf_objfmt_sym_set_data(yasm_symrec *sym, - /*@only@*/ /*@null@*/ yasm_expr *size, - unsigned long align, unsigned int flags) +rdf_objfmt_sym_set_data(yasm_symrec *sym, unsigned int segment) { rdf_symrec_data *rsymd = yasm_xmalloc(sizeof(rdf_symrec_data)); - rsymd->size = size; - rsymd->align = align; - rsymd->flags = flags; - rsymd->segment = 0; + rsymd->segment = segment; yasm_symrec_add_data(sym, &rdf_symrec_data_cb, rsymd); return rsymd; @@ -484,6 +475,72 @@ rdf_objfmt_output_section_file(yasm_section *sect, /*@null@*/ void *d) return 0; } +static unsigned int +rdf_parse_flags(yasm_symrec *sym) +{ + yasm_sym_vis vis = yasm_symrec_get_visibility(sym); + /*@dependent@*/ /*@null@*/ yasm_valparamhead *objext_valparams = + yasm_symrec_get_objext_valparams(sym); + yasm_valparam *vp; + unsigned int flags = 0; + + static const struct { + enum { + FLAG_EXT = 1, + FLAG_GLOB = 2 + } type; + enum { + FLAG_SET = 1, + FLAG_CLR = 2 + } action; + const char *name; + unsigned int flags; + } flagtbl[] = { + { FLAG_EXT|FLAG_GLOB, FLAG_SET, "data", SYM_DATA }, + { FLAG_EXT|FLAG_GLOB, FLAG_SET, "object", SYM_DATA }, + { FLAG_EXT|FLAG_GLOB, FLAG_SET, "proc", SYM_FUNCTION }, + { FLAG_EXT|FLAG_GLOB, FLAG_SET, "function", SYM_FUNCTION }, + { FLAG_EXT, FLAG_SET, "import", SYM_IMPORT }, + { FLAG_GLOB, FLAG_SET, "export", SYM_GLOBAL }, + { FLAG_EXT, FLAG_SET, "far", SYM_FAR }, + { FLAG_EXT, FLAG_CLR, "near", SYM_FAR }, + }; + + if (!objext_valparams) + return 0; + + vp = yasm_vps_first(objext_valparams); + for (; vp; vp = yasm_vps_next(vp)) { + size_t i; + int match; + + if (!vp->val) { + yasm_warn_set(YASM_WARN_GENERAL, + N_("Unrecognized numeric qualifier")); + continue; + } + + match = 0; + for (i=0; ival, flagtbl[i].name) == 0) { + if (flagtbl[i].action == FLAG_SET) + flags |= flagtbl[i].flags; + else if (flagtbl[i].action == FLAG_CLR) + flags &= ~flagtbl[i].flags; + match = 1; + } + } + + if (!match) + yasm_warn_set(YASM_WARN_GENERAL, N_("Unrecognized qualifier `%s'"), + vp->val); + } + + return flags; +} + static int rdf_objfmt_output_sym(yasm_symrec *sym, /*@null@*/ void *d) { @@ -496,7 +553,6 @@ rdf_objfmt_output_sym(yasm_symrec *sym, /*@null@*/ void *d) /*@dependent@*/ /*@null@*/ yasm_section *sect; /*@dependent@*/ /*@null@*/ yasm_bytecode *precbc; unsigned char *localbuf; - rdf_symrec_data *rsymd; assert(info != NULL); @@ -521,15 +577,16 @@ rdf_objfmt_output_sym(yasm_symrec *sym, /*@null@*/ void *d) } else if (yasm_section_is_absolute(sect)) { yasm_warn_set(YASM_WARN_GENERAL, N_("rdf does not support exporting absolutes")); - yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_line(sym)); + yasm_errwarn_propagate(info->errwarns, + yasm_symrec_get_decl_line(sym)); return 0; } else yasm_internal_error(N_("didn't understand section")); value = yasm_bc_next_offset(precbc); } else if (yasm_symrec_get_equ(sym)) { yasm_warn_set(YASM_WARN_GENERAL, - N_("rdf does not support exporting EQU/absolute values")); - yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_line(sym)); + N_("rdf does not support exporting EQU/absolute values")); + yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym)); return 0; } @@ -540,50 +597,72 @@ rdf_objfmt_output_sym(yasm_symrec *sym, /*@null@*/ void *d) yasm_warn_set(YASM_WARN_GENERAL, N_("label name too long, truncating to %d bytes"), EXIM_LABEL_MAX); - yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_line(sym)); len = EXIM_LABEL_MAX-1; } localbuf = info->buf; if (vis & YASM_SYM_GLOBAL) { - rsymd = yasm_symrec_get_data(sym, &rdf_symrec_data_cb); - if (!rsymd) - yasm_internal_error(N_("rdf: no symbol data for global symbol")); YASM_WRITE_8(localbuf, RDFREC_GLOBAL); YASM_WRITE_8(localbuf, 6+len+1); /* record length */ - YASM_WRITE_8(localbuf, rsymd->flags); /* flags */ + YASM_WRITE_8(localbuf, rdf_parse_flags(sym)); /* flags */ YASM_WRITE_8(localbuf, scnum); /* segment referred to */ YASM_WRITE_32_L(localbuf, value); /* offset */ } else { - /* Create new symrec data if it doesn't already exist */ - rsymd = yasm_symrec_get_data(sym, &rdf_symrec_data_cb); - if (!rsymd) - rsymd = rdf_objfmt_sym_set_data(sym, NULL, 0, 0); - /* Save symbol segment in symrec data (for later reloc gen) */ - rsymd->segment = info->indx++; - scnum = rsymd->segment; + scnum = info->indx++; + rdf_objfmt_sym_set_data(sym, scnum); if (vis & YASM_SYM_COMMON) { + /*@dependent@*/ /*@null@*/ yasm_expr **csize_expr; const yasm_intnum *intn; + /*@dependent@*/ /*@null@*/ yasm_valparamhead *objext_valparams = + yasm_symrec_get_objext_valparams(sym); + unsigned long addralign = 0; YASM_WRITE_8(localbuf, RDFREC_COMMON); YASM_WRITE_8(localbuf, 8+len+1); /* record length */ YASM_WRITE_16_L(localbuf, scnum); /* segment allocated */ /* size */ - intn = yasm_expr_get_intnum(&rsymd->size, 1); + csize_expr = yasm_symrec_get_common_size(sym); + assert(csize_expr != NULL); + intn = yasm_expr_get_intnum(csize_expr, 1); if (!intn) { yasm_error_set(YASM_ERROR_NOT_CONSTANT, N_("COMMON data size not an integer expression")); - yasm_errwarn_propagate(info->errwarns, - yasm_symrec_get_line(sym)); } else value = yasm_intnum_get_uint(intn); YASM_WRITE_32_L(localbuf, value); - YASM_WRITE_16_L(localbuf, rsymd->align); /* alignment */ + + /* alignment */ + if (objext_valparams) { + yasm_valparam *vp = yasm_vps_first(objext_valparams); + for (; vp; vp = yasm_vps_next(vp)) { + if (!vp->val && vp->param) { + /*@null@*/ const yasm_intnum *align_expr; + + align_expr = yasm_expr_get_intnum(&vp->param, 0); + if (!align_expr) { + yasm_error_set(YASM_ERROR_VALUE, + N_("alignment constraint is not an integer")); + continue; + } + addralign = yasm_intnum_get_uint(align_expr); + + /* Alignments must be a power of two. */ + if (!is_exp2(addralign)) { + yasm_error_set(YASM_ERROR_VALUE, + N_("alignment constraint is not a power of two")); + continue; + } + } else if (vp->val) + yasm_warn_set(YASM_WARN_GENERAL, + N_("Unrecognized qualifier `%s'"), vp->val); + } + } + YASM_WRITE_16_L(localbuf, addralign); } else if (vis & YASM_SYM_EXTERN) { - unsigned int flags = rsymd->flags; + unsigned int flags = rdf_parse_flags(sym); if (flags & SYM_FAR) { YASM_WRITE_8(localbuf, RDFREC_FARIMPORT); flags &= ~SYM_FAR; @@ -601,6 +680,8 @@ rdf_objfmt_output_sym(yasm_symrec *sym, /*@null@*/ void *d) YASM_WRITE_8(localbuf, 0); /* 0-terminated name */ fwrite(info->buf, (unsigned long)(localbuf-info->buf), 1, info->f); + + yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym)); return 0; } @@ -917,163 +998,9 @@ rdf_section_data_print(void *data, FILE *f, int indent_level) fprintf(f, "%*ssize=%ld\n", indent_level, "", rsd->size); } -static yasm_symrec * -rdf_objfmt_extern_declare(yasm_object *object, const char *name, /*@unused@*/ - /*@null@*/ yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_symrec *sym; - unsigned int flags = 0; - - static const struct { - const char *name; - unsigned int flags; - } flagnames[] = { - { "data", SYM_DATA }, - { "object", SYM_DATA }, - { "proc", SYM_FUNCTION }, - { "function", SYM_FUNCTION }, - { "import", SYM_IMPORT }, - { "far", SYM_FAR }, - }; - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_EXTERN, line); - - if (objext_valparams) { - yasm_valparam *vp = yasm_vps_first(objext_valparams); - for (; vp; vp = yasm_vps_next(vp)) { - size_t i; - int match; - - if (!vp->val) { - yasm_warn_set(YASM_WARN_GENERAL, - N_("Unrecognized numeric qualifier")); - continue; - } - - match = 0; - for (i=0; ival, flagnames[i].name) == 0) { - flags |= flagnames[i].flags; - match = 1; - } - } - - if (yasm__strcasecmp(vp->val, "near") == 0) { - flags &= ~SYM_FAR; - match = 1; - } - - if (!match) - yasm_warn_set(YASM_WARN_GENERAL, - N_("Unrecognized qualifier `%s'"), vp->val); - } - } - - /* Remember flags */ - rdf_objfmt_sym_set_data(sym, NULL, 0, flags); - return sym; -} - -static yasm_symrec * -rdf_objfmt_global_declare(yasm_object *object, const char *name, /*@unused@*/ - /*@null@*/ yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_symrec *sym; - unsigned int flags = 0; - - static const struct { - const char *name; - unsigned int flags; - } flagnames[] = { - { "data", SYM_DATA }, - { "object", SYM_DATA }, - { "proc", SYM_FUNCTION }, - { "function", SYM_FUNCTION }, - { "export", SYM_GLOBAL }, - }; - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_GLOBAL, line); - - if (objext_valparams) { - yasm_valparam *vp = yasm_vps_first(objext_valparams); - for (; vp; vp = yasm_vps_next(vp)) { - size_t i; - int match; - - if (!vp->val) { - yasm_warn_set(YASM_WARN_GENERAL, - N_("Unrecognized numeric qualifier")); - continue; - } - - match = 0; - for (i=0; ival, flagnames[i].name) == 0) { - flags |= flagnames[i].flags; - match = 1; - } - } - if (!match) - yasm_warn_set(YASM_WARN_GENERAL, - N_("Unrecognized qualifier `%s'"), vp->val); - } - } - - /* Remember flags */ - rdf_objfmt_sym_set_data(sym, NULL, 0, flags); - return sym; -} - -static yasm_symrec * -rdf_objfmt_common_declare(yasm_object *object, const char *name, - /*@only@*/ yasm_expr *size, - yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_symrec *sym; - unsigned long addralign = 0; - - sym = yasm_symtab_declare(object->symtab, name, YASM_SYM_COMMON, line); - - if (objext_valparams) { - yasm_valparam *vp = yasm_vps_first(objext_valparams); - for (; vp; vp = yasm_vps_next(vp)) { - if (!vp->val && vp->param) { - /*@dependent@*/ /*@null@*/ const yasm_intnum *align_expr; - - align_expr = yasm_expr_get_intnum(&vp->param, 0); - if (!align_expr) { - yasm_error_set(YASM_ERROR_VALUE, - N_("alignment constraint is not an integer")); - return sym; - } - addralign = yasm_intnum_get_uint(align_expr); - - /* Alignments must be a power of two. */ - if (!is_exp2(addralign)) { - yasm_error_set(YASM_ERROR_VALUE, - N_("alignment constraint is not a power of two")); - return sym; - } - } else if (vp->val) - yasm_warn_set(YASM_WARN_GENERAL, - N_("Unrecognized qualifier `%s'"), vp->val); - } - } - - /* Remember size and alignment */ - rdf_objfmt_sym_set_data(sym, size, addralign, 0); - return sym; -} - static void rdf_symrec_data_destroy(void *data) { - rdf_symrec_data *rsymd = (rdf_symrec_data *)data; - if (rsymd->size) - yasm_expr_destroy(rsymd->size); yasm_xfree(data); } @@ -1083,47 +1010,17 @@ rdf_symrec_data_print(void *data, FILE *f, int indent_level) rdf_symrec_data *rsymd = (rdf_symrec_data *)data; fprintf(f, "%*ssymtab segment=%u\n", indent_level, "", rsymd->segment); - fprintf(f, "%*ssize=", indent_level, ""); - if (rsymd->size) - yasm_expr_print(rsymd->size, f); - else - fprintf(f, "nil"); - fprintf(f, "%*salign=%lu\n", indent_level, "", rsymd->align); } -static int -rdf_objfmt_directive(yasm_object *object, const char *name, - /*@null@*/ yasm_valparamhead *valparams, - /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, unsigned long line) +static void +rdf_objfmt_add_libmodule(yasm_object *object, char *name, int lib) { yasm_objfmt_rdf *objfmt_rdf = (yasm_objfmt_rdf *)object->objfmt; - int lib; - yasm_valparam *vp; xdf_str *str; - if (yasm__strcasecmp(name, "library") == 0) - lib = 1; - else if (yasm__strcasecmp(name, "module") == 0) - lib = 0; - else - return 1; - - if (!valparams) { - yasm_error_set(YASM_ERROR_SYNTAX, N_("[%s] requires an argument"), - name); - return 0; - } - vp = yasm_vps_first(valparams); - if (!vp->val) { - yasm_error_set(YASM_ERROR_SYNTAX, N_("argument to [%s] must be name"), - name); - return 0; - } - /* Add to list */ str = yasm_xmalloc(sizeof(xdf_str)); - str->str = vp->val; + str->str = name; if (lib) STAILQ_INSERT_TAIL(&objfmt_rdf->library_names, str, link); else @@ -1135,11 +1032,25 @@ rdf_objfmt_directive(yasm_object *object, const char *name, MODLIB_NAME_MAX); str->str[MODLIB_NAME_MAX-1] = '\0'; } - - vp->val = NULL; /* don't free it */ - return 0; } +static void +dir_library(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) +{ + yasm_valparam *vp = yasm_vps_first(valparams); + rdf_objfmt_add_libmodule(object, vp->val, 1); + vp->val = NULL; /* don't free it */ +} + +static void +dir_module(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) +{ + yasm_valparam *vp = yasm_vps_first(valparams); + rdf_objfmt_add_libmodule(object, vp->val, 0); + vp->val = NULL; /* don't free it */ +} /* Define valid debug formats to use with this object format */ static const char *rdf_objfmt_dbgfmt_keywords[] = { @@ -1147,6 +1058,12 @@ static const char *rdf_objfmt_dbgfmt_keywords[] = { NULL }; +static const yasm_directive rdf_objfmt_directives[] = { + { "library", "nasm", dir_library, YASM_DIR_ID_REQUIRED }, + { "module", "nasm", dir_module, YASM_DIR_ID_REQUIRED }, + { NULL, NULL, NULL, 0 } +}; + /* Define objfmt structure -- see objfmt.h for details */ yasm_objfmt_module yasm_rdf_LTX_objfmt = { "Relocatable Dynamic Object File Format (RDOFF) v2.0", @@ -1155,13 +1072,10 @@ yasm_objfmt_module yasm_rdf_LTX_objfmt = { 32, rdf_objfmt_dbgfmt_keywords, "null", + rdf_objfmt_directives, rdf_objfmt_create, rdf_objfmt_output, rdf_objfmt_destroy, rdf_objfmt_add_default_section, - rdf_objfmt_section_switch, - rdf_objfmt_extern_declare, - rdf_objfmt_global_declare, - rdf_objfmt_common_declare, - rdf_objfmt_directive + rdf_objfmt_section_switch }; diff --git a/modules/objfmts/rdf/tests/rdfabs.errwarn b/modules/objfmts/rdf/tests/rdfabs.errwarn index 19ecde39..ecaaa3b5 100644 --- a/modules/objfmts/rdf/tests/rdfabs.errwarn +++ b/modules/objfmts/rdf/tests/rdfabs.errwarn @@ -1,2 +1,2 @@ --:2: warning: rdf does not support exporting EQU/absolute values --:4: warning: rdf does not support exporting EQU/absolute values +-:6: warning: rdf does not support exporting EQU/absolute values +-:7: warning: rdf does not support exporting EQU/absolute values diff --git a/modules/objfmts/xdf/xdf-objfmt.c b/modules/objfmts/xdf/xdf-objfmt.c index 9e852216..48bcae38 100644 --- a/modules/objfmts/xdf/xdf-objfmt.c +++ b/modules/objfmts/xdf/xdf-objfmt.c @@ -434,8 +434,16 @@ static int xdf_objfmt_count_sym(yasm_symrec *sym, /*@null@*/ void *d) { /*@null@*/ xdf_objfmt_output_info *info = (xdf_objfmt_output_info *)d; + yasm_sym_vis vis = yasm_symrec_get_visibility(sym); assert(info != NULL); - if (info->all_syms || yasm_symrec_get_visibility(sym) != YASM_SYM_LOCAL) { + if (vis & YASM_SYM_COMMON) { + yasm_error_set(YASM_ERROR_GENERAL, + N_("XDF object format does not support common variables")); + yasm_errwarn_propagate(info->errwarns, yasm_symrec_get_decl_line(sym)); + return 0; + } + if (info->all_syms || + (vis != YASM_SYM_LOCAL && !(vis & YASM_SYM_DLOCAL))) { /* Save index in symrec data */ xdf_symrec_data *sym_data = yasm_xmalloc(sizeof(xdf_symrec_data)); sym_data->index = info->indx; @@ -813,35 +821,6 @@ xdf_section_data_print(void *data, FILE *f, int indent_level) fprintf(f, "%*snreloc=%ld\n", indent_level, "", xsd->nreloc); } -static yasm_symrec * -xdf_objfmt_extern_declare(yasm_object *object, const char *name, /*@unused@*/ - /*@null@*/ yasm_valparamhead *objext_valparams, - unsigned long line) -{ - return yasm_symtab_declare(object->symtab, name, YASM_SYM_EXTERN, line); -} - -static yasm_symrec * -xdf_objfmt_global_declare(yasm_object *object, const char *name, /*@unused@*/ - /*@null@*/ yasm_valparamhead *objext_valparams, - unsigned long line) -{ - return yasm_symtab_declare(object->symtab, name, YASM_SYM_GLOBAL, line); -} - -static yasm_symrec * -xdf_objfmt_common_declare(yasm_object *object, const char *name, - /*@only@*/ yasm_expr *size, /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - unsigned long line) -{ - yasm_expr_destroy(size); - yasm_error_set(YASM_ERROR_GENERAL, - N_("XDF object format does not support common variables")); - - return yasm_symtab_declare(object->symtab, name, YASM_SYM_COMMON, line); -} - static void xdf_symrec_data_destroy(void *data) { @@ -856,18 +835,6 @@ xdf_symrec_data_print(void *data, FILE *f, int indent_level) fprintf(f, "%*ssymtab index=%lu\n", indent_level, "", xsd->index); } -static int -xdf_objfmt_directive(/*@unused@*/ yasm_object *object, - /*@unused@*/ const char *name, - /*@unused@*/ /*@null@*/ yasm_valparamhead *valparams, - /*@unused@*/ /*@null@*/ - yasm_valparamhead *objext_valparams, - /*@unused@*/ unsigned long line) -{ - return 1; /* no objfmt directives */ -} - - /* Define valid debug formats to use with this object format */ static const char *xdf_objfmt_dbgfmt_keywords[] = { "null", @@ -882,13 +849,10 @@ yasm_objfmt_module yasm_xdf_LTX_objfmt = { 32, xdf_objfmt_dbgfmt_keywords, "null", + NULL, /* no directives */ xdf_objfmt_create, xdf_objfmt_output, xdf_objfmt_destroy, xdf_objfmt_add_default_section, - xdf_objfmt_section_switch, - xdf_objfmt_extern_declare, - xdf_objfmt_global_declare, - xdf_objfmt_common_declare, - xdf_objfmt_directive + xdf_objfmt_section_switch }; diff --git a/modules/parsers/gas/gas-parse.c b/modules/parsers/gas/gas-parse.c index 0ece9747..67a572e3 100644 --- a/modules/parsers/gas/gas-parse.c +++ b/modules/parsers/gas/gas-parse.c @@ -42,8 +42,6 @@ RCSID("$Id$"); static yasm_bytecode *parse_line(yasm_parser_gas *parser_gas); static yasm_bytecode *parse_instr(yasm_parser_gas *parser_gas); static int parse_dirvals(yasm_parser_gas *parser_gas, yasm_valparamhead *vps); -static int parse_dirstrvals(yasm_parser_gas *parser_gas, - yasm_valparamhead *vps); static int parse_datavals(yasm_parser_gas *parser_gas, yasm_datavalhead *dvs); static int parse_strvals(yasm_parser_gas *parser_gas, yasm_datavalhead *dvs); static yasm_effaddr *parse_memaddr(yasm_parser_gas *parser_gas); @@ -171,25 +169,18 @@ expect_(yasm_parser_gas *parser_gas, int token) case DIR_COMM: case DIR_DATA: case DIR_ENDR: - case DIR_EXTERN: case DIR_EQU: case DIR_FILE: case DIR_FILL: - case DIR_GLOBAL: - case DIR_IDENT: case DIR_LEB128: case DIR_LINE: - case DIR_LOC: case DIR_LOCAL: case DIR_LCOMM: case DIR_ORG: case DIR_REPT: case DIR_SECTION: case DIR_SECTNAME: - case DIR_SIZE: case DIR_SKIP: - case DIR_TYPE: - case DIR_WEAK: case DIR_ZERO: str = "expected directive"; break; @@ -253,14 +244,18 @@ parse_line(yasm_parser_gas *parser_gas) switch (curtok) { case ID: id = ID_val; + parser_gas->state = INSTDIR; get_next_token(); /* ID */ if (curtok == ':') { /* Label */ + parser_gas->state = INITIAL; get_next_token(); /* : */ define_label(parser_gas, id, 0); return parse_line(parser_gas); } else if (curtok == '=') { /* EQU */ + /* TODO: allow redefinition, assigning to . (same as .org) */ + parser_gas->state = INITIAL; get_next_token(); /* = */ e = parse_expr(parser_gas); if (e) @@ -271,7 +266,16 @@ parse_line(yasm_parser_gas *parser_gas) yasm_xfree(id); return NULL; } - /* must be an error at this point */ + + /* possibly a directive; try to parse it */ + parse_dirvals(parser_gas, &vps); + if (!yasm_object_directive(p_object, id, "gas", &vps, NULL, + cur_line)) { + yasm_vps_delete(&vps); + yasm_xfree(id); + return NULL; + } + yasm_vps_delete(&vps); if (id[0] == '.') yasm_warn_set(YASM_WARN_GENERAL, N_("directive `%s' not recognized"), id); @@ -399,13 +403,6 @@ parse_line(yasm_parser_gas *parser_gas) yasm_xfree(ID_val); get_next_token(); /* ID */ return NULL; - case DIR_GLOBAL: - get_next_token(); /* DIR_GLOBAL */ - if (!expect(ID)) return NULL; - yasm_objfmt_global_declare(p_object, ID_val, NULL, cur_line); - yasm_xfree(ID_val); - get_next_token(); /* ID */ - return NULL; case DIR_COMM: case DIR_LCOMM: { @@ -441,41 +438,24 @@ parse_line(yasm_parser_gas *parser_gas) define_lcomm(parser_gas, id, e, align); } else if (align) { /* Give third parameter as objext valparam */ - yasm_vps_initialize(&vps); + yasm_valparamhead *extvps = yasm_vps_create(); vp = yasm_vp_create(NULL, align); - yasm_vps_append(&vps, vp); + yasm_vps_append(extvps, vp); - yasm_objfmt_common_declare(p_object, id, e, &vps, cur_line); + sym = yasm_symtab_declare(p_symtab, id, YASM_SYM_COMMON, + cur_line); + yasm_symrec_set_common_size(sym, e); + yasm_symrec_set_objext_valparams(sym, extvps); - yasm_vps_delete(&vps); yasm_xfree(id); } else { - yasm_objfmt_common_declare(p_object, id, e, NULL, cur_line); + sym = yasm_symtab_declare(p_symtab, id, YASM_SYM_COMMON, + cur_line); + yasm_symrec_set_common_size(sym, e); yasm_xfree(id); } return NULL; } - case DIR_EXTERN: - get_next_token(); /* DIR_EXTERN */ - if (!expect(ID)) return NULL; - /* Go ahead and do it, even though all undef become extern */ - yasm_objfmt_extern_declare(p_object, ID_val, NULL, cur_line); - yasm_xfree(ID_val); - get_next_token(); /* ID */ - return NULL; - case DIR_WEAK: - get_next_token(); /* DIR_EXTERN */ - if (!expect(ID)) return NULL; - - yasm_vps_initialize(&vps); - vp = yasm_vp_create(ID_val, NULL); - yasm_vps_append(&vps, vp); - get_next_token(); /* ID */ - - yasm_objfmt_directive(p_object, "weak", &vps, NULL, cur_line); - - yasm_vps_delete(&vps); - return NULL; /* Integer data definition directives */ case DIR_ASCII: @@ -620,13 +600,6 @@ parse_line(yasm_parser_gas *parser_gas) } /* Other directives */ - case DIR_IDENT: - get_next_token(); /* DIR_IDENT */ - if (!parse_dirstrvals(parser_gas, &vps)) - return NULL; - yasm_objfmt_directive(p_object, "ident", &vps, NULL, cur_line); - yasm_vps_delete(&vps); - return NULL; case DIR_FILE: get_next_token(); /* DIR_FILE */ if (curtok == STRING) { @@ -662,7 +635,8 @@ parse_line(yasm_parser_gas *parser_gas) vp = yasm_vp_create(filename, NULL); yasm_vps_append(&vps, vp); - yasm_dbgfmt_directive(p_object, "file", &vps, cur_line); + yasm_object_directive(p_object, ".file", "gas", &vps, NULL, + cur_line); yasm_vps_delete(&vps); return NULL; @@ -685,104 +659,8 @@ parse_line(yasm_parser_gas *parser_gas) yasm_vps_append(&vps, vp); get_next_token(); /* STRING */ - yasm_dbgfmt_directive(p_object, "file", &vps, cur_line); - - yasm_vps_delete(&vps); - return NULL; - case DIR_LOC: - /* INTNUM INTNUM INTNUM */ - get_next_token(); /* DIR_LOC */ - yasm_vps_initialize(&vps); - - if (!expect(INTNUM)) return NULL; - vp = yasm_vp_create(NULL, - p_expr_new_ident(yasm_expr_int(INTNUM_val))); - yasm_vps_append(&vps, vp); - get_next_token(); /* INTNUM */ - - if (!expect(INTNUM)) { - yasm_vps_delete(&vps); - return NULL; - } - vp = yasm_vp_create(NULL, - p_expr_new_ident(yasm_expr_int(INTNUM_val))); - yasm_vps_append(&vps, vp); - get_next_token(); /* INTNUM */ - - if (!expect(INTNUM)) { - yasm_vps_delete(&vps); - return NULL; - } - vp = yasm_vp_create(NULL, - p_expr_new_ident(yasm_expr_int(INTNUM_val))); - yasm_vps_append(&vps, vp); - get_next_token(); /* INTNUM */ - - yasm_dbgfmt_directive(p_object, "loc", &vps, cur_line); - - yasm_vps_delete(&vps); - return NULL; - case DIR_TYPE: - /* ID ',' '@' ID */ - get_next_token(); /* DIR_TYPE */ - yasm_vps_initialize(&vps); - - if (!expect(ID)) return NULL; - vp = yasm_vp_create(ID_val, NULL); - yasm_vps_append(&vps, vp); - get_next_token(); /* ID */ - - if (!expect(',')) { - yasm_vps_delete(&vps); - return NULL; - } - get_next_token(); /* ',' */ - - if (!expect('@')) { - yasm_vps_delete(&vps); - return NULL; - } - get_next_token(); /* '@' */ - - if (!expect(ID)) { - yasm_vps_delete(&vps); - return NULL; - } - vp = yasm_vp_create(ID_val, NULL); - yasm_vps_append(&vps, vp); - get_next_token(); /* ID */ - - yasm_objfmt_directive(p_object, "type", &vps, NULL, cur_line); - - yasm_vps_delete(&vps); - return NULL; - case DIR_SIZE: - /* ID ',' expr */ - get_next_token(); /* DIR_SIZE */ - yasm_vps_initialize(&vps); - - if (!expect(ID)) return NULL; - vp = yasm_vp_create(ID_val, NULL); - yasm_vps_append(&vps, vp); - get_next_token(); /* ID */ - - if (!expect(',')) { - yasm_vps_delete(&vps); - return NULL; - } - get_next_token(); /* ',' */ - - e = parse_expr(parser_gas); - if (!e) { - yasm_error_set(YASM_ERROR_SYNTAX, - N_("expression expected for `.size'")); - yasm_vps_delete(&vps); - return NULL; - } - vp = yasm_vp_create(NULL, e); - yasm_vps_append(&vps, vp); - - yasm_objfmt_directive(p_object, "size", &vps, NULL, cur_line); + yasm_object_directive(p_object, ".file", "gas", &vps, NULL, + cur_line); yasm_vps_delete(&vps); return NULL; @@ -863,45 +741,45 @@ parse_instr(yasm_parser_gas *parser_gas) static int parse_dirvals(yasm_parser_gas *parser_gas, yasm_valparamhead *vps) { + yasm_valparam *vp; yasm_expr *e; - yasm_valparam *vp; int num = 0; yasm_vps_initialize(vps); for (;;) { - e = parse_expr(parser_gas); - vp = yasm_vp_create(NULL, e); - yasm_vps_append(vps, vp); - num++; - if (curtok != ',') - break; - get_next_token(); /* ',' */ - } - return num; -} - -static int -parse_dirstrvals(yasm_parser_gas *parser_gas, yasm_valparamhead *vps) -{ - yasm_valparam *vp; - int num = 0; - - yasm_vps_initialize(vps); - - for (;;) { - if (!expect(STRING)) { - yasm_vps_delete(vps); - yasm_vps_initialize(vps); - return 0; + switch (curtok) { + case ID: + get_peek_token(parser_gas); + if (parser_gas->peek_token == ',' || + is_eol_tok(parser_gas->peek_token)) { + /* Just an ID */ + vp = yasm_vp_create(ID_val, NULL); + get_next_token(); /* ID */ + } else { + e = parse_expr(parser_gas); + vp = yasm_vp_create(NULL, e); + } + break; + case STRING: + vp = yasm_vp_create(STRING_val.contents, NULL); + get_next_token(); /* STRING */ + break; + case '@': + /* XXX: is throwing it away *really* the right thing? */ + get_next_token(); /* @ */ + continue; + default: + e = parse_expr(parser_gas); + if (!e) + return num; + vp = yasm_vp_create(NULL, e); + break; } - vp = yasm_vp_create(STRING_val.contents, NULL); yasm_vps_append(vps, vp); - get_next_token(); /* STRING */ num++; - if (curtok != ',') - break; - get_next_token(); /* ',' */ + if (curtok == ',') + get_next_token(); /* ',' */ } return num; } diff --git a/modules/parsers/gas/gas-parser.h b/modules/parsers/gas/gas-parser.h index 71b293f2..b9661689 100644 --- a/modules/parsers/gas/gas-parser.h +++ b/modules/parsers/gas/gas-parser.h @@ -54,25 +54,18 @@ enum tokentype { DIR_COMM, DIR_DATA, DIR_ENDR, - DIR_EXTERN, DIR_EQU, DIR_FILE, DIR_FILL, - DIR_GLOBAL, - DIR_IDENT, DIR_LEB128, DIR_LINE, - DIR_LOC, DIR_LOCAL, DIR_LCOMM, DIR_ORG, DIR_REPT, DIR_SECTION, DIR_SECTNAME, - DIR_SIZE, DIR_SKIP, - DIR_TYPE, - DIR_WEAK, DIR_ZERO, NONE }; diff --git a/modules/parsers/gas/gas-token.re b/modules/parsers/gas/gas-token.re index b1742bd5..52b331c3 100644 --- a/modules/parsers/gas/gas-token.re +++ b/modules/parsers/gas/gas-token.re @@ -362,12 +362,8 @@ scan: '.org' { parser_gas->state = INSTDIR; RETURN(DIR_ORG); } /* data visibility directives */ '.local' { parser_gas->state = INSTDIR; RETURN(DIR_LOCAL); } - '.global' { parser_gas->state = INSTDIR; RETURN(DIR_GLOBAL); } - '.globl' { parser_gas->state = INSTDIR; RETURN(DIR_GLOBAL); } '.comm' { parser_gas->state = INSTDIR; RETURN(DIR_COMM); } '.lcomm' { parser_gas->state = INSTDIR; RETURN(DIR_LCOMM); } - '.extern' { parser_gas->state = INSTDIR; RETURN(DIR_EXTERN); } - '.weak' { parser_gas->state = INSTDIR; RETURN(DIR_WEAK); } /* integer data declaration directives */ '.byte' { lvalp->int_info = 1; @@ -486,26 +482,10 @@ scan: '.fill' { parser_gas->state = INSTDIR; RETURN(DIR_FILL); } '.zero' { parser_gas->state = INSTDIR; RETURN(DIR_ZERO); } /* other directives */ - '.code16' { - yasm_arch_set_var(p_object->arch, "mode_bits", 16); - goto scan; - } - '.code32' { - yasm_arch_set_var(p_object->arch, "mode_bits", 32); - goto scan; - } - '.code64' { - yasm_arch_set_var(p_object->arch, "mode_bits", 64); - goto scan; - } '.equ' { parser_gas->state = INSTDIR; RETURN(DIR_EQU); } '.file' { parser_gas->state = INSTDIR; RETURN(DIR_FILE); } - '.ident' { parser_gas->state = INSTDIR; RETURN(DIR_IDENT); } '.line' { parser_gas->state = INSTDIR; RETURN(DIR_LINE); } - '.loc' { parser_gas->state = INSTDIR; RETURN(DIR_LOC); } '.set' { parser_gas->state = INSTDIR; RETURN(DIR_EQU); } - '.size' { parser_gas->state = INSTDIR; RETURN(DIR_SIZE); } - '.type' { parser_gas->state = INSTDIR; RETURN(DIR_TYPE); } /* label or maybe directive */ [_.][a-zA-Z0-9_$.]* { diff --git a/modules/parsers/nasm/nasm-parse.c b/modules/parsers/nasm/nasm-parse.c index 7d4d7d35..ab2625e9 100644 --- a/modules/parsers/nasm/nasm-parse.c +++ b/modules/parsers/nasm/nasm-parse.c @@ -1074,98 +1074,22 @@ fix_directive_symrec(yasm_expr__item *ei, void *d) } static void -dir_extern(yasm_parser_nasm *parser_nasm, yasm_valparamhead *valparams, - yasm_valparamhead *objext_valparams) +dir_absolute(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) { yasm_valparam *vp = yasm_vps_first(valparams); - yasm_objfmt_extern_declare(p_object, vp->val, objext_valparams, cur_line); + yasm_expr *start = yasm_vp_expr(vp, object->symtab, line); + + object->cur_section = yasm_object_create_absolute(object, start, line); } static void -dir_global(yasm_parser_nasm *parser_nasm, yasm_valparamhead *valparams, - yasm_valparamhead *objext_valparams) +dir_align(yasm_object *object, yasm_valparamhead *valparams, + yasm_valparamhead *objext_valparams, unsigned long line) { yasm_valparam *vp = yasm_vps_first(valparams); - yasm_objfmt_global_declare(p_object, vp->val, objext_valparams, cur_line); -} - -static void -dir_common(yasm_parser_nasm *parser_nasm, yasm_valparamhead *valparams, - yasm_valparamhead *objext_valparams) -{ - yasm_valparam *vp = yasm_vps_first(valparams); - yasm_valparam *vp2 = yasm_vps_next(vp); - unsigned long line = cur_line; - - if (!vp2 || (!vp2->val && !vp2->param)) { - yasm_error_set(YASM_ERROR_SYNTAX, - N_("no size specified in %s declaration"), "COMMON"); - return; - } - if (vp2->val) { - yasm_objfmt_common_declare(p_object, vp->val, - p_expr_new_ident(yasm_expr_sym( - yasm_symtab_use(p_symtab, vp2->val, line))), - objext_valparams, line); - } else if (vp2->param) { - yasm_objfmt_common_declare(p_object, vp->val, vp2->param, - objext_valparams, line); - vp2->param = NULL; - } -} - -static void -dir_section(yasm_parser_nasm *parser_nasm, yasm_valparamhead *valparams, - yasm_valparamhead *objext_valparams) -{ - yasm_section *new_section = - yasm_objfmt_section_switch(p_object, valparams, objext_valparams, - cur_line); - if (new_section) { - cursect = new_section; - parser_nasm->prev_bc = yasm_section_bcs_last(new_section); - } else - yasm_error_set(YASM_ERROR_SYNTAX, N_("invalid argument to [%s]"), - "SECTION"); -} - -static void -dir_absolute(yasm_parser_nasm *parser_nasm, yasm_valparamhead *valparams, - yasm_valparamhead *objext_valparams) -{ - yasm_valparam *vp = yasm_vps_first(valparams); - unsigned long line = cur_line; - /* it can be just an ID or a complete expression, so handle both. */ - if (vp->val) - cursect = - yasm_object_create_absolute(p_object, - p_expr_new_ident(yasm_expr_sym( - yasm_symtab_use(p_symtab, vp->val, line))), line); - else if (vp->param) { - cursect = - yasm_object_create_absolute(p_object, vp->param, line); - vp->param = NULL; - } - parser_nasm->prev_bc = yasm_section_bcs_last(cursect); -} - -static void -dir_align(yasm_parser_nasm *parser_nasm, yasm_valparamhead *valparams, - yasm_valparamhead *objext_valparams) -{ - /*@only@*/ yasm_expr *boundval; + yasm_expr *boundval = yasm_vp_expr(vp, object->symtab, line); /*@depedent@*/ yasm_intnum *boundintn; - yasm_valparam *vp = yasm_vps_first(valparams); - - /* it can be just an ID or a complete expression, so handle both. */ - vp = yasm_vps_first(valparams); - if (vp->val) - boundval = p_expr_new_ident(yasm_expr_sym( - yasm_symtab_use(p_symtab, vp->val, cur_line))); - else if (vp->param) { - boundval = vp->param; - vp->param = NULL; - } /* Largest .align in the section specifies section alignment. * Note: this doesn't match NASM behavior, but is a lot more @@ -1177,43 +1101,19 @@ dir_align(yasm_parser_nasm *parser_nasm, yasm_valparamhead *valparams, /* Alignments must be a power of two. */ if (is_exp2(boundint)) { - if (boundint > yasm_section_get_align(cursect)) - yasm_section_set_align(cursect, boundint, cur_line); + if (boundint > yasm_section_get_align(object->cur_section)) + yasm_section_set_align(object->cur_section, boundint, line); } } /* As this directive is called only when nop is used as fill, always * use arch (nop) fill. */ - parser_nasm->prev_bc = - yasm_section_bcs_append(cursect, - yasm_bc_create_align(boundval, NULL, NULL, - /*yasm_section_is_code(cursect) ?*/ - yasm_arch_get_fill(p_object->arch)/* : NULL*/, - cur_line)); -} - -static void -dir_cpu(yasm_parser_nasm *parser_nasm, yasm_valparamhead *valparams, - yasm_valparamhead *objext_valparams) -{ - yasm_valparam *vp; - yasm_vps_foreach(vp, valparams) { - if (vp->val) - yasm_arch_parse_cpu(p_object->arch, vp->val, strlen(vp->val)); - else if (vp->param) { - const yasm_intnum *intcpu; - intcpu = yasm_expr_get_intnum(&vp->param, 0); - if (!intcpu) - yasm_error_set(YASM_ERROR_SYNTAX, - N_("invalid argument to [%s]"), "CPU"); - else { - char strcpu[16]; - sprintf(strcpu, "%lu", yasm_intnum_get_uint(intcpu)); - yasm_arch_parse_cpu(p_object->arch, strcpu, strlen(strcpu)); - } - } - } + yasm_section_bcs_append(object->cur_section, + yasm_bc_create_align(boundval, NULL, NULL, + /*yasm_section_is_code(object->cur_section) ?*/ + yasm_arch_get_fill(object->arch)/* : NULL*/, + line)); } static void @@ -1221,57 +1121,21 @@ nasm_parser_directive(yasm_parser_nasm *parser_nasm, const char *name, yasm_valparamhead *valparams, yasm_valparamhead *objext_valparams) { - yasm_valparam *vp; unsigned long line = cur_line; - static const struct { - const char *name; - unsigned int required_arg:1; - unsigned int id_only:1; - void (*func) (yasm_parser_nasm *, yasm_valparamhead *, - yasm_valparamhead *); - } dirs[] = { - {"EXTERN", 1, 1, dir_extern}, - {"GLOBAL", 1, 1, dir_global}, - {"COMMON", 1, 1, dir_common}, - {"SECTION", 1, 0, dir_section}, - {"SEGMENT", 1, 0, dir_section}, - {"ABSOLUTE", 1, 0, dir_absolute}, - {"ALIGN", 1, 0, dir_align}, - {"CPU", 1, 0, dir_cpu} - }; - size_t i; - /* Handle (mostly) output-format independent directives here */ - for (i=0; ival) { - yasm_error_set(YASM_ERROR_SYNTAX, - N_("invalid argument to [%s]"), dirs[i].name); - break; - } - dirs[i].func(parser_nasm, valparams, objext_valparams); - break; - } - } - - if (i != NELEMS(dirs)) { + if (!yasm_object_directive(p_object, name, "nasm", valparams, + objext_valparams, line)) ; - } else if (!yasm_arch_parse_directive(p_object->arch, name, valparams, - objext_valparams, p_object, line)) { - ; - } else if (!yasm_dbgfmt_directive(p_object, name, valparams, line)) { - ; - } else if (yasm_objfmt_directive(p_object, name, valparams, - objext_valparams, line)) { - yasm_error_set(YASM_ERROR_SYNTAX, N_("unrecognized directive [%s]"), + else if (strcasecmp(name, "absolute") == 0) + dir_absolute(p_object, valparams, objext_valparams, line); + else if (strcasecmp(name, "align") == 0) + dir_align(p_object, valparams, objext_valparams, line); + else + yasm_error_set(YASM_ERROR_SYNTAX, N_("unrecognized directive `%s'"), name); - } + + /* In case cursect changed or a bytecode was added, update prev_bc. */ + parser_nasm->prev_bc = yasm_section_bcs_last(cursect); if (valparams) yasm_vps_delete(valparams);