From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12655 invoked by alias); 1 Oct 2003 15:44:21 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 12606 invoked from network); 1 Oct 2003 15:44:17 -0000 Received: from unknown (HELO artax.karlin.mff.cuni.cz) (195.113.31.125) by sources.redhat.com with SMTP; 1 Oct 2003 15:44:17 -0000 Received: by artax.karlin.mff.cuni.cz (Postfix, from userid 29129) id 0139E3FAC; Wed, 1 Oct 2003 17:44:15 +0200 (CEST) Date: Wed, 01 Oct 2003 15:44:00 -0000 From: Josef Zlomek To: Daniel Jacobowitz Cc: gdb@sources.redhat.com Subject: Re: Problem with location lists and variables on stack Message-ID: <20031001154415.GA15387@artax.karlin.mff.cuni.cz> References: <20031001144330.GA11707@artax.karlin.mff.cuni.cz> <20031001144937.GA4613@nevyn.them.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="uAKRQypu60I7Lcqm" Content-Disposition: inline In-Reply-To: <20031001144937.GA4613@nevyn.them.org> User-Agent: Mutt/1.5.4i X-SW-Source: 2003-10/txt/msg00030.txt.bz2 --uAKRQypu60I7Lcqm Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-length: 1522 > > Let the local variables and (some) arguments be addressed using stack pointer, > > for example x86-64 architecture with variables addressed using %rsp. > > The address emitted for variables located on stack by my new patch is always > > DW_OP_fbreg + constant. > > > > When I was testing the emitted debug info with mainline GDB I found that > > GDB probably does not adjust addresses of variables when stack pointer changes > > (like because of "pushq" instruction) if using location lists. > > I think GDB should adjust the address of %rsp addressed variables according to > > change of %rsp (probably DWARF2 sais so for DW_OP_fbreg). I think it is a > > better solution than emitting new locations to location list for all variables > > located on stack after each "push" and "pop" which would cause too large debug > > info. > > > > When I looked to gdb/dwarf2loc.c I see there: > > /* FIXME: cagney/2003-03-26: This code should be using > > get_frame_base_address(), and then implement a dwarf2 specific > > this_base method. */ > > Probably this is related to my problem. > > The FIXME is a cleanliness problem. We do evaluate DW_AT_frame_base, > so it _ought_ to work. > > > I tested it on attached C file, assembler with debug info and x86-64 binary > > is attached too. > > Do you suppose you could produce an x86 (ia32) testcase? I don't have > x86-64 hardware available yet. The debug info looks right so I'd like > to get my fingers into the problem. Here is the x86 assembler. Josef --uAKRQypu60I7Lcqm Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="m-i386.s" Content-length: 18812 .file "m.c" .section .debug_abbrev,"",@progbits .Ldebug_abbrev0: .section .debug_info,"",@progbits .Ldebug_info0: .section .debug_line,"",@progbits .Ldebug_line0: .text .Ltext0: .p2align 4,,15 .globl func1 .type func1, @function func1: .LFB2: # m.c:5 .file 1 "m.c" .loc 1 5 0 .LVL0: # basic block 0 pushl %ebp .LCFI0: pushl %edi .LCFI1: pushl %esi .LCFI2: pushl %ebx .LCFI3: subl $16, %esp .LCFI4: movl 36(%esp), %eax movl 44(%esp), %edi .LVL1: movl 56(%esp), %esi .LVL2: movl 60(%esp), %ebx .LVL3: movl %eax, 12(%esp) movl 40(%esp), %eax movl 64(%esp), %ebp .LVL4: movl %eax, 8(%esp) movl 48(%esp), %eax .LVL5: movl %eax, 4(%esp) movl 52(%esp), %eax .LVL6: movl %eax, (%esp) jmp .L3 .p2align 4,,7 .L6: # basic block 1 # m.c:11 .loc 1 11 0 movl 8(%esp), %edx .LVL7: movl %edi, %eax .LVL8: movl %esi, 8(%esp) movl 12(%esp), %ecx .LVL9: incl %ebp .LVL10: movl %ebx, 12(%esp) movl (%esp), %edi .LVL11: movl %edx, %esi .LVL12: movl %eax, (%esp) .LVL13: movl %ecx, %ebx .L3: # basic block 2 # m.c:6 .loc 1 6 0 movl 8(%esp), %edx movl 12(%esp), %eax movl 4(%esp), %ecx addl %edx, %eax movl (%esp), %edx addl %edi, %eax addl %ecx, %eax addl %edx, %eax addl %esi, %eax addl %ebx, %eax # m.c:8 .loc 1 8 0 cmpl $3, %ebp # m.c:6 .loc 1 6 0 movl %eax, vol # m.c:8 .loc 1 8 0 jne .L6 # basic block 3 # m.c:9 .loc 1 9 0 movl vol, %eax # m.c:12 .loc 1 12 0 addl $16, %esp popl %ebx .LVL14: popl %esi .LVL15: popl %edi .LVL16: popl %ebp .LVL17: ret .LFE2: .size func1, .-func1 .p2align 4,,15 .globl main .type main, @function main: .LFB3: # m.c:16 .loc 1 16 0 # basic block 0 pushl %ebp .LCFI5: # m.c:17 .loc 1 17 0 xorl %eax, %eax # m.c:16 .loc 1 16 0 movl %esp, %ebp .LCFI6: subl $40, %esp .LCFI7: # m.c:17 .loc 1 17 0 movl $20, %ecx # m.c:16 .loc 1 16 0 andl $-16, %esp # m.c:17 .loc 1 17 0 movl %eax, 28(%esp) movl $70, %eax movl %eax, 24(%esp) movl $60, %eax movl %eax, 20(%esp) movl $50, %eax movl %eax, 16(%esp) movl $40, %eax movl %eax, 12(%esp) movl $30, %eax movl %eax, 8(%esp) movl %ecx, 4(%esp) movl $10, (%esp) call func1 movl %eax, vol # m.c:18 .loc 1 18 0 movl vol, %eax # m.c:19 .loc 1 19 0 leave ret .LFE3: .size main, .-main .comm vol,4,4 #APP .section .debug_frame,"",@progbits .Lframe0: .long .LECIE0-.LSCIE0 # Length of Common Information Entry .LSCIE0: .long 0xffffffff # CIE Identifier Tag .byte 0x1 # CIE Version .ascii "\0" # CIE Augmentation .uleb128 0x1 # CIE Code Alignment Factor .sleb128 -4 # CIE Data Alignment Factor .byte 0x8 # CIE RA Column .byte 0xc # DW_CFA_def_cfa .uleb128 0x4 .uleb128 0x4 .byte 0x88 # DW_CFA_offset, column 0x8 .uleb128 0x1 .align 4 .LECIE0: .LSFDE0: .long .LEFDE0-.LASFDE0 # FDE Length .LASFDE0: .long .Lframe0 # FDE CIE offset .long .LFB2 # FDE initial location .long .LFE2-.LFB2 # FDE address range .byte 0x4 # DW_CFA_advance_loc4 .long .LCFI0-.LFB2 .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x8 .byte 0x4 # DW_CFA_advance_loc4 .long .LCFI1-.LCFI0 .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0xc .byte 0x4 # DW_CFA_advance_loc4 .long .LCFI2-.LCFI1 .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x10 .byte 0x4 # DW_CFA_advance_loc4 .long .LCFI3-.LCFI2 .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x14 .byte 0x4 # DW_CFA_advance_loc4 .long .LCFI4-.LCFI3 .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x24 .byte 0x83 # DW_CFA_offset, column 0x3 .uleb128 0x5 .byte 0x86 # DW_CFA_offset, column 0x6 .uleb128 0x4 .byte 0x87 # DW_CFA_offset, column 0x7 .uleb128 0x3 .byte 0x85 # DW_CFA_offset, column 0x5 .uleb128 0x2 .align 4 .LEFDE0: .LSFDE2: .long .LEFDE2-.LASFDE2 # FDE Length .LASFDE2: .long .Lframe0 # FDE CIE offset .long .LFB3 # FDE initial location .long .LFE3-.LFB3 # FDE address range .byte 0x4 # DW_CFA_advance_loc4 .long .LCFI5-.LFB3 .byte 0xe # DW_CFA_def_cfa_offset .uleb128 0x8 .byte 0x85 # DW_CFA_offset, column 0x5 .uleb128 0x2 .byte 0x4 # DW_CFA_advance_loc4 .long .LCFI6-.LCFI5 .byte 0xd # DW_CFA_def_cfa_register .uleb128 0x5 .align 4 .LEFDE2: #NO_APP .text .Letext0: .section .debug_loc,"",@progbits .Ldebug_loc0: .LLST0: .long .LVL0-.text # Location list begin address (*.LLST0) .long .LVL3-.text # Location list end address (*.LLST0) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 4 .long .LVL3-.text # Location list begin address (*.LLST0) .long .LVL9-.text # Location list end address (*.LLST0) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 -20 .long .LVL9-.text # Location list begin address (*.LLST0) .long .LVL10-.text # Location list end address (*.LLST0) .value 0x1 # Location expression size .byte 0x51 # DW_OP_reg1 .long .LVL10-.text # Location list begin address (*.LLST0) .long .LVL13-.text # Location list end address (*.LLST0) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 -20 .long .LVL13-.text # Location list begin address (*.LLST0) .long .LFE2-.text # Location list end address (*.LLST0) .value 0x1 # Location expression size .byte 0x51 # DW_OP_reg1 .long 0x0 # Location list terminator begin (*.LLST0) .long 0x0 # Location list terminator end (*.LLST0) .LLST1: .long .LVL0-.text # Location list begin address (*.LLST1) .long .LVL4-.text # Location list end address (*.LLST1) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 8 .long .LVL4-.text # Location list begin address (*.LLST1) .long .LVL7-.text # Location list end address (*.LLST1) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 -24 .long .LVL7-.text # Location list begin address (*.LLST1) .long .LVL8-.text # Location list end address (*.LLST1) .value 0x1 # Location expression size .byte 0x52 # DW_OP_reg2 .long .LVL8-.text # Location list begin address (*.LLST1) .long .LVL11-.text # Location list end address (*.LLST1) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 -24 .long .LVL11-.text # Location list begin address (*.LLST1) .long .LFE2-.text # Location list end address (*.LLST1) .value 0x1 # Location expression size .byte 0x52 # DW_OP_reg2 .long 0x0 # Location list terminator begin (*.LLST1) .long 0x0 # Location list terminator end (*.LLST1) .LLST2: .long .LVL0-.text # Location list begin address (*.LLST2) .long .LVL1-.text # Location list end address (*.LLST2) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 12 .long .LVL1-.text # Location list begin address (*.LLST2) .long .LVL8-.text # Location list end address (*.LLST2) .value 0x1 # Location expression size .byte 0x57 # DW_OP_reg7 .long .LVL8-.text # Location list begin address (*.LLST2) .long .LVL11-.text # Location list end address (*.LLST2) .value 0x1 # Location expression size .byte 0x50 # DW_OP_reg0 .long .LVL11-.text # Location list begin address (*.LLST2) .long .LVL12-.text # Location list end address (*.LLST2) .value 0x1 # Location expression size .byte 0x57 # DW_OP_reg7 .long .LVL12-.text # Location list begin address (*.LLST2) .long .LVL16-.text # Location list end address (*.LLST2) .value 0x1 # Location expression size .byte 0x50 # DW_OP_reg0 .long .LVL16-.text # Location list begin address (*.LLST2) .long .LFE2-.text # Location list end address (*.LLST2) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 12 .long 0x0 # Location list terminator begin (*.LLST2) .long 0x0 # Location list terminator end (*.LLST2) .LLST3: .long .LVL0-.text # Location list begin address (*.LLST3) .long .LVL5-.text # Location list end address (*.LLST3) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 16 .long .LVL5-.text # Location list begin address (*.LLST3) .long .LFE2-.text # Location list end address (*.LLST3) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 -28 .long 0x0 # Location list terminator begin (*.LLST3) .long 0x0 # Location list terminator end (*.LLST3) .LLST4: .long .LVL0-.text # Location list begin address (*.LLST4) .long .LVL6-.text # Location list end address (*.LLST4) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 20 .long .LVL6-.text # Location list begin address (*.LLST4) .long .LFE2-.text # Location list end address (*.LLST4) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 -32 .long 0x0 # Location list terminator begin (*.LLST4) .long 0x0 # Location list terminator end (*.LLST4) .LLST5: .long .LVL0-.text # Location list begin address (*.LLST5) .long .LVL2-.text # Location list end address (*.LLST5) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 24 .long .LVL2-.text # Location list begin address (*.LLST5) .long .LVL15-.text # Location list end address (*.LLST5) .value 0x1 # Location expression size .byte 0x56 # DW_OP_reg6 .long .LVL15-.text # Location list begin address (*.LLST5) .long .LFE2-.text # Location list end address (*.LLST5) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 24 .long 0x0 # Location list terminator begin (*.LLST5) .long 0x0 # Location list terminator end (*.LLST5) .LLST6: .long .LVL0-.text # Location list begin address (*.LLST6) .long .LVL3-.text # Location list end address (*.LLST6) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 28 .long .LVL3-.text # Location list begin address (*.LLST6) .long .LVL14-.text # Location list end address (*.LLST6) .value 0x1 # Location expression size .byte 0x53 # DW_OP_reg3 .long .LVL14-.text # Location list begin address (*.LLST6) .long .LFE2-.text # Location list end address (*.LLST6) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 28 .long 0x0 # Location list terminator begin (*.LLST6) .long 0x0 # Location list terminator end (*.LLST6) .LLST7: .long .LVL0-.text # Location list begin address (*.LLST7) .long .LVL4-.text # Location list end address (*.LLST7) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 32 .long .LVL4-.text # Location list begin address (*.LLST7) .long .LVL17-.text # Location list end address (*.LLST7) .value 0x1 # Location expression size .byte 0x55 # DW_OP_reg5 .long .LVL17-.text # Location list begin address (*.LLST7) .long .LFE2-.text # Location list end address (*.LLST7) .value 0x2 # Location expression size .byte 0x91 # DW_OP_fbreg .sleb128 32 .long 0x0 # Location list terminator begin (*.LLST7) .long 0x0 # Location list terminator end (*.LLST7) .section .debug_info .long 0xe3 # Length of Compilation Unit Info .value 0x2 # DWARF version number .long .Ldebug_abbrev0 # Offset Into Abbrev. Section .byte 0x4 # Pointer Size (in bytes) .uleb128 0x1 # (DIE (0xb) DW_TAG_compile_unit) .long .Ldebug_line0 # DW_AT_stmt_list .long .Letext0 # DW_AT_high_pc .long .Ltext0 # DW_AT_low_pc .long .LASF1 # DW_AT_producer: "GNU C 3.4 20030924 (experimental)" .byte 0x1 # DW_AT_language .ascii "m.c\0" # DW_AT_name .long .LASF2 # DW_AT_comp_dir: "/local/zlomekj" .uleb128 0x2 # (DIE (0x25) DW_TAG_subprogram) .long 0xab # DW_AT_sibling .byte 0x1 # DW_AT_external .long .LASF3 # DW_AT_name: "func1" .byte 0x1 # DW_AT_decl_file .byte 0x5 # DW_AT_decl_line .byte 0x1 # DW_AT_prototyped .long 0xab # DW_AT_type .long .LFB2 # DW_AT_low_pc .long .LFE2 # DW_AT_high_pc .byte 0x1 # DW_AT_frame_base .byte 0x54 # DW_OP_reg4 .uleb128 0x3 # (DIE (0x40) DW_TAG_formal_parameter) .ascii "a\0" # DW_AT_name .byte 0x1 # DW_AT_decl_file .byte 0x4 # DW_AT_decl_line .long 0xab # DW_AT_type .long .LLST0 # DW_AT_location .uleb128 0x3 # (DIE (0x4d) DW_TAG_formal_parameter) .ascii "b\0" # DW_AT_name .byte 0x1 # DW_AT_decl_file .byte 0x4 # DW_AT_decl_line .long 0xab # DW_AT_type .long .LLST1 # DW_AT_location .uleb128 0x3 # (DIE (0x5a) DW_TAG_formal_parameter) .ascii "c\0" # DW_AT_name .byte 0x1 # DW_AT_decl_file .byte 0x4 # DW_AT_decl_line .long 0xab # DW_AT_type .long .LLST2 # DW_AT_location .uleb128 0x3 # (DIE (0x67) DW_TAG_formal_parameter) .ascii "d\0" # DW_AT_name .byte 0x1 # DW_AT_decl_file .byte 0x4 # DW_AT_decl_line .long 0xab # DW_AT_type .long .LLST3 # DW_AT_location .uleb128 0x3 # (DIE (0x74) DW_TAG_formal_parameter) .ascii "e\0" # DW_AT_name .byte 0x1 # DW_AT_decl_file .byte 0x4 # DW_AT_decl_line .long 0xab # DW_AT_type .long .LLST4 # DW_AT_location .uleb128 0x3 # (DIE (0x81) DW_TAG_formal_parameter) .ascii "f\0" # DW_AT_name .byte 0x1 # DW_AT_decl_file .byte 0x4 # DW_AT_decl_line .long 0xab # DW_AT_type .long .LLST5 # DW_AT_location .uleb128 0x3 # (DIE (0x8e) DW_TAG_formal_parameter) .ascii "g\0" # DW_AT_name .byte 0x1 # DW_AT_decl_file .byte 0x4 # DW_AT_decl_line .long 0xab # DW_AT_type .long .LLST6 # DW_AT_location .uleb128 0x3 # (DIE (0x9b) DW_TAG_formal_parameter) .ascii "seq\0" # DW_AT_name .byte 0x1 # DW_AT_decl_file .byte 0x4 # DW_AT_decl_line .long 0xb2 # DW_AT_type .long .LLST7 # DW_AT_location .byte 0x0 # end of children of DIE 0x25 .uleb128 0x4 # (DIE (0xab) DW_TAG_base_type) .long .LASF0 # DW_AT_name: "long int" .byte 0x4 # DW_AT_byte_size .byte 0x5 # DW_AT_encoding .uleb128 0x5 # (DIE (0xb2) DW_TAG_base_type) .ascii "int\0" # DW_AT_name .byte 0x4 # DW_AT_byte_size .byte 0x5 # DW_AT_encoding .uleb128 0x6 # (DIE (0xb9) DW_TAG_subprogram) .byte 0x1 # DW_AT_external .long .LASF4 # DW_AT_name: "main" .byte 0x1 # DW_AT_decl_file .byte 0x10 # DW_AT_decl_line .long 0xb2 # DW_AT_type .long .LFB3 # DW_AT_low_pc .long .LFE3 # DW_AT_high_pc .byte 0x1 # DW_AT_frame_base .byte 0x55 # DW_OP_reg5 .uleb128 0x7 # (DIE (0xcf) DW_TAG_variable) .ascii "vol\0" # DW_AT_name .byte 0x1 # DW_AT_decl_file .byte 0x1 # DW_AT_decl_line .long 0xe1 # DW_AT_type .byte 0x1 # DW_AT_external .byte 0x5 # DW_AT_location .byte 0x3 # DW_OP_addr .long vol .uleb128 0x8 # (DIE (0xe1) DW_TAG_volatile_type) .long 0xab # DW_AT_type .byte 0x0 # end of children of DIE 0xb .section .debug_abbrev .uleb128 0x1 # (abbrev code) .uleb128 0x11 # (TAG: DW_TAG_compile_unit) .byte 0x1 # DW_children_yes .uleb128 0x10 # (DW_AT_stmt_list) .uleb128 0x6 # (DW_FORM_data4) .uleb128 0x12 # (DW_AT_high_pc) .uleb128 0x1 # (DW_FORM_addr) .uleb128 0x11 # (DW_AT_low_pc) .uleb128 0x1 # (DW_FORM_addr) .uleb128 0x25 # (DW_AT_producer) .uleb128 0xe # (DW_FORM_strp) .uleb128 0x13 # (DW_AT_language) .uleb128 0xb # (DW_FORM_data1) .uleb128 0x3 # (DW_AT_name) .uleb128 0x8 # (DW_FORM_string) .uleb128 0x1b # (DW_AT_comp_dir) .uleb128 0xe # (DW_FORM_strp) .byte 0x0 .byte 0x0 .uleb128 0x2 # (abbrev code) .uleb128 0x2e # (TAG: DW_TAG_subprogram) .byte 0x1 # DW_children_yes .uleb128 0x1 # (DW_AT_sibling) .uleb128 0x13 # (DW_FORM_ref4) .uleb128 0x3f # (DW_AT_external) .uleb128 0xc # (DW_FORM_flag) .uleb128 0x3 # (DW_AT_name) .uleb128 0xe # (DW_FORM_strp) .uleb128 0x3a # (DW_AT_decl_file) .uleb128 0xb # (DW_FORM_data1) .uleb128 0x3b # (DW_AT_decl_line) .uleb128 0xb # (DW_FORM_data1) .uleb128 0x27 # (DW_AT_prototyped) .uleb128 0xc # (DW_FORM_flag) .uleb128 0x49 # (DW_AT_type) .uleb128 0x13 # (DW_FORM_ref4) .uleb128 0x11 # (DW_AT_low_pc) .uleb128 0x1 # (DW_FORM_addr) .uleb128 0x12 # (DW_AT_high_pc) .uleb128 0x1 # (DW_FORM_addr) .uleb128 0x40 # (DW_AT_frame_base) .uleb128 0xa # (DW_FORM_block1) .byte 0x0 .byte 0x0 .uleb128 0x3 # (abbrev code) .uleb128 0x5 # (TAG: DW_TAG_formal_parameter) .byte 0x0 # DW_children_no .uleb128 0x3 # (DW_AT_name) .uleb128 0x8 # (DW_FORM_string) .uleb128 0x3a # (DW_AT_decl_file) .uleb128 0xb # (DW_FORM_data1) .uleb128 0x3b # (DW_AT_decl_line) .uleb128 0xb # (DW_FORM_data1) .uleb128 0x49 # (DW_AT_type) .uleb128 0x13 # (DW_FORM_ref4) .uleb128 0x2 # (DW_AT_location) .uleb128 0x6 # (DW_FORM_data4) .byte 0x0 .byte 0x0 .uleb128 0x4 # (abbrev code) .uleb128 0x24 # (TAG: DW_TAG_base_type) .byte 0x0 # DW_children_no .uleb128 0x3 # (DW_AT_name) .uleb128 0xe # (DW_FORM_strp) .uleb128 0xb # (DW_AT_byte_size) .uleb128 0xb # (DW_FORM_data1) .uleb128 0x3e # (DW_AT_encoding) .uleb128 0xb # (DW_FORM_data1) .byte 0x0 .byte 0x0 .uleb128 0x5 # (abbrev code) .uleb128 0x24 # (TAG: DW_TAG_base_type) .byte 0x0 # DW_children_no .uleb128 0x3 # (DW_AT_name) .uleb128 0x8 # (DW_FORM_string) .uleb128 0xb # (DW_AT_byte_size) .uleb128 0xb # (DW_FORM_data1) .uleb128 0x3e # (DW_AT_encoding) .uleb128 0xb # (DW_FORM_data1) .byte 0x0 .byte 0x0 .uleb128 0x6 # (abbrev code) .uleb128 0x2e # (TAG: DW_TAG_subprogram) .byte 0x0 # DW_children_no .uleb128 0x3f # (DW_AT_external) .uleb128 0xc # (DW_FORM_flag) .uleb128 0x3 # (DW_AT_name) .uleb128 0xe # (DW_FORM_strp) .uleb128 0x3a # (DW_AT_decl_file) .uleb128 0xb # (DW_FORM_data1) .uleb128 0x3b # (DW_AT_decl_line) .uleb128 0xb # (DW_FORM_data1) .uleb128 0x49 # (DW_AT_type) .uleb128 0x13 # (DW_FORM_ref4) .uleb128 0x11 # (DW_AT_low_pc) .uleb128 0x1 # (DW_FORM_addr) .uleb128 0x12 # (DW_AT_high_pc) .uleb128 0x1 # (DW_FORM_addr) .uleb128 0x40 # (DW_AT_frame_base) .uleb128 0xa # (DW_FORM_block1) .byte 0x0 .byte 0x0 .uleb128 0x7 # (abbrev code) .uleb128 0x34 # (TAG: DW_TAG_variable) .byte 0x0 # DW_children_no .uleb128 0x3 # (DW_AT_name) .uleb128 0x8 # (DW_FORM_string) .uleb128 0x3a # (DW_AT_decl_file) .uleb128 0xb # (DW_FORM_data1) .uleb128 0x3b # (DW_AT_decl_line) .uleb128 0xb # (DW_FORM_data1) .uleb128 0x49 # (DW_AT_type) .uleb128 0x13 # (DW_FORM_ref4) .uleb128 0x3f # (DW_AT_external) .uleb128 0xc # (DW_FORM_flag) .uleb128 0x2 # (DW_AT_location) .uleb128 0xa # (DW_FORM_block1) .byte 0x0 .byte 0x0 .uleb128 0x8 # (abbrev code) .uleb128 0x35 # (TAG: DW_TAG_volatile_type) .byte 0x0 # DW_children_no .uleb128 0x49 # (DW_AT_type) .uleb128 0x13 # (DW_FORM_ref4) .byte 0x0 .byte 0x0 .byte 0x0 .section .debug_pubnames,"",@progbits .long 0x29 # Length of Public Names Info .value 0x2 # DWARF Version .long .Ldebug_info0 # Offset of Compilation Unit Info .long 0xe7 # Compilation Unit Length .long 0x25 # DIE offset .ascii "func1\0" # external name .long 0xb9 # DIE offset .ascii "main\0" # external name .long 0xcf # DIE offset .ascii "vol\0" # external name .long 0x0 .section .debug_aranges,"",@progbits .long 0x1c # Length of Address Ranges Info .value 0x2 # DWARF Version .long .Ldebug_info0 # Offset of Compilation Unit Info .byte 0x4 # Size of Address .byte 0x0 # Size of Segment Descriptor .value 0x0 # Pad to 8 byte boundary .value 0x0 .long .Ltext0 # Address .long .Letext0-.Ltext0 # Length .long 0x0 .long 0x0 .section .debug_str,"MS",@progbits,1 .LASF4: .string "main" .LASF3: .string "func1" .LASF2: .string "/local/zlomekj" .LASF1: .string "GNU C 3.4 20030924 (experimental)" .LASF0: .string "long int" .section .note.GNU-stack,"",@progbits .ident "GCC: (GNU) 3.4 20030924 (experimental)" --uAKRQypu60I7Lcqm Content-Type: application/octet-stream Content-Disposition: attachment; filename=m-i386 Content-Transfer-Encoding: base64 Content-length: 19939 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 gAQAAIAAqgAAAAAAAAAAAKIAAAAAAAAAlAQAAIAAIAAAAAAAqwQAAIAAIQAA AAAAwgQAAIAAIgAAAAAA1wQAAIAAIwAAAAAA7QQAAIAAJQAAAAAABQUAAIAA JgAAAAAAGwUAAIAAMQAAAAAAMgUAAIAAMgAAAAAASgUAAIAAMwAAAAAAYQUA AIAANAAAAAAAegUAAIAANQAAAAAAkgUAAIAANgAAAAAAqwUAAIAAOAAAAAAA wwUAAIAAOQAAAAAA3AUAAIAAOwAAAAAA/AUAAIAAPQAAAAAAEgYAAIAAPgAA AAAAKAYAAIAAPwAAAAAAPgYAAIAAQAAAAAAAVAYAAIAAQQAAAAAAawYAAIAA QgAAAAAAgwYAAIAAQwAAAAAAmQYAAIAARAAAAAAAsAYAAIAARQAAAAAAxgYA AIAARgAAAAAA3gYAAIAARwAAAAAA9QYAAIAASAAAAAAADgcAAIAASQAAAAAA IwcAAIAATgAAAAAAYwcAAIAAUQAAAAAAewcAAIAAUgAAAAAAmwcAAIAAUwAA AAAAsgcAAIAAVAAAAAAAzQcAAIAAVQAAAAAA6QcAAIAAVgAAAAAAAQgAAIAA WAAAAAAAGQgAAIAAWwAAAAAAMwgAAIAAXgAAAAAASwgAAIAAZQAAAAAAYQgA AIAAaAAAAAAAewgAAIAAbAAAAAAAlQgAAIAAcQAAAAAArggAAIAAcgAAAAAA yQgAAIAAdQAAAAAA5AgAAIAAdgAAAAAAAQkAAIAAeQAAAAAAHAkAAIAAegAA AAAAOQkAAIAAfQAAAAAAUQkAAIAAgAAAAAAAagkAAIAAgwAAAAAAhQkAAIAA hAAAAAAAoQkAAIAAhwAAAAAAugkAAIAAigAAAAAA1AkAAIIAAAAZlgEACAoA AIIAAABGEAAAMAoAAIAAAAAAAAAAAAAAAKIAAAAAAAAAZgoAAIAAAAAAAAAA rgoAAIAAIwAAAAAA6goAAIAAAAAAAAAA9AsAAIAANAAAAAAAEAwAAIAAPAAA AAAAXQwAAIAAQwAAAAAAlgwAAIAARgAAAAAAsgwAAIAAUwAAAAAARQ0AAIAA WgAAAAAAgw0AAIAAXgAAAAAAoA0AAIAAAAAAAAAAdQ4AAIAAbAAAAAAAlQ4A AIAAdAAAAAAA6Q4AAIAAeQAAAAAACg8AAIAAgQAAAAAAkg8AAIAAhgAAAAAA 0A8AAIAAjAAAAAAAAAAAAKIAAAAAAAAAAAAAAKIAAAAAAAAARwQAAIIAAAAR CgAA6A8AAIAA/wAAAAAA/g8AAIAAGAEAAAAAAAAAAKIAAAAAAAAAExAAAIIA AAAAAAAAJhAAAIIAAAAtHwAARwQAAIIAAAAAAAAAAAAAAKIAAAAAAAAAOBAA AIIAAAAAAAAAAAAAAKIAAAAAAAAAZRAAAIAASwAAAAAAAAAAAKIAAAAAAAAA AAAAAKIAAAAAAAAA5xAAAIAAHgAAAAAAKhEAAIAAIwAAAAAAbxEAAIIAAAAA AAAAghEAAIIAAACmwAEAExAAAMIAAAAAAAAAJhAAAIIAAAAAAAAARwQAAMIA AAAAAAAAAAAAAKIAAAAAAAAARwQAAMIAAAAAAAAAkxEAAIAAAAAAAAAAchIA AIAAAAAAAAAAqRIAAIAASAAAAAAA0xIAAIAASwAAAAAAAhMAAIAATAAAAAAA MxMAAIAAVQAAAAAAZhMAAIAAWgAAAAAAoRMAAIAAXgAAAAAA2hMAAIAAYQAA AAAAEhQAAIAAYgAAAAAAShQAAIAAAAAAAAAA9hQAAIAAAAAAAAAAnhYAAIAA AAAAAAAAlBcAAIAAAAAAAAAAChgAAIAArQAAAAAAAAAAAKIAAAAAAAAAAAAA AKIAAAAAAAAALhgAAIAANQAAAAAAoRgAAIAANwAAAAAAuRgAAIAAOAAAAAAA 0RgAAIAAOQAAAAAA6xgAAIAAOgAAAAAAAAAAAKIAAAAAAAAABRkAACAAGQAA AAAAAAAAAGQAAACEggQIAGluaXQuYwAvdXNyL3NyYy9wYWNrYWdlcy9CVUlM RC9nbGliYy0yLjIuNS9jc3UvAGdjYzJfY29tcGlsZWQuAGludDp0KDAsMSk9 cigwLDEpOzAwMjAwMDAwMDAwMDA7MDAxNzc3Nzc3Nzc3NzsAY2hhcjp0KDAs Mik9cigwLDIpOzA7MTI3OwBsb25nIGludDp0KDAsMyk9cigwLDEpOzAwMjAw MDAwMDAwMDA7MDAxNzc3Nzc3Nzc3NzsAdW5zaWduZWQgaW50OnQoMCw0KT1y KDAsMSk7MDAwMDAwMDAwMDAwMDswMDM3Nzc3Nzc3Nzc3OwBsb25nIHVuc2ln bmVkIGludDp0KDAsNSk9cigwLDEpOzAwMDAwMDAwMDAwMDA7MDAzNzc3Nzc3 Nzc3NzsAbG9uZyBsb25nIGludDp0KDAsNik9cigwLDEpOzAxMDAwMDAwMDAw MDAwMDAwMDAwMDAwOzA3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc7AGxvbmcgbG9u ZyB1bnNpZ25lZCBpbnQ6dCgwLDcpPXIoMCwxKTswMDAwMDAwMDAwMDAwOzAx Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3OwBzaG9ydCBpbnQ6dCgwLDgpPXIoMCw4 KTstMzI3Njg7MzI3Njc7AHNob3J0IHVuc2lnbmVkIGludDp0KDAsOSk9cigw LDkpOzA7NjU1MzU7AHNpZ25lZCBjaGFyOnQoMCwxMCk9cigwLDEwKTstMTI4 OzEyNzsAdW5zaWduZWQgY2hhcjp0KDAsMTEpPXIoMCwxMSk7MDsyNTU7AGZs b2F0OnQoMCwxMik9cigwLDEpOzQ7MDsAZG91YmxlOnQoMCwxMyk9cigwLDEp Ozg7MDsAbG9uZyBkb3VibGU6dCgwLDE0KT1yKDAsMSk7MTI7MDsAY29tcGxl eCBpbnQ6dCgwLDE1KT1zOHJlYWw6KDAsMSksMCwzMjtpbWFnOigwLDEpLDMy LDMyOzsAY29tcGxleCBmbG9hdDp0KDAsMTYpPXIoMCwxNik7NDswOwBjb21w bGV4IGRvdWJsZTp0KDAsMTcpPXIoMCwxNyk7ODswOwBjb21wbGV4IGxvbmcg ZG91YmxlOnQoMCwxOCk9cigwLDE4KTsxMjswOwB2b2lkOnQoMCwxOSk9KDAs MTkpAC4uL2luY2x1ZGUvbGliYy1zeW1ib2xzLmgAL3Vzci9zcmMvcGFja2Fn ZXMvQlVJTEQvZ2xpYmMtMi4yLjUvY2MvY29uZmlnLmgALi4vc3lzZGVwcy9n bnUvX0dfY29uZmlnLmgALi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0 cy90eXBlcy5oAC4uL2luY2x1ZGUvZmVhdHVyZXMuaAAuLi9pbmNsdWRlL3N5 cy9jZGVmcy5oAC4uL21pc2Mvc3lzL2NkZWZzLmgAL3Vzci9saWIvZ2NjLWxp Yi9pNDg2LXN1c2UtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgAc2l6 ZV90OnQoOCwxKT0oMCw0KQBfX3VfY2hhcjp0KDQsMSk9KDAsMTEpAF9fdV9z aG9ydDp0KDQsMik9KDAsOSkAX191X2ludDp0KDQsMyk9KDAsNCkAX191X2xv bmc6dCg0LDQpPSgwLDUpAF9fdV9xdWFkX3Q6dCg0LDUpPSgwLDcpAF9fcXVh ZF90OnQoNCw2KT0oMCw2KQBfX2ludDhfdDp0KDQsNyk9KDAsMTApAF9fdWlu dDhfdDp0KDQsOCk9KDAsMTEpAF9faW50MTZfdDp0KDQsOSk9KDAsOCkAX191 aW50MTZfdDp0KDQsMTApPSgwLDkpAF9faW50MzJfdDp0KDQsMTEpPSgwLDEp AF9fdWludDMyX3Q6dCg0LDEyKT0oMCw0KQBfX2ludDY0X3Q6dCg0LDEzKT0o MCw2KQBfX3VpbnQ2NF90OnQoNCwxNCk9KDAsNykAX19xYWRkcl90OnQoNCwx NSk9KDQsMTYpPSooNCw2KQBfX2Rldl90OnQoNCwxNyk9KDQsNSkAX191aWRf dDp0KDQsMTgpPSg0LDMpAF9fZ2lkX3Q6dCg0LDE5KT0oNCwzKQBfX2lub190 OnQoNCwyMCk9KDQsNCkAX19tb2RlX3Q6dCg0LDIxKT0oNCwzKQBfX25saW5r X3Q6dCg0LDIyKT0oNCwzKQBfX29mZl90OnQoNCwyMyk9KDAsMykAX19sb2Zm X3Q6dCg0LDI0KT0oNCw2KQBfX3BpZF90OnQoNCwyNSk9KDAsMSkAX19zc2l6 ZV90OnQoNCwyNik9KDAsMSkAX19ybGltX3Q6dCg0LDI3KT0oNCw0KQBfX3Js aW02NF90OnQoNCwyOCk9KDQsNSkAX19pZF90OnQoNCwyOSk9KDQsMykAX19m c2lkX3Q6dCg0LDMwKT0oNCwzMSk9czhfX3ZhbDooNCwzMik9YXIoMCwxKTsw OzE7KDAsMSksMCw2NDs7AF9fZGFkZHJfdDp0KDQsMzMpPSgwLDEpAF9fY2Fk ZHJfdDp0KDQsMzQpPSg0LDM1KT0qKDAsMikAX190aW1lX3Q6dCg0LDM2KT0o MCwzKQBfX3VzZWNvbmRzX3Q6dCg0LDM3KT0oMCw0KQBfX3N1c2Vjb25kc190 OnQoNCwzOCk9KDAsMykAX19zd2Jsa190OnQoNCwzOSk9KDAsMykAX19jbG9j a190OnQoNCw0MCk9KDAsMykAX19jbG9ja2lkX3Q6dCg0LDQxKT0oMCwxKQBf X3RpbWVyX3Q6dCg0LDQyKT0oMCwxKQBfX2tleV90OnQoNCw0Myk9KDAsMSkA X19pcGNfcGlkX3Q6dCg0LDQ0KT0oMCw5KQBfX2Jsa3NpemVfdDp0KDQsNDUp PSgwLDMpAF9fYmxrY250X3Q6dCg0LDQ2KT0oMCwzKQBfX2Jsa2NudDY0X3Q6 dCg0LDQ3KT0oNCw2KQBfX2ZzYmxrY250X3Q6dCg0LDQ4KT0oNCw0KQBfX2Zz YmxrY250NjRfdDp0KDQsNDkpPSg0LDUpAF9fZnNmaWxjbnRfdDp0KDQsNTAp PSg0LDQpAF9fZnNmaWxjbnQ2NF90OnQoNCw1MSk9KDQsNSkAX19pbm82NF90 OnQoNCw1Mik9KDQsNSkAX19vZmY2NF90OnQoNCw1Myk9KDQsMjQpAF9fdF9z Y2FsYXJfdDp0KDQsNTQpPSgwLDMpAF9fdF91c2NhbGFyX3Q6dCg0LDU1KT0o MCw1KQBfX2ludHB0cl90OnQoNCw1Nik9KDAsMSkAX19zb2NrbGVuX3Q6dCg0 LDU3KT0oMCw0KQAuLi9saW51eHRocmVhZHMvc3lzZGVwcy9wdGhyZWFkL2Jp dHMvcHRocmVhZHR5cGVzLmgALi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgv Yml0cy9zY2hlZC5oAF9fc2NoZWRfcGFyYW06VCgxMCwxKT1zNF9fc2NoZWRf cHJpb3JpdHk6KDAsMSksMCwzMjs7AF9wdGhyZWFkX2Zhc3Rsb2NrOlQoOSwx KT1zOF9fc3RhdHVzOigwLDMpLDAsMzI7X19zcGlubG9jazooMCwxKSwzMiwz Mjs7AF9wdGhyZWFkX2Rlc2NyOnQoOSwyKT0oOSwzKT0qKDksNCk9eHNfcHRo cmVhZF9kZXNjcl9zdHJ1Y3Q6AF9fcHRocmVhZF9hdHRyX3M6VCg5LDUpPXMz Nl9fZGV0YWNoc3RhdGU6KDAsMSksMCwzMjtfX3NjaGVkcG9saWN5OigwLDEp LDMyLDMyO19fc2NoZWRwYXJhbTooMTAsMSksNjQsMzI7X19pbmhlcml0c2No ZWQ6KDAsMSksOTYsMzI7X19zY29wZTooMCwxKSwxMjgsMzI7X19ndWFyZHNp emU6KDgsMSksMTYwLDMyO19fc3RhY2thZGRyX3NldDooMCwxKSwxOTIsMzI7 X19zdGFja2FkZHI6KDksNik9KigwLDE5KSwyMjQsMzI7X19zdGFja3NpemU6 KDgsMSksMjU2LDMyOzsAcHRocmVhZF9hdHRyX3Q6dCg5LDcpPSg5LDUpAHB0 aHJlYWRfY29uZF90OnQoOSw4KT0oOSw5KT1zMTJfX2NfbG9jazooOSwxKSww LDY0O19fY193YWl0aW5nOig5LDIpLDY0LDMyOzsAcHRocmVhZF9jb25kYXR0 cl90OnQoOSwxMCk9KDksMTEpPXM0X19kdW1teTooMCwxKSwwLDMyOzsAcHRo cmVhZF9rZXlfdDp0KDksMTIpPSgwLDQpAHB0aHJlYWRfbXV0ZXhfdDp0KDks MTMpPSg5LDE0KT1zMjRfX21fcmVzZXJ2ZWQ6KDAsMSksMCwzMjtfX21fY291 bnQ6KDAsMSksMzIsMzI7X19tX293bmVyOig5LDIpLDY0LDMyO19fbV9raW5k OigwLDEpLDk2LDMyO19fbV9sb2NrOig5LDEpLDEyOCw2NDs7AHB0aHJlYWRf bXV0ZXhhdHRyX3Q6dCg5LDE1KT0oOSwxNik9czRfX211dGV4a2luZDooMCwx KSwwLDMyOzsAcHRocmVhZF9vbmNlX3Q6dCg5LDE3KT0oMCwxKQBfcHRocmVh ZF9yd2xvY2tfdDpUKDksMTgpPXMzMl9fcndfbG9jazooOSwxKSwwLDY0O19f cndfcmVhZGVyczooMCwxKSw2NCwzMjtfX3J3X3dyaXRlcjooOSwyKSw5Niwz MjtfX3J3X3JlYWRfd2FpdGluZzooOSwyKSwxMjgsMzI7X19yd193cml0ZV93 YWl0aW5nOig5LDIpLDE2MCwzMjtfX3J3X2tpbmQ6KDAsMSksMTkyLDMyO19f cndfcHNoYXJlZDooMCwxKSwyMjQsMzI7OwBwdGhyZWFkX3J3bG9ja190OnQo OSwxOSk9KDksMTgpAHB0aHJlYWRfcndsb2NrYXR0cl90OnQoOSwyMCk9KDks MjEpPXM4X19sb2Nra2luZDooMCwxKSwwLDMyO19fcHNoYXJlZDooMCwxKSwz MiwzMjs7AHB0aHJlYWRfc3BpbmxvY2tfdDp0KDksMjIpPSgwLDEpAHB0aHJl YWRfYmFycmllcl90OnQoOSwyMyk9KDksMjQpPXMyMF9fYmFfbG9jazooOSwx KSwwLDY0O19fYmFfcmVxdWlyZWQ6KDAsMSksNjQsMzI7X19iYV9wcmVzZW50 OigwLDEpLDk2LDMyO19fYmFfd2FpdGluZzooOSwyKSwxMjgsMzI7OwBwdGhy ZWFkX2JhcnJpZXJhdHRyX3Q6dCg5LDI1KT0oOSwyNik9czRfX3BzaGFyZWQ6 KDAsMSksMCwzMjs7AHB0aHJlYWRfdDp0KDksMjcpPSgwLDUpAHdjaGFyX3Q6 dCgxMSwxKT0oMCwzKQB3aW50X3Q6dCgxMSwyKT0oMCw0KQAuLi9pbmNsdWRl L3djaGFyLmgALi4vd2NzbWJzL3djaGFyLmgALi4vc3lzZGVwcy91bml4L3N5 c3YvbGludXgvaTM4Ni9iaXRzL3djaGFyLmgAX19tYnN0YXRlX3Q6dCgxMywx KT0oMTMsMik9czhfX2NvdW50OigwLDEpLDAsMzI7X192YWx1ZTooMTMsMyk9 dTRfX3djaDooMTEsMiksMCwzMjtfX3djaGI6KDEzLDQpPWFyKDAsMSk7MDsz OygwLDIpLDAsMzI7OywzMiwzMjs7AF9HX2Zwb3NfdDp0KDMsMSk9KDMsMik9 czEyX19wb3M6KDQsMjMpLDAsMzI7X19zdGF0ZTooMTMsMSksMzIsNjQ7OwBf R19mcG9zNjRfdDp0KDMsMyk9KDMsNCk9czE2X19wb3M6KDQsNTMpLDAsNjQ7 X19zdGF0ZTooMTMsMSksNjQsNjQ7OwAuLi9pbmNsdWRlL2djb252LmgALi4v aWNvbnYvZ2NvbnYuaAAgOlQoMTcsMSk9ZV9fR0NPTlZfT0s6MCxfX0dDT05W X05PQ09OVjoxLF9fR0NPTlZfTk9EQjoyLF9fR0NPTlZfTk9NRU06MyxfX0dD T05WX0VNUFRZX0lOUFVUOjQsX19HQ09OVl9GVUxMX09VVFBVVDo1LF9fR0NP TlZfSUxMRUdBTF9JTlBVVDo2LF9fR0NPTlZfSU5DT01QTEVURV9JTlBVVDo3 LF9fR0NPTlZfSUxMRUdBTF9ERVNDUklQVE9SOjgsX19HQ09OVl9JTlRFUk5B TF9FUlJPUjo5LDsAIDpUKDE3LDIpPWVfX0dDT05WX0lTX0xBU1Q6MSxfX0dD T05WX0lHTk9SRV9FUlJPUlM6Miw7AF9fZ2NvbnZfZmN0OnQoMTcsMyk9KDE3 LDQpPSooMTcsNSk9ZigwLDEpAF9fZ2NvbnZfaW5pdF9mY3Q6dCgxNyw2KT0o MTcsNyk9KigxNyw4KT1mKDAsMSkAX19nY29udl9lbmRfZmN0OnQoMTcsOSk9 KDE3LDEwKT0qKDE3LDExKT1mKDAsMTkpAF9fZ2NvbnZfdHJhbnNfZmN0OnQo MTcsMTIpPSgxNywxMyk9KigxNywxNCk9ZigwLDEpAF9fZ2NvbnZfdHJhbnNf Y29udGV4dF9mY3Q6dCgxNywxNSk9KDE3LDE2KT0qKDE3LDE3KT1mKDAsMSkA X19nY29udl90cmFuc19xdWVyeV9mY3Q6dCgxNywxOCk9KDE3LDE5KT0qKDE3 LDIwKT1mKDAsMSkAX19nY29udl90cmFuc19pbml0X2ZjdDp0KDE3LDIxKT0o MTcsMjIpPSooMTcsMjMpPWYoMCwxKQBfX2djb252X3RyYW5zX2VuZF9mY3Q6 dCgxNywyNCk9KDE3LDI1KT0qKDE3LDI2KT1mKDAsMTkpAF9fZ2NvbnZfdHJh bnNfZGF0YTpUKDE3LDI3KT1zMjBfX3RyYW5zX2ZjdDooMTcsMTIpLDAsMzI7 X190cmFuc19jb250ZXh0X2ZjdDooMTcsMTUpLDMyLDMyO19fdHJhbnNfZW5k X2ZjdDooMTcsMjQpLDY0LDMyO19fZGF0YTooOSw2KSw5NiwzMjtfX25leHQ6 KDE3LDI4KT0qKDE3LDI3KSwxMjgsMzI7OwBfX2djb252X3N0ZXA6VCgxNywy OSk9czU2X19zaGxpYl9oYW5kbGU6KDE3LDMwKT0qKDE3LDMxKT14c19fZ2Nv bnZfbG9hZGVkX29iamVjdDosMCwzMjtfX21vZG5hbWU6KDE3LDMyKT0qKDAs MiksMzIsMzI7X19jb3VudGVyOigwLDEpLDY0LDMyO19fZnJvbV9uYW1lOig0 LDM1KSw5NiwzMjtfX3RvX25hbWU6KDQsMzUpLDEyOCwzMjtfX2ZjdDooMTcs MyksMTYwLDMyO19faW5pdF9mY3Q6KDE3LDYpLDE5MiwzMjtfX2VuZF9mY3Q6 KDE3LDkpLDIyNCwzMjtfX21pbl9uZWVkZWRfZnJvbTooMCwxKSwyNTYsMzI7 X19tYXhfbmVlZGVkX2Zyb206KDAsMSksMjg4LDMyO19fbWluX25lZWRlZF90 bzooMCwxKSwzMjAsMzI7X19tYXhfbmVlZGVkX3RvOigwLDEpLDM1MiwzMjtf X3N0YXRlZnVsOigwLDEpLDM4NCwzMjtfX2RhdGE6KDksNiksNDE2LDMyOzsA X19nY29udl9zdGVwX2RhdGE6VCgxNywzMyk9czM2X19vdXRidWY6KDE3LDM0 KT0qKDAsMTEpLDAsMzI7X19vdXRidWZlbmQ6KDE3LDM0KSwzMiwzMjtfX2Zs YWdzOigwLDEpLDY0LDMyO19faW52b2NhdGlvbl9jb3VudGVyOigwLDEpLDk2 LDMyO19faW50ZXJuYWxfdXNlOigwLDEpLDEyOCwzMjtfX3N0YXRlcDooMTcs MzUpPSooMTMsMSksMTYwLDMyO19fc3RhdGU6KDEzLDEpLDE5Miw2NDtfX3Ry YW5zOigxNywyOCksMjU2LDMyOzsAX19nY29udl9pbmZvOlQoMTcsMzYpPXM4 X19uc3RlcHM6KDgsMSksMCwzMjtfX3N0ZXBzOigxNywzNyk9KigxNywyOSks MzIsMzI7X19kYXRhOigxNywzOCk9YXIoMCwxKTswOy0xOygxNywzMyksNjQs MDs7AF9fZ2NvbnZfdDp0KDE3LDM5KT0oMTcsNDApPSooMTcsMzYpAF9HX2lj b252X3Q6dCgzLDUpPSgzLDYpPXU0NF9fY2Q6KDE3LDM2KSwwLDY0O19fY29t YmluZWQ6KDMsNyk9czQ0X19jZDooMTcsMzYpLDAsNjQ7X19kYXRhOigxNywz MyksNjQsMjg4OzssMCwzNTI7OwBfR19pbnQxNl90OnQoMyw4KT0oMCw4KQBf R19pbnQzMl90OnQoMyw5KT0oMCwxKQBfR191aW50MTZfdDp0KDMsMTApPSgw LDkpAF9HX3VpbnQzMl90OnQoMywxMSk9KDAsNCkAX0lPX3N0ZGluX3VzZWQ6 RygwLDEpAABHQ0M6IChHTlUpIDIuOTUuMyAyMDAxMDMxNSAoU3VTRSkAAEdD QzogKEdOVSkgMi45NS4zIDIwMDEwMzE1IChTdVNFKQAAR0NDOiAoR05VKSAz LjQgMjAwMzA5MjQgKGV4cGVyaW1lbnRhbCkAAEdDQzogKEdOVSkgMy40IDIw MDMwOTI0IChleHBlcmltZW50YWwpAABHQ0M6IChHTlUpIDMuNCAyMDAzMDky NCAoZXhwZXJpbWVudGFsKQAAR0NDOiAoR05VKSAyLjk1LjMgMjAwMTAzMTUg KFN1U0UpABwAAAACAAAAAAAEAAAAAAAggwQI7QAAAAAAAAAAAAAAKQAAAAIA AAAAAOcAAAAlAAAAZnVuYzEAuQAAAG1haW4AzwAAAHZvbAAAAAAA4wAAAAIA AAAAAAQBAAAAAA2EBAgggwQIGgAAAAFtLmMACwAAAAKrAAAAAQUAAAABBQGr AAAAIIMECKeDBAgBVANhAAEEqwAAAAAAAAADYgABBKsAAABCAAAAA2MAAQSr AAAAhAAAAANkAAEEqwAAANAAAAADZQABBKsAAADwAAAAA2YAAQSrAAAAEAEA AANnAAEEqwAAADsBAAADc2VxAAEEsgAAAGYBAAAABDwAAAAEBQVpbnQABAUG AQAAAAABELIAAACwgwQIDYQECAFVB3ZvbAABAeEAAAABBQNclQQICKsAAAAA AREBEAYSAREBJQ4TCwMIGw4AAAIuAQETPwwDDjoLOwsnDEkTEQESAUAKAAAD BQADCDoLOwtJEwIGAAAEJAADDgsLPgsAAAUkAAMICws+CwAABi4APwwDDjoL OwtJExEBEgFACgAABzQAAwg6CzsLSRM/DAIKAAAINQBJEwAAAEAAAAACABcA AAABAfsOCgABAQEBAAAAAQBtLmMAAAAAAAAFAiCDBAgTAjgVCLIInTdXLFgI Ex4qVlQ6AkYQVgIFAAEBABAAAAD/////AQABfAgMBASIAQAAJAAAAAAAAAAg gwQIhwAAAEEOCEEODEEOEEEOFEMOJIMFhgSHA4UCABQAAAAAAAAAsIMECF0A AABBDgiFAkQNBW1haW4AZnVuYzEAL2xvY2FsL3psb21la2oAR05VIEMgMy40 IDIwMDMwOTI0IChleHBlcmltZW50YWwpAGxvbmcgaW50AAAAAAAXAAAAAgCR BBcAAABGAAAAAgCRbEYAAABHAAAAAQBRRwAAAFMAAAACAJFsUwAAAIcAAAAB AFEAAAAAAAAAAAAAAAAjAAAAAgCRCCMAAAA8AAAAAgCRaDwAAAA+AAAAAQBS PgAAAE4AAAACAJFoTgAAAIcAAAABAFIAAAAAAAAAAAAAAAAPAAAAAgCRDA8A AAA+AAAAAQBXPgAAAE4AAAABAFBOAAAAUAAAAAEAV1AAAACFAAAAAQBQhQAA AIcAAAACAJEMAAAAAAAAAAAAAAAAKwAAAAIAkRArAAAAhwAAAAIAkWQAAAAA AAAAAAAAAAAzAAAAAgCRFDMAAACHAAAAAgCRYAAAAAAAAAAAAAAAABMAAAAC AJEYEwAAAIQAAAABAFaEAAAAhwAAAAIAkRgAAAAAAAAAAAAAAAAXAAAAAgCR HBcAAACDAAAAAQBTgwAAAIcAAAACAJEcAAAAAAAAAAAAAAAAIwAAAAIAkSAj AAAAhgAAAAEAVYYAAACHAAAAAgCRIAAAAAAAAAAACAAAAAAAAAABAAAAMDEu MDEAAAAIAAAAAAAAAAEAAAAwMS4wMQAAAAgAAAAAAAAAAQAAADAxLjAxAAAA AC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmludGVycAAubm90ZS5BQkkt dGFnAC5oYXNoAC5keW5zeW0ALmR5bnN0cgAuZ251LnZlcnNpb24ALmdudS52 ZXJzaW9uX3IALnJlbC5keW4ALnJlbC5wbHQALmluaXQALnRleHQALmZpbmkA LnJvZGF0YQAuZGF0YQAuZWhfZnJhbWUALmR5bmFtaWMALmN0b3JzAC5kdG9y cwAuamNyAC5nb3QALmJzcwAuc3RhYgAuc3RhYnN0cgAuY29tbWVudAAuZGVi dWdfYXJhbmdlcwAuZGVidWdfcHVibmFtZXMALmRlYnVnX2luZm8ALmRlYnVn X2FiYnJldgAuZGVidWdfbGluZQAuZGVidWdfZnJhbWUALmRlYnVnX3N0cgAu ZGVidWdfbG9jAC5ub3RlAC5ub3RlLkdOVS1zdGFjawAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAACAAAA9IAE CPQAAAATAAAAAAAAAAAAAAABAAAAAAAAACMAAAAHAAAAAgAAAAiBBAgIAQAA IAAAAAAAAAAAAAAABAAAAAAAAAAxAAAABQAAAAIAAAAogQQIKAEAACQAAAAE AAAAAAAAAAQAAAAEAAAANwAAAAsAAAACAAAATIEECEwBAABAAAAABQAAAAEA AAAEAAAAEAAAAD8AAAADAAAAAgAAAIyBBAiMAQAARQAAAAAAAAAAAAAAAQAA AAAAAABHAAAA////bwIAAADSgQQI0gEAAAgAAAAEAAAAAAAAAAIAAAACAAAA VAAAAP7//28CAAAA3IEECNwBAAAgAAAABQAAAAEAAAAEAAAAAAAAAGMAAAAJ AAAAAgAAAPyBBAj8AQAACAAAAAQAAAAAAAAABAAAAAgAAABsAAAACQAAAAIA AAAEggQIBAIAAAgAAAAEAAAACwAAAAQAAAAIAAAAdQAAAAEAAAAGAAAADIIE CAwCAAAlAAAAAAAAAAAAAAAEAAAAAAAAAHAAAAABAAAABgAAADSCBAg0AgAA IAAAAAAAAAAAAAAABAAAAAQAAAB7AAAAAQAAAAYAAABgggQIYAIAANQBAAAA AAAAAAAAABAAAAAAAAAAgQAAAAEAAAAGAAAANIQECDQEAAAcAAAAAAAAAAAA AAAEAAAAAAAAAIcAAAABAAAAAgAAAFCEBAhQBAAACAAAAAAAAAAAAAAABAAA AAAAAACPAAAAAQAAAAMAAABYlAQIWAQAAAwAAAAAAAAAAAAAAAQAAAAAAAAA lQAAAAEAAAACAAAAZJQECGQEAAAEAAAAAAAAAAAAAAAEAAAAAAAAAJ8AAAAG AAAAAwAAAGiUBAhoBAAAyAAAAAUAAAAAAAAABAAAAAgAAACoAAAAAQAAAAMA AAAwlQQIMAUAAAgAAAAAAAAAAAAAAAQAAAAAAAAArwAAAAEAAAADAAAAOJUE CDgFAAAIAAAAAAAAAAAAAAAEAAAAAAAAALYAAAABAAAAAwAAAECVBAhABQAA BAAAAAAAAAAAAAAABAAAAAAAAAC7AAAAAQAAAAMAAABElQQIRAUAABQAAAAA AAAAAAAAAAQAAAAEAAAAwAAAAAgAAAADAAAAWJUECFgFAAAIAAAAAAAAAAAA AAAEAAAAAAAAAMUAAAABAAAAAAAAAAAAAABYBQAAjAcAABgAAAAAAAAABAAA AAwAAADLAAAAAwAAAAAAAAAAAAAA5AwAABsZAAAAAAAAAAAAAAEAAAAAAAAA 1AAAAAEAAAAAAAAAAAAAAP8lAADhAAAAAAAAAAAAAAABAAAAAAAAAN0AAAAB AAAAAAAAAAAAAADgJgAAIAAAAAAAAAAAAAAAAQAAAAAAAADsAAAAAQAAAAAA AAAAAAAAACcAAC0AAAAAAAAAAAAAAAEAAAAAAAAA/AAAAAEAAAAAAAAAAAAA AC0nAADnAAAAAAAAAAAAAAABAAAAAAAAAAgBAAABAAAAAAAAAAAAAAAUKAAA fwAAAAAAAAAAAAAAAQAAAAAAAAAWAQAAAQAAAAAAAAAAAAAAkygAAEQAAAAA AAAAAAAAAAEAAAAAAAAAIgEAAAEAAAAAAAAAAAAAANgoAABUAAAAAAAAAAAA AAAEAAAAAAAAAC8BAAABAAAAMAAAAAAAAAAsKQAARQAAAAAAAAAAAAAAAQAA AAEAAAA6AQAAAQAAAAAAAAAAAAAAcSkAAJEBAAAAAAAAAAAAAAEAAAAAAAAA RQEAAAcAAAAAAAAAAAAAAAIrAAA8AAAAAAAAAAAAAAABAAAAAAAAAEsBAAAH AAAAAAAAAAAAAAA+KwAAAAAAAAAAAAAAAAAAAQAAAAAAAAARAAAAAwAAAAAA AAAAAAAAPisAAFsBAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAA ALQyAAAABQAAJgAAAD4AAAAEAAAAEAAAAAkAAAADAAAAAAAAAAAAAAC0NwAA wQEAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPSABAgA AAAAAwABAAAAAAAIgQQIAAAAAAMAAgAAAAAAKIEECAAAAAADAAMAAAAAAEyB BAgAAAAAAwAEAAAAAACMgQQIAAAAAAMABQAAAAAA0oEECAAAAAADAAYAAAAA ANyBBAgAAAAAAwAHAAAAAAD8gQQIAAAAAAMACAAAAAAABIIECAAAAAADAAkA AAAAAAyCBAgAAAAAAwAKAAAAAAA0ggQIAAAAAAMACwAAAAAAYIIECAAAAAAD AAwAAAAAADSEBAgAAAAAAwANAAAAAABQhAQIAAAAAAMADgAAAAAAWJQECAAA AAADAA8AAAAAAGSUBAgAAAAAAwAQAAAAAABolAQIAAAAAAMAEQAAAAAAMJUE CAAAAAADABIAAAAAADiVBAgAAAAAAwATAAAAAABAlQQIAAAAAAMAFAAAAAAA RJUECAAAAAADABUAAAAAAFiVBAgAAAAAAwAWAAAAAAAAAAAAAAAAAAMAFwAA AAAAAAAAAAAAAAADABgAAAAAAAAAAAAAAAAAAwAZAAAAAAAAAAAAAAAAAAMA GgAAAAAAAAAAAAAAAAADABsAAAAAAAAAAAAAAAAAAwAcAAAAAAAAAAAAAAAA AAMAHQAAAAAAAAAAAAAAAAADAB4AAAAAAAAAAAAAAAAAAwAfAAAAAAAAAAAA AAAAAAMAIAAAAAAAAAAAAAAAAAADACEAAAAAAAAAAAAAAAAAAwAiAAAAAAAA AAAAAAAAAAMAIwAAAAAAAAAAAAAAAAADACQAAAAAAAAAAAAAAAAAAwAlAAAA AAAAAAAAAAAAAAMAJgABAAAAAAAAAAAAAAAEAPH/CAAAAISCBAgAAAAAAAAM AA8AAAAAAAAAAAAAAAQA8f8aAAAAhIIECAAAAAAAAAwAKQAAAISCBAgAAAAA AgAMADkAAAAAAAAAAAAAAAQA8f9EAAAAMJUECAAAAAABABIAUgAAADiVBAgA AAAAAQATAGAAAABAlQQIAAAAAAEAFABtAAAAYJQECAAAAAABAA8AcQAAAFiV BAgBAAAAAQAWAH0AAACwggQIAAAAAAIADACTAAAA4IIECAAAAAACAAwAOQAA AAAAAAAAAAAABADx/58AAAA0lQQIAAAAAAEAEgCsAAAAPJUECAAAAAABABMA uQAAAGSUBAgAAAAAAQAQAMcAAABAlQQIAAAAAAEAFADTAAAAEIQECAAAAAAC AAwADwAAAAAAAAAAAAAABADx/xoAAAA0hAQIAAAAAAAADADpAAAAAAAAAAAA AAAEAPH/7QAAAFyUBAgAAAAAAQIPAPoAAABolAQIAAAAABEAEQADAQAAUIQE CAQAAAARAA4ACgEAAAyCBAgAAAAAEgAKABABAAAggwQIhwAAABIADAAWAQAA YIIECAAAAAASAAwAHQEAAFiVBAgAAAAAEADx/ykBAACwgwQIXQAAABIADAAu AQAARIIECMMAAAASAAAASwEAAFyVBAgEAAAAEQAWAE8BAABYlAQIAAAAACAA DwBaAQAANIQECAAAAAASAA0AYAEAAFiVBAgAAAAAEADx/2cBAABElQQIAAAA ABEAFQB9AQAAYJUECAAAAAAQAPH/ggEAAFSEBAgEAAAAEQAOAJEBAABYlAQI AAAAABAADwCeAQAAAAAAAAAAAAAgAAAAsgEAAAAAAAAAAAAAIAAAAABpbml0 LmMATGV0ZXh0AGluaXRmaW5pLmMAZ2NjMl9jb21waWxlZC4AY2FsbF9nbW9u X3N0YXJ0AGNydHN0dWZmLmMAX19DVE9SX0xJU1RfXwBfX0RUT1JfTElTVF9f AF9fSkNSX0xJU1RfXwBwLjAAY29tcGxldGVkLjEAX19kb19nbG9iYWxfZHRv cnNfYXV4AGZyYW1lX2R1bW15AF9fQ1RPUl9FTkRfXwBfX0RUT1JfRU5EX18A X19GUkFNRV9FTkRfXwBfX0pDUl9FTkRfXwBfX2RvX2dsb2JhbF9jdG9yc19h dXgAbS5jAF9fZHNvX2hhbmRsZQBfRFlOQU1JQwBfZnBfaHcAX2luaXQAZnVu YzEAX3N0YXJ0AF9fYnNzX3N0YXJ0AG1haW4AX19saWJjX3N0YXJ0X21haW5A QEdMSUJDXzIuMAB2b2wAZGF0YV9zdGFydABfZmluaQBfZWRhdGEAX0dMT0JB TF9PRkZTRVRfVEFCTEVfAF9lbmQAX0lPX3N0ZGluX3VzZWQAX19kYXRhX3N0 YXJ0AF9Kdl9SZWdpc3RlckNsYXNzZXMAX19nbW9uX3N0YXJ0X18A --uAKRQypu60I7Lcqm--