/mobile Handheld Friendly website
x64 Ubuntu : Intel® Q6600® quad-core |
Each table row shows performance measurements for this ATS program with a particular command-line input value N.
| N | CPU secs | Elapsed secs | Memory KB | Code B | ≈ CPU Load |
|---|---|---|---|---|---|
| 250,000 | 0.02 | 0.03 | ? | 2593 | 0% 0% 25% 100% |
| 2,500,000 | 0.22 | 0.23 | 360 | 2593 | 0% 100% 0% 8% |
| 25,000,000 | 1.88 | 1.88 | 364 | 2593 | 0% 1% 0% 100% |
Read the ↓ make, command line, and program output logs to see how this program was run.
Read fasta-redux benchmark to see what this program should do.
ATS/Anairiats version 0.2.9
(* ** The Computer Language Benchmarks Game ** http://benchmarksgame.alioth.debian.org/ ** ** Author: Hongwei Xi ** Author: Zhiqiang Ren ** ** compilation command: ** atscc -O3 fasta4.dats -msse2 -mfpmath=sse -o fasta4 *) (* ****** ****** *) %{^ #define likely(x) __builtin_expect((x), 1) #define unlikely(x) __builtin_expect((x), 0) %} // end of [{%^] extern fun unlikely0 (x: bool): bool = "mac#unlikely" (* ****** ****** *) staload "libc/SATS/stdio.sats" (* ****** ****** *) macdef IM = 139968U macdef IA = 3877U macdef IC = 29573U #define BUFLEN 60 #define LOOKUP_SIZE 4096 macdef LOOKUP_SCALE = (float_of)(LOOKUP_SIZE - 1) (* ****** ****** *) typedef random_t = uint // unsigned int extern typedef "random_t" = random_t extern fun random_init (seed: &random_t? >> random_t):<> void = "random_init" implement random_init (seed) = seed := 42U fn random_next_lookup (seed: &random_t): float = let val () = seed := (seed * IA + IC) mod IM in (float_of)seed * (LOOKUP_SCALE / (float_of)IM) end // end of [random_next_lookup] (* ****** ****** *) typedef amino_acid = $extype_struct "amino_acid" of { sym= char, prob= float, cprob_lookup= float } // end of [amino_acid] typedef aminoarr (n:int) = @[amino_acid][n] (* ****** ****** *) extern fun fwrite_substring {m,p,n:nat | p + n <= m} (str: string m, beg: size_t p, n: size_t n, out: FILEref): void = "fwrite_substring" extern fun repeat_fasta {len:nat} {n:nat} (out: FILEref, str: string len, n: size_t n): void = "repeat_fasta" implement repeat_fasta {len} {n} (out, str, n): void = let macdef BUFLEN_sz = size1_of_int1 (BUFLEN) val len = string1_length str val () = assert (len >= BUFLEN_sz) fun loop {n,pos:nat | pos <= len} (out: FILEref, n: size_t n, pos: size_t pos):<cloref1> void = if n > BUFLEN_sz then let val left = len - pos in if left >= BUFLEN_sz then let val () = fwrite_substring (str, pos, BUFLEN_sz, out) val _err = fputc_err ('\n', out) in loop (out, n - BUFLEN_sz, pos + BUFLEN_sz) end else let val () = fwrite_substring (str, pos, left, out) val () = fwrite_substring (str, 0, BUFLEN_sz - left, out) val _err = fputc_err ('\n', out) in loop (out, n - BUFLEN_sz, BUFLEN_sz - left) end // end of [if] end else let val left = len - pos in if left >= n then let val () = fwrite_substring (str, pos, n, out) val _err = fputc_err ('\n', out) in // nothing end else let val () = fwrite_substring (str, pos, left, out) val () = fwrite_substring (str, 0, n-left, out) val _err = fputc_err ('\n', out) in // nothing end // end of [if] end (* end of [if] *) // end of [loop] in loop (out, n, 0) end // end of [repeat_fasta] (* ****** ****** *) fun fill_lookuparr {n0:pos} ( lookuparr: &(@[ptr?][LOOKUP_SIZE]) >> @[ptr][LOOKUP_SIZE] , aminoarr: &aminoarr(n0), n0: size_t n0 ) : void = let typedef T = amino_acid fun loop1 {n:nat} {l:addr} .<n>. (pf: !array_v (T, n, l) | p: ptr l, n: size_t n, acc: float):<> void = if n > 0 then let prval (pf1, pf2) = array_v_uncons {T} (pf) val acc = acc + p->prob val () = p->cprob_lookup := acc * LOOKUP_SCALE val () = loop1 (pf2 | p + sizeof<T>, n-1, acc) prval () = pf := array_v_cons {T} (pf1, pf2) in // nothing end // end of [if] // end of [loop1] val () = loop1 (view@ aminoarr | &aminoarr, n0, (float_of)0.0) val () = aminoarr.[n0-1].cprob_lookup := LOOKUP_SCALE fun loop2 {n:nat} {l:addr} .<n>. ( pf: !array_v (ptr?, n, l) >> array_v (ptr, n, l) | aminoarr: &(@[T][n0]), p: ptr l, n: size_t n, fi: float, j0: natLt n0 ) : void = if n > 0 then let var j: natLt n0 = j0 val () = while* {j:nat | j < n0} (j: int j): (j: natLt n0) => (aminoarr.[j].cprob_lookup < fi) let prval () = _meta_info () where { extern praxi _meta_info (): [j+1 < n0] void } // end of [prval] in j := j + 1 end // end of [val] prval (pf1, pf2) = array_v_uncons {ptr?} (pf) val () = !p := &aminoarr.[j] val () = loop2 (pf2 | aminoarr, p+sizeof<ptr>, n-1, fi+(float_of)1, j) in pf := array_v_cons {ptr} (pf1, pf2) end else let prval () = array_v_unnil {ptr?} pf prval () = pf := array_v_nil {ptr} () in // nothing end // end of [if] // end of [loop2] val () = loop2 (view@ lookuparr | aminoarr, &lookuparr, LOOKUP_SIZE, (float_of)0.0, 0) in // nothing end // end of [fill_lookuparr] (* ****** ****** *) typedef lookuparr = @[ptr][LOOKUP_SIZE] (* ****** ****** *) extern fun randomize {n0:pos} {n:nat} ( aminoarr: &aminoarr(n0), n0: size_t n0, n: int n, seed: &random_t ) : void = "randomize" implement randomize (aminoarr, n0, n, seed) = () where { // extern fun fwrite_byte (buf: ptr, n: int, out: FILEref):<> void = "fwrite_byte" // end of [fwrite_byte] // var !p_lookuparr with pf_lookuparr = @[ptr][LOOKUP_SIZE]() var !p_buf with pf_buf = @[char?][BUFLEN+1]() val () = p_buf->[BUFLEN] := '\n' val () = fill_lookuparr (!p_lookuparr, aminoarr, n0) var i: Nat = 0 and j: natLte (BUFLEN) = 0 val () = while (i < n) let val () = if :(j: natLt (BUFLEN)) => (j = BUFLEN) then (fwrite_byte (p_buf, BUFLEN+1, stdout_ref); j := 0) // end of [if] // val r = random_next_lookup (seed) val ri = int_of_float (r) val [ri:int] ri = int1_of_int (ri) prval () = _meta_info () where { extern praxi _meta_info (): [0 <= ri && ri < LOOKUP_SIZE] void } // end of [prval] // typedef T = amino_acid var u: ptr = p_lookuparr->[ri] // extern castfn __cast (u: ptr) :<> [l:addr] (T @ l, T @ l -<lin,prf> void | ptr l) val () = while (true) let val (pf, fpf | u1) = __cast (u) val r1 = u1->cprob_lookup prval () = fpf (pf) in if unlikely0(r1 < r) then u := u + sizeof<T> else break end // end of [val] // val (pf, fpf | u1) = __cast (u) val () = p_buf->[j] := u1->sym prval () = fpf (pf) // in i := i + 1; j := j + 1 end // end of [while] val () = p_buf->[j] := '\n' val () = fwrite_byte (p_buf, j+1, stdout_ref) } // end of [randomize] (* ****** ****** *) implement main_dummy () = () (* ****** ****** *) %{$ #define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0])) ats_void_type mainats ( ats_int_type argc, ats_ptr_type argv0 ) { char **argv = (char**)argv0 ; int n = argc > 1 ? atoi( argv[1] ) : 512; random_t rand; random_init(&rand); // fprintf(stdout, ">ONE Homo sapiens alu\n"); repeat_fasta((ats_ref_type)stdout, (ats_ptr_type)alu, n*2); // fprintf(stdout, ">TWO IUB ambiguity codes\n"); randomize(aminoacids, ARRAY_SIZE(aminoacids), n*3, &rand); // fprintf(stdout, ">THREE Homo sapiens frequency\n"); randomize(homosapiens, ARRAY_SIZE(homosapiens), n*5, &rand); // return; } // end of [mainats] %} (* ****** ****** *) %{^ typedef struct _amino_acid { char sym; float prob; float cprob_lookup; } amino_acid ; // // let us do initialization in C to avoid many hassels // amino_acid aminoacids[] = { { 'a', 0.27 }, { 'c', 0.12 }, { 'g', 0.12 }, { 't', 0.27 }, // { 'B', 0.02 }, { 'D', 0.02 }, { 'H', 0.02 }, { 'K', 0.02 }, { 'M', 0.02 }, { 'N', 0.02 }, { 'R', 0.02 }, { 'S', 0.02 }, { 'V', 0.02 }, { 'W', 0.02 }, { 'Y', 0.02 }, } ; amino_acid homosapiens[] = { { 'a', 0.3029549426680 }, { 'c', 0.1979883004921 }, { 'g', 0.1975473066391 }, { 't', 0.3015094502008 }, } ; static const char alu[] = "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTG" "GGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGA" "GACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAA" "AATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT" "CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAAC" "CCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTG" "CACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA"; // ats_void_type fwrite_substring ( ats_ptr_type str, ats_size_type beg , ats_size_type len, ats_ptr_type out ) { fwrite_unlocked(((char*)str)+beg, 1, len, (FILE*)out) ; return ; } // end of [fwrite_substring] ats_void_type fwrite_byte (ats_ptr_type buf, ats_int_type n, ats_ptr_type fil) { fwrite_unlocked ((void*)buf, (size_t)1, (size_t)n, (FILE*)fil) ; return ; } // end of [fasta_fwrite_byte] // static ats_void_type mainats (ats_int_type argc, ats_ptr_type argv) ; %} // end of [%{^] (* ****** ****** *) (* end of [fasta4.dats] *)
Tue, 22 Jan 2013 19:20:33 GMT MAKE: /usr/local/src/ats-lang-anairiats-0.2.9/bin/atscc -pipe -Wall -O3 -fomit-frame-pointer -march=native -mfpmath=sse -msse3 fastaredux.dats -o fastaredux.ats-4.ats_run /usr/local/src/ats-lang-anairiats-0.2.9/bin/atsopt --output fastaredux_dats.c --dynamic fastaredux.dats In file included from fastaredux_dats.c:19:0: /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/basics.cats: In function ‘atspre_fprint_newline’: /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/basics.cats:271:11: warning: variable ‘n2’ set but not used [-Wunused-but-set-variable] /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/basics.cats:271:7: warning: variable ‘n1’ set but not used [-Wunused-but-set-variable] fastaredux_dats.c: In function ‘random_init’: fastaredux_dats.c:196:1: warning: label ‘__ats_lab_random_init’ defined but not used [-Wunused-label] fastaredux_dats.c: In function ‘random_next_lookup_1’: fastaredux_dats.c:218:1: warning: label ‘__ats_lab_random_next_lookup_1’ defined but not used [-Wunused-label] fastaredux_dats.c: In function ‘repeat_fasta’: fastaredux_dats.c:360:1: warning: label ‘__ats_lab_repeat_fasta’ defined but not used [-Wunused-label] fastaredux_dats.c: In function ‘loop2_6’: fastaredux_dats.c:438:1: warning: label ‘__ats_lab_1’ defined but not used [-Wunused-label] fastaredux_dats.c: In function ‘fill_lookuparr_4’: fastaredux_dats.c:471:1: warning: label ‘__ats_lab_fill_lookuparr_4’ defined but not used [-Wunused-label] fastaredux_dats.c: In function ‘randomize’: fastaredux_dats.c:569:1: warning: label ‘__ats_lab_3’ defined but not used [-Wunused-label] fastaredux_dats.c:515:1: warning: label ‘__ats_lab_randomize’ defined but not used [-Wunused-label] In file included from fastaredux_dats.c:29:0: fastaredux_dats.c: At top level: /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/pointer.cats:52:14: warning: ‘atspre_null_ptr’ defined but not used [-Wunused-variable] In file included from fastaredux_dats.c:30:0: /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/printf.cats:57:1: warning: ‘atspre_fprintf_err’ defined but not used [-Wunused-function] /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/printf.cats:69:1: warning: ‘atspre_fprintf_exn’ defined but not used [-Wunused-function] /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/printf.cats:87:1: warning: ‘atspre_printf_exn’ defined but not used [-Wunused-function] /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/printf.cats:105:1: warning: ‘atspre_prerrf_exn’ defined but not used [-Wunused-function] In file included from fastaredux_dats.c:33:0: /usr/local/src/ats-lang-anairiats-0.2.9/prelude/CATS/string.cats:351:14: warning: ‘atspre_stropt_none’ defined but not used [-Wunused-variable] fastaredux_dats.c:341:1: warning: ‘loop_3_closure_make’ defined but not used [-Wunused-function] gcc -I/usr/local/src/ats-lang-anairiats-0.2.9/ -I/usr/local/src/ats-lang-anairiats-0.2.9/ccomp/runtime/ -L/usr/local/src/ats-lang-anairiats-0.2.9/ccomp/lib64/ /usr/local/src/ats-lang-anairiats-0.2.9/ccomp/runtime/ats_prelude.c -pipe -Wall -O3 -fomit-frame-pointer -march=native -mfpmath=sse -msse3 fastaredux_dats.c -o fastaredux.ats-4.ats_run -lats 0.36s to complete and log all make actions COMMAND LINE: ./fastaredux.ats-4.ats_run 25000000 (TRUNCATED) PROGRAM OUTPUT: >ONE Homo sapiens alu GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG GAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATC GCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGC GGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGG TCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAA AAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAG GAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACT CCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCC TGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAG ACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGC GTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGA ACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGA CAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCA CTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCA ACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCG CCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGG AGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTC CGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCG AGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACC CCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAG CTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAG CCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGG CCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATC ACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAA AAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGC TGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCC ACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGG CTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGG AGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATT AGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAA TCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGC CTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAA TCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAG CCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGT GGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCG GGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAG CGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTG GGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATG GTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGT AATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTT GCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCT CAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCG GGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTC TCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACT CGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAG ATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGG CGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTG AGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATA CAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGG CAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGC ACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCAC GCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTC GAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCG GGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCT TGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGG CGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCA GCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGG CCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGC GCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGG CGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGA CTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGG CCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAA ACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCC CAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGT GAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAA AGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGG ATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTAC TAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGA GGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGC GCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGG TGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTC AGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAA ATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGA GAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTG TAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGAC CAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGT GGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAAC CCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACA GAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACT TTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAAC ATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCC TGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAG GTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCG TCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAG GCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCC GTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCT ACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCC GAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCC GGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCAC CTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAA ATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTG AGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCAC TGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCT CACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAG TTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAG CCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATC GCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCT GGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATC CCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCC TGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGG CGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCG AGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGG AGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGT GAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAA TCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGC AGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCA AAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGG CGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTC TACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCG GGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGAT CGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCG CGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAG GTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACA AAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCA GGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCAC TCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGC CTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGA GACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGG CGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTG AACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCG ACAGAGCGAGACTCCGTCTCAAAAAGGCCGG