diff --git a/cMIPS/bin/edMemory.sh b/cMIPS/bin/edMemory.sh index 235d1cfe8f4b04f3a1a62634979870fb70b3ca4b..1d19288588415dd32e393b7f9761cab0545d2c7d 100755 --- a/cMIPS/bin/edMemory.sh +++ b/cMIPS/bin/edMemory.sh @@ -66,7 +66,7 @@ then cp "${asm}" "${asm}"~ for VAR in $VARIABLES $EXCEPTION_VECTORS ; do NEW=$(egrep -h ${VAR} "${dfn}"|sed -n -e '/reg32/s/.*x"\(.*\)".*/\1/p') - OLD=$(egrep -h ${VAR} "${asm}"|sed -n -e 's/.*,0x\(.*\)[^0-9a-fA-F]*/\1/p') + OLD=$(egrep -h ${VAR} "${asm}"|sed -n -e 's/.*, *0x\(.*\)[^0-9a-fA-F]*/\1/p') # echo -n -e "$NEW $OLD\n" if [ -n "$OLD" ] ; then sed -i -e '/'$VAR'/s/'$OLD'/'$NEW'/' "${asm}" @@ -97,9 +97,9 @@ fi set +e if [ $verbose = true ] ; then - diff ${hdr}* - diff ${lnk}* - diff ${asm}* + diff ${hdr}{,~} + diff ${lnk}{,~} + diff ${asm}{,~} fi exit 0 diff --git a/cMIPS/include/cMIPS.s b/cMIPS/include/cMIPS.s index a32509335d4e7447a387af42a6966ef1d7e660a7..e792954e7a6ed7616a675569e15b3eef8a623daa 100644 --- a/cMIPS/include/cMIPS.s +++ b/cMIPS/include/cMIPS.s @@ -4,7 +4,7 @@ .set x_INST_MEM_SZ,0x00004000 .set x_DATA_BASE_ADDR,0x00040000 - .set x_DATA_MEM_SZ,0x00004000 + .set x_DATA_MEM_SZ,0x00040000 .set x_IO_BASE_ADDR,0x0F000000 .set x_IO_MEM_SZ,0x00002000 @@ -17,12 +17,12 @@ .set HW_keybd_addr, (x_IO_BASE_ADDR + 10 * x_IO_ADDR_RANGE) .set HW_lcd_addr, (x_IO_BASE_ADDR + 11 * x_IO_ADDR_RANGE) - # see vhdl/packageExcp.vhd for addresses - .set x_EXCEPTION_0000,0x00000060 + # see vhdl/packageMemory.vhd for addresses + .set x_EXCEPTION_0000,0x00000080 .set x_EXCEPTION_0100,0x000000A0 - .set x_EXCEPTION_0180,0x000000C0 - .set x_EXCEPTION_0200,0x00000200 - .set x_ENTRY_POINT, 0x00000300 + .set x_EXCEPTION_0180,0x00000180 + .set x_EXCEPTION_0200,0x00000280 + .set x_ENTRY_POINT, 0x00000400 .set cop0_Index, $0 .set cop0_Random, $1 diff --git a/cMIPS/include/start.s b/cMIPS/include/start.s index a15163e9ccea57a2e9bcce975c4382cae7f02b5d..9adb13c8e0eb92079380d6e14783ae338fb898e5 100644 --- a/cMIPS/include/start.s +++ b/cMIPS/include/start.s @@ -14,19 +14,40 @@ ## reset leaves processor in kernel mode, all else disabled ## - # initialize SP: ramTop-8 -_start: li $sp,(x_DATA_BASE_ADDR+x_DATA_MEM_SZ-8) - +_start: # set STATUS, cop0, hw interrupt IRQ7,IRQ6,IRQ5 enabled, user mode li $k0, 0x1000e001 mtc0 $k0, cop0_STATUS - # pin down first two MMU entries: ROM[0] and I/O - li $k0, 2 + # get physical page number for two pages at the top of RAM, for stack + li $a0, ( (x_DATA_BASE_ADDR+x_DATA_MEM_SZ - 2*4096) >>12) + sll $a2, $a0, 12 # tag for top double-page + mtc0 $a2, cop0_EntryHi + + li $a0, ( (x_DATA_BASE_ADDR+x_DATA_MEM_SZ - 2*4096) >>12) + sll $a1, $a0, 6 # top page - 1 (even) + ori $a1, $a1, 0b00000000000000000000000000000111 # ccc=0, d,v,g1 + mtc0 $a1, cop0_EntryLo0 + + li $a0, ( (x_DATA_BASE_ADDR+x_DATA_MEM_SZ - 1*4096) >>12) + sll $a1, $a0, 6 # top page - 1 (even) + ori $a1, $a1, 0b00000000000000000000000000000111 # ccc=0, d,v,g1 + mtc0 $a1, cop0_EntryLo1 + + # and write it to TLB(2) -- third mapping + li $k0, 3 + mtc0 $k0, cop0_Index + tlbwi + + # pin down first three MMU entries: ROM[0], stack and I/O + li $k0, 3 mtc0 $k0, cop0_Wired + + # initialize SP: ramTop-8 + li $sp,(x_DATA_BASE_ADDR+x_DATA_MEM_SZ-8) nop - jal main # on returning from main(), MUST go into exit() + jal main # on returning from main(), MUST go into exit() nop # to stop the simulation. exit: _exit: nop # flush pipeline @@ -169,6 +190,9 @@ excp_tbl: # see Table 8-25, pg 95,96 wait 0x15 # PF exception, should never get here -- abort simulation nop + +h_trap: wait 13 + h_Mod: h_TLBL: h_TLBS: @@ -177,7 +201,8 @@ h_breakpoint: h_RI: h_CpU: h_Ov: -h_trap: + + excp_0180ret: lui $k1, %hi(_excp_saves) # Read previous contents of STATUS diff --git a/cMIPS/tests/badVAddr.expected b/cMIPS/tests/badVAddr.expected index fa4d550f325cfdbe852fdc5fae669de990ff3ea8..6d0401a0a9c94078a809696009f43e3f6af49342 100644 --- a/cMIPS/tests/badVAddr.expected +++ b/cMIPS/tests/badVAddr.expected @@ -1,16 +1,16 @@ -00000318 +00000418 [ 08800010 -00000319 +00000419 ] -00000319 +00000419 [ 08800010 -0000031a +0000041a ] -0000031a +0000041a [ 08800010 -0000031b +0000041b ] -0000031b +0000041b diff --git a/cMIPS/tests/badVAddrMM.expected b/cMIPS/tests/badVAddrMM.expected index 26284fb7e7cf9ea870d463cceae8f1a8337fb7bd..99b05f581a19b97290b0e7531d3e06086b4b46db 100644 --- a/cMIPS/tests/badVAddrMM.expected +++ b/cMIPS/tests/badVAddrMM.expected @@ -1,19 +1,19 @@ 00000000 [ 08800014 -00000318 +00000418 0f000001 ] 00000001 [ 08800014 -00000318 +00000418 0f000002 ] 00000002 [ 08800014 -00000318 +00000418 0f000003 ] 00000003 @@ -22,19 +22,19 @@ 00000003 [ 08800010 -00000358 +00000458 00040001 ] 00000002 [ 08800010 -00000358 +00000458 00040002 ] 00000001 [ 08800010 -00000358 +00000458 00040003 ] 00000000 @@ -43,14 +43,14 @@ 00000000 [ 08800014 -000003a0 +000004a0 0f000001 ] 00000001 00000002 [ 08800014 -000003b8 +000004b8 0f000003 ] 00000003 @@ -59,14 +59,14 @@ 00000003 [ 08800010 -000003f0 +000004f0 00040001 ] 00000002 00000002 [ 08800010 -00000410 +00000510 00040003 ] 00000001 diff --git a/cMIPS/tests/break.s b/cMIPS/tests/break.s index b988cc1aeccce0bc03ea5a0d717f79cdc12a0a80..00c7bad1d4ea68cce858b7edee92eaacdd09265e 100644 --- a/cMIPS/tests/break.s +++ b/cMIPS/tests/break.s @@ -68,7 +68,7 @@ _excp_200: .end _excp_200 - .org 0x0280 # normal code start + .org x_ENTRY_POINT # normal code start main: la $15,x_IO_BASE_ADDR li $7,4 li $5,0 diff --git a/cMIPS/tests/dijkstra_small.c b/cMIPS/tests/dijkstra_small.c deleted file mode 100644 index 98a433406d6e0a6ab6cfc28f54adeb0ebd4f4d4d..0000000000000000000000000000000000000000 --- a/cMIPS/tests/dijkstra_small.c +++ /dev/null @@ -1,385 +0,0 @@ -#ifdef cMIPS - -#include "cMIPS.h" - -extern void exit(int); - - -//cMIPS I/O functions -void print(int n) { // write to VHDL simulator's standard output - int *IO = (int *)x_IO_BASE_ADDR; - - *IO = n; -} - - -int readInt(int *n) { // read integer from file, status==1 if EOF, 0 otw - int *IO = (int *)IO_READ_BOT_ADDR; - int status, value; - - value = *IO; - status = *(IO + 1); - - if (status == 0) { - *n = value; - } - return status; -} - -#define writeInt(c) print(c) - -void writeIntXXX(int n) { // write integer to output file - int *IO = (int *)IO_WRITE_BOT_ADDR; - - *IO = n; -} - -#if 0 // not used here - -void *memset(void *dst, const int val, int len) { - register unsigned char *ptr = (unsigned char*)dst; - int cnt; - - cnt = (int)ptr % 4; - while( (cnt > 0) && (len > 0) ) { - *ptr = (char)val; - cnt--; len--; - ptr++; - } // ptr is now word aligned - cnt = val | (val<<8) | (val<<16) | (val<<24); - while(len >= 4) { - *((int *)ptr) = cnt; - len -= 4; - ptr += 4; - } - while(len > 0) { - *ptr = (char)val; - len--; - ptr++; - } - return(dst); -} - -//Implements function bzero for cMIPS -void bzero(void *s, int bytes) { - memset(s,'\0',bytes) ; -} - -#endif - - -#define MALLOC_BASE_ADDRESS (x_DATA_BASE_ADDR + 0x00020000) -#define MALLOC_SIZE 0x000B0000 -#define NULL 0 - - -#else - -#include <stdio.h> -#include <stdlib.h> - -#endif - - -// begin internal malloc -/* http://www.flipcode.com/archives/Simple_Malloc_Free_Functions.shtml */ - -#define USED 1 -#define free(p) MSYS_Free(p) -#define malloc(s) MSYS_Alloc(s) - -int *myheap; - -typedef struct { - unsigned size; -} UNIT; - -typedef struct { - UNIT* free; - UNIT* heap; -} MSYS; - -static MSYS msys; - -static UNIT* compact( UNIT *p, unsigned nsize ) { - unsigned bsize, psize; - UNIT *best; - - best = p; - bsize = 0; - - while( psize = p->size, psize ) { - if( psize & USED ) { - if( bsize != 0 ) { - best->size = bsize; - if( bsize >= nsize ) { - return best; - } - } - bsize = 0; - best = p = (UNIT *)( (unsigned)p + (psize & ~USED) ); - } else { - bsize += psize; - p = (UNIT *)( (unsigned)p + psize ); - } - } - - if( bsize != 0 ) { - best->size = bsize; - if( bsize >= nsize ) { - return best; - } - } - - return 0; -} - -void MSYS_Free( void *ptr ) { - if( ptr ) { - UNIT *p; - - p = (UNIT *)( (unsigned)ptr - sizeof(UNIT) ); - p->size &= ~USED; - } -} - -void *MSYS_Alloc( unsigned size ) { - unsigned fsize; - UNIT *p; - - if( size == 0 ) return 0; - - size += 3 + sizeof(UNIT); - size >>= 2; - size <<= 2; - - if( msys.free == 0 || size > msys.free->size ) { - msys.free = compact( msys.heap, size ); - if( msys.free == 0 ) return 0; - } - - p = msys.free; - fsize = msys.free->size; - - if( fsize >= size + sizeof(UNIT) ) { - msys.free = (UNIT *)( (unsigned)p + size ); - msys.free->size = fsize - size; - } else { - msys.free = 0; - size = fsize; - } - - p->size = size | USED; - - return (void *)( (unsigned)p + sizeof(UNIT) ); -} - -void MSYS_Init( void *heap, unsigned len ) { - len += 3; - len >>= 2; - len <<= 2; - msys.free = msys.heap = (UNIT *) heap; - msys.free->size = msys.heap->size = len - sizeof(UNIT); - *(unsigned *)((char *)heap + len - 4) = 0; -} - -void MSYS_Compact( void ) { - msys.free = compact( msys.heap, 0x7fffffff ); -} -// end internal malloc - - - -#include "dijkstra_input.h" - -#define NONE 9999 - -struct _NODE -{ - int iDist; - int iPrev; -}; -typedef struct _NODE NODE; - -struct _QITEM { - int iNode; - int iDist; - int iPrev; - struct _QITEM *qNext; -}; -typedef struct _QITEM QITEM; - -QITEM *qHead = NULL; - - -int AdjMatrix[NUM_NODES][NUM_NODES]; - -int g_qCount = 0; -NODE rgnNodes[NUM_NODES]; -int ch; -int iPrev, iNode; -int i, iCost, iDist; - - -void print_path (NODE *rgnNodes, int chNode) { - if (rgnNodes[chNode].iPrev != NONE) { - print_path(rgnNodes, rgnNodes[chNode].iPrev); - } -#ifdef cMIPS - writeInt(chNode); -#else - printf ("%08x\n", chNode); - fflush(stdout); -#endif -} - - -void enqueue (int iNode, int iDist, int iPrev) { - QITEM *qNew = (QITEM *) malloc(sizeof(QITEM)); - QITEM *qLast = qHead; - - if (!qNew) { -#ifndef cMIPS - fprintf(stderr, "Out of memory.\n"); -#endif - exit(1); - } - qNew->iNode = iNode; - qNew->iDist = iDist; - qNew->iPrev = iPrev; - qNew->qNext = NULL; - - if (qLast == NULL) { - qHead = qNew; - } else { - while (qLast->qNext) qLast = qLast->qNext; - qLast->qNext = qNew; - } - g_qCount++; - // ASSERT(g_qCount); -} - - -void dequeue (int *piNode, int *piDist, int *piPrev) { - QITEM *qKill = qHead; - - if (qHead) { - // ASSERT(g_qCount); - *piNode = qHead->iNode; - *piDist = qHead->iDist; - *piPrev = qHead->iPrev; - qHead = qHead->qNext; - free(qKill); - g_qCount--; - } -} - - -int qcount (void) { - return(g_qCount); -} - -int dijkstra(int chStart, int chEnd) { - - for (ch = 0; ch < NUM_NODES; ch++) { - rgnNodes[ch].iDist = NONE; - rgnNodes[ch].iPrev = NONE; - } - - if (chStart == chEnd) { -#ifdef cMIPS - writeInt(0); writeInt(0); -#else - printf("Shortest path is 0 in cost. Just stay where you are.\n"); -#endif - } else { - rgnNodes[chStart].iDist = 0; - rgnNodes[chStart].iPrev = NONE; - - enqueue (chStart, 0, NONE); - - while (qcount() > 0) { - dequeue (&iNode, &iDist, &iPrev); - for (i = 0; i < NUM_NODES; i++) { - if ((iCost = AdjMatrix[iNode][i]) != NONE) { - if ( (NONE == rgnNodes[i].iDist) || - (rgnNodes[i].iDist > (iCost + iDist)) ) { - rgnNodes[i].iDist = iDist + iCost; - rgnNodes[i].iPrev = iNode; - enqueue (i, iDist + iCost, iNode); - } - } - } - } -#ifdef cMIPS - writeInt(rgnNodes[chEnd].iDist); - print_path(rgnNodes, chEnd); - writeInt(-1); // path terminator -#else - //printf("Shortest path is %d in cost. ", rgnNodes[chEnd].iDist); - printf("%08x\n", rgnNodes[chEnd].iDist); - //printf("Path is: "); - print_path(rgnNodes, chEnd); - printf("%8x\n",-1); -#endif - } -} - - - -#ifdef cMIPS -void main(void) { -#else -int main(int argc, char *argv[]) { -#endif - - int i,j,k; - -#ifdef cMIPS - - myheap = (int *)MALLOC_BASE_ADDRESS; - - MSYS_Init( (void *)MALLOC_BASE_ADDRESS, (unsigned)MALLOC_SIZE ); - - qHead = NULL; // MUST be initialized here B^(( - g_qCount = 0; - -#else - - myheap = calloc(4010,4); - MSYS_Init( (void *)myheap, (unsigned)4000*4 ); // private malloc - - //if (argc<2) { - // fprintf(stderr, "Usage: dijkstra <filename>\n"); - // fprintf(stderr, "Only supports matrix size is #define'd.\n"); - //} - - /* open the adjacency matrix file */ - //FILE *fp; - //fp = fopen (argv[1],"r"); - -#endif - - /* make a fully connected matrix */ - for (i=0;i<NUM_NODES;i++) { - for (j=0;j<NUM_NODES;j++) { - /* make it more sparce */ - //#ifdef cMIPS - k = mat[i][j]; - //#else - //fscanf(fp,"%d",&k); - //#endif - AdjMatrix[i][j]= k; - } - } - - /* finds 10 shortest paths between nodes */ - for (i=0,j=NUM_NODES/2; i<(NUM_NODES/5); i++,j++) { - j = j%NUM_NODES; - dijkstra(i,j); - } - -#ifndef cMIPS - exit(0); -#endif -} diff --git a/cMIPS/tests/dijkstra_small.s b/cMIPS/tests/dijkstra_small.s deleted file mode 100644 index ea145ecf474ed921a8a5d947a1a6c1bdaaf97a93..0000000000000000000000000000000000000000 --- a/cMIPS/tests/dijkstra_small.s +++ /dev/null @@ -1,11259 +0,0 @@ - .file 1 "dijkstra_small.c" - .section .mdebug.abi32 - .previous - .gnu_attribute 4, 1 - .text - .align 2 - .globl print - .set nomips16 - .ent print - .type print, @function -print: - .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - li $2,251658240 # 0xf000000 - j $31 - sw $4,0($2) - - .set macro - .set reorder - .end print - .size print, .-print - .align 2 - .globl readInt - .set nomips16 - .ent readInt - .type readInt, @function -readInt: - .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - li $3,251658240 # 0xf000000 - ori $2,$3,0x404 - lw $2,0($2) - ori $3,$3,0x400 - lw $3,0($3) - bne $2,$0,$L7 - nop - - sw $3,0($4) -$L7: - j $31 - nop - - .set macro - .set reorder - .end readInt - .size readInt, .-readInt - .align 2 - .globl writeIntXXX - .set nomips16 - .ent writeIntXXX - .type writeIntXXX, @function -writeIntXXX: - .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - li $2,251658240 # 0xf000000 - ori $2,$2,0x800 - j $31 - sw $4,0($2) - - .set macro - .set reorder - .end writeIntXXX - .size writeIntXXX, .-writeIntXXX - .align 2 - .globl MSYS_Free - .set nomips16 - .ent MSYS_Free - .type MSYS_Free, @function -MSYS_Free: - .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - beq $4,$0,$L13 - li $2,-2 # 0xfffffffffffffffe - - lw $3,-4($4) - nop - and $2,$3,$2 - sw $2,-4($4) -$L13: - j $31 - nop - - .set macro - .set reorder - .end MSYS_Free - .size MSYS_Free, .-MSYS_Free - .align 2 - .globl MSYS_Alloc - .set nomips16 - .ent MSYS_Alloc - .type MSYS_Alloc, @function -MSYS_Alloc: - .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - beq $4,$0,$L15 - lui $8,%hi(msys) - - addiu $4,$4,7 - lw $2,%lo(msys)($8) - srl $4,$4,2 - beq $2,$0,$L16 - sll $4,$4,2 - - lw $3,0($2) - nop - sltu $5,$3,$4 - bne $5,$0,$L16 - addiu $5,$4,4 - -$L31: - sltu $5,$3,$5 - beq $5,$0,$L29 - nop - - move $4,$3 - ori $4,$4,0x1 - sw $4,0($2) - sw $0,%lo(msys)($8) - j $31 - addiu $2,$2,4 - -$L29: - addu $5,$2,$4 - subu $3,$3,$4 - ori $4,$4,0x1 - sw $3,0($5) - sw $5,%lo(msys)($8) - sw $4,0($2) - j $31 - addiu $2,$2,4 - -$L15: - j $31 - move $2,$0 - -$L16: - addiu $2,$8,%lo(msys) - lw $2,4($2) - move $6,$0 - move $5,$2 - li $10,-2 # 0xfffffffffffffffe -$L28: - lw $3,0($5) - nop - and $9,$3,$10 - beq $3,$0,$L30 - andi $7,$3,0x1 - - beq $7,$0,$L19 - nop - - addu $5,$5,$9 - beq $6,$0,$L20 - sltu $3,$6,$4 - - beq $3,$0,$L21 - sw $6,0($2) - -$L20: - move $2,$5 - j $L28 - move $6,$0 - -$L19: - addu $5,$5,$3 - j $L28 - addu $6,$6,$3 - -$L30: - beq $6,$0,$L23 - sltu $3,$6,$4 - - bne $3,$0,$L23 - sw $6,0($2) - -$L21: - beq $2,$0,$L15 - sw $2,%lo(msys)($8) - - lw $3,0($2) - j $L31 - addiu $5,$4,4 - -$L23: - sw $0,%lo(msys)($8) - j $31 - move $2,$0 - - .set macro - .set reorder - .end MSYS_Alloc - .size MSYS_Alloc, .-MSYS_Alloc - .align 2 - .globl MSYS_Init - .set nomips16 - .ent MSYS_Init - .type MSYS_Init, @function -MSYS_Init: - .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - addiu $5,$5,3 - srl $5,$5,2 - sll $5,$5,2 - lui $2,%hi(msys) - addu $3,$4,$5 - addiu $6,$2,%lo(msys) - addiu $5,$5,-4 - sw $5,0($4) - sw $4,4($6) - sw $4,%lo(msys)($2) - j $31 - sw $0,-4($3) - - .set macro - .set reorder - .end MSYS_Init - .size MSYS_Init, .-MSYS_Init - .align 2 - .globl MSYS_Compact - .set nomips16 - .ent MSYS_Compact - .type MSYS_Compact, @function -MSYS_Compact: - .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - lui $10,%hi(msys) - addiu $2,$10,%lo(msys) - lw $8,4($2) - li $9,2147418112 # 0x7fff0000 - ori $9,$9,0xffff - move $3,$8 - move $4,$0 - li $7,-2 # 0xfffffffffffffffe -$L42: - lw $2,0($3) - nop - and $6,$2,$7 - beq $2,$0,$L43 - andi $5,$2,0x1 - -$L39: - beq $5,$0,$L36 - nop - - addu $3,$3,$6 - beq $4,$0,$L37 - sltu $2,$4,$9 - - beq $2,$0,$L38 - sw $4,0($8) - -$L37: - lw $2,0($3) - move $8,$3 - move $4,$0 - and $6,$2,$7 - bne $2,$0,$L39 - andi $5,$2,0x1 - -$L43: - beq $4,$0,$L40 - li $2,2147418112 # 0x7fff0000 - - ori $2,$2,0xffff - sltu $2,$4,$2 - bne $2,$0,$L40 - sw $4,0($8) - -$L38: - j $31 - sw $8,%lo(msys)($10) - -$L36: - addu $3,$3,$2 - j $L42 - addu $4,$4,$2 - -$L40: - move $8,$0 - j $31 - sw $8,%lo(msys)($10) - - .set macro - .set reorder - .end MSYS_Compact - .size MSYS_Compact, .-MSYS_Compact - .align 2 - .globl dequeue - .set nomips16 - .ent dequeue - .type dequeue, @function -dequeue: - .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - lui $3,%hi(qHead) - lw $2,%lo(qHead)($3) - nop - beq $2,$0,$L47 - lui $7,%hi(g_qCount) - - lw $8,0($2) - nop - sw $8,0($4) - lw $4,4($2) - lw $8,12($2) - sw $4,0($5) - lw $4,8($2) - li $5,-2 # 0xfffffffffffffffe - sw $4,0($6) - lw $6,-4($2) - lw $4,%lo(g_qCount)($7) - and $5,$6,$5 - addiu $4,$4,-1 - sw $5,-4($2) - sw $8,%lo(qHead)($3) - sw $4,%lo(g_qCount)($7) -$L47: - j $31 - nop - - .set macro - .set reorder - .end dequeue - .size dequeue, .-dequeue - .align 2 - .globl qcount - .set nomips16 - .ent qcount - .type qcount, @function -qcount: - .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - lui $2,%hi(g_qCount) - lw $2,%lo(g_qCount)($2) - j $31 - nop - - .set macro - .set reorder - .end qcount - .size qcount, .-qcount - .align 2 - .globl enqueue - .set nomips16 - .ent enqueue - .type enqueue, @function -enqueue: - .frame $sp,24,$31 # vars= 0, regs= 1/0, args= 16, gp= 0 - .mask 0x80000000,-4 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - lui $3,%hi(msys) - lw $2,%lo(msys)($3) - addiu $sp,$sp,-24 - beq $2,$0,$L51 - sw $31,20($sp) - - lw $7,0($2) - nop - sltu $8,$7,20 - bne $8,$0,$L51 - sltu $8,$7,24 - -$L72: - beq $8,$0,$L69 - addiu $8,$2,20 - - sw $0,%lo(msys)($3) - ori $3,$7,0x1 -$L61: - lui $8,%hi(qHead) - addiu $7,$2,4 - sw $3,0($2) - lw $3,%lo(qHead)($8) - beq $7,$0,$L59 - nop - - sw $4,4($2) - sw $5,4($7) - sw $6,8($7) - beq $3,$0,$L70 - sw $0,12($7) - -$L66: - move $2,$3 - lw $3,12($3) - nop - bne $3,$0,$L66 - nop - - sw $7,12($2) - lui $2,%hi(g_qCount) - lw $3,%lo(g_qCount)($2) - lw $31,20($sp) - addiu $3,$3,1 - sw $3,%lo(g_qCount)($2) - j $31 - addiu $sp,$sp,24 - -$L69: - addiu $7,$7,-20 - sw $8,%lo(msys)($3) - sw $7,20($2) - j $L61 - li $3,21 # 0x15 - -$L51: - addiu $2,$3,%lo(msys) - lw $2,4($2) - move $9,$0 - move $8,$2 - li $11,-2 # 0xfffffffffffffffe -$L68: - lw $7,0($8) - nop - beq $7,$0,$L71 - nop - -$L57: - andi $10,$7,0x1 - beq $10,$0,$L54 - nop - - beq $9,$0,$L55 - sltu $10,$9,20 - - beq $10,$0,$L56 - sw $9,0($2) - -$L55: - and $7,$7,$11 - addu $8,$8,$7 - lw $7,0($8) - move $2,$8 - bne $7,$0,$L57 - move $9,$0 - -$L71: - beq $9,$0,$L58 - sltu $7,$9,20 - - bne $7,$0,$L58 - sw $9,0($2) - -$L56: - beq $2,$0,$L59 - sw $2,%lo(msys)($3) - - lw $7,0($2) - j $L72 - sltu $8,$7,24 - -$L58: - sw $0,%lo(msys)($3) -$L59: - jal exit - li $4,1 # 0x1 - -$L54: - addu $8,$8,$7 - j $L68 - addu $9,$9,$7 - -$L70: - lui $2,%hi(g_qCount) - lw $3,%lo(g_qCount)($2) - lw $31,20($sp) - addiu $3,$3,1 - sw $7,%lo(qHead)($8) - sw $3,%lo(g_qCount)($2) - j $31 - addiu $sp,$sp,24 - - .set macro - .set reorder - .end enqueue - .size enqueue, .-enqueue - .align 2 - .globl print_path - .set nomips16 - .ent print_path - .type print_path, @function -print_path: - .frame $sp,24,$31 # vars= 0, regs= 2/0, args= 16, gp= 0 - .mask 0x80010000,-4 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - sll $2,$5,3 - addiu $sp,$sp,-24 - addu $2,$4,$2 - sw $16,16($sp) - move $16,$5 - lw $5,4($2) - li $2,9999 # 0x270f - beq $5,$2,$L74 - sw $31,20($sp) - - sll $5,$5,3 - addu $5,$4,$5 - lw $5,4($5) - nop - beq $5,$2,$L74 - sll $5,$5,3 - - addu $5,$4,$5 - lw $5,4($5) - nop - beq $5,$2,$L74 - sll $5,$5,3 - - addu $5,$4,$5 - lw $5,4($5) - nop - beq $5,$2,$L74 - sll $5,$5,3 - - addu $5,$4,$5 - lw $5,4($5) - nop - beq $5,$2,$L74 - sll $5,$5,3 - - addu $5,$4,$5 - lw $5,4($5) - nop - beq $5,$2,$L74 - sll $5,$5,3 - - addu $5,$4,$5 - lw $5,4($5) - nop - beq $5,$2,$L74 - sll $5,$5,3 - - addu $5,$4,$5 - lw $5,4($5) - nop - beq $5,$2,$L74 - sll $5,$5,3 - - addu $3,$4,$5 - lw $5,4($3) - nop - beq $5,$2,$L74 - nop - - jal print_path - nop - -$L74: - lw $31,20($sp) - li $2,251658240 # 0xf000000 - sw $16,0($2) - lw $16,16($sp) - j $31 - addiu $sp,$sp,24 - - .set macro - .set reorder - .end print_path - .size print_path, .-print_path - .align 2 - .set nomips16 - .ent T.25 - .type T.25, @function -T.25: - .frame $sp,24,$31 # vars= 0, regs= 2/0, args= 16, gp= 0 - .mask 0x80010000,-4 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - lui $3,%hi(rgnNodes) - sll $2,$4,3 - addiu $3,$3,%lo(rgnNodes) - addiu $sp,$sp,-24 - addu $2,$3,$2 - sw $16,16($sp) - move $16,$4 - lw $4,4($2) - li $2,9999 # 0x270f - beq $4,$2,$L85 - sw $31,20($sp) - - sll $4,$4,3 - addu $4,$3,$4 - lw $4,4($4) - nop - beq $4,$2,$L85 - sll $4,$4,3 - - addu $4,$3,$4 - lw $4,4($4) - nop - beq $4,$2,$L85 - sll $4,$4,3 - - addu $4,$3,$4 - lw $4,4($4) - nop - beq $4,$2,$L85 - sll $4,$4,3 - - addu $4,$3,$4 - lw $4,4($4) - nop - beq $4,$2,$L85 - sll $4,$4,3 - - addu $4,$3,$4 - lw $4,4($4) - nop - beq $4,$2,$L85 - sll $4,$4,3 - - addu $4,$3,$4 - lw $4,4($4) - nop - beq $4,$2,$L85 - sll $4,$4,3 - - addu $4,$3,$4 - lw $4,4($4) - nop - beq $4,$2,$L85 - sll $4,$4,3 - - addu $3,$3,$4 - lw $4,4($3) - nop - beq $4,$2,$L85 - nop - - jal T.25 - nop - -$L85: - lw $31,20($sp) - li $2,251658240 # 0xf000000 - sw $16,0($2) - lw $16,16($sp) - j $31 - addiu $sp,$sp,24 - - .set macro - .set reorder - .end T.25 - .size T.25, .-T.25 - .align 2 - .globl dijkstra - .set nomips16 - .ent dijkstra - .type dijkstra, @function -dijkstra: - .frame $sp,72,$31 # vars= 16, regs= 10/0, args= 16, gp= 0 - .mask 0xc0ff0000,-4 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - lui $2,%hi(rgnNodes) - addiu $sp,$sp,-72 - addiu $2,$2,%lo(rgnNodes) - lui $7,%hi(rgnNodes+800) - sw $31,68($sp) - sw $fp,64($sp) - sw $23,60($sp) - sw $22,56($sp) - sw $21,52($sp) - sw $20,48($sp) - sw $19,44($sp) - sw $18,40($sp) - sw $17,36($sp) - sw $16,32($sp) - addiu $7,$7,%lo(rgnNodes+800) - move $3,$2 - li $6,9999 # 0x270f -$L96: - sw $6,0($3) - sw $6,4($3) - addiu $3,$3,8 - bne $3,$7,$L96 - nop - - li $7,100 # 0x64 - lui $3,%hi(ch) - beq $4,$5,$L151 - sw $7,%lo(ch)($3) - - lui $15,%hi(msys) - sll $3,$4,3 - lw $7,%lo(msys)($15) - addu $3,$2,$3 - sw $6,4($3) - beq $7,$0,$L99 - sw $0,0($3) - - lw $3,0($7) - nop - sltu $6,$3,20 - bne $6,$0,$L99 - sltu $6,$3,24 - -$L162: - beq $6,$0,$L152 - addiu $6,$7,20 - - sw $0,%lo(msys)($15) - ori $3,$3,0x1 -$L109: - lui $16,%hi(qHead) - addiu $6,$7,4 - sw $3,0($7) - lw $3,%lo(qHead)($16) - beq $6,$0,$L129 - nop - - sw $4,4($7) - li $4,9999 # 0x270f - sw $4,8($6) - sw $0,4($6) - beq $3,$0,$L153 - sw $0,12($6) - -$L142: - move $4,$3 - lw $3,12($3) - nop - bne $3,$0,$L142 - nop - - lw $24,%lo(qHead)($16) - sw $6,12($4) -$L112: - lui $17,%hi(g_qCount) - addiu $4,$15,%lo(msys) - lw $3,%lo(g_qCount)($17) - lw $4,4($4) - lui $fp,%hi(iNode) - addiu $3,$3,1 - lui $23,%hi(iDist) - lui $22,%hi(iPrev) - lui $21,%hi(i) - sw $4,24($sp) - lui $4,%hi(iCost) - sw $3,%lo(g_qCount)($17) - lw $6,%lo(iNode)($fp) - lw $7,%lo(iDist)($23) - lw $8,%lo(iPrev)($22) - lw $10,%lo(i)($21) - lw $13,%lo(iCost)($4) - lw $11,%lo(msys)($15) - li $9,-2 # 0xfffffffffffffffe - blez $3,$L154 - li $18,9999 # 0x270f - -$L138: - beq $24,$0,$L115 - move $4,$0 - - lw $4,-4($24) - lw $6,0($24) - and $4,$4,$9 - sw $4,-4($24) - lw $7,4($24) - lw $8,8($24) - lw $4,12($24) - addiu $3,$3,-1 -$L115: - sll $14,$6,4 - sll $10,$6,6 - addu $10,$14,$10 - sll $14,$10,2 - lui $25,%hi(AdjMatrix) - addu $14,$10,$14 - addiu $25,$25,%lo(AdjMatrix) - lui $12,%hi(rgnNodes) - addu $14,$25,$14 - addiu $12,$12,%lo(rgnNodes) - sw $0,20($sp) - move $10,$0 -$L140: - lw $13,0($14) - nop - beq $13,$18,$L164 - move $25,$11 - - lw $24,0($12) - nop - beq $24,$18,$L118 - addu $19,$7,$13 - - slt $24,$19,$24 - beq $24,$0,$L116 - nop - -$L118: - sw $19,0($12) - beq $11,$0,$L119 - sw $6,4($12) - - lw $20,0($11) - nop - sltu $24,$20,20 - bne $24,$0,$L119 - sltu $24,$20,24 - -$L163: - bne $24,$0,$L130 - nop - - addiu $20,$20,-20 - sw $20,20($11) - addiu $25,$11,20 - li $20,21 # 0x15 -$L131: - addiu $24,$11,4 - beq $24,$0,$L156 - sw $20,0($11) - - sw $10,4($11) - sw $19,4($24) - sw $6,8($24) - beq $4,$0,$L133 - sw $0,12($24) - - j $L135 - move $19,$4 - -$L157: - move $19,$11 -$L135: - lw $11,12($19) - nop - bne $11,$0,$L157 - nop - - sw $24,12($19) - move $24,$4 -$L133: - addiu $10,$10,1 - li $11,100 # 0x64 - addiu $3,$3,1 - addiu $14,$14,4 - bne $10,$11,$L137 - addiu $12,$12,8 - -$L158: - bgtz $3,$L138 - move $11,$25 - -$L154: - sll $5,$5,3 - addu $2,$2,$5 - lw $5,0($2) - li $4,251658240 # 0xf000000 - sw $5,0($4) - lw $4,4($2) - sw $24,%lo(qHead)($16) - li $2,9999 # 0x270f - lui $24,%hi(iCost) - sw $6,%lo(iNode)($fp) - sw $7,%lo(iDist)($23) - sw $8,%lo(iPrev)($22) - sw $3,%lo(g_qCount)($17) - sw $10,%lo(i)($21) - sw $13,%lo(iCost)($24) - beq $4,$2,$L139 - sw $11,%lo(msys)($15) - - jal T.25 - nop - -$L139: - li $3,-1 # 0xffffffffffffffff - li $2,251658240 # 0xf000000 - sw $3,0($2) -$L98: - lw $31,68($sp) - lw $fp,64($sp) - lw $23,60($sp) - lw $22,56($sp) - lw $21,52($sp) - lw $20,48($sp) - lw $19,44($sp) - lw $18,40($sp) - lw $17,36($sp) - lw $16,32($sp) - j $31 - addiu $sp,$sp,72 - -$L152: - addiu $3,$3,-20 - sw $3,20($7) - sw $6,%lo(msys)($15) - j $L109 - li $3,21 # 0x15 - -$L116: -$L164: - addiu $10,$10,1 - li $11,100 # 0x64 - move $24,$4 - addiu $14,$14,4 - beq $10,$11,$L158 - addiu $12,$12,8 - -$L137: - move $11,$25 - move $4,$24 - j $L140 - sw $10,20($sp) - -$L151: - li $2,251658240 # 0xf000000 - j $L98 - sw $0,0($2) - -$L130: - ori $20,$20,0x1 - j $L131 - move $25,$0 - -$L99: - addiu $3,$15,%lo(msys) - lw $7,4($3) - move $8,$0 - move $6,$7 - li $11,-2 # 0xfffffffffffffffe -$L145: - lw $3,0($6) - nop - beq $3,$0,$L159 - nop - -$L105: - andi $9,$3,0x1 - beq $9,$0,$L102 - nop - - beq $8,$0,$L103 - sltu $9,$8,20 - - beq $9,$0,$L104 - sw $8,0($7) - -$L103: - and $3,$3,$11 - addu $6,$6,$3 - lw $3,0($6) - move $7,$6 - bne $3,$0,$L105 - move $8,$0 - -$L159: - beq $8,$0,$L150 - sltu $3,$8,20 - - bne $3,$0,$L150 - sw $8,0($7) - -$L104: - beq $7,$0,$L129 - sw $7,%lo(msys)($15) - - lw $3,0($7) - j $L162 - sltu $6,$3,24 - -$L126: - lw $2,20($sp) - sw $4,%lo(qHead)($16) - lui $4,%hi(iCost) - sw $6,%lo(iNode)($fp) - sw $7,%lo(iDist)($23) - sw $8,%lo(iPrev)($22) - sw $3,%lo(g_qCount)($17) - sw $2,%lo(i)($21) - sw $13,%lo(iCost)($4) - sw $11,%lo(msys)($15) -$L150: - sw $0,%lo(msys)($15) -$L129: - jal exit - li $4,1 # 0x1 - -$L102: - addu $6,$6,$3 - j $L145 - addu $8,$8,$3 - -$L153: - sw $6,%lo(qHead)($16) - j $L112 - move $24,$6 - -$L119: - lw $24,24($sp) - mtlo $11 - move $20,$0 - sw $24,28($sp) - move $25,$24 -$L146: - lw $24,0($25) - nop - beq $24,$0,$L160 - nop - -$L125: - andi $11,$24,0x1 - beq $11,$0,$L121 - nop - - beq $20,$0,$L122 - sltu $11,$20,20 - - sw $11,16($sp) - lw $11,28($sp) - nop - sw $20,0($11) - lw $11,16($sp) - nop - beq $11,$0,$L123 - nop - -$L122: - and $24,$24,$9 - addu $25,$25,$24 - lw $24,0($25) - sw $25,28($sp) - bne $24,$0,$L125 - move $20,$0 - -$L160: - mflo $11 - beq $20,$0,$L126 - sltu $24,$20,20 - - lw $25,28($sp) - bne $24,$0,$L126 - sw $20,0($25) - -$L123: - lw $11,28($sp) - nop - beq $11,$0,$L161 - nop - - lw $20,0($11) - j $L163 - sltu $24,$20,24 - -$L121: - addu $25,$25,$24 - j $L146 - addu $20,$20,$24 - -$L156: - lw $2,20($sp) - sw $4,%lo(qHead)($16) - lui $4,%hi(iCost) - sw $6,%lo(iNode)($fp) - sw $7,%lo(iDist)($23) - sw $8,%lo(iPrev)($22) - sw $3,%lo(g_qCount)($17) - sw $2,%lo(i)($21) - sw $13,%lo(iCost)($4) - j $L129 - sw $25,%lo(msys)($15) - -$L161: - lw $10,20($sp) - lui $11,%hi(iCost) - sw $4,%lo(qHead)($16) - sw $6,%lo(iNode)($fp) - sw $7,%lo(iDist)($23) - sw $8,%lo(iPrev)($22) - sw $3,%lo(g_qCount)($17) - sw $10,%lo(i)($21) - sw $13,%lo(iCost)($11) - j $L129 - sw $0,%lo(msys)($15) - - .set macro - .set reorder - .end dijkstra - .size dijkstra, .-dijkstra - .align 2 - .globl main - .set nomips16 - .ent main - .type main, @function -main: - .frame $sp,40,$31 # vars= 0, regs= 5/0, args= 16, gp= 0 - .mask 0x800f0000,-4 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - li $5,655360 # 0xa0000 - li $2,4325376 # 0x420000 - lui $3,%hi(msys) - ori $5,$5,0xfffc - sw $5,0($2) - addiu $4,$3,%lo(msys) - lui $5,%hi(myheap) - sw $2,%lo(myheap)($5) - sw $2,4($4) - sw $2,%lo(msys)($3) - li $2,4980736 # 0x4c0000 - ori $2,$2,0xfffc - sw $0,0($2) - lui $2,%hi(qHead) - addiu $sp,$sp,-40 - sw $0,%lo(qHead)($2) - lui $9,%hi(mat) - lui $2,%hi(g_qCount) - lui $8,%hi(AdjMatrix) - sw $31,36($sp) - sw $19,32($sp) - sw $18,28($sp) - sw $17,24($sp) - sw $16,20($sp) - sw $0,%lo(g_qCount)($2) - addiu $9,$9,%lo(mat) - addiu $8,$8,%lo(AdjMatrix) - move $7,$0 - li $6,100 # 0x64 - sll $3,$7,4 -$L173: - sll $2,$7,6 - addu $2,$3,$2 - sll $3,$2,2 - addu $3,$2,$3 - addu $4,$8,$3 - move $2,$0 - addu $3,$9,$3 -$L167: - lw $5,0($3) - addiu $2,$2,1 - sw $5,0($4) - addiu $3,$3,4 - bne $2,$6,$L167 - addiu $4,$4,4 - - addiu $7,$7,1 - bne $7,$2,$L173 - sll $3,$7,4 - - li $17,50 # 0x32 - move $16,$0 - li $18,100 # 0x64 - li $19,20 # 0x14 -$L169: - bne $18,$0,1f - div $0,$17,$18 - break 7 -1: - move $4,$16 - addiu $16,$16,1 - mfhi $17 - jal dijkstra - move $5,$17 - - bne $16,$19,$L169 - addiu $17,$17,1 - - lw $31,36($sp) - lw $19,32($sp) - lw $18,28($sp) - lw $17,24($sp) - lw $16,20($sp) - j $31 - addiu $sp,$sp,40 - - .set macro - .set reorder - .end main - .size main, .-main - .globl mat - .data - .align 2 - .type mat, @object - .size mat, 40000 -mat: - .word 32 - .word 32 - .word 54 - .word 12 - .word 52 - .word 56 - .word 8 - .word 30 - .word 44 - .word 94 - .word 44 - .word 39 - .word 65 - .word 19 - .word 51 - .word 91 - .word 1 - .word 5 - .word 89 - .word 34 - .word 25 - .word 58 - .word 20 - .word 51 - .word 38 - .word 65 - .word 30 - .word 7 - .word 20 - .word 10 - .word 51 - .word 18 - .word 43 - .word 71 - .word 97 - .word 61 - .word 26 - .word 5 - .word 57 - .word 70 - .word 65 - .word 0 - .word 75 - .word 29 - .word 86 - .word 93 - .word 87 - .word 87 - .word 64 - .word 75 - .word 88 - .word 89 - .word 100 - .word 7 - .word 40 - .word 37 - .word 38 - .word 36 - .word 44 - .word 24 - .word 46 - .word 95 - .word 43 - .word 89 - .word 32 - .word 5 - .word 15 - .word 58 - .word 77 - .word 72 - .word 95 - .word 8 - .word 38 - .word 69 - .word 37 - .word 24 - .word 27 - .word 90 - .word 77 - .word 92 - .word 31 - .word 30 - .word 80 - .word 30 - .word 37 - .word 86 - .word 33 - .word 76 - .word 21 - .word 77 - .word 100 - .word 68 - .word 37 - .word 8 - .word 22 - .word 69 - .word 81 - .word 38 - .word 94 - .word 57 - .word 76 - .word 54 - .word 65 - .word 14 - .word 89 - .word 69 - .word 4 - .word 16 - .word 24 - .word 47 - .word 7 - .word 21 - .word 78 - .word 53 - .word 17 - .word 81 - .word 39 - .word 50 - .word 22 - .word 60 - .word 93 - .word 89 - .word 94 - .word 30 - .word 97 - .word 16 - .word 65 - .word 43 - .word 20 - .word 24 - .word 67 - .word 62 - .word 78 - .word 98 - .word 42 - .word 67 - .word 32 - .word 46 - .word 49 - .word 57 - .word 60 - .word 56 - .word 44 - .word 37 - .word 75 - .word 62 - .word 17 - .word 13 - .word 11 - .word 40 - .word 40 - .word 4 - .word 95 - .word 100 - .word 0 - .word 57 - .word 82 - .word 31 - .word 0 - .word 1 - .word 56 - .word 67 - .word 30 - .word 100 - .word 64 - .word 72 - .word 66 - .word 63 - .word 18 - .word 81 - .word 19 - .word 44 - .word 2 - .word 63 - .word 81 - .word 78 - .word 91 - .word 64 - .word 91 - .word 2 - .word 70 - .word 97 - .word 73 - .word 64 - .word 97 - .word 39 - .word 21 - .word 78 - .word 70 - .word 21 - .word 46 - .word 25 - .word 54 - .word 76 - .word 92 - .word 84 - .word 47 - .word 57 - .word 46 - .word 31 - .word 38 - .word 31 - .word 75 - .word 40 - .word 61 - .word 21 - .word 84 - .word 51 - .word 86 - .word 41 - .word 19 - .word 21 - .word 37 - .word 58 - .word 86 - .word 100 - .word 97 - .word 73 - .word 44 - .word 67 - .word 60 - .word 90 - .word 58 - .word 13 - .word 31 - .word 49 - .word 63 - .word 44 - .word 73 - .word 76 - .word 76 - .word 77 - .word 73 - .word 16 - .word 83 - .word 100 - .word 4 - .word 67 - .word 51 - .word 56 - .word 7 - .word 36 - .word 77 - .word 10 - .word 95 - .word 28 - .word 10 - .word 57 - .word 0 - .word 54 - .word 23 - .word 60 - .word 9 - .word 48 - .word 39 - .word 40 - .word 97 - .word 69 - .word 84 - .word 35 - .word 44 - .word 25 - .word 11 - .word 83 - .word 8 - .word 61 - .word 83 - .word 12 - .word 27 - .word 100 - .word 34 - .word 0 - .word 35 - .word 10 - .word 10 - .word 96 - .word 39 - .word 87 - .word 53 - .word 5 - .word 40 - .word 42 - .word 66 - .word 15 - .word 90 - .word 71 - .word 55 - .word 87 - .word 39 - .word 5 - .word 88 - .word 49 - .word 97 - .word 100 - .word 32 - .word 4 - .word 60 - .word 81 - .word 83 - .word 53 - .word 80 - .word 16 - .word 53 - .word 14 - .word 94 - .word 29 - .word 77 - .word 99 - .word 16 - .word 29 - .word 3 - .word 22 - .word 71 - .word 35 - .word 4 - .word 61 - .word 6 - .word 25 - .word 13 - .word 11 - .word 30 - .word 0 - .word 27 - .word 94 - .word 66 - .word 25 - .word 64 - .word 92 - .word 5 - .word 47 - .word 44 - .word 85 - .word 29 - .word 63 - .word 65 - .word 89 - .word 59 - .word 41 - .word 87 - .word 41 - .word 36 - .word 57 - .word 29 - .word 7 - .word 92 - .word 33 - .word 34 - .word 64 - .word 59 - .word 47 - .word 76 - .word 55 - .word 13 - .word 2 - .word 48 - .word 46 - .word 27 - .word 12 - .word 37 - .word 99 - .word 25 - .word 48 - .word 83 - .word 20 - .word 77 - .word 13 - .word 9 - .word 35 - .word 55 - .word 62 - .word 76 - .word 57 - .word 18 - .word 72 - .word 64 - .word 10 - .word 4 - .word 64 - .word 74 - .word 63 - .word 77 - .word 15 - .word 18 - .word 91 - .word 84 - .word 32 - .word 36 - .word 77 - .word 10 - .word 39 - .word 75 - .word 35 - .word 87 - .word 23 - .word 22 - .word 30 - .word 37 - .word 31 - .word 65 - .word 58 - .word 59 - .word 7 - .word 14 - .word 78 - .word 79 - .word 45 - .word 54 - .word 83 - .word 8 - .word 94 - .word 12 - .word 86 - .word 9 - .word 97 - .word 42 - .word 93 - .word 95 - .word 44 - .word 70 - .word 5 - .word 83 - .word 10 - .word 40 - .word 36 - .word 34 - .word 62 - .word 66 - .word 71 - .word 59 - .word 97 - .word 95 - .word 18 - .word 3 - .word 8 - .word 62 - .word 48 - .word 19 - .word 15 - .word 98 - .word 28 - .word 8 - .word 9 - .word 80 - .word 84 - .word 72 - .word 21 - .word 43 - .word 66 - .word 65 - .word 79 - .word 71 - .word 13 - .word 89 - .word 78 - .word 49 - .word 22 - .word 5 - .word 14 - .word 59 - .word 65 - .word 11 - .word 53 - .word 49 - .word 81 - .word 28 - .word 77 - .word 29 - .word 47 - .word 92 - .word 26 - .word 41 - .word 66 - .word 1 - .word 20 - .word 50 - .word 73 - .word 7 - .word 59 - .word 4 - .word 72 - .word 37 - .word 76 - .word 86 - .word 25 - .word 19 - .word 0 - .word 14 - .word 24 - .word 15 - .word 73 - .word 55 - .word 93 - .word 93 - .word 3 - .word 73 - .word 87 - .word 80 - .word 68 - .word 100 - .word 37 - .word 94 - .word 41 - .word 3 - .word 61 - .word 27 - .word 19 - .word 33 - .word 35 - .word 78 - .word 38 - .word 73 - .word 14 - .word 80 - .word 58 - .word 5 - .word 99 - .word 59 - .word 19 - .word 22 - .word 40 - .word 59 - .word 78 - .word 32 - .word 17 - .word 47 - .word 71 - .word 3 - .word 94 - .word 39 - .word 2 - .word 97 - .word 99 - .word 9 - .word 66 - .word 60 - .word 37 - .word 85 - .word 59 - .word 38 - .word 28 - .word 63 - .word 10 - .word 8 - .word 8 - .word 35 - .word 81 - .word 6 - .word 60 - .word 100 - .word 96 - .word 66 - .word 24 - .word 39 - .word 64 - .word 41 - .word 52 - .word 34 - .word 10 - .word 11 - .word 39 - .word 80 - .word 8 - .word 4 - .word 89 - .word 74 - .word 64 - .word 92 - .word 25 - .word 89 - .word 29 - .word 19 - .word 18 - .word 6 - .word 28 - .word 26 - .word 7 - .word 8 - .word 33 - .word 67 - .word 74 - .word 95 - .word 32 - .word 99 - .word 33 - .word 96 - .word 5 - .word 51 - .word 96 - .word 83 - .word 63 - .word 35 - .word 62 - .word 71 - .word 39 - .word 16 - .word 10 - .word 69 - .word 8 - .word 35 - .word 23 - .word 3 - .word 55 - .word 41 - .word 76 - .word 49 - .word 68 - .word 83 - .word 23 - .word 67 - .word 15 - .word 97 - .word 61 - .word 13 - .word 61 - .word 60 - .word 75 - .word 33 - .word 77 - .word 71 - .word 15 - .word 39 - .word 72 - .word 43 - .word 76 - .word 77 - .word 59 - .word 53 - .word 11 - .word 33 - .word 88 - .word 34 - .word 37 - .word 8 - .word 76 - .word 79 - .word 23 - .word 9 - .word 62 - .word 46 - .word 76 - .word 43 - .word 9 - .word 2 - .word 57 - .word 70 - .word 28 - .word 31 - .word 69 - .word 4 - .word 68 - .word 84 - .word 10 - .word 39 - .word 26 - .word 52 - .word 82 - .word 52 - .word 4 - .word 93 - .word 85 - .word 59 - .word 94 - .word 21 - .word 33 - .word 35 - .word 67 - .word 57 - .word 44 - .word 28 - .word 69 - .word 86 - .word 37 - .word 78 - .word 54 - .word 94 - .word 14 - .word 48 - .word 25 - .word 83 - .word 18 - .word 59 - .word 33 - .word 28 - .word 99 - .word 25 - .word 81 - .word 46 - .word 77 - .word 51 - .word 39 - .word 62 - .word 9 - .word 32 - .word 49 - .word 43 - .word 33 - .word 15 - .word 100 - .word 77 - .word 9 - .word 68 - .word 28 - .word 47 - .word 12 - .word 82 - .word 6 - .word 26 - .word 96 - .word 98 - .word 75 - .word 13 - .word 57 - .word 7 - .word 8 - .word 55 - .word 33 - .word 55 - .word 0 - .word 76 - .word 5 - .word 5 - .word 3 - .word 15 - .word 3 - .word 53 - .word 58 - .word 36 - .word 34 - .word 23 - .word 79 - .word 10 - .word 57 - .word 6 - .word 23 - .word 69 - .word 54 - .word 29 - .word 61 - .word 49 - .word 27 - .word 36 - .word 63 - .word 84 - .word 9 - .word 71 - .word 4 - .word 8 - .word 25 - .word 71 - .word 85 - .word 97 - .word 77 - .word 88 - .word 11 - .word 46 - .word 6 - .word 35 - .word 83 - .word 7 - .word 24 - .word 27 - .word 17 - .word 82 - .word 34 - .word 40 - .word 16 - .word 88 - .word 69 - .word 44 - .word 3 - .word 62 - .word 46 - .word 32 - .word 45 - .word 55 - .word 2 - .word 49 - .word 64 - .word 94 - .word 87 - .word 14 - .word 90 - .word 63 - .word 68 - .word 68 - .word 75 - .word 75 - .word 2 - .word 23 - .word 82 - .word 27 - .word 51 - .word 65 - .word 75 - .word 85 - .word 71 - .word 57 - .word 38 - .word 39 - .word 0 - .word 7 - .word 1 - .word 46 - .word 39 - .word 12 - .word 68 - .word 41 - .word 28 - .word 31 - .word 0 - .word 14 - .word 45 - .word 91 - .word 43 - .word 12 - .word 58 - .word 17 - .word 53 - .word 26 - .word 41 - .word 0 - .word 19 - .word 92 - .word 31 - .word 60 - .word 42 - .word 1 - .word 17 - .word 46 - .word 41 - .word 84 - .word 54 - .word 8 - .word 97 - .word 93 - .word 20 - .word 64 - .word 0 - .word 14 - .word 61 - .word 0 - .word 28 - .word 72 - .word 57 - .word 71 - .word 50 - .word 81 - .word 89 - .word 70 - .word 7 - .word 96 - .word 70 - .word 26 - .word 87 - .word 1 - .word 87 - .word 95 - .word 69 - .word 70 - .word 40 - .word 9 - .word 19 - .word 94 - .word 84 - .word 15 - .word 87 - .word 71 - .word 45 - .word 87 - .word 85 - .word 5 - .word 53 - .word 13 - .word 43 - .word 10 - .word 50 - .word 94 - .word 91 - .word 38 - .word 63 - .word 98 - .word 33 - .word 99 - .word 91 - .word 86 - .word 66 - .word 43 - .word 80 - .word 35 - .word 79 - .word 20 - .word 10 - .word 98 - .word 80 - .word 61 - .word 13 - .word 66 - .word 31 - .word 24 - .word 18 - .word 82 - .word 97 - .word 72 - .word 61 - .word 39 - .word 48 - .word 11 - .word 99 - .word 38 - .word 49 - .word 27 - .word 2 - .word 49 - .word 26 - .word 59 - .word 0 - .word 58 - .word 1 - .word 81 - .word 59 - .word 80 - .word 67 - .word 70 - .word 77 - .word 46 - .word 97 - .word 56 - .word 79 - .word 27 - .word 81 - .word 63 - .word 75 - .word 77 - .word 0 - .word 36 - .word 82 - .word 48 - .word 47 - .word 81 - .word 53 - .word 62 - .word 7 - .word 55 - .word 77 - .word 100 - .word 13 - .word 78 - .word 24 - .word 81 - .word 24 - .word 83 - .word 26 - .word 91 - .word 18 - .word 2 - .word 2 - .word 14 - .word 25 - .word 47 - .word 7 - .word 72 - .word 10 - .word 83 - .word 14 - .word 10 - .word 18 - .word 96 - .word 25 - .word 65 - .word 42 - .word 78 - .word 93 - .word 16 - .word 32 - .word 70 - .word 15 - .word 11 - .word 47 - .word 5 - .word 58 - .word 71 - .word 89 - .word 84 - .word 27 - .word 73 - .word 86 - .word 96 - .word 88 - .word 77 - .word 43 - .word 95 - .word 48 - .word 19 - .word 43 - .word 62 - .word 96 - .word 61 - .word 24 - .word 20 - .word 92 - .word 66 - .word 98 - .word 85 - .word 82 - .word 96 - .word 20 - .word 64 - .word 73 - .word 67 - .word 69 - .word 30 - .word 3 - .word 23 - .word 13 - .word 97 - .word 97 - .word 66 - .word 58 - .word 50 - .word 42 - .word 0 - .word 44 - .word 57 - .word 86 - .word 54 - .word 85 - .word 82 - .word 14 - .word 8 - .word 1 - .word 73 - .word 41 - .word 66 - .word 23 - .word 22 - .word 61 - .word 43 - .word 86 - .word 0 - .word 9 - .word 21 - .word 30 - .word 79 - .word 44 - .word 44 - .word 75 - .word 40 - .word 76 - .word 99 - .word 56 - .word 17 - .word 100 - .word 67 - .word 40 - .word 51 - .word 20 - .word 25 - .word 32 - .word 0 - .word 100 - .word 0 - .word 73 - .word 40 - .word 66 - .word 96 - .word 29 - .word 93 - .word 38 - .word 81 - .word 93 - .word 13 - .word 1 - .word 90 - .word 92 - .word 46 - .word 100 - .word 32 - .word 52 - .word 75 - .word 31 - .word 8 - .word 58 - .word 97 - .word 75 - .word 99 - .word 13 - .word 61 - .word 90 - .word 46 - .word 61 - .word 89 - .word 12 - .word 34 - .word 96 - .word 78 - .word 96 - .word 24 - .word 36 - .word 34 - .word 4 - .word 96 - .word 13 - .word 73 - .word 85 - .word 72 - .word 18 - .word 50 - .word 70 - .word 36 - .word 24 - .word 67 - .word 10 - .word 82 - .word 29 - .word 51 - .word 80 - .word 43 - .word 11 - .word 35 - .word 89 - .word 39 - .word 24 - .word 0 - .word 73 - .word 86 - .word 44 - .word 34 - .word 9 - .word 46 - .word 34 - .word 80 - .word 41 - .word 48 - .word 52 - .word 92 - .word 19 - .word 36 - .word 41 - .word 55 - .word 39 - .word 31 - .word 22 - .word 49 - .word 13 - .word 51 - .word 67 - .word 59 - .word 94 - .word 44 - .word 95 - .word 48 - .word 83 - .word 85 - .word 48 - .word 21 - .word 70 - .word 58 - .word 56 - .word 45 - .word 4 - .word 90 - .word 91 - .word 11 - .word 3 - .word 43 - .word 70 - .word 89 - .word 45 - .word 77 - .word 44 - .word 84 - .word 8 - .word 66 - .word 100 - .word 88 - .word 83 - .word 66 - .word 46 - .word 77 - .word 76 - .word 6 - .word 24 - .word 59 - .word 91 - .word 39 - .word 46 - .word 26 - .word 97 - .word 68 - .word 37 - .word 0 - .word 58 - .word 28 - .word 79 - .word 27 - .word 37 - .word 48 - .word 16 - .word 82 - .word 24 - .word 60 - .word 66 - .word 32 - .word 92 - .word 65 - .word 19 - .word 74 - .word 97 - .word 32 - .word 16 - .word 72 - .word 38 - .word 41 - .word 97 - .word 96 - .word 46 - .word 43 - .word 88 - .word 42 - .word 77 - .word 25 - .word 9 - .word 34 - .word 19 - .word 88 - .word 28 - .word 56 - .word 1 - .word 44 - .word 3 - .word 25 - .word 70 - .word 69 - .word 24 - .word 27 - .word 100 - .word 9 - .word 0 - .word 96 - .word 7 - .word 84 - .word 34 - .word 12 - .word 91 - .word 30 - .word 7 - .word 36 - .word 39 - .word 95 - .word 78 - .word 16 - .word 86 - .word 53 - .word 16 - .word 71 - .word 6 - .word 44 - .word 26 - .word 7 - .word 54 - .word 30 - .word 100 - .word 23 - .word 65 - .word 23 - .word 50 - .word 65 - .word 99 - .word 17 - .word 26 - .word 73 - .word 67 - .word 60 - .word 85 - .word 57 - .word 57 - .word 92 - .word 93 - .word 96 - .word 52 - .word 36 - .word 78 - .word 4 - .word 90 - .word 61 - .word 75 - .word 96 - .word 4 - .word 68 - .word 3 - .word 25 - .word 64 - .word 69 - .word 14 - .word 28 - .word 58 - .word 31 - .word 59 - .word 56 - .word 48 - .word 86 - .word 28 - .word 81 - .word 45 - .word 12 - .word 37 - .word 1 - .word 70 - .word 29 - .word 64 - .word 89 - .word 31 - .word 41 - .word 93 - .word 20 - .word 1 - .word 67 - .word 83 - .word 73 - .word 0 - .word 52 - .word 98 - .word 64 - .word 20 - .word 78 - .word 93 - .word 78 - .word 8 - .word 17 - .word 100 - .word 22 - .word 2 - .word 95 - .word 2 - .word 48 - .word 6 - .word 39 - .word 15 - .word 43 - .word 34 - .word 79 - .word 31 - .word 66 - .word 87 - .word 23 - .word 52 - .word 54 - .word 56 - .word 34 - .word 93 - .word 57 - .word 52 - .word 56 - .word 87 - .word 72 - .word 34 - .word 79 - .word 15 - .word 42 - .word 63 - .word 15 - .word 65 - .word 65 - .word 9 - .word 67 - .word 79 - .word 82 - .word 73 - .word 95 - .word 91 - .word 6 - .word 39 - .word 21 - .word 38 - .word 92 - .word 10 - .word 91 - .word 46 - .word 67 - .word 91 - .word 38 - .word 90 - .word 43 - .word 95 - .word 76 - .word 81 - .word 28 - .word 21 - .word 63 - .word 70 - .word 84 - .word 78 - .word 0 - .word 48 - .word 53 - .word 68 - .word 94 - .word 0 - .word 40 - .word 88 - .word 92 - .word 12 - .word 93 - .word 12 - .word 17 - .word 85 - .word 23 - .word 7 - .word 30 - .word 56 - .word 64 - .word 34 - .word 45 - .word 73 - .word 28 - .word 87 - .word 20 - .word 22 - .word 7 - .word 83 - .word 59 - .word 91 - .word 26 - .word 59 - .word 5 - .word 79 - .word 26 - .word 99 - .word 79 - .word 32 - .word 52 - .word 70 - .word 11 - .word 44 - .word 83 - .word 28 - .word 95 - .word 72 - .word 1 - .word 91 - .word 27 - .word 65 - .word 25 - .word 38 - .word 4 - .word 19 - .word 24 - .word 24 - .word 8 - .word 99 - .word 73 - .word 67 - .word 89 - .word 99 - .word 25 - .word 60 - .word 77 - .word 18 - .word 24 - .word 21 - .word 16 - .word 42 - .word 58 - .word 27 - .word 53 - .word 6 - .word 55 - .word 47 - .word 78 - .word 56 - .word 38 - .word 71 - .word 88 - .word 29 - .word 8 - .word 58 - .word 48 - .word 99 - .word 48 - .word 56 - .word 97 - .word 20 - .word 89 - .word 52 - .word 18 - .word 14 - .word 78 - .word 61 - .word 99 - .word 2 - .word 48 - .word 14 - .word 44 - .word 5 - .word 42 - .word 97 - .word 11 - .word 63 - .word 10 - .word 55 - .word 19 - .word 48 - .word 25 - .word 73 - .word 77 - .word 100 - .word 30 - .word 91 - .word 99 - .word 78 - .word 13 - .word 95 - .word 98 - .word 1 - .word 12 - .word 82 - .word 82 - .word 91 - .word 8 - .word 80 - .word 93 - .word 22 - .word 61 - .word 2 - .word 28 - .word 2 - .word 66 - .word 5 - .word 65 - .word 76 - .word 61 - .word 50 - .word 90 - .word 86 - .word 22 - .word 32 - .word 52 - .word 52 - .word 22 - .word 50 - .word 96 - .word 1 - .word 10 - .word 59 - .word 70 - .word 90 - .word 40 - .word 51 - .word 80 - .word 14 - .word 98 - .word 38 - .word 37 - .word 58 - .word 40 - .word 31 - .word 60 - .word 72 - .word 2 - .word 91 - .word 47 - .word 63 - .word 7 - .word 2 - .word 15 - .word 29 - .word 34 - .word 67 - .word 48 - .word 23 - .word 83 - .word 9 - .word 24 - .word 59 - .word 69 - .word 94 - .word 48 - .word 8 - .word 11 - .word 27 - .word 90 - .word 8 - .word 31 - .word 93 - .word 32 - .word 38 - .word 90 - .word 58 - .word 9 - .word 92 - .word 48 - .word 23 - .word 55 - .word 55 - .word 25 - .word 36 - .word 51 - .word 60 - .word 69 - .word 65 - .word 83 - .word 51 - .word 74 - .word 73 - .word 76 - .word 42 - .word 67 - .word 24 - .word 17 - .word 44 - .word 17 - .word 73 - .word 18 - .word 49 - .word 65 - .word 50 - .word 87 - .word 54 - .word 7 - .word 62 - .word 11 - .word 21 - .word 85 - .word 32 - .word 77 - .word 10 - .word 68 - .word 94 - .word 70 - .word 36 - .word 24 - .word 52 - .word 53 - .word 98 - .word 24 - .word 96 - .word 6 - .word 57 - .word 86 - .word 90 - .word 67 - .word 2 - .word 62 - .word 85 - .word 17 - .word 26 - .word 34 - .word 70 - .word 46 - .word 41 - .word 32 - .word 23 - .word 63 - .word 16 - .word 56 - .word 5 - .word 26 - .word 23 - .word 65 - .word 62 - .word 26 - .word 89 - .word 80 - .word 45 - .word 52 - .word 71 - .word 6 - .word 58 - .word 27 - .word 92 - .word 47 - .word 61 - .word 61 - .word 75 - .word 45 - .word 78 - .word 67 - .word 46 - .word 14 - .word 12 - .word 53 - .word 46 - .word 36 - .word 82 - .word 28 - .word 58 - .word 87 - .word 21 - .word 47 - .word 17 - .word 83 - .word 73 - .word 72 - .word 63 - .word 85 - .word 24 - .word 33 - .word 91 - .word 48 - .word 26 - .word 49 - .word 62 - .word 53 - .word 9 - .word 36 - .word 99 - .word 53 - .word 3 - .word 10 - .word 67 - .word 82 - .word 63 - .word 79 - .word 84 - .word 45 - .word 7 - .word 41 - .word 98 - .word 95 - .word 89 - .word 82 - .word 43 - .word 27 - .word 53 - .word 5 - .word 78 - .word 77 - .word 4 - .word 69 - .word 25 - .word 98 - .word 17 - .word 53 - .word 16 - .word 93 - .word 89 - .word 81 - .word 45 - .word 58 - .word 91 - .word 12 - .word 40 - .word 54 - .word 91 - .word 90 - .word 65 - .word 64 - .word 31 - .word 62 - .word 58 - .word 86 - .word 43 - .word 1 - .word 12 - .word 63 - .word 73 - .word 91 - .word 39 - .word 44 - .word 25 - .word 30 - .word 7 - .word 8 - .word 83 - .word 23 - .word 0 - .word 38 - .word 4 - .word 45 - .word 96 - .word 61 - .word 23 - .word 1 - .word 14 - .word 81 - .word 92 - .word 45 - .word 44 - .word 89 - .word 74 - .word 69 - .word 74 - .word 83 - .word 36 - .word 52 - .word 45 - .word 75 - .word 8 - .word 85 - .word 18 - .word 100 - .word 81 - .word 92 - .word 7 - .word 30 - .word 82 - .word 74 - .word 34 - .word 52 - .word 86 - .word 96 - .word 12 - .word 8 - .word 98 - .word 94 - .word 89 - .word 55 - .word 38 - .word 100 - .word 43 - .word 11 - .word 68 - .word 83 - .word 95 - .word 3 - .word 0 - .word 39 - .word 78 - .word 9 - .word 90 - .word 63 - .word 8 - .word 37 - .word 20 - .word 83 - .word 67 - .word 1 - .word 56 - .word 67 - .word 53 - .word 7 - .word 62 - .word 66 - .word 16 - .word 25 - .word 25 - .word 71 - .word 80 - .word 63 - .word 70 - .word 89 - .word 75 - .word 3 - .word 37 - .word 35 - .word 6 - .word 38 - .word 74 - .word 51 - .word 47 - .word 30 - .word 80 - .word 21 - .word 67 - .word 100 - .word 3 - .word 100 - .word 68 - .word 26 - .word 66 - .word 87 - .word 33 - .word 27 - .word 52 - .word 15 - .word 53 - .word 43 - .word 53 - .word 99 - .word 6 - .word 22 - .word 88 - .word 47 - .word 26 - .word 24 - .word 82 - .word 99 - .word 28 - .word 21 - .word 15 - .word 75 - .word 51 - .word 95 - .word 63 - .word 84 - .word 61 - .word 66 - .word 83 - .word 28 - .word 58 - .word 14 - .word 14 - .word 58 - .word 42 - .word 33 - .word 39 - .word 61 - .word 76 - .word 92 - .word 25 - .word 48 - .word 14 - .word 79 - .word 95 - .word 6 - .word 70 - .word 76 - .word 4 - .word 98 - .word 98 - .word 87 - .word 39 - .word 14 - .word 81 - .word 1 - .word 99 - .word 7 - .word 33 - .word 81 - .word 1 - .word 92 - .word 96 - .word 16 - .word 15 - .word 3 - .word 15 - .word 54 - .word 30 - .word 57 - .word 12 - .word 55 - .word 5 - .word 93 - .word 0 - .word 100 - .word 99 - .word 70 - .word 42 - .word 69 - .word 67 - .word 39 - .word 21 - .word 5 - .word 53 - .word 2 - .word 6 - .word 51 - .word 76 - .word 40 - .word 99 - .word 78 - .word 98 - .word 60 - .word 60 - .word 79 - .word 63 - .word 75 - .word 99 - .word 59 - .word 98 - .word 10 - .word 80 - .word 2 - .word 2 - .word 80 - .word 69 - .word 67 - .word 49 - .word 10 - .word 2 - .word 16 - .word 49 - .word 23 - .word 88 - .word 68 - .word 92 - .word 95 - .word 86 - .word 68 - .word 0 - .word 84 - .word 11 - .word 64 - .word 43 - .word 71 - .word 42 - .word 72 - .word 45 - .word 40 - .word 97 - .word 42 - .word 17 - .word 76 - .word 11 - .word 86 - .word 56 - .word 80 - .word 19 - .word 4 - .word 90 - .word 88 - .word 87 - .word 4 - .word 77 - .word 75 - .word 72 - .word 69 - .word 35 - .word 23 - .word 2 - .word 35 - .word 6 - .word 80 - .word 99 - .word 15 - .word 50 - .word 6 - .word 53 - .word 61 - .word 46 - .word 49 - .word 69 - .word 29 - .word 25 - .word 80 - .word 15 - .word 47 - .word 25 - .word 34 - .word 51 - .word 14 - .word 21 - .word 38 - .word 85 - .word 98 - .word 79 - .word 57 - .word 32 - .word 13 - .word 46 - .word 0 - .word 48 - .word 53 - .word 80 - .word 12 - .word 34 - .word 29 - .word 18 - .word 54 - .word 56 - .word 30 - .word 2 - .word 25 - .word 60 - .word 94 - .word 4 - .word 41 - .word 40 - .word 30 - .word 75 - .word 58 - .word 10 - .word 62 - .word 62 - .word 96 - .word 59 - .word 40 - .word 18 - .word 58 - .word 53 - .word 64 - .word 24 - .word 67 - .word 83 - .word 4 - .word 79 - .word 17 - .word 100 - .word 63 - .word 37 - .word 56 - .word 93 - .word 39 - .word 81 - .word 18 - .word 100 - .word 51 - .word 59 - .word 5 - .word 81 - .word 100 - .word 63 - .word 58 - .word 61 - .word 24 - .word 53 - .word 87 - .word 64 - .word 37 - .word 10 - .word 83 - .word 67 - .word 34 - .word 49 - .word 50 - .word 38 - .word 27 - .word 33 - .word 4 - .word 56 - .word 70 - .word 60 - .word 15 - .word 75 - .word 6 - .word 33 - .word 40 - .word 57 - .word 59 - .word 46 - .word 4 - .word 24 - .word 75 - .word 62 - .word 86 - .word 100 - .word 81 - .word 38 - .word 29 - .word 17 - .word 48 - .word 79 - .word 84 - .word 48 - .word 27 - .word 100 - .word 87 - .word 21 - .word 32 - .word 57 - .word 77 - .word 68 - .word 16 - .word 92 - .word 9 - .word 22 - .word 92 - .word 49 - .word 79 - .word 16 - .word 95 - .word 83 - .word 40 - .word 70 - .word 10 - .word 25 - .word 35 - .word 91 - .word 29 - .word 30 - .word 74 - .word 43 - .word 8 - .word 24 - .word 92 - .word 2 - .word 23 - .word 44 - .word 23 - .word 22 - .word 0 - .word 66 - .word 56 - .word 16 - .word 58 - .word 65 - .word 4 - .word 15 - .word 14 - .word 49 - .word 31 - .word 75 - .word 32 - .word 71 - .word 10 - .word 8 - .word 63 - .word 45 - .word 100 - .word 92 - .word 42 - .word 73 - .word 1 - .word 50 - .word 97 - .word 93 - .word 18 - .word 87 - .word 36 - .word 41 - .word 75 - .word 36 - .word 7 - .word 30 - .word 18 - .word 31 - .word 96 - .word 22 - .word 12 - .word 76 - .word 71 - .word 43 - .word 50 - .word 69 - .word 80 - .word 61 - .word 78 - .word 42 - .word 72 - .word 43 - .word 0 - .word 13 - .word 15 - .word 68 - .word 30 - .word 79 - .word 60 - .word 48 - .word 31 - .word 62 - .word 56 - .word 5 - .word 98 - .word 29 - .word 1 - .word 82 - .word 26 - .word 97 - .word 3 - .word 38 - .word 72 - .word 40 - .word 81 - .word 89 - .word 76 - .word 26 - .word 15 - .word 53 - .word 35 - .word 87 - .word 96 - .word 1 - .word 67 - .word 77 - .word 69 - .word 97 - .word 21 - .word 28 - .word 10 - .word 18 - .word 90 - .word 32 - .word 23 - .word 53 - .word 61 - .word 25 - .word 34 - .word 87 - .word 88 - .word 3 - .word 91 - .word 26 - .word 9 - .word 37 - .word 81 - .word 85 - .word 64 - .word 96 - .word 3 - .word 99 - .word 82 - .word 65 - .word 100 - .word 48 - .word 42 - .word 68 - .word 10 - .word 29 - .word 62 - .word 88 - .word 48 - .word 17 - .word 19 - .word 37 - .word 70 - .word 47 - .word 28 - .word 70 - .word 100 - .word 16 - .word 73 - .word 91 - .word 8 - .word 82 - .word 94 - .word 89 - .word 33 - .word 57 - .word 84 - .word 36 - .word 21 - .word 31 - .word 1 - .word 87 - .word 46 - .word 9 - .word 20 - .word 56 - .word 4 - .word 82 - .word 9 - .word 52 - .word 99 - .word 96 - .word 56 - .word 34 - .word 8 - .word 84 - .word 3 - .word 7 - .word 66 - .word 42 - .word 64 - .word 74 - .word 24 - .word 58 - .word 28 - .word 23 - .word 81 - .word 11 - .word 59 - .word 2 - .word 9 - .word 26 - .word 55 - .word 55 - .word 1 - .word 76 - .word 77 - .word 6 - .word 23 - .word 87 - .word 24 - .word 89 - .word 82 - .word 80 - .word 22 - .word 90 - .word 30 - .word 93 - .word 63 - .word 96 - .word 34 - .word 27 - .word 36 - .word 24 - .word 51 - .word 30 - .word 47 - .word 98 - .word 8 - .word 73 - .word 100 - .word 17 - .word 99 - .word 21 - .word 72 - .word 0 - .word 97 - .word 48 - .word 73 - .word 86 - .word 34 - .word 97 - .word 74 - .word 82 - .word 43 - .word 63 - .word 37 - .word 73 - .word 55 - .word 0 - .word 34 - .word 55 - .word 94 - .word 36 - .word 80 - .word 10 - .word 67 - .word 93 - .word 7 - .word 75 - .word 65 - .word 74 - .word 92 - .word 64 - .word 95 - .word 63 - .word 30 - .word 57 - .word 77 - .word 2 - .word 42 - .word 11 - .word 65 - .word 16 - .word 59 - .word 7 - .word 45 - .word 97 - .word 46 - .word 66 - .word 63 - .word 81 - .word 20 - .word 56 - .word 83 - .word 66 - .word 32 - .word 49 - .word 59 - .word 39 - .word 90 - .word 23 - .word 12 - .word 81 - .word 53 - .word 73 - .word 9 - .word 49 - .word 29 - .word 87 - .word 17 - .word 72 - .word 64 - .word 83 - .word 54 - .word 89 - .word 90 - .word 65 - .word 85 - .word 36 - .word 30 - .word 13 - .word 83 - .word 16 - .word 35 - .word 65 - .word 83 - .word 67 - .word 14 - .word 7 - .word 73 - .word 70 - .word 97 - .word 85 - .word 51 - .word 16 - .word 24 - .word 26 - .word 65 - .word 53 - .word 79 - .word 83 - .word 91 - .word 8 - .word 65 - .word 10 - .word 98 - .word 20 - .word 41 - .word 48 - .word 22 - .word 71 - .word 62 - .word 4 - .word 54 - .word 63 - .word 36 - .word 36 - .word 30 - .word 16 - .word 9 - .word 2 - .word 86 - .word 5 - .word 53 - .word 36 - .word 88 - .word 77 - .word 29 - .word 53 - .word 97 - .word 74 - .word 1 - .word 53 - .word 83 - .word 32 - .word 30 - .word 46 - .word 52 - .word 71 - .word 94 - .word 41 - .word 42 - .word 21 - .word 45 - .word 62 - .word 85 - .word 81 - .word 98 - .word 81 - .word 97 - .word 73 - .word 83 - .word 83 - .word 44 - .word 1 - .word 85 - .word 32 - .word 45 - .word 80 - .word 85 - .word 41 - .word 54 - .word 52 - .word 60 - .word 2 - .word 84 - .word 90 - .word 48 - .word 1 - .word 61 - .word 7 - .word 42 - .word 69 - .word 96 - .word 54 - .word 30 - .word 46 - .word 0 - .word 94 - .word 26 - .word 64 - .word 32 - .word 75 - .word 46 - .word 76 - .word 42 - .word 97 - .word 7 - .word 87 - .word 43 - .word 58 - .word 94 - .word 97 - .word 9 - .word 54 - .word 99 - .word 59 - .word 43 - .word 12 - .word 61 - .word 70 - .word 19 - .word 69 - .word 4 - .word 14 - .word 22 - .word 0 - .word 26 - .word 23 - .word 60 - .word 52 - .word 53 - .word 92 - .word 93 - .word 65 - .word 68 - .word 35 - .word 61 - .word 75 - .word 88 - .word 70 - .word 33 - .word 82 - .word 66 - .word 8 - .word 35 - .word 30 - .word 68 - .word 44 - .word 8 - .word 95 - .word 81 - .word 28 - .word 63 - .word 85 - .word 8 - .word 52 - .word 86 - .word 35 - .word 41 - .word 11 - .word 53 - .word 94 - .word 3 - .word 12 - .word 58 - .word 71 - .word 13 - .word 85 - .word 11 - .word 0 - .word 55 - .word 44 - .word 82 - .word 87 - .word 19 - .word 83 - .word 84 - .word 87 - .word 27 - .word 92 - .word 81 - .word 7 - .word 86 - .word 9 - .word 58 - .word 61 - .word 27 - .word 9 - .word 62 - .word 68 - .word 21 - .word 81 - .word 61 - .word 24 - .word 93 - .word 85 - .word 61 - .word 72 - .word 70 - .word 72 - .word 73 - .word 91 - .word 16 - .word 20 - .word 77 - .word 35 - .word 3 - .word 26 - .word 88 - .word 97 - .word 18 - .word 34 - .word 3 - .word 70 - .word 9 - .word 27 - .word 30 - .word 37 - .word 37 - .word 92 - .word 4 - .word 24 - .word 73 - .word 32 - .word 48 - .word 31 - .word 83 - .word 8 - .word 3 - .word 52 - .word 80 - .word 42 - .word 8 - .word 62 - .word 62 - .word 52 - .word 63 - .word 65 - .word 78 - .word 16 - .word 27 - .word 62 - .word 50 - .word 30 - .word 32 - .word 26 - .word 24 - .word 62 - .word 63 - .word 27 - .word 20 - .word 67 - .word 51 - .word 59 - .word 65 - .word 65 - .word 90 - .word 48 - .word 73 - .word 93 - .word 66 - .word 18 - .word 0 - .word 75 - .word 47 - .word 63 - .word 26 - .word 76 - .word 94 - .word 3 - .word 59 - .word 21 - .word 66 - .word 75 - .word 17 - .word 64 - .word 0 - .word 41 - .word 25 - .word 63 - .word 68 - .word 11 - .word 97 - .word 85 - .word 70 - .word 61 - .word 49 - .word 60 - .word 8 - .word 88 - .word 18 - .word 41 - .word 6 - .word 19 - .word 15 - .word 19 - .word 48 - .word 41 - .word 61 - .word 41 - .word 10 - .word 19 - .word 62 - .word 42 - .word 95 - .word 46 - .word 5 - .word 95 - .word 53 - .word 98 - .word 58 - .word 21 - .word 8 - .word 20 - .word 5 - .word 79 - .word 81 - .word 21 - .word 4 - .word 56 - .word 8 - .word 89 - .word 97 - .word 81 - .word 74 - .word 11 - .word 100 - .word 21 - .word 18 - .word 61 - .word 29 - .word 95 - .word 46 - .word 57 - .word 37 - .word 40 - .word 2 - .word 42 - .word 1 - .word 56 - .word 5 - .word 59 - .word 43 - .word 14 - .word 79 - .word 14 - .word 59 - .word 25 - .word 35 - .word 29 - .word 81 - .word 44 - .word 84 - .word 43 - .word 24 - .word 58 - .word 20 - .word 91 - .word 45 - .word 38 - .word 17 - .word 74 - .word 100 - .word 63 - .word 31 - .word 36 - .word 3 - .word 33 - .word 44 - .word 71 - .word 55 - .word 50 - .word 96 - .word 98 - .word 30 - .word 40 - .word 12 - .word 55 - .word 65 - .word 13 - .word 50 - .word 12 - .word 57 - .word 33 - .word 55 - .word 48 - .word 91 - .word 42 - .word 38 - .word 36 - .word 46 - .word 55 - .word 76 - .word 45 - .word 17 - .word 6 - .word 81 - .word 87 - .word 6 - .word 25 - .word 57 - .word 61 - .word 41 - .word 52 - .word 25 - .word 37 - .word 92 - .word 3 - .word 92 - .word 23 - .word 16 - .word 7 - .word 35 - .word 74 - .word 40 - .word 56 - .word 21 - .word 98 - .word 98 - .word 59 - .word 100 - .word 44 - .word 80 - .word 75 - .word 89 - .word 97 - .word 82 - .word 36 - .word 50 - .word 54 - .word 27 - .word 6 - .word 14 - .word 68 - .word 25 - .word 5 - .word 4 - .word 83 - .word 8 - .word 62 - .word 5 - .word 25 - .word 69 - .word 40 - .word 65 - .word 75 - .word 63 - .word 52 - .word 72 - .word 60 - .word 10 - .word 71 - .word 70 - .word 56 - .word 12 - .word 59 - .word 52 - .word 94 - .word 95 - .word 68 - .word 13 - .word 21 - .word 41 - .word 94 - .word 55 - .word 66 - .word 100 - .word 25 - .word 48 - .word 7 - .word 53 - .word 54 - .word 99 - .word 88 - .word 60 - .word 63 - .word 62 - .word 22 - .word 14 - .word 34 - .word 49 - .word 91 - .word 71 - .word 18 - .word 46 - .word 83 - .word 77 - .word 65 - .word 42 - .word 37 - .word 32 - .word 55 - .word 24 - .word 39 - .word 15 - .word 45 - .word 4 - .word 14 - .word 36 - .word 19 - .word 21 - .word 89 - .word 39 - .word 87 - .word 76 - .word 99 - .word 49 - .word 4 - .word 88 - .word 64 - .word 4 - .word 36 - .word 54 - .word 75 - .word 20 - .word 67 - .word 24 - .word 64 - .word 31 - .word 32 - .word 0 - .word 29 - .word 54 - .word 92 - .word 69 - .word 69 - .word 36 - .word 39 - .word 83 - .word 39 - .word 58 - .word 70 - .word 27 - .word 63 - .word 56 - .word 70 - .word 28 - .word 5 - .word 74 - .word 15 - .word 35 - .word 78 - .word 17 - .word 55 - .word 18 - .word 37 - .word 88 - .word 8 - .word 0 - .word 85 - .word 41 - .word 68 - .word 14 - .word 95 - .word 59 - .word 49 - .word 63 - .word 61 - .word 54 - .word 11 - .word 66 - .word 79 - .word 81 - .word 94 - .word 41 - .word 3 - .word 29 - .word 69 - .word 75 - .word 69 - .word 50 - .word 9 - .word 46 - .word 33 - .word 30 - .word 30 - .word 71 - .word 18 - .word 39 - .word 37 - .word 2 - .word 80 - .word 4 - .word 83 - .word 40 - .word 29 - .word 98 - .word 2 - .word 57 - .word 52 - .word 13 - .word 22 - .word 30 - .word 60 - .word 82 - .word 71 - .word 29 - .word 10 - .word 6 - .word 3 - .word 79 - .word 22 - .word 79 - .word 91 - .word 56 - .word 76 - .word 21 - .word 26 - .word 94 - .word 26 - .word 63 - .word 62 - .word 72 - .word 34 - .word 45 - .word 11 - .word 29 - .word 42 - .word 13 - .word 86 - .word 94 - .word 93 - .word 75 - .word 90 - .word 18 - .word 56 - .word 27 - .word 48 - .word 33 - .word 33 - .word 17 - .word 78 - .word 55 - .word 63 - .word 69 - .word 10 - .word 38 - .word 56 - .word 2 - .word 31 - .word 48 - .word 32 - .word 93 - .word 19 - .word 32 - .word 3 - .word 30 - .word 61 - .word 46 - .word 43 - .word 13 - .word 5 - .word 1 - .word 88 - .word 96 - .word 86 - .word 9 - .word 89 - .word 100 - .word 42 - .word 21 - .word 17 - .word 20 - .word 42 - .word 80 - .word 55 - .word 19 - .word 17 - .word 10 - .word 88 - .word 14 - .word 58 - .word 19 - .word 6 - .word 77 - .word 17 - .word 77 - .word 73 - .word 79 - .word 22 - .word 15 - .word 58 - .word 94 - .word 83 - .word 45 - .word 55 - .word 68 - .word 20 - .word 43 - .word 68 - .word 63 - .word 30 - .word 51 - .word 49 - .word 39 - .word 97 - .word 3 - .word 58 - .word 13 - .word 80 - .word 45 - .word 27 - .word 3 - .word 31 - .word 100 - .word 80 - .word 48 - .word 76 - .word 52 - .word 93 - .word 64 - .word 33 - .word 50 - .word 24 - .word 82 - .word 61 - .word 45 - .word 15 - .word 82 - .word 89 - .word 49 - .word 10 - .word 85 - .word 100 - .word 59 - .word 23 - .word 96 - .word 28 - .word 81 - .word 75 - .word 7 - .word 93 - .word 68 - .word 10 - .word 90 - .word 34 - .word 56 - .word 3 - .word 76 - .word 74 - .word 97 - .word 6 - .word 73 - .word 12 - .word 30 - .word 20 - .word 40 - .word 75 - .word 35 - .word 88 - .word 29 - .word 85 - .word 64 - .word 14 - .word 50 - .word 22 - .word 37 - .word 12 - .word 16 - .word 85 - .word 87 - .word 23 - .word 77 - .word 21 - .word 100 - .word 66 - .word 55 - .word 21 - .word 35 - .word 30 - .word 95 - .word 31 - .word 2 - .word 33 - .word 10 - .word 32 - .word 53 - .word 16 - .word 74 - .word 54 - .word 70 - .word 69 - .word 38 - .word 33 - .word 83 - .word 55 - .word 55 - .word 87 - .word 67 - .word 71 - .word 71 - .word 19 - .word 60 - .word 13 - .word 40 - .word 25 - .word 45 - .word 61 - .word 46 - .word 80 - .word 58 - .word 6 - .word 78 - .word 60 - .word 39 - .word 88 - .word 93 - .word 58 - .word 70 - .word 32 - .word 11 - .word 39 - .word 0 - .word 16 - .word 72 - .word 50 - .word 71 - .word 93 - .word 36 - .word 37 - .word 29 - .word 6 - .word 56 - .word 55 - .word 19 - .word 63 - .word 80 - .word 64 - .word 23 - .word 25 - .word 43 - .word 81 - .word 98 - .word 87 - .word 41 - .word 2 - .word 40 - .word 100 - .word 60 - .word 9 - .word 31 - .word 37 - .word 14 - .word 98 - .word 53 - .word 86 - .word 47 - .word 90 - .word 44 - .word 83 - .word 26 - .word 73 - .word 55 - .word 49 - .word 27 - .word 40 - .word 11 - .word 73 - .word 70 - .word 0 - .word 64 - .word 13 - .word 82 - .word 61 - .word 66 - .word 89 - .word 29 - .word 6 - .word 88 - .word 89 - .word 15 - .word 85 - .word 93 - .word 30 - .word 82 - .word 11 - .word 82 - .word 96 - .word 1 - .word 26 - .word 78 - .word 27 - .word 65 - .word 100 - .word 42 - .word 93 - .word 39 - .word 53 - .word 31 - .word 9 - .word 54 - .word 96 - .word 89 - .word 1 - .word 22 - .word 54 - .word 90 - .word 52 - .word 60 - .word 43 - .word 6 - .word 42 - .word 27 - .word 99 - .word 72 - .word 75 - .word 10 - .word 19 - .word 70 - .word 11 - .word 45 - .word 14 - .word 4 - .word 10 - .word 13 - .word 47 - .word 69 - .word 52 - .word 66 - .word 100 - .word 27 - .word 86 - .word 61 - .word 15 - .word 53 - .word 84 - .word 36 - .word 42 - .word 35 - .word 96 - .word 85 - .word 41 - .word 37 - .word 78 - .word 40 - .word 75 - .word 53 - .word 16 - .word 95 - .word 22 - .word 94 - .word 5 - .word 36 - .word 98 - .word 15 - .word 15 - .word 10 - .word 50 - .word 34 - .word 77 - .word 16 - .word 61 - .word 28 - .word 77 - .word 43 - .word 82 - .word 60 - .word 79 - .word 90 - .word 95 - .word 74 - .word 41 - .word 2 - .word 78 - .word 18 - .word 8 - .word 18 - .word 71 - .word 24 - .word 12 - .word 60 - .word 17 - .word 85 - .word 62 - .word 81 - .word 66 - .word 78 - .word 92 - .word 16 - .word 11 - .word 34 - .word 32 - .word 38 - .word 28 - .word 75 - .word 81 - .word 9 - .word 1 - .word 59 - .word 66 - .word 62 - .word 100 - .word 6 - .word 64 - .word 43 - .word 24 - .word 72 - .word 61 - .word 62 - .word 62 - .word 40 - .word 21 - .word 79 - .word 24 - .word 49 - .word 26 - .word 90 - .word 26 - .word 84 - .word 72 - .word 3 - .word 84 - .word 70 - .word 8 - .word 11 - .word 45 - .word 89 - .word 88 - .word 46 - .word 14 - .word 53 - .word 74 - .word 80 - .word 59 - .word 38 - .word 89 - .word 83 - .word 9 - .word 15 - .word 10 - .word 38 - .word 55 - .word 31 - .word 83 - .word 45 - .word 81 - .word 8 - .word 1 - .word 73 - .word 92 - .word 73 - .word 43 - .word 75 - .word 9 - .word 51 - .word 53 - .word 54 - .word 5 - .word 40 - .word 66 - .word 86 - .word 59 - .word 39 - .word 31 - .word 17 - .word 43 - .word 19 - .word 66 - .word 19 - .word 1 - .word 77 - .word 57 - .word 22 - .word 74 - .word 39 - .word 68 - .word 20 - .word 14 - .word 35 - .word 60 - .word 5 - .word 7 - .word 2 - .word 47 - .word 16 - .word 19 - .word 66 - .word 36 - .word 91 - .word 5 - .word 68 - .word 43 - .word 30 - .word 74 - .word 40 - .word 47 - .word 83 - .word 26 - .word 79 - .word 1 - .word 27 - .word 21 - .word 24 - .word 49 - .word 96 - .word 64 - .word 83 - .word 82 - .word 78 - .word 17 - .word 41 - .word 49 - .word 92 - .word 9 - .word 62 - .word 74 - .word 28 - .word 27 - .word 77 - .word 86 - .word 99 - .word 44 - .word 95 - .word 28 - .word 84 - .word 34 - .word 41 - .word 33 - .word 60 - .word 20 - .word 34 - .word 87 - .word 41 - .word 59 - .word 36 - .word 2 - .word 89 - .word 85 - .word 85 - .word 32 - .word 2 - .word 25 - .word 47 - .word 94 - .word 35 - .word 9 - .word 67 - .word 29 - .word 2 - .word 43 - .word 81 - .word 1 - .word 54 - .word 75 - .word 96 - .word 3 - .word 9 - .word 37 - .word 36 - .word 35 - .word 23 - .word 37 - .word 22 - .word 30 - .word 62 - .word 24 - .word 33 - .word 50 - .word 8 - .word 84 - .word 48 - .word 77 - .word 8 - .word 95 - .word 70 - .word 9 - .word 70 - .word 37 - .word 5 - .word 73 - .word 46 - .word 86 - .word 74 - .word 100 - .word 27 - .word 35 - .word 70 - .word 2 - .word 72 - .word 5 - .word 37 - .word 95 - .word 42 - .word 25 - .word 25 - .word 3 - .word 49 - .word 24 - .word 19 - .word 24 - .word 7 - .word 67 - .word 0 - .word 82 - .word 28 - .word 71 - .word 92 - .word 98 - .word 74 - .word 63 - .word 70 - .word 86 - .word 14 - .word 9 - .word 52 - .word 41 - .word 45 - .word 21 - .word 43 - .word 83 - .word 93 - .word 47 - .word 44 - .word 35 - .word 72 - .word 35 - .word 4 - .word 88 - .word 59 - .word 91 - .word 11 - .word 32 - .word 57 - .word 11 - .word 13 - .word 51 - .word 48 - .word 71 - .word 49 - .word 88 - .word 33 - .word 85 - .word 40 - .word 48 - .word 61 - .word 92 - .word 55 - .word 5 - .word 79 - .word 65 - .word 54 - .word 71 - .word 11 - .word 98 - .word 72 - .word 83 - .word 32 - .word 43 - .word 70 - .word 57 - .word 33 - .word 47 - .word 89 - .word 56 - .word 25 - .word 69 - .word 7 - .word 73 - .word 39 - .word 56 - .word 27 - .word 39 - .word 6 - .word 67 - .word 53 - .word 67 - .word 24 - .word 74 - .word 38 - .word 2 - .word 38 - .word 93 - .word 73 - .word 49 - .word 56 - .word 11 - .word 99 - .word 89 - .word 54 - .word 34 - .word 11 - .word 87 - .word 48 - .word 67 - .word 42 - .word 73 - .word 35 - .word 49 - .word 11 - .word 40 - .word 71 - .word 4 - .word 45 - .word 78 - .word 71 - .word 98 - .word 10 - .word 95 - .word 38 - .word 49 - .word 63 - .word 76 - .word 41 - .word 36 - .word 92 - .word 97 - .word 47 - .word 56 - .word 51 - .word 0 - .word 56 - .word 63 - .word 53 - .word 3 - .word 29 - .word 95 - .word 76 - .word 30 - .word 44 - .word 54 - .word 70 - .word 81 - .word 58 - .word 82 - .word 58 - .word 96 - .word 45 - .word 69 - .word 56 - .word 83 - .word 84 - .word 19 - .word 59 - .word 24 - .word 21 - .word 16 - .word 87 - .word 34 - .word 72 - .word 4 - .word 0 - .word 27 - .word 33 - .word 53 - .word 31 - .word 28 - .word 47 - .word 73 - .word 58 - .word 57 - .word 26 - .word 94 - .word 38 - .word 85 - .word 75 - .word 62 - .word 80 - .word 87 - .word 97 - .word 35 - .word 69 - .word 80 - .word 20 - .word 27 - .word 3 - .word 41 - .word 43 - .word 57 - .word 75 - .word 81 - .word 27 - .word 75 - .word 8 - .word 60 - .word 27 - .word 5 - .word 88 - .word 41 - .word 78 - .word 11 - .word 98 - .word 71 - .word 71 - .word 1 - .word 55 - .word 12 - .word 64 - .word 0 - .word 99 - .word 60 - .word 1 - .word 67 - .word 40 - .word 22 - .word 61 - .word 9 - .word 63 - .word 70 - .word 32 - .word 4 - .word 51 - .word 59 - .word 79 - .word 25 - .word 18 - .word 73 - .word 30 - .word 72 - .word 13 - .word 7 - .word 49 - .word 77 - .word 78 - .word 87 - .word 79 - .word 99 - .word 99 - .word 42 - .word 65 - .word 63 - .word 68 - .word 67 - .word 96 - .word 7 - .word 55 - .word 56 - .word 84 - .word 84 - .word 93 - .word 15 - .word 88 - .word 43 - .word 75 - .word 33 - .word 34 - .word 59 - .word 72 - .word 64 - .word 98 - .word 85 - .word 37 - .word 12 - .word 27 - .word 82 - .word 99 - .word 5 - .word 80 - .word 63 - .word 13 - .word 11 - .word 92 - .word 48 - .word 44 - .word 88 - .word 55 - .word 99 - .word 9 - .word 4 - .word 48 - .word 1 - .word 20 - .word 2 - .word 10 - .word 61 - .word 1 - .word 44 - .word 86 - .word 73 - .word 74 - .word 83 - .word 23 - .word 11 - .word 62 - .word 50 - .word 93 - .word 26 - .word 22 - .word 38 - .word 90 - .word 1 - .word 15 - .word 47 - .word 49 - .word 59 - .word 34 - .word 71 - .word 23 - .word 44 - .word 75 - .word 38 - .word 11 - .word 61 - .word 40 - .word 22 - .word 21 - .word 41 - .word 32 - .word 7 - .word 13 - .word 6 - .word 56 - .word 36 - .word 84 - .word 17 - .word 52 - .word 76 - .word 44 - .word 74 - .word 80 - .word 100 - .word 42 - .word 96 - .word 46 - .word 91 - .word 20 - .word 81 - .word 27 - .word 10 - .word 91 - .word 2 - .word 48 - .word 1 - .word 29 - .word 88 - .word 90 - .word 51 - .word 95 - .word 22 - .word 58 - .word 7 - .word 95 - .word 13 - .word 9 - .word 78 - .word 31 - .word 61 - .word 19 - .word 41 - .word 1 - .word 65 - .word 40 - .word 43 - .word 26 - .word 86 - .word 100 - .word 47 - .word 32 - .word 94 - .word 23 - .word 22 - .word 62 - .word 71 - .word 91 - .word 91 - .word 58 - .word 80 - .word 41 - .word 18 - .word 68 - .word 65 - .word 25 - .word 62 - .word 79 - .word 0 - .word 5 - .word 76 - .word 27 - .word 24 - .word 83 - .word 28 - .word 56 - .word 22 - .word 37 - .word 82 - .word 74 - .word 3 - .word 95 - .word 6 - .word 97 - .word 17 - .word 95 - .word 24 - .word 54 - .word 85 - .word 14 - .word 78 - .word 31 - .word 56 - .word 96 - .word 99 - .word 20 - .word 87 - .word 27 - .word 65 - .word 87 - .word 32 - .word 6 - .word 14 - .word 23 - .word 89 - .word 8 - .word 45 - .word 77 - .word 12 - .word 26 - .word 51 - .word 82 - .word 88 - .word 23 - .word 44 - .word 71 - .word 17 - .word 68 - .word 25 - .word 69 - .word 82 - .word 2 - .word 100 - .word 3 - .word 99 - .word 64 - .word 91 - .word 85 - .word 91 - .word 21 - .word 38 - .word 90 - .word 28 - .word 52 - .word 79 - .word 83 - .word 26 - .word 23 - .word 60 - .word 38 - .word 49 - .word 10 - .word 86 - .word 2 - .word 33 - .word 29 - .word 74 - .word 16 - .word 97 - .word 65 - .word 51 - .word 45 - .word 67 - .word 16 - .word 48 - .word 31 - .word 81 - .word 4 - .word 16 - .word 37 - .word 26 - .word 20 - .word 93 - .word 20 - .word 38 - .word 71 - .word 2 - .word 64 - .word 94 - .word 62 - .word 69 - .word 9 - .word 72 - .word 54 - .word 11 - .word 71 - .word 84 - .word 51 - .word 54 - .word 80 - .word 15 - .word 4 - .word 24 - .word 83 - .word 88 - .word 39 - .word 80 - .word 68 - .word 43 - .word 62 - .word 71 - .word 35 - .word 82 - .word 64 - .word 55 - .word 19 - .word 0 - .word 58 - .word 84 - .word 95 - .word 19 - .word 18 - .word 3 - .word 58 - .word 72 - .word 81 - .word 95 - .word 55 - .word 32 - .word 14 - .word 1 - .word 47 - .word 19 - .word 92 - .word 96 - .word 6 - .word 30 - .word 76 - .word 40 - .word 40 - .word 37 - .word 77 - .word 75 - .word 19 - .word 6 - .word 30 - .word 38 - .word 7 - .word 54 - .word 88 - .word 68 - .word 73 - .word 5 - .word 71 - .word 97 - .word 78 - .word 51 - .word 58 - .word 99 - .word 49 - .word 72 - .word 66 - .word 97 - .word 57 - .word 58 - .word 58 - .word 63 - .word 54 - .word 33 - .word 69 - .word 60 - .word 37 - .word 12 - .word 1 - .word 56 - .word 18 - .word 31 - .word 60 - .word 92 - .word 51 - .word 14 - .word 59 - .word 90 - .word 19 - .word 29 - .word 87 - .word 63 - .word 47 - .word 10 - .word 28 - .word 96 - .word 82 - .word 94 - .word 58 - .word 39 - .word 17 - .word 16 - .word 68 - .word 38 - .word 15 - .word 3 - .word 64 - .word 52 - .word 15 - .word 65 - .word 74 - .word 100 - .word 62 - .word 0 - .word 92 - .word 12 - .word 14 - .word 50 - .word 2 - .word 33 - .word 46 - .word 55 - .word 63 - .word 59 - .word 65 - .word 91 - .word 20 - .word 46 - .word 50 - .word 79 - .word 51 - .word 34 - .word 61 - .word 19 - .word 72 - .word 76 - .word 89 - .word 35 - .word 95 - .word 3 - .word 67 - .word 68 - .word 69 - .word 28 - .word 68 - .word 60 - .word 41 - .word 82 - .word 77 - .word 43 - .word 82 - .word 22 - .word 98 - .word 44 - .word 47 - .word 28 - .word 0 - .word 67 - .word 74 - .word 50 - .word 11 - .word 92 - .word 84 - .word 72 - .word 77 - .word 21 - .word 14 - .word 65 - .word 23 - .word 8 - .word 34 - .word 90 - .word 42 - .word 2 - .word 84 - .word 10 - .word 63 - .word 24 - .word 58 - .word 5 - .word 33 - .word 5 - .word 94 - .word 97 - .word 15 - .word 40 - .word 24 - .word 15 - .word 6 - .word 65 - .word 32 - .word 18 - .word 56 - .word 82 - .word 56 - .word 32 - .word 70 - .word 70 - .word 97 - .word 93 - .word 78 - .word 30 - .word 48 - .word 87 - .word 99 - .word 31 - .word 97 - .word 27 - .word 22 - .word 20 - .word 32 - .word 55 - .word 93 - .word 25 - .word 52 - .word 7 - .word 31 - .word 42 - .word 90 - .word 4 - .word 6 - .word 88 - .word 89 - .word 62 - .word 35 - .word 44 - .word 60 - .word 4 - .word 81 - .word 56 - .word 63 - .word 24 - .word 52 - .word 10 - .word 10 - .word 17 - .word 8 - .word 73 - .word 44 - .word 30 - .word 94 - .word 77 - .word 51 - .word 86 - .word 68 - .word 69 - .word 59 - .word 66 - .word 11 - .word 48 - .word 70 - .word 84 - .word 1 - .word 58 - .word 12 - .word 37 - .word 68 - .word 72 - .word 41 - .word 48 - .word 95 - .word 71 - .word 73 - .word 12 - .word 47 - .word 83 - .word 29 - .word 55 - .word 56 - .word 74 - .word 51 - .word 15 - .word 16 - .word 2 - .word 67 - .word 50 - .word 71 - .word 92 - .word 15 - .word 82 - .word 6 - .word 51 - .word 66 - .word 7 - .word 75 - .word 44 - .word 44 - .word 43 - .word 15 - .word 52 - .word 57 - .word 9 - .word 22 - .word 96 - .word 89 - .word 35 - .word 79 - .word 17 - .word 91 - .word 0 - .word 57 - .word 7 - .word 82 - .word 73 - .word 9 - .word 14 - .word 90 - .word 81 - .word 5 - .word 4 - .word 28 - .word 11 - .word 22 - .word 60 - .word 19 - .word 97 - .word 3 - .word 29 - .word 5 - .word 86 - .word 81 - .word 63 - .word 61 - .word 69 - .word 58 - .word 49 - .word 71 - .word 2 - .word 67 - .word 27 - .word 69 - .word 90 - .word 34 - .word 50 - .word 29 - .word 44 - .word 64 - .word 18 - .word 91 - .word 36 - .word 89 - .word 85 - .word 47 - .word 10 - .word 45 - .word 32 - .word 7 - .word 14 - .word 62 - .word 12 - .word 100 - .word 8 - .word 41 - .word 61 - .word 44 - .word 100 - .word 9 - .word 14 - .word 68 - .word 42 - .word 41 - .word 37 - .word 99 - .word 75 - .word 87 - .word 27 - .word 85 - .word 17 - .word 45 - .word 75 - .word 53 - .word 33 - .word 26 - .word 66 - .word 10 - .word 71 - .word 99 - .word 84 - .word 85 - .word 60 - .word 62 - .word 51 - .word 68 - .word 3 - .word 11 - .word 11 - .word 69 - .word 87 - .word 92 - .word 36 - .word 96 - .word 32 - .word 39 - .word 94 - .word 74 - .word 93 - .word 87 - .word 58 - .word 9 - .word 31 - .word 100 - .word 28 - .word 30 - .word 25 - .word 94 - .word 6 - .word 62 - .word 92 - .word 90 - .word 12 - .word 17 - .word 52 - .word 29 - .word 86 - .word 55 - .word 40 - .word 63 - .word 90 - .word 94 - .word 21 - .word 92 - .word 55 - .word 53 - .word 31 - .word 14 - .word 93 - .word 23 - .word 0 - .word 17 - .word 99 - .word 98 - .word 16 - .word 26 - .word 27 - .word 7 - .word 86 - .word 34 - .word 35 - .word 78 - .word 90 - .word 13 - .word 95 - .word 41 - .word 43 - .word 46 - .word 62 - .word 49 - .word 76 - .word 51 - .word 42 - .word 97 - .word 9 - .word 63 - .word 15 - .word 40 - .word 77 - .word 8 - .word 63 - .word 43 - .word 25 - .word 61 - .word 40 - .word 7 - .word 53 - .word 68 - .word 81 - .word 38 - .word 68 - .word 82 - .word 82 - .word 57 - .word 95 - .word 43 - .word 65 - .word 37 - .word 55 - .word 93 - .word 87 - .word 30 - .word 10 - .word 95 - .word 93 - .word 19 - .word 58 - .word 75 - .word 59 - .word 0 - .word 83 - .word 88 - .word 44 - .word 74 - .word 14 - .word 50 - .word 47 - .word 67 - .word 17 - .word 94 - .word 71 - .word 51 - .word 75 - .word 53 - .word 75 - .word 69 - .word 96 - .word 5 - .word 73 - .word 16 - .word 98 - .word 59 - .word 13 - .word 7 - .word 19 - .word 5 - .word 93 - .word 43 - .word 80 - .word 17 - .word 44 - .word 28 - .word 4 - .word 54 - .word 68 - .word 18 - .word 3 - .word 14 - .word 51 - .word 88 - .word 7 - .word 22 - .word 4 - .word 48 - .word 41 - .word 45 - .word 17 - .word 2 - .word 50 - .word 90 - .word 18 - .word 14 - .word 14 - .word 31 - .word 88 - .word 33 - .word 3 - .word 81 - .word 77 - .word 49 - .word 98 - .word 87 - .word 44 - .word 2 - .word 6 - .word 11 - .word 87 - .word 76 - .word 93 - .word 4 - .word 63 - .word 66 - .word 26 - .word 34 - .word 14 - .word 33 - .word 79 - .word 98 - .word 35 - .word 29 - .word 53 - .word 19 - .word 43 - .word 67 - .word 51 - .word 30 - .word 66 - .word 20 - .word 77 - .word 8 - .word 69 - .word 75 - .word 61 - .word 79 - .word 43 - .word 33 - .word 91 - .word 96 - .word 9 - .word 49 - .word 100 - .word 38 - .word 14 - .word 25 - .word 72 - .word 28 - .word 58 - .word 51 - .word 92 - .word 59 - .word 46 - .word 44 - .word 79 - .word 55 - .word 77 - .word 96 - .word 51 - .word 9 - .word 15 - .word 28 - .word 17 - .word 50 - .word 69 - .word 45 - .word 29 - .word 11 - .word 78 - .word 86 - .word 6 - .word 53 - .word 34 - .word 73 - .word 92 - .word 48 - .word 98 - .word 29 - .word 43 - .word 22 - .word 46 - .word 34 - .word 47 - .word 92 - .word 79 - .word 25 - .word 12 - .word 55 - .word 87 - .word 64 - .word 64 - .word 68 - .word 58 - .word 48 - .word 18 - .word 93 - .word 59 - .word 13 - .word 70 - .word 2 - .word 99 - .word 76 - .word 56 - .word 32 - .word 14 - .word 13 - .word 46 - .word 12 - .word 42 - .word 89 - .word 0 - .word 89 - .word 23 - .word 13 - .word 46 - .word 1 - .word 5 - .word 59 - .word 22 - .word 92 - .word 89 - .word 53 - .word 60 - .word 12 - .word 67 - .word 44 - .word 4 - .word 92 - .word 57 - .word 74 - .word 94 - .word 55 - .word 15 - .word 15 - .word 53 - .word 30 - .word 28 - .word 99 - .word 8 - .word 71 - .word 88 - .word 75 - .word 59 - .word 77 - .word 88 - .word 4 - .word 44 - .word 93 - .word 29 - .word 66 - .word 51 - .word 17 - .word 85 - .word 10 - .word 96 - .word 17 - .word 54 - .word 100 - .word 8 - .word 77 - .word 73 - .word 2 - .word 31 - .word 89 - .word 17 - .word 50 - .word 85 - .word 46 - .word 48 - .word 93 - .word 83 - .word 35 - .word 67 - .word 7 - .word 11 - .word 54 - .word 78 - .word 21 - .word 13 - .word 7 - .word 88 - .word 64 - .word 91 - .word 38 - .word 74 - .word 87 - .word 56 - .word 94 - .word 86 - .word 64 - .word 70 - .word 25 - .word 32 - .word 67 - .word 80 - .word 50 - .word 16 - .word 64 - .word 62 - .word 30 - .word 56 - .word 10 - .word 32 - .word 89 - .word 17 - .word 9 - .word 8 - .word 95 - .word 31 - .word 21 - .word 68 - .word 18 - .word 85 - .word 59 - .word 22 - .word 24 - .word 11 - .word 78 - .word 84 - .word 97 - .word 42 - .word 19 - .word 88 - .word 40 - .word 86 - .word 67 - .word 90 - .word 68 - .word 30 - .word 17 - .word 99 - .word 52 - .word 27 - .word 30 - .word 40 - .word 44 - .word 5 - .word 49 - .word 5 - .word 36 - .word 70 - .word 73 - .word 20 - .word 21 - .word 31 - .word 43 - .word 11 - .word 42 - .word 20 - .word 96 - .word 5 - .word 28 - .word 14 - .word 93 - .word 69 - .word 67 - .word 26 - .word 24 - .word 34 - .word 56 - .word 8 - .word 99 - .word 75 - .word 35 - .word 95 - .word 14 - .word 46 - .word 0 - .word 29 - .word 51 - .word 36 - .word 66 - .word 23 - .word 57 - .word 87 - .word 21 - .word 100 - .word 98 - .word 29 - .word 86 - .word 59 - .word 0 - .word 81 - .word 74 - .word 60 - .word 15 - .word 40 - .word 86 - .word 39 - .word 40 - .word 7 - .word 47 - .word 5 - .word 82 - .word 49 - .word 100 - .word 63 - .word 95 - .word 66 - .word 92 - .word 11 - .word 2 - .word 57 - .word 0 - .word 25 - .word 9 - .word 21 - .word 91 - .word 74 - .word 17 - .word 76 - .word 32 - .word 17 - .word 22 - .word 72 - .word 43 - .word 37 - .word 78 - .word 28 - .word 77 - .word 18 - .word 36 - .word 90 - .word 90 - .word 84 - .word 38 - .word 89 - .word 46 - .word 99 - .word 21 - .word 4 - .word 9 - .word 90 - .word 27 - .word 10 - .word 14 - .word 3 - .word 98 - .word 4 - .word 77 - .word 14 - .word 46 - .word 75 - .word 99 - .word 35 - .word 47 - .word 41 - .word 72 - .word 24 - .word 70 - .word 48 - .word 8 - .word 72 - .word 4 - .word 98 - .word 55 - .word 42 - .word 53 - .word 68 - .word 7 - .word 74 - .word 72 - .word 16 - .word 63 - .word 99 - .word 26 - .word 43 - .word 1 - .word 24 - .word 13 - .word 44 - .word 4 - .word 25 - .word 19 - .word 2 - .word 60 - .word 32 - .word 10 - .word 32 - .word 22 - .word 80 - .word 46 - .word 98 - .word 17 - .word 50 - .word 95 - .word 38 - .word 59 - .word 13 - .word 5 - .word 66 - .word 87 - .word 77 - .word 48 - .word 15 - .word 42 - .word 41 - .word 58 - .word 9 - .word 31 - .word 71 - .word 54 - .word 35 - .word 97 - .word 39 - .word 4 - .word 56 - .word 37 - .word 14 - .word 88 - .word 59 - .word 60 - .word 0 - .word 56 - .word 77 - .word 50 - .word 17 - .word 81 - .word 75 - .word 30 - .word 87 - .word 6 - .word 84 - .word 29 - .word 55 - .word 99 - .word 37 - .word 96 - .word 57 - .word 47 - .word 26 - .word 94 - .word 67 - .word 27 - .word 56 - .word 5 - .word 98 - .word 12 - .word 8 - .word 11 - .word 66 - .word 67 - .word 37 - .word 66 - .word 90 - .word 80 - .word 83 - .word 6 - .word 61 - .word 23 - .word 2 - .word 47 - .word 30 - .word 86 - .word 42 - .word 51 - .word 51 - .word 80 - .word 46 - .word 74 - .word 26 - .word 38 - .word 67 - .word 59 - .word 31 - .word 23 - .word 64 - .word 29 - .word 1 - .word 38 - .word 6 - .word 33 - .word 4 - .word 44 - .word 100 - .word 60 - .word 90 - .word 48 - .word 32 - .word 50 - .word 71 - .word 1 - .word 63 - .word 67 - .word 87 - .word 5 - .word 17 - .word 3 - .word 51 - .word 29 - .word 77 - .word 77 - .word 33 - .word 10 - .word 35 - .word 65 - .word 100 - .word 65 - .word 60 - .word 0 - .word 2 - .word 32 - .word 33 - .word 73 - .word 42 - .word 99 - .word 100 - .word 32 - .word 12 - .word 31 - .word 48 - .word 84 - .word 99 - .word 11 - .word 50 - .word 86 - .word 83 - .word 34 - .word 55 - .word 33 - .word 63 - .word 32 - .word 76 - .word 97 - .word 8 - .word 77 - .word 27 - .word 7 - .word 7 - .word 53 - .word 74 - .word 76 - .word 85 - .word 73 - .word 14 - .word 27 - .word 72 - .word 13 - .word 59 - .word 50 - .word 11 - .word 73 - .word 33 - .word 9 - .word 84 - .word 50 - .word 61 - .word 32 - .word 84 - .word 16 - .word 31 - .word 12 - .word 14 - .word 6 - .word 8 - .word 89 - .word 49 - .word 1 - .word 96 - .word 56 - .word 54 - .word 35 - .word 31 - .word 39 - .word 7 - .word 46 - .word 32 - .word 45 - .word 59 - .word 57 - .word 96 - .word 36 - .word 29 - .word 95 - .word 46 - .word 80 - .word 10 - .word 73 - .word 11 - .word 94 - .word 89 - .word 9 - .word 73 - .word 69 - .word 15 - .word 47 - .word 57 - .word 31 - .word 49 - .word 18 - .word 87 - .word 69 - .word 53 - .word 18 - .word 74 - .word 27 - .word 30 - .word 5 - .word 38 - .word 55 - .word 28 - .word 33 - .word 92 - .word 58 - .word 95 - .word 3 - .word 37 - .word 4 - .word 76 - .word 14 - .word 65 - .word 31 - .word 23 - .word 37 - .word 66 - .word 5 - .word 50 - .word 23 - .word 36 - .word 99 - .word 41 - .word 22 - .word 68 - .word 61 - .word 6 - .word 7 - .word 88 - .word 2 - .word 13 - .word 92 - .word 58 - .word 41 - .word 92 - .word 15 - .word 65 - .word 86 - .word 18 - .word 1 - .word 56 - .word 60 - .word 83 - .word 87 - .word 57 - .word 5 - .word 90 - .word 23 - .word 10 - .word 40 - .word 12 - .word 12 - .word 38 - .word 19 - .word 35 - .word 72 - .word 80 - .word 7 - .word 80 - .word 33 - .word 10 - .word 59 - .word 25 - .word 34 - .word 66 - .word 16 - .word 49 - .word 31 - .word 68 - .word 33 - .word 99 - .word 23 - .word 59 - .word 47 - .word 10 - .word 16 - .word 53 - .word 100 - .word 5 - .word 29 - .word 39 - .word 17 - .word 42 - .word 44 - .word 2 - .word 43 - .word 82 - .word 49 - .word 16 - .word 27 - .word 82 - .word 93 - .word 86 - .word 73 - .word 26 - .word 18 - .word 55 - .word 75 - .word 49 - .word 89 - .word 7 - .word 13 - .word 79 - .word 33 - .word 61 - .word 55 - .word 15 - .word 80 - .word 20 - .word 20 - .word 75 - .word 60 - .word 3 - .word 83 - .word 70 - .word 5 - .word 92 - .word 17 - .word 54 - .word 8 - .word 45 - .word 2 - .word 0 - .word 30 - .word 41 - .word 27 - .word 14 - .word 63 - .word 68 - .word 29 - .word 51 - .word 42 - .word 43 - .word 96 - .word 75 - .word 70 - .word 50 - .word 90 - .word 49 - .word 71 - .word 9 - .word 90 - .word 97 - .word 79 - .word 73 - .word 66 - .word 50 - .word 64 - .word 83 - .word 4 - .word 72 - .word 27 - .word 73 - .word 39 - .word 24 - .word 80 - .word 32 - .word 4 - .word 42 - .word 100 - .word 34 - .word 60 - .word 41 - .word 43 - .word 55 - .word 82 - .word 12 - .word 5 - .word 71 - .word 27 - .word 42 - .word 46 - .word 16 - .word 38 - .word 24 - .word 89 - .word 3 - .word 41 - .word 19 - .word 52 - .word 11 - .word 57 - .word 46 - .word 84 - .word 96 - .word 36 - .word 29 - .word 27 - .word 40 - .word 72 - .word 94 - .word 40 - .word 98 - .word 0 - .word 83 - .word 18 - .word 83 - .word 95 - .word 90 - .word 53 - .word 88 - .word 31 - .word 66 - .word 71 - .word 69 - .word 56 - .word 59 - .word 38 - .word 97 - .word 44 - .word 57 - .word 7 - .word 1 - .word 2 - .word 57 - .word 97 - .word 4 - .word 87 - .word 91 - .word 10 - .word 24 - .word 84 - .word 51 - .word 21 - .word 84 - .word 33 - .word 39 - .word 66 - .word 95 - .word 96 - .word 86 - .word 82 - .word 26 - .word 51 - .word 52 - .word 96 - .word 73 - .word 78 - .word 33 - .word 70 - .word 21 - .word 90 - .word 77 - .word 89 - .word 58 - .word 0 - .word 86 - .word 28 - .word 87 - .word 42 - .word 39 - .word 10 - .word 25 - .word 56 - .word 98 - .word 75 - .word 89 - .word 2 - .word 7 - .word 49 - .word 98 - .word 59 - .word 98 - .word 24 - .word 76 - .word 15 - .word 86 - .word 48 - .word 59 - .word 18 - .word 17 - .word 81 - .word 75 - .word 61 - .word 69 - .word 99 - .word 61 - .word 20 - .word 27 - .word 13 - .word 62 - .word 32 - .word 90 - .word 53 - .word 88 - .word 87 - .word 95 - .word 42 - .word 89 - .word 1 - .word 58 - .word 53 - .word 60 - .word 55 - .word 43 - .word 1 - .word 70 - .word 28 - .word 49 - .word 29 - .word 12 - .word 33 - .word 76 - .word 53 - .word 60 - .word 10 - .word 52 - .word 87 - .word 98 - .word 45 - .word 100 - .word 25 - .word 43 - .word 89 - .word 79 - .word 97 - .word 41 - .word 73 - .word 4 - .word 96 - .word 40 - .word 62 - .word 48 - .word 66 - .word 16 - .word 91 - .word 67 - .word 53 - .word 85 - .word 82 - .word 48 - .word 98 - .word 14 - .word 90 - .word 50 - .word 74 - .word 66 - .word 68 - .word 26 - .word 63 - .word 12 - .word 25 - .word 89 - .word 55 - .word 80 - .word 33 - .word 17 - .word 20 - .word 72 - .word 22 - .word 83 - .word 11 - .word 84 - .word 30 - .word 77 - .word 67 - .word 88 - .word 9 - .word 86 - .word 72 - .word 91 - .word 33 - .word 35 - .word 72 - .word 89 - .word 86 - .word 11 - .word 54 - .word 53 - .word 38 - .word 17 - .word 32 - .word 29 - .word 72 - .word 53 - .word 76 - .word 71 - .word 71 - .word 62 - .word 42 - .word 93 - .word 44 - .word 19 - .word 76 - .word 41 - .word 62 - .word 42 - .word 28 - .word 71 - .word 27 - .word 66 - .word 27 - .word 26 - .word 1 - .word 99 - .word 14 - .word 87 - .word 10 - .word 35 - .word 5 - .word 14 - .word 52 - .word 37 - .word 43 - .word 90 - .word 91 - .word 18 - .word 60 - .word 27 - .word 81 - .word 68 - .word 19 - .word 24 - .word 87 - .word 95 - .word 31 - .word 48 - .word 3 - .word 59 - .word 18 - .word 97 - .word 92 - .word 11 - .word 90 - .word 93 - .word 10 - .word 70 - .word 45 - .word 20 - .word 4 - .word 16 - .word 34 - .word 22 - .word 54 - .word 43 - .word 11 - .word 10 - .word 62 - .word 37 - .word 37 - .word 8 - .word 4 - .word 22 - .word 99 - .word 57 - .word 83 - .word 30 - .word 4 - .word 86 - .word 55 - .word 89 - .word 49 - .word 46 - .word 0 - .word 38 - .word 38 - .word 77 - .word 74 - .word 49 - .word 97 - .word 79 - .word 66 - .word 97 - .word 0 - .word 86 - .word 5 - .word 79 - .word 62 - .word 33 - .word 15 - .word 65 - .word 41 - .word 87 - .word 87 - .word 6 - .word 9 - .word 35 - .word 2 - .word 14 - .word 21 - .word 57 - .word 69 - .word 36 - .word 3 - .word 35 - .word 40 - .word 7 - .word 11 - .word 13 - .word 23 - .word 74 - .word 92 - .word 55 - .word 36 - .word 93 - .word 40 - .word 42 - .word 37 - .word 68 - .word 75 - .word 18 - .word 32 - .word 83 - .word 71 - .word 85 - .word 89 - .word 81 - .word 19 - .word 91 - .word 61 - .word 6 - .word 13 - .word 29 - .word 8 - .word 16 - .word 65 - .word 48 - .word 91 - .word 76 - .word 62 - .word 80 - .word 16 - .word 19 - .word 34 - .word 52 - .word 78 - .word 74 - .word 94 - .word 14 - .word 7 - .word 69 - .word 33 - .word 5 - .word 17 - .word 3 - .word 56 - .word 5 - .word 84 - .word 41 - .word 62 - .word 44 - .word 48 - .word 75 - .word 40 - .word 56 - .word 58 - .word 71 - .word 71 - .word 14 - .word 12 - .word 99 - .word 94 - .word 28 - .word 17 - .word 27 - .word 81 - .word 96 - .word 67 - .word 74 - .word 76 - .word 74 - .word 8 - .word 75 - .word 45 - .word 25 - .word 79 - .word 0 - .word 97 - .word 28 - .word 41 - .word 58 - .word 39 - .word 55 - .word 100 - .word 45 - .word 11 - .word 23 - .word 15 - .word 48 - .word 37 - .word 27 - .word 46 - .word 97 - .word 56 - .word 63 - .word 90 - .word 36 - .word 24 - .word 56 - .word 76 - .word 0 - .word 96 - .word 85 - .word 41 - .word 40 - .word 9 - .word 19 - .word 6 - .word 6 - .word 14 - .word 47 - .word 30 - .word 19 - .word 2 - .word 96 - .word 64 - .word 80 - .word 18 - .word 45 - .word 27 - .word 21 - .word 72 - .word 39 - .word 17 - .word 94 - .word 1 - .word 6 - .word 96 - .word 93 - .word 28 - .word 72 - .word 59 - .word 90 - .word 56 - .word 100 - .word 96 - .word 31 - .word 86 - .word 1 - .word 3 - .word 66 - .word 15 - .word 0 - .word 85 - .word 17 - .word 96 - .word 14 - .word 63 - .word 81 - .word 59 - .word 90 - .word 1 - .word 97 - .word 28 - .word 19 - .word 57 - .word 96 - .word 92 - .word 52 - .word 54 - .word 87 - .word 23 - .word 12 - .word 76 - .word 45 - .word 79 - .word 72 - .word 43 - .word 64 - .word 39 - .word 46 - .word 29 - .word 54 - .word 12 - .word 80 - .word 37 - .word 8 - .word 60 - .word 100 - .word 89 - .word 85 - .word 55 - .word 56 - .word 47 - .word 49 - .word 75 - .word 3 - .word 45 - .word 33 - .word 56 - .word 99 - .word 19 - .word 45 - .word 78 - .word 61 - .word 91 - .word 56 - .word 99 - .word 33 - .word 86 - .word 4 - .word 45 - .word 81 - .word 58 - .word 58 - .word 60 - .word 96 - .word 32 - .word 19 - .word 61 - .word 87 - .word 70 - .word 16 - .word 42 - .word 16 - .word 65 - .word 84 - .word 20 - .word 76 - .word 83 - .word 42 - .word 41 - .word 68 - .word 87 - .word 18 - .word 28 - .word 77 - .word 40 - .word 94 - .word 76 - .word 25 - .word 98 - .word 88 - .word 5 - .word 21 - .word 11 - .word 31 - .word 16 - .word 43 - .word 16 - .word 44 - .word 29 - .word 86 - .word 60 - .word 37 - .word 1 - .word 24 - .word 20 - .word 88 - .word 67 - .word 69 - .word 29 - .word 7 - .word 36 - .word 16 - .word 25 - .word 65 - .word 59 - .word 65 - .word 24 - .word 1 - .word 56 - .word 21 - .word 89 - .word 61 - .word 42 - .word 100 - .word 58 - .word 25 - .word 8 - .word 74 - .word 69 - .word 3 - .word 25 - .word 95 - .word 40 - .word 26 - .word 85 - .word 27 - .word 81 - .word 51 - .word 96 - .word 9 - .word 58 - .word 32 - .word 25 - .word 49 - .word 63 - .word 51 - .word 80 - .word 87 - .word 52 - .word 35 - .word 74 - .word 40 - .word 62 - .word 82 - .word 5 - .word 19 - .word 73 - .word 13 - .word 59 - .word 7 - .word 16 - .word 84 - .word 1 - .word 56 - .word 77 - .word 53 - .word 49 - .word 57 - .word 3 - .word 45 - .word 66 - .word 28 - .word 43 - .word 58 - .word 77 - .word 72 - .word 8 - .word 57 - .word 58 - .word 60 - .word 92 - .word 98 - .word 66 - .word 20 - .word 79 - .word 71 - .word 39 - .word 52 - .word 84 - .word 65 - .word 59 - .word 100 - .word 48 - .word 27 - .word 21 - .word 91 - .word 80 - .word 71 - .word 47 - .word 83 - .word 82 - .word 80 - .word 10 - .word 24 - .word 37 - .word 54 - .word 62 - .word 45 - .word 10 - .word 86 - .word 71 - .word 68 - .word 83 - .word 36 - .word 88 - .word 27 - .word 6 - .word 94 - .word 79 - .word 56 - .word 58 - .word 4 - .word 55 - .word 72 - .word 98 - .word 42 - .word 63 - .word 77 - .word 12 - .word 9 - .word 25 - .word 60 - .word 89 - .word 2 - .word 50 - .word 92 - .word 56 - .word 11 - .word 2 - .word 32 - .word 97 - .word 73 - .word 100 - .word 79 - .word 75 - .word 88 - .word 73 - .word 47 - .word 47 - .word 17 - .word 2 - .word 4 - .word 21 - .word 23 - .word 42 - .word 18 - .word 66 - .word 4 - .word 61 - .word 44 - .word 81 - .word 87 - .word 71 - .word 35 - .word 89 - .word 20 - .word 27 - .word 10 - .word 32 - .word 96 - .word 42 - .word 95 - .word 69 - .word 41 - .word 40 - .word 9 - .word 95 - .word 12 - .word 23 - .word 41 - .word 29 - .word 25 - .word 11 - .word 17 - .word 15 - .word 54 - .word 1 - .word 47 - .word 24 - .word 63 - .word 57 - .word 4 - .word 49 - .word 27 - .word 40 - .word 3 - .word 48 - .word 33 - .word 13 - .word 46 - .word 95 - .word 55 - .word 40 - .word 29 - .word 96 - .word 46 - .word 39 - .word 57 - .word 58 - .word 62 - .word 98 - .word 54 - .word 53 - .word 76 - .word 71 - .word 68 - .word 29 - .word 72 - .word 81 - .word 53 - .word 34 - .word 38 - .word 24 - .word 49 - .word 65 - .word 30 - .word 52 - .word 79 - .word 29 - .word 31 - .word 24 - .word 23 - .word 86 - .word 31 - .word 53 - .word 48 - .word 77 - .word 92 - .word 4 - .word 1 - .word 19 - .word 68 - .word 55 - .word 72 - .word 9 - .word 92 - .word 6 - .word 38 - .word 63 - .word 87 - .word 58 - .word 64 - .word 24 - .word 82 - .word 79 - .word 56 - .word 78 - .word 98 - .word 34 - .word 6 - .word 28 - .word 25 - .word 29 - .word 81 - .word 22 - .word 82 - .word 28 - .word 65 - .word 39 - .word 99 - .word 66 - .word 58 - .word 32 - .word 87 - .word 97 - .word 42 - .word 78 - .word 2 - .word 46 - .word 7 - .word 55 - .word 3 - .word 71 - .word 46 - .word 51 - .word 49 - .word 1 - .word 28 - .word 46 - .word 1 - .word 34 - .word 41 - .word 26 - .word 30 - .word 21 - .word 48 - .word 11 - .word 49 - .word 80 - .word 17 - .word 13 - .word 45 - .word 75 - .word 11 - .word 99 - .word 37 - .word 53 - .word 76 - .word 39 - .word 66 - .word 83 - .word 95 - .word 35 - .word 19 - .word 40 - .word 87 - .word 69 - .word 7 - .word 81 - .word 81 - .word 8 - .word 82 - .word 21 - .word 35 - .word 11 - .word 42 - .word 49 - .word 89 - .word 57 - .word 95 - .word 5 - .word 36 - .word 40 - .word 47 - .word 14 - .word 38 - .word 84 - .word 33 - .word 80 - .word 23 - .word 99 - .word 29 - .word 84 - .word 34 - .word 48 - .word 90 - .word 87 - .word 16 - .word 97 - .word 67 - .word 64 - .word 71 - .word 48 - .word 51 - .word 72 - .word 59 - .word 60 - .word 88 - .word 48 - .word 83 - .word 82 - .word 53 - .word 86 - .word 21 - .word 66 - .word 100 - .word 25 - .word 50 - .word 32 - .word 72 - .word 39 - .word 31 - .word 0 - .word 22 - .word 65 - .word 48 - .word 78 - .word 51 - .word 31 - .word 40 - .word 84 - .word 61 - .word 10 - .word 32 - .word 11 - .word 83 - .word 57 - .word 71 - .word 70 - .word 4 - .word 20 - .word 51 - .word 24 - .word 5 - .word 39 - .word 90 - .word 4 - .word 30 - .word 5 - .word 36 - .word 1 - .word 44 - .word 33 - .word 68 - .word 66 - .word 64 - .word 16 - .word 9 - .word 81 - .word 13 - .word 49 - .word 65 - .word 74 - .word 60 - .word 97 - .word 51 - .word 42 - .word 19 - .word 89 - .word 11 - .word 24 - .word 8 - .word 28 - .word 14 - .word 13 - .word 67 - .word 70 - .word 84 - .word 64 - .word 76 - .word 86 - .word 65 - .word 19 - .word 19 - .word 100 - .word 52 - .word 83 - .word 15 - .word 61 - .word 64 - .word 95 - .word 10 - .word 95 - .word 34 - .word 70 - .word 57 - .word 85 - .word 78 - .word 76 - .word 73 - .word 55 - .word 66 - .word 47 - .word 83 - .word 80 - .word 60 - .word 16 - .word 16 - .word 9 - .word 80 - .word 92 - .word 96 - .word 10 - .word 77 - .word 14 - .word 9 - .word 28 - .word 63 - .word 91 - .word 56 - .word 93 - .word 85 - .word 32 - .word 87 - .word 18 - .word 68 - .word 43 - .word 70 - .word 45 - .word 19 - .word 42 - .word 66 - .word 85 - .word 56 - .word 48 - .word 31 - .word 82 - .word 30 - .word 47 - .word 92 - .word 9 - .word 4 - .word 87 - .word 87 - .word 81 - .word 67 - .word 96 - .word 76 - .word 29 - .word 87 - .word 31 - .word 89 - .word 37 - .word 63 - .word 75 - .word 22 - .word 97 - .word 85 - .word 92 - .word 41 - .word 70 - .word 100 - .word 73 - .word 20 - .word 55 - .word 20 - .word 51 - .word 37 - .word 17 - .word 64 - .word 28 - .word 93 - .word 68 - .word 81 - .word 79 - .word 15 - .word 47 - .word 75 - .word 91 - .word 42 - .word 27 - .word 88 - .word 30 - .word 64 - .word 16 - .word 72 - .word 52 - .word 12 - .word 56 - .word 43 - .word 19 - .word 25 - .word 43 - .word 92 - .word 45 - .word 64 - .word 78 - .word 63 - .word 0 - .word 95 - .word 26 - .word 95 - .word 54 - .word 61 - .word 75 - .word 32 - .word 76 - .word 88 - .word 73 - .word 32 - .word 30 - .word 66 - .word 86 - .word 26 - .word 97 - .word 1 - .word 98 - .word 48 - .word 80 - .word 19 - .word 92 - .word 99 - .word 10 - .word 0 - .word 56 - .word 56 - .word 64 - .word 33 - .word 85 - .word 65 - .word 95 - .word 77 - .word 59 - .word 48 - .word 3 - .word 0 - .word 46 - .word 45 - .word 88 - .word 19 - .word 77 - .word 84 - .word 51 - .word 62 - .word 10 - .word 47 - .word 29 - .word 74 - .word 96 - .word 8 - .word 94 - .word 53 - .word 73 - .word 3 - .word 53 - .word 28 - .word 25 - .word 16 - .word 62 - .word 76 - .word 47 - .word 22 - .word 53 - .word 73 - .word 70 - .word 22 - .word 73 - .word 15 - .word 68 - .word 60 - .word 0 - .word 10 - .word 44 - .word 52 - .word 73 - .word 54 - .word 65 - .word 68 - .word 94 - .word 60 - .word 77 - .word 53 - .word 79 - .word 15 - .word 23 - .word 31 - .word 44 - .word 48 - .word 14 - .word 72 - .word 91 - .word 27 - .word 94 - .word 9 - .word 100 - .word 29 - .word 31 - .word 72 - .word 44 - .word 99 - .word 32 - .word 11 - .word 9 - .word 76 - .word 29 - .word 48 - .word 96 - .word 94 - .word 15 - .word 55 - .word 20 - .word 58 - .word 8 - .word 99 - .word 40 - .word 31 - .word 97 - .word 84 - .word 45 - .word 77 - .word 55 - .word 35 - .word 3 - .word 14 - .word 44 - .word 3 - .word 43 - .word 42 - .word 75 - .word 87 - .word 40 - .word 73 - .word 64 - .word 15 - .word 14 - .word 93 - .word 29 - .word 76 - .word 53 - .word 11 - .word 31 - .word 73 - .word 69 - .word 39 - .word 37 - .word 8 - .word 70 - .word 100 - .word 58 - .word 81 - .word 76 - .word 79 - .word 16 - .word 80 - .word 93 - .word 26 - .word 49 - .word 35 - .word 68 - .word 23 - .word 89 - .word 75 - .word 63 - .word 18 - .word 56 - .word 77 - .word 11 - .word 86 - .word 53 - .word 30 - .word 97 - .word 84 - .word 2 - .word 31 - .word 89 - .word 5 - .word 6 - .word 24 - .word 5 - .word 64 - .word 4 - .word 47 - .word 43 - .word 87 - .word 26 - .word 1 - .word 13 - .word 41 - .word 3 - .word 47 - .word 65 - .word 92 - .word 88 - .word 94 - .word 9 - .word 44 - .word 70 - .word 87 - .word 29 - .word 89 - .word 16 - .word 25 - .word 72 - .word 85 - .word 56 - .word 26 - .word 57 - .word 62 - .word 50 - .word 62 - .word 93 - .word 55 - .word 8 - .word 1 - .word 7 - .word 1 - .word 2 - .word 20 - .word 42 - .word 5 - .word 34 - .word 73 - .word 63 - .word 21 - .word 66 - .word 39 - .word 31 - .word 2 - .word 25 - .word 60 - .word 91 - .word 8 - .word 51 - .word 29 - .word 59 - .word 74 - .word 55 - .word 15 - .word 1 - .word 5 - .word 77 - .word 94 - .word 26 - .word 52 - .word 95 - .word 33 - .word 19 - .word 64 - .word 20 - .word 27 - .word 35 - .word 54 - .word 0 - .word 99 - .word 41 - .word 32 - .word 37 - .word 73 - .word 34 - .word 28 - .word 99 - .word 92 - .word 2 - .word 50 - .word 20 - .word 62 - .word 23 - .word 75 - .word 77 - .word 24 - .word 46 - .word 20 - .word 85 - .word 72 - .word 38 - .word 45 - .word 72 - .word 57 - .word 75 - .word 92 - .word 84 - .word 10 - .word 11 - .word 50 - .word 75 - .word 18 - .word 83 - .word 78 - .word 91 - .word 83 - .word 72 - .word 56 - .word 74 - .word 75 - .word 72 - .word 60 - .word 36 - .word 95 - .word 1 - .word 79 - .word 85 - .word 47 - .word 99 - .word 35 - .word 19 - .word 36 - .word 47 - .word 91 - .word 59 - .word 21 - .word 48 - .word 43 - .word 31 - .word 59 - .word 59 - .word 72 - .word 77 - .word 7 - .word 49 - .word 34 - .word 91 - .word 21 - .word 56 - .word 30 - .word 96 - .word 27 - .word 57 - .word 98 - .word 88 - .word 58 - .word 76 - .word 38 - .word 4 - .word 41 - .word 74 - .word 90 - .word 43 - .word 20 - .word 46 - .word 2 - .word 7 - .word 94 - .word 11 - .word 39 - .word 18 - .word 70 - .word 77 - .word 62 - .word 78 - .word 26 - .word 62 - .word 34 - .word 47 - .word 17 - .word 30 - .word 8 - .word 10 - .word 87 - .word 72 - .word 98 - .word 44 - .word 47 - .word 1 - .word 15 - .word 54 - .word 75 - .word 4 - .word 98 - .word 61 - .word 17 - .word 100 - .word 69 - .word 10 - .word 10 - .word 74 - .word 96 - .word 46 - .word 50 - .word 23 - .word 23 - .word 42 - .word 85 - .word 23 - .word 55 - .word 68 - .word 54 - .word 29 - .word 44 - .word 40 - .word 0 - .word 41 - .word 51 - .word 14 - .word 42 - .word 66 - .word 68 - .word 84 - .word 36 - .word 31 - .word 10 - .word 53 - .word 30 - .word 45 - .word 30 - .word 6 - .word 85 - .word 25 - .word 53 - .word 1 - .word 14 - .word 42 - .word 43 - .word 65 - .word 66 - .word 65 - .word 32 - .word 86 - .word 94 - .word 42 - .word 25 - .word 95 - .word 83 - .word 42 - .word 8 - .word 91 - .word 74 - .word 42 - .word 40 - .word 10 - .word 74 - .word 51 - .word 63 - .word 70 - .word 62 - .word 59 - .word 77 - .word 47 - .word 50 - .word 96 - .word 48 - .word 64 - .word 3 - .word 57 - .word 28 - .word 35 - .word 21 - .word 26 - .word 20 - .word 15 - .word 68 - .word 12 - .word 9 - .word 16 - .word 54 - .word 84 - .word 74 - .word 28 - .word 92 - .word 13 - .word 4 - .word 65 - .word 30 - .word 33 - .word 1 - .word 93 - .word 93 - .word 78 - .word 5 - .word 42 - .word 39 - .word 53 - .word 73 - .word 42 - .word 9 - .word 0 - .word 78 - .word 98 - .word 94 - .word 98 - .word 12 - .word 61 - .word 76 - .word 88 - .word 44 - .word 30 - .word 37 - .word 17 - .word 24 - .word 28 - .word 97 - .word 28 - .word 60 - .word 27 - .word 61 - .word 27 - .word 86 - .word 53 - .word 4 - .word 91 - .word 62 - .word 9 - .word 9 - .word 34 - .word 17 - .word 85 - .word 0 - .word 61 - .word 82 - .word 94 - .word 25 - .word 60 - .word 21 - .word 0 - .word 13 - .word 65 - .word 30 - .word 50 - .word 48 - .word 54 - .word 45 - .word 44 - .word 48 - .word 71 - .word 37 - .word 9 - .word 98 - .word 89 - .word 62 - .word 68 - .word 45 - .word 23 - .word 43 - .word 54 - .word 23 - .word 60 - .word 5 - .word 24 - .word 21 - .word 87 - .word 17 - .word 12 - .word 13 - .word 4 - .word 12 - .word 26 - .word 69 - .word 9 - .word 43 - .word 83 - .word 29 - .word 88 - .word 94 - .word 78 - .word 24 - .word 30 - .word 87 - .word 21 - .word 86 - .word 14 - .word 55 - .word 30 - .word 4 - .word 98 - .word 51 - .word 27 - .word 57 - .word 56 - .word 17 - .word 44 - .word 8 - .word 35 - .word 56 - .word 21 - .word 39 - .word 69 - .word 14 - .word 75 - .word 44 - .word 57 - .word 23 - .word 73 - .word 10 - .word 16 - .word 50 - .word 34 - .word 13 - .word 2 - .word 55 - .word 99 - .word 17 - .word 9 - .word 95 - .word 21 - .word 6 - .word 45 - .word 14 - .word 29 - .word 0 - .word 32 - .word 74 - .word 9 - .word 33 - .word 96 - .word 97 - .word 38 - .word 30 - .word 10 - .word 79 - .word 74 - .word 33 - .word 2 - .word 47 - .word 43 - .word 85 - .word 63 - .word 77 - .word 98 - .word 66 - .word 98 - .word 62 - .word 83 - .word 73 - .word 57 - .word 70 - .word 45 - .word 68 - .word 50 - .word 75 - .word 69 - .word 82 - .word 14 - .word 44 - .word 81 - .word 9 - .word 6 - .word 19 - .word 40 - .word 84 - .word 64 - .word 80 - .word 16 - .word 66 - .word 26 - .word 60 - .word 51 - .word 90 - .word 36 - .word 14 - .word 55 - .word 34 - .word 43 - .word 3 - .word 73 - .word 100 - .word 73 - .word 18 - .word 67 - .word 89 - .word 93 - .word 1 - .word 37 - .word 6 - .word 11 - .word 17 - .word 82 - .word 85 - .word 2 - .word 88 - .word 68 - .word 67 - .word 68 - .word 50 - .word 99 - .word 60 - .word 9 - .word 15 - .word 49 - .word 12 - .word 30 - .word 70 - .word 12 - .word 73 - .word 73 - .word 85 - .word 38 - .word 11 - .word 2 - .word 71 - .word 67 - .word 95 - .word 39 - .word 3 - .word 67 - .word 16 - .word 20 - .word 15 - .word 0 - .word 90 - .word 69 - .word 34 - .word 22 - .word 36 - .word 85 - .word 20 - .word 63 - .word 94 - .word 36 - .word 11 - .word 72 - .word 32 - .word 48 - .word 84 - .word 71 - .word 87 - .word 69 - .word 75 - .word 65 - .word 37 - .word 11 - .word 31 - .word 99 - .word 50 - .word 34 - .word 31 - .word 33 - .word 20 - .word 46 - .word 100 - .word 76 - .word 15 - .word 34 - .word 98 - .word 17 - .word 18 - .word 18 - .word 80 - .word 78 - .word 20 - .word 58 - .word 16 - .word 18 - .word 72 - .word 100 - .word 55 - .word 58 - .word 34 - .word 96 - .word 89 - .word 72 - .word 6 - .word 86 - .word 36 - .word 23 - .word 86 - .word 67 - .word 56 - .word 6 - .word 80 - .word 21 - .word 48 - .word 61 - .word 55 - .word 46 - .word 78 - .word 39 - .word 30 - .word 24 - .word 84 - .word 50 - .word 48 - .word 100 - .word 34 - .word 19 - .word 65 - .word 89 - .word 43 - .word 100 - .word 84 - .word 32 - .word 37 - .word 56 - .word 17 - .word 73 - .word 79 - .word 3 - .word 5 - .word 0 - .word 76 - .word 85 - .word 22 - .word 23 - .word 45 - .word 43 - .word 35 - .word 23 - .word 83 - .word 65 - .word 13 - .word 32 - .word 14 - .word 61 - .word 31 - .word 14 - .word 46 - .word 96 - .word 2 - .word 89 - .word 61 - .word 52 - .word 87 - .word 64 - .word 8 - .word 4 - .word 2 - .word 53 - .word 74 - .word 8 - .word 54 - .word 15 - .word 93 - .word 42 - .word 38 - .word 4 - .word 85 - .word 40 - .word 94 - .word 67 - .word 4 - .word 6 - .word 99 - .word 86 - .word 33 - .word 96 - .word 100 - .word 79 - .word 58 - .word 69 - .word 33 - .word 85 - .word 20 - .word 20 - .word 49 - .word 95 - .word 91 - .word 17 - .word 14 - .word 64 - .word 25 - .word 68 - .word 79 - .word 85 - .word 76 - .word 83 - .word 89 - .word 60 - .word 22 - .word 82 - .word 94 - .word 27 - .word 54 - .word 58 - .word 79 - .word 87 - .word 54 - .word 78 - .word 31 - .word 78 - .word 12 - .word 64 - .word 62 - .word 100 - .word 84 - .word 10 - .word 94 - .word 74 - .word 28 - .word 7 - .word 37 - .word 19 - .word 41 - .word 82 - .word 70 - .word 16 - .word 31 - .word 58 - .word 43 - .word 19 - .word 5 - .word 36 - .word 12 - .word 59 - .word 94 - .word 91 - .word 11 - .word 13 - .word 69 - .word 42 - .word 91 - .word 81 - .word 6 - .word 53 - .word 80 - .word 90 - .word 29 - .word 40 - .word 30 - .word 23 - .word 13 - .word 33 - .word 9 - .word 21 - .word 15 - .word 79 - .word 3 - .word 12 - .word 37 - .word 46 - .word 31 - .word 8 - .word 48 - .word 44 - .word 34 - .word 42 - .word 34 - .word 45 - .word 21 - .word 69 - .word 54 - .word 12 - .word 16 - .word 60 - .word 65 - .word 96 - .word 15 - .word 60 - .word 1 - .word 45 - .word 84 - .word 82 - .word 45 - .word 93 - .word 2 - .word 60 - .word 71 - .word 5 - .word 38 - .word 74 - .word 18 - .word 69 - .word 49 - .word 66 - .word 12 - .word 83 - .word 74 - .word 47 - .word 94 - .word 96 - .word 15 - .word 47 - .word 74 - .word 31 - .word 6 - .word 4 - .word 94 - .word 89 - .word 64 - .word 61 - .word 100 - .word 13 - .word 42 - .word 44 - .word 72 - .word 44 - .word 70 - .word 9 - .word 16 - .word 7 - .word 83 - .word 34 - .word 77 - .word 98 - .word 66 - .word 55 - .word 80 - .word 40 - .word 1 - .word 74 - .word 1 - .word 84 - .word 20 - .word 41 - .word 81 - .word 94 - .word 45 - .word 40 - .word 48 - .word 8 - .word 1 - .word 47 - .word 89 - .word 43 - .word 58 - .word 60 - .word 54 - .word 27 - .word 69 - .word 36 - .word 1 - .word 18 - .word 70 - .word 44 - .word 15 - .word 1 - .word 99 - .word 96 - .word 7 - .word 0 - .word 35 - .word 75 - .word 50 - .word 21 - .word 15 - .word 30 - .word 14 - .word 60 - .word 37 - .word 62 - .word 35 - .word 38 - .word 76 - .word 23 - .word 47 - .word 33 - .word 49 - .word 67 - .word 60 - .word 18 - .word 2 - .word 27 - .word 2 - .word 38 - .word 71 - .word 17 - .word 6 - .word 70 - .word 79 - .word 13 - .word 36 - .word 80 - .word 89 - .word 86 - .word 1 - .word 3 - .word 82 - .word 15 - .word 30 - .word 18 - .word 44 - .word 31 - .word 22 - .word 19 - .word 54 - .word 36 - .word 52 - .word 69 - .word 69 - .word 78 - .word 53 - .word 72 - .word 5 - .word 55 - .word 76 - .word 42 - .word 73 - .word 82 - .word 11 - .word 17 - .word 62 - .word 47 - .word 98 - .word 50 - .word 99 - .word 99 - .word 19 - .word 81 - .word 80 - .word 15 - .word 65 - .word 23 - .word 46 - .word 54 - .word 8 - .word 66 - .word 56 - .word 60 - .word 35 - .word 24 - .word 4 - .word 88 - .word 62 - .word 76 - .word 43 - .word 38 - .word 17 - .word 82 - .word 86 - .word 29 - .word 65 - .word 47 - .word 42 - .word 62 - .word 63 - .word 41 - .word 26 - .word 49 - .word 88 - .word 6 - .word 64 - .word 18 - .word 96 - .word 10 - .word 72 - .word 4 - .word 42 - .word 94 - .word 64 - .word 77 - .word 18 - .word 34 - .word 31 - .word 80 - .word 9 - .word 40 - .word 84 - .word 27 - .word 21 - .word 70 - .word 22 - .word 86 - .word 83 - .word 64 - .word 14 - .word 46 - .word 4 - .word 40 - .word 61 - .word 92 - .word 46 - .word 24 - .word 10 - .word 42 - .word 0 - .word 48 - .word 12 - .word 9 - .word 42 - .word 76 - .word 86 - .word 26 - .word 77 - .word 83 - .word 5 - .word 86 - .word 22 - .word 56 - .word 79 - .word 43 - .word 92 - .word 0 - .word 96 - .word 40 - .word 65 - .word 76 - .word 52 - .word 35 - .word 15 - .word 12 - .word 94 - .word 28 - .word 3 - .word 3 - .word 36 - .word 3 - .word 17 - .word 48 - .word 79 - .word 25 - .word 90 - .word 65 - .word 51 - .word 66 - .word 47 - .word 23 - .word 18 - .word 36 - .word 79 - .word 97 - .word 79 - .word 36 - .word 98 - .word 40 - .word 76 - .word 28 - .word 15 - .word 28 - .word 63 - .word 98 - .word 40 - .word 56 - .word 25 - .word 43 - .word 25 - .word 27 - .word 13 - .word 9 - .word 75 - .word 92 - .word 34 - .word 30 - .word 22 - .word 86 - .word 97 - .word 36 - .word 75 - .word 81 - .word 72 - .word 19 - .word 77 - .word 16 - .word 55 - .word 40 - .word 23 - .word 97 - .word 68 - .word 4 - .word 24 - .word 31 - .word 1 - .word 31 - .word 53 - .word 93 - .word 40 - .word 79 - .word 19 - .word 19 - .word 88 - .word 60 - .word 78 - .word 88 - .word 91 - .word 66 - .word 39 - .word 53 - .word 1 - .word 13 - .word 33 - .word 39 - .word 32 - .word 76 - .word 22 - .word 53 - .word 16 - .word 11 - .word 16 - .word 84 - .word 15 - .word 40 - .word 81 - .word 17 - .word 37 - .word 34 - .word 76 - .word 44 - .word 79 - .word 96 - .word 63 - .word 32 - .word 21 - .word 6 - .word 86 - .word 11 - .word 73 - .word 25 - .word 30 - .word 40 - .word 4 - .word 29 - .word 46 - .word 3 - .word 5 - .word 68 - .word 56 - .word 21 - .word 79 - .word 72 - .word 71 - .word 60 - .word 79 - .word 18 - .word 77 - .word 82 - .word 52 - .word 53 - .word 25 - .word 97 - .word 14 - .word 55 - .word 95 - .word 35 - .word 61 - .word 80 - .word 13 - .word 33 - .word 4 - .word 9 - .word 74 - .word 9 - .word 39 - .word 19 - .word 12 - .word 10 - .word 53 - .word 34 - .word 98 - .word 98 - .word 73 - .word 68 - .word 57 - .word 17 - .word 52 - .word 0 - .word 99 - .word 3 - .word 19 - .word 24 - .word 66 - .word 100 - .word 79 - .word 60 - .word 34 - .word 39 - .word 40 - .word 13 - .word 39 - .word 44 - .word 23 - .word 79 - .word 19 - .word 28 - .word 64 - .word 98 - .word 38 - .word 16 - .word 32 - .word 35 - .word 80 - .word 71 - .word 69 - .word 36 - .word 88 - .word 21 - .word 2 - .word 86 - .word 91 - .word 21 - .word 76 - .word 57 - .word 87 - .word 20 - .word 83 - .word 21 - .word 26 - .word 22 - .word 0 - .word 65 - .word 33 - .word 90 - .word 9 - .word 18 - .word 17 - .word 73 - .word 16 - .word 55 - .word 55 - .word 14 - .word 56 - .word 34 - .word 85 - .word 92 - .word 36 - .word 38 - .word 79 - .word 5 - .word 90 - .word 35 - .word 93 - .word 66 - .word 58 - .word 80 - .word 86 - .word 41 - .word 67 - .word 78 - .word 29 - .word 67 - .word 8 - .word 62 - .word 57 - .word 17 - .word 47 - .word 74 - .word 90 - .word 63 - .word 96 - .word 44 - .word 43 - .word 17 - .word 44 - .word 27 - .word 75 - .word 47 - .word 65 - .word 53 - .word 52 - .word 54 - .word 55 - .word 10 - .word 86 - .word 12 - .word 90 - .word 38 - .word 53 - .word 56 - .word 15 - .word 49 - .word 23 - .word 24 - .word 77 - .word 46 - .word 41 - .word 23 - .word 19 - .word 98 - .word 86 - .word 81 - .word 7 - .word 95 - .word 65 - .word 18 - .word 21 - .word 39 - .word 31 - .word 52 - .word 59 - .word 49 - .word 73 - .word 13 - .word 59 - .word 24 - .word 25 - .word 49 - .word 62 - .word 45 - .word 4 - .word 44 - .word 60 - .word 94 - .word 34 - .word 36 - .word 39 - .word 41 - .word 60 - .word 25 - .word 4 - .word 11 - .word 72 - .word 12 - .word 6 - .word 36 - .word 97 - .word 94 - .word 76 - .word 27 - .word 12 - .word 34 - .word 76 - .word 85 - .word 13 - .word 34 - .word 75 - .word 4 - .word 83 - .word 3 - .word 49 - .word 54 - .word 47 - .word 8 - .word 47 - .word 47 - .word 11 - .word 53 - .word 88 - .word 71 - .word 44 - .word 59 - .word 48 - .word 15 - .word 71 - .word 54 - .word 52 - .word 67 - .word 14 - .word 27 - .word 94 - .word 26 - .word 27 - .word 69 - .word 77 - .word 6 - .word 69 - .word 51 - .word 10 - .word 52 - .word 54 - .word 26 - .word 72 - .word 67 - .word 0 - .word 85 - .word 80 - .word 11 - .word 37 - .word 34 - .word 48 - .word 81 - .word 93 - .word 97 - .word 97 - .word 29 - .word 16 - .word 14 - .word 96 - .word 30 - .word 7 - .word 55 - .word 56 - .word 34 - .word 90 - .word 99 - .word 6 - .word 58 - .word 50 - .word 16 - .word 76 - .word 70 - .word 8 - .word 47 - .word 3 - .word 9 - .word 32 - .word 49 - .word 87 - .word 69 - .word 83 - .word 35 - .word 16 - .word 75 - .word 98 - .word 79 - .word 3 - .word 13 - .word 93 - .word 65 - .word 44 - .word 100 - .word 86 - .word 66 - .word 100 - .word 75 - .word 65 - .word 5 - .word 33 - .word 81 - .word 88 - .word 75 - .word 16 - .word 97 - .word 22 - .word 86 - .word 72 - .word 54 - .word 35 - .word 58 - .word 89 - .word 17 - .word 59 - .word 71 - .word 59 - .word 56 - .word 49 - .word 28 - .word 70 - .word 41 - .word 60 - .word 80 - .word 40 - .word 45 - .word 11 - .word 5 - .word 20 - .word 42 - .word 10 - .word 19 - .word 22 - .word 99 - .word 94 - .word 5 - .word 61 - .word 82 - .word 91 - .word 32 - .word 1 - .word 25 - .word 90 - .word 57 - .word 9 - .word 49 - .word 27 - .word 34 - .word 71 - .word 43 - .word 62 - .word 40 - .word 50 - .word 21 - .word 86 - .word 91 - .word 33 - .word 98 - .word 62 - .word 53 - .word 39 - .word 73 - .word 38 - .word 28 - .word 37 - .word 98 - .word 33 - .word 98 - .word 80 - .word 90 - .word 29 - .word 47 - .word 82 - .word 85 - .word 3 - .word 57 - .word 100 - .word 98 - .word 91 - .word 71 - .word 40 - .word 18 - .word 77 - .word 90 - .word 6 - .word 63 - .word 46 - .word 39 - .word 26 - .word 8 - .word 58 - .word 31 - .word 47 - .word 96 - .word 59 - .word 84 - .word 59 - .word 58 - .word 47 - .word 38 - .word 48 - .word 76 - .word 52 - .word 96 - .word 26 - .word 55 - .word 52 - .word 26 - .word 52 - .word 42 - .word 63 - .word 58 - .word 26 - .word 5 - .word 48 - .word 32 - .word 68 - .word 60 - .word 37 - .word 60 - .word 68 - .word 95 - .word 92 - .word 14 - .word 56 - .word 16 - .word 64 - .word 15 - .word 75 - .word 10 - .word 19 - .word 89 - .word 52 - .word 71 - .word 84 - .word 79 - .word 26 - .word 1 - .word 71 - .word 44 - .word 43 - .word 100 - .word 2 - .word 35 - .word 4 - .word 16 - .word 68 - .word 39 - .word 76 - .word 4 - .word 99 - .word 10 - .word 100 - .word 56 - .word 91 - .word 21 - .word 73 - .word 55 - .word 36 - .word 13 - .word 31 - .word 56 - .word 1 - .word 84 - .word 93 - .word 51 - .word 28 - .word 85 - .word 52 - .word 65 - .word 29 - .word 61 - .word 64 - .word 98 - .word 96 - .word 68 - .word 13 - .word 29 - .word 73 - .word 55 - .word 34 - .word 38 - .word 65 - .word 100 - .word 94 - .word 56 - .word 87 - .word 32 - .word 77 - .word 23 - .word 45 - .word 7 - .word 45 - .word 12 - .word 91 - .word 37 - .word 29 - .word 85 - .word 22 - .word 47 - .word 49 - .word 17 - .word 74 - .word 12 - .word 14 - .word 70 - .word 47 - .word 94 - .word 65 - .word 86 - .word 48 - .word 99 - .word 23 - .word 13 - .word 64 - .word 84 - .word 35 - .word 51 - .word 15 - .word 11 - .word 40 - .word 27 - .word 18 - .word 51 - .word 5 - .word 76 - .word 88 - .word 1 - .word 26 - .word 76 - .word 48 - .word 76 - .word 59 - .word 22 - .word 54 - .word 73 - .word 58 - .word 67 - .word 32 - .word 22 - .word 53 - .word 81 - .word 88 - .word 76 - .word 60 - .word 17 - .word 25 - .word 95 - .word 34 - .word 7 - .word 5 - .word 40 - .word 34 - .word 90 - .word 91 - .word 5 - .word 31 - .word 45 - .word 6 - .word 58 - .word 20 - .word 21 - .word 33 - .word 80 - .word 9 - .word 53 - .word 18 - .word 67 - .word 20 - .word 51 - .word 55 - .word 73 - .word 31 - .word 42 - .word 14 - .word 57 - .word 26 - .word 40 - .word 51 - .word 60 - .word 13 - .word 22 - .word 0 - .word 47 - .word 78 - .word 91 - .word 18 - .word 9 - .word 1 - .word 92 - .word 33 - .word 22 - .word 79 - .word 32 - .word 68 - .word 88 - .word 85 - .word 86 - .word 20 - .word 71 - .word 2 - .word 75 - .word 43 - .word 100 - .word 84 - .word 24 - .word 56 - .word 9 - .word 30 - .word 6 - .word 35 - .word 43 - .word 95 - .word 1 - .word 56 - .word 73 - .word 59 - .word 40 - .word 48 - .word 60 - .word 31 - .word 81 - .word 82 - .word 9 - .word 12 - .word 15 - .word 97 - .word 63 - .word 1 - .word 83 - .word 34 - .word 70 - .word 58 - .word 43 - .word 70 - .word 41 - .word 67 - .word 25 - .word 16 - .word 63 - .word 99 - .word 17 - .word 5 - .word 93 - .word 19 - .word 27 - .word 31 - .word 78 - .word 68 - .word 79 - .word 37 - .word 99 - .word 59 - .word 86 - .word 75 - .word 37 - .word 0 - .word 37 - .word 67 - .word 68 - .word 20 - .word 0 - .word 38 - .word 78 - .word 43 - .word 7 - .word 85 - .word 77 - .word 99 - .word 67 - .word 39 - .word 97 - .word 84 - .word 11 - .word 90 - .word 2 - .word 38 - .word 20 - .word 46 - .word 5 - .word 100 - .word 50 - .word 71 - .word 24 - .word 35 - .word 45 - .word 28 - .word 1 - .word 82 - .word 95 - .word 36 - .word 68 - .word 61 - .word 40 - .word 11 - .word 70 - .word 47 - .word 62 - .word 46 - .word 11 - .word 28 - .word 52 - .word 8 - .word 79 - .word 63 - .word 98 - .word 81 - .word 67 - .word 84 - .word 94 - .word 39 - .word 49 - .word 43 - .word 9 - .word 40 - .word 78 - .word 20 - .word 68 - .word 45 - .word 68 - .word 28 - .word 81 - .word 36 - .word 89 - .word 20 - .word 47 - .word 58 - .word 33 - .word 9 - .word 71 - .word 45 - .word 37 - .word 22 - .word 53 - .word 82 - .word 51 - .word 16 - .word 29 - .word 84 - .word 100 - .word 22 - .word 22 - .word 15 - .word 65 - .word 98 - .word 55 - .word 8 - .word 17 - .word 22 - .word 19 - .word 86 - .word 16 - .word 0 - .word 21 - .word 4 - .word 87 - .word 34 - .word 28 - .word 20 - .word 43 - .word 99 - .word 31 - .word 47 - .word 87 - .word 50 - .word 28 - .word 3 - .word 66 - .word 57 - .word 88 - .word 31 - .word 45 - .word 76 - .word 46 - .word 9 - .word 74 - .word 0 - .word 84 - .word 91 - .word 89 - .word 3 - .word 42 - .word 4 - .word 3 - .word 63 - .word 8 - .word 56 - .word 98 - .word 3 - .word 76 - .word 6 - .word 1 - .word 73 - .word 53 - .word 55 - .word 22 - .word 48 - .word 58 - .word 54 - .word 71 - .word 11 - .word 86 - .word 16 - .word 88 - .word 98 - .word 92 - .word 61 - .word 99 - .word 76 - .word 17 - .word 53 - .word 79 - .word 60 - .word 58 - .word 48 - .word 89 - .word 32 - .word 3 - .word 52 - .word 35 - .word 46 - .word 59 - .word 3 - .word 18 - .word 78 - .word 24 - .word 7 - .word 92 - .word 48 - .word 61 - .word 63 - .word 60 - .word 12 - .word 79 - .word 47 - .word 10 - .word 70 - .word 74 - .word 75 - .word 11 - .word 91 - .word 27 - .word 90 - .word 16 - .word 51 - .word 3 - .word 5 - .word 84 - .word 74 - .word 57 - .word 85 - .word 19 - .word 15 - .word 54 - .word 3 - .word 60 - .word 44 - .word 10 - .word 51 - .word 93 - .word 38 - .word 13 - .word 52 - .word 50 - .word 58 - .word 65 - .word 60 - .word 28 - .word 38 - .word 34 - .word 39 - .word 95 - .word 28 - .word 96 - .word 11 - .word 79 - .word 99 - .word 16 - .word 28 - .word 38 - .word 73 - .word 80 - .word 57 - .word 55 - .word 100 - .word 27 - .word 14 - .word 44 - .word 3 - .word 65 - .word 36 - .word 41 - .word 79 - .word 54 - .word 92 - .word 2 - .word 18 - .word 17 - .word 30 - .word 56 - .word 18 - .word 36 - .word 50 - .word 46 - .word 98 - .word 27 - .word 24 - .word 62 - .word 43 - .word 19 - .word 0 - .word 83 - .word 99 - .word 23 - .word 37 - .word 98 - .word 50 - .word 51 - .word 41 - .word 20 - .word 82 - .word 43 - .word 61 - .word 26 - .word 97 - .word 18 - .word 29 - .word 14 - .word 2 - .word 25 - .word 36 - .word 20 - .word 61 - .word 53 - .word 66 - .word 24 - .word 80 - .word 56 - .word 87 - .word 90 - .word 41 - .word 87 - .word 72 - .word 39 - .word 9 - .word 8 - .word 3 - .word 26 - .word 25 - .word 44 - .word 46 - .word 73 - .word 54 - .word 73 - .word 100 - .word 50 - .word 58 - .word 95 - .word 31 - .word 60 - .word 19 - .word 67 - .word 80 - .word 47 - .word 86 - .word 11 - .word 71 - .word 32 - .word 33 - .word 23 - .word 21 - .word 75 - .word 9 - .word 93 - .word 80 - .word 86 - .word 67 - .word 83 - .word 11 - .word 58 - .word 94 - .word 23 - .word 30 - .word 47 - .word 96 - .word 96 - .word 63 - .word 19 - .word 56 - .word 94 - .word 79 - .word 42 - .word 27 - .word 24 - .word 89 - .word 12 - .word 1 - .word 25 - .word 44 - .word 35 - .word 49 - .word 65 - .word 76 - .word 58 - .word 23 - .word 21 - .word 9 - .word 90 - .word 4 - .word 87 - .word 13 - .word 64 - .word 9 - .word 10 - .word 77 - .word 72 - .word 72 - .word 39 - .word 91 - .word 28 - .word 33 - .word 70 - .word 70 - .word 60 - .word 60 - .word 24 - .word 72 - .word 62 - .word 49 - .word 83 - .word 63 - .word 64 - .word 47 - .word 4 - .word 89 - .word 37 - .word 25 - .word 98 - .word 26 - .word 96 - .word 85 - .word 6 - .word 25 - .word 94 - .word 16 - .word 1 - .word 31 - .word 54 - .word 41 - .word 22 - .word 48 - .word 74 - .word 58 - .word 17 - .word 100 - .word 17 - .word 7 - .word 71 - .word 45 - .word 57 - .word 19 - .word 74 - .word 20 - .word 67 - .word 78 - .word 75 - .word 3 - .word 70 - .word 73 - .word 96 - .word 65 - .word 57 - .word 68 - .word 57 - .word 16 - .word 50 - .word 58 - .word 14 - .word 4 - .word 99 - .word 36 - .word 52 - .word 38 - .word 60 - .word 36 - .word 37 - .word 43 - .word 43 - .word 75 - .word 89 - .word 66 - .word 94 - .word 62 - .word 53 - .word 60 - .word 6 - .word 27 - .word 29 - .word 76 - .word 100 - .word 92 - .word 6 - .word 22 - .word 59 - .word 63 - .word 5 - .word 9 - .word 21 - .word 19 - .word 13 - .word 86 - .word 21 - .word 31 - .word 24 - .word 47 - .word 67 - .word 61 - .word 90 - .word 10 - .word 35 - .word 44 - .word 42 - .word 29 - .word 73 - .word 95 - .word 55 - .word 79 - .word 22 - .word 51 - .word 54 - .word 88 - .word 42 - .word 26 - .word 10 - .word 0 - .word 56 - .word 82 - .word 9 - .word 77 - .word 67 - .word 89 - .word 28 - .word 88 - .word 20 - .word 52 - .word 34 - .word 53 - .word 80 - .word 90 - .word 29 - .word 14 - .word 34 - .word 72 - .word 9 - .word 6 - .word 66 - .word 65 - .word 85 - .word 54 - .word 82 - .word 4 - .word 42 - .word 23 - .word 97 - .word 18 - .word 23 - .word 52 - .word 100 - .word 100 - .word 95 - .word 66 - .word 54 - .word 23 - .word 19 - .word 40 - .word 75 - .word 19 - .word 60 - .word 20 - .word 8 - .word 89 - .word 35 - .word 42 - .word 60 - .word 10 - .word 48 - .word 93 - .word 41 - .word 99 - .word 46 - .word 22 - .word 69 - .word 54 - .word 45 - .word 66 - .word 38 - .word 35 - .word 17 - .word 37 - .word 0 - .word 12 - .word 69 - .word 54 - .word 35 - .word 54 - .word 61 - .word 76 - .word 73 - .word 20 - .word 97 - .word 48 - .word 8 - .word 98 - .word 90 - .word 35 - .word 7 - .word 4 - .word 94 - .word 15 - .word 69 - .word 5 - .word 37 - .word 38 - .word 60 - .word 83 - .word 3 - .word 98 - .word 84 - .word 20 - .word 1 - .word 84 - .word 99 - .word 36 - .word 3 - .word 100 - .word 57 - .word 64 - .word 76 - .word 96 - .word 50 - .word 38 - .word 43 - .word 25 - .word 35 - .word 100 - .word 60 - .word 8 - .word 70 - .word 53 - .word 23 - .word 38 - .word 58 - .word 27 - .word 42 - .word 84 - .word 76 - .word 11 - .word 48 - .word 59 - .word 99 - .word 15 - .word 8 - .word 97 - .word 51 - .word 11 - .word 97 - .word 7 - .word 42 - .word 38 - .word 70 - .word 58 - .word 76 - .word 12 - .word 83 - .word 77 - .word 11 - .word 42 - .word 51 - .word 47 - .word 61 - .word 75 - .word 86 - .word 86 - .word 68 - .word 94 - .word 69 - .word 43 - .word 5 - .word 16 - .word 1 - .word 3 - .word 31 - .word 9 - .word 100 - .word 49 - .word 87 - .word 62 - .word 22 - .word 95 - .word 100 - .word 92 - .word 53 - .word 41 - .word 71 - .word 35 - .word 17 - .word 48 - .word 44 - .word 69 - .word 96 - .word 4 - .word 9 - .word 47 - .word 56 - .word 77 - .word 40 - .word 25 - .word 86 - .word 45 - .word 7 - .word 87 - .word 48 - .word 5 - .word 62 - .word 14 - .word 20 - .word 48 - .word 76 - .word 8 - .word 43 - .word 76 - .word 67 - .word 62 - .word 16 - .word 37 - .word 97 - .word 0 - .word 85 - .word 6 - .word 35 - .word 80 - .word 78 - .word 10 - .word 26 - .word 33 - .word 53 - .word 33 - .word 24 - .word 38 - .word 78 - .word 32 - .word 24 - .word 93 - .word 3 - .word 52 - .word 6 - .word 90 - .word 100 - .word 48 - .word 98 - .word 8 - .word 90 - .word 64 - .word 70 - .word 6 - .word 67 - .word 33 - .word 73 - .word 52 - .word 39 - .word 7 - .word 98 - .word 16 - .word 84 - .word 91 - .word 16 - .word 36 - .word 23 - .word 40 - .word 74 - .word 67 - .word 38 - .word 64 - .word 59 - .word 41 - .word 15 - .word 31 - .word 97 - .word 81 - .word 80 - .word 61 - .word 56 - .word 35 - .word 24 - .word 25 - .word 41 - .word 92 - .word 24 - .word 80 - .word 9 - .word 30 - .word 53 - .word 6 - .word 12 - .word 36 - .word 97 - .word 28 - .word 72 - .word 86 - .word 69 - .word 11 - .word 53 - .word 6 - .word 75 - .word 78 - .word 14 - .word 56 - .word 76 - .word 10 - .word 37 - .word 55 - .word 37 - .word 93 - .word 56 - .word 62 - .word 84 - .word 98 - .word 19 - .word 75 - .word 43 - .word 28 - .word 4 - .word 97 - .word 0 - .word 83 - .word 32 - .word 98 - .word 11 - .word 71 - .word 49 - .word 80 - .word 82 - .word 1 - .word 52 - .word 23 - .word 80 - .word 66 - .word 45 - .word 55 - .word 43 - .word 48 - .word 76 - .word 80 - .word 40 - .word 31 - .word 7 - .word 91 - .word 95 - .word 93 - .word 31 - .word 38 - .word 20 - .word 1 - .word 0 - .word 88 - .word 84 - .word 32 - .word 51 - .word 95 - .word 2 - .word 100 - .word 40 - .word 85 - .word 1 - .word 59 - .word 74 - .word 47 - .word 91 - .word 18 - .word 68 - .word 33 - .word 67 - .word 9 - .word 80 - .word 73 - .word 6 - .word 53 - .word 29 - .word 1 - .word 46 - .word 60 - .word 5 - .word 32 - .word 61 - .word 5 - .word 86 - .word 11 - .word 3 - .word 36 - .word 72 - .word 6 - .word 36 - .word 12 - .word 57 - .word 37 - .word 71 - .word 97 - .word 50 - .word 61 - .word 14 - .word 17 - .word 61 - .word 47 - .word 93 - .word 6 - .word 20 - .word 99 - .word 25 - .word 15 - .word 66 - .word 37 - .word 76 - .word 71 - .word 36 - .word 2 - .word 42 - .word 21 - .word 80 - .word 12 - .word 58 - .word 52 - .word 18 - .word 94 - .word 30 - .word 41 - .word 97 - .word 67 - .word 3 - .word 12 - .word 94 - .word 17 - .word 96 - .word 54 - .word 31 - .word 88 - .word 26 - .word 51 - .word 86 - .word 18 - .word 66 - .word 52 - .word 55 - .word 7 - .word 89 - .word 91 - .word 77 - .word 98 - .word 79 - .word 56 - .word 9 - .word 36 - .word 74 - .word 94 - .word 96 - .word 3 - .word 34 - .word 92 - .word 70 - .word 37 - .word 3 - .word 64 - .word 20 - .word 65 - .word 84 - .word 51 - .word 52 - .word 77 - .word 68 - .word 37 - .word 95 - .word 0 - .word 55 - .word 15 - .word 7 - .word 10 - .word 6 - .word 50 - .word 7 - .word 85 - .word 73 - .word 16 - .word 87 - .word 46 - .word 9 - .word 82 - .word 50 - .word 9 - .word 39 - .word 86 - .word 12 - .word 8 - .word 49 - .word 32 - .word 73 - .word 100 - .word 50 - .word 24 - .word 76 - .word 17 - .word 27 - .word 70 - .word 17 - .word 83 - .word 51 - .word 92 - .word 93 - .word 23 - .word 7 - .word 66 - .word 74 - .word 80 - .word 82 - .word 60 - .word 26 - .word 57 - .word 41 - .word 42 - .word 66 - .word 80 - .word 27 - .word 78 - .word 88 - .word 77 - .word 76 - .word 26 - .word 42 - .word 25 - .word 50 - .word 17 - .word 9 - .word 78 - .word 53 - .word 26 - .word 26 - .word 3 - .word 84 - .word 85 - .word 27 - .word 92 - .word 50 - .word 0 - .word 71 - .word 31 - .word 27 - .word 63 - .word 88 - .word 34 - .word 4 - .word 19 - .word 14 - .word 32 - .word 97 - .word 68 - .word 75 - .word 72 - .word 95 - .word 16 - .word 64 - .word 10 - .word 100 - .word 73 - .word 88 - .word 52 - .word 65 - .word 80 - .word 21 - .word 49 - .word 64 - .word 14 - .word 6 - .word 13 - .word 15 - .word 77 - .word 10 - .word 8 - .word 6 - .word 64 - .word 42 - .word 10 - .word 83 - .word 22 - .word 8 - .word 45 - .word 91 - .word 49 - .word 84 - .word 51 - .word 65 - .word 47 - .word 27 - .word 30 - .word 86 - .word 82 - .word 82 - .word 50 - .word 61 - .word 70 - .word 65 - .word 92 - .word 84 - .word 71 - .word 71 - .word 65 - .word 14 - .word 82 - .word 73 - .word 20 - .word 11 - .word 15 - .word 97 - .word 61 - .word 37 - .word 5 - .word 72 - .word 94 - .word 54 - .word 55 - .word 10 - .word 86 - .word 68 - .word 38 - .word 15 - .word 53 - .word 19 - .word 64 - .word 70 - .word 80 - .word 33 - .word 34 - .word 37 - .word 16 - .word 72 - .word 8 - .word 82 - .word 86 - .word 56 - .word 54 - .word 5 - .word 33 - .word 69 - .word 1 - .word 94 - .word 73 - .word 73 - .word 66 - .word 66 - .word 27 - .word 87 - .word 77 - .word 79 - .word 55 - .word 14 - .word 94 - .word 74 - .word 100 - .word 57 - .word 43 - .word 45 - .word 90 - .word 44 - .word 83 - .word 73 - .word 15 - .word 91 - .word 54 - .word 0 - .word 46 - .word 74 - .word 72 - .word 79 - .word 9 - .word 39 - .word 39 - .word 82 - .word 12 - .word 71 - .word 13 - .word 5 - .word 57 - .word 90 - .word 84 - .word 11 - .word 70 - .word 77 - .word 52 - .word 69 - .word 0 - .word 95 - .word 14 - .word 56 - .word 38 - .word 63 - .word 28 - .word 19 - .word 53 - .word 48 - .word 19 - .word 65 - .word 89 - .word 57 - .word 9 - .word 98 - .word 97 - .word 14 - .word 45 - .word 8 - .word 85 - .word 58 - .word 80 - .word 42 - .word 14 - .word 63 - .word 19 - .word 50 - .word 5 - .word 71 - .word 86 - .word 72 - .word 66 - .word 66 - .word 28 - .word 70 - .word 28 - .word 56 - .word 90 - .word 81 - .word 71 - .word 75 - .word 11 - .word 59 - .word 32 - .word 87 - .word 56 - .word 28 - .word 1 - .word 67 - .word 2 - .word 86 - .word 91 - .word 82 - .word 27 - .word 71 - .word 10 - .word 47 - .word 21 - .word 82 - .word 17 - .word 6 - .word 54 - .word 49 - .word 38 - .word 82 - .word 86 - .word 66 - .word 3 - .word 75 - .word 12 - .word 74 - .word 15 - .word 23 - .word 99 - .word 47 - .word 9 - .word 20 - .word 75 - .word 10 - .word 87 - .word 43 - .word 63 - .word 44 - .word 91 - .word 90 - .word 14 - .word 0 - .word 2 - .word 35 - .word 83 - .word 87 - .word 7 - .word 2 - .word 1 - .word 45 - .word 84 - .word 87 - .word 77 - .word 53 - .word 27 - .word 89 - .word 94 - .word 43 - .word 78 - .word 92 - .word 90 - .word 88 - .word 12 - .word 31 - .word 64 - .word 65 - .word 74 - .word 93 - .word 8 - .word 65 - .word 49 - .word 23 - .word 31 - .word 51 - .word 24 - .word 80 - .word 3 - .word 99 - .word 82 - .word 5 - .word 9 - .word 31 - .word 92 - .word 87 - .word 85 - .word 19 - .word 41 - .word 78 - .word 62 - .word 19 - .word 35 - .word 17 - .word 73 - .word 13 - .word 48 - .word 2 - .word 79 - .word 89 - .word 96 - .word 53 - .word 19 - .word 44 - .word 42 - .word 50 - .word 61 - .word 67 - .word 30 - .word 65 - .word 31 - .word 78 - .word 36 - .word 40 - .word 9 - .word 94 - .word 93 - .word 60 - .word 12 - .word 34 - .word 3 - .word 40 - .word 53 - .word 38 - .word 24 - .word 92 - .word 52 - .word 72 - .word 94 - .word 97 - .word 60 - .word 89 - .word 15 - .word 79 - .word 99 - .word 58 - .word 96 - .word 26 - .word 91 - .word 92 - .word 91 - .word 21 - .word 69 - .word 93 - .word 27 - .word 44 - .word 86 - .word 20 - .word 3 - .word 65 - .word 54 - .word 6 - .word 71 - .word 73 - .word 11 - .word 95 - .word 64 - .word 29 - .word 67 - .word 23 - .word 92 - .word 93 - .word 79 - .word 6 - .word 38 - .word 77 - .word 30 - .word 33 - .word 2 - .word 20 - .word 91 - .word 59 - .word 7 - .word 59 - .word 51 - .word 1 - .word 3 - .word 3 - .word 21 - .word 73 - .word 68 - .word 41 - .word 46 - .word 4 - .word 80 - .word 57 - .word 100 - .word 9 - .word 86 - .word 32 - .word 32 - .word 43 - .word 24 - .word 10 - .word 49 - .word 28 - .word 88 - .word 80 - .word 27 - .word 56 - .word 66 - .word 17 - .word 82 - .word 40 - .word 77 - .word 32 - .word 41 - .word 46 - .word 1 - .word 28 - .word 85 - .word 35 - .word 69 - .word 30 - .word 40 - .word 14 - .word 53 - .word 39 - .word 23 - .word 4 - .word 71 - .word 55 - .word 47 - .word 61 - .word 66 - .word 97 - .word 56 - .word 19 - .word 42 - .word 83 - .word 41 - .word 74 - .word 0 - .word 22 - .word 80 - .word 77 - .word 21 - .word 20 - .word 89 - .word 22 - .word 14 - .word 73 - .word 58 - .word 83 - .word 70 - .word 98 - .word 63 - .word 22 - .word 2 - .word 86 - .word 27 - .word 39 - .word 41 - .word 40 - .word 66 - .word 73 - .word 36 - .word 21 - .word 92 - .word 44 - .word 4 - .word 32 - .word 85 - .word 4 - .word 21 - .word 64 - .word 47 - .word 42 - .word 85 - .word 1 - .word 64 - .word 65 - .word 40 - .word 88 - .word 48 - .word 9 - .word 51 - .word 77 - .word 99 - .word 53 - .word 63 - .word 92 - .word 58 - .word 3 - .word 31 - .word 24 - .word 76 - .word 34 - .word 11 - .word 33 - .word 44 - .word 15 - .word 31 - .word 28 - .word 86 - .word 52 - .word 93 - .word 99 - .word 94 - .word 43 - .word 100 - .word 24 - .word 7 - .word 40 - .word 11 - .word 21 - .word 15 - .word 63 - .word 99 - .word 13 - .word 82 - .word 61 - .word 4 - .word 40 - .word 30 - .word 2 - .word 30 - .word 72 - .word 36 - .word 41 - .word 71 - .word 80 - .word 23 - .word 1 - .word 8 - .word 8 - .word 20 - .word 67 - .word 7 - .globl qHead - .section .sbss,"aw",@nobits - .align 2 - .type qHead, @object - .size qHead, 4 -qHead: - .space 4 - .globl g_qCount - .align 2 - .type g_qCount, @object - .size g_qCount, 4 -g_qCount: - .space 4 - .local msys - .comm msys,8,4 - - .comm myheap,4,4 - - .comm AdjMatrix,40000,4 - - .comm rgnNodes,800,4 - - .comm ch,4,4 - - .comm iPrev,4,4 - - .comm iNode,4,4 - - .comm i,4,4 - - .comm iCost,4,4 - - .comm iDist,4,4 - .ident "GCC: (GNU) 4.4.3" diff --git a/cMIPS/tests/fileBubble.c b/cMIPS/tests/fileBubble.c deleted file mode 100644 index 9326bed0a7b8721ac428084913a1165fc9a21ad9..0000000000000000000000000000000000000000 --- a/cMIPS/tests/fileBubble.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * This program demonstrates the use of the merge sort algorithm. For - * more information about this and other sorting algorithms, see - * http://linux.wku.edu/~lamonml/kb.html - * - */ - -#include "cMIPS.h" - - - -#define NUM_ITEMS 128 - -void sort(int buf[], int n); - -// cMIPS file I/O -int readInt(int *n); -void writeInt(int n); -void writeClose(void); -void print(int n); - -int buf[NUM_ITEMS]; - -void main() { - int val,i,j; - - i=0; - while ( readInt(&val) == 0 ) { // read input data from file input.data - buf[i] = val; - i = i+1; - } - - //perform bubble sort on array - sort(buf, i); - - //write sorted numbers - for (j=0; j<i; j++) { - writeInt(buf[j]); - print(buf[j]); - } - - writeClose(); -} - - -void sort(int buf[], int n) { - int i, j, t; - - for(i=0; i < n; i++) { - for(j=i; j < n; j++) { - if( buf[i] > buf[j] ) { - t = buf[i]; - buf[i] = buf[j]; - buf[j] = t; - } - } - } -} - - - -int readInt(int *n) { // read integer from file, status==1 if EOF, 0 otw - int *IO = (int *)IO_READ_BOT_ADDR; - int status, value; - - value = *IO; - status = *(IO + 1); - - if (status == 0) { - *n = value; - } - return status; -} - - -void writeInt(int n) { // write integer to output file - int *IO = (int *)IO_WRITE_BOT_ADDR; - - *IO = n; -} - -void writeClose(void) { // close output file - int *IO = (int *)IO_READ_BOT_ADDR; - - *(IO + 1) = 1; -} - -void print(int n) { // write to VHDL simulator's standard output - int *IO = (int *)x_IO_BASE_ADDR; - - *IO = n; -} diff --git a/cMIPS/tests/fileBubble.s b/cMIPS/tests/fileBubble.s deleted file mode 100644 index 0a909d4d358b577d67418e32cd1089c49cbb282b..0000000000000000000000000000000000000000 --- a/cMIPS/tests/fileBubble.s +++ /dev/null @@ -1,233 +0,0 @@ - .file 1 "fileBubble.c" - .section .mdebug.abi32 - .previous - .gnu_attribute 4, 1 - .text - .align 2 - .globl sort - .set nomips16 - .ent sort - .type sort, @function -sort: - .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - blez $5,$L9 - move $9,$4 - - move $10,$0 - j $L3 - move $3,$0 - -$L5: - lw $6,0($9) - lw $7,0($2) - nop - slt $8,$7,$6 - beq $8,$0,$L4 - nop - - sw $7,0($9) - sw $6,0($2) -$L4: - addiu $3,$3,1 - slt $6,$3,$5 - bne $6,$0,$L5 - addiu $2,$2,4 - -$L6: - addiu $10,$10,1 - beq $10,$5,$L9 - addiu $9,$9,4 - - move $3,$10 -$L3: - slt $2,$3,$5 - beq $2,$0,$L6 - nop - - sll $2,$3,2 - j $L5 - addu $2,$4,$2 - -$L9: - j $31 - nop - - .set macro - .set reorder - .end sort - .size sort, .-sort - .align 2 - .globl readInt - .set nomips16 - .ent readInt - .type readInt, @function -readInt: - .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - li $2,251658240 # 0xf000000 - ori $3,$2,0x400 - lw $3,0($3) - ori $2,$2,0x404 - lw $2,0($2) - nop - bne $2,$0,$L13 - nop - - sw $3,0($4) -$L13: - j $31 - nop - - .set macro - .set reorder - .end readInt - .size readInt, .-readInt - .align 2 - .globl writeInt - .set nomips16 - .ent writeInt - .type writeInt, @function -writeInt: - .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - li $2,251658240 # 0xf000000 - ori $2,$2,0x800 - j $31 - sw $4,0($2) - - .set macro - .set reorder - .end writeInt - .size writeInt, .-writeInt - .align 2 - .globl writeClose - .set nomips16 - .ent writeClose - .type writeClose, @function -writeClose: - .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - li $3,1 # 0x1 - li $2,251658240 # 0xf000000 - ori $2,$2,0x404 - j $31 - sw $3,0($2) - - .set macro - .set reorder - .end writeClose - .size writeClose, .-writeClose - .align 2 - .globl print - .set nomips16 - .ent print - .type print, @function -print: - .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 - .mask 0x00000000,0 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - li $2,251658240 # 0xf000000 - j $31 - sw $4,0($2) - - .set macro - .set reorder - .end print - .size print, .-print - .align 2 - .globl main - .set nomips16 - .ent main - .type main, @function -main: - .frame $sp,48,$31 # vars= 8, regs= 5/0, args= 16, gp= 0 - .mask 0x800f0000,-4 - .fmask 0x00000000,0 - .set noreorder - .set nomacro - - addiu $sp,$sp,-48 - sw $31,44($sp) - sw $19,40($sp) - sw $18,36($sp) - sw $17,32($sp) - sw $16,28($sp) - lui $16,%hi(buf) - addiu $16,$16,%lo(buf) - move $17,$16 - move $18,$0 - j $L21 - addiu $19,$sp,16 - -$L22: - lw $2,16($sp) - nop - sw $2,0($17) - addiu $18,$18,1 - addiu $17,$17,4 -$L21: - jal readInt - move $4,$19 - - beq $2,$0,$L22 - lui $4,%hi(buf) - - addiu $4,$4,%lo(buf) - jal sort - move $5,$18 - - blez $18,$L23 - move $17,$0 - -$L24: - lw $4,0($16) - jal writeInt - addiu $17,$17,1 - - lw $4,0($16) - jal print - addiu $16,$16,4 - - slt $2,$17,$18 - bne $2,$0,$L24 - nop - -$L23: - jal writeClose - nop - - lw $31,44($sp) - lw $19,40($sp) - lw $18,36($sp) - lw $17,32($sp) - lw $16,28($sp) - j $31 - addiu $sp,$sp,48 - - .set macro - .set reorder - .end main - .size main, .-main - - .comm buf,512,4 - .ident "GCC: (GNU) 4.4.3" diff --git a/cMIPS/tests/fileMerge.c b/cMIPS/tests/fileMerge.c deleted file mode 100644 index 647a884d250e6f9fa8b67654aa54c353de618dd7..0000000000000000000000000000000000000000 --- a/cMIPS/tests/fileMerge.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * This program demonstrates the use of the merge sort algorithm. For - * more information about this and other sorting algorithms, see - * http://linux.wku.edu/~lamonml/kb.html - * - */ - -#include "cMIPS.h" - - - -#define NUM_ITEMS 128 - -void mergeSort(int numbers[], int temp[], int array_size); -void m_sort(int numbers[], int temp[], int left, int right); -void merge(int numbers[], int temp[], int left, int mid, int right); - -// cMIPS file I/O -int readInt(int *n); -void writeInt(int n); -void writeClose(void); -void print(int n); - - -int temp[NUM_ITEMS]; -int buf[NUM_ITEMS]; - -void main() { - int val,i,j; - - i=0; - while ( readInt(&val) == 0 ) { // read input data from file input.data - buf[i] = val; - i = i+1; - } - - //perform merge sort on array - mergeSort(buf, temp, i); - - //write sorted numbers - for (j=0; j<i; j++) { - writeInt(buf[j]); - print(buf[j]); - } - - writeClose(); -} - - -void mergeSort(int numbers[], int temp[], int array_size) { - m_sort(numbers, temp, 0, array_size - 1); -} - -void m_sort(int numbers[], int temp[], int left, int right) { - int mid; - - if (right > left) { - mid = (right + left) >> 1; - m_sort(numbers, temp, left, mid); - m_sort(numbers, temp, mid+1, right); - - merge(numbers, temp, left, mid+1, right); - } -} - -void merge(int numbers[], int temp[], int left, int mid, int right) { - int i, left_end, num_elements, tmp_pos; - - left_end = mid - 1; - tmp_pos = left; - num_elements = right - left + 1; - - while ((left <= left_end) && (mid <= right)) { - if (numbers[left] <= numbers[mid]) { - temp[tmp_pos] = numbers[left]; - tmp_pos = tmp_pos + 1; - left = left +1; - } else { - temp[tmp_pos] = numbers[mid]; - tmp_pos = tmp_pos + 1; - mid = mid + 1; - } - } - - while (left <= left_end) { - temp[tmp_pos] = numbers[left]; - left = left + 1; - tmp_pos = tmp_pos + 1; - } - while (mid <= right) { - temp[tmp_pos] = numbers[mid]; - mid = mid + 1; - tmp_pos = tmp_pos + 1; - } - - for (i=0; i <= num_elements; i++) { - numbers[right] = temp[right]; - right = right - 1; - } -} - - -int readInt(int *n) { // read integer from file, status==1 if EOF, 0 otw - int *IO = (int *)IO_READ_BOT_ADDR; - int status, value; - - value = *IO; - status = *(IO + 1); - - if (status == 0) { - *n = value; - } - return status; -} - - -void writeInt(int n) { // write integer to output file - int *IO = (int *)IO_WRITE_BOT_ADDR; - - *IO = n; -} - -void writeClose(void) { // close output file - int *IO = (int *)IO_READ_BOT_ADDR; - - *(IO + 1) = 1; -} - -void print(int n) { // write to VHDL simulator's standard output - int *IO = (int *)x_IO_BASE_ADDR; - - *IO = n; -} diff --git a/cMIPS/tests/mfc0CONFIG.s b/cMIPS/tests/mfc0CONFIG.s index 91c705b4d4b7754d695a8469df66e86bfbc493c7..d1e0fa41e45aaadd215491b985467d46da30c04e 100644 --- a/cMIPS/tests/mfc0CONFIG.s +++ b/cMIPS/tests/mfc0CONFIG.s @@ -34,7 +34,7 @@ _excp_180: .end _excp_180 - .org 0x0100,0 # normal code + .org x_ENTRY_POINT,0 # normal code start main: la $15, x_IO_BASE_ADDR nop mfc0 $6, cop0_STATUS diff --git a/cMIPS/tests/mtc0CAUSE.s b/cMIPS/tests/mtc0CAUSE.s deleted file mode 100644 index 312615c70ece93944bb74bfc93e92eeb0637a222..0000000000000000000000000000000000000000 --- a/cMIPS/tests/mtc0CAUSE.s +++ /dev/null @@ -1,148 +0,0 @@ - .include "cMIPS.s" - .text - .align 2 - .globl _start - .ent _start -_start: li $5, 32 - li $20,4 # do four interrupts and stop - li $6, 0x18000303 # kernel mode, disable interrupts - mtc0 $6,cop0_STATUS - li $6, 0xffffffff # write garbage to CAUSE, assert sw interrupt - mtc0 $6,cop0_CAUSE - la $15, x_IO_BASE_ADDR - addiu $k1,$15,1024 - li $k0, 0x80000100 # start external counter (not COUNT) - sw $k0,0($k1) - mfc0 $6,cop0_CAUSE # print CAUSE - nop - sw $6,0($15) - j code - - - .org x_EXCEPTION_0180,0 # exception vector_180 at 0x00000060 - .global excp -excp: li $k0,0x00000000 - mtc0 $k0,cop0_CAUSE # remove sw interrupt req - li $k0, 0x00000000 - addiu $k1, $15, 1024 - sw $k0,0($k1) # stop counter - addiu $20,$20,-1 - sw $zero,0($15) # print zero do signal interrupt taken - li $k0, 0x80000100 # start counter - sw $k0,0($k1) - li $k0,0x18000301 # enable interrupts - mtc0 $k0,cop0_STATUS - eret - - .org x_ENTRY_POINT,0 - nop -code: li $9,16 - li $6, 0x18000301 # enable interrupts - mtc0 $6,cop0_STATUS -lasso: addiu $5,$5,-1 - sw $5,0($15) - beq $9,$5,restart - nop - andi $5,$5,0x1f - beq $20,$zero,end - j lasso - -restart: li $6, 0x00000100 # request sw interrupt - mtc0 $6, cop0_CAUSE - j lasso - -end: nop - nop - nop - wait - nop - nop - .end _start - - -# 08000300 -# 00000000 -# 0000001f -# 0000001e -# 0000001d -# 0000001c -# 0000001b -# 0000001a -# 00000019 -# 00000018 -# 00000017 -# 00000016 -# 00000015 -# 00000014 -# 00000013 -# 00000012 -# 00000011 -# 00000010 -# 00000000 -# 0000000f -# 0000000e -# 0000000d -# 0000000c -# 0000000b -# 0000000a -# 00000009 -# 00000008 -# 00000007 -# 00000006 -# 00000005 -# 00000004 -# 00000003 -# 00000002 -# 00000001 -# 00000000 -# ffffffff -# 0000001e -# 0000001d -# 0000001c -# 0000001b -# 0000001a -# 00000019 -# 00000018 -# 00000017 -# 00000016 -# 00000015 -# 00000014 -# 00000013 -# 00000012 -# 00000011 -# 00000010 -# 00000000 -# 0000000f -# 0000000e -# 0000000d -# 0000000c -# 0000000b -# 0000000a -# 00000009 -# 00000008 -# 00000007 -# 00000006 -# 00000005 -# 00000004 -# 00000003 -# 00000002 -# 00000001 -# 00000000 -# ffffffff -# 0000001e -# 0000001d -# 0000001c -# 0000001b -# 0000001a -# 00000019 -# 00000018 -# 00000017 -# 00000016 -# 00000015 -# 00000014 -# 00000013 -# 00000012 -# 00000011 -# 00000010 -# 00000000 -# 0000000f diff --git a/cMIPS/tests/mtc0CAUSE2.s b/cMIPS/tests/mtc0CAUSE2.s index 5ef81df96fcea6b8165458456c0ec4a63f4758f9..862dce87d2a8a414a893850e3b999715b8f176cf 100644 --- a/cMIPS/tests/mtc0CAUSE2.s +++ b/cMIPS/tests/mtc0CAUSE2.s @@ -38,7 +38,7 @@ _excp_180: .end _excp_180 - .org 0x0100 # normal code starts here + .org x_ENTRY_POINT,0 # normal code start main: la $15,x_IO_BASE_ADDR li $7,4 # do four rounds li $5,0 diff --git a/cMIPS/tests/syscall.s b/cMIPS/tests/syscall.s index 2fe7efc30b64f868a7c817b4976828c1938a96fa..37408a840e37c16cbd991b157e1f4dbdf5db85a7 100644 --- a/cMIPS/tests/syscall.s +++ b/cMIPS/tests/syscall.s @@ -46,7 +46,7 @@ _excp_180: .end _excp_180 - .org 0x100,0 # normal code starts at 0x0000.0100 + .org x_ENTRY_POINT,0 # normal code start main: la $15, x_IO_BASE_ADDR li $7, 4 li $5, 0 diff --git a/cMIPS/tests/unalignedAddr.c b/cMIPS/tests/unalignedAddr.c deleted file mode 100644 index 40171fde3a06ec05d22f089d0b17d53dbb977f3d..0000000000000000000000000000000000000000 --- a/cMIPS/tests/unalignedAddr.c +++ /dev/null @@ -1,74 +0,0 @@ -// test references to unaligned data references - -/*---------------------------------------------------------------------------*/ -#include "cMIPS.h" - -#ifndef cMIPS - #include <stdio.h> -#endif - -#define BSZ 16 - -unsigned short bsh[BSZ]; -unsigned int bin[BSZ]; - -/*---------------------------------------------------------------------------*/ - -#ifdef cMIPS - extern void exit(int); - extern void print(int); - extern int readInt(int *); - extern void writeInt(int); -#endif - -void main() { - - int i; - short *shptr; - int *inptr; - - shptr = &(bsh[0]); - - *shptr = 1; - for(i=1; i < BSZ; i++) { - *(shptr+i) = *(shptr+i - 1) + 1; - } - - inptr = &(bin[0]); - - *inptr = 1; - for(i=1; i < BSZ; i++) { - *(inptr+i) = *(inptr+i - 1) + 1; - } - - shptr = &(bsh[0]); - inptr = &(bin[0]); - - // force unaligned LOAD reference to short - // print((int)*(short *)((int)shptr+3)); - - // OR - - // force unaligned LOAD reference to integer - // print((int)*(int *)((int)inptr+3)); - - // OR - - // force unaligned STORE reference to short - *((short *)((int)shptr+3)) = 7; - - - // OR - // make code behave reasonably - - for(i=0; i<BSZ; i++) { -#ifdef cMIPS - // print((int)*(shptr + i)); - // print(*(inptr + i)); -#else - printf("%08x\n%08x\n", - ((unsigned int)bsh[i], bin[i]); -#endif - } - -} diff --git a/cMIPS/vhdl/cache.vhd b/cMIPS/vhdl/cache.vhd index b21f0694bc85c8658462766ec5cf7f544c655f5f..27602ec90ec56bc1c5b6deaaaf066d4341414d76 100644 --- a/cMIPS/vhdl/cache.vhd +++ b/cMIPS/vhdl/cache.vhd @@ -431,7 +431,6 @@ begin cpu_rdy <= mem_rdy; mem_wr <= cpu_wr; mem_addr <= cpu_addr; - mem_sel <= cpu_sel; mem_xfer <= cpu_xfer; mem_data_out <= cpu_data_inp when (cpu_sel = '0') and (cpu_wr = '0') else diff --git a/cMIPS/vhdl/core.vhd b/cMIPS/vhdl/core.vhd index 521938323bc181106c7229235fcfd8037aed0ae9..eb2a5841097b1723de5a8dbebd21a4f9ae4bc584 100644 --- a/cMIPS/vhdl/core.vhd +++ b/cMIPS/vhdl/core.vhd @@ -3045,7 +3045,6 @@ begin hit_mm_d <= tlb_ppn_mm0(DAT_D_BIT) when v_addr(PAGE_SZ_BITS) = '0' else tlb_ppn_mm1(DAT_D_BIT); - phy_d_addr <= tlb_ppn_mm(PPN_BITS-1 downto 0) & v_addr(PAGE_SZ_BITS-1 downto 0); diff --git a/cMIPS/vhdl/memory.vhd b/cMIPS/vhdl/memory.vhd index 3dc0a2d28828cbac7b469b5fe0c9fbc7d12c9c93..642eebe8ab02f3ae8434b68d0792c2cc74e4c0a3 100644 --- a/cMIPS/vhdl/memory.vhd +++ b/cMIPS/vhdl/memory.vhd @@ -105,7 +105,7 @@ begin -- behavioral assert (index >= 0) and (index < INST_MEM_SZ/4) report "romRDindex out of bounds: " & SLV32HEX(addr) & " = " & - natural'image(index) severity failure; + natural'image(index) severity warning; -- failure; if sel = '0' and rising_edge(strobe) then latched := index; @@ -114,7 +114,7 @@ begin -- behavioral if sel = '0' then data <= storage(latched); -- assert false -- DEBUG - -- report "romRD["& natural'image(index) &"]="& SLV32HEX(storage(index)); + -- report "romRD["& natural'image(index) &"]="& SLV32HEX(storage(index)); else data <= (others => 'X'); end if; diff --git a/cMIPS/vhdl/packageMemory.vhd b/cMIPS/vhdl/packageMemory.vhd index f1fc694e67e684d2336cc26888ca0d0097f98f7f..da8c7e8ed668f8a92803b68add24488a418b3a6a 100644 --- a/cMIPS/vhdl/packageMemory.vhd +++ b/cMIPS/vhdl/packageMemory.vhd @@ -29,7 +29,7 @@ package p_MEMORY is -- which means having an adder in the critical path. Not good. -- The address ranges for ROM, RAM and I/O must be distinct in the - -- uppermost 12 bits of the address (bits 31..16). + -- uppermost 16 bits of the address (bits 31..16). constant HI_SEL_BITS : integer := 31; constant LO_SEL_BITS : integer := 16; @@ -43,15 +43,15 @@ package p_MEMORY is constant x_INST_BASE_ADDR : reg32 := x"00000000"; constant x_INST_MEM_SZ : reg32 := x"00004000"; constant x_DATA_BASE_ADDR : reg32 := x"00040000"; - constant x_DATA_MEM_SZ : reg32 := x"00004000"; + constant x_DATA_MEM_SZ : reg32 := x"00040000"; constant x_IO_BASE_ADDR : reg32 := x"0F000000"; constant x_IO_MEM_SZ : reg32 := x"00002000"; constant x_IO_ADDR_RANGE : reg32 := x"00000020"; - constant x_EXCEPTION_0000 : reg32 := x"00000060"; - constant x_EXCEPTION_0100 : reg32 := x"000000A0"; - constant x_EXCEPTION_0180 : reg32 := x"000000C0"; - constant x_EXCEPTION_0200 : reg32 := x"00000200"; - constant x_ENTRY_POINT : reg32 := x"00000300"; + constant x_EXCEPTION_0000 : reg32 := x"00000080"; + constant x_EXCEPTION_0100 : reg32 := x"00000100"; + constant x_EXCEPTION_0180 : reg32 := x"00000180"; + constant x_EXCEPTION_0200 : reg32 := x"00000280"; + constant x_ENTRY_POINT : reg32 := x"00000400"; -- end DO NOT change these names -- constant INST_BASE_ADDR : integer := to_integer(signed(x_INST_BASE_ADDR)); diff --git a/cMIPS/vhdl/tb_cMIPS.vhd b/cMIPS/vhdl/tb_cMIPS.vhd index c8c6fc243e9bc7b692b4e33516bf0b9ba64345f1..01bf3a46a4e806c8ad89971008ceef46291adb68 100644 --- a/cMIPS/vhdl/tb_cMIPS.vhd +++ b/cMIPS/vhdl/tb_cMIPS.vhd @@ -682,25 +682,29 @@ entity ram_addr_decode is -- CPU side triggers access addr : in reg32; -- CPU address aVal : out std_logic; -- data address (act=0) dev_select : out reg4); -- select input to CPU - constant LO_ADDR : integer := 0; - constant HI_ADDR : integer := log2_ceil(DATA_MEM_SZ); end entity ram_addr_decode; architecture behavioral of ram_addr_decode is + constant LO_ADDR : integer := log2_ceil(DATA_BASE_ADDR); + constant HI_ADDR : integer := log2_ceil(DATA_BASE_ADDR + DATA_MEM_SZ - 1); + constant in_r : std_logic_vector(HI_ADDR downto LO_ADDR) := (others => '1'); + constant ng_r : std_logic_vector(HI_ADDR downto LO_ADDR) := (others => '0'); + constant oth : std_logic_vector(HI_SEL_BITS downto HI_ADDR+1):=(others => '1'); + constant ng_o : std_logic_vector(HI_SEL_BITS downto HI_ADDR+1):=(others => '0'); begin - aVal <= '0' when ( cpu_d_aVal = '0' and rst = '1' - and (addr(HI_SEL_BITS downto LO_SEL_BITS) - = - x_DATA_BASE_ADDR(HI_SEL_BITS downto LO_SEL_BITS)) ) - else '1'; - - dev_select <= b"0001" - when(cpu_d_aVal = '0' and rst = '1' and - (addr(HI_SEL_BITS downto LO_SEL_BITS) - = - x_DATA_BASE_ADDR(HI_SEL_BITS downto LO_SEL_BITS))) - else b"0000"; + aVal <= '0' when ( cpu_d_aVal = '0' and rst = '1' and + ((addr(HI_ADDR downto LO_ADDR) and in_r) /= ng_r) and + ((addr(HI_SEL_BITS downto HI_ADDR+1) and oth) = ng_o) + ) else + '1'; + + dev_select <= b"0001" when + ( cpu_d_aVal = '0' and rst = '1' and + ((addr(HI_ADDR downto LO_ADDR) and in_r) /= ng_r) and + ((addr(HI_SEL_BITS downto HI_ADDR+1) and oth) = ng_o) + ) else + b"0000"; end architecture behavioral; --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -733,20 +737,29 @@ entity io_addr_decode is -- CPU side triggers access keybd_sel : out std_logic; -- telephone keyboard (act=0) lcd_sel : out std_logic; -- telephone keyboard (act=0) not_waiting : in std_logic); -- no other device is waiting - constant LO_ADDR : integer := log2_ceil(IO_ADDR_RANGE); - constant HI_ADDR : integer := LO_ADDR + (IO_MAX_NUM_DEVS - 1); end entity io_addr_decode; architecture behavioral of io_addr_decode is + constant LO_SEL_ADDR : integer := log2_ceil(IO_ADDR_RANGE); + constant HI_SEL_ADDR : integer := LO_SEL_ADDR + (IO_MAX_NUM_DEVS - 1); + + constant IO_RANGE : integer := IO_ADDR_RANGE * IO_MAX_NUM_DEVS; + constant LO_ADDR : integer := log2_ceil(IO_BASE_ADDR); + constant HI_ADDR : integer := log2_ceil(IO_BASE_ADDR + IO_RANGE - 1); + constant in_r : std_logic_vector(HI_ADDR downto LO_ADDR) := (others => '1'); + constant ng_r : std_logic_vector(HI_ADDR downto LO_ADDR) := (others => '0'); + constant oth : std_logic_vector(HI_SEL_BITS downto HI_ADDR+1):=(others => '1'); + constant ng_o : std_logic_vector(HI_SEL_BITS downto HI_ADDR+1):=(others => '0'); + signal aVal : std_logic; signal dev : integer; -- DEBUGGING only begin - aVal <= '0' when ( cpu_d_aVal = '0' and rst = '1' and not_waiting = '1' - and (addr(HI_SEL_BITS downto LO_SEL_BITS) - = - x_IO_BASE_ADDR(HI_SEL_BITS downto LO_SEL_BITS)) ) - else '1'; + aVal <= '0' when ( cpu_d_aVal = '0' and rst = '1' and not_waiting = '1' and + ((addr(HI_ADDR downto LO_ADDR) and in_r) /= ng_r) and + ((addr(HI_SEL_BITS downto HI_ADDR+1) and oth) = ng_o) + ) else + '1'; U_decode: process(clk, aVal, addr) variable dev_sel : reg4; @@ -778,7 +791,7 @@ begin keybd_sel <= '1'; lcd_sel <= '1'; - dev <= to_integer(signed(addr(HI_ADDR downto LO_ADDR))); + dev <= to_integer(signed(addr(HI_SEL_ADDR downto LO_SEL_ADDR))); case dev is -- to_integer(signed(addr(HI_ADDR downto LO_ADDR))) is when 0 => dev_sel := std_logic_vector(to_signed(is_print, 4));