From ee32822eaee0ec312804c1e9769c3d8a001806ae Mon Sep 17 00:00:00 2001 From: codeunsolved Date: Mon, 18 Nov 2019 14:42:46 +0800 Subject: [PATCH 01/23] Force arg to bytes to support non-ASCII encoding --- pysam/libcutils.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysam/libcutils.pyx b/pysam/libcutils.pyx index ab8e9a6..fe61bb8 100644 --- a/pysam/libcutils.pyx +++ b/pysam/libcutils.pyx @@ -284,7 +284,7 @@ def _pysam_dispatch(collection, if skip_next: skip_next = False continue - if arg in SIMPLE_FLAGS or (len(arg) > 2 and arg.startswith('-@')): + if arg in SIMPLE_FLAGS or (len(arg) > 2 and force_bytes(arg).startswith(b'-@')): continue if arg in ARGUMENTS: skip_next = True From 7a5155238c4ca4eeed271491407607ef335c34aa Mon Sep 17 00:00:00 2001 From: amblina Date: Mon, 25 Nov 2019 16:21:15 +0000 Subject: [PATCH 02/23] Removal of unused import Import is overwritten in the next line with cy_build --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 4c97e87..f6009d8 100644 --- a/setup.py +++ b/setup.py @@ -29,7 +29,7 @@ import sys import sysconfig from contextlib import contextmanager -from setuptools import Extension, setup +from setuptools import setup from cy_build import CyExtension as Extension, cy_build_ext as build_ext try: import cython From e265186125fb5bcf67e8e4d846af56d0d2341146 Mon Sep 17 00:00:00 2001 From: Robert Lasko Date: Tue, 26 Nov 2019 10:32:33 -0500 Subject: [PATCH 03/23] Prevent segfault on python AlignedSegment.compare(other=None) --- pysam/libcalignedsegment.pyx | 4 ++++ tests/AlignedSegment_test.py | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/pysam/libcalignedsegment.pyx b/pysam/libcalignedsegment.pyx index 02ef5b6..2c3ed44 100644 --- a/pysam/libcalignedsegment.pyx +++ b/pysam/libcalignedsegment.pyx @@ -999,6 +999,10 @@ cdef class AlignedSegment: <,=,> to *other* ''' + # avoid segfault when other equals None + if other is None: + return -1 + cdef int retval, x cdef bam1_t *t cdef bam1_t *o diff --git a/tests/AlignedSegment_test.py b/tests/AlignedSegment_test.py index 48589e6..cb628d2 100644 --- a/tests/AlignedSegment_test.py +++ b/tests/AlignedSegment_test.py @@ -78,6 +78,12 @@ def testSettingTagInEmptyRead(self): def testCompare(self): '''check comparison functions.''' a = self.build_read() + b = None + + self.assertFalse(a is b) + self.assertFalse(a == b) + self.assertFalse(a.compare(b)) + b = self.build_read() self.assertEqual(0, a.compare(b)) From 5db98a3a3b0e7fc7015021e8e58a8f93cd274751 Mon Sep 17 00:00:00 2001 From: Robert Lasko Date: Thu, 28 Nov 2019 11:06:44 -0500 Subject: [PATCH 04/23] Fix assertion type for unit test comparison --- tests/AlignedSegment_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/AlignedSegment_test.py b/tests/AlignedSegment_test.py index cb628d2..3c5dda5 100644 --- a/tests/AlignedSegment_test.py +++ b/tests/AlignedSegment_test.py @@ -82,7 +82,7 @@ def testCompare(self): self.assertFalse(a is b) self.assertFalse(a == b) - self.assertFalse(a.compare(b)) + self.assertEqual(-1, a.compare(b)) b = self.build_read() From cbfd0da1813e9fc534959849da13cffa736fbd79 Mon Sep 17 00:00:00 2001 From: Kevin Jacobs Date: Thu, 5 Dec 2019 10:34:25 -0500 Subject: [PATCH 05/23] [KBJ] First round of cleanups --- pysam/VCF.py.obsolete | 1087 --------------------- pysam/alternatives.py.obsolete | 82 -- pysam/libcalignedsegment.pxd | 2 + pysam/libcalignedsegment.pyx | 1613 ++++++++++++++------------------ pysam/libcalignmentfile.pxd | 4 +- pysam/libcalignmentfile.pyx | 785 ++++++++-------- pysam/libcbcf.pxd | 2 +- pysam/libcbcf.pyx | 4 +- pysam/libcbgzf.pyx | 7 +- pysam/libcfaidx.pxd | 2 + pysam/libcfaidx.pyx | 158 ++-- pysam/libchtslib.pxd | 2 + pysam/libchtslib.pyx | 31 +- pysam/libctabix.pxd | 7 +- pysam/libctabix.pyx | 458 ++++----- pysam/libctabixproxies.pxd | 2 + pysam/libctabixproxies.pyx | 306 +++--- pysam/libcutils.pxd | 2 + pysam/libcutils.pyx | 2 + pysam/libcvcf.pxd | 2 - pysam/libcvcf.pyx | 1203 ------------------------ setup.py | 7 +- 22 files changed, 1496 insertions(+), 4272 deletions(-) delete mode 100644 pysam/VCF.py.obsolete delete mode 100644 pysam/alternatives.py.obsolete delete mode 100644 pysam/libcvcf.pxd delete mode 100644 pysam/libcvcf.pyx diff --git a/pysam/VCF.py.obsolete b/pysam/VCF.py.obsolete deleted file mode 100644 index 78e6220..0000000 --- a/pysam/VCF.py.obsolete +++ /dev/null @@ -1,1087 +0,0 @@ -# -# Code to read, write and edit VCF files -# -# VCF lines are encoded as a dictionary with these keys (note: all lowercase): -# 'chrom': string -# 'pos': integer -# 'id': string -# 'ref': string -# 'alt': list of strings -# 'qual': integer -# 'filter': None (missing value), or list of keys (strings); empty list parsed as ["PASS"] -# 'info': dictionary of values (see below) -# 'format': list of keys (strings) -# sample keys: dictionary of values (see below) -# -# The sample keys are accessible through vcf.getsamples() -# -# A dictionary of values contains value keys (defined in ##INFO or ##FORMAT lines) which map -# to a list, containign integers, floats, strings, or characters. Missing values are replaced -# by a particular value, often -1 or . -# -# Genotypes are not stored as a string, but as a list of 1 or 3 elements (for haploid and diploid samples), -# the first (and last) the integer representing an allele, and the second the separation character. -# Note that there is just one genotype per sample, but for consistency the single element is stored in a list. -# -# Header lines other than ##INFO, ##FORMAT and ##FILTER are stored as (key, value) pairs and are accessible -# through getheader() -# -# The VCF class can be instantiated with a 'regions' variable consisting of tuples (chrom,start,end) encoding -# 0-based half-open segments. Only variants with a position inside the segment will be parsed. A regions -# parser is available under parse_regions. -# -# When instantiated, a reference can be passed to the VCF class. This may be any class that supports a -# fetch(chrom, start, end) method. -# -# -# -# NOTE: the position that is returned to Python is 0-based, NOT 1-based as in the VCF file. -# -# -# -# TODO: -# only v4.0 writing is complete; alleles are not converted to v3.3 format -# - -from collections import namedtuple, defaultdict -from operator import itemgetter -import sys, re, copy, bisect - -import pysam - -gtsRegEx = re.compile("[|/\\\\]") -alleleRegEx = re.compile('^[ACGTN]+$') - -# Utility function. Uses 0-based coordinates -def get_sequence(chrom, start, end, fa): - # obtain sequence from .fa file, without truncation - if end<=start: return "" - if not fa: return "N"*(end-start) - if start<0: return "N"*(-start) + get_sequence(chrom, 0, end, fa).upper() - sequence = fa.fetch(chrom, start, end).upper() - if len(sequence) < end-start: sequence += "N"*(end-start-len(sequence)) - return sequence - -# Utility function. Parses a region string -def parse_regions( string ): - result = [] - for r in string.split(','): - elts = r.split(':') - chrom, start, end = elts[0], 0, 3000000000 - if len(elts)==1: pass - elif len(elts)==2: - if len(elts[1])>0: - ielts = elts[1].split('-') - if len(ielts) != 2: ValueError("Don't understand region string '%s'" % r) - try: start, end = int(ielts[0])-1, int(ielts[1]) - except: raise ValueError("Don't understand region string '%s'" % r) - else: - raise ValueError("Don't understand region string '%s'" % r) - result.append( (chrom,start,end) ) - return result - - -FORMAT = namedtuple('FORMAT','id numbertype number type description missingvalue') - -########################################################################################################### -# -# New class -# -########################################################################################################### - -class VCFRecord(object): - '''vcf record. - - initialized from data and vcf meta - ''' - - data = None - vcf = None - - def __init__(self, data, vcf): - self.data, self.vcf = data, vcf - - if len(data) != len(self.vcf._samples): - self.error(str(data), - self.BAD_NUMBER_OF_COLUMNS, - "expected %s for %s samples (%s), got %s" % \ - (len(self.vcf._samples), - len(self.vcf._samples), - self.vcf._samples, - len(data))) - - property contig: - def __get__( self ): return self.data[0] - - property pos: - def __get__( self ): - return self.data.pos - - property id: - def __get__( self ): return self.data[2] - - property ref: - def __get__(self ): - # note: gerton substitutes reference if it can be fixed. - return self.data[3].upper() - - property alt: - def __get__(self): - # convert v3.3 to v4.0 alleles below - alt = self.data[4] - if alt == ".": alt = [] - else: alt = alt.upper().split(',') - return alt - - property qual: - def __get__(self): - qual = self.data[5] - if qual == ".": qual = -1 - else: - try: qual = float(qual) - except: self.error(line,self.QUAL_NOT_NUMERICAL) - - property filter: - def __get__(self): - # postpone checking that filters exist. Encode missing filter or no filtering as empty list - if cols[6] == "." or cols[6] == "PASS" or cols[6] == "0": filter = [] - else: filter = cols[6].split(';') - - return filter - - property info: - def __get__(self): - col = self.data[7] - # dictionary of keys, and list of values - info = {} - if col != ".": - for blurp in col.split(';'): - elts = blurp.split('=') - if len(elts) == 1: v = None - elif len(elts) == 2: v = elts[1] - else: self.error(str(self.data),self.ERROR_INFO_STRING) - info[elts[0]] = self.parse_formatdata(elts[0], v, self.vcf._info, line) - return info - - property format: - def __get__(self): - return self.data[8].split(':') - - def __getitem__(self, key): - - # parse sample columns - values = self.data[self.vcf._sample2column[key]].split(':') - alt = self.alt - format = self.format - - if len(values) > len(format): - self.error(line,self.BAD_NUMBER_OF_VALUES,"(found %s values in element %s; expected %s)" % (len(values),sample,len(format))) - - result = {} - for idx in range(len(format)): - expected = self.vcf.get_expected(format[idx], self.vcf._format, alt) - if idx < len(values): value = values[idx] - else: - if expected == -1: value = "." - else: value = ",".join(["."]*expected) - - result[format[idx]] = self.vcf.parse_formatdata(format[idx], value, self.vcf._format, line) - if expected != -1 and len(result[format[idx]]) != expected: - self.error(str(self.data),self.BAD_NUMBER_OF_PARAMETERS, - "id=%s, expected %s parameters, got %s" % (format[idx],expected,result[format[idx]])) - if len(result[format[idx]] ) < expected: result[format[idx]] += [result[format[idx]][-1]]*(expected-len(result[format[idx]])) - result[format[idx]] = result[format[idx]][:expected] - - return result - - def __str__(self): - return str(self.data) - -class VCF: - - # types - NT_UNKNOWN = 0 - NT_NUMBER = 1 - NT_ALLELES = 2 - NT_NR_ALLELES = 3 - NT_GENOTYPES = 4 - NT_PHASED_GENOTYPES = 5 - - _errors = { 0:"UNKNOWN_FORMAT_STRING:Unknown file format identifier", - 1:"BADLY_FORMATTED_FORMAT_STRING:Formatting error in the format string", - 2:"BADLY_FORMATTED_HEADING:Did not find 9 required headings (CHROM, POS, ..., FORMAT) %s", - 3:"BAD_NUMBER_OF_COLUMNS:Wrong number of columns found (%s)", - 4:"POS_NOT_NUMERICAL:Position column is not numerical", - 5:"UNKNOWN_CHAR_IN_REF:Unknown character in reference field", - 6:"V33_BAD_REF:Reference should be single-character in v3.3 VCF", - 7:"V33_BAD_ALLELE:Cannot interpret allele for v3.3 VCF", - 8:"POS_NOT_POSITIVE:Position field must be >0", - 9:"QUAL_NOT_NUMERICAL:Quality field must be numerical, or '.'", - 10:"ERROR_INFO_STRING:Error while parsing info field", - 11:"ERROR_UNKNOWN_KEY:Unknown key (%s) found in formatted field (info; format; or filter)", - 12:"ERROR_FORMAT_NOT_NUMERICAL:Expected integer or float in formatted field; got %s", - 13:"ERROR_FORMAT_NOT_CHAR:Eexpected character in formatted field; got string", - 14:"FILTER_NOT_DEFINED:Identifier (%s) in filter found which was not defined in header", - 15:"FORMAT_NOT_DEFINED:Identifier (%s) in format found which was not defined in header", - 16:"BAD_NUMBER_OF_VALUES:Found too many of values in sample column (%s)", - 17:"BAD_NUMBER_OF_PARAMETERS:Found unexpected number of parameters (%s)", - 18:"BAD_GENOTYPE:Cannot parse genotype (%s)", - 19:"V40_BAD_ALLELE:Bad allele found for v4.0 VCF (%s)", - 20:"MISSING_REF:Reference allele missing", - 21:"V33_UNMATCHED_DELETION:Deleted sequence does not match reference (%s)", - 22:"V40_MISSING_ANGLE_BRACKETS:Format definition is not deliminted by angular brackets", - 23:"FORMAT_MISSING_QUOTES:Description field in format definition is not surrounded by quotes", - 24:"V40_FORMAT_MUST_HAVE_NAMED_FIELDS:Fields in v4.0 VCF format definition must have named fields", - 25:"HEADING_NOT_SEPARATED_BY_TABS:Heading line appears separated by spaces, not tabs", - 26:"WRONG_REF:Wrong reference %s", - 27:"ERROR_TRAILING_DATA:Numerical field ('%s') has semicolon-separated trailing data", - 28:"BAD_CHR_TAG:Error calculating chr tag for %s", - 29:"ZERO_LENGTH_ALLELE:Found zero-length allele", - 30:"MISSING_INDEL_ALLELE_REF_BASE:Indel alleles must begin with single reference base" - } - - # tag-value pairs; tags are not unique; does not include fileformat, INFO, FILTER or FORMAT fields - _header = [] - - # version number; 33=v3.3; 40=v4.0 - _version = 40 - - # info, filter and format data - _info = {} - _filter = {} - _format = {} - - # header; and required columns - _required = ["CHROM","POS","ID","REF","ALT","QUAL","FILTER","INFO","FORMAT"] - _samples = [] - - # control behaviour - _ignored_errors = set([11]) # ERROR_UNKNOWN_KEY - _warn_errors = set([]) - _leftalign = False - - # reference sequence - _reference = None - - # regions to include; None includes everything - _regions = None - - # statefull stuff - _lineno = -1 - _line = None - _lines = None - - def __init__(self, _copy=None, reference=None, regions=None, lines=None, leftalign=False): - # make error identifiers accessible by name - for id in self._errors.keys(): self.__dict__[self._errors[id].split(':')[0]] = id - if _copy != None: - self._leftalign = _copy._leftalign - self._header = _copy._header[:] - self._version = _copy._version - self._info = copy.deepcopy(_copy._info) - self._filter = copy.deepcopy(_copy._filter) - self._format = copy.deepcopy(_copy._format) - self._samples = _copy._samples[:] - self._sample2column = copy.deepcopy(_copy._sample2column) - self._ignored_errors = copy.deepcopy(_copy._ignored_errors) - self._warn_errors = copy.deepcopy(_copy._warn_errors) - self._reference = _copy._reference - self._regions = _copy._regions - if reference: self._reference = reference - if regions: self._regions = regions - if leftalign: self._leftalign = leftalign - self._lines = lines - - def error(self,line,error,opt=None): - if error in self._ignored_errors: return - errorlabel, errorstring = self._errors[error].split(':') - if opt: errorstring = errorstring % opt - errwarn = ["Error","Warning"][error in self._warn_errors] - sys.stderr.write("Line %s: '%s'\n%s %s: %s\n" % (self._lineno,line,errwarn,errorlabel,errorstring)) - if error in self._warn_errors: return - raise ValueError(errorstring) - - def parse_format(self,line,format,filter=False): - if self._version >= 40: - if not format.startswith('<'): - self.error(line,self.V40_MISSING_ANGLE_BRACKETS) - format = "<"+format - if not format.endswith('>'): - self.error(line,self.V40_MISSING_ANGLE_BRACKETS) - format += ">" - format = format[1:-1] - data = {'id':None,'number':None,'type':None,'descr':None} - idx = 0 - while len(format.strip())>0: - elts = format.strip().split(',') - first, rest = elts[0], ','.join(elts[1:]) - if first.find('=') == -1 or (first.find('"')>=0 and first.find('=') > first.find('"')): - if self._version >= 40: self.error(line,self.V40_FORMAT_MUST_HAVE_NAMED_FIELDS) - if idx == 4: self.error(line,self.BADLY_FORMATTED_FORMAT_STRING) - first = ["ID=","Number=","Type=","Description="][idx] + first - if first.startswith('ID='): data['id'] = first.split('=')[1] - elif first.startswith('Number='): data['number'] = first.split('=')[1] - elif first.startswith('Type='): data['type'] = first.split('=')[1] - elif first.startswith('Description='): - elts = format.split('"') - if len(elts)<3: - self.error(line,self.FORMAT_MISSING_QUOTES) - elts = first.split('=') + [rest] - data['descr'] = elts[1] - rest = '"'.join(elts[2:]) - if rest.startswith(','): rest = rest[1:] - else: - self.error(line,self.BADLY_FORMATTED_FORMAT_STRING) - format = rest - idx += 1 - if filter and idx==1: idx=3 # skip number and type fields for FILTER format strings - if not data['id']: self.error(line,self.BADLY_FORMATTED_FORMAT_STRING) - if not data['descr']: - self.error(line,self.BADLY_FORMATTED_FORMAT_STRING) - data['descr'] = '' - if not data['type'] and not data['number']: - # fine, ##filter format - return FORMAT(data['id'],self.NT_NUMBER,0,"Flag",data['descr'],'.') - if not data['type'] in ["Integer","Float","Character","String","Flag"]: - self.error(line,self.BADLY_FORMATTED_FORMAT_STRING) - # I would like a missing-value field, but it isn't there - if data['type'] in ['Integer','Float']: data['missing'] = None # Do NOT use arbitrary int/float as missing value - else: data['missing'] = '.' - if not data['number']: self.error(line,self.BADLY_FORMATTED_FORMAT_STRING) - try: - n = int(data['number']) - t = self.NT_NUMBER - except ValueError: - n = -1 - if data['number'] == '.': t = self.NT_UNKNOWN - elif data['number'] == '#alleles': t = self.NT_ALLELES - elif data['number'] == '#nonref_alleles': t = self.NT_NR_ALLELES - elif data['number'] == '#genotypes': t = self.NT_GENOTYPES - elif data['number'] == '#phased_genotypes': t = self.NT_PHASED_GENOTYPES - else: - self.error(line,self.BADLY_FORMATTED_FORMAT_STRING) - return FORMAT(data['id'],t,n,data['type'],data['descr'],data['missing']) - - - def format_format( self, fmt, filter=False ): - values = [('ID',fmt.id)] - if fmt.number != None and not filter: - if fmt.numbertype == self.NT_UNKNOWN: nmb = "." - elif fmt.numbertype == self.NT_NUMBER: nmb = str(fmt.number) - elif fmt.numbertype == self.NT_ALLELES: nmb = "#alleles" - elif fmt.numbertype == self.NT_NR_ALLELES: nmb = "#nonref_alleles" - elif fmt.numbertype == self.NT_GENOTYPES: nmb = "#genotypes" - elif fmt.numbertype == self.NT_PHASED_GENOTYPES: nmb = "#phased_genotypes" - else: - raise ValueError("Unknown number type encountered: %s" % fmt.numbertype) - values.append( ('Number',nmb) ) - values.append( ('Type', fmt.type) ) - values.append( ('Description', '"' + fmt.description + '"') ) - if self._version == 33: - format = ",".join(v for k,v in values) - else: - format = "<" + (",".join( "%s=%s" % (k,v) for (k,v) in values )) + ">" - return format - - def get_expected(self, format, formatdict, alt): - fmt = formatdict[format] - if fmt.numbertype == self.NT_UNKNOWN: return -1 - if fmt.numbertype == self.NT_NUMBER: return fmt.number - if fmt.numbertype == self.NT_ALLELES: return len(alt)+1 - if fmt.numbertype == self.NT_NR_ALLELES: return len(alt) - if fmt.numbertype == self.NT_GENOTYPES: return ((len(alt)+1)*(len(alt)+2)) // 2 - if fmt.numbertype == self.NT_PHASED_GENOTYPES: return (len(alt)+1)*(len(alt)+1) - return 0 - - - def _add_definition(self, formatdict, key, data, line ): - if key in formatdict: return - self.error(line,self.ERROR_UNKNOWN_KEY,key) - if data == None: - formatdict[key] = FORMAT(key,self.NT_NUMBER,0,"Flag","(Undefined tag)",".") - return - if data == []: data = [""] # unsure what type -- say string - if type(data[0]) == type(0.0): - formatdict[key] = FORMAT(key,self.NT_UNKNOWN,-1,"Float","(Undefined tag)",None) - return - if type(data[0]) == type(0): - formatdict[key] = FORMAT(key,self.NT_UNKNOWN,-1,"Integer","(Undefined tag)",None) - return - formatdict[key] = FORMAT(key,self.NT_UNKNOWN,-1,"String","(Undefined tag)",".") - - - # todo: trim trailing missing values - def format_formatdata( self, data, format, key=True, value=True, separator=":" ): - output, sdata = [], [] - if type(data) == type([]): # for FORMAT field, make data with dummy values - d = {} - for k in data: d[k] = [] - data = d - # convert missing values; and silently add definitions if required - for k in data: - self._add_definition( format, k, data[k], "(output)" ) - for idx,v in enumerate(data[k]): - if v == format[k].missingvalue: data[k][idx] = "." - # make sure GT comes first; and ensure fixed ordering; also convert GT data back to string - for k in data: - if k != 'GT': sdata.append( (k,data[k]) ) - sdata.sort() - if 'GT' in data: - sdata = [('GT',map(self.convertGTback,data['GT']))] + sdata - for k,v in sdata: - if v == []: v = None - if key and value: - if v != None: output.append( k+"="+','.join(map(str,v)) ) - else: output.append( k ) - elif key: output.append(k) - elif value: - if v != None: output.append( ','.join(map(str,v)) ) - else: output.append( "." ) # should not happen - # snip off trailing missing data - while len(output) > 1: - last = output[-1].replace(',','').replace('.','') - if len(last)>0: break - output = output[:-1] - return separator.join(output) - - - def enter_default_format(self): - for f in [FORMAT('GT',self.NT_NUMBER,1,'String','Genotype','.'), - FORMAT('GQ',self.NT_NUMBER,1,'Integer','Genotype Quality',-1), - FORMAT('DP',self.NT_NUMBER,1,'Integer','Read depth at this position for this sample',-1), - FORMAT('HQ',self.NT_UNKNOWN,-1,'Integer','Haplotype Quality',-1), # unknown number, since may be haploid - FORMAT('FT',self.NT_NUMBER,1,'String','Sample Genotype Filter','.')]: - if f.id not in self._format: - self._format[f.id] = f - - def parse_header( self, line ): - assert line.startswith('##') - elts = line[2:].split('=') - key = elts[0].strip() - value = '='.join(elts[1:]).strip() - if key == "fileformat": - if value == "VCFv3.3": - self._version = 33 - elif value == "VCFv4.0": - self._version = 40 - elif value == "VCFv4.1": - self._version = 41 - else: - self.error(line,self.UNKNOWN_FORMAT_STRING) - elif key == "INFO": - f = self.parse_format(line, value) - self._info[ f.id ] = f - elif key == "FILTER": - f = self.parse_format(line, value, filter=True) - self._filter[ f.id ] = f - elif key == "FORMAT": - f = self.parse_format(line, value) - self._format[ f.id ] = f - else: - # keep other keys in the header field - self._header.append( (key,value) ) - - - def write_header( self, stream ): - stream.write("##fileformat=VCFv%s.%s\n" % (self._version // 10, self._version % 10)) - for key,value in self._header: stream.write("##%s=%s\n" % (key,value)) - for var,label in [(self._info,"INFO"),(self._filter,"FILTER"),(self._format,"FORMAT")]: - for f in var.itervalues(): stream.write("##%s=%s\n" % (label,self.format_format(f,filter=(label=="FILTER")))) - - - def parse_heading( self, line ): - assert line.startswith('#') - assert not line.startswith('##') - headings = line[1:].split('\t') - if len(headings)==1 and len(line[1:].split()) >= 9: - self.error(line,self.HEADING_NOT_SEPARATED_BY_TABS) - headings = line[1:].split() - - for i,s in enumerate(self._required): - - if len(headings)<=i or headings[i] != s: - - if len(headings) <= i: - err = "(%sth entry not found)" % (i+1) - else: - err = "(found %s, expected %s)" % (headings[i],s) - - #self.error(line,self.BADLY_FORMATTED_HEADING,err) - - # allow FORMAT column to be absent - if len(headings) == 8: - headings.append("FORMAT") - else: - self.error(line,self.BADLY_FORMATTED_HEADING,err) - - self._samples = headings[9:] - self._sample2column = dict( [(y,x) for x,y in enumerate( self._samples ) ] ) - - def write_heading( self, stream ): - stream.write("#" + "\t".join(self._required + self._samples) + "\n") - - def convertGT(self, GTstring): - if GTstring == ".": return ["."] - try: - gts = gtsRegEx.split(GTstring) - if len(gts) == 1: return [int(gts[0])] - if len(gts) != 2: raise ValueError() - if gts[0] == "." and gts[1] == ".": return [gts[0],GTstring[len(gts[0]):-len(gts[1])],gts[1]] - return [int(gts[0]),GTstring[len(gts[0]):-len(gts[1])],int(gts[1])] - except ValueError: - self.error(self._line,self.BAD_GENOTYPE,GTstring) - return [".","|","."] - - - def convertGTback(self, GTdata): - return ''.join(map(str,GTdata)) - - def parse_formatdata( self, key, value, formatdict, line ): - # To do: check that the right number of values is present - f = formatdict.get(key,None) - if f == None: - self._add_definition(formatdict, key, value, line ) - f = formatdict[key] - if f.type == "Flag": - if value is not None: self.error(line,self.ERROR_FLAG_HAS_VALUE) - return [] - values = value.split(',') - # deal with trailing data in some early VCF files - if f.type in ["Float","Integer"] and len(values)>0 and values[-1].find(';') > -1: - self.error(line,self.ERROR_TRAILING_DATA,values[-1]) - values[-1] = values[-1].split(';')[0] - if f.type == "Integer": - for idx,v in enumerate(values): - try: - if v == ".": values[idx] = f.missingvalue - else: values[idx] = int(v) - except: - self.error(line,self.ERROR_FORMAT_NOT_NUMERICAL,values) - return [0] * len(values) - return values - elif f.type == "String": - self._line = line - if f.id == "GT": values = map( self.convertGT, values ) - return values - elif f.type == "Character": - for v in values: - if len(v) != 1: self.error(line,self.ERROR_FORMAT_NOT_CHAR) - return values - elif f.type == "Float": - for idx,v in enumerate(values): - if v == ".": values[idx] = f.missingvalue - try: return map(float,values) - except: - self.error(line,self.ERROR_FORMAT_NOT_NUMERICAL,values) - return [0.0] * len(values) - else: - # can't happen - self.error(line,self.ERROR_INFO_STRING) - - - def inregion(self, chrom, pos): - if not self._regions: return True - for r in self._regions: - if r[0] == chrom and r[1] <= pos < r[2]: return True - return False - - - def parse_data( self, line, lineparse=False ): - cols = line.split('\t') - if len(cols) != len(self._samples)+9: - # gracefully deal with absent FORMAT column - if len(cols) == 8 and len(self._samples)==0: - cols.append("") - else: - self.error(line, - self.BAD_NUMBER_OF_COLUMNS, - "expected %s for %s samples (%s), got %s" % (len(self._samples)+9, len(self._samples), self._samples, len(cols))) - - chrom = cols[0] - - # get 0-based position - try: pos = int(cols[1])-1 - except: self.error(line,self.POS_NOT_NUMERICAL) - if pos < 0: self.error(line,self.POS_NOT_POSITIVE) - - # implement filtering - if not self.inregion(chrom,pos): return None - - # end of first-pass parse for sortedVCF - if lineparse: return chrom, pos, line - - id = cols[2] - - ref = cols[3].upper() - if ref == ".": - self.error(line,self.MISSING_REF) - if self._version == 33: ref = get_sequence(chrom,pos,pos+1,self._reference) - else: ref = "" - else: - for c in ref: - if c not in "ACGTN": self.error(line,self.UNKNOWN_CHAR_IN_REF) - if "N" in ref: ref = get_sequence(chrom,pos,pos+len(ref),self._reference) - - # make sure reference is sane - if self._reference: - left = max(0,pos-100) - faref_leftflank = get_sequence(chrom,left,pos+len(ref),self._reference) - faref = faref_leftflank[pos-left:] - if faref != ref: self.error(line,self.WRONG_REF,"(reference is %s, VCF says %s)" % (faref,ref)) - ref = faref - - # convert v3.3 to v4.0 alleles below - if cols[4] == ".": alt = [] - else: alt = cols[4].upper().split(',') - - if cols[5] == ".": qual = -1 - else: - try: qual = float(cols[5]) - except: self.error(line,self.QUAL_NOT_NUMERICAL) - - # postpone checking that filters exist. Encode missing filter or no filtering as empty list - if cols[6] == "." or cols[6] == "PASS" or cols[6] == "0": filter = [] - else: filter = cols[6].split(';') - - # dictionary of keys, and list of values - info = {} - if cols[7] != ".": - for blurp in cols[7].split(';'): - elts = blurp.split('=') - if len(elts) == 1: v = None - elif len(elts) == 2: v = elts[1] - else: self.error(line,self.ERROR_INFO_STRING) - info[elts[0]] = self.parse_formatdata(elts[0], v, self._info, line) - - # Gracefully deal with absent FORMAT column - if cols[8] == "": format = [] - else: format = cols[8].split(':') - - # check: all filters are defined - for f in filter: - if f not in self._filter: self.error(line,self.FILTER_NOT_DEFINED, f) - - # check: format fields are defined - for f in format: - if f not in self._format: self.error(line,self.FORMAT_NOT_DEFINED, f) - - # convert v3.3 alleles - if self._version == 33: - if len(ref) != 1: self.error(line,self.V33_BAD_REF) - newalts = [] - have_deletions = False - for a in alt: - if len(a) == 1: a = a + ref[1:] # SNP; add trailing reference - elif a.startswith('I'): a = ref[0] + a[1:] + ref[1:] # insertion just beyond pos; add first and trailing reference - elif a.startswith('D'): # allow D and D - have_deletions = True - try: - l = int(a[1:]) # throws ValueError if sequence - if len(ref) < l: # add to reference if necessary - addns = get_sequence(chrom,pos+len(ref),pos+l,self._reference) - ref += addns - for i,na in enumerate(newalts): newalts[i] = na+addns - a = ref[l:] # new deletion, deleting pos...pos+l - except ValueError: - s = a[1:] - if len(ref) < len(s): # add Ns to reference if necessary - addns = get_sequence(chrom,pos+len(ref),pos+len(s),self._reference) - if not s.endswith(addns) and addns != 'N'*len(addns): - self.error(line,self.V33_UNMATCHED_DELETION, - "(deletion is %s, reference is %s)" % (a,get_sequence(chrom,pos,pos+len(s),self._reference))) - ref += addns - for i,na in enumerate(newalts): newalts[i] = na+addns - a = ref[len(s):] # new deletion, deleting from pos - else: - self.error(line,self.V33_BAD_ALLELE) - newalts.append(a) - alt = newalts - # deletion alleles exist, add dummy 1st reference allele, and account for leading base - if have_deletions: - if pos == 0: - # Petr Danacek's: we can't have a leading nucleotide at (1-based) position 1 - addn = get_sequence(chrom,pos+len(ref),pos+len(ref)+1,self._reference) - ref += addn - alt = [allele+addn for allele in alt] - else: - addn = get_sequence(chrom,pos-1,pos,self._reference) - ref = addn + ref - alt = [addn + allele for allele in alt] - pos -= 1 - else: - # format v4.0 -- just check for nucleotides - for allele in alt: - if not alleleRegEx.match(allele): - self.error(line,self.V40_BAD_ALLELE,allele) - - # check for leading nucleotide in indel calls - for allele in alt: - if len(allele) != len(ref): - if len(allele) == 0: self.error(line,self.ZERO_LENGTH_ALLELE) - if ref[0].upper() != allele[0].upper() and "N" not in (ref[0]+allele[0]).upper(): - self.error(line,self.MISSING_INDEL_ALLELE_REF_BASE) - - # trim trailing bases in alleles - for i in range(1,min(len(ref),min(map(len,alt)))): - if len(set(allele[-1].upper() for allele in alt)) > 1 or ref[-1].upper() != alt[0][-1].upper(): - break - ref, alt = ref[:-1], [allele[:-1] for allele in alt] - - # left-align alleles, if a reference is available - if self._leftalign and self._reference: - while left < pos: - movable = True - for allele in alt: - if len(allele) > len(ref): - longest, shortest = allele, ref - else: - longest, shortest = ref, allele - if len(longest) == len(shortest) or longest[:len(shortest)].upper() != shortest.upper(): - movable = False - if longest[-1].upper() != longest[len(shortest)-1].upper(): - movable = False - if not movable: - break - ref = ref[:-1] - alt = [allele[:-1] for allele in alt] - if min(len(allele) for allele in alt) == 0 or len(ref) == 0: - ref = faref_leftflank[pos-left-1] + ref - alt = [faref_leftflank[pos-left-1] + allele for allele in alt] - pos -= 1 - - # parse sample columns - samples = [] - for sample in cols[9:]: - dict = {} - values = sample.split(':') - if len(values) > len(format): - self.error(line,self.BAD_NUMBER_OF_VALUES,"(found %s values in element %s; expected %s)" % (len(values),sample,len(format))) - for idx in range(len(format)): - expected = self.get_expected(format[idx], self._format, alt) - if idx < len(values): value = values[idx] - else: - if expected == -1: value = "." - else: value = ",".join(["."]*expected) - dict[format[idx]] = self.parse_formatdata(format[idx], value, self._format, line) - if expected != -1 and len(dict[format[idx]]) != expected: - self.error(line,self.BAD_NUMBER_OF_PARAMETERS, - "id=%s, expected %s parameters, got %s" % (format[idx],expected,dict[format[idx]])) - if len(dict[format[idx]] ) < expected: dict[format[idx]] += [dict[format[idx]][-1]]*(expected-len(dict[format[idx]])) - dict[format[idx]] = dict[format[idx]][:expected] - samples.append( dict ) - - # done - d = {'chrom':chrom, - 'pos':pos, # return 0-based position - 'id':id, - 'ref':ref, - 'alt':alt, - 'qual':qual, - 'filter':filter, - 'info':info, - 'format':format} - for key,value in zip(self._samples,samples): - d[key] = value - - return d - - - def write_data(self, stream, data): - required = ['chrom','pos','id','ref','alt','qual','filter','info','format'] + self._samples - for k in required: - if k not in data: raise ValueError("Required key %s not found in data" % str(k)) - if data['alt'] == []: alt = "." - else: alt = ",".join(data['alt']) - if data['filter'] == None: filter = "." - elif data['filter'] == []: - if self._version == 33: filter = "0" - else: filter = "PASS" - else: filter = ';'.join(data['filter']) - if data['qual'] == -1: qual = "." - else: qual = str(data['qual']) - - output = [data['chrom'], - str(data['pos']+1), # change to 1-based position - data['id'], - data['ref'], - alt, - qual, - filter, - self.format_formatdata( data['info'], self._info, separator=";" ), - self.format_formatdata( data['format'], self._format, value=False ) ] - - for s in self._samples: - output.append( self.format_formatdata( data[s], self._format, key=False ) ) - - stream.write( "\t".join(output) + "\n" ) - - def _parse_header(self, stream): - self._lineno = 0 - for line in stream: - self._lineno += 1 - if line.startswith('##'): - self.parse_header( line.strip() ) - elif line.startswith('#'): - self.parse_heading( line.strip() ) - self.enter_default_format() - else: - break - return line - - def _parse(self, line, stream): - if len(line.strip()) > 0: - d = self.parse_data( line.strip() ) - if d: yield d - for line in stream: - self._lineno += 1 - if self._lines and self._lineno > self._lines: raise StopIteration - d = self.parse_data( line.strip() ) - if d: yield d - - ###################################################################################################### - # - # API follows - # - ###################################################################################################### - - def getsamples(self): - """ List of samples in VCF file """ - return self._samples - - def setsamples(self,samples): - """ List of samples in VCF file """ - self._samples = samples - - def getheader(self): - """ List of header key-value pairs (strings) """ - return self._header - - def setheader(self,header): - """ List of header key-value pairs (strings) """ - self._header = header - - def getinfo(self): - """ Dictionary of ##INFO tags, as VCF.FORMAT values """ - return self._info - - def setinfo(self,info): - """ Dictionary of ##INFO tags, as VCF.FORMAT values """ - self._info = info - - def getformat(self): - """ Dictionary of ##FORMAT tags, as VCF.FORMAT values """ - return self._format - - def setformat(self,format): - """ Dictionary of ##FORMAT tags, as VCF.FORMAT values """ - self._format = format - - def getfilter(self): - """ Dictionary of ##FILTER tags, as VCF.FORMAT values """ - return self._filter - - def setfilter(self,filter): - """ Dictionary of ##FILTER tags, as VCF.FORMAT values """ - self._filter = filter - - def setversion(self, version): - if version not in [33,40,41]: raise ValueError("Can only handle v3.3, v4.0 and v4.1 VCF files") - self._version = version - - def setregions(self, regions): - self._regions = regions - - def setreference(self, ref): - """ Provide a reference sequence; a Python class supporting a fetch(chromosome, start, end) method, e.g. PySam.FastaFile """ - self._reference = ref - - def ignoreerror(self, errorstring): - try: self._ignored_errors.add(self.__dict__[errorstring]) - except KeyError: raise ValueError("Invalid error string: %s" % errorstring) - - def warnerror(self, errorstring): - try: self._warn_errors.add(self.__dict__[errorstring]) - except KeyError: raise ValueError("Invalid error string: %s" % errorstring) - - def parse(self, stream): - """ Parse a stream of VCF-formatted lines. Initializes class instance and return generator """ - last_line = self._parse_header(stream) - # now return a generator that does the actual work. In this way the pre-processing is done - # before the first piece of data is yielded - return self._parse(last_line, stream) - - def write(self, stream, datagenerator): - """ Writes a VCF file to a stream, using a data generator (or list) """ - self.write_header(stream) - self.write_heading(stream) - for data in datagenerator: self.write_data(stream,data) - - def writeheader(self, stream): - """ Writes a VCF header """ - self.write_header(stream) - self.write_heading(stream) - - def compare_calls(self, pos1, ref1, alt1, pos2, ref2, alt2): - """ Utility function: compares two calls for equality """ - # a variant should always be assigned to a unique position, one base before - # the leftmost position of the alignment gap. If this rule is implemented - # correctly, the two positions must be equal for the calls to be identical. - if pos1 != pos2: return False - # from both calls, trim rightmost bases when identical. Do this safely, i.e. - # only when the reference bases are not Ns - while len(ref1)>0 and len(alt1)>0 and ref1[-1] == alt1[-1]: - ref1 = ref1[:-1] - alt1 = alt1[:-1] - while len(ref2)>0 and len(alt2)>0 and ref2[-1] == alt2[-1]: - ref2 = ref2[:-1] - alt2 = alt2[:-1] - # now, the alternative alleles must be identical - return alt1 == alt2 - -########################################################################################################### -########################################################################################################### -## API functions added by Andreas -########################################################################################################### - - def connect( self, filename ): - '''connect to tabix file.''' - self.tabixfile = pysam.Tabixfile( filename ) - self._parse_header(self.tabixfile.header) - - def fetch(self, - reference = None, - start = None, - end = None, - region = None ): - """ Parse a stream of VCF-formatted lines. Initializes class instance and return generator """ - - iter = self.tabixfile.fetch( reference, start, end, region, parser = pysam.asVCF() ) - for x in iter: - yield VCFRecord( x, self ) - - def validate( self, record ): - '''validate vcf record. - - returns a validated record. - ''' - - chrom, pos = record.chrom, record.pos - - # check reference - ref = record.ref - if ref == ".": - self.error(str(record),self.MISSING_REF) - if self._version == 33: ref = get_sequence(chrom,pos,pos+1,self._reference) - else: ref = "" - else: - for c in ref: - if c not in "ACGTN": self.error(str(record),self.UNKNOWN_CHAR_IN_REF) - if "N" in ref: ref = get_sequence(chrom, - pos, - pos+len(ref), - self._reference) - - # make sure reference is sane - if self._reference: - left = max(0,self.pos-100) - faref_leftflank = get_sequence(chrom,left,self.pos+len(ref),self._reference) - faref = faref_leftflank[pos-left:] - if faref != ref: self.error(line,self.WRONG_REF,"(reference is %s, VCF says %s)" % (faref,ref)) - ref = faref - - # check: format fields are defined - for f in record.format: - if f not in self._format: self.error(str(record),self.FORMAT_NOT_DEFINED, f) - - # check: all filters are defined - for f in record.filter: - if f not in self._filter: self.error(str(record),self.FILTER_NOT_DEFINED, f) - - # convert v3.3 alleles - if self._version == 33: - if len(ref) != 1: self.error(line,self.V33_BAD_REF) - newalts = [] - have_deletions = False - for a in alt: - if len(a) == 1: a = a + ref[1:] # SNP; add trailing reference - elif a.startswith('I'): a = ref[0] + a[1:] + ref[1:] # insertion just beyond pos; add first and trailing reference - elif a.startswith('D'): # allow D and D - have_deletions = True - try: - l = int(a[1:]) # throws ValueError if sequence - if len(ref) < l: # add to reference if necessary - addns = get_sequence(chrom,pos+len(ref),pos+l,self._reference) - ref += addns - for i,na in enumerate(newalts): newalts[i] = na+addns - a = ref[l:] # new deletion, deleting pos...pos+l - except ValueError: - s = a[1:] - if len(ref) < len(s): # add Ns to reference if necessary - addns = get_sequence(chrom,pos+len(ref),pos+len(s),self._reference) - if not s.endswith(addns) and addns != 'N'*len(addns): - self.error(line,self.V33_UNMATCHED_DELETION, - "(deletion is %s, reference is %s)" % (a,get_sequence(chrom,pos,pos+len(s),self._reference))) - ref += addns - for i,na in enumerate(newalts): newalts[i] = na+addns - a = ref[len(s):] # new deletion, deleting from pos - else: - self.error(line,self.V33_BAD_ALLELE) - newalts.append(a) - alt = newalts - # deletion alleles exist, add dummy 1st reference allele, and account for leading base - if have_deletions: - if pos == 0: - # Petr Danacek's: we can't have a leading nucleotide at (1-based) position 1 - addn = get_sequence(chrom,pos+len(ref),pos+len(ref)+1,self._reference) - ref += addn - alt = [allele+addn for allele in alt] - else: - addn = get_sequence(chrom,pos-1,pos,self._reference) - ref = addn + ref - alt = [addn + allele for allele in alt] - pos -= 1 - else: - # format v4.0 -- just check for nucleotides - for allele in alt: - if not alleleRegEx.match(allele): - self.error(line,self.V40_BAD_ALLELE,allele) - - - # check for leading nucleotide in indel calls - for allele in alt: - if len(allele) != len(ref): - if len(allele) == 0: self.error(line,self.ZERO_LENGTH_ALLELE) - if ref[0].upper() != allele[0].upper() and "N" not in (ref[0]+allele[0]).upper(): - self.error(line,self.MISSING_INDEL_ALLELE_REF_BASE) - - # trim trailing bases in alleles - for i in range(1,min(len(ref),min(map(len,alt)))): - if len(set(allele[-1].upper() for allele in alt)) > 1 or ref[-1].upper() != alt[0][-1].upper(): - break - ref, alt = ref[:-1], [allele[:-1] for allele in alt] - - # left-align alleles, if a reference is available - if self._leftalign and self._reference: - while left < pos: - movable = True - for allele in alt: - if len(allele) > len(ref): - longest, shortest = allele, ref - else: - longest, shortest = ref, allele - if len(longest) == len(shortest) or longest[:len(shortest)].upper() != shortest.upper(): - movable = False - if longest[-1].upper() != longest[len(shortest)-1].upper(): - movable = False - if not movable: - break - ref = ref[:-1] - alt = [allele[:-1] for allele in alt] - if min(len(allele) for allele in alt) == 0 or len(ref) == 0: - ref = faref_leftflank[pos-left-1] + ref - alt = [faref_leftflank[pos-left-1] + allele for allele in alt] - pos -= 1 - - - - diff --git a/pysam/alternatives.py.obsolete b/pysam/alternatives.py.obsolete deleted file mode 100644 index fd76802..0000000 --- a/pysam/alternatives.py.obsolete +++ /dev/null @@ -1,82 +0,0 @@ -# This file contains an alternative implementation -# to call samtools functions. These are direct calls. -# Plus: less overhead -# Minus: more trouble in maintaining - -#in csamtools.pxd - # samtools toolkit functions - ctypedef int (*pysam_samtools_f)(int argc, char *argv[]) - - int bam_taf2baf(int argc, char *argv[]) - int bam_pileup(int argc, char *argv[]) - int bam_merge(int argc, char *argv[]) - int bam_index(int argc, char *argv[]) - int bam_sort(int argc, char *argv[]) - int bam_tview_main(int argc, char *argv[]) - int bam_mating(int argc, char *argv[]) - int bam_rmdup(int argc, char *argv[]) - int bam_rmdupse(int argc, char *argv[]) - int bam_flagstat(int argc, char *argv[]) - int bam_fillmd(int argc, char *argv[]) - int main_samview(int argc, char *argv[]) - int main_import(int argc, char *argv[]) - int faidx_main(int argc, char *argv[]) - int glf3_view_main(int argc, char *argv[]) - - -## Alternative code in csamtools.pyx -cdef class SamtoolsWrapper: - '''generic wrapper around samtools functions''' - cdef pysam_samtools_f f - - def __init__(self): self.f = NULL - - def call(self, *args ): - - if self.f == NULL: raise NotImplementedError("invalid call to base class" ) - - cdef char ** cargs - cdef int i, n, retval - n = len(args) - # allocate one more for first (dummy) argument (contains command) - cargs = calloc( n+1, sizeof( char *) ) - cargs[0] = "method" - for i from 0 <= i < n: - cargs[i+1] = args[i] - for i from 0 <= i < n+1: - print cargs[i] - retval = self.f(n+1, cargs) - free( cargs ) - return retval - -cdef class SamtoolsWrapperImport( SamtoolsWrapper ): - def __init__(self): self.f = main_import -cdef class SamtoolsWrapperPileup( SamtoolsWrapper ): - def __init__(self): self.f = bam_pileup -cdef class SamtoolsWrapperMerge( SamtoolsWrapper ): - def __init__(self): self.f = bam_merge -cdef class SamtoolsWrapperSort( SamtoolsWrapper ): - def __init__(self): self.f = bam_sort -cdef class SamtoolsWrapperIndex( SamtoolsWrapper ): - def __init__(self): self.f = bam_index -cdef class SamtoolsWrapperFaidx( SamtoolsWrapper ): - def __init__(self): self.f = faidx_main -cdef class SamtoolsWrapperFixMate( SamtoolsWrapper ): - def __init__(self): self.f = bam_mating -cdef class SamtoolsWrapperRmDup( SamtoolsWrapper ): - def __init__(self): self.f = bam_rmdup -cdef class SamtoolsWrapperRmDupSe( SamtoolsWrapper ): - def __init__(self): self.f = bam_rmdupse -cdef class SamtoolsWrapperGlf3Viwen( SamtoolsWrapper ): - def __init__(self): self.f = glf3_view_main -cdef class SamtoolsWrapperFlagStat( SamtoolsWrapper ): - def __init__(self): self.f = bam_flagstat -cdef class SamtoolsWrapperFillMd( SamtoolsWrapper ): - def __init__(self): self.f = bam_fillmd -cdef class SamtoolsWrapperCalMd( SamtoolsWrapper ): - def __init__(self): self.f = bam_fillmd - -automatic creation of these functions does not work -due to pyrex/cython - -def sort( *args, **kwargs ): return SamtoolsWrapperSort().call(*args, **kwargs) diff --git a/pysam/libcalignedsegment.pxd b/pysam/libcalignedsegment.pxd index 265d146..f6f707c 100644 --- a/pysam/libcalignedsegment.pxd +++ b/pysam/libcalignedsegment.pxd @@ -1,3 +1,5 @@ +# cython: language_level=3, embedsignature=True, profile=True + from pysam.libchtslib cimport * cdef extern from "htslib_util.h": diff --git a/pysam/libcalignedsegment.pyx b/pysam/libcalignedsegment.pyx index e93074a..8feb56c 100644 --- a/pysam/libcalignedsegment.pyx +++ b/pysam/libcalignedsegment.pyx @@ -1,6 +1,4 @@ -# cython: embedsignature=True -# cython: profile=True -############################################################################### +# cython: language_level=3, embedsignature=True, profile=True ############################################################################### # Cython wrapper for SAM/BAM/CRAM files based on htslib ############################################################################### @@ -113,11 +111,11 @@ cdef inline uint8_t toupper(uint8_t ch): cdef inline uint8_t strand_mark_char(uint8_t ch, bam1_t *b): - if ch == '=': + if ch == b'=': if bam_is_rev(b): - return ',' + return b',' else: - return '.' + return b'.' else: if bam_is_rev(b): return tolower(ch) @@ -138,8 +136,9 @@ cdef inline bint pileup_base_qual_skip(bam_pileup1_t * p, uint32_t threshold): cdef inline char map_typecode_htslib_to_python(uint8_t s): """map an htslib typecode to the corresponding python typecode - to be used in the struct or array modules.""" + to be used in the struct or array modules. + """ # map type from htslib to python array cdef char * f = strchr(htslib_types, s) @@ -149,7 +148,7 @@ cdef inline char map_typecode_htslib_to_python(uint8_t s): cdef inline uint8_t map_typecode_python_to_htslib(char s): - """determine value type from type code of array""" + """determine value type from type code of array.""" cdef char * f = strchr(parray_types, s) if f == NULL: return 0 @@ -181,7 +180,9 @@ cdef inline void update_bin(bam1_t * src): # optional tag data manipulation cdef convert_binary_tag(uint8_t * tag): """return bytesize, number of values and array of values - in aux_data memory location pointed to by tag.""" + in aux_data memory location pointed to by tag. + + """ cdef uint8_t auxtype cdef uint8_t byte_size cdef int32_t nvalues @@ -208,7 +209,9 @@ cdef convert_binary_tag(uint8_t * tag): cdef inline uint8_t get_tag_typecode(value, value_type=None): - """guess type code for a *value*. If *value_type* is None, the type + """guess type code for a *value*. + + If *value_type* is None, the type code will be inferred based on the Python type of *value* """ @@ -219,29 +222,27 @@ cdef inline uint8_t get_tag_typecode(value, value_type=None): if isinstance(value, int): if value < 0: if value >= INT8_MIN: - typecode = 'c' + typecode = b'c' elif value >= INT16_MIN: - typecode = 's' + typecode = b's' elif value >= INT32_MIN: - typecode = 'i' + typecode = b'i' # unsigned ints else: if value <= UINT8_MAX: - typecode = 'C' + typecode = b'C' elif value <= UINT16_MAX: - typecode = 'S' + typecode = b'S' elif value <= UINT32_MAX: - typecode = 'I' + typecode = b'I' elif isinstance(value, float): - typecode = 'f' + typecode = b'f' elif isinstance(value, str): - typecode = 'Z' + typecode = b'Z' elif isinstance(value, bytes): - typecode = 'Z' - elif isinstance(value, array.array) or \ - isinstance(value, list) or \ - isinstance(value, tuple): - typecode = 'B' + typecode = b'Z' + elif isinstance(value, array.array) or isinstance(value, list) or isinstance(value, tuple): + typecode = b'B' else: if value_type in 'aAsSIcCZidfH': typecode = force_bytes(value_type)[0] @@ -250,7 +251,7 @@ cdef inline uint8_t get_tag_typecode(value, value_type=None): cdef inline uint8_t get_btag_typecode(value, min_value=None, max_value=None): - '''returns the value typecode of a value. + """returns the value typecode of a value. If max is specified, the appropriate type is returned for a range where value is the minimum. @@ -258,15 +259,14 @@ cdef inline uint8_t get_btag_typecode(value, min_value=None, max_value=None): Note that this method returns types from the extended BAM alphabet of types that includes tags that are not part of the SAM specification. - ''' - + """ cdef uint8_t typecode t = type(value) if t is float: - typecode = 'f' + typecode = b'f' elif t is int: if max_value is None: max_value = value @@ -275,11 +275,11 @@ cdef inline uint8_t get_btag_typecode(value, min_value=None, max_value=None): # signed ints if min_value < 0: if min_value >= INT8_MIN and max_value <= INT8_MAX: - typecode = 'c' + typecode = b'c' elif min_value >= INT16_MIN and max_value <= INT16_MAX: - typecode = 's' + typecode = b's' elif min_value >= INT32_MIN or max_value <= INT32_MAX: - typecode = 'i' + typecode = b'i' else: raise ValueError( "at least one signed integer out of range of " @@ -287,11 +287,11 @@ cdef inline uint8_t get_btag_typecode(value, min_value=None, max_value=None): # unsigned ints else: if max_value <= UINT8_MAX: - typecode = 'C' + typecode = b'C' elif max_value <= UINT16_MAX: - typecode = 'S' + typecode = b'S' elif max_value <= UINT32_MAX: - typecode = 'I' + typecode = b'I' else: raise ValueError( "at least one integer out of range of BAM/SAM specification") @@ -300,9 +300,9 @@ cdef inline uint8_t get_btag_typecode(value, min_value=None, max_value=None): if t is not bytes: value = value.encode('ascii') if len(value) == 1: - typecode = 'A' + typecode = b'A' else: - typecode = 'Z' + typecode = b'Z' return typecode @@ -329,6 +329,7 @@ cdef inline pack_tags(tags): Returns a format string and the associated list of arguments to be used in a call to struct.pack_into. + """ fmts, args = ["<"], [] @@ -398,16 +399,16 @@ cdef inline pack_tags(tags): if typecode == 0: raise ValueError("could not deduce typecode for value {}".format(value)) - if typecode == 'a' or typecode == 'A' or typecode == 'Z' or typecode == 'H': + if typecode == b'a' or typecode == b'A' or typecode == b'Z' or typecode == b'H': value = force_bytes(value) - if typecode == "a": - typecode = 'A' + if typecode == b'a': + typecode = b'A' - if typecode == 'Z' or typecode == 'H': - datafmt = "2sB%is" % (len(value)+1) + if typecode == b'Z' or typecode == b'H': + datafmt = '2sB%is' % (len(value)+1) else: - datafmt = "2sB%s" % DATATYPE2FORMAT[typecode][0] + datafmt = '2sB%s' % DATATYPE2FORMAT[typecode][0] args.extend([pytag[:2], typecode, @@ -424,8 +425,8 @@ cdef inline int32_t calculateQueryLengthWithoutHardClipping(bam1_t * src): Length ignores hard-clipped bases. Return 0 if there is no CIGAR alignment. - """ + """ cdef uint32_t * cigar_p = pysam_bam_get_cigar(src) if cigar_p == NULL: @@ -454,8 +455,8 @@ cdef inline int32_t calculateQueryLengthWithHardClipping(bam1_t * src): Length includes hard-clipped bases. Return 0 if there is no CIGAR alignment. - """ + """ cdef uint32_t * cigar_p = pysam_bam_get_cigar(src) if cigar_p == NULL: @@ -531,9 +532,7 @@ cdef inline int32_t getQueryEnd(bam1_t *src) except -1: cdef inline bytes getSequenceInRange(bam1_t *src, uint32_t start, uint32_t end): - """return python string of the sequence in a bam1_t object. - """ - + """return python string of the sequence in a bam1_t object.""" cdef uint8_t * p cdef uint32_t k cdef char * s @@ -548,7 +547,7 @@ cdef inline bytes getSequenceInRange(bam1_t *src, for k from start <= k < end: # equivalent to seq_nt16_str[bam1_seqi(s, i)] (see bam.c) # note: do not use string literal as it will be a python string - s[k-start] = seq_nt16_str[p[k/2] >> 4 * (1 - k%2) & 0xf] + s[k-start] = seq_nt16_str[p[k//2] >> 4 * (1 - k%2) & 0xf] return charptr_to_bytes(seq) @@ -556,8 +555,7 @@ cdef inline bytes getSequenceInRange(bam1_t *src, cdef inline object getQualitiesInRange(bam1_t *src, uint32_t start, uint32_t end): - """return python array of quality values from a bam1_t object""" - + """return python array of quality values from a bam1_t object.""" cdef uint8_t * p cdef uint32_t k @@ -580,7 +578,7 @@ cdef inline object getQualitiesInRange(bam1_t *src, cdef class AlignedSegment cdef AlignedSegment makeAlignedSegment(bam1_t *src, AlignmentHeader header): - '''return an AlignedSegment object constructed from `src`''' + """return an AlignedSegment object constructed from `src`.""" # note that the following does not call __init__ cdef AlignedSegment dest = AlignedSegment.__new__(AlignedSegment) dest._delegate = bam_dup1(src) @@ -596,10 +594,12 @@ cdef PileupColumn makePileupColumn(bam_pileup1_t ** plp, uint32_t min_base_quality, char * reference_sequence, AlignmentHeader header): - '''return a PileupColumn object constructed from pileup in `plp` and - setting additional attributes. + """return a PileupColumn object. + + It is constructed from pileup in `plp` and setting additional + attributes. - ''' + """ # note that the following does not call __init__ cdef PileupColumn dest = PileupColumn.__new__(PileupColumn) dest.header = header @@ -618,7 +618,7 @@ cdef PileupColumn makePileupColumn(bam_pileup1_t ** plp, cdef class PileupRead cdef PileupRead makePileupRead(bam_pileup1_t *src, AlignmentHeader header): - '''return a PileupRead object construted from a bam_pileup1_t * object.''' + """return a PileupRead object construted from a bam_pileup1_t * object.""" # note that the following does not call __init__ cdef PileupRead dest = PileupRead.__new__(PileupRead) dest._alignment = makeAlignedSegment(src.b, header) @@ -664,7 +664,7 @@ cdef inline uint32_t get_md_reference_length(char * md_tag): else: l += nmatches nmatches = 0 - if md_tag[md_idx] == '^': + if md_tag[md_idx] == b'^': md_idx += 1 while md_tag[md_idx] >= 65 and md_tag[md_idx] <= 90: md_idx += 1 @@ -739,7 +739,7 @@ cdef inline bytes build_alignment_sequence(bam1_t * src): s_idx += 1 elif op == BAM_CDEL: for i from 0 <= i < l: - s[s_idx] = '-' + s[s_idx] = b'-' s_idx += 1 elif op == BAM_CREF_SKIP: pass @@ -769,7 +769,7 @@ cdef inline bytes build_alignment_sequence(bam1_t * src): cdef int insertions = 0 while s[s_idx] != 0: - if s[s_idx] >= 'a': + if s[s_idx] >= b'a': insertions += 1 s_idx += 1 s_idx = 0 @@ -790,15 +790,15 @@ cdef inline bytes build_alignment_sequence(bam1_t * src): else: # save matches up to this point, skipping insertions for x from 0 <= x < nmatches: - while s[s_idx] >= 'a': + while s[s_idx] >= b'a': s_idx += 1 s_idx += 1 - while s[s_idx] >= 'a': + while s[s_idx] >= b'a': s_idx += 1 r_idx += nmatches nmatches = 0 - if md_tag[md_idx] == '^': + if md_tag[md_idx] == b'^': md_idx += 1 while md_tag[md_idx] >= 65 and md_tag[md_idx] <= 90: # assert s[s_idx] == '-' @@ -818,10 +818,10 @@ cdef inline bytes build_alignment_sequence(bam1_t * src): # save matches up to this point, skipping insertions for x from 0 <= x < nmatches: - while s[s_idx] >= 'a': + while s[s_idx] >= b'a': s_idx += 1 s_idx += 1 - while s[s_idx] >= 'a': + while s[s_idx] >= b'a': s_idx += 1 seq = PyBytes_FromStringAndSize(s, s_idx) @@ -885,7 +885,7 @@ cdef inline bytes build_reference_sequence(bam1_t * src): cdef class AlignedSegment: - '''Class representing an aligned segment. + """Class representing an aligned segment. This class stores a handle to the samtools C-structure representing an aligned read. Member read access is forwarded to the C-structure @@ -909,8 +909,8 @@ cdef class AlignedSegment: :class:`~pysam.AlignmentHeader` object to map numerical identifiers to chromosome names. If not given, an empty header is created. - ''' + """ # Now only called when instances are created from Python def __init__(self, AlignmentHeader header=None): # see bam_init1 @@ -954,6 +954,7 @@ cdef class AlignedSegment: Similarly, the tags field is returned in its parsed state. To get a valid SAM record, use :meth:`to_string`. + """ # sam-parsing is done in sam.c/bam_format1_core which # requires a valid header. @@ -977,9 +978,7 @@ cdef class AlignedSegment: return makeAlignedSegment(self._delegate, self.header) def compare(self, AlignedSegment other): - '''return -1,0,1, if contents in this are binary - <,=,> to *other* - ''' + """return -1,0,1, if contents in this are binary <,=,> to *other*.""" cdef int retval, x cdef bam1_t *t @@ -992,10 +991,12 @@ cdef class AlignedSegment: # cdef unsigned char * oo, * tt # tt = (&t.core) # oo = (&o.core) - # for x from 0 <= x < sizeof( bam1_core_t): print x, tt[x], oo[x] + # for x from 0 <= x < sizeof( bam1_core_t): + # print x, tt[x], oo[x] # tt = (t.data) # oo = (o.data) - # for x from 0 <= x < max(t.l_data, o.l_data): print x, tt[x], oo[x], chr(tt[x]), chr(oo[x]) + # for x from 0 <= x < max(t.l_data, o.l_data): + # print x, tt[x], oo[x], chr(tt[x]), chr(oo[x]) # Fast-path test for object identity if t == o: @@ -1042,6 +1043,7 @@ cdef class AlignedSegment: The output format is valid SAM format if a header is associated with the AlignedSegment. + """ cdef kstring_t line line.l = line.m = 0 @@ -1117,90 +1119,95 @@ cdef class AlignedSegment: ######################################################## ## Basic attributes in order of appearance in SAM format - property query_name: - """the query template name (None if not present)""" - def __get__(self): + @property + def query_name(self): + """the query template name or None if not present.""" + cdef bam1_t * src = self._delegate + if src.core.l_qname == 0: + return None - cdef bam1_t * src = self._delegate - if src.core.l_qname == 0: - return None + return charptr_to_str(pysam_bam_get_qname(src)) - return charptr_to_str(pysam_bam_get_qname(src)) + @query_name.setter + def query_name(self, qname): - def __set__(self, qname): + if qname is None or len(qname) == 0: + return - if qname is None or len(qname) == 0: - return + # See issue #447 + # (The threshold is 252 chars, but this includes a \0 byte. + if len(qname) > 251: + raise ValueError("query length out of range {} > 251".format( + len(qname))) - # See issue #447 - # (The threshold is 252 chars, but this includes a \0 byte. - if len(qname) > 251: - raise ValueError("query length out of range {} > 251".format( - len(qname))) + qname = force_bytes(qname) + cdef bam1_t * src = self._delegate + # the qname is \0 terminated + cdef uint8_t l = len(qname) + 1 - qname = force_bytes(qname) - cdef bam1_t * src = self._delegate - # the qname is \0 terminated - cdef uint8_t l = len(qname) + 1 + cdef char * p = pysam_bam_get_qname(src) + cdef uint8_t l_extranul = 0 - cdef char * p = pysam_bam_get_qname(src) - cdef uint8_t l_extranul = 0 + if l % 4 != 0: + l_extranul = 4 - l % 4 - if l % 4 != 0: - l_extranul = 4 - l % 4 + cdef bam1_t * retval = pysam_bam_update(src, + src.core.l_qname, + l + l_extranul, + p) + if retval == NULL: + raise MemoryError("could not allocate memory") - cdef bam1_t * retval = pysam_bam_update(src, - src.core.l_qname, - l + l_extranul, - p) - if retval == NULL: - raise MemoryError("could not allocate memory") + src.core.l_extranul = l_extranul + src.core.l_qname = l + l_extranul - src.core.l_extranul = l_extranul - src.core.l_qname = l + l_extranul + # re-acquire pointer to location in memory + # as it might have moved + p = pysam_bam_get_qname(src) - # re-acquire pointer to location in memory - # as it might have moved - p = pysam_bam_get_qname(src) + strncpy(p, qname, l) + # x might be > 255 + cdef uint16_t x = 0 - strncpy(p, qname, l) - # x might be > 255 - cdef uint16_t x = 0 + for x from l <= x < l + l_extranul: + p[x] = b'\0' - for x from l <= x < l + l_extranul: - p[x] = '\0' + @property + def flag(self): + """properties flag.""" + return self._delegate.core.flag - property flag: - """properties flag""" - def __get__(self): - return self._delegate.core.flag - def __set__(self, flag): - self._delegate.core.flag = flag + @flag.setter + def flag(self, flag): + self._delegate.core.flag = flag - property reference_name: + @property + def reference_name(self): """:term:`reference` name""" - def __get__(self): - if self._delegate.core.tid == -1: - return None - if self.header: - return self.header.get_reference_name(self._delegate.core.tid) - else: - raise ValueError("reference_name unknown if no header associated with record") - def __set__(self, reference): - cdef int tid - if reference is None or reference == "*": - self._delegate.core.tid = -1 - elif self.header: - tid = self.header.get_tid(reference) - if tid < 0: - raise ValueError("reference {} does not exist in header".format( - reference)) - self._delegate.core.tid = tid - else: - raise ValueError("reference_name can not be set if no header associated with record") + if self._delegate.core.tid == -1: + return None + if self.header: + return self.header.get_reference_name(self._delegate.core.tid) + else: + raise ValueError("reference_name unknown if no header associated with record") + + @reference_name.setter + def reference_name(self, reference): + cdef int tid + if reference is None or reference == "*": + self._delegate.core.tid = -1 + elif self.header: + tid = self.header.get_tid(reference) + if tid < 0: + raise ValueError("reference {} does not exist in header".format( + reference)) + self._delegate.core.tid = tid + else: + raise ValueError("reference_name can not be set if no header associated with record") - property reference_id: - """:term:`reference` ID + @property + def reference_id(self): + """:term:`reference` ID. .. note:: @@ -1209,34 +1216,40 @@ cdef class AlignedSegment: reference sequence, use :meth:`get_reference_name()` """ - def __get__(self): - return self._delegate.core.tid - def __set__(self, tid): - if tid != -1 and self.header and not self.header.is_valid_tid(tid): - raise ValueError("reference id {} does not exist in header".format( - tid)) - self._delegate.core.tid = tid + return self._delegate.core.tid + + @reference_id.setter + def reference_id(self, tid): + if tid != -1 and self.header and not self.header.is_valid_tid(tid): + raise ValueError("reference id {} does not exist in header".format( + tid)) + self._delegate.core.tid = tid + + @property + def reference_start(self): + """0-based leftmost reference coordinate.""" + return self._delegate.core.pos + + @reference_start.setter + def reference_start(self, pos): + ## setting the position requires updating the "bin" attribute + cdef bam1_t * src + src = self._delegate + src.core.pos = pos + update_bin(src) + + @property + def mapping_quality(self): + """mapping quality.""" + return pysam_get_qual(self._delegate) - property reference_start: - """0-based leftmost coordinate""" - def __get__(self): - return self._delegate.core.pos - def __set__(self, pos): - ## setting the position requires updating the "bin" attribute - cdef bam1_t * src - src = self._delegate - src.core.pos = pos - update_bin(src) - - property mapping_quality: - """mapping quality""" - def __get__(self): - return pysam_get_qual(self._delegate) - def __set__(self, qual): - pysam_set_qual(self._delegate, qual) - - property cigarstring: - '''the :term:`cigar` alignment as a string. + @mapping_quality.setter + def mapping_quality(self, qual): + pysam_set_qual(self._delegate, qual) + + @property + def cigarstring(self): + """the :term:`cigar` alignment as a string. The cigar string is a string of alternating integers and characters denoting the length and the type of @@ -1251,71 +1264,80 @@ cdef class AlignedSegment: To unset the cigarstring, assign None or the empty string. - ''' - def __get__(self): - c = self.cigartuples - if c is None: - return None - # reverse order - else: - return "".join([ "%i%c" % (y,CODE2CIGAR[x]) for x,y in c]) - def __set__(self, cigar): - if cigar is None or len(cigar) == 0: - self.cigartuples = [] - else: - parts = CIGAR_REGEX.findall(cigar) - # reverse order - self.cigartuples = [(CIGAR2CODE[ord(y)], int(x)) for x,y in parts] + """ + c = self.cigartuples + if c is None: + return None + + return "".join("%i%c" % (y, CODE2CIGAR[x]) for x, y in c) + + @cigarstring.setter + def cigarstring(self, cigar): + if not cigar: + self.cigartuples = [] + return + + parts = CIGAR_REGEX.findall(cigar) + self.cigartuples = [(CIGAR2CODE[ord(y)], int(x)) for x, y in parts] # TODO # property cigar: # """the cigar alignment""" - property next_reference_id: + @property + def next_reference_id(self): """the :term:`reference` id of the mate/next read.""" - def __get__(self): - return self._delegate.core.mtid - def __set__(self, mtid): - if mtid != -1 and self.header and not self.header.is_valid_tid(mtid): - raise ValueError("reference id {} does not exist in header".format( - mtid)) - self._delegate.core.mtid = mtid + return self._delegate.core.mtid - property next_reference_name: - """:term:`reference` name of the mate/next read (None if no - AlignmentFile is associated)""" - def __get__(self): - if self._delegate.core.mtid == -1: - return None - if self.header: - return self.header.get_reference_name(self._delegate.core.mtid) - else: - raise ValueError("next_reference_name unknown if no header associated with record") - - def __set__(self, reference): - cdef int mtid - if reference is None or reference == "*": - self._delegate.core.mtid = -1 - elif reference == "=": - self._delegate.core.mtid = self._delegate.core.tid - elif self.header: - mtid = self.header.get_tid(reference) - if mtid < 0: - raise ValueError("reference {} does not exist in header".format( - reference)) - self._delegate.core.mtid = mtid - else: - raise ValueError("next_reference_name can not be set if no header associated with record") + @next_reference_id.setter + def next_reference_id(self, mtid): + if mtid != -1 and self.header and not self.header.is_valid_tid(mtid): + raise ValueError("reference id {} does not exist in header".format( + mtid)) + self._delegate.core.mtid = mtid + + @property + def next_reference_name(self): + """:term:`reference` name of the mate/next read. - property next_reference_start: + Returns None if no AlignmentFile is associated) + + """ + if self._delegate.core.mtid == -1: + return None + if self.header: + return self.header.get_reference_name(self._delegate.core.mtid) + else: + raise ValueError("next_reference_name unknown if no header associated with record") + + @next_reference_name.setter + def next_reference_name(self, reference): + cdef int mtid + if reference is None or reference == "*": + self._delegate.core.mtid = -1 + elif reference == "=": + self._delegate.core.mtid = self._delegate.core.tid + elif self.header: + mtid = self.header.get_tid(reference) + if mtid < 0: + raise ValueError("reference {} does not exist in header".format( + reference)) + self._delegate.core.mtid = mtid + else: + raise ValueError("next_reference_name can not be set if no header associated with record") + + @property + def next_reference_start(self): """the position of the mate/next read.""" - def __get__(self): - return self._delegate.core.mpos - def __set__(self, mpos): - self._delegate.core.mpos = mpos + return self._delegate.core.mpos + + @next_reference_start.setter + def next_reference_start(self, mpos): + self._delegate.core.mpos = mpos - property query_length: + @property + def query_length(self): """the length of the query/read. This value corresponds to the length of the sequence supplied @@ -1333,19 +1355,22 @@ cdef class AlignedSegment: Returns 0 if not available. """ - def __get__(self): - return self._delegate.core.l_qseq + return self._delegate.core.l_qseq + + @property + def template_length(self): + """the observed query template length.""" + return self._delegate.core.isize + + @template_length.setter + def template_length(self, isize): + self._delegate.core.isize = isize - property template_length: - """the observed query template length""" - def __get__(self): - return self._delegate.core.isize - def __set__(self, isize): - self._delegate.core.isize = isize + @property + def query_sequence(self): + """read sequence bases, including :term:`soft clipped` bases. - property query_sequence: - """read sequence bases, including :term:`soft clipped` bases - (None if not present). + None is returned if not present. Note that assigning to seq will invalidate any quality scores. Thus, to in-place edit the sequence and quality scores, copies of @@ -1358,79 +1383,79 @@ cdef class AlignedSegment: The sequence is returned as it is stored in the BAM file. Some mappers might have stored a reverse complement of the original read sequence. + """ - def __get__(self): - if self.cache_query_sequence: - return self.cache_query_sequence + if self.cache_query_sequence: + return self.cache_query_sequence - cdef bam1_t * src - cdef char * s - src = self._delegate + cdef bam1_t * src + cdef char * s + src = self._delegate - if src.core.l_qseq == 0: - return None + if src.core.l_qseq == 0: + return None - self.cache_query_sequence = force_str(getSequenceInRange( - src, 0, src.core.l_qseq)) - return self.cache_query_sequence + self.cache_query_sequence = force_str(getSequenceInRange( + src, 0, src.core.l_qseq)) + return self.cache_query_sequence - def __set__(self, seq): - # samtools manages sequence and quality length memory together - # if no quality information is present, the first byte says 0xff. - cdef bam1_t * src - cdef uint8_t * p - cdef char * s - cdef int l, k - cdef Py_ssize_t nbytes_new, nbytes_old - - if seq == None: - l = 0 - else: - l = len(seq) - seq = force_bytes(seq) + @query_sequence.setter + def query_sequence(self, seq): + # samtools manages sequence and quality length memory together + # if no quality information is present, the first byte says 0xff. + cdef bam1_t * src + cdef bam1_t * retval + cdef uint8_t * p + cdef char * s + cdef int l, k + cdef Py_ssize_t nbytes_new, nbytes_old + + if seq == None: + l = 0 + else: + l = len(seq) + seq = force_bytes(seq) + + src = self._delegate - src = self._delegate + # as the sequence is stored in half-bytes, the total length (sequence + # plus quality scores) is (l+1)//2 + l + nbytes_new = (l + 1) // 2 + l + nbytes_old = (src.core.l_qseq + 1) // 2 + src.core.l_qseq - # as the sequence is stored in half-bytes, the total length (sequence - # plus quality scores) is (l+1)/2 + l - nbytes_new = (l + 1) / 2 + l - nbytes_old = (src.core.l_qseq + 1) / 2 + src.core.l_qseq + # acquire pointer to location in memory + p = pysam_bam_get_seq(src) + src.core.l_qseq = l - # acquire pointer to location in memory + # change length of data field + retval = pysam_bam_update(src, nbytes_old, nbytes_new, p) + + if retval == NULL: + raise MemoryError("could not allocate memory") + + if l > 0: + # re-acquire pointer to location in memory + # as it might have moved p = pysam_bam_get_seq(src) - src.core.l_qseq = l - - # change length of data field - cdef bam1_t * retval = pysam_bam_update(src, - nbytes_old, - nbytes_new, - p) - - if retval == NULL: - raise MemoryError("could not allocate memory") - - if l > 0: - # re-acquire pointer to location in memory - # as it might have moved - p = pysam_bam_get_seq(src) - for k from 0 <= k < nbytes_new: - p[k] = 0 - # convert to C string - s = seq - for k from 0 <= k < l: - p[k/2] |= seq_nt16_table[s[k]] << 4 * (1 - k % 2) - - # erase qualities - p = pysam_bam_get_qual(src) - p[0] = 0xff + for k from 0 <= k < nbytes_new: + p[k] = 0 + # convert to C string + s = seq + for k from 0 <= k < l: + p[k//2] |= seq_nt16_table[s[k]] << 4 * (1 - k % 2) + + # erase qualities + p = pysam_bam_get_qual(src) + p[0] = 0xff - self.cache_query_sequence = force_str(seq) + self.cache_query_sequence = force_str(seq) - # clear cached values for quality values - self.cache_query_qualities = None - self.cache_query_alignment_qualities = None + # clear cached values for quality values + self.cache_query_qualities = None + self.cache_query_alignment_qualities = None - property query_qualities: + @property + def query_qualities(self): """read sequence base qualities, including :term:`soft clipped` bases (None if not present). @@ -1447,64 +1472,64 @@ cdef class AlignedSegment: quality scores and the sequence are not the same. """ - def __get__(self): + if self.cache_query_qualities: + return self.cache_query_qualities - if self.cache_query_qualities: - return self.cache_query_qualities + cdef bam1_t * src + cdef char * q - cdef bam1_t * src - cdef char * q + src = self._delegate - src = self._delegate + if src.core.l_qseq == 0: + return None - if src.core.l_qseq == 0: - return None + self.cache_query_qualities = getQualitiesInRange(src, 0, src.core.l_qseq) + return self.cache_query_qualities - self.cache_query_qualities = getQualitiesInRange(src, 0, src.core.l_qseq) - return self.cache_query_qualities + @query_qualities.setter + def query_qualities(self, qual): + # note that memory is already allocated via setting the sequence + # hence length match of sequence and quality needs is checked. + cdef bam1_t * src + cdef uint8_t * p + cdef int l - def __set__(self, qual): + src = self._delegate + p = pysam_bam_get_qual(src) + if qual is None or len(qual) == 0: + # if absent and there is a sequence: set to 0xff + if src.core.l_qseq != 0: + p[0] = 0xff + return - # note that memory is already allocated via setting the sequence - # hence length match of sequence and quality needs is checked. - cdef bam1_t * src - cdef uint8_t * p - cdef int l + # check for length match + l = len(qual) + if src.core.l_qseq != l: + raise ValueError( + "quality and sequence mismatch: %i != %i" % + (l, src.core.l_qseq)) - src = self._delegate - p = pysam_bam_get_qual(src) - if qual is None or len(qual) == 0: - # if absent and there is a sequence: set to 0xff - if src.core.l_qseq != 0: - p[0] = 0xff - return - - # check for length match - l = len(qual) - if src.core.l_qseq != l: - raise ValueError( - "quality and sequence mismatch: %i != %i" % - (l, src.core.l_qseq)) + # create a python array object filling it + # with the quality scores - # create a python array object filling it - # with the quality scores + # NB: should avoid this copying if qual is + # already of the correct type. + cdef c_array.array result = c_array.array('B', qual) - # NB: should avoid this copying if qual is - # already of the correct type. - cdef c_array.array result = c_array.array('B', qual) + # copy data + memcpy(p, result.data.as_voidptr, l) - # copy data - memcpy(p, result.data.as_voidptr, l) + # save in cache + self.cache_query_qualities = qual - # save in cache - self.cache_query_qualities = qual + @property + def bin(self): + """genomic bin associated with this alignment.""" + return self._delegate.core.bin - property bin: - """properties bin""" - def __get__(self): - return self._delegate.core.bin - def __set__(self, bin): - self._delegate.core.bin = bin + @bin.setter + def bin(self, value): + self._delegate.core.bin = value ########################################################## @@ -1513,113 +1538,149 @@ cdef class AlignedSegment: ########################################################## # 1. Flags ########################################################## - property is_paired: - """true if read is paired in sequencing""" - def __get__(self): - return (self.flag & BAM_FPAIRED) != 0 - def __set__(self,val): - pysam_update_flag(self._delegate, val, BAM_FPAIRED) - - property is_proper_pair: - """true if read is mapped in a proper pair""" - def __get__(self): - return (self.flag & BAM_FPROPER_PAIR) != 0 - def __set__(self,val): - pysam_update_flag(self._delegate, val, BAM_FPROPER_PAIR) - property is_unmapped: - """true if read itself is unmapped""" - def __get__(self): - return (self.flag & BAM_FUNMAP) != 0 - def __set__(self, val): - pysam_update_flag(self._delegate, val, BAM_FUNMAP) - # setting the unmapped flag requires recalculation of - # bin as alignment length is now implicitely 1 - update_bin(self._delegate) - - property mate_is_unmapped: - """true if the mate is unmapped""" - def __get__(self): - return (self.flag & BAM_FMUNMAP) != 0 - def __set__(self,val): - pysam_update_flag(self._delegate, val, BAM_FMUNMAP) - property is_reverse: - """true if read is mapped to reverse strand""" - def __get__(self): - return (self.flag & BAM_FREVERSE) != 0 - def __set__(self,val): - pysam_update_flag(self._delegate, val, BAM_FREVERSE) - property mate_is_reverse: - """true is read is mapped to reverse strand""" - def __get__(self): - return (self.flag & BAM_FMREVERSE) != 0 - def __set__(self,val): - pysam_update_flag(self._delegate, val, BAM_FMREVERSE) - property is_read1: - """true if this is read1""" - def __get__(self): - return (self.flag & BAM_FREAD1) != 0 - def __set__(self,val): - pysam_update_flag(self._delegate, val, BAM_FREAD1) - property is_read2: - """true if this is read2""" - def __get__(self): - return (self.flag & BAM_FREAD2) != 0 - def __set__(self, val): - pysam_update_flag(self._delegate, val, BAM_FREAD2) - property is_secondary: - """true if not primary alignment""" - def __get__(self): - return (self.flag & BAM_FSECONDARY) != 0 - def __set__(self, val): - pysam_update_flag(self._delegate, val, BAM_FSECONDARY) - property is_qcfail: - """true if QC failure""" - def __get__(self): - return (self.flag & BAM_FQCFAIL) != 0 - def __set__(self, val): - pysam_update_flag(self._delegate, val, BAM_FQCFAIL) - property is_duplicate: - """true if optical or PCR duplicate""" - def __get__(self): - return (self.flag & BAM_FDUP) != 0 - def __set__(self, val): - pysam_update_flag(self._delegate, val, BAM_FDUP) - property is_supplementary: - """true if this is a supplementary alignment""" - def __get__(self): - return (self.flag & BAM_FSUPPLEMENTARY) != 0 - def __set__(self, val): - pysam_update_flag(self._delegate, val, BAM_FSUPPLEMENTARY) + @property + def is_paired(self): + """True if read is paired in sequencing.""" + return (self.flag & BAM_FPAIRED) != 0 + + @is_paired.setter + def is_paired(self,val): + pysam_update_flag(self._delegate, val, BAM_FPAIRED) + + @property + def is_proper_pair(self): + """True if read is mapped in a proper pair.""" + return (self.flag & BAM_FPROPER_PAIR) != 0 + + @is_proper_pair.setter + def is_proper_pair(self, val): + pysam_update_flag(self._delegate, val, BAM_FPROPER_PAIR) + + @property + def is_unmapped(self): + """True if read itself is unmapped.""" + return (self.flag & BAM_FUNMAP) != 0 + + @is_unmapped.setter + def is_unmapped(self, val): + pysam_update_flag(self._delegate, val, BAM_FUNMAP) + # setting the unmapped flag requires recalculation of + # bin as alignment length is now implicitely 1 + update_bin(self._delegate) + + @property + def mate_is_unmapped(self): + """True if the mate is unmapped.""" + return (self.flag & BAM_FMUNMAP) != 0 + + @mate_is_unmapped.setter + def mate_is_unmapped(self, val): + pysam_update_flag(self._delegate, val, BAM_FMUNMAP) + + @property + def is_reverse(self): + """True if read is mapped to reverse strand.""" + return (self.flag & BAM_FREVERSE) != 0 + + @is_reverse.setter + def is_reverse(self,val): + pysam_update_flag(self._delegate, val, BAM_FREVERSE) + + @property + def mate_is_reverse(self): + """True is read is mapped to reverse strand.""" + return (self.flag & BAM_FMREVERSE) != 0 + + @mate_is_reverse.setter + def mate_is_reverse(self, val): + pysam_update_flag(self._delegate, val, BAM_FMREVERSE) + + @property + def is_read1(self): + """true if this is read1.""" + return (self.flag & BAM_FREAD1) != 0 + + @is_read1.setter + def is_read1(self, val): + pysam_update_flag(self._delegate, val, BAM_FREAD1) + + @property + def is_read2(self): + """true if this is read2.""" + return (self.flag & BAM_FREAD2) != 0 + + @is_read2.setter + def is_read2(self, val): + pysam_update_flag(self._delegate, val, BAM_FREAD2) + + @property + def is_secondary(self): + """true if not primary alignment.""" + return (self.flag & BAM_FSECONDARY) != 0 + + @is_secondary.setter + def is_secondary(self, val): + pysam_update_flag(self._delegate, val, BAM_FSECONDARY) + + @property + def is_qcfail(self): + """true if QC failure.""" + return (self.flag & BAM_FQCFAIL) != 0 + + @is_qcfail.setter + def is_qcfail(self, val): + pysam_update_flag(self._delegate, val, BAM_FQCFAIL) + + @property + def is_duplicate(self): + """true if optical or PCR duplicate.""" + return (self.flag & BAM_FDUP) != 0 + + @is_duplicate.setter + def is_duplicate(self, val): + pysam_update_flag(self._delegate, val, BAM_FDUP) + + @property + def is_supplementary(self): + """true if this is a supplementary alignment.""" + return (self.flag & BAM_FSUPPLEMENTARY) != 0 + + @is_supplementary.setter + def is_supplementary(self, val): + pysam_update_flag(self._delegate, val, BAM_FSUPPLEMENTARY) # 2. Coordinates and lengths - property reference_end: - '''aligned reference position of the read on the reference genome. + @property + def reference_end(self): + """aligned reference position of the read on the reference genome. reference_end points to one past the last aligned residue. Returns None if not available (read is unmapped or no cigar alignment present). - ''' - def __get__(self): - cdef bam1_t * src - src = self._delegate - if (self.flag & BAM_FUNMAP) or pysam_get_n_cigar(src) == 0: - return None - return bam_endpos(src) - - property reference_length: - '''aligned length of the read on the reference genome. - - This is equal to `aend - pos`. Returns None if not available.''' - def __get__(self): - cdef bam1_t * src - src = self._delegate - if (self.flag & BAM_FUNMAP) or pysam_get_n_cigar(src) == 0: - return None - return bam_endpos(src) - \ - self._delegate.core.pos - - property query_alignment_sequence: + """ + cdef bam1_t * src + src = self._delegate + if (self.flag & BAM_FUNMAP) or pysam_get_n_cigar(src) == 0: + return None + return bam_endpos(src) + + @property + def reference_length(self): + """aligned length of the read on the reference genome. + + This is equal to `aend - pos`. Returns None if not available. + + """ + cdef bam1_t * src + src = self._delegate + if (self.flag & BAM_FUNMAP) or pysam_get_n_cigar(src) == 0: + return None + return bam_endpos(src) - \ + self._delegate.core.pos + + @property + def reference_length(self): """aligned portion of the read. This is a substring of :attr:`seq` that excludes flanking @@ -1635,28 +1696,29 @@ cdef class AlignedSegment: may have been retained. """ + if self.cache_query_alignment_sequence: + return self.cache_query_alignment_sequence - def __get__(self): - if self.cache_query_alignment_sequence: - return self.cache_query_alignment_sequence + cdef bam1_t * src + cdef uint32_t start, end - cdef bam1_t * src - cdef uint32_t start, end + src = self._delegate - src = self._delegate + if src.core.l_qseq == 0: + return None - if src.core.l_qseq == 0: - return None + start = getQueryStart(src) + end = getQueryEnd(src) - start = getQueryStart(src) - end = getQueryEnd(src) + self.cache_query_alignment_sequence = force_str( + getSequenceInRange(src, start, end)) + return self.cache_query_alignment_sequence - self.cache_query_alignment_sequence = force_str( - getSequenceInRange(src, start, end)) - return self.cache_query_alignment_sequence + @property + def query_alignment_qualities(self): + """aligned query sequence quality values (None if not present). - property query_alignment_qualities: - """aligned query sequence quality values (None if not present). These + These are the quality values that correspond to :attr:`query`, that is, they exclude qualities of :term:`soft clipped` bases. This is equal to ``qual[qstart:qend]``. @@ -1669,59 +1731,61 @@ cdef class AlignedSegment: This property is read-only. """ - def __get__(self): + if self.cache_query_alignment_qualities: + return self.cache_query_alignment_qualities - if self.cache_query_alignment_qualities: - return self.cache_query_alignment_qualities + cdef bam1_t * src + cdef uint32_t start, end - cdef bam1_t * src - cdef uint32_t start, end + src = self._delegate - src = self._delegate + if src.core.l_qseq == 0: + return None - if src.core.l_qseq == 0: - return None + start = getQueryStart(src) + end = getQueryEnd(src) - start = getQueryStart(src) - end = getQueryEnd(src) - self.cache_query_alignment_qualities = \ - getQualitiesInRange(src, start, end) - return self.cache_query_alignment_qualities + self.cache_query_alignment_qualities = getQualitiesInRange(src, start, end) + return self.cache_query_alignment_qualities - property query_alignment_start: + @property + def query_alignment_start(self): """start index of the aligned query portion of the sequence (0-based, inclusive). This the index of the first base in :attr:`seq` that is not soft-clipped. + """ - def __get__(self): - return getQueryStart(self._delegate) + return getQueryStart(self._delegate) - property query_alignment_end: + @property + def query_alignment_end(self): """end index of the aligned query portion of the sequence (0-based, exclusive) This the index just past the last base in :attr:`seq` that is not soft-clipped. + """ - def __get__(self): - return getQueryEnd(self._delegate) + return getQueryEnd(self._delegate) - property query_alignment_length: + @property + def query_alignment_length(self): """length of the aligned query sequence. - This is equal to :attr:`qend` - :attr:`qstart`""" - def __get__(self): - cdef bam1_t * src - src = self._delegate - return getQueryEnd(src) - getQueryStart(src) + This is equal to :attr:`qend` - :attr:`qstart` + + """ + cdef bam1_t * src + src = self._delegate + return getQueryEnd(src) - getQueryStart(src) ##################################################### # Computed properties def get_reference_positions(self, full_length=False): - """a list of reference positions that this read aligns to. + """list of reference positions to which this read is aligned. By default, this method only returns positions in the reference that are within the alignment. If *full_length* is @@ -1768,6 +1832,7 @@ cdef class AlignedSegment: including hard-clipped bases. Returns None if CIGAR alignment is not present. + """ cdef int32_t l = calculateQueryLengthWithHardClipping(self._delegate) if l > 0: @@ -1791,6 +1856,7 @@ cdef class AlignedSegment: complemented. Returns None if the record has no query sequence. + """ if self.query_sequence is None: return None @@ -1803,6 +1869,7 @@ cdef class AlignedSegment: """return base qualities of the read sequence. Reads mapping to the reverse strand will be reversed. + """ if self.is_reverse: return self.query_qualities[::-1] @@ -1846,7 +1913,6 @@ cdef class AlignedSegment: # read sequence, cigar and MD tag are consistent. if _with_seq: - # force_str required for py2/py3 compatibility ref_seq = force_str(build_reference_sequence(src)) if ref_seq is None: raise ValueError("MD tag not present") @@ -1934,8 +2000,8 @@ cdef class AlignedSegment: might be directly adjacent. This happens if the two blocks are separated by an insertion in the read. - """ + """ cdef uint32_t k, pos, l cdef int op cdef uint32_t * cigar_p @@ -1966,6 +2032,7 @@ cdef class AlignedSegment: *start* and *end* on the reference sequence. Return None if cigar alignment is not available. + """ cdef uint32_t k, i, pos, overlap cdef int op, o @@ -2034,7 +2101,6 @@ cdef class AlignedSegment: for each cigar operation. """ - cdef int nfields = NCIGAR_CODES + 1 cdef c_array.array base_counts = array.array( @@ -2070,9 +2136,11 @@ cdef class AlignedSegment: ##################################################### ## Unsorted as yet # TODO: capture in CIGAR object - property cigartuples: - """the :term:`cigar` alignment. The alignment - is returned as a list of tuples of (operation, length). + @property + def query_alignment_start(self): + """query alignment start position. + + The alignment is returned as a list of tuples of (operation, length). If the alignment is not present, None is returned. @@ -2109,73 +2177,70 @@ cdef class AlignedSegment: To unset the cigar property, assign an empty list or None. + """ - def __get__(self): - cdef uint32_t * cigar_p - cdef bam1_t * src - cdef uint32_t op, l - cdef uint32_t k + cdef uint32_t * cigar_p + cdef bam1_t * src + cdef uint32_t op, l + cdef uint32_t k - src = self._delegate - if pysam_get_n_cigar(src) == 0: - return None + src = self._delegate + if pysam_get_n_cigar(src) == 0: + return None - cigar = [] + cigar = [] - cigar_p = pysam_bam_get_cigar(src); - for k from 0 <= k < pysam_get_n_cigar(src): - op = cigar_p[k] & BAM_CIGAR_MASK - l = cigar_p[k] >> BAM_CIGAR_SHIFT - cigar.append((op, l)) - return cigar + cigar_p = pysam_bam_get_cigar(src); + for k from 0 <= k < pysam_get_n_cigar(src): + op = cigar_p[k] & BAM_CIGAR_MASK + l = cigar_p[k] >> BAM_CIGAR_SHIFT + cigar.append((op, l)) + return cigar - def __set__(self, values): - cdef uint32_t * p - cdef bam1_t * src - cdef op, l - cdef int k + @query_alignment_start.setter + def query_alignment_start(self, values): + cdef uint32_t * p + cdef bam1_t * src + cdef op, l + cdef int k - k = 0 + k = 0 - src = self._delegate + src = self._delegate - # get location of cigar string - p = pysam_bam_get_cigar(src) + # get location of cigar string + p = pysam_bam_get_cigar(src) - # empty values for cigar string - if values is None: - values = [] + # empty values for cigar string + if values is None: + values = [] - cdef uint32_t ncigar = len(values) + cdef uint32_t ncigar = len(values) - cdef bam1_t * retval = pysam_bam_update(src, - pysam_get_n_cigar(src) * 4, - ncigar * 4, - p) + cdef bam1_t * retval = pysam_bam_update(src, + pysam_get_n_cigar(src) * 4, + ncigar * 4, + p) - if retval == NULL: - raise MemoryError("could not allocate memory") + if retval == NULL: + raise MemoryError("could not allocate memory") - # length is number of cigar operations, not bytes - pysam_set_n_cigar(src, ncigar) + # length is number of cigar operations, not bytes + pysam_set_n_cigar(src, ncigar) - # re-acquire pointer to location in memory - # as it might have moved - p = pysam_bam_get_cigar(src) + # re-acquire pointer to location in memory + # as it might have moved + p = pysam_bam_get_cigar(src) - # insert cigar operations - for op, l in values: - p[k] = l << BAM_CIGAR_SHIFT | op - k += 1 + # insert cigar operations + for op, l in values: + p[k] = l << BAM_CIGAR_SHIFT | op + k += 1 - ## setting the cigar string requires updating the bin - update_bin(src) + ## setting the cigar string requires updating the bin + update_bin(src) - cpdef set_tag(self, - tag, - value, - value_type=None, - replace=True): + cpdef set_tag(self, tag, value, value_type=None, replace=True): """sets a particular field *tag* to *value* in the optional alignment section. @@ -2216,8 +2281,8 @@ cdef class AlignedSegment: Note that a single character string will be output as 'Z' and not 'A' as the former is the more general type. - """ + """ cdef int value_size cdef uint8_t tc cdef uint8_t * value_ptr @@ -2254,54 +2319,54 @@ cdef class AlignedSegment: value, value_type)) # sam_format1 for typecasting - if typecode == 'Z': + if typecode == b'Z': value = force_bytes(value) value_ptr = value value_size = len(value)+1 - elif typecode == 'H': + elif typecode == b'H': # Note that hex tags are stored the very same # way as Z string.s value = force_bytes(value) value_ptr = value value_size = len(value)+1 - elif typecode == 'A' or typecode == 'a': + elif typecode == b'A' or typecode == b'a': value = force_bytes(value) value_ptr = value value_size = sizeof(char) - typecode = 'A' - elif typecode == 'i': + typecode = b'A' + elif typecode == b'i': int32_t_value = value value_ptr = &int32_t_value value_size = sizeof(int32_t) - elif typecode == 'I': + elif typecode == b'I': uint32_t_value = value value_ptr = &uint32_t_value value_size = sizeof(uint32_t) - elif typecode == 's': + elif typecode == b's': int16_t_value = value value_ptr = &int16_t_value value_size = sizeof(int16_t) - elif typecode == 'S': + elif typecode == b'S': uint16_t_value = value value_ptr = &uint16_t_value value_size = sizeof(uint16_t) - elif typecode == 'c': + elif typecode == b'c': int8_t_value = value value_ptr = &int8_t_value value_size = sizeof(int8_t) - elif typecode == 'C': + elif typecode == b'C': uint8_t_value = value value_ptr = &uint8_t_value value_size = sizeof(uint8_t) - elif typecode == 'd': + elif typecode == b'd': double_value = value value_ptr = &double_value value_size = sizeof(double) - elif typecode == 'f': + elif typecode == b'f': float_value = value value_ptr = &float_value value_size = sizeof(float) - elif typecode == 'B': + elif typecode == b'B': # the following goes through python, needs to be cleaned up # pack array using struct fmt, args = pack_tags([(tag, value, value_type)]) @@ -2332,8 +2397,7 @@ cdef class AlignedSegment: value_ptr) cpdef has_tag(self, tag): - """returns true if the optional alignment section - contains a given *tag*.""" + """returns true if the optional alignment section contains a given *tag*.""" cdef uint8_t * v cdef int nvalues btag = force_bytes(tag) @@ -2341,8 +2405,7 @@ cdef class AlignedSegment: return v != NULL cpdef get_tag(self, tag, with_value_type=False): - """ - retrieves data from the optional alignment section + """retrieve data from the optional alignment section given a two-letter *tag* denoting the field. The returned value is cast into an appropriate python type. @@ -2380,12 +2443,13 @@ cdef class AlignedSegment: v = bam_aux_get(self._delegate, btag) if v == NULL: raise KeyError("tag '%s' not present" % tag) - if chr(v[0]) == "B": + + if chr(v[0]) == b'B': auxtype = chr(v[0]) + chr(v[1]) else: auxtype = chr(v[0]) - if auxtype in "iIcCsS": + if auxtype in b'iIcCsS': value = bam_aux2i(v) elif auxtype == 'f' or auxtype == 'F': value = bam_aux2f(v) @@ -2393,14 +2457,14 @@ cdef class AlignedSegment: value = bam_aux2f(v) elif auxtype == 'A' or auxtype == 'a': # force A to a - v[0] = 'A' + v[0] = b'A' # there might a more efficient way # to convert a char into a string value = '%c' % bam_aux2A(v) - elif auxtype == 'Z' or auxtype == 'H': + elif auxtype == b'Z' or auxtype == b'H': # Z and H are treated equally as strings in htslib value = charptr_to_str(bam_aux2Z(v)) - elif auxtype[0] == 'B': + elif auxtype[0] == b'B': bytesize, nvalues, values = convert_binary_tag(v + 1) value = values else: @@ -2430,7 +2494,6 @@ cdef class AlignedSegment: :meth:`get_tag` for a quicker way to achieve this. """ - cdef char * ctag cdef bam1_t * src cdef uint8_t * s @@ -2451,29 +2514,29 @@ cdef class AlignedSegment: auxtag[1] = s[1] s += 2 auxtype = s[0] - if auxtype in ('c', 'C'): + if auxtype in (b'c', b'C'): value = bam_aux2i(s) s += 1 - elif auxtype in ('s', 'S'): + elif auxtype in (b's', b'S'): value = bam_aux2i(s) s += 2 - elif auxtype in ('i', 'I'): + elif auxtype in (b'i', b'I'): value = bam_aux2i(s) s += 4 - elif auxtype == 'f': + elif auxtype == b'f': value = bam_aux2f(s) s += 4 - elif auxtype == 'd': + elif auxtype == b'd': value = bam_aux2f(s) s += 8 - elif auxtype in ('A', 'a'): + elif auxtype in (b'A', b'a'): value = "%c" % bam_aux2A(s) s += 1 - elif auxtype in ('Z', 'H'): + elif auxtype in (b'Z', b'H'): value = charptr_to_str(bam_aux2Z(s)) # +1 for NULL terminated string s += len(value) + 1 - elif auxtype == 'B': + elif auxtype == b'B': s += 1 byte_size, nvalues, value = convert_binary_tag(s) # 5 for 1 char and 1 int @@ -2502,8 +2565,8 @@ cdef class AlignedSegment: This method will not enforce the rule that the same tag may appear only once in the optional alignment section. - """ + """ cdef bam1_t * src cdef uint8_t * s cdef char * temp @@ -2548,14 +2611,15 @@ cdef class AlignedSegment: cdef class PileupColumn: - '''A pileup of reads at a particular reference sequence position + """A pileup of reads at a particular reference sequence position (:term:`column`). A pileup column contains all the reads that map to a certain target base. This class is a proxy for results returned by the samtools pileup engine. If the underlying engine iterator advances, the results of this column will change. - ''' + + """ def __init__(self): raise TypeError("this class cannot be instantiated from Python") @@ -2571,346 +2635,79 @@ cdef class PileupColumn: free(self.buf.s) def set_min_base_quality(self, min_base_quality): - """set the minimum base quality for this pileup column. - """ + """set the minimum base quality for this pileup column.""" self.min_base_quality = min_base_quality def __len__(self): """return number of reads aligned to this column. see :meth:`get_num_aligned` + """ return self.get_num_aligned() - property reference_id: - '''the reference sequence number as defined in the header''' - def __get__(self): - return self.tid + @property + def reference_id(self): + """reference sequence number as defined in the header.""" + return self.tid - property reference_name: - """:term:`reference` name (None if no AlignmentFile is associated)""" - def __get__(self): - if self.header is not None: - return self.header.get_reference_name(self.tid) + @property + def reference_name(self): + """:term:`reference` name (None if no AlignmentFile is associated).""" + if self.header is None: return None - property nsegments: - '''number of reads mapping to this column. - - Note that this number ignores the base quality filter.''' - def __get__(self): - return self.n_pu - def __set__(self, n): - self.n_pu = n - - property reference_pos: - '''the position in the reference sequence (0-based).''' - def __get__(self): - return self.pos - - property pileups: - '''list of reads (:class:`pysam.PileupRead`) aligned to this column''' - def __get__(self): - if self.plp == NULL or self.plp[0] == NULL: - raise ValueError("PileupColumn accessed after iterator finished") - - cdef int x - cdef bam_pileup1_t * p = NULL - pileups = [] - - # warning: there could be problems if self.n and self.buf are - # out of sync. - for x from 0 <= x < self.n_pu: - p = &(self.plp[0][x]) - if p == NULL: - raise ValueError( - "pileup buffer out of sync - most likely use of iterator " - "outside loop") - if pileup_base_qual_skip(p, self.min_base_quality): - continue - pileups.append(makePileupRead(p, self.header)) - return pileups + return self.header.get_reference_name(self.tid) - ######################################################## - # Compatibility Accessors - # Functions, properties for compatibility with pysam < 0.8 - ######################################################## - def get_num_aligned(self): - """return number of aligned bases at pileup column position. + @property + def reference_id(self): + """number of reads mapping to this column. - This method applies a base quality filter and the number is - equal to the size of :meth:`get_query_sequences`, - :meth:`get_mapping_qualities`, etc. + Note that this number ignores the base quality filter. """ - cdef uint32_t x = 0 - cdef uint32_t c = 0 - cdef uint32_t cnt = 0 - cdef bam_pileup1_t * p = NULL - if self.plp == NULL or self.plp[0] == NULL: - raise ValueError("PileupColumn accessed after iterator finished") - - for x from 0 <= x < self.n_pu: - p = &(self.plp[0][x]) - if p == NULL: - raise ValueError( - "pileup buffer out of sync - most likely use of iterator " - "outside loop") - if pileup_base_qual_skip(p, self.min_base_quality): - continue - cnt += 1 - return cnt - - def get_query_sequences(self, bint mark_matches=False, bint mark_ends=False, bint add_indels=False): - """query bases/sequences at pileup column position. - - Optionally, the bases/sequences can be annotated according to the samtools - mpileup format. This is the format description from the samtools mpileup tool:: - - Information on match, mismatch, indel, strand, mapping - quality and start and end of a read are all encoded at the - read base column. At this column, a dot stands for a match - to the reference base on the forward strand, a comma for a - match on the reverse strand, a '>' or '<' for a reference - skip, `ACGTN' for a mismatch on the forward strand and - `acgtn' for a mismatch on the reverse strand. A pattern - `\\+[0-9]+[ACGTNacgtn]+' indicates there is an insertion - between this reference position and the next reference - position. The length of the insertion is given by the - integer in the pattern, followed by the inserted - sequence. Similarly, a pattern `-[0-9]+[ACGTNacgtn]+' - represents a deletion from the reference. The deleted bases - will be presented as `*' in the following lines. Also at - the read base column, a symbol `^' marks the start of a - read. The ASCII of the character following `^' minus 33 - gives the mapping quality. A symbol `$' marks the end of a - read segment - - To reproduce samtools mpileup format, set all of mark_matches, - mark_ends and add_indels to True. - - Parameters - ---------- - - mark_matches: bool - - If True, output bases matching the reference as "," or "." - for forward and reverse strand, respectively. This mark - requires the reference sequence. If no reference is - present, this option is ignored. - - mark_ends : bool - - If True, add markers "^" and "$" for read start and end, respectively. + return self.n_pu - add_indels : bool + @reference_id.setter + def reference_id(self, n): + self.n_pu = n - If True, add bases for bases inserted into the reference and - 'N's for base skipped from the reference. If a reference sequence - is given, add the actual bases. - - Returns - ------- - - list: a list of bases/sequences per read at pileup column position. - - """ - cdef uint32_t x = 0 - cdef uint32_t j = 0 - cdef uint32_t c = 0 - cdef uint8_t cc = 0 - cdef uint8_t rb = 0 - cdef kstring_t * buf = &self.buf - cdef bam_pileup1_t * p = NULL + @property + def reference_pos(self): + """the position in the reference sequence (0-based).""" + return self.pos + @property + def pileups(self): + """list of reads (:class:`pysam.PileupRead`) aligned to this column.""" if self.plp == NULL or self.plp[0] == NULL: raise ValueError("PileupColumn accessed after iterator finished") - buf.l = 0 - - # todo: reference sequence to count matches/mismatches - # todo: convert assertions to exceptions - for x from 0 <= x < self.n_pu: - p = &(self.plp[0][x]) - if p == NULL: - raise ValueError( - "pileup buffer out of sync - most likely use of iterator " - "outside loop") - if pileup_base_qual_skip(p, self.min_base_quality): - continue - # see samtools pileup_seq - if mark_ends and p.is_head: - kputc('^', buf) - - if p.b.core.qual > 93: - kputc(126, buf) - else: - kputc(p.b.core.qual + 33, buf) - if not p.is_del: - if p.qpos < p.b.core.l_qseq: - cc = seq_nt16_str[bam_seqi(bam_get_seq(p.b), p.qpos)] - else: - cc = 'N' - - if mark_matches and self.reference_sequence != NULL: - rb = self.reference_sequence[self.reference_pos] - if seq_nt16_table[cc] == seq_nt16_table[rb]: - cc = "=" - kputc(strand_mark_char(cc, p.b), buf) - elif add_indels: - if p.is_refskip: - if bam_is_rev(p.b): - kputc('<', buf) - else: - kputc('>', buf) - else: - kputc('*', buf) - if add_indels: - if p.indel > 0: - kputc('+', buf) - kputw(p.indel, buf) - for j from 1 <= j <= p.indel: - cc = seq_nt16_str[bam_seqi(bam_get_seq(p.b), p.qpos + j)] - kputc(strand_mark_char(cc, p.b), buf) - elif p.indel < 0: - kputc('-', buf) - kputw(-p.indel, buf) - for j from 1 <= j <= -p.indel: - # TODO: out-of-range check here? - if self.reference_sequence == NULL: - cc = 'N' - else: - cc = self.reference_sequence[self.reference_pos + j] - kputc(strand_mark_char(cc, p.b), buf) - if mark_ends and p.is_tail: - kputc('$', buf) - - kputc(':', buf) - - if buf.l == 0: - # could be zero if all qualities are too low - return "" - else: - # quicker to ensemble all and split than to encode all separately. - # ignore last ":" - return force_str(PyBytes_FromStringAndSize(buf.s, buf.l-1)).split(":") - - def get_query_qualities(self): - """query base quality scores at pileup column position. - - Returns - ------- - - list: a list of quality scores - """ - cdef uint32_t x = 0 - cdef bam_pileup1_t * p = NULL - cdef uint32_t c = 0 - result = [] - for x from 0 <= x < self.n_pu: - p = &(self.plp[0][x]) - if p == NULL: - raise ValueError( - "pileup buffer out of sync - most likely use of iterator " - "outside loop") - - if p.qpos < p.b.core.l_qseq: - c = bam_get_qual(p.b)[p.qpos] - else: - c = 0 - if c < self.min_base_quality: - continue - result.append(c) - return result - - def get_mapping_qualities(self): - """query mapping quality scores at pileup column position. - - Returns - ------- - - list: a list of quality scores - """ - if self.plp == NULL or self.plp[0] == NULL: - raise ValueError("PileupColumn accessed after iterator finished") - - cdef uint32_t x = 0 - cdef bam_pileup1_t * p = NULL - result = [] - for x from 0 <= x < self.n_pu: - p = &(self.plp[0][x]) - if p == NULL: - raise ValueError( - "pileup buffer out of sync - most likely use of iterator " - "outside loop") - - if pileup_base_qual_skip(p, self.min_base_quality): - continue - result.append(p.b.core.qual) - return result - - def get_query_positions(self): - """positions in read at pileup column position. - - Returns - ------- - - list: a list of read positions - """ - if self.plp == NULL or self.plp[0] == NULL: - raise ValueError("PileupColumn accessed after iterator finished") - - cdef uint32_t x = 0 + cdef int x cdef bam_pileup1_t * p = NULL - result = [] - for x from 0 <= x < self.n_pu: - p = &(self.plp[0][x]) - if p == NULL: - raise ValueError( - "pileup buffer out of sync - most likely use of iterator " - "outside loop") - - if pileup_base_qual_skip(p, self.min_base_quality): - continue - result.append(p.qpos) - return result + pileups = [] - def get_query_names(self): - """query/read names aligned at pileup column position. - - Returns - ------- - - list: a list of query names at pileup column position. - """ - if self.plp == NULL or self.plp[0] == NULL: - raise ValueError("PileupColumn accessed after iterator finished") - - cdef uint32_t x = 0 - cdef bam_pileup1_t * p = NULL - result = [] + # warning: there could be problems if self.n and self.buf are + # out of sync. for x from 0 <= x < self.n_pu: p = &(self.plp[0][x]) if p == NULL: raise ValueError( "pileup buffer out of sync - most likely use of iterator " "outside loop") - if pileup_base_qual_skip(p, self.min_base_quality): continue - result.append(charptr_to_str(pysam_bam_get_qname(p.b))) - return result + pileups.append(makePileupRead(p, self.header)) + return pileups cdef class PileupRead: - '''Representation of a read aligned to a particular position in the + """Representation of a read aligned to a particular position in the reference sequence. - ''' - + """ def __init__(self): - raise TypeError( - "this class cannot be instantiated from Python") + raise TypeError("this class cannot be instantiated from Python") def __str__(self): return "\t".join( @@ -2920,33 +2717,34 @@ cdef class PileupRead: self.is_del, self.is_head, self.is_tail, self.is_refskip))) - property alignment: - """a :class:`pysam.AlignedSegment` object of the aligned read""" - def __get__(self): - return self._alignment + @property + def alignment(self): + """a :class:`pysam.AlignedSegment` object of the aligned read.""" + return self._alignment - property query_position: + @property + def query_position(self): """position of the read base at the pileup site, 0-based. None if is_del or is_refskip is set. """ - def __get__(self): - if self.is_del or self.is_refskip: - return None - else: - return self._qpos + if self.is_del or self.is_refskip: + return None + else: + return self._qpos - property query_position_or_next: + @property + def query_position_or_next(self): """position of the read base at the pileup site, 0-based. If the current position is a deletion, returns the next aligned base. """ - def __get__(self): - return self._qpos + return self._qpos - property indel: + @property + def indel(self): """indel length for the position following the current pileup site. This quantity peeks ahead to the next cigar operation in this @@ -2955,34 +2753,36 @@ cdef class PileupRead: negation. 0 if the next operation is not an indel. """ - def __get__(self): - return self._indel + return self._indel + + @property + def level(self): + """the level of the read in the "viewer" mode. - property level: - """the level of the read in the "viewer" mode. Note that this value - is currently not computed.""" - def __get__(self): - return self._level + Note that this value is currently not computed. + + """ + return self._level - property is_del: - """1 iff the base on the padded read is a deletion""" - def __get__(self): - return self._is_del + @property + def is_del(self): + """True iff the base on the padded read is a deletion.""" + return bool(self._is_del) - property is_head: - """1 iff the base on the padded read is the left-most base.""" - def __get__(self): - return self._is_head + @property + def is_head(self): + """True iff the base on the padded read is the left-most base.""" + return bool(self._is_head) - property is_tail: - """1 iff the base on the padded read is the right-most base.""" - def __get__(self): - return self._is_tail + @property + def is_tail(self): + """True iff the base on the padded read is the right-most base.""" + return bool(self._is_tail) - property is_refskip: - """1 iff the base on the padded read is part of CIGAR N op.""" - def __get__(self): - return self._is_refskip + @property + def is_refskip(self): + """True iff the base on the padded read is part of CIGAR N op.""" + return bool(self._is_refskip) @@ -3052,4 +2852,5 @@ __all__ = [ "FQCFAIL", "FDUP", "FSUPPLEMENTARY", - "KEY_NAMES"] + "KEY_NAMES", +] diff --git a/pysam/libcalignmentfile.pxd b/pysam/libcalignmentfile.pxd index e8e2081..4515e36 100644 --- a/pysam/libcalignmentfile.pxd +++ b/pysam/libcalignmentfile.pxd @@ -1,3 +1,5 @@ +# cython: language_level=3, embedsignature=True, profile=True + from libc.stdint cimport int8_t, int16_t, int32_t, int64_t from libc.stdint cimport uint8_t, uint16_t, uint32_t, uint64_t from libc.stdlib cimport malloc, calloc, realloc, free @@ -143,8 +145,6 @@ cdef class IteratorColumn: cdef reset(self, tid, start, stop) cdef _free_pileup_iter(self) - # backwards compatibility - cdef char * getSequence(self) cdef class IteratorColumnRegion(IteratorColumn): diff --git a/pysam/libcalignmentfile.pyx b/pysam/libcalignmentfile.pyx index 753381d..e8afec9 100644 --- a/pysam/libcalignmentfile.pyx +++ b/pysam/libcalignmentfile.pyx @@ -1,6 +1,4 @@ -# cython: embedsignature=True -# cython: profile=True -######################################################## +# cython: language_level=3, embedsignature=True, profile=True ######################################################## # Cython wrapper for SAM/BAM/CRAM files based on htslib ######################################################## @@ -98,43 +96,59 @@ IndexStats = collections.namedtuple("IndexStats", cdef int MAX_POS = (1 << 31) - 1 # valid types for SAM headers -VALID_HEADER_TYPES = {"HD" : Mapping, - "SQ" : Sequence, - "RG" : Sequence, - "PG" : Sequence, - "CO" : Sequence} +VALID_HEADER_TYPES = { + "HD": Mapping, + "SQ": Sequence, + "RG": Sequence, + "PG": Sequence, + "CO": Sequence, +} # order of records within SAM headers VALID_HEADERS = ("HD", "SQ", "RG", "PG", "CO") # default type conversions within SAM header records -KNOWN_HEADER_FIELDS = {"HD" : {"VN" : str, "SO" : str, "GO" : str}, - "SQ" : {"SN" : str, "LN" : int, "AS" : str, - "M5" : str, "SP" : str, "UR" : str, - "AH" : str,}, - "RG" : {"ID" : str, "CN" : str, "DS" : str, - "DT" : str, "FO" : str, "KS" : str, - "LB" : str, "PG" : str, "PI" : str, - "PL" : str, "PM" : str, "PU" : str, - "SM" : str,}, - "PG" : {"ID" : str, "PN" : str, "CL" : str, - "PP" : str, "DS" : str, "VN" : str,},} +KNOWN_HEADER_FIELDS = { + "HD": {"VN": str, "SO": str, "GO": str}, + "SQ": { + "SN": str, + "LN": int, + "AS": str, + "M5": str, + "SP": str, + "UR": str, + "AH": str, + }, + "RG": { + "ID": str, + "CN": str, + "DS": str, + "DT": str, + "FO": str, + "KS": str, + "LB": str, + "PG": str, + "PI": str, + "PL": str, + "PM": str, + "PU": str, + "SM": str, + }, + "PG": {"ID": str, "PN": str, "CL": str, "PP": str, "DS": str, "VN": str}, +} # output order of fields within records. Ensure that CL is at # the end as parsing a CL will ignore any subsequent records. -VALID_HEADER_ORDER = {"HD" : ("VN", "SO", "GO"), - "SQ" : ("SN", "LN", "AS", "M5", - "UR", "SP", "AH"), - "RG" : ("ID", "CN", "SM", "LB", - "PU", "PI", "DT", "DS", - "PL", "FO", "KS", "PG", - "PM"), - "PG" : ("PN", "ID", "VN", "PP", - "DS", "CL"),} +VALID_HEADER_ORDER = { + "HD" : ("VN", "SO", "GO"), + "SQ" : ("SN", "LN", "AS", "M5", "UR", "SP", "AH"), + "RG" : ("ID", "CN", "SM", "LB", "PU", "PI", "DT", "DS", "PL", "FO", "KS", "PG", "PM"), + "PG" : ("PN", "ID", "VN", "PP", "DS", "CL"), +} def build_header_line(fields, record): - '''build a header line from `fields` dictionary for `record`''' + """build a header line from `fields` dictionary for `record`""" # TODO: add checking for field and sort order line = ["@%s" % record] @@ -177,8 +191,7 @@ cdef int fill_AlignmentHeader_from_list(bam_hdr_t *dest, reference_lengths, add_sq_text=True, text=None) except -1: - """build header from list of reference names and lengths. - """ + """build header from list of reference names and lengths.""" cdef class AlignmentHeader(object): """header information for a :class:`AlignmentFile` object @@ -211,7 +224,6 @@ cdef class AlignmentHeader(object): construction :term:`SAM` formatted files without a header. """ - # See makeVariantHeader for C constructor def __cinit__(self): self.ptr = NULL @@ -344,34 +356,42 @@ cdef class AlignmentHeader(object): def copy(self): return makeAlignmentHeader(bam_hdr_dup(self.ptr)) - property nreferences: + @property + def nreferences(self): """int with the number of :term:`reference` sequences in the file. - This is a read-only attribute.""" - def __get__(self): - return self.ptr.n_targets - - property references: - """tuple with the names of :term:`reference` sequences. This is a - read-only attribute""" - def __get__(self): - t = [] - cdef int x - for x in range(self.ptr.n_targets): - t.append(charptr_to_str(self.ptr.target_name[x])) - return tuple(t) - - property lengths: - """tuple of the lengths of the :term:`reference` sequences. This is a - read-only attribute. The lengths are in the same order as - :attr:`pysam.AlignmentFile.references` + This is a read-only property. + + """ + return self.ptr.n_targets + + @property + def references(self): + """tuple with the names of :term:`reference` sequences. + + This is a read-only property. + + """ + t = [] + cdef int x + for x in range(self.ptr.n_targets): + t.append(charptr_to_str(self.ptr.target_name[x])) + return tuple(t) + + @property + def lengths(self): + """tuple of the lengths of the :term:`reference` sequences. + + This is a read-only property. + + The lengths are in the same order as :attr:`pysam.AlignmentFile.references` + """ - def __get__(self): - t = [] - cdef int x - for x in range(self.ptr.n_targets): - t.append(self.ptr.target_len[x]) - return tuple(t) + t = [] + cdef int x + for x in range(self.ptr.n_targets): + t.append(self.ptr.target_len[x]) + return tuple(t) def _build_sequence_section(self): """return sequence section of header. @@ -379,8 +399,8 @@ cdef class AlignmentHeader(object): The sequence section is built from the list of reference names and lengths stored in the BAM-file and not from any @SQ entries that are part of the header's text section. - """ + """ cdef int x text = [] for x in range(self.ptr.n_targets): @@ -411,6 +431,7 @@ cdef class AlignmentHeader(object): If no @SQ entries are within the text section of the header, this will be automatically added from the reference names and lengths stored in the binary part of the header. + """ result = collections.OrderedDict() @@ -461,7 +482,8 @@ cdef class AlignmentHeader(object): result[record] = x elif VALID_HEADER_TYPES[record] == Sequence: - if record not in result: result[record] = [] + if record not in result: + result[record] = [] result[record].append(x) # if there are no SQ lines in the header, add the @@ -497,26 +519,24 @@ cdef class AlignmentHeader(object): return self.ptr.target_len[tid] def is_valid_tid(self, int tid): - """ - return True if the numerical :term:`tid` is valid; False otherwise. + """True if the numerical :term:`tid` is valid; False otherwise. Note that the unmapped tid code (-1) counts as an invalid. + """ return 0 <= tid < self.ptr.n_targets def get_tid(self, reference): - """ - return the numerical :term:`tid` corresponding to - :term:`reference` + """return the numerical :term:`tid` corresponding to :term:`reference` returns -1 if reference is not known. + """ reference = force_bytes(reference) return bam_name2id(self.ptr, reference) def __str__(self): - '''string with the full contents of the :term:`sam file` header as a - string. + """string with the full contents of the :term:`sam file` header as a string. If no @SQ entries are within the text section of the header, this will be automatically added from the reference names and @@ -524,51 +544,16 @@ cdef class AlignmentHeader(object): See :attr:`pysam.AlignmentFile.header.to_dict()` to get a parsed representation of the header. - ''' + + """ text = from_string_and_size(self.ptr.text, self.ptr.l_text) if "@SQ" not in text: text += "\n" + self._build_sequence_section() return text - # dictionary access methods, for backwards compatibility. - def __setitem__(self, key, value): - raise TypeError("AlignmentHeader does not support item assignment (use header.to_dict()") - - def __getitem__(self, key): - return self.to_dict().__getitem__(key) - - def items(self): - return self.to_dict().items() - - # PY2 compatibility - def iteritems(self): - return self.to_dict().items() - - def keys(self): - return self.to_dict().keys() - - def values(self): - return self.to_dict().values() - - def get(self, *args): - return self.to_dict().get(*args) - - def __len__(self): - return self.to_dict().__len__() - - def __contains__(self, key): - return self.to_dict().__contains__(key) - cdef class AlignmentFile(HTSFile): - """AlignmentFile(filepath_or_object, mode=None, template=None, - reference_names=None, reference_lengths=None, text=NULL, - header=None, add_sq_text=False, check_header=True, check_sq=True, - reference_filename=None, filename=None, index_filename=None, - filepath_index=None, require_index=False, duplicate_filehandle=True, - ignore_truncation=False, threads=1) - - A :term:`SAM`/:term:`BAM`/:term:`CRAM` formatted file. + """A :term:`SAM`/:term:`BAM`/:term:`CRAM` formatted file. If `filepath_or_object` is a string, the file is automatically opened. If `filepath_or_object` is a python File object, the @@ -714,8 +699,8 @@ cdef class AlignmentFile(HTSFile): Number of threads to use for compressing/decompressing BAM/CRAM files. Setting threads to > 1 cannot be combined with `ignore_truncation`. (Default=1) - """ + """ def __cinit__(self, *args, **kwargs): self.htsfile = NULL self.filename = None @@ -736,64 +721,41 @@ cdef class AlignmentFile(HTSFile): if self.b == NULL: raise MemoryError("could not allocate memory of size {}".format(sizeof(bam1_t))) + @property def has_index(self): - """return true if htsfile has an existing (and opened) index. - """ + """True if htsfile has an existing (and opened) index.""" return self._index != NULL - def check_index(self): - """return True if index is present. - - Raises - ------ - - AttributeError - if htsfile is :term:`SAM` formatted and thus has no index. - - ValueError - if htsfile is closed or index could not be opened. - """ - - if not self.is_open: - raise ValueError("I/O operation on closed file") - if not self.is_bam and not self.is_cram: - raise AttributeError( - "AlignmentFile.mapped only available in bam files") - if self._index == NULL: - raise ValueError( - "mapping information not recorded in index " - "or index not available") - return True - - def _open(self, - filepath_or_object, - mode=None, - AlignmentFile template=None, - reference_names=None, - reference_lengths=None, - reference_filename=None, - text=None, - header=None, - port=None, - add_sq_text=True, - add_sam_header=True, - check_header=True, - check_sq=True, - index_filename=None, - filepath_index=None, - require_index=False, - referencenames=None, - referencelengths=None, - duplicate_filehandle=True, - ignore_truncation=False, - format_options=None, - threads=1): - '''open a sam, bam or cram formatted file. + def _open( + self, + filepath_or_object, + mode=None, + AlignmentFile template=None, + reference_names=None, + reference_lengths=None, + reference_filename=None, + text=None, + header=None, + port=None, + add_sq_text=True, + add_sam_header=True, + check_header=True, + check_sq=True, + index_filename=None, + filepath_index=None, + require_index=False, + referencenames=None, + referencelengths=None, + duplicate_filehandle=True, + ignore_truncation=False, + format_options=None, + threads=1): + """open a sam, bam or cram formatted file. If _open is called on an existing file, the current file will be closed and a new file will be opened. - ''' + """ cdef char *cfilename = NULL cdef char *creference_filename = NULL cdef char *cindexname = NULL @@ -1079,9 +1041,8 @@ cdef class AlignmentFile(HTSFile): if self.is_bam or self.is_cram: if not until_eof and not self.is_remote: - if not self.has_index(): - raise ValueError( - "fetch called on bamfile without index") + if not self.has_index: + raise ValueError("fetch called on bamfile without index") if has_coord: return IteratorRowRegion( @@ -1130,7 +1091,7 @@ cdef class AlignmentFile(HTSFile): raise OSError("index building failed with error {}".format(retval)) def head(self, n, multiple_iterators=True): - '''return an iterator over the first n alignments. + """return an iterator over the first n alignments. This iterator is is useful for inspecting the bam-file. @@ -1147,12 +1108,11 @@ cdef class AlignmentFile(HTSFile): an iterator over a collection of reads - ''' - return IteratorRowHead(self, n, - multiple_iterators=multiple_iterators) + """ + return IteratorRowHead(self, n, multiple_iterators=multiple_iterators) def mate(self, AlignedSegment read): - '''return the mate of :class:`~pysam.AlignedSegment` `read`. + """return the mate of :class:`~pysam.AlignedSegment` `read`. .. note:: @@ -1177,7 +1137,7 @@ cdef class AlignmentFile(HTSFile): ValueError if the read is unpaired or the mate is unmapped - ''' + """ cdef uint32_t flag = read._delegate.core.flag if flag & BAM_FPAIRED == 0: @@ -1218,12 +1178,13 @@ cdef class AlignmentFile(HTSFile): reference=None, end=None, **kwargs): - """perform a :term:`pileup` within a :term:`region`. The region is - specified by :term:`contig`, `start` and `stop` (using - 0-based indexing). :term:`reference` and `end` are also accepted for - backward compatiblity as synonyms for :term:`contig` and `stop`, - respectively. Alternatively, a samtools 'region' string - can be supplied. + """Generate a :term:`pileup` within a :term:`region`. + + The region is specified by :term:`contig`, `start` and `stop` (using + 0-based indexing). :term:`reference` and `end` are also accepted + for backward compatiblity as synonyms for :term:`contig` and `stop`, + respectively. Alternatively, a samtools 'region' string can be + supplied. Without 'contig' or 'region' all reads will be used for the pileup. The reads will be returned ordered by @@ -1341,7 +1302,7 @@ cdef class AlignmentFile(HTSFile): contig, start, stop, region, reference=reference, end=end) if self.is_bam or self.is_cram: - if not self.has_index(): + if not self.has_index: raise ValueError("no index available for pileup") if has_coord: @@ -1366,7 +1327,7 @@ cdef class AlignmentFile(HTSFile): read_callback="nofilter", reference=None, end=None): - '''count the number of reads in :term:`region` + """count the number of reads in :term:`region`. The region is specified by :term:`contig`, `start` and `stop`. :term:`reference` and `end` are also accepted for backward @@ -1425,7 +1386,7 @@ cdef class AlignmentFile(HTSFile): ValueError if the genomic coordinates are out of range or invalid. - ''' + """ cdef AlignedSegment read cdef long counter = 0 @@ -1534,7 +1495,6 @@ cdef class AlignmentFile(HTSFile): four array.arrays of the same length in order A C G T : tuple """ - cdef uint32_t contig_length = self.get_reference_length(contig) cdef int _start = start if start is not None else 0 cdef int _stop = stop if stop is not None else contig_length @@ -1611,13 +1571,15 @@ cdef class AlignmentFile(HTSFile): return count_a, count_c, count_g, count_t def find_introns_slow(self, read_iterator): - """Return a dictionary {(start, stop): count} + """Return a dictionary {(start, stop): count}. + Listing the intronic sites in the reads (identified by 'N' in the cigar strings), and their support ( = number of reads ). read_iterator can be the result of a .fetch(...) call. Or it can be a generator filtering such reads. Example samfile.find_introns((read for read in samfile.fetch(...) if read.is_reverse) + """ res = collections.Counter() for r in read_iterator: @@ -1635,13 +1597,15 @@ cdef class AlignmentFile(HTSFile): return res def find_introns(self, read_iterator): - """Return a dictionary {(start, stop): count} + """Return a dictionary {(start, stop): count}. + Listing the intronic sites in the reads (identified by 'N' in the cigar strings), and their support ( = number of reads ). read_iterator can be the result of a .fetch(...) call. Or it can be a generator filtering such reads. Example samfile.find_introns((read for read in samfile.fetch(...) if read.is_reverse) + """ cdef: uint32_t base_position, junc_start, nt @@ -1666,8 +1630,7 @@ cdef class AlignmentFile(HTSFile): def close(self): - '''closes the :class:`pysam.AlignmentFile`.''' - + """closes the :class:`pysam.AlignmentFile`.""" if self.htsfile == NULL: return @@ -1712,8 +1675,7 @@ cdef class AlignmentFile(HTSFile): raise IOError(errno, force_str(strerror(errno))) cpdef int write(self, AlignedSegment read) except -1: - ''' - write a single :class:`pysam.AlignedSegment` to disk. + """write a single :class:`pysam.AlignedSegment`. Raises: ValueError @@ -1723,7 +1685,8 @@ cdef class AlignmentFile(HTSFile): int : the number of bytes written. If the file is closed, this will be 0. - ''' + + """ if not self.is_open: return 0 @@ -1761,61 +1724,76 @@ cdef class AlignmentFile(HTSFile): ############################################################### ## properties ############################################################### - property mapped: - """int with total number of mapped alignments according to the - statistics recorded in the index. This is a read-only - attribute. - """ - def __get__(self): - self.check_index() - cdef int tid - cdef uint64_t total = 0 - cdef uint64_t mapped, unmapped - for tid from 0 <= tid < self.header.nreferences: - with nogil: - hts_idx_get_stat(self._index, tid, &mapped, &unmapped) - total += mapped - return total - - property unmapped: - """int with total number of unmapped reads according to the statistics - recorded in the index. This number of reads includes the number of reads - without coordinates. This is a read-only attribute. + @property + def mapped(self): + """total number of mapped alignments according to the statistics recorded in the index. + + This is a read-only property. + """ - def __get__(self): - self.check_index() - cdef int tid - cdef uint64_t total = hts_idx_get_n_no_coor(self._index) - cdef uint64_t mapped, unmapped - for tid from 0 <= tid < self.header.nreferences: - with nogil: - hts_idx_get_stat(self._index, tid, &mapped, &unmapped) - total += unmapped - return total + if not self.has_index: + raise ValueError('Index is required') + + cdef int tid + cdef uint64_t total = 0 + cdef uint64_t mapped, unmapped + for tid from 0 <= tid < self.header.nreferences: + with nogil: + hts_idx_get_stat(self._index, tid, &mapped, &unmapped) + total += mapped + return total + + @property + def unmapped(self): + """total number of unmapped reads according to the statistics recorded in the index. + + This number of reads includes the number of reads + without coordinates. + + This is a read-only property. - property nocoordinate: - """int with total number of reads without coordinates according to the - statistics recorded in the index. This is a read-only attribute. """ - def __get__(self): - self.check_index() - cdef uint64_t n + if not self.has_index: + raise ValueError('Index is required') + + cdef int tid + cdef uint64_t total = hts_idx_get_n_no_coor(self._index) + cdef uint64_t mapped, unmapped + for tid from 0 <= tid < self.header.nreferences: with nogil: - n = hts_idx_get_n_no_coor(self._index) - return n + hts_idx_get_stat(self._index, tid, &mapped, &unmapped) + total += unmapped + return total + + @property + def nocoordinate(self): + """total number of reads without coordinates according to the statistics recorded in the index. + + This is a read-only property. + + """ + if not self.has_index: + raise ValueError('Index is required') + + cdef uint64_t n + with nogil: + n = hts_idx_get_n_no_coor(self._index) + return n def get_index_statistics(self): """return statistics about mapped/unmapped reads per chromosome as they are stored in the index. Returns: - list : + list: a list of records for each chromosome. Each record has the attributes 'contig', 'mapped', 'unmapped' and 'total'. - """ - self.check_index() + """ + if not self.has_index: + raise ValueError('Index is required') cdef int tid + cdef uint64_t mapped, unmapped results = [] # TODO: use header @@ -1849,9 +1827,11 @@ cdef class AlignmentFile(HTSFile): return self.b cdef int cnext(self): - ''' - cversion of iterator. Used by :class:`pysam.AlignmentFile.IteratorColumn`. - ''' + """cversion of iterator. + + Used by :class:`pysam.AlignmentFile.IteratorColumn`. + + """ cdef int ret cdef bam_hdr_t * hdr = self.header.ptr with nogil: @@ -1862,7 +1842,7 @@ cdef class AlignmentFile(HTSFile): def __next__(self): cdef int ret = self.cnext() - if (ret >= 0): + if ret >= 0: return makeAlignedSegment(self.b, self.header) elif ret == -2: raise IOError('truncated file') @@ -1872,75 +1852,78 @@ cdef class AlignmentFile(HTSFile): ########################################### # methods/properties referencing the header def is_valid_tid(self, int tid): - """ - return True if the numerical :term:`tid` is valid; False otherwise. + """True if the numerical :term:`tid` is valid; False otherwise. Note that the unmapped tid code (-1) counts as an invalid. + """ if self.header is None: raise ValueError("header not available in closed files") return self.header.is_valid_tid(tid) def get_tid(self, reference): - """ - return the numerical :term:`tid` corresponding to - :term:`reference` + """numerical :term:`tid` corresponding to :term:`reference`. returns -1 if reference is not known. + """ if self.header is None: raise ValueError("header not available in closed files") return self.header.get_tid(reference) def get_reference_name(self, tid): - """ - return :term:`reference` name corresponding to numerical :term:`tid` - """ + """:term:`reference` name corresponding to numerical :term:`tid`.""" if self.header is None: raise ValueError("header not available in closed files") return self.header.get_reference_name(tid) def get_reference_length(self, reference): - """ - return :term:`reference` name corresponding to numerical :term:`tid` - """ + """:term:`reference` name corresponding to numerical :term:`tid`.""" if self.header is None: raise ValueError("header not available in closed files") return self.header.get_reference_length(reference) - property nreferences: - """int with the number of :term:`reference` sequences in the file. - This is a read-only attribute.""" - def __get__(self): - if self.header: - return self.header.nreferences - else: - raise ValueError("header not available in closed files") - - property references: - """tuple with the names of :term:`reference` sequences. This is a - read-only attribute""" - def __get__(self): - if self.header: - return self.header.references - else: - raise ValueError("header not available in closed files") + @property + def nreferences(self): + """number of :term:`reference` sequences in the file. - property lengths: - """tuple of the lengths of the :term:`reference` sequences. This is a - read-only attribute. The lengths are in the same order as - :attr:`pysam.AlignmentFile.references` + This is a read-only property. """ - def __get__(self): - if self.header: - return self.header.lengths - else: - raise ValueError("header not available in closed files") + if self.header: + return self.header.nreferences + else: + raise ValueError("header not available in closed files") + + @property + def references(self): + """tuple with the names of :term:`reference` sequences. + + This is a read-only property. + + """ + if self.header: + return self.header.references + else: + raise ValueError("header not available in closed files") + + @property + def lengths(self): + """tuple of the lengths of the :term:`reference` sequences. + + The lengths are in the same order as :attr:`pysam.AlignmentFile.references` + + This is a read-only property. + + """ + if self.header: + return self.header.lengths + else: + raise ValueError("header not available in closed files") cdef class IteratorRow: - '''abstract base class for iterators over mapped reads. + """abstract base class for iterators over mapped reads. Various iterators implement different behaviours for wrapping around contig boundaries. Examples include: @@ -1962,8 +1945,7 @@ cdef class IteratorRow: explicitly. It is returned as a result of call to a :meth:`AlignmentFile.fetch`. - ''' - + """ def __init__(self, AlignmentFile samfile, int multiple_iterators=False): cdef char *cfilename cdef char *creference_filename @@ -1985,7 +1967,7 @@ cdef class IteratorRow: self.htsfile = hts_open(cfilename, 'r') assert self.htsfile != NULL - if samfile.has_index(): + if samfile.has_index: if samfile.index_filename: cindexname = samfile.index_filename with nogil: @@ -2028,10 +2010,7 @@ cdef class IteratorRow: cdef class IteratorRowRegion(IteratorRow): - """*(AlignmentFile samfile, int tid, int beg, int stop, - int multiple_iterators=False)* - - iterate over mapped reads in a region. + """iterate over mapped reads in a region. .. note:: @@ -2040,12 +2019,11 @@ cdef class IteratorRowRegion(IteratorRow): :meth:`AlignmentFile.fetch`. """ - def __init__(self, AlignmentFile samfile, int tid, int beg, int stop, int multiple_iterators=False): - if not samfile.has_index(): + if not samfile.has_index: raise ValueError("no index available for iteration") IteratorRow.__init__(self, samfile, @@ -2064,7 +2042,7 @@ cdef class IteratorRowRegion(IteratorRow): return self.b cdef int cnext(self): - '''cversion of iterator. Used by IteratorColumn''' + """cversion of iterator. Used by IteratorColumn""" with nogil: self.retval = hts_itr_next(hts_get_bgzfp(self.htsfile), self.iter, @@ -2090,9 +2068,7 @@ cdef class IteratorRowRegion(IteratorRow): cdef class IteratorRowHead(IteratorRow): - """*(AlignmentFile samfile, n, int multiple_iterators=False)* - - iterate over first n reads in `samfile` + """iterate over first n reads in `samfile` .. note:: It is usually not necessary to create an object of this class @@ -2100,7 +2076,6 @@ cdef class IteratorRowHead(IteratorRow): :meth:`AlignmentFile.head`. """ - def __init__(self, AlignmentFile samfile, int n, @@ -2119,7 +2094,11 @@ cdef class IteratorRowHead(IteratorRow): return self.b cdef int cnext(self): - '''cversion of iterator. Used by IteratorColumn''' + """cversion of iterator. + + Used by IteratorColumn. + + """ cdef int ret cdef bam_hdr_t * hdr = self.header.ptr with nogil: @@ -2143,9 +2122,7 @@ cdef class IteratorRowHead(IteratorRow): cdef class IteratorRowAll(IteratorRow): - """*(AlignmentFile samfile, int multiple_iterators=False)* - - iterate over all reads in `samfile` + """iterate over all reads in `samfile` .. note:: @@ -2154,7 +2131,6 @@ cdef class IteratorRowAll(IteratorRow): :meth:`AlignmentFile.fetch`. """ - def __init__(self, AlignmentFile samfile, int multiple_iterators=False): @@ -2168,7 +2144,7 @@ cdef class IteratorRowAll(IteratorRow): return self.b cdef int cnext(self): - '''cversion of iterator. Used by IteratorColumn''' + """cversion of iterator. Used by IteratorColumn.""" cdef int ret cdef bam_hdr_t * hdr = self.header.ptr with nogil: @@ -2188,8 +2164,7 @@ cdef class IteratorRowAll(IteratorRow): cdef class IteratorRowAllRefs(IteratorRow): - """iterates over all mapped reads by chaining iterators over each - reference + """iterate over all mapped reads by chaining iterators over each reference. .. note:: It is usually not necessary to create an object of this class @@ -2197,14 +2172,13 @@ cdef class IteratorRowAllRefs(IteratorRow): :meth:`AlignmentFile.fetch`. """ - def __init__(self, AlignmentFile samfile, multiple_iterators=False): IteratorRow.__init__(self, samfile, multiple_iterators=multiple_iterators) - if not samfile.has_index(): + if not samfile.has_index: raise ValueError("no index available for fetch") self.tid = -1 @@ -2253,15 +2227,13 @@ cdef class IteratorRowAllRefs(IteratorRow): cdef class IteratorRowSelection(IteratorRow): - """*(AlignmentFile samfile)* - - iterate over reads in `samfile` at a given list of file positions. + """iterate over reads in `samfile` at a given list of file positions. .. note:: It is usually not necessary to create an object of this class explicitly. It is returned as a result of call to a :meth:`AlignmentFile.fetch`. - """ + """ def __init__(self, AlignmentFile samfile, positions, int multiple_iterators=True): IteratorRow.__init__(self, samfile, multiple_iterators=multiple_iterators) @@ -2276,9 +2248,10 @@ cdef class IteratorRowSelection(IteratorRow): return self.b cdef int cnext(self): - '''cversion of iterator''' + """cversion of iterator.""" # end iteration if out of positions - if self.current_pos >= len(self.positions): return -1 + if self.current_pos >= len(self.positions): + return -1 cdef uint64_t pos = self.positions[self.current_pos] with nogil: @@ -2305,28 +2278,23 @@ cdef class IteratorRowSelection(IteratorRow): raise StopIteration -cdef int __advance_nofilter(void *data, bam1_t *b): - '''advance without any read filtering. - ''' +cdef int __advance_nofilter(void *data, bam1_t *b) nogil: + """advance without any read filtering.""" cdef __iterdata * d = <__iterdata*>data - cdef int ret - with nogil: - ret = sam_itr_next(d.htsfile, d.iter, b) - return ret + return sam_itr_next(d.htsfile, d.iter, b) -cdef int __advance_all(void *data, bam1_t *b): - '''only use reads for pileup passing basic filters such as +cdef int __advance_all(void *data, bam1_t *b) nogil: + """only use reads for pileup passing basic filters such as BAM_FUNMAP, BAM_FSECONDARY, BAM_FQCFAIL, BAM_FDUP - ''' + """ cdef __iterdata * d = <__iterdata*>data - cdef mask = BAM_FUNMAP | BAM_FSECONDARY | BAM_FQCFAIL | BAM_FDUP + cdef int mask = BAM_FUNMAP | BAM_FSECONDARY | BAM_FQCFAIL | BAM_FDUP cdef int ret while 1: - with nogil: - ret = sam_itr_next(d.htsfile, d.iter, b) + ret = sam_itr_next(d.htsfile, d.iter, b) if ret < 0: break if b.core.flag & d.flag_filter: @@ -2335,17 +2303,14 @@ cdef int __advance_all(void *data, bam1_t *b): return ret -cdef int __advance_samtools(void * data, bam1_t * b): - '''advance using same filter and read processing as in - the samtools pileup. - ''' +cdef int __advance_samtools(void * data, bam1_t * b) nogil: + """advance using same filter and read processing as in the samtools pileup.""" cdef __iterdata * d = <__iterdata*>data cdef int ret cdef int q while 1: - with nogil: - ret = sam_itr_next(d.htsfile, d.iter, b) + ret = sam_itr_next(d.htsfile, d.iter, b) if ret < 0: break if b.core.flag & d.flag_filter: @@ -2397,7 +2362,7 @@ cdef int __advance_samtools(void * data, bam1_t * b): cdef class IteratorColumn: - '''abstract base class for iterators over columns. + """abstract base class for iterators over columns. IteratorColumn objects wrap the pileup functionality of samtools. @@ -2426,8 +2391,8 @@ cdef class IteratorColumn: and :meth:`seq_len`. See :class:`~AlignmentFile.pileup` for kwargs to the iterator. - ''' + """ def __cinit__( self, AlignmentFile samfile, **kwargs): self.samfile = samfile self.fastafile = kwargs.get("fastafile", None) @@ -2454,8 +2419,7 @@ cdef class IteratorColumn: return self cdef int cnext(self): - '''perform next iteration. - ''' + """perform next iteration.""" # do not release gil here because of call-backs cdef int ret = bam_mplp_auto(self.pileup_iter, &self.tid, @@ -2465,36 +2429,33 @@ cdef class IteratorColumn: return ret cdef char * get_sequence(self): - '''return current reference sequence underlying the iterator. - ''' + """current reference sequence underlying the iterator.""" return self.iterdata.seq - property seq_len: - '''current sequence length.''' - def __get__(self): - return self.iterdata.seq_len + @property + def seq_len(self): + """current sequence length.""" + return self.iterdata.seq_len def add_reference(self, FastaFile fastafile): - ''' - add reference sequences in `fastafile` to iterator.''' + """add reference sequences in `fastafile` to iterator.""" self.fastafile = fastafile if self.iterdata.seq != NULL: free(self.iterdata.seq) self.iterdata.tid = -1 self.iterdata.fastafile = self.fastafile.fastafile + @property def has_reference(self): - ''' - return true if iterator is associated with a reference''' - return self.fastafile + """True if iterator is associated with a reference.""" + return bool(self.fastafile) cdef _setup_iterator(self, int tid, int start, int stop, int multiple_iterators=0): - '''setup the iterator structure''' - + """setup the iterator structure.""" self.iter = IteratorRowRegion(self.samfile, tid, start, stop, multiple_iterators) self.iterdata.htsfile = self.samfile.htsfile self.iterdata.iter = self.iter.iter @@ -2516,22 +2477,15 @@ cdef class IteratorColumn: if self.stepper is None or self.stepper == "all": with nogil: - self.pileup_iter = bam_mplp_init(1, - &__advance_all, - data) + self.pileup_iter = bam_mplp_init(1, &__advance_all, data) elif self.stepper == "nofilter": with nogil: - self.pileup_iter = bam_mplp_init(1, - &__advance_nofilter, - data) + self.pileup_iter = bam_mplp_init(1, &__advance_nofilter, data) elif self.stepper == "samtools": with nogil: - self.pileup_iter = bam_mplp_init(1, - &__advance_samtools, - data) + self.pileup_iter = bam_mplp_init(1, &__advance_samtools, data) else: - raise ValueError( - "unknown stepper option `%s` in IteratorColumn" % self.stepper) + raise ValueError("unknown stepper option `%s` in IteratorColumn" % self.stepper) if self.max_depth: with nogil: @@ -2542,11 +2496,12 @@ cdef class IteratorColumn: bam_mplp_init_overlaps(self.pileup_iter) cdef reset(self, tid, start, stop): - '''reset iterator position. + """reset iterator position. This permits using the iterator multiple times without having to incur the full set-up costs. - ''' + + """ self.iter = IteratorRowRegion(self.samfile, tid, start, stop, multiple_iterators=0) self.iterdata.iter = self.iter.iter @@ -2564,10 +2519,12 @@ cdef class IteratorColumn: bam_mplp_reset(self.pileup_iter) cdef _free_pileup_iter(self): - '''free the memory alloc'd by bam_plp_init. + """free the memory alloc'd by bam_plp_init. This is needed before setup_iterator allocates another - pileup_iter, or else memory will be lost. ''' + pileup_iter, or else memory will be lost. + + """ if self.pileup_iter != NULL: with nogil: bam_mplp_reset(self.pileup_iter) @@ -2584,19 +2541,9 @@ cdef class IteratorColumn: free(self.iterdata.seq) self.iterdata.seq = NULL - # backwards compatibility - - def hasReference(self): - return self.has_reference() - cdef char * getSequence(self): - return self.get_sequence() - def addReference(self, FastaFile fastafile): - return self.add_reference(fastafile) - cdef class IteratorColumnRegion(IteratorColumn): - '''iterates over a region only. - ''' + """iterates over a region only.""" def __cinit__(self, AlignmentFile samfile, int tid = 0, @@ -2645,9 +2592,7 @@ cdef class IteratorColumnRegion(IteratorColumn): cdef class IteratorColumnAllRefs(IteratorColumn): - """iterates over all columns by chaining iterators over each reference - """ - + """iterates over all columns by chaining iterators over each reference.""" def __cinit__(self, AlignmentFile samfile, **kwargs): @@ -2687,7 +2632,7 @@ cdef class IteratorColumnAllRefs(IteratorColumn): cdef class SNPCall: - '''the results of a SNP call.''' + """results of a SNP call.""" cdef int _tid cdef int _pos cdef char _reference_base @@ -2697,59 +2642,61 @@ cdef class SNPCall: cdef int _rms_mapping_quality cdef int _coverage - property tid: - '''the chromosome ID as is defined in the header''' - def __get__(self): - return self._tid - - property pos: - '''nucleotide position of SNP.''' - def __get__(self): return self._pos - - property reference_base: - '''reference base at pos. ``N`` if no reference sequence supplied.''' - def __get__(self): return from_string_and_size( &self._reference_base, 1 ) - - property genotype: - '''the genotype called.''' - def __get__(self): return from_string_and_size( &self._genotype, 1 ) - - property consensus_quality: - '''the genotype quality (Phred-scaled).''' - def __get__(self): return self._consensus_quality - - property snp_quality: - '''the snp quality (Phred scaled) - probability of consensus being - identical to reference sequence.''' - def __get__(self): return self._snp_quality - - property mapping_quality: - '''the root mean square (rms) of the mapping quality of all reads - involved in the call.''' - def __get__(self): return self._rms_mapping_quality - - property coverage: - '''coverage or read depth - the number of reads involved in the call.''' - def __get__(self): return self._coverage + @property + def tid(self): + """chromosome ID as is defined in the header.""" + return self._tid + + @property + def pos(self): + """nucleotide position of SNP.""" + return self._pos + + @property + def reference_base(self): + """reference base at pos. ``N`` if no reference sequence supplied.""" + return from_string_and_size(&self._reference_base, 1) + + @property + def genotype(self): + """genotype called.""" + return from_string_and_size(&self._genotype, 1) + + @property + def consensus_quality(self): + """the genotype quality (Phred-scaled).""" + return self._consensus_quality + + @property + def snp_quality(self): + """snp quality (Phred scaled) - probability of consensus being identical to reference sequence.""" + return self._snp_quality + + @property + def mapping_quality(self): + """the root mean square (rms) of the mapping quality of all reads involved in the call.""" + return self._rms_mapping_quality + + @property + def coverage(self): + """coverage or read depth - the number of reads involved in the call.""" + return self._coverage def __str__(self): - - return "\t".join( map(str, ( - self.tid, - self.pos, - self.reference_base, - self.genotype, - self.consensus_quality, - self.snp_quality, - self.mapping_quality, - self.coverage ) ) ) + return "\t".join(map(str, ( + self.tid, + self.pos, + self.reference_base, + self.genotype, + self.consensus_quality, + self.snp_quality, + self.mapping_quality, + self.coverage)) + ) cdef class IndexedReads: - """*(AlignmentFile samfile, multiple_iterators=True) - - Index a Sam/BAM-file by query name while keeping the - original sort order intact. + """Index a Sam/BAM-file by query name while keeping the original sort order intact. The index is kept in memory and can be substantial. @@ -2768,7 +2715,6 @@ cdef class IndexedReads: existing iterators being affected by the indexing. """ - def __init__(self, AlignmentFile samfile, int multiple_iterators=True): cdef char *cfilename @@ -2801,8 +2747,7 @@ cdef class IndexedReads: self.owns_samfile = False def build(self): - '''build the index.''' - + """build the index.""" self.index = collections.defaultdict(list) # this method will start indexing from the current file position @@ -2828,7 +2773,7 @@ cdef class IndexedReads: bam_destroy1(b) def find(self, query_name): - '''find `query_name` in index. + """find `query_name` in index. Returns ------- @@ -2842,15 +2787,15 @@ cdef class IndexedReads: KeyError if the `query_name` is not in the index. - ''' - if query_name in self.index: - return IteratorRowSelection( - self.samfile, - self.index[query_name], - multiple_iterators = False) - else: + """ + if query_name not in self.index: raise KeyError("read %s not found" % query_name) + return IteratorRowSelection( + self.samfile, + self.index[query_name], + multiple_iterators = False) + def __dealloc__(self): if self.owns_samfile: hts_close(self.htsfile) diff --git a/pysam/libcbcf.pxd b/pysam/libcbcf.pxd index 1d4129b..8f2f676 100644 --- a/pysam/libcbcf.pxd +++ b/pysam/libcbcf.pxd @@ -1,4 +1,4 @@ -############################################################################### +# cython: language_level=3, embedsignature=True, profile=True ############################################################################### ## Cython wrapper for htslib VCF/BCF reader/writer ############################################################################### diff --git a/pysam/libcbcf.pyx b/pysam/libcbcf.pyx index cc5ee99..58cd11a 100644 --- a/pysam/libcbcf.pyx +++ b/pysam/libcbcf.pyx @@ -1,6 +1,4 @@ -# cython: embedsignature=True -# cython: profile=True -############################################################################### +# cython: language_level=3, embedsignature=True, profile=True ############################################################################### ## Cython wrapper for htslib VCF/BCF reader/writer ############################################################################### diff --git a/pysam/libcbgzf.pyx b/pysam/libcbgzf.pyx index 02ff2a2..01b792b 100644 --- a/pysam/libcbgzf.pyx +++ b/pysam/libcbgzf.pyx @@ -1,3 +1,5 @@ +# cython: language_level=3, embedsignature=True, profile=True + """Functions that read and write block gzipped files. The user of the file doesn't have to worry about the compression @@ -162,8 +164,7 @@ cdef class BGZFile(object): raise AttributeError('fileno') def rewind(self): - '''Return the uncompressed stream file position indicator to the - beginning of the file''' + """Return the uncompressed stream file position indicator to the beginning of the file""" if not self.bgzf: raise ValueError("rewind() on closed BGZFile object") if not self.bgzf.is_write: @@ -213,7 +214,7 @@ cdef class BGZFile(object): line.l = line.m = 0 line.s = NULL - cdef int ret = bgzf_getline(self.bgzf, '\n', &line) + cdef int ret = bgzf_getline(self.bgzf, b'\n', &line) if ret == -1: s = b'' elif ret == -2: diff --git a/pysam/libcfaidx.pxd b/pysam/libcfaidx.pxd index 6dda60f..98f153e 100644 --- a/pysam/libcfaidx.pxd +++ b/pysam/libcfaidx.pxd @@ -1,3 +1,5 @@ +# cython: language_level=3, embedsignature=True, profile=True + from libc.stdint cimport int8_t, int16_t, int32_t, int64_t from libc.stdint cimport uint8_t, uint16_t, uint32_t, uint64_t from libc.stdlib cimport malloc, calloc, realloc, free diff --git a/pysam/libcfaidx.pyx b/pysam/libcfaidx.pyx index a29c7fc..7fb17ec 100644 --- a/pysam/libcfaidx.pyx +++ b/pysam/libcfaidx.pyx @@ -1,6 +1,4 @@ -# cython: embedsignature=True -# cython: profile=True -############################################################################### +# cython: language_level=3, embedsignature=True, profile=True ############################################################################### # Cython wrapper for SAM/BAM/CRAM files based on htslib ############################################################################### @@ -67,7 +65,7 @@ from pysam.libcutils cimport qualitystring_to_array, parse_region cdef class FastqProxy cdef makeFastqProxy(kseq_t * src): - '''enter src into AlignedRead.''' + """enter src into AlignedRead.""" cdef FastqProxy dest = FastqProxy.__new__(FastqProxy) dest._delegate = src return dest @@ -76,8 +74,7 @@ cdef makeFastqProxy(kseq_t * src): ## add automatic indexing. ## add function to get sequence names. cdef class FastaFile: - """Random access to fasta formatted files that - have been indexed by :term:`faidx`. + """Random access to fasta formatted files that have been indexed by :term:`faidx`. The file is automatically opened. The index file of file ```` is expected to be called ``.fai``. @@ -106,7 +103,6 @@ cdef class FastaFile: if file could not be opened """ - def __cinit__(self, *args, **kwargs): self.fastafile = NULL self._filename = None @@ -116,7 +112,7 @@ cdef class FastaFile: self._open(*args, **kwargs) def is_open(self): - '''return true if samfile has been opened.''' + """return true if samfile has been opened.""" return self.fastafile != NULL def __len__(self): @@ -126,11 +122,11 @@ cdef class FastaFile: return faidx_nseq(self.fastafile) def _open(self, filename, filepath_index=None, filepath_index_compressed=None): - '''open an indexed fasta file. + """open an indexed fasta file. This method expects an indexed fasta file. - ''' + """ # close a previously opened file if self.fastafile != NULL: self.close() @@ -140,7 +136,7 @@ cdef class FastaFile: cdef char *cindexname = NULL cdef char *cindexname_compressed = NULL self.is_remote = hisremote(cfilename) - + # open file for reading if (self._filename != b"-" and not self.is_remote @@ -158,7 +154,7 @@ cdef class FastaFile: if not os.path.exists(filepath_index): raise IOError("filename {} does not exist".format(filepath_index)) cindexname = bindex_filename = encode_filename(filepath_index) - + if filepath_index_compressed: if not os.path.exists(filepath_index_compressed): raise IOError("filename {} does not exist".format(filepath_index_compressed)) @@ -206,33 +202,38 @@ cdef class FastaFile: self.close() return False - property closed: + @property + def closed(self): """bool indicating the current state of the file object. + This is a read-only attribute; the close() method changes the value. + """ - def __get__(self): - return not self.is_open() + return not self.is_open() - property filename: + @property + def filename(self): """filename associated with this object. This is a read-only attribute.""" - def __get__(self): - return self._filename + return self._filename + + @property + def references(self): + """tuple with the names of :term:`reference` sequences.""" + return self._references - property references: - '''tuple with the names of :term:`reference` sequences.''' - def __get__(self): - return self._references + @property + def nreferences(self): + """number of :term:`reference` sequences in the file. - property nreferences: - """int with the number of :term:`reference` sequences in the file. - This is a read-only attribute.""" - def __get__(self): - return len(self._references) if self.references else None + This is a read-only attribute. - property lengths: + """ + return len(self._references) if self.references else None + + @property + def lengths(self): """tuple with the lengths of :term:`reference` sequences.""" - def __get__(self): - return self._lengths + return self._lengths def fetch(self, reference=None, @@ -271,9 +272,8 @@ cdef class FastaFile: if the region is invalid """ - if not self.is_open(): - raise ValueError("I/O operation on closed file" ) + raise ValueError("I/O operation on closed file") cdef int length cdef char *seq @@ -317,8 +317,7 @@ cdef class FastaFile: free(seq) cdef char *_fetch(self, char *reference, int start, int end, int *length) except? NULL: - '''fetch sequence for reference, start and end''' - + """fetch sequence for reference, start and end.""" cdef char *seq with nogil: seq = faidx_fetch_seq(self.fastafile, @@ -336,45 +335,41 @@ cdef class FastaFile: return seq def get_reference_length(self, reference): - '''return the length of reference.''' + """length of reference.""" return self.reference2length[reference] def __getitem__(self, reference): return self.fetch(reference) def __contains__(self, reference): - '''return true if reference in fasta file.''' + """True if reference in fasta file.""" return reference in self.reference2length cdef class FastqProxy: """A single entry in a fastq file.""" - def __init__(self): pass - - property name: + @property + def name(self): """The name of each entry in the fastq file.""" - def __get__(self): - return charptr_to_str(self._delegate.name.s) + return charptr_to_str(self._delegate.name.s) - property sequence: + @property + def sequence(self): """The sequence of each entry in the fastq file.""" - def __get__(self): - return charptr_to_str(self._delegate.seq.s) + return charptr_to_str(self._delegate.seq.s) - property comment: - def __get__(self): - if self._delegate.comment.l: - return charptr_to_str(self._delegate.comment.s) - else: - return None + @property + def comment(self): + if not self._delegate.comment.l: + return None + return charptr_to_str(self._delegate.comment.s) - property quality: + @property + def quality(self): """The quality score of each entry in the fastq file, represented as a string.""" - def __get__(self): - if self._delegate.qual.l: - return charptr_to_str(self._delegate.qual.s) - else: - return None + if not self._delegate.qual.l: + return None + return charptr_to_str(self._delegate.qual.s) cdef cython.str to_string(self): if self.comment is None: @@ -387,12 +382,12 @@ cdef class FastqProxy: else: return "@%s%s\n%s\n+\n%s" % (self.name, comment, self.sequence, self.quality) - + def __str__(self): return self.to_string() cpdef array.array get_quality_array(self, int offset=33): - '''return quality values as integer array after subtracting offset.''' + """return quality values as integer array after subtracting offset.""" if self.quality is None: return None return qualitystring_to_array(force_bytes(self.quality), @@ -434,7 +429,7 @@ cdef class FastxRecord: if self.sequence is None: raise ValueError("can not write record without a sequence") - + if self.comment is None: comment = "" else: @@ -445,19 +440,18 @@ cdef class FastxRecord: else: return "@%s%s\n%s\n+\n%s" % (self.name, comment, self.sequence, self.quality) - + + # FIXME: upgrade into properties def set_name(self, name): if name is None: raise ValueError("FastxRecord must have a name and not None") self.name = name def set_comment(self, comment): - self.comment = comment - - def set_sequence(self, sequence, quality=None): - """set sequence of this record. + self.comment = comment - """ + def set_sequence(self, sequence, quality=None): + """set sequence of this record.""" self.sequence = sequence if quality is not None: if len(sequence) != len(quality): @@ -472,7 +466,7 @@ cdef class FastxRecord: return self.to_string() cpdef array.array get_quality_array(self, int offset=33): - '''return quality values as array after subtracting offset.''' + """return quality values as array after subtracting offset.""" if self.quality is None: return None return qualitystring_to_array(force_bytes(self.quality), @@ -530,12 +524,13 @@ cdef class FastxFile: self.entry = NULL self._open(*args, **kwargs) + @property def is_open(self): - '''return true if samfile has been opened.''' + """True if samfile has been opened.""" return self.entry != NULL def _open(self, filename, persist=True): - '''open a fastq/fasta file in *filename* + """open a fastq/fasta file in *filename* Paramentes ---------- @@ -546,7 +541,7 @@ cdef class FastxFile: True). The copy will persist even if the iteration on the file continues. - ''' + """ if self.fastqfile != NULL: self.close() @@ -568,7 +563,7 @@ cdef class FastxFile: self._filename = filename def close(self): - '''close the file.''' + """close the file.""" if self.fastqfile != NULL: bgzf_close(self.fastqfile) self.fastqfile = NULL @@ -590,20 +585,22 @@ cdef class FastxFile: self.close() return False - property closed: + @property + def closed(self): """bool indicating the current state of the file object. + This is a read-only attribute; the close() method changes the value. + """ - def __get__(self): - return not self.is_open() + return not self.is_open - property filename: + @property + def filename(self): """string with the filename associated with this object.""" - def __get__(self): - return self._filename + return self._filename def __iter__(self): - if not self.is_open(): + if not self.is_open: raise ValueError("I/O operation on closed file") return self @@ -611,15 +608,12 @@ cdef class FastxFile: return self.entry cdef int cnext(self): - '''C version of iterator - ''' + """C version of iterator.""" with nogil: return kseq_read(self.entry) def __next__(self): - """ - python version of next(). - """ + """python version of next().""" cdef int l with nogil: l = kseq_read(self.entry) diff --git a/pysam/libchtslib.pxd b/pysam/libchtslib.pxd index c7d4c35..fc8cd3c 100644 --- a/pysam/libchtslib.pxd +++ b/pysam/libchtslib.pxd @@ -1,3 +1,5 @@ +# cython: language_level=3, embedsignature=True, profile=True + from libc.stdint cimport int8_t, int16_t, int32_t, int64_t from libc.stdint cimport uint8_t, uint16_t, uint32_t, uint64_t from libc.stdlib cimport malloc, calloc, realloc, free diff --git a/pysam/libchtslib.pyx b/pysam/libchtslib.pyx index b4dcaa8..07f455d 100644 --- a/pysam/libchtslib.pyx +++ b/pysam/libchtslib.pyx @@ -1,5 +1,5 @@ -# cython: embedsignature=True -# cython: profile=True +# cython: language_level=3, embedsignature=True, profile=True + # adds doc-strings for sphinx ######################################################################## @@ -292,31 +292,6 @@ cdef class HFile(object): self.write(line) -######################################################################## -######################################################################## -## Helpers for backward compatibility to hide the difference between -## boolean properties and methods -######################################################################## - -class CallableValue(object): - def __init__(self, value): - self.value = value - def __call__(self): - return self.value - def __bool__(self): - return self.value - def __nonzero__(self): - return self.value - def __eq__(self, other): - return self.value == other - def __ne__(self, other): - return self.value != other - - -CTrue = CallableValue(True) -CFalse = CallableValue(False) - - ######################################################################## ######################################################################## ## HTSFile wrapper class (base class for AlignmentFile and VariantFile) @@ -420,7 +395,7 @@ cdef class HTSFile(object): @property def is_open(self): """return True if HTSFile is open and in a valid state.""" - return CTrue if self.htsfile != NULL else CFalse + return self.htsfile != NULL @property def is_closed(self): diff --git a/pysam/libctabix.pxd b/pysam/libctabix.pxd index c986f03..6ade269 100644 --- a/pysam/libctabix.pxd +++ b/pysam/libctabix.pxd @@ -1,3 +1,5 @@ +# cython: language_level=3, embedsignature=True, profile=True + from libc.stdint cimport int8_t, int16_t, int32_t, int64_t from libc.stdint cimport uint8_t, uint16_t, uint32_t, uint64_t from libc.stdlib cimport malloc, calloc, realloc, free @@ -120,8 +122,3 @@ cdef class GZIteratorHead(GZIterator): cdef class GZIteratorParsed(GZIterator): cdef Parser parser - - -# Compatibility Layer for pysam < 0.8 -cdef class Tabixfile(TabixFile): - pass diff --git a/pysam/libctabix.pyx b/pysam/libctabix.pyx index 840161a..ec9f929 100644 --- a/pysam/libctabix.pyx +++ b/pysam/libctabix.pyx @@ -1,6 +1,4 @@ -# cython: embedsignature=True -# cython: profile=True -############################################################################### +# cython: language_level=3, embedsignature=True, profile=True ############################################################################### # Cython wrapper for access to tabix indexed files in bgzf format ############################################################################### @@ -24,10 +22,6 @@ # class TabixIterator iterator class over rows in bgzf file # class EmptyIterator # -# For backwards compatibility, the following classes are also defined: -# -# class Tabixfile equivalent to TabixFile -# ############################################################################### # # The MIT License @@ -99,10 +93,10 @@ cdef class Parser: cdef class asTuple(Parser): - '''converts a :term:`tabix row` into a python tuple. + """converts a :term:`tabix row` into a python tuple. A field in a row is accessed by numeric index. - ''' + """ cdef parse(self, char * buffer, int len): cdef ctabixproxies.TupleProxy r r = ctabixproxies.TupleProxy(self.encoding) @@ -113,9 +107,9 @@ cdef class asTuple(Parser): cdef class asGFF3(Parser): - '''converts a :term:`tabix row` into a GFF record with the following + """converts a :term:`tabix row` into a GFF record with the following fields: - + +----------+----------+-------------------------------+ |*Column* |*Name* |*Content* | +----------+----------+-------------------------------+ @@ -140,7 +134,7 @@ cdef class asGFF3(Parser): |9 |attributes|the attribute field | +----------+----------+-------------------------------+ - ''' + """ cdef parse(self, char * buffer, int len): cdef ctabixproxies.GFF3Proxy r r = ctabixproxies.GFF3Proxy(self.encoding) @@ -149,9 +143,9 @@ cdef class asGFF3(Parser): cdef class asGTF(Parser): - '''converts a :term:`tabix row` into a GTF record with the following + """converts a :term:`tabix row` into a GTF record with the following fields: - + +----------+----------+-------------------------------+ |*Column* |*Name* |*Content* | +----------+----------+-------------------------------+ @@ -187,16 +181,16 @@ cdef class asGTF(Parser): |transcript_id |the transcript identifier | +--------------------+------------------------------+ - ''' + """ cdef parse(self, char * buffer, int len): cdef ctabixproxies.GTFProxy r r = ctabixproxies.GTFProxy(self.encoding) r.copy(buffer, len) return r - + cdef class asBed(Parser): - '''converts a :term:`tabix row` into a bed record + """converts a :term:`tabix row` into a bed record with the following fields: +-----------+-----------+------------------------------------------+ @@ -235,7 +229,7 @@ cdef class asBed(Parser): fields are optional, but if one is defined, all the preceding need to be defined as well. - ''' + """ cdef parse(self, char * buffer, int len): cdef ctabixproxies.BedProxy r r = ctabixproxies.BedProxy(self.encoding) @@ -243,10 +237,10 @@ cdef class asBed(Parser): return r -cdef class asVCF(Parser): - '''converts a :term:`tabix row` into a VCF record with +cdef class asVCF(Parser): + """converts a :term:`tabix row` into a VCF record with the following fields: - + +----------+---------+------------------------------------+ |*Column* |*Field* |*Contents* | | | | | @@ -276,7 +270,7 @@ cdef class asVCF(Parser): first_sample_genotype = vcf[0] second_sample_genotype = vcf[1] - ''' + """ cdef parse(self, char * buffer, int len): cdef ctabixproxies.VCFProxy r r = ctabixproxies.VCFProxy(self.encoding) @@ -291,10 +285,10 @@ cdef class TabixFile: The file is automatically opened. The index file of file ```` is expected to be called ``.tbi`` by default (see parameter `index`). - + Parameters ---------- - + filename : string Filename of bgzf file to be opened. @@ -304,9 +298,9 @@ cdef class TabixFile: mode : char The file opening mode. Currently, only ``r`` is permitted. - + parser : :class:`pysam.Parser` - + sets the default parser for this tabix file. If `parser` is None, the results are returned as an unparsed string. Otherwise, `parser` is assumed to be a functor that will return @@ -324,7 +318,7 @@ cdef class TabixFile: Raises ------ - + ValueError if index file is missing. @@ -355,7 +349,7 @@ cdef class TabixFile: index=None, threads=1, ): - '''open a :term:`tabix file` for reading.''' + """open a :term:`tabix file` for reading.""" if mode != 'r': raise ValueError("invalid file opening mode `%s`" % mode) @@ -388,7 +382,7 @@ cdef class TabixFile: if self.htsfile == NULL: raise IOError("could not open file `%s`" % filename) - + #if self.htsfile.format.category != region_list: # raise ValueError("file does not contain region data") @@ -402,10 +396,10 @@ cdef class TabixFile: self.start_offset = self.tell() def _dup(self): - '''return a copy of this tabix file. - + """return a copy of this tabix file. + The file is being re-opened. - ''' + """ return TabixFile(self.filename, mode="r", threads=self.threads, @@ -413,33 +407,33 @@ cdef class TabixFile: index=self.filename_index, encoding=self.encoding) - def fetch(self, + def fetch(self, reference=None, - start=None, - end=None, + start=None, + end=None, region=None, parser=None, multiple_iterators=False): - '''fetch one or more rows in a :term:`region` using 0-based + """fetch one or more rows in a :term:`region` using 0-based indexing. The region is specified by :term:`reference`, *start* and *end*. Alternatively, a samtools :term:`region` string can be supplied. - Without *reference* or *region* all entries will be fetched. - + Without *reference* or *region* all entries will be fetched. + If only *reference* is set, all reads matching on *reference* will be fetched. If *parser* is None, the default parser will be used for parsing. - + Set *multiple_iterators* to true if you will be using multiple iterators on the same file at the same time. The iterator returned will receive its own copy of a filehandle to the file effectively re-opening the file. Re-opening a file creates some overhead, so beware. - ''' + """ if not self.is_open(): raise ValueError("I/O operation on closed file") @@ -450,7 +444,7 @@ cdef class TabixFile: raise ValueError("end out of range (%i)" % end) if start is None: start = 0 - + if start < 0: raise ValueError("start out of range (%i)" % end) elif start > end: @@ -507,13 +501,13 @@ cdef class TabixFile: raise ValueError( "could not create iterator for region '%s'" % region) - + # use default parser if no parser is specified if parser is None: parser = fileobj.parser cdef TabixIterator a - if parser is None: + if parser is None: a = TabixIterator(encoding=fileobj.encoding) else: parser.set_encoding(fileobj.encoding) @@ -529,75 +523,72 @@ cdef class TabixFile: ############################################################### ## properties ############################################################### - property header: - '''the file header. + @property + def header(self): + """the file header. The file header consists of the lines at the beginning of a file that are prefixed by the comment character ``#``. - + .. note:: The header is returned as an iterator presenting lines without the newline character. - ''' - - def __get__(self): - - cdef char *cfilename = self.filename - cdef char *cfilename_index = self.filename_index - - cdef kstring_t buffer - buffer.l = buffer.m = 0 - buffer.s = NULL - - cdef htsFile * fp = NULL - cdef int KS_SEP_LINE = 2 - cdef tbx_t * tbx = NULL - lines = [] - with nogil: - fp = hts_open(cfilename, 'r') - - if fp == NULL: - raise OSError("could not open {} for reading header".format(self.filename)) + """ + cdef char *cfilename = self.filename + cdef char *cfilename_index = self.filename_index - with nogil: - tbx = tbx_index_load2(cfilename, cfilename_index) - - if tbx == NULL: - raise OSError("could not load .tbi/.csi index of {}".format(self.filename)) + cdef kstring_t buffer + buffer.l = buffer.m = 0 + buffer.s = NULL - while hts_getline(fp, KS_SEP_LINE, &buffer) >= 0: - if not buffer.l or buffer.s[0] != tbx.conf.meta_char: - break - lines.append(force_str(buffer.s, self.encoding)) + cdef htsFile * fp = NULL + cdef int KS_SEP_LINE = 2 + cdef tbx_t * tbx = NULL + lines = [] + with nogil: + fp = hts_open(cfilename, 'r') - with nogil: - hts_close(fp) - free(buffer.s) + if fp == NULL: + raise OSError("could not open {} for reading header".format(self.filename)) + + with nogil: + tbx = tbx_index_load2(cfilename, cfilename_index) - return lines + if tbx == NULL: + raise OSError("could not load .tbi/.csi index of {}".format(self.filename)) + + while hts_getline(fp, KS_SEP_LINE, &buffer) >= 0: + if not buffer.l or buffer.s[0] != tbx.conf.meta_char: + break + lines.append(force_str(buffer.s, self.encoding)) + + with nogil: + hts_close(fp) + free(buffer.s) + + return lines + + @property + def contigs(self): + """list of chromosome names""" + cdef char ** sequences + cdef int nsequences + + with nogil: + sequences = tbx_seqnames(self.index, &nsequences) + cdef int x + result = [] + for x from 0 <= x < nsequences: + result.append(force_str(sequences[x])) + + # htslib instructions: + # only free container, not the sequences themselves + free(sequences) + + return result - property contigs: - '''list of chromosome names''' - def __get__(self): - cdef char ** sequences - cdef int nsequences - - with nogil: - sequences = tbx_seqnames(self.index, &nsequences) - cdef int x - result = [] - for x from 0 <= x < nsequences: - result.append(force_str(sequences[x])) - - # htslib instructions: - # only free container, not the sequences themselves - free(sequences) - - return result - def close(self): - ''' - closes the :class:`pysam.TabixFile`.''' + """closes the :class:`pysam.TabixFile`.""" if self.htsfile != NULL: hts_close(self.htsfile) self.htsfile = NULL @@ -623,20 +614,20 @@ cdef class TabixIterator: def __init__(self, encoding="ascii"): self.encoding = encoding - + def __iter__(self): self.buffer.s = NULL self.buffer.l = 0 self.buffer.m = 0 - return self + return self cdef int __cnext__(self): - '''iterate to next element. - + """iterate to next element. + Return -5 if file has been closed when this function was called. - ''' + """ if self.tabixfile.htsfile == NULL: return -5 @@ -653,17 +644,17 @@ cdef class TabixIterator: if retval < 0: break - if self.buffer.s[0] != '#': + if self.buffer.s[0] != b'#': break return retval - def __next__(self): + def __next__(self): """python version of next(). pyrex uses this non-standard name instead of next() """ - + cdef int retval = self.__cnext__() if retval == -5: raise IOError("iteration on closed file") @@ -672,9 +663,6 @@ cdef class TabixIterator: return charptr_to_str(self.buffer.s, self.encoding) - def next(self): - return self.__next__() - def __dealloc__(self): if self.iterator != NULL: tbx_itr_destroy(self.iterator) @@ -683,14 +671,11 @@ cdef class TabixIterator: class EmptyIterator: - '''empty iterator''' + """empty iterator""" def __iter__(self): return self - def next(self): - raise StopIteration() - def __next__(self): raise StopIteration() @@ -703,18 +688,18 @@ cdef class TabixIteratorParsed(TabixIterator): Returns parsed data. """ - def __init__(self, + def __init__(self, Parser parser): - + TabixIterator.__init__(self) self.parser = parser - def __next__(self): + def __next__(self): """python version of next(). pyrex uses this non-standard name instead of next() """ - + cdef int retval = self.__cnext__() if retval == -5: raise IOError("iteration on closed file") @@ -727,9 +712,9 @@ cdef class TabixIteratorParsed(TabixIterator): cdef class GZIterator: def __init__(self, filename, int buffer_size=65536, encoding="ascii"): - '''iterate line-by-line through gzip (or bgzip) + """iterate line-by-line through gzip (or bgzip) compressed file. - ''' + """ if not os.path.exists(filename): raise IOError("No such file or directory: %s" % filename) @@ -746,7 +731,7 @@ cdef class GZIterator: self.buffer.s = malloc(buffer_size) def __dealloc__(self): - '''close file.''' + """close file.""" if self.gzipfile != NULL: bgzf_close(self.gzipfile) self.gzipfile = NULL @@ -763,9 +748,9 @@ cdef class GZIterator: cdef int retval = 0 while 1: with nogil: - retval = ks_getuntil(self.kstream, '\n', &self.buffer, &dret) - - if retval < 0: + retval = ks_getuntil(self.kstream, b'\n', &self.buffer, &dret) + + if retval < 0: break return dret @@ -781,9 +766,9 @@ cdef class GZIterator: cdef class GZIteratorHead(GZIterator): - '''iterate line-by-line through gzip (or bgzip) + """iterate line-by-line through gzip (or bgzip) compressed file returning comments at top of file. - ''' + """ def __next__(self): """python version of next(). @@ -791,16 +776,16 @@ cdef class GZIteratorHead(GZIterator): cdef int retval = self.__cnext__() if retval < 0: raise StopIteration - if self.buffer.s[0] == '#': + if self.buffer.s[0] == b'#': return self.buffer.s else: raise StopIteration cdef class GZIteratorParsed(GZIterator): - '''iterate line-by-line through gzip (or bgzip) + """iterate line-by-line through gzip (or bgzip) compressed file returning comments at top of file. - ''' + """ def __init__(self, parser): self.parser = parser @@ -816,14 +801,14 @@ cdef class GZIteratorParsed(GZIterator): self.buffer.l) -def tabix_compress(filename_in, +def tabix_compress(filename_in, filename_out, force=False): - '''compress *filename_in* writing the output to *filename_out*. - + """compress *filename_in* writing the output to *filename_out*. + Raise an IOError if *filename_out* already exists, unless *force* is set. - ''' + """ if not force and os.path.exists(filename_out): raise IOError( @@ -855,7 +840,7 @@ def tabix_compress(filename_in, buffer = malloc(WINDOW_SIZE) c = 1 - + while c > 0: with nogil: c = read(fd_src, buffer, WINDOW_SIZE) @@ -865,7 +850,7 @@ def tabix_compress(filename_in, if r < 0: free(buffer) raise IOError("writing failed") - + free(buffer) r = bgzf_close(fp) if r < 0: @@ -899,7 +884,7 @@ def tabix_index(filename, keep_original=False, csi=False, ): - '''index tab-separated *filename* using tabix. + """index tab-separated *filename* using tabix. An existing index will not be overwritten unless *force* is set. @@ -911,14 +896,14 @@ def tabix_index(filename, Column indices are 0-based. Note that this is different from the tabix command line utility where column indices start at 1. - + Coordinates in the file are assumed to be 1-based unless *zerobased* is set. If *preset* is provided, the column coordinates are taken from a preset. Valid values for preset are "gff", "bed", "sam", "vcf", psltbl", "pileup". - + Lines beginning with *meta_char* and the first *line_skip* lines will be skipped. @@ -927,7 +912,7 @@ def tabix_index(filename, file will be retained. *min-shift* sets the minimal interval size to 1<malloc( buffer_size ) -# self.size = buffer_size -# self.parser = parser - -# def __iter__(self): -# return self - -# cdef __cnext__(self): - -# cdef char * b -# cdef size_t nbytes -# b = self.buffer - -# while not feof( self.infile ): -# nbytes = getline( &b, &self.size, self.infile) - -# # stop at first error or eof -# if (nbytes == -1): break -# # skip comments -# if (b[0] == '#'): continue - -# # skip empty lines -# if b[0] == '\0' or b[0] == '\n' or b[0] == '\r': continue - -# # make sure that entry is complete -# if b[nbytes-1] != '\n' and b[nbytes-1] != '\r': -# result = b -# raise ValueError( "incomplete line at %s" % result ) - -# # make sure that this goes fully through C -# # otherwise buffer is copied to/from a -# # Python object causing segfaults as -# # the wrong memory is freed -# return self.parser.parse( b, nbytes ) - -# raise StopIteration - -# def __dealloc__(self): -# free(self.buffer) + return filename -# def __next__(self): -# return self.__cnext__() ######################################################### ######################################################### @@ -1111,11 +1032,11 @@ def tabix_index(filename, cdef class tabix_file_iterator: - '''iterate over a compressed or uncompressed ``infile``. - ''' + """iterate over a compressed or uncompressed ``infile``. + """ - def __cinit__(self, - infile, + def __cinit__(self, + infile, Parser parser, int buffer_size=65536): @@ -1131,20 +1052,20 @@ cdef class tabix_file_iterator: self.duplicated_fd = dup(fd) # From the manual: - # gzopen can be used to read a file which is not in gzip format; - # in this case gzread will directly read from the file without decompression. - # When reading, this will be detected automatically by looking - # for the magic two-byte gzip header. + # gzopen can be used to read a file which is not in gzip format; + # in this case gzread will directly read from the file without decompression. + # When reading, this will be detected automatically by looking + # for the magic two-byte gzip header. self.fh = bgzf_dopen(self.duplicated_fd, 'r') - if self.fh == NULL: + if self.fh == NULL: raise IOError('%s' % strerror(errno)) - self.kstream = ks_init(self.fh) - + self.kstream = ks_init(self.fh) + self.buffer.s = malloc(buffer_size) - #if self.buffer == NULL: - # raise MemoryError( "tabix_file_iterator: could not allocate %i bytes" % buffer_size) + if self.buffer.s == NULL: + raise MemoryError("tabix_file_iterator: could not allocate %i bytes" % buffer_size) #self.size = buffer_size self.parser = parser @@ -1158,20 +1079,20 @@ cdef class tabix_file_iterator: cdef int retval = 0 while 1: with nogil: - retval = ks_getuntil(self.kstream, '\n', &self.buffer, &dret) - - if retval < 0: + retval = ks_getuntil(self.kstream, b'\n', &self.buffer, &dret) + + if retval < 0: break - #raise IOError('gzip error: %s' % buildGzipError( self.fh )) + #raise IOError('gzip error: %s' % buildGzipError(self.fh)) b = self.buffer.s - + # skip comments - if (b[0] == '#'): + if b[0] == b'#': continue # skip empty lines - if b[0] == '\0' or b[0] == '\n' or b[0] == '\r': + if b[0] == b'\0' or b[0] == b'\n' or b[0] == b'\r': continue # gzgets terminates at \n, no need to test @@ -1185,19 +1106,16 @@ cdef class tabix_file_iterator: free(self.buffer.s) ks_destroy(self.kstream) bgzf_close(self.fh) - + def __next__(self): return self.__cnext__() - def next(self): - return self.__cnext__() - class tabix_generic_iterator: - '''iterate over ``infile``. - + """iterate over ``infile``. + Permits the use of file-like objects for example from the gzip module. - ''' + """ def __init__(self, infile, parser): self.infile = infile @@ -1210,7 +1128,7 @@ class tabix_generic_iterator: # cython version - required for python 3 def __next__(self): - + cdef char * b cdef char * cpy cdef size_t nbytes @@ -1227,39 +1145,35 @@ class tabix_generic_iterator: line = self.infile.readline() if not line: break - + s = force_bytes(line, encoding) b = s nbytes = len(line) - assert b[nbytes] == '\0' + assert b[nbytes] == b'\0' # skip comments - if b[0] == '#': + if b[0] == b'#': continue # skip empty lines - if b[0] == '\0' or b[0] == '\n' or b[0] == '\r': + if b[0] == b'\0' or b[0] == b'\n' or b[0] == b'\r': continue - + # make sure that entry is complete - if b[nbytes-1] != '\n' and b[nbytes-1] != '\r': + if b[nbytes-1] != b'\n' and b[nbytes-1] != b'\r': raise ValueError("incomplete line at %s" % line) - + bytes_cpy = b cpy = bytes_cpy - return self.parser(cpy, nbytes) + return self.parser(cpy, nbytes) raise StopIteration - # python version - required for python 2.7 - def next(self): - return self.__next__() - def tabix_iterator(infile, parser): """return an iterator over all entries in a file. - + Results are returned parsed as specified by the *parser*. If *parser* is None, the results are returned as an unparsed string. Otherwise, *parser* is assumed to be a functor that will return @@ -1268,30 +1182,12 @@ def tabix_iterator(infile, parser): """ return tabix_generic_iterator(infile, parser) - - # file objects can use C stdio - # used to be: isinstance( infile, file): - # if PY_MAJOR_VERSION >= 3: - # if isinstance( infile, io.IOBase ): - # return tabix_copy_iterator( infile, parser ) - # else: - # return tabix_generic_iterator( infile, parser ) - # else: -# if isinstance( infile, file ): -# return tabix_copy_iterator( infile, parser ) -# else: -# return tabix_generic_iterator( infile, parser ) - -cdef class Tabixfile(TabixFile): - """Tabixfile is deprecated: use TabixFile instead""" - pass __all__ = [ - "tabix_index", + "tabix_index", "tabix_compress", "TabixFile", - "Tabixfile", "asTuple", "asGTF", "asGFF3", @@ -1299,7 +1195,7 @@ __all__ = [ "asBed", "GZIterator", "GZIteratorHead", - "tabix_iterator", - "tabix_generic_iterator", - "tabix_file_iterator", + "tabix_iterator", + "tabix_generic_iterator", + "tabix_file_iterator", ] diff --git a/pysam/libctabixproxies.pxd b/pysam/libctabixproxies.pxd index edea701..9c93a6a 100644 --- a/pysam/libctabixproxies.pxd +++ b/pysam/libctabixproxies.pxd @@ -1,3 +1,5 @@ +# cython: language_level=3, embedsignature=True, profile=True + #cdef extern from "Python.h": # ctypedef struct FILE diff --git a/pysam/libctabixproxies.pyx b/pysam/libctabixproxies.pyx index f95425a..65c35b7 100644 --- a/pysam/libctabixproxies.pyx +++ b/pysam/libctabixproxies.pyx @@ -1,3 +1,5 @@ +# cython: language_level=3, embedsignature=True, profile=True + from cpython cimport PyBytes_FromStringAndSize from libc.stdio cimport printf, feof, fgets @@ -13,33 +15,31 @@ import copy cdef char *StrOrEmpty(char * buffer): - if buffer == NULL: - return "" - else: return buffer + if buffer == NULL: + return "" + else: + return buffer cdef int isNew(char * p, char * buffer, size_t nbytes): - """return True if `p` is located within `buffer` of size - `nbytes` - """ + """return True if `p` is located within `buffer` of size `nbytes`.""" if p == NULL: return 0 - + return not (buffer <= p <= buffer + nbytes) cdef class TupleProxy: - '''Proxy class for access to parsed row as a tuple. + """Proxy class for access to parsed row as a tuple. This class represents a table row for fast read-access. Access to individual fields is via the [] operator. - - Only read-only access is implemented. - ''' + Only read-only access is implemented. - def __cinit__(self, encoding="ascii"): + """ + def __cinit__(self, encoding="ascii"): self.data = NULL self.fields = NULL self.index = 0 @@ -72,10 +72,7 @@ cdef class TupleProxy: return n def compare(self, TupleProxy other): - '''return -1,0,1, if contents in this are binary - <,=,> to *other* - - ''' + """return -1,0,1, if contents in this are binary <,=,> to *other*.""" if self.is_modified or other.is_modified: raise NotImplementedError( 'comparison of modified TupleProxies is not implemented') @@ -98,28 +95,31 @@ cdef class TupleProxy: raise NotImplementedError(err_msg) cdef take(self, char * buffer, size_t nbytes): - '''start presenting buffer. + """start presenting buffer. Take ownership of the pointer. - ''' + + """ self.data = buffer self.nbytes = nbytes self.update(buffer, nbytes) cdef present(self, char * buffer, size_t nbytes): - '''start presenting buffer. + """start presenting buffer. Do not take ownership of the pointer. - ''' + + """ self.update(buffer, nbytes) cdef copy(self, char * buffer, size_t nbytes, bint reset=False): - '''start presenting buffer of size *nbytes*. + """start presenting buffer of size *nbytes*. Buffer is a '\0'-terminated string without the '\n'. Take a copy of buffer. - ''' + + """ # +1 for '\0' cdef int s = sizeof(char) * (nbytes + 1) self.data = malloc(s) @@ -129,24 +129,23 @@ cdef class TupleProxy: if reset: for x from 0 <= x < nbytes: - if self.data[x] == '\0': - self.data[x] = '\t' + if self.data[x] == b'\0': + self.data[x] = b'\t' self.update(self.data, nbytes) cpdef int getMinFields(self): - '''return minimum number of fields.''' + """return minimum number of fields.""" # 1 is not a valid tabix entry, but TupleProxy # could be more generic. return 1 cpdef int getMaxFields(self): - '''return maximum number of fields. Return - 0 for unknown length.''' + """maximum number of fields or 0 for unknown length.""" return 0 cdef update(self, char * buffer, size_t nbytes): - '''update internal data. + """update internal data. *buffer* is a \0 terminated string. @@ -160,7 +159,7 @@ cdef class TupleProxy: If max_fields is set, the number of fields is initialized to max_fields. - ''' + """ cdef char * pos cdef char * old_pos cdef int field @@ -176,8 +175,8 @@ cdef class TupleProxy: ################################# # remove line breaks and feeds and update number of bytes x = nbytes - 1 - while x > 0 and (buffer[x] == '\n' or buffer[x] == '\r'): - buffer[x] = '\0' + while x > 0 and (buffer[x] == b'\n' or buffer[x] == b'\r'): + buffer[x] = b'\0' x -= 1 self.nbytes = x + 1 @@ -185,11 +184,11 @@ cdef class TupleProxy: # clear data if self.fields != NULL: free(self.fields) - + for field from 0 <= field < self.nfields: if isNew(self.fields[field], self.data, self.nbytes): free(self.fields[field]) - + self.is_modified = self.nfields = 0 ################################# @@ -199,11 +198,11 @@ cdef class TupleProxy: # to guess or dynamically grow if max_fields == 0: for x from 0 <= x < nbytes: - if buffer[x] == '\t': + if buffer[x] == b'\t': max_fields += 1 max_fields += 1 - self.fields = calloc(max_fields, sizeof(char *)) + self.fields = calloc(max_fields, sizeof(char *)) if self.fields == NULL: raise ValueError("out of memory in TupleProxy.update()") @@ -214,8 +213,8 @@ cdef class TupleProxy: field += 1 old_pos = pos while 1: - - pos = memchr(pos, '\t', nbytes) + + pos = memchr(pos, b'\t', nbytes) if pos == NULL: break if field >= max_fields: @@ -223,7 +222,7 @@ cdef class TupleProxy: "parsing error: more than %i fields in line: %s" % (max_fields, buffer)) - pos[0] = '\0' + pos[0] = b'\0' pos += 1 self.fields[field] = pos field += 1 @@ -238,13 +237,13 @@ cdef class TupleProxy: (self.getMinFields(), buffer)) def _getindex(self, int index): - '''return item at idx index''' + """item at index.""" cdef int i = index if i < 0: i += self.nfields if i < 0: raise IndexError("list index out of range") - # apply offset - separating a fixed number + # apply offset - separating a fixed number # of fields from a variable number such as in VCF i += self.offset if i >= self.nfields: @@ -264,7 +263,7 @@ cdef class TupleProxy: return result def _setindex(self, index, value): - '''set item at idx index.''' + """set item at idx index.""" cdef int idx = index if idx < 0: raise IndexError("list index out of range") @@ -289,12 +288,12 @@ cdef class TupleProxy: strcpy(self.fields[idx], tmp) def __setitem__(self, index, value): - '''set item at *index* to *value*''' + """set item at *index* to *value*.""" cdef int i = index if i < 0: i += self.nfields i += self.offset - + self._setindex(i, value) def __len__(self): @@ -304,9 +303,8 @@ cdef class TupleProxy: self.index = 0 return self - def __next__(self): - """python version of next(). - """ + def __next__(self): + """python version of next().""" if self.index >= self.nfields: raise StopIteration cdef char * retval = self.fields[self.index] @@ -317,7 +315,6 @@ cdef class TupleProxy: return force_str(retval, self.encoding) def __str__(self): - '''return original data''' # copy and replace \0 bytes with \t characters cdef char * cpy if self.is_modified: @@ -332,25 +329,25 @@ cdef class TupleProxy: raise ValueError("out of memory") memcpy(cpy, self.data, self.nbytes+1) for x from 0 <= x < self.nbytes: - if cpy[x] == '\0': - cpy[x] = '\t' + if cpy[x] == b'\0': + cpy[x] = b'\t' result = cpy[:self.nbytes] free(cpy) r = result.decode(self.encoding) return r def toDot(v): - '''convert value to '.' if None''' + """convert value to '.' if None""" if v is None: - return "." + return "." else: return str(v) def quote(v): - '''return a quoted attribute.''' + """return a quoted attribute.""" if isinstance(v, str): return '"%s"' % v - else: + else: return str(v) @@ -359,7 +356,7 @@ cdef class NamedTupleProxy(TupleProxy): map_key2field = {} def __setattr__(self, key, value): - '''set attribute.''' + """set attribute.""" cdef int idx idx, f = self.map_key2field[key] if self.nfields < idx: @@ -410,7 +407,7 @@ cdef str to1based(int v): cdef class GTFProxy(NamedTupleProxy): - '''Proxy class for access to GTF fields. + """Proxy class for access to GTF fields. This class represents a GTF entry for fast read-access. Write-access has been added as well, though some care must @@ -421,7 +418,7 @@ cdef class GTFProxy(NamedTupleProxy): The only exception is the attributes field when set from a dictionary - this field will manage its own memory. - ''' + """ separator = "; " # first value is field index, the tuple contains conversion @@ -429,32 +426,33 @@ cdef class GTFProxy(NamedTupleProxy): # to pythonic value) and setting (converting pythonic value to # interval string representation) map_key2field = { - 'contig' : (0, (str, str)), - 'source' : (1, (dot_or_str, str)), + 'contig': (0, (str, str)), + 'source': (1, (dot_or_str, str)), 'feature': (2, (dot_or_str, str)), - 'start' : (3, (from1based, to1based)), - 'end' : (4, (int, int)), - 'score' : (5, (dot_or_float, toDot)), - 'strand' : (6, (dot_or_str, str)), - 'frame' : (7, (dot_or_int, toDot)), + 'start': (3, (from1based, to1based)), + 'end': (4, (int, int)), + 'score': (5, (dot_or_float, toDot)), + 'strand': (6, (dot_or_str, str)), + 'frame': (7, (dot_or_int, toDot)), 'attributes': (8, (str, str))} - - def __cinit__(self): + + def __cinit__(self): # automatically calls TupleProxy.__cinit__ self.attribute_dict = None - + cpdef int getMinFields(self): - '''return minimum number of fields.''' + """return minimum number of fields.""" return 9 cpdef int getMaxFields(self): - '''return max number of fields.''' + """return max number of fields.""" return 9 def to_dict(self): """parse attributes - return as dict The dictionary can be modified to update attributes. + """ if not self.attribute_dict: self.attribute_dict = self.attribute_string2dict( @@ -463,12 +461,11 @@ cdef class GTFProxy(NamedTupleProxy): return self.attribute_dict def as_dict(self): - """deprecated: use :meth:`to_dict` - """ + """deprecated: use :meth:`to_dict`.""" return self.to_dict() def from_dict(self, d): - '''set attributes from a dictionary.''' + """set attributes from a dictionary.""" self.attribute_dict = None attribute_string = force_bytes( self.attribute_dict2string(d), @@ -480,43 +477,42 @@ cdef class GTFProxy(NamedTupleProxy): cdef int x if self.is_modified: - return "\t".join( - (self.contig, - toDot(self.source), - toDot(self.feature), + return "\t".join( + (self.contig, + toDot(self.source), + toDot(self.feature), str(self.start + 1), str(self.end), toDot(self.score), toDot(self.strand), toDot(self.frame), self.attributes)) - else: + else: return TupleProxy.__str__(self) def invert(self, int lcontig): - '''invert coordinates to negative strand coordinates - + """invert coordinates to negative strand coordinates. + This method will only act if the feature is on the - negative strand.''' + negative strand. + """ if self.strand[0] == '-': start = min(self.start, self.end) end = max(self.start, self.end) self.start, self.end = lcontig - end, lcontig - start def keys(self): - '''return a list of attributes defined in this entry.''' + """return a list of attributes defined in this entry.""" if not self.attribute_dict: - self.attribute_dict = self.attribute_string2dict( - self.attributes) + self.attribute_dict = self.attribute_string2dict(self.attributes) return self.attribute_dict.keys() def __getitem__(self, key): return self.__getattr__(key) def setAttribute(self, name, value): - '''convenience method to set an attribute. - ''' + """convenience method to set an attribute.""" if not self.attribute_dict: self.attribute_dict = self.attribute_string2dict( self.attributes) @@ -526,7 +522,7 @@ cdef class GTFProxy(NamedTupleProxy): def attribute_string2dict(self, s): return collections.OrderedDict( self.attribute_string2iterator(s)) - + def __cmp__(self, other): return (self.contig, self.strand, self.start) < \ (other.contig, other.strand, other.start) @@ -548,9 +544,7 @@ cdef class GTFProxy(NamedTupleProxy): raise NotImplementedError(err_msg) def dict2attribute_string(self, d): - """convert dictionary to attribute string in GTF format. - - """ + """convert dictionary to attribute string in GTF format.""" aa = [] for k, v in d.items(): if isinstance(v, str): @@ -561,10 +555,7 @@ cdef class GTFProxy(NamedTupleProxy): return self.separator.join(aa) + ";" def attribute_string2iterator(self, s): - """convert attribute string in GTF format to records - and iterate over key, value pairs. - """ - + """convert attribute string in GTF format to records and iterate over key, value pairs.""" # remove comments attributes = force_str(s, encoding=self.encoding) @@ -602,13 +593,11 @@ cdef class GTFProxy(NamedTupleProxy): pass except TypeError: pass - + yield n, v - - def __getattr__(self, key): - """Generic lookup of attribute from GFF/GTF attributes - """ + def __getattr__(self, key): + """Generic lookup of attribute from GFF/GTF attributes.""" # Only called if there *isn't* an attribute with this name cdef int idx idx, f = self.map_key2field.get(key, (-1, None)) @@ -621,7 +610,7 @@ cdef class GTFProxy(NamedTupleProxy): TupleProxy._setindex(self, idx, s) self.attribute_dict = None return s - + if f[0] == str: return force_str(self.fields[idx], self.encoding) @@ -635,8 +624,7 @@ cdef class GTFProxy(NamedTupleProxy): return self.attribute_dict[key] def __setattr__(self, key, value): - '''set attribute.''' - + """set attribute.""" # Note that __setattr__ is called before properties, so __setattr__ and # properties don't mix well. This is different from __getattr__ which is # called after any properties have been resolved. @@ -659,32 +647,21 @@ cdef class GTFProxy(NamedTupleProxy): self.attribute_dict[key] = value self.is_modified = True - # for backwards compatibility - def asDict(self, *args, **kwargs): - return self.to_dict(*args, **kwargs) - - def fromDict(self, *args, **kwargs): - return self.from_dict(*args, **kwargs) - cdef class GFF3Proxy(GTFProxy): - def dict2attribute_string(self, d): """convert dictionary to attribute string.""" - return ";".join(["{}={}".format(k, v) for k, v in d.items()]) - + return ";".join("{}={}".format(k, v) for k, v in d.items()) + def attribute_string2iterator(self, s): - """convert attribute string in GFF3 format to records - and iterate over key, value pairs. - """ - + """convert attribute string in GFF3 format to records and iterate over key, value pairs.""" for f in (x.strip() for x in s.split(";")): if not f: continue key, value = f.split("=", 1) value = value.strip() - + ## try to convert to a value try: value = float(value) @@ -693,42 +670,45 @@ cdef class GFF3Proxy(GTFProxy): pass except TypeError: pass - + yield key.strip(), value - + cdef class BedProxy(NamedTupleProxy): - '''Proxy class for access to Bed fields. + """Proxy class for access to Bed fields. This class represents a BED entry for fast read-access. - ''' + + """ map_key2field = { - 'contig' : (0, str), - 'start' : (1, int), - 'end' : (2, int), - 'name' : (3, str), - 'score' : (4, float), - 'strand' : (5, str), - 'thickStart' : (6, int), - 'thickEnd' : (7, int), - 'itemRGB' : (8, str), + 'contig': (0, str), + 'start': (1, int), + 'end': (2, int), + 'name': (3, str), + 'score': (4, float), + 'strand': (5, str), + 'thickStart': (6, int), + 'thickEnd': (7, int), + 'itemRGB': (8, str), 'blockCount': (9, int), 'blockSizes': (10, str), - 'blockStarts': (11, str), } + 'blockStarts': (11, str), + } cpdef int getMinFields(self): - '''return minimum number of fields.''' + """minimum number of fields.""" return 3 cpdef int getMaxFields(self): - '''return max number of fields.''' + """max number of fields.""" return 12 cdef update(self, char * buffer, size_t nbytes): - '''update internal data. + """update internal data. nbytes does not include the terminal '\0'. - ''' + + """ TupleProxy.update(self, buffer, nbytes) if self.nfields < 3: @@ -740,7 +720,7 @@ cdef class BedProxy(NamedTupleProxy): # do automatic conversion self.contig = self.fields[0] - self.start = atoi(self.fields[1]) + self.start = atoi(self.fields[1]) self.end = atoi(self.fields[2]) # __setattr__ in base class seems to take precedence @@ -751,7 +731,6 @@ cdef class BedProxy(NamedTupleProxy): # def __get__( self ): return self.end def __str__(self): - cdef int save_fields = self.nfields # ensure fields to use correct format self.nfields = self.bedfields @@ -760,7 +739,7 @@ cdef class BedProxy(NamedTupleProxy): return retval def __setattr__(self, key, value): - '''set attribute.''' + """set attribute.""" if key == "start": self.start = value elif key == "end": @@ -769,53 +748,56 @@ cdef class BedProxy(NamedTupleProxy): cdef int idx idx, f = self.map_key2field[key] TupleProxy._setindex(self, idx, str(value)) - + cdef class VCFProxy(NamedTupleProxy): - '''Proxy class for access to VCF fields. + """Proxy class for access to VCF fields. The genotypes are accessed via a numeric index. Sample headers are not available. - ''' - map_key2field = { - 'contig' : (0, str), - 'pos' : (1, int), - 'id' : (2, str), - 'ref' : (3, str), - 'alt' : (4, str), - 'qual' : (5, str), - 'filter' : (6, str), - 'info' : (7, str), - 'format' : (8, str) } - - def __cinit__(self): + + """ + map_key2field = { + 'contig': (0, str), + 'pos': (1, int), + 'id': (2, str), + 'ref': (3, str), + 'alt': (4, str), + 'qual': (5, str), + 'filter': (6, str), + 'info': (7, str), + 'format': (8, str) + } + + def __cinit__(self): # automatically calls TupleProxy.__cinit__ # start indexed access at genotypes self.offset = 9 cdef update(self, char * buffer, size_t nbytes): - '''update internal data. - + """update internal data. + nbytes does not include the terminal '\0'. - ''' + + """ TupleProxy.update(self, buffer, nbytes) self.contig = self.fields[0] # vcf counts from 1 - correct here self.pos = atoi(self.fields[1]) - 1 - + def __len__(self): - '''return number of genotype fields.''' + """return number of genotype fields.""" return max(0, self.nfields - 9) - property pos: - '''feature end (in 0-based open/closed coordinates).''' - def __get__(self): - return self.pos + @property + def pos(self): + """feature end (in 0-based open/closed coordinates).""" + return self.pos def __setattr__(self, key, value): - '''set attribute.''' - if key == "pos": + """set attribute.""" + if key == "pos": self.pos = value value += 1 diff --git a/pysam/libcutils.pxd b/pysam/libcutils.pxd index 9e1cce1..f480bc1 100644 --- a/pysam/libcutils.pxd +++ b/pysam/libcutils.pxd @@ -1,3 +1,5 @@ +# cython: language_level=3, embedsignature=True, profile=True + ######################################################################### # Utility functions used across pysam ######################################################################### diff --git a/pysam/libcutils.pyx b/pysam/libcutils.pyx index b1fd5df..4a343aa 100644 --- a/pysam/libcutils.pyx +++ b/pysam/libcutils.pyx @@ -1,3 +1,5 @@ +# cython: language_level=3, embedsignature=True, profile=True + import types import sys import string diff --git a/pysam/libcvcf.pxd b/pysam/libcvcf.pxd deleted file mode 100644 index 139597f..0000000 --- a/pysam/libcvcf.pxd +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/pysam/libcvcf.pyx b/pysam/libcvcf.pyx deleted file mode 100644 index 956f8a5..0000000 --- a/pysam/libcvcf.pyx +++ /dev/null @@ -1,1203 +0,0 @@ -# cython: embedsignature=True -# -# Code to read, write and edit VCF files -# -# VCF lines are encoded as a dictionary with these keys (note: all lowercase): -# 'chrom': string -# 'pos': integer -# 'id': string -# 'ref': string -# 'alt': list of strings -# 'qual': integer -# 'filter': None (missing value), or list of keys (strings); empty list parsed as ["PASS"] -# 'info': dictionary of values (see below) -# 'format': list of keys (strings) -# sample keys: dictionary of values (see below) -# -# The sample keys are accessible through vcf.getsamples() -# -# A dictionary of values contains value keys (defined in ##INFO or -# ##FORMAT lines) which map to a list, containing integers, floats, -# strings, or characters. Missing values are replaced by a particular -# value, often -1 or . -# -# Genotypes are not stored as a string, but as a list of 1 or 3 -# elements (for haploid and diploid samples), the first (and last) the -# integer representing an allele, and the second the separation -# character. Note that there is just one genotype per sample, but for -# consistency the single element is stored in a list. -# -# Header lines other than ##INFO, ##FORMAT and ##FILTER are stored as -# (key, value) pairs and are accessible through getheader() -# -# The VCF class can be instantiated with a 'regions' variable -# consisting of tuples (chrom,start,end) encoding 0-based half-open -# segments. Only variants with a position inside the segment will be -# parsed. A regions parser is available under parse_regions. -# -# When instantiated, a reference can be passed to the VCF class. This -# may be any class that supports a fetch(chrom, start, end) method. -# -# NOTE: the position that is returned to Python is 0-based, NOT -# 1-based as in the VCF file. -# NOTE: There is also preliminary VCF functionality in the VariantFile class. -# -# TODO: -# only v4.0 writing is complete; alleles are not converted to v3.3 format -# - -from collections import namedtuple, defaultdict -from operator import itemgetter -import sys, re, copy, bisect - -from libc.stdlib cimport atoi -from libc.stdint cimport int8_t, int16_t, int32_t, int64_t -from libc.stdint cimport uint8_t, uint16_t, uint32_t, uint64_t - -cimport pysam.libctabix as libctabix -cimport pysam.libctabixproxies as libctabixproxies - -from pysam.libcutils cimport force_str - -import pysam - -gtsRegEx = re.compile("[|/\\\\]") -alleleRegEx = re.compile('^[ACGTN]+$') - -# Utility function. Uses 0-based coordinates -def get_sequence(chrom, start, end, fa): - # obtain sequence from .fa file, without truncation - if end<=start: return "" - if not fa: return "N"*(end-start) - if start<0: return "N"*(-start) + get_sequence(chrom, 0, end, fa).upper() - sequence = fa.fetch(chrom, start, end).upper() - if len(sequence) < end-start: sequence += "N"*(end-start-len(sequence)) - return sequence - -# Utility function. Parses a region string -def parse_regions( string ): - result = [] - for r in string.split(','): - elts = r.split(':') - chrom, start, end = elts[0], 0, 3000000000 - if len(elts)==1: pass - elif len(elts)==2: - if len(elts[1])>0: - ielts = elts[1].split('-') - if len(ielts) != 2: ValueError("Don't understand region string '%s'" % r) - try: start, end = int(ielts[0])-1, int(ielts[1]) - except: raise ValueError("Don't understand region string '%s'" % r) - else: - raise ValueError("Don't understand region string '%s'" % r) - result.append( (chrom,start,end) ) - return result - - -FORMAT = namedtuple('FORMAT','id numbertype number type description missingvalue') - -########################################################################################################### -# -# New class -# -########################################################################################################### - -cdef class VCFRecord(libctabixproxies.TupleProxy): - '''vcf record. - - initialized from data and vcf meta - ''' - - cdef vcf - cdef char * contig - cdef uint32_t pos - - def __init__(self, vcf): - self.vcf = vcf - self.encoding = vcf.encoding - - # if len(data) != len(self.vcf._samples): - # self.vcf.error(str(data), - # self.BAD_NUMBER_OF_COLUMNS, - # "expected %s for %s samples (%s), got %s" % \ - # (len(self.vcf._samples), - # len(self.vcf._samples), - # self.vcf._samples, - # len(data))) - - def __cinit__(self, vcf): - # start indexed access at genotypes - self.offset = 9 - - self.vcf = vcf - self.encoding = vcf.encoding - - def error(self, line, error, opt=None): - '''raise error.''' - # pass to vcf file for error handling - return self.vcf.error(line, error, opt) - - cdef update(self, char * buffer, size_t nbytes): - '''update internal data. - - nbytes does not include the terminal '\0'. - ''' - libctabixproxies.TupleProxy.update(self, buffer, nbytes) - - self.contig = self.fields[0] - # vcf counts from 1 - correct here - self.pos = atoi(self.fields[1]) - 1 - - def __len__(self): - return max(0, self.nfields - 9) - - property contig: - def __get__(self): return self.contig - - property pos: - def __get__(self): return self.pos - - property id: - def __get__(self): return self.fields[2] - - property ref: - def __get__(self): - return self.fields[3] - - property alt: - def __get__(self): - # convert v3.3 to v4.0 alleles below - alt = self.fields[4] - if alt == ".": alt = [] - else: alt = alt.upper().split(',') - return alt - - property qual: - def __get__(self): - qual = self.fields[5] - if qual == b".": qual = -1 - else: - try: qual = float(qual) - except: self.vcf.error(str(self),self.QUAL_NOT_NUMERICAL) - return qual - - property filter: - def __get__(self): - f = self.fields[6] - # postpone checking that filters exist. Encode missing filter or no filtering as empty list - if f == b"." or f == b"PASS" or f == b"0": return [] - else: return f.split(';') - - property info: - def __get__(self): - col = self.fields[7] - # dictionary of keys, and list of values - info = {} - if col != b".": - for blurp in col.split(';'): - elts = blurp.split('=') - if len(elts) == 1: v = None - elif len(elts) == 2: v = elts[1] - else: self.vcf.error(str(self),self.ERROR_INFO_STRING) - info[elts[0]] = self.vcf.parse_formatdata(elts[0], v, self.vcf._info, str(self.vcf)) - return info - - property format: - def __get__(self): - return self.fields[8].split(':') - - property samples: - def __get__(self): - return self.vcf._samples - - def __getitem__(self, key): - - # parse sample columns - values = self.fields[self.vcf._sample2column[key]].split(':') - alt = self.alt - format = self.format - - if len(values) > len(format): - self.vcf.error(str(self.line),self.BAD_NUMBER_OF_VALUES,"(found %s values in element %s; expected %s)" %\ - (len(values),key,len(format))) - - result = {} - for idx in range(len(format)): - expected = self.vcf.get_expected(format[idx], self.vcf._format, alt) - if idx < len(values): value = values[idx] - else: - if expected == -1: value = "." - else: value = ",".join(["."]*expected) - - result[format[idx]] = self.vcf.parse_formatdata(format[idx], value, self.vcf._format, str(self.data)) - if expected != -1 and len(result[format[idx]]) != expected: - self.vcf.error(str(self.data),self.BAD_NUMBER_OF_PARAMETERS, - "id=%s, expected %s parameters, got %s" % (format[idx],expected,result[format[idx]])) - if len(result[format[idx]] ) < expected: result[format[idx]] += [result[format[idx]][-1]]*(expected-len(result[format[idx]])) - result[format[idx]] = result[format[idx]][:expected] - - return result - - -cdef class asVCFRecord(libctabix.Parser): - '''converts a :term:`tabix row` into a VCF record.''' - cdef vcffile - def __init__(self, vcffile): - self.vcffile = vcffile - - cdef parse(self, char * buffer, int len): - cdef VCFRecord r - r = VCFRecord(self.vcffile) - r.copy(buffer, len) - return r - -class VCF(object): - - # types - NT_UNKNOWN = 0 - NT_NUMBER = 1 - NT_ALLELES = 2 - NT_NR_ALLELES = 3 - NT_GENOTYPES = 4 - NT_PHASED_GENOTYPES = 5 - - _errors = { 0:"UNKNOWN_FORMAT_STRING:Unknown file format identifier", - 1:"BADLY_FORMATTED_FORMAT_STRING:Formatting error in the format string", - 2:"BADLY_FORMATTED_HEADING:Did not find 9 required headings (CHROM, POS, ..., FORMAT) %s", - 3:"BAD_NUMBER_OF_COLUMNS:Wrong number of columns found (%s)", - 4:"POS_NOT_NUMERICAL:Position column is not numerical", - 5:"UNKNOWN_CHAR_IN_REF:Unknown character in reference field", - 6:"V33_BAD_REF:Reference should be single-character in v3.3 VCF", - 7:"V33_BAD_ALLELE:Cannot interpret allele for v3.3 VCF", - 8:"POS_NOT_POSITIVE:Position field must be >0", - 9:"QUAL_NOT_NUMERICAL:Quality field must be numerical, or '.'", - 10:"ERROR_INFO_STRING:Error while parsing info field", - 11:"ERROR_UNKNOWN_KEY:Unknown key (%s) found in formatted field (info; format; or filter)", - 12:"ERROR_FORMAT_NOT_NUMERICAL:Expected integer or float in formatted field; got %s", - 13:"ERROR_FORMAT_NOT_CHAR:Eexpected character in formatted field; got string", - 14:"FILTER_NOT_DEFINED:Identifier (%s) in filter found which was not defined in header", - 15:"FORMAT_NOT_DEFINED:Identifier (%s) in format found which was not defined in header", - 16:"BAD_NUMBER_OF_VALUES:Found too many of values in sample column (%s)", - 17:"BAD_NUMBER_OF_PARAMETERS:Found unexpected number of parameters (%s)", - 18:"BAD_GENOTYPE:Cannot parse genotype (%s)", - 19:"V40_BAD_ALLELE:Bad allele found for v4.0 VCF (%s)", - 20:"MISSING_REF:Reference allele missing", - 21:"V33_UNMATCHED_DELETION:Deleted sequence does not match reference (%s)", - 22:"V40_MISSING_ANGLE_BRACKETS:Format definition is not deliminted by angular brackets", - 23:"FORMAT_MISSING_QUOTES:Description field in format definition is not surrounded by quotes", - 24:"V40_FORMAT_MUST_HAVE_NAMED_FIELDS:Fields in v4.0 VCF format definition must have named fields", - 25:"HEADING_NOT_SEPARATED_BY_TABS:Heading line appears separated by spaces, not tabs", - 26:"WRONG_REF:Wrong reference %s", - 27:"ERROR_TRAILING_DATA:Numerical field ('%s') has semicolon-separated trailing data", - 28:"BAD_CHR_TAG:Error calculating chr tag for %s", - 29:"ZERO_LENGTH_ALLELE:Found zero-length allele", - 30:"MISSING_INDEL_ALLELE_REF_BASE:Indel alleles must begin with single reference base", - 31:"ZERO_FOR_NON_FLAG_FIELD: number set to 0, but type is not 'FLAG'", - 32:"ERROR_FORMAT_NOT_INTEGER:Expected integer in formatted field; got %s", - 33:"ERROR_FLAG_HAS_VALUE:Flag fields should not have a value", - } - - # tag-value pairs; tags are not unique; does not include fileformat, INFO, FILTER or FORMAT fields - _header = [] - - # version number; 33=v3.3; 40=v4.0 - _version = 40 - - # info, filter and format data - _info = {} - _filter = {} - _format = {} - - # header; and required columns - _required = ["CHROM","POS","ID","REF","ALT","QUAL","FILTER","INFO","FORMAT"] - _samples = [] - - # control behaviour - _ignored_errors = set([11,31]) # ERROR_UNKNOWN_KEY, ERROR_ZERO_FOR_NON_FLAG_FIELD - _warn_errors = set([]) - _leftalign = False - - # reference sequence - _reference = None - - # regions to include; None includes everything - _regions = None - - # statefull stuff - _lineno = -1 - _line = None - _lines = None - - def __init__(self, _copy=None, reference=None, regions=None, - lines=None, leftalign=False): - # make error identifiers accessible by name - for id in self._errors.keys(): - self.__dict__[self._errors[id].split(':')[0]] = id - if _copy != None: - self._leftalign = _copy._leftalign - self._header = _copy._header[:] - self._version = _copy._version - self._info = copy.deepcopy(_copy._info) - self._filter = copy.deepcopy(_copy._filter) - self._format = copy.deepcopy(_copy._format) - self._samples = _copy._samples[:] - self._sample2column = copy.deepcopy(_copy._sample2column) - self._ignored_errors = copy.deepcopy(_copy._ignored_errors) - self._warn_errors = copy.deepcopy(_copy._warn_errors) - self._reference = _copy._reference - self._regions = _copy._regions - if reference: self._reference = reference - if regions: self._regions = regions - if leftalign: self._leftalign = leftalign - self._lines = lines - self.encoding = "ascii" - self.tabixfile = None - - def error(self,line,error,opt=None): - if error in self._ignored_errors: return - errorlabel, errorstring = self._errors[error].split(':') - if opt: errorstring = errorstring % opt - errwarn = ["Error","Warning"][error in self._warn_errors] - errorstring += " in line %s: '%s'\n%s %s: %s\n" % (self._lineno,line,errwarn,errorlabel,errorstring) - if error in self._warn_errors: return - raise ValueError(errorstring) - - def parse_format(self,line,format,filter=False): - if self._version == 40: - if not format.startswith('<'): - self.error(line,self.V40_MISSING_ANGLE_BRACKETS) - format = "<"+format - if not format.endswith('>'): - self.error(line,self.V40_MISSING_ANGLE_BRACKETS) - format += ">" - format = format[1:-1] - data = {'id':None,'number':None,'type':None,'descr':None} - idx = 0 - while len(format.strip())>0: - elts = format.strip().split(',') - first, rest = elts[0], ','.join(elts[1:]) - if first.find('=') == -1 or (first.find('"')>=0 and first.find('=') > first.find('"')): - if self._version == 40: self.error(line,self.V40_FORMAT_MUST_HAVE_NAMED_FIELDS) - if idx == 4: self.error(line,self.BADLY_FORMATTED_FORMAT_STRING) - first = ["ID=","Number=","Type=","Description="][idx] + first - if first.startswith('ID='): data['id'] = first.split('=')[1] - elif first.startswith('Number='): data['number'] = first.split('=')[1] - elif first.startswith('Type='): data['type'] = first.split('=')[1] - elif first.startswith('Description='): - elts = format.split('"') - if len(elts)<3: - self.error(line,self.FORMAT_MISSING_QUOTES) - elts = first.split('=') + [rest] - data['descr'] = elts[1] - rest = '"'.join(elts[2:]) - if rest.startswith(','): rest = rest[1:] - else: - self.error(line,self.BADLY_FORMATTED_FORMAT_STRING) - format = rest - idx += 1 - if filter and idx==1: idx=3 # skip number and type fields for FILTER format strings - if not data['id']: self.error(line,self.BADLY_FORMATTED_FORMAT_STRING) - if 'descr' not in data: - # missing description - self.error(line,self.BADLY_FORMATTED_FORMAT_STRING) - data['descr'] = "" - if not data['type'] and not data['number']: - # fine, ##filter format - return FORMAT(data['id'],self.NT_NUMBER,0,"Flag",data['descr'],'.') - if not data['type'] in ["Integer","Float","Character","String","Flag"]: - self.error(line,self.BADLY_FORMATTED_FORMAT_STRING) - # I would like a missing-value field, but it isn't there - if data['type'] in ['Integer','Float']: data['missing'] = None # Do NOT use arbitrary int/float as missing value - else: data['missing'] = '.' - if not data['number']: self.error(line,self.BADLY_FORMATTED_FORMAT_STRING) - try: - n = int(data['number']) - t = self.NT_NUMBER - except ValueError: - n = -1 - if data['number'] == '.': t = self.NT_UNKNOWN - elif data['number'] == '#alleles': t = self.NT_ALLELES - elif data['number'] == '#nonref_alleles': t = self.NT_NR_ALLELES - elif data['number'] == '#genotypes': t = self.NT_GENOTYPES - elif data['number'] == '#phased_genotypes': t = self.NT_PHASED_GENOTYPES - elif data['number'] == '#phased_genotypes': t = self.NT_PHASED_GENOTYPES - # abbreviations added in VCF version v4.1 - elif data['number'] == 'A': t = self.NT_ALLELES - elif data['number'] == 'G': t = self.NT_GENOTYPES - else: - self.error(line,self.BADLY_FORMATTED_FORMAT_STRING) - # if number is 0 - type must be Flag - if n == 0 and data['type'] != 'Flag': - self.error( line, self.ZERO_FOR_NON_FLAG_FIELD) - # force type 'Flag' if no number - data['type'] = 'Flag' - - return FORMAT(data['id'],t,n,data['type'],data['descr'],data['missing']) - - def format_format( self, fmt, filter=False ): - values = [('ID',fmt.id)] - if fmt.number != None and not filter: - if fmt.numbertype == self.NT_UNKNOWN: nmb = "." - elif fmt.numbertype == self.NT_NUMBER: nmb = str(fmt.number) - elif fmt.numbertype == self.NT_ALLELES: nmb = "#alleles" - elif fmt.numbertype == self.NT_NR_ALLELES: nmb = "#nonref_alleles" - elif fmt.numbertype == self.NT_GENOTYPES: nmb = "#genotypes" - elif fmt.numbertype == self.NT_PHASED_GENOTYPES: nmb = "#phased_genotypes" - else: - raise ValueError("Unknown number type encountered: %s" % fmt.numbertype) - values.append( ('Number',nmb) ) - values.append( ('Type', fmt.type) ) - values.append( ('Description', '"' + fmt.description + '"') ) - if self._version == 33: - format = ",".join([v for k,v in values]) - else: - format = "<" + (",".join( ["%s=%s" % (k,v) for (k,v) in values] )) + ">" - return format - - def get_expected(self, format, formatdict, alt): - fmt = formatdict[format] - if fmt.numbertype == self.NT_UNKNOWN: return -1 - if fmt.numbertype == self.NT_NUMBER: return fmt.number - if fmt.numbertype == self.NT_ALLELES: return len(alt)+1 - if fmt.numbertype == self.NT_NR_ALLELES: return len(alt) - if fmt.numbertype == self.NT_GENOTYPES: return ((len(alt)+1)*(len(alt)+2)) // 2 - if fmt.numbertype == self.NT_PHASED_GENOTYPES: return (len(alt)+1)*(len(alt)+1) - return 0 - - - def _add_definition(self, formatdict, key, data, line ): - if key in formatdict: return - self.error(line,self.ERROR_UNKNOWN_KEY,key) - if data == None: - formatdict[key] = FORMAT(key,self.NT_NUMBER,0,"Flag","(Undefined tag)",".") - return - if data == []: data = [""] # unsure what type -- say string - if type(data[0]) == type(0.0): - formatdict[key] = FORMAT(key,self.NT_UNKNOWN,-1,"Float","(Undefined tag)",None) - return - if type(data[0]) == type(0): - formatdict[key] = FORMAT(key,self.NT_UNKNOWN,-1,"Integer","(Undefined tag)",None) - return - formatdict[key] = FORMAT(key,self.NT_UNKNOWN,-1,"String","(Undefined tag)",".") - - - # todo: trim trailing missing values - def format_formatdata( self, data, format, key=True, value=True, separator=":" ): - output, sdata = [], [] - if type(data) == type([]): # for FORMAT field, make data with dummy values - d = {} - for k in data: d[k] = [] - data = d - # convert missing values; and silently add definitions if required - for k in data: - self._add_definition( format, k, data[k], "(output)" ) - for idx,v in enumerate(data[k]): - if v == format[k].missingvalue: data[k][idx] = "." - # make sure GT comes first; and ensure fixed ordering; also convert GT data back to string - for k in data: - if k != 'GT': sdata.append( (k,data[k]) ) - sdata.sort() - if 'GT' in data: - sdata = [('GT',map(self.convertGTback,data['GT']))] + sdata - for k,v in sdata: - if v == []: v = None - if key and value: - if v != None: output.append( k+"="+','.join(map(str,v)) ) - else: output.append( k ) - elif key: output.append(k) - elif value: - if v != None: output.append( ','.join(map(str,v)) ) - else: output.append( "." ) # should not happen - # snip off trailing missing data - while len(output) > 1: - last = output[-1].replace(',','').replace('.','') - if len(last)>0: break - output = output[:-1] - return separator.join(output) - - - def enter_default_format(self): - for f in [FORMAT('GT',self.NT_NUMBER,1,'String','Genotype','.'), - FORMAT('DP',self.NT_NUMBER,1,'Integer','Read depth at this position for this sample',-1), - FORMAT('FT',self.NT_NUMBER,1,'String','Sample Genotype Filter','.'), - FORMAT('GL',self.NT_UNKNOWN,-1,'Float','Genotype likelihoods','.'), - FORMAT('GLE',self.NT_UNKNOWN,-1,'Float','Genotype likelihoods','.'), - FORMAT('GQ',self.NT_NUMBER,1,'Integer','Genotype Quality',-1), - FORMAT('PL',self.NT_GENOTYPES,-1,'Integer','Phred-scaled genotype likelihoods', '.'), - FORMAT('GP',self.NT_GENOTYPES,-1,'Float','Genotype posterior probabilities','.'), - FORMAT('GQ',self.NT_GENOTYPES,-1,'Integer','Conditional genotype quality','.'), - FORMAT('HQ',self.NT_UNKNOWN,-1,'Integer','Haplotype Quality',-1), # unknown number, since may be haploid - FORMAT('PS',self.NT_UNKNOWN,-1,'Integer','Phase set','.'), - FORMAT('PQ',self.NT_NUMBER,1,'Integer','Phasing quality',-1), - FORMAT('EC',self.NT_ALLELES,1,'Integer','Expected alternate allel counts',-1), - FORMAT('MQ',self.NT_NUMBER,1,'Integer','RMS mapping quality',-1), - ]: - if f.id not in self._format: - self._format[f.id] = f - - def parse_header(self, line): - - assert line.startswith('##') - elts = line[2:].split('=') - key = elts[0].strip() - value = '='.join(elts[1:]).strip() - if key == "fileformat": - if value == "VCFv3.3": - self._version = 33 - elif value == "VCFv4.0": - self._version = 40 - elif value == "VCFv4.1": - # AH - for testing - self._version = 40 - elif value == "VCFv4.2": - # AH - for testing - self._version = 40 - else: - self.error(line,self.UNKNOWN_FORMAT_STRING) - elif key == "INFO": - f = self.parse_format(line, value) - self._info[ f.id ] = f - elif key == "FILTER": - f = self.parse_format(line, value, filter=True) - self._filter[ f.id ] = f - elif key == "FORMAT": - f = self.parse_format(line, value) - self._format[ f.id ] = f - else: - # keep other keys in the header field - self._header.append( (key,value) ) - - - def write_header( self, stream ): - stream.write("##fileformat=VCFv%s.%s\n" % (self._version // 10, self._version % 10)) - for key,value in self._header: stream.write("##%s=%s\n" % (key,value)) - for var,label in [(self._info,"INFO"),(self._filter,"FILTER"),(self._format,"FORMAT")]: - for f in var.itervalues(): stream.write("##%s=%s\n" % (label,self.format_format(f,filter=(label=="FILTER")))) - - - def parse_heading( self, line ): - assert line.startswith('#') - assert not line.startswith('##') - headings = line[1:].split('\t') - # test for 8, as FORMAT field might be missing - if len(headings)==1 and len(line[1:].split()) >= 8: - self.error(line,self.HEADING_NOT_SEPARATED_BY_TABS) - headings = line[1:].split() - - for i,s in enumerate(self._required): - - if len(headings)<=i or headings[i] != s: - - if len(headings) <= i: - err = "(%sth entry not found)" % (i+1) - else: - err = "(found %s, expected %s)" % (headings[i],s) - - #self.error(line,self.BADLY_FORMATTED_HEADING,err) - # allow FORMAT column to be absent - if len(headings) == 8: - headings.append("FORMAT") - else: - self.error(line,self.BADLY_FORMATTED_HEADING,err) - - self._samples = headings[9:] - self._sample2column = dict( [(y,x+9) for x,y in enumerate( self._samples ) ] ) - - def write_heading( self, stream ): - stream.write("#" + "\t".join(self._required + self._samples) + "\n") - - def convertGT(self, GTstring): - if GTstring == ".": return ["."] - try: - gts = gtsRegEx.split(GTstring) - if len(gts) == 1: return [int(gts[0])] - if len(gts) != 2: raise ValueError() - if gts[0] == "." and gts[1] == ".": return [gts[0],GTstring[len(gts[0]):-len(gts[1])],gts[1]] - return [int(gts[0]),GTstring[len(gts[0]):-len(gts[1])],int(gts[1])] - except ValueError: - self.error(self._line,self.BAD_GENOTYPE,GTstring) - return [".","|","."] - - def convertGTback(self, GTdata): - return ''.join(map(str,GTdata)) - - def parse_formatdata( self, key, value, formatdict, line ): - # To do: check that the right number of values is present - f = formatdict.get(key,None) - if f == None: - self._add_definition(formatdict, key, value, line ) - f = formatdict[key] - if f.type == "Flag": - if value is not None: self.error(line,self.ERROR_FLAG_HAS_VALUE) - return [] - values = value.split(',') - # deal with trailing data in some early VCF files - if f.type in ["Float","Integer"] and len(values)>0 and values[-1].find(';') > -1: - self.error(line,self.ERROR_TRAILING_DATA,values[-1]) - values[-1] = values[-1].split(';')[0] - if f.type == "Integer": - for idx,v in enumerate(values): - try: - if v == ".": values[idx] = f.missingvalue - else: values[idx] = int(v) - except: - self.error(line,self.ERROR_FORMAT_NOT_INTEGER,"%s=%s" % (key, str(values))) - return [0] * len(values) - return values - elif f.type == "String": - self._line = line - if f.id == "GT": values = list(map( self.convertGT, values )) - return values - elif f.type == "Character": - for v in values: - if len(v) != 1: self.error(line,self.ERROR_FORMAT_NOT_CHAR) - return values - elif f.type == "Float": - for idx,v in enumerate(values): - if v == ".": values[idx] = f.missingvalue - try: return list(map(float,values)) - except: - self.error(line,self.ERROR_FORMAT_NOT_NUMERICAL,"%s=%s" % (key, str(values))) - return [0.0] * len(values) - else: - # can't happen - self.error(line,self.ERROR_INFO_STRING) - - def inregion(self, chrom, pos): - if not self._regions: return True - for r in self._regions: - if r[0] == chrom and r[1] <= pos < r[2]: return True - return False - - def parse_data( self, line, lineparse=False ): - cols = line.split('\t') - if len(cols) != len(self._samples)+9: - # gracefully deal with absent FORMAT column - # and those missing samples - if len(cols) == 8: - cols.append("") - else: - self.error(line, - self.BAD_NUMBER_OF_COLUMNS, - "expected %s for %s samples (%s), got %s" % (len(self._samples)+9, len(self._samples), self._samples, len(cols))) - - chrom = cols[0] - - # get 0-based position - try: pos = int(cols[1])-1 - except: self.error(line,self.POS_NOT_NUMERICAL) - if pos < 0: self.error(line,self.POS_NOT_POSITIVE) - - # implement filtering - if not self.inregion(chrom,pos): return None - - # end of first-pass parse for sortedVCF - if lineparse: return chrom, pos, line - - id = cols[2] - - ref = cols[3].upper() - if ref == ".": - self.error(line,self.MISSING_REF) - if self._version == 33: ref = get_sequence(chrom,pos,pos+1,self._reference) - else: ref = "" - else: - for c in ref: - if c not in "ACGTN": self.error(line,self.UNKNOWN_CHAR_IN_REF) - if "N" in ref: ref = get_sequence(chrom,pos,pos+len(ref),self._reference) - - # make sure reference is sane - if self._reference: - left = max(0,pos-100) - faref_leftflank = get_sequence(chrom,left,pos+len(ref),self._reference) - faref = faref_leftflank[pos-left:] - if faref != ref: self.error(line,self.WRONG_REF,"(reference is %s, VCF says %s)" % (faref,ref)) - ref = faref - - # convert v3.3 to v4.0 alleles below - if cols[4] == ".": alt = [] - else: alt = cols[4].upper().split(',') - - if cols[5] == ".": qual = -1 - else: - try: qual = float(cols[5]) - except: self.error(line,self.QUAL_NOT_NUMERICAL) - - # postpone checking that filters exist. Encode missing filter or no filtering as empty list - if cols[6] == "." or cols[6] == "PASS" or cols[6] == "0": filter = [] - else: filter = cols[6].split(';') - - # dictionary of keys, and list of values - info = {} - if cols[7] != ".": - for blurp in cols[7].split(';'): - elts = blurp.split('=') - if len(elts) == 1: v = None - elif len(elts) == 2: v = elts[1] - else: self.error(line,self.ERROR_INFO_STRING) - info[elts[0]] = self.parse_formatdata(elts[0], - v, - self._info, - line) - - # Gracefully deal with absent FORMAT column - if cols[8] == "": format = [] - else: format = cols[8].split(':') - - # check: all filters are defined - for f in filter: - if f not in self._filter: self.error(line,self.FILTER_NOT_DEFINED, f) - - # check: format fields are defined - if self._format: - for f in format: - if f not in self._format: self.error(line,self.FORMAT_NOT_DEFINED, f) - - # convert v3.3 alleles - if self._version == 33: - if len(ref) != 1: self.error(line,self.V33_BAD_REF) - newalts = [] - have_deletions = False - for a in alt: - if len(a) == 1: a = a + ref[1:] # SNP; add trailing reference - elif a.startswith('I'): a = ref[0] + a[1:] + ref[1:] # insertion just beyond pos; add first and trailing reference - elif a.startswith('D'): # allow D and D - have_deletions = True - try: - l = int(a[1:]) # throws ValueError if sequence - if len(ref) < l: # add to reference if necessary - addns = get_sequence(chrom,pos+len(ref),pos+l,self._reference) - ref += addns - for i,na in enumerate(newalts): newalts[i] = na+addns - a = ref[l:] # new deletion, deleting pos...pos+l - except ValueError: - s = a[1:] - if len(ref) < len(s): # add Ns to reference if necessary - addns = get_sequence(chrom,pos+len(ref),pos+len(s),self._reference) - if not s.endswith(addns) and addns != 'N'*len(addns): - self.error(line,self.V33_UNMATCHED_DELETION, - "(deletion is %s, reference is %s)" % (a,get_sequence(chrom,pos,pos+len(s),self._reference))) - ref += addns - for i,na in enumerate(newalts): newalts[i] = na+addns - a = ref[len(s):] # new deletion, deleting from pos - else: - self.error(line,self.V33_BAD_ALLELE) - newalts.append(a) - alt = newalts - # deletion alleles exist, add dummy 1st reference allele, and account for leading base - if have_deletions: - if pos == 0: - # Petr Danacek's: we can't have a leading nucleotide at (1-based) position 1 - addn = get_sequence(chrom,pos+len(ref),pos+len(ref)+1,self._reference) - ref += addn - alt = [allele+addn for allele in alt] - else: - addn = get_sequence(chrom,pos-1,pos,self._reference) - ref = addn + ref - alt = [addn + allele for allele in alt] - pos -= 1 - else: - # format v4.0 -- just check for nucleotides - for allele in alt: - if not alleleRegEx.match(allele): - self.error(line,self.V40_BAD_ALLELE,allele) - - # check for leading nucleotide in indel calls - for allele in alt: - if len(allele) != len(ref): - if len(allele) == 0: self.error(line,self.ZERO_LENGTH_ALLELE) - if ref[0].upper() != allele[0].upper() and "N" not in (ref[0]+allele[0]).upper(): - self.error(line,self.MISSING_INDEL_ALLELE_REF_BASE) - - # trim trailing bases in alleles - # AH: not certain why trimming this needs to be added - # disabled now for unit testing - # if alt: - # for i in range(1,min(len(ref),min(map(len,alt)))): - # if len(set(allele[-1].upper() for allele in alt)) > 1 or ref[-1].upper() != alt[0][-1].upper(): - # break - # ref, alt = ref[:-1], [allele[:-1] for allele in alt] - - # left-align alleles, if a reference is available - if self._leftalign and self._reference: - while left < pos: - movable = True - for allele in alt: - if len(allele) > len(ref): - longest, shortest = allele, ref - else: - longest, shortest = ref, allele - if len(longest) == len(shortest) or longest[:len(shortest)].upper() != shortest.upper(): - movable = False - if longest[-1].upper() != longest[len(shortest)-1].upper(): - movable = False - if not movable: - break - ref = ref[:-1] - alt = [allele[:-1] for allele in alt] - if min([len(allele) for allele in alt]) == 0 or len(ref) == 0: - ref = faref_leftflank[pos-left-1] + ref - alt = [faref_leftflank[pos-left-1] + allele for allele in alt] - pos -= 1 - - # parse sample columns - samples = [] - for sample in cols[9:]: - dict = {} - values = sample.split(':') - if len(values) > len(format): - self.error(line,self.BAD_NUMBER_OF_VALUES,"(found %s values in element %s; expected %s)" % (len(values),sample,len(format))) - for idx in range(len(format)): - expected = self.get_expected(format[idx], self._format, alt) - if idx < len(values): value = values[idx] - else: - if expected == -1: value = "." - else: value = ",".join(["."]*expected) - - dict[format[idx]] = self.parse_formatdata(format[idx], - value, - self._format, - line) - if expected != -1 and len(dict[format[idx]]) != expected: - self.error(line,self.BAD_NUMBER_OF_PARAMETERS, - "id=%s, expected %s parameters, got %s" % (format[idx],expected,dict[format[idx]])) - if len(dict[format[idx]] ) < expected: dict[format[idx]] += [dict[format[idx]][-1]]*(expected-len(dict[format[idx]])) - dict[format[idx]] = dict[format[idx]][:expected] - samples.append( dict ) - - # done - d = {'chrom':chrom, - 'pos':pos, # return 0-based position - 'id':id, - 'ref':ref, - 'alt':alt, - 'qual':qual, - 'filter':filter, - 'info':info, - 'format':format} - for key,value in zip(self._samples,samples): - d[key] = value - - return d - - - def write_data(self, stream, data): - required = ['chrom','pos','id','ref','alt','qual','filter','info','format'] + self._samples - for k in required: - if k not in data: raise ValueError("Required key %s not found in data" % str(k)) - if data['alt'] == []: alt = "." - else: alt = ",".join(data['alt']) - if data['filter'] == None: filter = "." - elif data['filter'] == []: - if self._version == 33: filter = "0" - else: filter = "PASS" - else: filter = ';'.join(data['filter']) - if data['qual'] == -1: qual = "." - else: qual = str(data['qual']) - - output = [data['chrom'], - str(data['pos']+1), # change to 1-based position - data['id'], - data['ref'], - alt, - qual, - filter, - self.format_formatdata( - data['info'], self._info, separator=";"), - self.format_formatdata( - data['format'], self._format, value=False)] - - for s in self._samples: - output.append(self.format_formatdata( - data[s], self._format, key=False)) - - stream.write( "\t".join(output) + "\n" ) - - def _parse_header(self, stream): - self._lineno = 0 - for line in stream: - line = force_str(line, self.encoding) - self._lineno += 1 - if line.startswith('##'): - self.parse_header(line.strip()) - elif line.startswith('#'): - self.parse_heading(line.strip()) - self.enter_default_format() - else: - break - return line - - def _parse(self, line, stream): - # deal with files with header only - if line.startswith("##"): return - if len(line.strip()) > 0: - d = self.parse_data( line.strip() ) - if d: yield d - for line in stream: - self._lineno += 1 - if self._lines and self._lineno > self._lines: raise StopIteration - d = self.parse_data( line.strip() ) - if d: yield d - - ###################################################################################################### - # - # API follows - # - ###################################################################################################### - - def getsamples(self): - """ List of samples in VCF file """ - return self._samples - - def setsamples(self,samples): - """ List of samples in VCF file """ - self._samples = samples - - def getheader(self): - """ List of header key-value pairs (strings) """ - return self._header - - def setheader(self,header): - """ List of header key-value pairs (strings) """ - self._header = header - - def getinfo(self): - """ Dictionary of ##INFO tags, as VCF.FORMAT values """ - return self._info - - def setinfo(self,info): - """ Dictionary of ##INFO tags, as VCF.FORMAT values """ - self._info = info - - def getformat(self): - """ Dictionary of ##FORMAT tags, as VCF.FORMAT values """ - return self._format - - def setformat(self,format): - """ Dictionary of ##FORMAT tags, as VCF.FORMAT values """ - self._format = format - - def getfilter(self): - """ Dictionary of ##FILTER tags, as VCF.FORMAT values """ - return self._filter - - def setfilter(self,filter): - """ Dictionary of ##FILTER tags, as VCF.FORMAT values """ - self._filter = filter - - def setversion(self, version): - if version != 33 and version != 40: raise ValueError("Can only handle v3.3 and v4.0 VCF files") - self._version = version - - def setregions(self, regions): - self._regions = regions - - def setreference(self, ref): - """ Provide a reference sequence; a Python class supporting a fetch(chromosome, start, end) method, e.g. PySam.FastaFile """ - self._reference = ref - - def ignoreerror(self, errorstring): - try: self._ignored_errors.add(self.__dict__[errorstring]) - except KeyError: raise ValueError("Invalid error string: %s" % errorstring) - - def warnerror(self, errorstring): - try: self._warn_errors.add(self.__dict__[errorstring]) - except KeyError: raise ValueError("Invalid error string: %s" % errorstring) - - def parse(self, stream): - """ Parse a stream of VCF-formatted lines. Initializes class instance and return generator """ - last_line = self._parse_header(stream) - # now return a generator that does the actual work. In this way the pre-processing is done - # before the first piece of data is yielded - return self._parse(last_line, stream) - - def write(self, stream, datagenerator): - """ Writes a VCF file to a stream, using a data generator (or list) """ - self.write_header(stream) - self.write_heading(stream) - for data in datagenerator: self.write_data(stream,data) - - def writeheader(self, stream): - """ Writes a VCF header """ - self.write_header(stream) - self.write_heading(stream) - - def compare_calls(self, pos1, ref1, alt1, pos2, ref2, alt2): - """ Utility function: compares two calls for equality """ - # a variant should always be assigned to a unique position, one base before - # the leftmost position of the alignment gap. If this rule is implemented - # correctly, the two positions must be equal for the calls to be identical. - if pos1 != pos2: return False - # from both calls, trim rightmost bases when identical. Do this safely, i.e. - # only when the reference bases are not Ns - while len(ref1)>0 and len(alt1)>0 and ref1[-1] == alt1[-1]: - ref1 = ref1[:-1] - alt1 = alt1[:-1] - while len(ref2)>0 and len(alt2)>0 and ref2[-1] == alt2[-1]: - ref2 = ref2[:-1] - alt2 = alt2[:-1] - # now, the alternative alleles must be identical - return alt1 == alt2 - -########################################################################################################### -########################################################################################################### -## API functions added by Andreas -########################################################################################################### - - def connect(self, filename, encoding="ascii"): - '''connect to tabix file.''' - self.encoding=encoding - self.tabixfile = pysam.Tabixfile(filename, encoding=encoding) - self._parse_header(self.tabixfile.header) - - def __del__(self): - self.close() - self.tabixfile = None - - def close(self): - if self.tabixfile: - self.tabixfile.close() - self.tabixfile = None - - def fetch(self, - reference=None, - start=None, - end=None, - region=None ): - """ Parse a stream of VCF-formatted lines. - Initializes class instance and return generator """ - return self.tabixfile.fetch( - reference, - start, - end, - region, - parser = asVCFRecord(self)) - - def validate(self, record): - '''validate vcf record. - - returns a validated record. - ''' - - raise NotImplementedError("needs to be checked") - - chrom, pos = record.chrom, record.pos - - # check reference - ref = record.ref - if ref == ".": - self.error(str(record),self.MISSING_REF) - if self._version == 33: ref = get_sequence(chrom,pos,pos+1,self._reference) - else: ref = "" - else: - for c in ref: - if c not in "ACGTN": self.error(str(record),self.UNKNOWN_CHAR_IN_REF) - if "N" in ref: ref = get_sequence(chrom, - pos, - pos+len(ref), - self._reference) - - # make sure reference is sane - if self._reference: - left = max(0,self.pos-100) - faref_leftflank = get_sequence(chrom,left,self.pos+len(ref),self._reference) - faref = faref_leftflank[pos-left:] - if faref != ref: self.error(str(record),self.WRONG_REF,"(reference is %s, VCF says %s)" % (faref,ref)) - ref = faref - - # check: format fields are defined - for f in record.format: - if f not in self._format: self.error(str(record),self.FORMAT_NOT_DEFINED, f) - - # check: all filters are defined - for f in record.filter: - if f not in self._filter: self.error(str(record),self.FILTER_NOT_DEFINED, f) - - # convert v3.3 alleles - if self._version == 33: - if len(ref) != 1: self.error(str(record),self.V33_BAD_REF) - newalts = [] - have_deletions = False - for a in alt: - if len(a) == 1: a = a + ref[1:] # SNP; add trailing reference - elif a.startswith('I'): a = ref[0] + a[1:] + ref[1:] # insertion just beyond pos; add first and trailing reference - elif a.startswith('D'): # allow D and D - have_deletions = True - try: - l = int(a[1:]) # throws ValueError if sequence - if len(ref) < l: # add to reference if necessary - addns = get_sequence(chrom,pos+len(ref),pos+l,self._reference) - ref += addns - for i,na in enumerate(newalts): newalts[i] = na+addns - a = ref[l:] # new deletion, deleting pos...pos+l - except ValueError: - s = a[1:] - if len(ref) < len(s): # add Ns to reference if necessary - addns = get_sequence(chrom,pos+len(ref),pos+len(s),self._reference) - if not s.endswith(addns) and addns != 'N'*len(addns): - self.error(str(record),self.V33_UNMATCHED_DELETION, - "(deletion is %s, reference is %s)" % (a,get_sequence(chrom,pos,pos+len(s),self._reference))) - ref += addns - for i,na in enumerate(newalts): newalts[i] = na+addns - a = ref[len(s):] # new deletion, deleting from pos - else: - self.error(str(record),self.V33_BAD_ALLELE) - newalts.append(a) - alt = newalts - # deletion alleles exist, add dummy 1st reference allele, and account for leading base - if have_deletions: - if pos == 0: - # Petr Danacek's: we can't have a leading nucleotide at (1-based) position 1 - addn = get_sequence(chrom,pos+len(ref),pos+len(ref)+1,self._reference) - ref += addn - alt = [allele+addn for allele in alt] - else: - addn = get_sequence(chrom,pos-1,pos,self._reference) - ref = addn + ref - alt = [addn + allele for allele in alt] - pos -= 1 - else: - # format v4.0 -- just check for nucleotides - for allele in alt: - if not alleleRegEx.match(allele): - self.error(str(record),self.V40_BAD_ALLELE,allele) - - - # check for leading nucleotide in indel calls - for allele in alt: - if len(allele) != len(ref): - if len(allele) == 0: self.error(str(record),self.ZERO_LENGTH_ALLELE) - if ref[0].upper() != allele[0].upper() and "N" not in (ref[0]+allele[0]).upper(): - self.error(str(record),self.MISSING_INDEL_ALLELE_REF_BASE) - - # trim trailing bases in alleles - # AH: not certain why trimming this needs to be added - # disabled now for unit testing - # for i in range(1,min(len(ref),min(map(len,alt)))): - # if len(set(allele[-1].upper() for allele in alt)) > 1 or ref[-1].upper() != alt[0][-1].upper(): - # break - # ref, alt = ref[:-1], [allele[:-1] for allele in alt] - - # left-align alleles, if a reference is available - if self._leftalign and self._reference: - while left < pos: - movable = True - for allele in alt: - if len(allele) > len(ref): - longest, shortest = allele, ref - else: - longest, shortest = ref, allele - if len(longest) == len(shortest) or longest[:len(shortest)].upper() != shortest.upper(): - movable = False - if longest[-1].upper() != longest[len(shortest)-1].upper(): - movable = False - if not movable: - break - ref = ref[:-1] - alt = [allele[:-1] for allele in alt] - if min([len(allele) for allele in alt]) == 0 or len(ref) == 0: - ref = faref_leftflank[pos-left-1] + ref - alt = [faref_leftflank[pos-left-1] + allele for allele in alt] - pos -= 1 - -__all__ = [ - "VCF", "VCFRecord", ] diff --git a/setup.py b/setup.py index 3e34154..f7e6b8b 100644 --- a/setup.py +++ b/setup.py @@ -28,17 +28,17 @@ import subprocess import sys import sysconfig + from contextlib import contextmanager from setuptools import setup from cy_build import CyExtension as Extension, cy_build_ext as build_ext + try: import cython HAVE_CYTHON = True except ImportError: HAVE_CYTHON = False -IS_PYTHON3 = sys.version_info.major >= 3 - @contextmanager def changedir(path): @@ -213,9 +213,6 @@ def get_pysam_version(): dict(name="pysam.libctabixproxies", sources=[source_pattern % "tabixproxies"] + htslib_sources + os_c_files, libraries=libraries_for_pysam_module), - dict(name="pysam.libcvcf", - sources=[source_pattern % "vcf"] + htslib_sources + os_c_files, - libraries=libraries_for_pysam_module), ] common_options = dict( From 5bf72be895b850252c279a36e175831dbe0a25f3 Mon Sep 17 00:00:00 2001 From: Nicola Soranzo Date: Fri, 8 Nov 2019 17:42:02 +0000 Subject: [PATCH 06/23] Use cibuildwheel>=1.1.0 to allow specifying the `-L .` option for the auditwheel command. Introduced in https://github.com/joerick/cibuildwheel/pull/211 . Fix https://github.com/pysam-developers/pysam/issues/831 . --- .travis.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 988caef..b9e9ff5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,9 +15,9 @@ env: - secure: bTbky3Un19NAl62lix8bMLmBv9IGNhFkRXlZH+B253nYub7jwQwPQKum3ct9ea+XHJT5//uM0B8WAF6eyugpNkPQ7+S7SEH5BJuCt30nv6qvGhSO2AffZKeHEDnfW2kqGrivn87TqeomlSBlO742CD/V0wOIUwkTT9tutd+E7FU= _deploy_common: &deploy_common - if: branch = master AND type = push AND fork = false + # re-add `if: tag IS present` when wheels work properly install: - - python3 -m pip install cibuildwheel twine + - python3 -m pip install cibuildwheel>=1.1.0 twine matrix: include: @@ -28,8 +28,9 @@ matrix: services: - docker env: - - CIBW_BEFORE_BUILD="yum install -y zlib-devel bzip2-devel xz-devel && pip install -r requirements.txt" + - CIBW_BEFORE_BUILD="yum install -y zlib-devel bzip2-devel xz-devel && python -m pip install -r requirements.txt" - CIBW_ENVIRONMENT='HTSLIB_CONFIGURE_OPTIONS="--disable-libcurl"' + - CIBW_REPAIR_WHEEL_COMMAND_LINUX='auditwheel repair -L . -w {dest_dir} {wheel}' - CIBW_TEST_COMMAND='python -c "import pysam"' addons: apt: @@ -51,7 +52,7 @@ matrix: os: osx language: generic env: - - CIBW_BEFORE_BUILD="pip install -r requirements.txt" + - CIBW_BEFORE_BUILD="python -m pip install -r requirements.txt" - CIBW_ENVIRONMENT='HTSLIB_CONFIGURE_OPTIONS="--disable-libcurl"' - CIBW_TEST_COMMAND='python -c "import pysam"' addons: {} From 2bed319b72c5c15f1dcffa25468e6d70cda790ca Mon Sep 17 00:00:00 2001 From: Nicola Soranzo Date: Tue, 26 Nov 2019 09:57:44 +0000 Subject: [PATCH 07/23] Split sdist and linux deploy in 3 separate jobs The Travis job times out after 50'. --- .travis.yml | 59 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/.travis.yml b/.travis.yml index b9e9ff5..ebd2bd3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,11 @@ os: language: c +stages: + - test + - name: deploy + # if: tag IS present + env: matrix: - CONDA_PY=2.7 @@ -14,10 +19,24 @@ env: - TWINE_USERNAME=grepall - secure: bTbky3Un19NAl62lix8bMLmBv9IGNhFkRXlZH+B253nYub7jwQwPQKum3ct9ea+XHJT5//uM0B8WAF6eyugpNkPQ7+S7SEH5BJuCt30nv6qvGhSO2AffZKeHEDnfW2kqGrivn87TqeomlSBlO742CD/V0wOIUwkTT9tutd+E7FU= -_deploy_common: &deploy_common - # re-add `if: tag IS present` when wheels work properly +_cibw_common: &cibw_common + addons: {} install: - python3 -m pip install cibuildwheel>=1.1.0 twine + script: + - set -e + - cibuildwheel --output-dir dist + - twine check dist/* + # - twine upload --skip-existing dist/* + +_cibw_linux: &cibw_linux + stage: deploy + os: linux + language: python + python: '3.5' + services: + - docker + <<: *cibw_common matrix: include: @@ -25,13 +44,6 @@ matrix: os: linux language: python python: '3.5' - services: - - docker - env: - - CIBW_BEFORE_BUILD="yum install -y zlib-devel bzip2-devel xz-devel && python -m pip install -r requirements.txt" - - CIBW_ENVIRONMENT='HTSLIB_CONFIGURE_OPTIONS="--disable-libcurl"' - - CIBW_REPAIR_WHEEL_COMMAND_LINUX='auditwheel repair -L . -w {dest_dir} {wheel}' - - CIBW_TEST_COMMAND='python -c "import pysam"' addons: apt: packages: @@ -39,15 +51,28 @@ matrix: - g++ - libcurl4-openssl-dev # for libcurl support in sdist - libssl-dev # for s3 support in sdist - <<: *deploy_common + install: + - python3 -m pip install Cython twine script: - set -e - - cibuildwheel --output-dir dist - - python3 -m pip install Cython - python3 setup.py build_ext --inplace - python3 setup.py sdist - twine check dist/* -# - twine upload --skip-existing dist/* + # - twine upload --skip-existing dist/* + - <<: *cibw_linux + env: + - CIBW_BUILD="*_x86_64" + - CIBW_BEFORE_BUILD="yum install -y zlib-devel bzip2-devel xz-devel && python -m pip install -r requirements.txt" + - CIBW_ENVIRONMENT='HTSLIB_CONFIGURE_OPTIONS="--disable-libcurl"' + - CIBW_REPAIR_WHEEL_COMMAND_LINUX='auditwheel repair -L . -w {dest_dir} {wheel}' + - CIBW_TEST_COMMAND='python -c "import pysam"' + - <<: *cibw_linux + env: + - CIBW_BUILD="*_i686" + - CIBW_BEFORE_BUILD="yum install -y zlib-devel bzip2-devel xz-devel && python -m pip install -r requirements.txt" + - CIBW_ENVIRONMENT='HTSLIB_CONFIGURE_OPTIONS="--disable-libcurl"' + - CIBW_REPAIR_WHEEL_COMMAND_LINUX='auditwheel repair -L . -w {dest_dir} {wheel}' + - CIBW_TEST_COMMAND='python -c "import pysam"' - stage: deploy os: osx language: generic @@ -55,13 +80,7 @@ matrix: - CIBW_BEFORE_BUILD="python -m pip install -r requirements.txt" - CIBW_ENVIRONMENT='HTSLIB_CONFIGURE_OPTIONS="--disable-libcurl"' - CIBW_TEST_COMMAND='python -c "import pysam"' - addons: {} - <<: *deploy_common - script: - - set -e - - cibuildwheel --output-dir dist - - twine check dist/* -# - twine upload --skip-existing dist/* + <<: *cibw_common addons: apt: From 179466d4caa1d79048251f7e1c0aa30c36e5759c Mon Sep 17 00:00:00 2001 From: Mark Amery Date: Tue, 14 Jan 2020 13:39:38 +0000 Subject: [PATCH 08/23] Bump minimum Cython version This is the version @pm67nz indicates is needed for creating a build from source in https://github.com/pysam-developers/pysam/issues/860#issuecomment-572451657, so I figure we might as well enforce it everywhere? --- requirements.txt | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 6e8fc44..f937d1c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -cython>=0.24.1 +cython>=0.29.12 diff --git a/setup.py b/setup.py index 4c97e87..427a97f 100644 --- a/setup.py +++ b/setup.py @@ -443,7 +443,7 @@ def get_pysam_version(): 'classifiers': [_f for _f in classifiers.split("\n") if _f], 'url': "https://github.com/pysam-developers/pysam", 'packages': package_list, - 'requires': ['cython (>=0.21)'], + 'requires': ['cython (>=0.29.12)'], 'ext_modules': [Extension(**opts) for opts in modules], 'cmdclass': cmdclass, 'package_dir': package_dirs, From 3889c5efd540cd36653d07b17ab51bc43966b27a Mon Sep 17 00:00:00 2001 From: lltw Date: Wed, 15 Jan 2020 21:24:38 +0100 Subject: [PATCH 09/23] Fix add_meta function in libcbcf.pyx, so meta-information lines in header added with it have double-quoting rules in accordance to rules specified in VCF4.2 and VCF4.3 specifications --- pysam/libcbcf.pyx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pysam/libcbcf.pyx b/pysam/libcbcf.pyx index 37f74f9..c0cee5c 100644 --- a/pysam/libcbcf.pyx +++ b/pysam/libcbcf.pyx @@ -2124,6 +2124,7 @@ cdef class VariantHeader(object): if self.ptr.dirty: bcf_hdr_sync(self.ptr) + def add_meta(self, key, value=None, items=None): """Add metadata to this header""" if not ((value is not None) ^ (items is not None)): @@ -2140,11 +2141,16 @@ cdef class VariantHeader(object): hrec.value = strdup(force_bytes(value)) else: for key, value in items: + + quoted = True + if key in set(("ID", "Number", "Type")): + quoted = False + key = force_bytes(key) bcf_hrec_add_key(hrec, key, len(key)) value = force_bytes(str(value)) - quoted = strpbrk(value, ' ;,"\t<>') != NULL + bcf_hrec_set_val(hrec, hrec.nkeys-1, value, len(value), quoted) except: bcf_hrec_destroy(hrec) @@ -4451,3 +4457,4 @@ cdef class VariantFile(HTSFile): # potentially unnecessary optimization that also sets max_unpack if not include_samples: self.drop_samples = True + From b6b5ce6a1e2203fb7495879777bc0c266aa41c67 Mon Sep 17 00:00:00 2001 From: Nicola Soranzo Date: Wed, 15 Jan 2020 22:30:07 +0000 Subject: [PATCH 10/23] Restore twine upload on tag --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index ebd2bd3..30c7c97 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ language: c stages: - test - name: deploy - # if: tag IS present + if: tag IS present env: matrix: @@ -27,7 +27,7 @@ _cibw_common: &cibw_common - set -e - cibuildwheel --output-dir dist - twine check dist/* - # - twine upload --skip-existing dist/* + - twine upload --skip-existing dist/* _cibw_linux: &cibw_linux stage: deploy @@ -58,7 +58,7 @@ matrix: - python3 setup.py build_ext --inplace - python3 setup.py sdist - twine check dist/* - # - twine upload --skip-existing dist/* + - twine upload --skip-existing dist/* - <<: *cibw_linux env: - CIBW_BUILD="*_x86_64" From 9ff3144facb014e65d4f0f16a3515906794aec2e Mon Sep 17 00:00:00 2001 From: Andreas Heger Date: Wed, 15 Jan 2020 22:12:18 +0000 Subject: [PATCH 11/23] {AH} add release notes and bump version to 0.15.4 --- doc/release.rst | 17 +++++++++++++++++ pysam/version.py | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/doc/release.rst b/doc/release.rst index ee1875b..82d4b70 100644 --- a/doc/release.rst +++ b/doc/release.rst @@ -2,6 +2,23 @@ Release notes ============= +Release 0.15.4 +============== + +Bugfix release. Principal reason for release is to update cython +version in order to fix pip install pysam with python 3.8. + +* [#863] Force arg to bytes to support non-ASCII encoding +* [#875] Bump minimum Cython version +* [#868] Prevent segfault on Python 2.7 AlignedSegment.compare(other=None) +* [#867] Fix wheel building on TravisCI +* [#863] Force arg to bytes to support non-ASCII encoding +* [#799] disambiguate interpretation of bcf_read return code +* [#841] Fix silent truncation of FASTQ with bad q strings +* [#846] Prevent segmentation fault on ID, when handling malformed records +* [#829] Run configure with the correct CC/CFLAGS/LDFLAGS env vars + + Release 0.15.3 ============== diff --git a/pysam/version.py b/pysam/version.py index 49afa17..da58834 100644 --- a/pysam/version.py +++ b/pysam/version.py @@ -1,5 +1,5 @@ # pysam versioning information -__version__ = "0.15.3" +__version__ = "0.15.4" # TODO: upgrade number __samtools_version__ = "1.9" From c818db502b8f8334e7bf29060685114dd9af9530 Mon Sep 17 00:00:00 2001 From: Andreas Heger Date: Sat, 18 Jan 2020 21:19:22 +0000 Subject: [PATCH 12/23] {AH} import utils with package name --- doc/release.rst | 3 +++ pysam/bcftools.py | 2 +- pysam/samtools.py | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/release.rst b/doc/release.rst index 82d4b70..07d099d 100644 --- a/doc/release.rst +++ b/doc/release.rst @@ -8,6 +8,9 @@ Release 0.15.4 Bugfix release. Principal reason for release is to update cython version in order to fix pip install pysam with python 3.8. +* [#879] Fix add_meta function in libcbcf.pyx, so meta-information + lines in header added with this function have double-quoting rules + in accordance to rules specified in VCF4.2 and VCF4.3 specifications * [#863] Force arg to bytes to support non-ASCII encoding * [#875] Bump minimum Cython version * [#868] Prevent segfault on Python 2.7 AlignedSegment.compare(other=None) diff --git a/pysam/bcftools.py b/pysam/bcftools.py index ab891d4..9f4ce0e 100644 --- a/pysam/bcftools.py +++ b/pysam/bcftools.py @@ -1,4 +1,4 @@ -from utils import PysamDispatcher +from pysam.utils import PysamDispatcher BCFTOOLS_DISPATCH = [ "index", diff --git a/pysam/samtools.py b/pysam/samtools.py index f81fe8f..da3044d 100644 --- a/pysam/samtools.py +++ b/pysam/samtools.py @@ -1,4 +1,4 @@ -from utils import PysamDispatcher +from pysam.utils import PysamDispatcher # samtools command line options to export in python # From 3c7bb82d1623033397ade68520a730e8a1b1cc02 Mon Sep 17 00:00:00 2001 From: Kevin Jacobs Date: Wed, 22 Jan 2020 07:40:23 -0500 Subject: [PATCH 13/23] [KBJ] Streamline HTSFile and other small cleanups --- pysam/Pileup.py | 282 ----------------------------------- pysam/libcalignedsegment.pyx | 2 +- pysam/libcbgzf.pyx | 2 +- pysam/libchtslib.pyx | 106 +++++-------- 4 files changed, 37 insertions(+), 355 deletions(-) delete mode 100644 pysam/Pileup.py diff --git a/pysam/Pileup.py b/pysam/Pileup.py deleted file mode 100644 index 1fe05ec..0000000 --- a/pysam/Pileup.py +++ /dev/null @@ -1,282 +0,0 @@ -'''Tools for working with files in the samtools pileup -c format.''' -import collections -import pysam - -PileupSubstitution = collections.namedtuple("PileupSubstitution", - " ".join(( - "chromosome", - "pos", - "reference_base", - "genotype", - "consensus_quality", - "snp_quality", - "mapping_quality", - "coverage", - "read_bases", - "base_qualities"))) - -PileupIndel = collections.namedtuple("PileupIndel", - " ".join(( - "chromosome", - "pos", - "reference_base", - "genotype", - "consensus_quality", - "snp_quality", - "mapping_quality", - "coverage", - "first_allele", - "second_allele", - "reads_first", - "reads_second", - "reads_diff"))) - - -def iterate(infile): - '''iterate over ``samtools pileup -c`` formatted file. - - *infile* can be any iterator over a lines. - - The function yields named tuples of the type :class:`pysam.Pileup.PileupSubstitution` - or :class:`pysam.Pileup.PileupIndel`. - - .. note:: - - The parser converts to 0-based coordinates - ''' - - conv_subst = (str, lambda x: int(x) - 1, str, - str, int, int, int, int, str, str) - conv_indel = (str, lambda x: int(x) - 1, str, str, int, - int, int, int, str, str, int, int, int) - - for line in infile: - d = line[:-1].split() - if d[2] == "*": - try: - yield PileupIndel(*[x(y) for x, y in zip(conv_indel, d)]) - except TypeError: - raise pysam.SamtoolsError("parsing error in line: `%s`" % line) - else: - try: - yield PileupSubstitution(*[x(y) for x, y in zip(conv_subst, d)]) - except TypeError: - raise pysam.SamtoolsError("parsing error in line: `%s`" % line) - - -ENCODE_GENOTYPE = { - 'A': 'A', 'C': 'C', 'G': 'G', 'T': 'T', - 'AA': 'A', 'CC': 'C', 'GG': 'G', 'TT': 'T', 'UU': 'U', - 'AG': 'r', 'GA': 'R', - 'CT': 'y', 'TC': 'Y', - 'AC': 'm', 'CA': 'M', - 'GT': 'k', 'TG': 'K', - 'CG': 's', 'GC': 'S', - 'AT': 'w', 'TA': 'W', -} - -DECODE_GENOTYPE = { - 'A': 'AA', - 'C': 'CC', - 'G': 'GG', - 'T': 'TT', - 'r': 'AG', 'R': 'AG', - 'y': 'CT', 'Y': 'CT', - 'm': 'AC', 'M': 'AC', - 'k': 'GT', 'K': 'GT', - 's': 'CG', 'S': 'CG', - 'w': 'AT', 'W': 'AT', -} - -# ------------------------------------------------------------ - - -def encodeGenotype(code): - '''encode genotypes like GG, GA into a one-letter code. - The returned code is lower case if code[0] < code[1], otherwise - it is uppercase. - ''' - return ENCODE_GENOTYPE[code.upper()] - - -def decodeGenotype(code): - '''decode single letter genotypes like m, M into two letters. - This is the reverse operation to :meth:`encodeGenotype`. - ''' - return DECODE_GENOTYPE[code] - - -def translateIndelGenotypeFromVCF(vcf_genotypes, ref): - '''translate indel from vcf to pileup format.''' - - # indels - def getPrefix(s1, s2): - '''get common prefix of strings s1 and s2.''' - n = min(len(s1), len(s2)) - for x in range(n): - if s1[x] != s2[x]: - return s1[:x] - return s1[:n] - - def getSuffix(s1, s2): - '''get common sufix of strings s1 and s2.''' - n = min(len(s1), len(s2)) - if s1[-1] != s2[-1]: - return "" - for x in range(-2, -n - 1, -1): - if s1[x] != s2[x]: - return s1[x + 1:] - return s1[-n:] - - def getGenotype(variant, ref): - - if variant == ref: - return "*", 0 - - if len(ref) > len(variant): - # is a deletion - if ref.startswith(variant): - return "-%s" % ref[len(variant):], len(variant) - 1 - elif ref.endswith(variant): - return "-%s" % ref[:-len(variant)], -1 - else: - prefix = getPrefix(ref, variant) - suffix = getSuffix(ref, variant) - shared = len(prefix) + len(suffix) - len(variant) - # print "-", prefix, suffix, ref, variant, shared, len(prefix), len(suffix), len(ref) - if shared < 0: - raise ValueError() - return "-%s" % ref[len(prefix):-(len(suffix) - shared)], len(prefix) - 1 - - elif len(ref) < len(variant): - # is an insertion - if variant.startswith(ref): - return "+%s" % variant[len(ref):], len(ref) - 1 - elif variant.endswith(ref): - return "+%s" % variant[:len(ref)], 0 - else: - prefix = getPrefix(ref, variant) - suffix = getSuffix(ref, variant) - shared = len(prefix) + len(suffix) - len(ref) - if shared < 0: - raise ValueError() - - return "+%s" % variant[len(prefix):-(len(suffix) - shared)], len(prefix) - else: - assert 0, "snp?" - - # in pileup, the position refers to the base - # after the coordinate, hence subtract 1 - # pos -= 1 - - genotypes, offsets = [], [] - is_error = True - - for variant in vcf_genotypes: - try: - g, offset = getGenotype(variant, ref) - except ValueError: - break - - genotypes.append(g) - if g != "*": - offsets.append(offset) - - else: - is_error = False - - if is_error: - raise ValueError() - - assert len(set(offsets)) == 1, "multiple offsets for indel" - offset = offsets[0] - - genotypes = "/".join(genotypes) - return genotypes, offset - - -def vcf2pileup(vcf, sample): - '''convert vcf record to pileup record.''' - - chromosome = vcf.contig - pos = vcf.pos - reference = vcf.ref - allelles = [reference] + vcf.alt - - data = vcf[sample] - - # get genotype - genotypes = data["GT"] - if len(genotypes) > 1: - raise ValueError("only single genotype per position, %s" % (str(vcf))) - - genotypes = genotypes[0] - - # not a variant - if genotypes[0] == ".": - return None - - genotypes = [allelles[int(x)] for x in genotypes if x != "/"] - - # snp_quality is "genotype quality" - snp_quality = consensus_quality = data.get("GQ", [0])[0] - mapping_quality = vcf.info.get("MQ", [0])[0] - coverage = data.get("DP", 0) - - if len(reference) > 1 or max([len(x) for x in vcf.alt]) > 1: - # indel - genotype, offset = translateIndelGenotypeFromVCF(genotypes, reference) - - return PileupIndel(chromosome, - pos + offset, - "*", - genotype, - consensus_quality, - snp_quality, - mapping_quality, - coverage, - genotype, - "<" * len(genotype), - 0, - 0, - 0) - - else: - genotype = encodeGenotype("".join(genotypes)) - read_bases = "" - base_qualities = "" - - return PileupSubstitution(chromosome, pos, reference, - genotype, consensus_quality, - snp_quality, mapping_quality, - coverage, read_bases, - base_qualities) - - -def iterate_from_vcf(infile, sample): - '''iterate over a vcf-formatted file. - - *infile* can be any iterator over a lines. - - The function yields named tuples of the type - :class:`pysam.Pileup.PileupSubstitution` or - :class:`pysam.Pileup.PileupIndel`. - - Positions without a snp will be skipped. - - This method is wasteful and written to support same legacy code - that expects samtools pileup output. - - Better use the vcf parser directly. - - ''' - vcf = pysam.VCF() - vcf.connect(infile) - - if sample not in vcf.getsamples(): - raise KeyError("sample %s not vcf file") - - for row in vcf.fetch(): - result = vcf2pileup(row, sample) - if result: - yield result diff --git a/pysam/libcalignedsegment.pyx b/pysam/libcalignedsegment.pyx index 8feb56c..91d8053 100644 --- a/pysam/libcalignedsegment.pyx +++ b/pysam/libcalignedsegment.pyx @@ -298,7 +298,7 @@ cdef inline uint8_t get_btag_typecode(value, min_value=None, max_value=None): else: # Note: hex strings (H) are not supported yet if t is not bytes: - value = value.encode('ascii') + value = value.encode('utf-8') if len(value) == 1: typecode = b'A' else: diff --git a/pysam/libcbgzf.pyx b/pysam/libcbgzf.pyx index 01b792b..fd1d881 100644 --- a/pysam/libcbgzf.pyx +++ b/pysam/libcbgzf.pyx @@ -27,7 +27,7 @@ __all__ = ["BGZFile"] BUFFER_SIZE = io.DEFAULT_BUFFER_SIZE -cdef class BGZFile(object): +cdef class BGZFile(io.IOBase): """The BGZFile class simulates most of the methods of a file object with the exception of the truncate() method. diff --git a/pysam/libchtslib.pyx b/pysam/libchtslib.pyx index 07f455d..f66e53f 100644 --- a/pysam/libchtslib.pyx +++ b/pysam/libchtslib.pyx @@ -68,7 +68,7 @@ cpdef get_verbosity(): ## HFile wrapper class ######################################################################## -cdef class HFile(object): +cdef class HFile(io.IOBase): cdef hFILE *fp cdef readonly object name, mode @@ -297,11 +297,10 @@ cdef class HFile(object): ## HTSFile wrapper class (base class for AlignmentFile and VariantFile) ######################################################################## -cdef class HTSFile(object): +cdef class HTSFile(io.IOBase): """ Base class for HTS file types """ - def __cinit__(self, *args, **kwargs): self.htsfile = NULL self.threads = 1 @@ -392,56 +391,21 @@ cdef class HTSFile(object): finally: free(desc) - @property - def is_open(self): - """return True if HTSFile is open and in a valid state.""" - return self.htsfile != NULL - - @property - def is_closed(self): - """return True if HTSFile is closed.""" - return self.htsfile == NULL - @property def closed(self): """return True if HTSFile is closed.""" return self.htsfile == NULL @property - def is_write(self): + def writable(self): """return True if HTSFile is open for writing""" return self.htsfile != NULL and self.htsfile.is_write != 0 @property - def is_read(self): + def readable(self): """return True if HTSFile is open for reading""" return self.htsfile != NULL and self.htsfile.is_write == 0 - @property - def is_sam(self): - """return True if HTSFile is reading or writing a SAM alignment file""" - return self.htsfile != NULL and self.htsfile.format.format == sam - - @property - def is_bam(self): - """return True if HTSFile is reading or writing a BAM alignment file""" - return self.htsfile != NULL and self.htsfile.format.format == bam - - @property - def is_cram(self): - """return True if HTSFile is reading or writing a BAM alignment file""" - return self.htsfile != NULL and self.htsfile.format.format == cram - - @property - def is_vcf(self): - """return True if HTSFile is reading or writing a VCF variant file""" - return self.htsfile != NULL and self.htsfile.format.format == vcf - - @property - def is_bcf(self): - """return True if HTSFile is reading or writing a BCF variant file""" - return self.htsfile != NULL and self.htsfile.format.format == bcf - def reset(self): """reset file position to beginning of file just after the header. @@ -508,42 +472,42 @@ cdef class HTSFile(object): if htsfile != NULL: hts_set_threads(htsfile, threads) return htsfile - else: - if isinstance(self.filename, int): - fd = self.filename - else: - fd = self.filename.fileno() - if self.duplicate_filehandle: - dup_fd = dup(fd) - else: - dup_fd = fd + if isinstance(self.filename, int): + fd = self.filename + else: + fd = self.filename.fileno() - # Replicate mode normalization done in hts_open_format - smode = self.mode.replace(b'b', b'').replace(b'c', b'') - if b'b' in self.mode: - smode += b'b' - elif b'c' in self.mode: - smode += b'c' - cmode = smode + if self.duplicate_filehandle: + dup_fd = dup(fd) + else: + dup_fd = fd - hfile = hdopen(dup_fd, cmode) - if hfile == NULL: - raise IOError('Cannot create hfile') + # Replicate mode normalization done in hts_open_format + smode = self.mode.replace(b'b', b'').replace(b'c', b'') + if b'b' in self.mode: + smode += b'b' + elif b'c' in self.mode: + smode += b'c' + cmode = smode - try: - # filename.name can be an int - filename = str(self.filename.name) - except AttributeError: - filename = ''.format(fd) + hfile = hdopen(dup_fd, cmode) + if hfile == NULL: + raise IOError('Cannot create hfile') - filename = encode_filename(filename) - cfilename = filename - with nogil: - htsfile = hts_hopen(hfile, cfilename, cmode) - if htsfile != NULL: - hts_set_threads(htsfile, threads) - return htsfile + try: + # filename.name can be an int + filename = str(self.filename.name) + except AttributeError: + filename = ''.format(fd) + + filename = encode_filename(filename) + cfilename = filename + with nogil: + htsfile = hts_hopen(hfile, cfilename, cmode) + if htsfile != NULL: + hts_set_threads(htsfile, threads) + return htsfile def add_hts_options(self, format_options=None): """Given a list of key=value format option strings, add them to an open htsFile From d6020e2573df8616200ef5914ea2863b5ea8571f Mon Sep 17 00:00:00 2001 From: John Marshall Date: Wed, 5 Feb 2020 11:36:38 +0000 Subject: [PATCH 14/23] Don't use ancient `samtools import` command The legacy import command was broken in Samtools 1.10 (hat tip @mr-c) and has been removed from future Samtools (see samtools/samtools#1185). Use the equivalent `samtools view` command instead. Update 00README.txt to the current text in samtools/examples/00README.txt that it was copied from, and delete the samtools command samples as they are not relevant for pysam. --- tests/00README.txt | 13 ++----------- tests/pysam_data/Makefile | 6 +++--- tests/samtools_test.py | 2 +- 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/tests/00README.txt b/tests/00README.txt index 67b8689..6e60917 100644 --- a/tests/00README.txt +++ b/tests/00README.txt @@ -1,10 +1,10 @@ File ex1.fa contains two sequences cut from the human genome -build36. They were exatracted with command: +build36. They were extracted with command: samtools faidx human_b36.fa 2:2043966-2045540 20:67967-69550 Sequence names were changed manually for simplicity. File ex1.sam.gz -contains MAQ alignments exatracted with: +contains MAQ alignments extracted with: (samtools view NA18507_maq.bam 2:2044001-2045500; samtools view NA18507_maq.bam 20:68001-69500) @@ -12,15 +12,6 @@ contains MAQ alignments exatracted with: and processed with `samtools fixmate' to make it self-consistent as a standalone alignment. -To try samtools, you may run the following commands: - - samtools faidx ex1.fa # index the reference FASTA - samtools import ex1.fa.fai ex1.sam.gz ex1.bam # SAM->BAM - samtools index ex1.bam # index BAM - samtools tview ex1.bam ex1.fa # view alignment - samtools pileup -cf ex1.fa ex1.bam # pileup and consensus - samtools pileup -cf ex1.fa -t ex1.fa.fai ex1.sam.gz - In order for the script pysam_test.py to work, you will need pysam in your PYTHONPATH. diff --git a/tests/pysam_data/Makefile b/tests/pysam_data/Makefile index bae50db..cf39f0d 100644 --- a/tests/pysam_data/Makefile +++ b/tests/pysam_data/Makefile @@ -32,7 +32,7 @@ with_md.sam.gz: ex2.bam ex1.fa samtools calmd --output-fmt BAM $^ > $@ #%.bam: %.sam ex1.fa.fai -# samtools import ex1.fa.fai $< $@ +# samtools view -bo $@ -t ex1.fa.fai $< uncompressed.bam: ex2.sam samtools view -buS $< > $@ @@ -53,7 +53,7 @@ ex1.fa.fai:ex1.fa samtools faidx ex1.fa ex1.bam:ex1.sam.gz ex1.fa.fai - samtools import ex1.fa.fai ex1.sam.gz ex1.bam + samtools view -bo ex1.bam -t ex1.fa.fai ex1.sam.gz %.bam.bai:%.bam samtools index $< @@ -73,7 +73,7 @@ empty.bam: ex2.sam example_unmapped_reads_no_sq.bam: example_unmapped_reads_no_sq.sam touch tmp.list - samtools import tmp.list $< $@ + samtools view -bo $@ -t tmp.list $< rm -f tmp.list example_bai.bam: ex1.bam diff --git a/tests/samtools_test.py b/tests/samtools_test.py index b20a869..4f75499 100644 --- a/tests/samtools_test.py +++ b/tests/samtools_test.py @@ -100,7 +100,7 @@ class SamtoolsTest(unittest.TestCase): "cat -o %(out)s_ex1.cat.bam ex1.bam ex1.bam", "targetcut ex1.bam > %(out)s_ex1.targetcut", "phase ex1.bam > %(out)s_ex1.phase", - "import ex1.fa.fai ex1.sam.gz %(out)s_ex1.bam", + "view -bt ex1.fa.fai ex1.sam.gz > %(out)s_ex1.bam", "bam2fq ex1.bam > %(out)s_ex1.bam2fq", # TODO: not the same # "pad2unpad -T ex1.fa ex2.bam > %(out)s_ex2.unpad", From 53b115619f63ea1c938a77f326ef8b0afbe97c90 Mon Sep 17 00:00:00 2001 From: John Marshall Date: Thu, 20 Feb 2020 22:17:35 +0000 Subject: [PATCH 15/23] Update test cases with invalid SAM headers Several ancient test cases fail with samtools 1.10, as its improved header facilities require greater baseline validity from input data: Remove TestDeNovoConstructionUserTags and example_user_header.sam. These were added in 748ccc8d74dadbfb539b5cbf7e8229edb7228add due to https://code.google.com/archive/p/pysam/issues/96 but this was misguided: only `@HD/@SQ/@RG/@PG/@CO` have ever been valid in SAM. Replace tabs with spaces in rg_with_tab.sam. Samtools now parses and requires that all tabs do actually delimit header fields, so pysam's CL-to-end-of-line extension is no longer testable. Fix whitespace editing error in example_empty_with_header.sam header. --- tests/AlignmentFile_test.py | 17 +---------------- tests/pysam_data/example_empty_with_header.sam | 2 +- tests/pysam_data/example_user_header.sam | 8 -------- tests/pysam_data/rg_with_tab.sam | 2 +- 4 files changed, 3 insertions(+), 26 deletions(-) delete mode 100644 tests/pysam_data/example_user_header.sam diff --git a/tests/AlignmentFile_test.py b/tests/AlignmentFile_test.py index e0be5ef..9c2c247 100644 --- a/tests/AlignmentFile_test.py +++ b/tests/AlignmentFile_test.py @@ -1382,21 +1382,6 @@ def testBAMWholeFile(self): os.unlink(tmpfilename) -class TestDeNovoConstructionUserTags(TestDeNovoConstruction): - - '''test de novo construction with a header that contains lower-case tags.''' - - header = {'HD': {'VN': '1.0'}, - 'SQ': [{'LN': 1575, 'SN': 'chr1'}, - {'LN': 1584, 'SN': 'chr2'}], - 'x1': {'A': 2, 'B': 5}, - 'x3': {'A': 6, 'B': 5}, - 'x2': {'A': 4, 'B': 5}} - - bamfile = os.path.join(BAM_DATADIR, "example_user_header.bam") - samfile = os.path.join(BAM_DATADIR, "example_user_header.sam") - - class TestEmptyHeader(unittest.TestCase): '''see issue 84.''' @@ -1454,7 +1439,7 @@ def testHeader(self): 'ID': 'bwa', 'VN': '0.7.9a-r786', 'CL': 'bwa mem -p -t 8 -M -R ' - '@RG\tID:None\tSM:None\t/mnt/data/hg19.fa\t' + '@RG ID:None SM:None /mnt/data/hg19.fa ' '/mnt/analysis/default-0.fastq'}]}) diff --git a/tests/pysam_data/example_empty_with_header.sam b/tests/pysam_data/example_empty_with_header.sam index 60f088e..3764780 100644 --- a/tests/pysam_data/example_empty_with_header.sam +++ b/tests/pysam_data/example_empty_with_header.sam @@ -1 +1 @@ -@HD VN:1.3 SO:coordinate +@HD VN:1.3 SO:coordinate diff --git a/tests/pysam_data/example_user_header.sam b/tests/pysam_data/example_user_header.sam deleted file mode 100644 index cebe71d..0000000 --- a/tests/pysam_data/example_user_header.sam +++ /dev/null @@ -1,8 +0,0 @@ -@HD VN:1.0 -@SQ SN:chr1 LN:1575 -@SQ SN:chr2 LN:1584 -@x1 A:2 B:5 -@x2 A:4 B:5 -@x3 A:6 B:5 -read_28833_29006_6945 99 chr1 33 20 10M1D25M = 200 167 AGCTTAGCTAGCTACCTATATCTTGGTCTTGGCCG <<<<<<<<<<<<<<<<<<<<<:<9/,&,22;;<<< NM:i:1 RG:Z:L1 -read_28701_28881_323b 147 chr2 88 30 35M = 500 412 ACCTATATCTTGGCCTTGGCCGATGCGGCCTTGCA <<<<<;<<<<7;:<<<6;<<<<<<<<<<<<7<<<< MF:i:18 RG:Z:L2 diff --git a/tests/pysam_data/rg_with_tab.sam b/tests/pysam_data/rg_with_tab.sam index d2cb7bb..2420921 100644 --- a/tests/pysam_data/rg_with_tab.sam +++ b/tests/pysam_data/rg_with_tab.sam @@ -1,6 +1,6 @@ @SQ SN:chr1 LN:1575 @SQ SN:chr2 LN:1584 -@PG ID:bwa PN:bwa VN:0.7.9a-r786 CL:bwa mem -p -t 8 -M -R @RG ID:None SM:None /mnt/data/hg19.fa /mnt/analysis/default-0.fastq +@PG ID:bwa PN:bwa VN:0.7.9a-r786 CL:bwa mem -p -t 8 -M -R @RG ID:None SM:None /mnt/data/hg19.fa /mnt/analysis/default-0.fastq EAS56_57:6:190:289:82 69 chr1 100 0 * = 100 0 CTCAAGGTTGTTGCAAGGGGGTCTATGTGAACAAA <<<7<<<;<<<<<<<<8;;<7;4<;<;;;;;94<; MF:i:192 EAS56_57:6:190:289:82 137 chr1 100 73 35M = 100 0 AGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCAC <<<<<<;<<<<<<<<<<;<<;<<<<;8<6;9;;2; MF:i:64 Aq:i:0 NM:i:0 UQ:i:0 H0:i:1 H1:i:0 EAS51_64:3:190:727:308 99 chr1 103 99 35M = 263 195 GGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGG <<<<<<<<<<<<<<<<<<<<<<<<<<<::<<<844 MF:i:18 Aq:i:73 NM:i:0 UQ:i:0 H0:i:1 H1:i:0 From 81f4a1500ddf92554c7ac376b8490b467c08f706 Mon Sep 17 00:00:00 2001 From: John Marshall Date: Thu, 20 Feb 2020 23:54:08 +0000 Subject: [PATCH 16/23] Ensure samtools commands don't add `@PG` headers Work around the behaviour change in Samtools 1.10 whereby commands that output SAM/BAM/CRAM now default to adding their own `@PG` headers. Use GNU Make functions to probe the usage display for the existence of a --no-PG option, to work with either <= 1.9 or >= 1.10. --- tests/pysam_data/Makefile | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/tests/pysam_data/Makefile b/tests/pysam_data/Makefile index cf39f0d..3921e8a 100644 --- a/tests/pysam_data/Makefile +++ b/tests/pysam_data/Makefile @@ -3,6 +3,7 @@ BAM=$(SAM:%.sam=%.bam) BAI=$(BAM:%.bam=%.bam.bai) CRAM=ex1.cram ex2.cram ex3.cram CRAI=$(CRAM:%.cram=%.cram.crai) +NO_PG:=$(findstring --no-PG,$(shell samtools view)) # ex2.bam - bam file without index @@ -26,22 +27,22 @@ all: ex1.pileup.gz \ # ex2.sam - as ex1.sam, but with header ex2.sam.gz: ex1.bam ex1.bam.bai - samtools view -h ex1.bam | gzip > ex2.sam.gz + samtools view $(NO_PG) -h ex1.bam | gzip > ex2.sam.gz with_md.sam.gz: ex2.bam ex1.fa - samtools calmd --output-fmt BAM $^ > $@ + samtools calmd $(NO_PG) --output-fmt BAM $^ > $@ #%.bam: %.sam ex1.fa.fai -# samtools view -bo $@ -t ex1.fa.fai $< +# samtools view $(NO_PG) -bo $@ -t ex1.fa.fai $< uncompressed.bam: ex2.sam - samtools view -buS $< > $@ + samtools view $(NO_PG) -buS $< > $@ %.bam: %.sam - samtools view -bS $< > $@ + samtools view $(NO_PG) -bS $< > $@ %.cram: %.sam - samtools view -bC -T ex1.fa $< > $@ + samtools view $(NO_PG) -bC -T ex1.fa $< > $@ %.cram.crai: %.cram samtools index $< @@ -53,7 +54,7 @@ ex1.fa.fai:ex1.fa samtools faidx ex1.fa ex1.bam:ex1.sam.gz ex1.fa.fai - samtools view -bo ex1.bam -t ex1.fa.fai ex1.sam.gz + samtools view $(NO_PG) -bo ex1.bam -t ex1.fa.fai ex1.sam.gz %.bam.bai:%.bam samtools index $< @@ -69,11 +70,11 @@ ex1_csi.bam: ex1.bam samtools index -c ex1_csi.bam empty.bam: ex2.sam - grep "^@" $< | samtools view -Sb - > $@ + grep "^@" $< | samtools view $(NO_PG) -Sb - > $@ example_unmapped_reads_no_sq.bam: example_unmapped_reads_no_sq.sam touch tmp.list - samtools view -bo $@ -t tmp.list $< + samtools view $(NO_PG) -bo $@ -t tmp.list $< rm -f tmp.list example_bai.bam: ex1.bam From 78a4dc5026a20b3ac4cda978c22e0e6b479bc630 Mon Sep 17 00:00:00 2001 From: John Marshall Date: Fri, 21 Feb 2020 00:36:25 +0000 Subject: [PATCH 17/23] Use correct NM values in test data When converting to CRAM, Samtools 1.10 now preserves incorrect NM values in its input data, whereas previous versions would effectively correct them. Change the NM values in ex3.sam to be correct to avoid this difference between samtools versions, and adjust the SAM/BAM test cases accordingly. --- tests/AlignmentFile_test.py | 6 +++--- tests/pysam_data/ex3.sam | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/AlignmentFile_test.py b/tests/AlignmentFile_test.py index 9c2c247..6a9eca6 100644 --- a/tests/AlignmentFile_test.py +++ b/tests/AlignmentFile_test.py @@ -177,9 +177,9 @@ def testARqqual(self): def testPresentOptionalFields(self): self.assertEqual( - self.reads[0].opt('NM'), 1, + self.reads[0].opt('NM'), 22, "optional field mismatch in read 1, NM: %s != %s" % - (self.reads[0].opt('NM'), 1)) + (self.reads[0].opt('NM'), 22)) self.assertEqual( self.reads[0].opt('RG'), 'L1', "optional field mismatch in read 1, RG: %s != %s" % @@ -205,7 +205,7 @@ def testPairedBools(self): def testTags(self): self.assertEqual(self.reads[0].tags, - [('NM', 1), ('RG', 'L1'), + [('NM', 22), ('RG', 'L1'), ('PG', 'P1'), ('XT', 'U')]) self.assertEqual(self.reads[1].tags, [('MF', 18), ('RG', 'L2'), diff --git a/tests/pysam_data/ex3.sam b/tests/pysam_data/ex3.sam index 7a09188..c575c86 100644 --- a/tests/pysam_data/ex3.sam +++ b/tests/pysam_data/ex3.sam @@ -7,7 +7,7 @@ @PG ID:P2 VN:1.1 @CO this is a comment @CO this is another comment -read_28833_29006_6945 99 chr1 33 20 10M1D25M = 200 167 AGCTTAGCTAGCTACCTATATCTTGGTCTTGGCCG <<<<<<<<<<<<<<<<<<<<<:<9/,&,22;;<<< NM:i:1 RG:Z:L1 PG:Z:P1 XT:A:U +read_28833_29006_6945 99 chr1 33 20 10M1D25M = 200 167 AGCTTAGCTAGCTACCTATATCTTGGTCTTGGCCG <<<<<<<<<<<<<<<<<<<<<:<9/,&,22;;<<< NM:i:22 RG:Z:L1 PG:Z:P1 XT:A:U read_28701_28881_323b 147 chr2 88 30 35M = 500 412 ACCTATATCTTGGCCTTGGCCGATGCGGCCTTGCA <<<<<;<<<<7;:<<<6;<<<<<<<<<<<<7<<<< MF:i:18 RG:Z:L2 PG:Z:P2 XT:A:R read_28701_28881_323c 147 chr2 88 30 35M = 500 412 ACCTATATCTTGGCCTTGGCCGATGCGGCCTTGCA <<<<<;<<<<7;:<<<6;<<<<<<<<<<<<7<<<< -test_clipped1 99 chr2 997 20 4S6M1D20M5S = 200 167 AGCTTAGCTAGCTACCTATATCTTGGTCTTGGCCG <<<<<<<<<<<<<<<<<<<<<:<9/,&,22;;<<< NM:i:1 RG:Z:L1 PG:Z:P1 XT:A:U +test_clipped1 99 chr2 997 20 4S6M1D20M5S = 200 167 AGCTTAGCTAGCTACCTATATCTTGGTCTTGGCCG <<<<<<<<<<<<<<<<<<<<<:<9/,&,22;;<<< NM:i:21 RG:Z:L1 PG:Z:P1 XT:A:U From 0311bcadf2f31bb8889e416e28b495fddd3e7580 Mon Sep 17 00:00:00 2001 From: John Marshall Date: Wed, 15 Jan 2020 22:16:43 +0000 Subject: [PATCH 18/23] Add Python 3.8 and various devtools/run_tests_travis.sh tidy ups Add a Python 3.8 build to the Travis build matrix. Silence wget. No longer need to force use of $PREFIX/{include,lib}; instead ensure we don't see the HTSlib headers in the Conda environment ahead of pysam's included copy of HTSlib. Display a more meaningful selection of the HTSlib configuration variables. --- .travis.yml | 1 + devtools/run_tests_travis.sh | 11 ++++++----- setup.py | 9 ++++++--- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index 30c7c97..47ce194 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,7 @@ env: - CONDA_PY=2.7 - CONDA_PY=3.6 - CONDA_PY=3.7 + - CONDA_PY=3.8 global: - PYSAM_LINKING_TEST=1 - TWINE_USERNAME=grepall diff --git a/devtools/run_tests_travis.sh b/devtools/run_tests_travis.sh index b20c8a0..9ad41a7 100755 --- a/devtools/run_tests_travis.sh +++ b/devtools/run_tests_travis.sh @@ -17,9 +17,9 @@ WORKDIR=`pwd` #Install miniconda python if [ $TRAVIS_OS_NAME == "osx" ]; then - wget https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O Miniconda3.sh + wget -q https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O Miniconda3.sh else - wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O Miniconda3.sh --no-check-certificate # Default OS versions are old and have SSL / CERT issues + wget -q https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O Miniconda3.sh --no-check-certificate # Default OS versions are old and have SSL / CERT issues fi bash Miniconda3.sh -b @@ -40,9 +40,10 @@ conda config --add channels conda-forge # NB: we force conda-forge:ncurses due to bioconda/bioconda-recipes#13488 conda install -y "samtools=1.9" "bcftools=1.9" "htslib=1.9" xz curl bzip2 conda-forge:ncurses -# Need to make C compiler and linker use the anaconda includes and libraries: -export PREFIX=~/miniconda3/ -export CFLAGS="-I${PREFIX}/include -L${PREFIX}/lib" +# As HTSLIB_MODE is (defaulted to) 'shared', ensure we don't pick up +# the external headers from the Conda-installed htslib package. +mv $CONDA_PREFIX/include/htslib $CONDA_PREFIX/include/htslib-disable + export HTSLIB_CONFIGURE_OPTIONS="--disable-libcurl" echo "show samtools, htslib, and bcftools versions" diff --git a/setup.py b/setup.py index 970e4fc..3078cfb 100644 --- a/setup.py +++ b/setup.py @@ -295,12 +295,15 @@ def get_pysam_version(): key, value = re.match( "#define (\S+)\s+(\S+)", line).groups() config_values[key] = value - for key in ["ENABLE_PLUGINS", + for key in ["ENABLE_GCS", + "ENABLE_PLUGINS", + "ENABLE_S3", "HAVE_COMMONCRYPTO", - "HAVE_GMTIME_R", "HAVE_HMAC", - "HAVE_IRODS", + "HAVE_LIBBZ2", "HAVE_LIBCURL", + "HAVE_LIBDEFLATE", + "HAVE_LIBLZMA", "HAVE_MMAP"]: outf.write("{} = {}\n".format(key, config_values[key])) print ("# pysam: config_option: {}={}".format(key, config_values[key])) From f834fbc0472373523c12114fc18c9eda8d03cbd0 Mon Sep 17 00:00:00 2001 From: Julian Gehring Date: Fri, 6 Mar 2020 17:43:46 +0000 Subject: [PATCH 19/23] Fix typos in the FAQ --- doc/faq.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/faq.rst b/doc/faq.rst index e07e1cf..dc0898e 100644 --- a/doc/faq.rst +++ b/doc/faq.rst @@ -40,7 +40,7 @@ parts have not been fully tested. A related issue is when different threads read from the same file objec - or the same thread uses two iterators over a file. There is only a single file-position for each opened file. To prevent this from -hapeding, use the option ``mulitple_iterator=True`` when calling +hapeding, use the option ``multiple_iterator=True`` when calling a fetch() method. This will return an iterator on a newly opened file. @@ -109,7 +109,7 @@ Here, the output is:: The reason for this behaviour is that every iterator needs to keep track of its current position in the file. Within pysam, each opened file can only keep track of one file position and hence there can only -be one iterator per file. Using the option ``mulitple_iterators=True`` +be one iterator per file. Using the option ``multiple_iterators=True`` will return an iterator within a newly opened file. This iterator will not interfere with existing iterators as it has its own file handle associated with it. From abae3f04f107ba9515d9067d0c44cba257f83a62 Mon Sep 17 00:00:00 2001 From: Thomas Grainger Date: Fri, 24 Jan 2020 18:15:03 +0000 Subject: [PATCH 20/23] fix region type (PR #883) --- pysam/libcalignmentfile.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysam/libcalignmentfile.pyx b/pysam/libcalignmentfile.pyx index 0c69a4f..a8c4541 100644 --- a/pysam/libcalignmentfile.pyx +++ b/pysam/libcalignmentfile.pyx @@ -1482,7 +1482,7 @@ cdef class AlignmentFile(HTSFile): end of the genomic region (0-based exclusive). If not given, count to the end of the chromosome. - region : int + region : string a region string. quality_threshold : int From 549c37d20039c97acafd5d828efb81789c0b7303 Mon Sep 17 00:00:00 2001 From: John Marshall Date: Fri, 13 Mar 2020 21:06:40 +0000 Subject: [PATCH 21/23] Update devtools/import.py and don't import */test/* etc Pysam's build and tests do not use {htslib,samtools,bcftools}/test so remove them from the repository and do not import them in future. Similarly samtools/misc and bcftools/plugins are unused, so remove them from the import list entirely (rather than listing most misc/* files and having a note to remove plugins/* manually). Update so that import.py can be used for htslib too: add the build infrastructure, but don't run _update_pysam_files() for htslib. Don't list hfile_irods.c, which was moved to its own repository long ago and removed from HTSlib 1.4. --- devtools/import.py | 74 ++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 42 deletions(-) diff --git a/devtools/import.py b/devtools/import.py index 7430cc5..91aae46 100644 --- a/devtools/import.py +++ b/devtools/import.py @@ -1,27 +1,11 @@ ################################################################# -# Importing samtools and htslib +# Importing samtools, bcftools, and htslib # -# For htslib, simply copy the whole release tar-ball -# into the directory "htslib" and recreate the file version.h +# For each package PKG: # -# rm -rf htslib -# mv download/htslib htslib -# git checkout -- htslib/version.h -# Edit the file htslib/version.h to set the right version number. -# -# For samtools, type: -# rm -rf samtools -# python import.py samtools download/samtools -# git checkout -- samtools/version.h -# -# Manually, then: -# modify config.h to set compatibility flags -# -# For bcftools, type: -# rm -rf bcftools -# python import.py bcftools download/bedtools -# git checkout -- bcftools/version.h -# rm -rf bedtools/test bedtools/plugins +# rm -rf PKG +# python import.py PKG path/to/download/PKG-X.Y +# git checkout -- PKG/version.h import fnmatch import os @@ -34,23 +18,19 @@ EXCLUDE = { "samtools": ( + "test", "misc", "razip.c", "bgzip.c", "main.c", "calDepth.c", "bam2bed.c", - "wgsim.c", "bam_tview.c", "bam_tview.h", "bam_tview_html.c", "bam_tview_curses.c", - "md5fa.c", - "md5sum-lite.c", - "maq2sam.c", "bamcheck.c", "chk_indel.c", "vcf-miniview.c", - "hfile_irods.c", # requires irods library ), "bcftools": ( "test", "plugins", "peakfit.c", @@ -60,7 +40,8 @@ "polysomy.c"), "htslib": ( 'htslib/tabix.c', 'htslib/bgzip.c', - 'htslib/htsfile.c', 'htslib/hfile_irods.c'), + 'htslib/htsfile.c', + "test"), } @@ -71,13 +52,21 @@ -def locate(pattern, root=os.curdir): - '''Locate all files matching supplied filename pattern in and below - supplied root directory. +def locate(pattern, root=os.curdir, exclude=[], exclude_htslib=False): + '''Locate all files matching supplied filename pattern (but not listed + in exclude) in and below the supplied root directory. Omit any files under + directories listed in exclude or (if exclude_htslib=True) matching /htslib-*/. ''' for path, dirs, files in os.walk(os.path.abspath(root)): for filename in fnmatch.filter(files, pattern): - yield os.path.join(path, filename) + if filename not in exclude: + yield os.path.join(path, filename) + + for dirname in exclude: + if dirname in dirs: dirs.remove(dirname) + if exclude_htslib: + for dirname in [d for d in dirs if re.match(r"htslib-", d)]: + dirs.remove(dirname) def _update_pysam_files(cf, destdir): @@ -149,16 +138,15 @@ def _update_pysam_files(cf, destdir): raise IOError( "source directory `%s` does not exist." % srcdir) - cfiles = locate("*.c", srcdir) - hfiles = locate("*.h", srcdir) + cfiles = locate("*.c", srcdir, exclude=exclude, exclude_htslib=True) + hfiles = locate("*.h", srcdir, exclude=exclude, exclude_htslib=True) mfiles = itertools.chain(locate("README", srcdir), locate("LICENSE", srcdir)) - - # remove unwanted files and htslib subdirectory. - cfiles = [x for x in cfiles if os.path.basename(x) not in exclude - and not re.search("htslib-", x)] - hfiles = [x for x in hfiles if os.path.basename(x) not in exclude - and not re.search("htslib-", x)] + if dest == "htslib": + # Add build files, including *.ac *.in *.mk *.m4 + mfiles = itertools.chain(mfiles, locate("Makefile", srcdir), + locate("configure", srcdir), + locate("*.[aim][cnk4]", srcdir)) ncopied = 0 @@ -203,10 +191,12 @@ def _compareAndCopy(src, srcdir, destdir, exclude): sys.stdout.write( "installed latest source code from %s: " "%i files copied\n" % (srcdir, ncopied)) - # redirect stderr to pysamerr and replace bam.h with a stub. - sys.stdout.write("applying stderr redirection\n") - _update_pysam_files(cf, destdir) + if dest in MAIN: + # redirect stderr to pysamerr and replace bam.h with a stub. + sys.stdout.write("applying stderr redirection\n") + + _update_pysam_files(cf, destdir) sys.exit(0) From fc78328e0a9b46dada1d736133ced6dcdcd7ec34 Mon Sep 17 00:00:00 2001 From: John Marshall Date: Fri, 13 Mar 2020 21:27:13 +0000 Subject: [PATCH 22/23] Rerun devtools/import.py to remove */misc,plugins,test} etc Re-import htslib, bcftools, and samtools with the updated script to remove unused subdirectories and sundries, notably */test. (Previously the bulk of */test etc were omitted, but various items had crept back in as this was not fully automated.) Preserve the hand-made */version.h files and samtools/bamtk.c.pysam.c fix and the backported htslib/configure fix. --- bcftools/plugins/GTisec.c | 470 - bcftools/plugins/GTisec.c.pysam.c | 472 - bcftools/plugins/GTsubset.c | 266 - bcftools/plugins/GTsubset.c.pysam.c | 268 - bcftools/plugins/ad-bias.c | 226 - bcftools/plugins/ad-bias.c.pysam.c | 228 - bcftools/plugins/af-dist.c | 220 - bcftools/plugins/af-dist.c.pysam.c | 222 - bcftools/plugins/check-ploidy.c | 165 - bcftools/plugins/check-ploidy.c.pysam.c | 167 - bcftools/plugins/check-sparsity.c | 273 - bcftools/plugins/check-sparsity.c.pysam.c | 275 - bcftools/plugins/color-chrs.c | 561 - bcftools/plugins/color-chrs.c.pysam.c | 563 - bcftools/plugins/contrast.c | 364 - bcftools/plugins/contrast.c.pysam.c | 366 - bcftools/plugins/counts.c | 82 - bcftools/plugins/counts.c.pysam.c | 84 - bcftools/plugins/dosage.c | 337 - bcftools/plugins/dosage.c.pysam.c | 339 - bcftools/plugins/fill-AN-AC.c | 67 - bcftools/plugins/fill-AN-AC.c.pysam.c | 69 - bcftools/plugins/fill-from-fasta.c | 206 - bcftools/plugins/fill-from-fasta.c.pysam.c | 208 - bcftools/plugins/fill-tags.c | 663 - bcftools/plugins/fill-tags.c.pysam.c | 665 - bcftools/plugins/fixploidy.c | 250 - bcftools/plugins/fixploidy.c.pysam.c | 252 - bcftools/plugins/fixref.c | 572 - bcftools/plugins/fixref.c.pysam.c | 574 - bcftools/plugins/frameshifts.c | 157 - bcftools/plugins/frameshifts.c.pysam.c | 159 - bcftools/plugins/guess-ploidy.c | 568 - bcftools/plugins/guess-ploidy.c.pysam.c | 570 - bcftools/plugins/impute-info.c | 165 - bcftools/plugins/impute-info.c.pysam.c | 167 - bcftools/plugins/isecGT.c | 177 - bcftools/plugins/isecGT.c.pysam.c | 179 - bcftools/plugins/mendelian.c | 566 - bcftools/plugins/mendelian.c.pysam.c | 568 - bcftools/plugins/missing2ref.c | 144 - bcftools/plugins/missing2ref.c.pysam.c | 146 - bcftools/plugins/prune.c | 293 - bcftools/plugins/prune.c.pysam.c | 295 - bcftools/plugins/setGT.c | 447 - bcftools/plugins/setGT.c.pysam.c | 449 - bcftools/plugins/smpl-stats.c | 483 - bcftools/plugins/smpl-stats.c.pysam.c | 485 - bcftools/plugins/split.c | 415 - bcftools/plugins/split.c.pysam.c | 417 - bcftools/plugins/tag2tag.c | 254 - bcftools/plugins/tag2tag.c.pysam.c | 256 - bcftools/plugins/trio-stats.c | 554 - bcftools/plugins/trio-stats.c.pysam.c | 556 - bcftools/plugins/trio-switch-rate.c | 273 - bcftools/plugins/trio-switch-rate.c.pysam.c | 275 - bcftools/test/test-rbuf.c | 75 - bcftools/test/test-rbuf.c.pysam.c | 77 - bcftools/test/test-regidx.c | 374 - bcftools/test/test-regidx.c.pysam.c | 376 - htslib/INSTALL | 244 - htslib/NEWS | 440 - htslib/bgzip.1 | 178 - htslib/faidx.5 | 238 - htslib/htsfile.1 | 80 - htslib/sam.5 | 68 - htslib/tabix.1 | 171 - htslib/test/auxf#values.sam | 5 - htslib/test/auxf#values_java.cram | Bin 5152 -> 0 bytes htslib/test/auxf.fa | 2 - htslib/test/auxf.fa.fai | 1 - htslib/test/bgziptest.txt | 1 - htslib/test/bgziptest.txt.gz | Bin 181 -> 0 bytes htslib/test/bgziptest.txt.gz.gzi | Bin 88 -> 0 bytes htslib/test/c1#bounds.sam | 4 - htslib/test/c1#clip.sam | 8 - htslib/test/c1#noseq.sam | 10 - htslib/test/c1#pad1.sam | 10 - htslib/test/c1#pad2.sam | 14 - htslib/test/c1#pad3.sam | 14 - htslib/test/c1#unknown.sam | 9 - htslib/test/c1.fa | 2 - htslib/test/c1.fa.fai | 1 - htslib/test/c2#pad.sam | 26 - htslib/test/c2.fa | 2 - htslib/test/c2.fa.fai | 1 - htslib/test/ce#1.sam | 2 - htslib/test/ce#1000.sam | 1005 - htslib/test/ce#2.sam | 3 - htslib/test/ce#5.sam | 11 - htslib/test/ce#5b.sam | 12 - htslib/test/ce#5b_java.cram | Bin 6784 -> 0 bytes htslib/test/ce#large_seq.sam | 3 - htslib/test/ce#supp.sam | 6 - htslib/test/ce#tag_depadded.sam | 11 - htslib/test/ce#tag_padded.sam | 11 - htslib/test/ce#unmap.sam | 6 - htslib/test/ce#unmap1.sam | 20 - htslib/test/ce#unmap2.sam | 29 - htslib/test/ce.fa | 20803 ---------------- htslib/test/ce.fa.fai | 7 - htslib/test/compare_sam.pl | 196 - htslib/test/cross_validate.sh | 126 - htslib/test/faidx.fa | 21 - htslib/test/fastqs.fq | 500 - htslib/test/fastqs_README.txt | 109 - htslib/test/fieldarith.c | 74 - htslib/test/fieldarith.sam | 15 - htslib/test/formatcols.vcf | 6 - htslib/test/formatmissing-out.vcf | 6 - htslib/test/formatmissing.vcf | 6 - htslib/test/hfile.c | 283 - htslib/test/hts_endian.c | 512 - htslib/test/md#1.sam | 12 - htslib/test/md.fa | 3 - htslib/test/md.fa.fai | 1 - htslib/test/noroundtrip-out.vcf | 9 - htslib/test/noroundtrip.vcf | 8 - htslib/test/range.bam | Bin 13337 -> 0 bytes htslib/test/range.bam.bai | Bin 360 -> 0 bytes htslib/test/range.cram | Bin 11182 -> 0 bytes htslib/test/range.cram.crai | Bin 94 -> 0 bytes htslib/test/range.out | 17 - htslib/test/realn01.fa | 13 - htslib/test/realn01.fa.fai | 1 - htslib/test/realn01.sam | 8 - htslib/test/realn01_exp-a.sam | 8 - htslib/test/realn01_exp-e.sam | 8 - htslib/test/realn01_exp.sam | 8 - htslib/test/realn02-r.sam | 12 - htslib/test/realn02.fa | 71 - htslib/test/realn02.fa.fai | 1 - htslib/test/realn02.sam | 12 - htslib/test/realn02_exp-a.sam | 12 - htslib/test/realn02_exp-e.sam | 12 - htslib/test/realn02_exp.sam | 12 - htslib/test/sam.c | 605 - htslib/test/tabix/bed_file.Y.100200.out | 1 - htslib/test/tabix/bed_file.bed | 39 - .../test/tabix/gff_file.X.2934832.2935190.out | 4 - htslib/test/tabix/gff_file.gff | 70 - .../test/tabix/large_chr.20.1.2147483647.out | 9 - htslib/test/tabix/large_chr.vcf | 18 - htslib/test/tabix/tabix.tst | 65 - htslib/test/tabix/test-tabix.sh | 183 - htslib/test/tabix/vcf_file.1.3000151.out | 1 - htslib/test/tabix/vcf_file.2.3199812.out | 1 - htslib/test/tabix/vcf_file.vcf | 36 - htslib/test/test-bcf-sr.c | 141 - htslib/test/test-bcf-sr.pl | 548 - htslib/test/test-bcf-translate.c | 192 - htslib/test/test-bcf-translate.out | 18 - htslib/test/test-logging.pl | 96 - htslib/test/test-regidx.c | 118 - htslib/test/test-vcf-api.c | 402 - htslib/test/test-vcf-api.out | 28 - htslib/test/test-vcf-hdr-in.vcf | 25 - htslib/test/test-vcf-hdr.out | 16 - htslib/test/test-vcf-sweep.c | 114 - htslib/test/test-vcf-sweep.out | 4 - htslib/test/test.pl | 504 - htslib/test/test_bgzf.c | 784 - htslib/test/test_realn.c | 169 - htslib/test/test_view.c | 322 - htslib/test/thrash_threads1.c | 47 - htslib/test/thrash_threads2.c | 45 - htslib/test/thrash_threads3.c | 50 - htslib/test/thrash_threads4.c | 68 - htslib/test/thrash_threads5.c | 66 - htslib/test/thrash_threads6.c | 108 - htslib/test/thread_pool.md | 58 - htslib/test/xx#blank.sam | 0 htslib/test/xx#large_aux.sam | 4 - htslib/test/xx#large_aux2.sam | 11 - htslib/test/xx#large_aux_java.cram | Bin 22668 -> 0 bytes htslib/test/xx#minimal.sam | 10 - htslib/test/xx#pair.sam | 7 - htslib/test/xx#repeated.sam | 7 - htslib/test/xx#rg.sam | 13 - htslib/test/xx#tlen.sam | 34 - htslib/test/xx#tlen2.sam | 36 - htslib/test/xx#triplet.sam | 7 - htslib/test/xx#unsorted.sam | 8 - htslib/test/xx.fa | 5 - htslib/test/xx.fa.fai | 2 - htslib/vcf.5 | 120 - htslib/version.sh | 31 - samtools/misc/ace2sam.c | 254 - samtools/misc/ace2sam.c.pysam.c | 256 - samtools/test/merge/test_bam_translate.c | 598 - .../test/merge/test_bam_translate.c.pysam.c | 600 - samtools/test/merge/test_rtrans_build.c | 120 - .../test/merge/test_rtrans_build.c.pysam.c | 122 - samtools/test/merge/test_trans_tbl_init.c | 576 - .../test/merge/test_trans_tbl_init.c.pysam.c | 578 - samtools/test/split/test_count_rg.c | 125 - samtools/test/split/test_count_rg.c.pysam.c | 127 - .../test/split/test_expand_format_string.c | 125 - .../split/test_expand_format_string.c.pysam.c | 127 - samtools/test/split/test_filter_header_rg.c | 199 - .../split/test_filter_header_rg.c.pysam.c | 201 - samtools/test/split/test_parse_args.c | 217 - samtools/test/split/test_parse_args.c.pysam.c | 219 - samtools/test/test.c | 61 - samtools/test/test.c.pysam.c | 63 - samtools/test/test.h | 35 - samtools/test/tview/test_get_rg_sample.c | 83 - .../test/tview/test_get_rg_sample.c.pysam.c | 85 - 208 files changed, 54955 deletions(-) delete mode 100644 bcftools/plugins/GTisec.c delete mode 100644 bcftools/plugins/GTisec.c.pysam.c delete mode 100644 bcftools/plugins/GTsubset.c delete mode 100644 bcftools/plugins/GTsubset.c.pysam.c delete mode 100644 bcftools/plugins/ad-bias.c delete mode 100644 bcftools/plugins/ad-bias.c.pysam.c delete mode 100644 bcftools/plugins/af-dist.c delete mode 100644 bcftools/plugins/af-dist.c.pysam.c delete mode 100644 bcftools/plugins/check-ploidy.c delete mode 100644 bcftools/plugins/check-ploidy.c.pysam.c delete mode 100644 bcftools/plugins/check-sparsity.c delete mode 100644 bcftools/plugins/check-sparsity.c.pysam.c delete mode 100644 bcftools/plugins/color-chrs.c delete mode 100644 bcftools/plugins/color-chrs.c.pysam.c delete mode 100644 bcftools/plugins/contrast.c delete mode 100644 bcftools/plugins/contrast.c.pysam.c delete mode 100644 bcftools/plugins/counts.c delete mode 100644 bcftools/plugins/counts.c.pysam.c delete mode 100644 bcftools/plugins/dosage.c delete mode 100644 bcftools/plugins/dosage.c.pysam.c delete mode 100644 bcftools/plugins/fill-AN-AC.c delete mode 100644 bcftools/plugins/fill-AN-AC.c.pysam.c delete mode 100644 bcftools/plugins/fill-from-fasta.c delete mode 100644 bcftools/plugins/fill-from-fasta.c.pysam.c delete mode 100644 bcftools/plugins/fill-tags.c delete mode 100644 bcftools/plugins/fill-tags.c.pysam.c delete mode 100644 bcftools/plugins/fixploidy.c delete mode 100644 bcftools/plugins/fixploidy.c.pysam.c delete mode 100644 bcftools/plugins/fixref.c delete mode 100644 bcftools/plugins/fixref.c.pysam.c delete mode 100644 bcftools/plugins/frameshifts.c delete mode 100644 bcftools/plugins/frameshifts.c.pysam.c delete mode 100644 bcftools/plugins/guess-ploidy.c delete mode 100644 bcftools/plugins/guess-ploidy.c.pysam.c delete mode 100644 bcftools/plugins/impute-info.c delete mode 100644 bcftools/plugins/impute-info.c.pysam.c delete mode 100644 bcftools/plugins/isecGT.c delete mode 100644 bcftools/plugins/isecGT.c.pysam.c delete mode 100644 bcftools/plugins/mendelian.c delete mode 100644 bcftools/plugins/mendelian.c.pysam.c delete mode 100644 bcftools/plugins/missing2ref.c delete mode 100644 bcftools/plugins/missing2ref.c.pysam.c delete mode 100644 bcftools/plugins/prune.c delete mode 100644 bcftools/plugins/prune.c.pysam.c delete mode 100644 bcftools/plugins/setGT.c delete mode 100644 bcftools/plugins/setGT.c.pysam.c delete mode 100644 bcftools/plugins/smpl-stats.c delete mode 100644 bcftools/plugins/smpl-stats.c.pysam.c delete mode 100644 bcftools/plugins/split.c delete mode 100644 bcftools/plugins/split.c.pysam.c delete mode 100644 bcftools/plugins/tag2tag.c delete mode 100644 bcftools/plugins/tag2tag.c.pysam.c delete mode 100644 bcftools/plugins/trio-stats.c delete mode 100644 bcftools/plugins/trio-stats.c.pysam.c delete mode 100644 bcftools/plugins/trio-switch-rate.c delete mode 100644 bcftools/plugins/trio-switch-rate.c.pysam.c delete mode 100644 bcftools/test/test-rbuf.c delete mode 100644 bcftools/test/test-rbuf.c.pysam.c delete mode 100644 bcftools/test/test-regidx.c delete mode 100644 bcftools/test/test-regidx.c.pysam.c delete mode 100644 htslib/INSTALL delete mode 100644 htslib/NEWS delete mode 100644 htslib/bgzip.1 delete mode 100644 htslib/faidx.5 delete mode 100644 htslib/htsfile.1 delete mode 100644 htslib/sam.5 delete mode 100644 htslib/tabix.1 delete mode 100644 htslib/test/auxf#values.sam delete mode 100644 htslib/test/auxf#values_java.cram delete mode 100644 htslib/test/auxf.fa delete mode 100644 htslib/test/auxf.fa.fai delete mode 100644 htslib/test/bgziptest.txt delete mode 100644 htslib/test/bgziptest.txt.gz delete mode 100644 htslib/test/bgziptest.txt.gz.gzi delete mode 100644 htslib/test/c1#bounds.sam delete mode 100644 htslib/test/c1#clip.sam delete mode 100644 htslib/test/c1#noseq.sam delete mode 100644 htslib/test/c1#pad1.sam delete mode 100644 htslib/test/c1#pad2.sam delete mode 100644 htslib/test/c1#pad3.sam delete mode 100644 htslib/test/c1#unknown.sam delete mode 100644 htslib/test/c1.fa delete mode 100644 htslib/test/c1.fa.fai delete mode 100644 htslib/test/c2#pad.sam delete mode 100644 htslib/test/c2.fa delete mode 100644 htslib/test/c2.fa.fai delete mode 100644 htslib/test/ce#1.sam delete mode 100644 htslib/test/ce#1000.sam delete mode 100644 htslib/test/ce#2.sam delete mode 100644 htslib/test/ce#5.sam delete mode 100644 htslib/test/ce#5b.sam delete mode 100644 htslib/test/ce#5b_java.cram delete mode 100644 htslib/test/ce#large_seq.sam delete mode 100644 htslib/test/ce#supp.sam delete mode 100644 htslib/test/ce#tag_depadded.sam delete mode 100644 htslib/test/ce#tag_padded.sam delete mode 100644 htslib/test/ce#unmap.sam delete mode 100644 htslib/test/ce#unmap1.sam delete mode 100644 htslib/test/ce#unmap2.sam delete mode 100644 htslib/test/ce.fa delete mode 100644 htslib/test/ce.fa.fai delete mode 100755 htslib/test/compare_sam.pl delete mode 100755 htslib/test/cross_validate.sh delete mode 100644 htslib/test/faidx.fa delete mode 100644 htslib/test/fastqs.fq delete mode 100644 htslib/test/fastqs_README.txt delete mode 100644 htslib/test/fieldarith.c delete mode 100644 htslib/test/fieldarith.sam delete mode 100644 htslib/test/formatcols.vcf delete mode 100644 htslib/test/formatmissing-out.vcf delete mode 100644 htslib/test/formatmissing.vcf delete mode 100644 htslib/test/hfile.c delete mode 100644 htslib/test/hts_endian.c delete mode 100644 htslib/test/md#1.sam delete mode 100644 htslib/test/md.fa delete mode 100644 htslib/test/md.fa.fai delete mode 100644 htslib/test/noroundtrip-out.vcf delete mode 100644 htslib/test/noroundtrip.vcf delete mode 100644 htslib/test/range.bam delete mode 100644 htslib/test/range.bam.bai delete mode 100644 htslib/test/range.cram delete mode 100644 htslib/test/range.cram.crai delete mode 100644 htslib/test/range.out delete mode 100644 htslib/test/realn01.fa delete mode 100644 htslib/test/realn01.fa.fai delete mode 100644 htslib/test/realn01.sam delete mode 100644 htslib/test/realn01_exp-a.sam delete mode 100644 htslib/test/realn01_exp-e.sam delete mode 100644 htslib/test/realn01_exp.sam delete mode 100644 htslib/test/realn02-r.sam delete mode 100644 htslib/test/realn02.fa delete mode 100644 htslib/test/realn02.fa.fai delete mode 100644 htslib/test/realn02.sam delete mode 100644 htslib/test/realn02_exp-a.sam delete mode 100644 htslib/test/realn02_exp-e.sam delete mode 100644 htslib/test/realn02_exp.sam delete mode 100644 htslib/test/sam.c delete mode 100644 htslib/test/tabix/bed_file.Y.100200.out delete mode 100644 htslib/test/tabix/bed_file.bed delete mode 100644 htslib/test/tabix/gff_file.X.2934832.2935190.out delete mode 100644 htslib/test/tabix/gff_file.gff delete mode 100644 htslib/test/tabix/large_chr.20.1.2147483647.out delete mode 100644 htslib/test/tabix/large_chr.vcf delete mode 100644 htslib/test/tabix/tabix.tst delete mode 100755 htslib/test/tabix/test-tabix.sh delete mode 100644 htslib/test/tabix/vcf_file.1.3000151.out delete mode 100644 htslib/test/tabix/vcf_file.2.3199812.out delete mode 100644 htslib/test/tabix/vcf_file.vcf delete mode 100644 htslib/test/test-bcf-sr.c delete mode 100755 htslib/test/test-bcf-sr.pl delete mode 100644 htslib/test/test-bcf-translate.c delete mode 100644 htslib/test/test-bcf-translate.out delete mode 100755 htslib/test/test-logging.pl delete mode 100644 htslib/test/test-regidx.c delete mode 100644 htslib/test/test-vcf-api.c delete mode 100644 htslib/test/test-vcf-api.out delete mode 100644 htslib/test/test-vcf-hdr-in.vcf delete mode 100644 htslib/test/test-vcf-hdr.out delete mode 100644 htslib/test/test-vcf-sweep.c delete mode 100644 htslib/test/test-vcf-sweep.out delete mode 100755 htslib/test/test.pl delete mode 100644 htslib/test/test_bgzf.c delete mode 100644 htslib/test/test_realn.c delete mode 100644 htslib/test/test_view.c delete mode 100644 htslib/test/thrash_threads1.c delete mode 100644 htslib/test/thrash_threads2.c delete mode 100644 htslib/test/thrash_threads3.c delete mode 100644 htslib/test/thrash_threads4.c delete mode 100644 htslib/test/thrash_threads5.c delete mode 100644 htslib/test/thrash_threads6.c delete mode 100644 htslib/test/thread_pool.md delete mode 100644 htslib/test/xx#blank.sam delete mode 100644 htslib/test/xx#large_aux.sam delete mode 100644 htslib/test/xx#large_aux2.sam delete mode 100644 htslib/test/xx#large_aux_java.cram delete mode 100644 htslib/test/xx#minimal.sam delete mode 100644 htslib/test/xx#pair.sam delete mode 100644 htslib/test/xx#repeated.sam delete mode 100644 htslib/test/xx#rg.sam delete mode 100644 htslib/test/xx#tlen.sam delete mode 100644 htslib/test/xx#tlen2.sam delete mode 100644 htslib/test/xx#triplet.sam delete mode 100644 htslib/test/xx#unsorted.sam delete mode 100644 htslib/test/xx.fa delete mode 100644 htslib/test/xx.fa.fai delete mode 100644 htslib/vcf.5 delete mode 100755 htslib/version.sh delete mode 100644 samtools/misc/ace2sam.c delete mode 100644 samtools/misc/ace2sam.c.pysam.c delete mode 100644 samtools/test/merge/test_bam_translate.c delete mode 100644 samtools/test/merge/test_bam_translate.c.pysam.c delete mode 100644 samtools/test/merge/test_rtrans_build.c delete mode 100644 samtools/test/merge/test_rtrans_build.c.pysam.c delete mode 100644 samtools/test/merge/test_trans_tbl_init.c delete mode 100644 samtools/test/merge/test_trans_tbl_init.c.pysam.c delete mode 100644 samtools/test/split/test_count_rg.c delete mode 100644 samtools/test/split/test_count_rg.c.pysam.c delete mode 100644 samtools/test/split/test_expand_format_string.c delete mode 100644 samtools/test/split/test_expand_format_string.c.pysam.c delete mode 100644 samtools/test/split/test_filter_header_rg.c delete mode 100644 samtools/test/split/test_filter_header_rg.c.pysam.c delete mode 100644 samtools/test/split/test_parse_args.c delete mode 100644 samtools/test/split/test_parse_args.c.pysam.c delete mode 100644 samtools/test/test.c delete mode 100644 samtools/test/test.c.pysam.c delete mode 100644 samtools/test/test.h delete mode 100644 samtools/test/tview/test_get_rg_sample.c delete mode 100644 samtools/test/tview/test_get_rg_sample.c.pysam.c diff --git a/bcftools/plugins/GTisec.c b/bcftools/plugins/GTisec.c deleted file mode 100644 index eaa0b15..0000000 --- a/bcftools/plugins/GTisec.c +++ /dev/null @@ -1,470 +0,0 @@ -/* plugins/GTisec.c -- collect genotype intersection counts of all possible - subsets of the present samples and output in banker's - sequence order (in this sequence, the number of contained - samples increases monotonically, a property that is e.g. - useful for programatically creating plotting files for the - R package VennDiagram or the plotting tool circos from the - counts, as in the command line tools bankers2VennDiagram and - bankers2circos at htpps://github.com/dlaehnemann/bankers2) - - Copyright (C) 2016 Computational Biology of Infection Research, - Helmholtz Centre for Infection Research, Braunschweig, - Germany - - Author: David Laehnemann - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -KHASH_MAP_INIT_INT(gts2smps, uint32_t) - -#include "bcftools.h" - -/*! - * Flag definitions for args.flag - */ -#define MISSING (1<<0) -#define VERBOSE (1<<1) -#define SMPORDER (1<<2) - -typedef struct _args_t -{ - bcf_srs_t *file; /*! multi-sample VCF file */ - bcf_hdr_t *hdr; /*! VCF file header */ - FILE *out; /*! output file pointer */ - int nsmp; /*! number of samples, can be determined from header but is needed in multiple contexts */ - int nsmpp2; /*! 2^(nsmp) (is needed multiple times) */ - int *gt_arr; /*! temporary array, to store GTs of current line/record */ - int ngt_arr; /*! hold the number of current GT array entries */ - uint32_t *bankers; /*! array to store banker's sequence for all possible sample subsets for - programmatic indexing into smp_is for output printing, e.g. for three - samples A, B and C this would be the following order: - [ C, B, A, CB, CA, BA, CBA ] - [ 100, 010, 001, 110, 101, 011, 111 ] - */ - uint64_t *quick; /*! array to store n choose k lookup table of choose() function */ - uint8_t flag; /*! several flags, for positions see above*/ - uint64_t *missing_gts; /*! array to count missing genotypes of each sample */ - uint64_t *smp_is; /*! array to track all possible intersections between - samples, with each bit in the index integer belonging to one - sample. E.g. for three samples A, B and C, count would be in - the following order: - [ A, B, AB, C, AC, BC, ABC ] - [ 001, 010, 011, 100, 101, 110, 111 ] - */ -} -args_t; - -static args_t args; -uint32_t compute_bankers(unsigned long a); - -const char *about(void) -{ - return "Count genotype intersections across all possible sample subsets in a vcf file.\n"; -} - - -const char *usage(void) -{ - return - "\n" - "About: Count genotype intersections across all possible sample subsets in a vcf file.\n" - "Usage: bcftools +GTisec [General Options] -- [Plugin Options] \n" - "\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -m, --missing if set, include count of missing genotypes per sample in output\n" - " -v, --verbose if set, annotate count rows with corresponding sample subset lists\n" - " -H, --human-readable if set, create human readable output; i.e. sort output by sample and\n" - " print each subset's intersection count once for each sample contained\n" - " in the subset; implies verbose output (-v)\n" - "\n" - "Example:\n" - " bcftools +GTisec in.vcf -- -v # for verbose output\n" - " bcftools +GTisec in.vcf -- -H # for human readable output\n" - "\n"; -} - - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - memset(&args,0,sizeof(args_t)); - args.flag = 0; - - static struct option loptions[] = - { - {"help", no_argument, 0,'h'}, - {"missing", no_argument, 0,'m'}, - {"verbose", no_argument, 0,'v'}, - {"human-readable", no_argument, 0,'H'}, - {0,0,0,0} - }; - - int c; - while ((c = getopt_long(argc, argv, "?mvHh",loptions,NULL)) >= 0) - { - switch (c) - { - case 'm': args.flag |= MISSING; break; - case 'v': args.flag |= VERBOSE; break; - case 'H': args.flag |= ( SMPORDER | VERBOSE ); break; - case 'h': usage(); break; - case '?': - default: error("%s", usage()); break; - } - } - if ( optind != argc ) usage(); // too many files given - - - args.hdr = in; - - if ( !bcf_hdr_nsamples(args.hdr) ) - { - error("No samples in input file.\n"); - } - - args.nsmp = bcf_hdr_nsamples(args.hdr); - if ( args.nsmp > 32 ) error("Too many samples. A maximum of 32 is supported.\n"); - args.nsmpp2 = pow( 2, args.nsmp); - args.bankers = (uint32_t*) calloc( args.nsmpp2, sizeof(uint32_t) ); - args.quick = (uint64_t*) calloc((args.nsmp * (args.nsmp + 1)) / 4, sizeof(unsigned long)); - if ( args.flag & MISSING ) args.missing_gts = (uint64_t*) calloc( args.nsmp, sizeof(uint64_t)); - args.smp_is = (uint64_t*) calloc( args.nsmpp2, sizeof(uint64_t)); - if ( bcf_hdr_id2int(args.hdr, BCF_DT_ID, "GT")<0 ) error("[E::%s] GT not present in the header\n", __func__); - - args.gt_arr = NULL; - args.ngt_arr = 0; - - args.out = stdout; - - /*! Header printing */ - FILE *fp = args.out; - fprintf(fp, "# This file was produced by bcftools +GTisec (%s+htslib-%s)\n", bcftools_version(), hts_version()); - fprintf(fp, "# The command line was:\tbcftools +GTisec %s ", argv[0]); - int i; - for (i=1; i < argc; i++) - { - fprintf(fp, " %s", argv[i]); - } - fprintf(fp,"\n"); - fprintf(fp,"# This file can be used as input to the subset plotting tools at:\n" - "# https://github.com/dlaehnemann/bankers2\n"); - fprintf(fp,"# Genotype intersections across samples:\n"); - fprintf(fp,"@SMPS"); - for (i = args.nsmp-1; i >= 0; i--) - { - fprintf(fp," %s", bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, i)); - } - fprintf(fp,"\n"); - if ( args.flag & MISSING ) - { - if ( args.flag & SMPORDER ) - { - fprintf(fp, "# The first line of each sample contains its count of missing genotypes, with a '-' appended\n" - "# to the sample name.\n"); - } - else - { - fprintf(fp, "# The first %i lines contain the counts for missing values of each sample in the order provided\n" - "# in the SMPS-line above. Intersection counts only start afterwards.\n", args.nsmp); - } - } - if ( args.flag & SMPORDER ) - { - fprintf(fp, "# Human readable output (-H) was requested. Subset intersection counts are therefore sorted by\n" - "# sample and repeated for each contained sample. For each sample, counts are in banker's \n" - "# sequence order regarding all other samples.\n"); - } - else - { - fprintf(fp, "# Subset intersection counts are in global banker's sequence order.\n"); - if ( args.nsmp > 2 ) - { - fprintf(fp, "# After exclusive sample counts in order of the SMPS-line, banker's sequence continues with:\n" - "# %s,%s %s,%s ...\n", - bcf_hdr_int2id(in, BCF_DT_SAMPLE, args.nsmp-1 ), - bcf_hdr_int2id(in, BCF_DT_SAMPLE, args.nsmp-2 ), - bcf_hdr_int2id(in, BCF_DT_SAMPLE, args.nsmp-1 ), - bcf_hdr_int2id(in, BCF_DT_SAMPLE, args.nsmp-3 ) - ); - } - } - if (args.flag & VERBOSE ) - { - fprintf(fp,"# [1] Number of shared non-ref genotypes \t[2] Samples sharing non-ref genotype (GT)\n"); - } - else - { - fprintf(fp,"# [1] Number of shared non-ref genotypes\n"); - } - - /* Compute banker's sequence for following printing by sample and - * with increasing subset size. - */ - uint32_t j; - for ( j = 0; j < args.nsmpp2; j++ ) - { - args.bankers[j] = compute_bankers(j); - } - - return 1; -} - - -/* ADAPTED CODE FROM CORIN LAWSON (START) - * https://github.com/au-phiware/bankers/blob/master/c/bankers.c - * who implemented ideas of Eric Burnett: - * http://www.thelowlyprogrammer.com/2010/04/indexing-and-enumerating-subsets-of.html - */ - -/* - * Compute the binomial coefficient of `n choose k'. - * Use the fact that binom(n, k) = binom(n, n - k). - * Use a lookup table (triangle, actually) for speed. - * Otherwise it's dumb (heart) recursion. - * Added relative to Corin Lawson: - * * Passing in of sample number through pointer to args struct - * * Make quick lookup table external to keep it persistent with clean allocation - * and freeing - */ -uint64_t choose(unsigned int n, unsigned int k) { - if (n == 0) - return 0; - if (n == k || k == 0) - return 1; - if (k > n / 2) - k = n - k; - - unsigned int i = (n * (n - 1)) / 4 + k - 1; - if (args.quick[i] == 0) - args.quick[i] = choose(n - 1, k - 1) + choose(n - 1, k); - - return args.quick[i]; -} - -/* - * Returns the Banker's number at the specified position, a. - * Derived from the recursive bit flip method. - * Added relative to Corin Lawson: - * * Uses same lookup table solution as choose function, just - * maintained externally to persist across separate function calls. - * * Uses bitwise symmetry of banker's sequence to use bitwise inversion - * instead of recursive bit flip for second half of sequence. - */ -uint32_t compute_bankers(unsigned long a) -{ - if (a == 0) - return 0; - - if ( args.bankers[a] == 0 ) - { - if ( a >= (args.nsmpp2 / 2) ) - return args.bankers[a] = ( compute_bankers(args.nsmpp2 - (a+1)) ^ (args.nsmpp2 - 1) ); // use bitwise symmetry of bankers sequence - unsigned int c = 0; - uint32_t n = args.nsmp; - uint64_t e = a, binom; - binom = choose(n, c); - do { - e -= binom; - } while ((binom = choose(n, ++c)) <= e); - - do { - if (e == 0 || (binom = choose(n - 1, c - 1)) > e) - c--, args.bankers[a] |= 1; - else - e -= binom; - } while (--n && c && ((args.bankers[a] <<= 1) || 1)); - args.bankers[a] <<= n; - } - - return args.bankers[a]; -} - -// ADAPTED CODE FROM CORIN LAWSON END - - -/* - * GT field (genotype) comparison function. - */ -bcf1_t *process(bcf1_t *rec) -{ - uint64_t i; - bcf_unpack(rec, BCF_UN_FMT); // unpack the Format fields, including the GT field - int gte_smp = 0; // number GT array entries per sample (should be 2, one entry per allele) - if ( (gte_smp = bcf_get_genotypes(args.hdr, rec, &(args.gt_arr), &(args.ngt_arr) ) ) <= 0 ) - { - error("GT not present at %s: %d\n", args.hdr->id[BCF_DT_CTG][rec->rid].key, rec->pos+1); - } - - gte_smp /= args.nsmp; // divide total number of genotypes array entries (= args.ngt_arr) by number of samples - int ret; - - // stick all genotypes in a hash as keys and store up to 32 samples in a corresponding flag as its value - khiter_t bucket; - khash_t(gts2smps) *gts = kh_init(gts2smps); // create hash - for ( i = 0; i < args.nsmp; i++ ) - { - int *gt_ptr = args.gt_arr + gte_smp * i; - - if (bcf_gt_is_missing(gt_ptr[0]) || ( gte_smp == 2 && bcf_gt_is_missing(gt_ptr[1]) ) ) - { - if ( args.flag & MISSING ) args.missing_gts[i]++; // count missing genotypes, if requested - continue; // don't do anything else for missing genotypes, their "sharing" gives no info... - } - - int a = bcf_gt_allele(gt_ptr[0]); - int b; - if ( gte_smp == 2 ) // two entries available per sample, padded with missing values for haploid genotypes - { - b = bcf_gt_allele(gt_ptr[1]); - } - else if (gte_smp == 1 ) // use missing value for second entry in hash key generation below, if only one is available - { - b = bcf_gt_allele(bcf_int32_vector_end); - } - else - { - error("gtisec does not support ploidy higher than 2.\n"); - } - - int idx = bcf_alleles2gt(a,b); // generate genotype specific hash key - - bucket = kh_get(gts2smps, gts, idx); // get the genotype's hash bucket - - if ( bucket == kh_end(gts) ) { // means that key does not exist - bucket = kh_put(gts2smps, gts, idx, &ret); // create bucket with genotype index as key and return its iterator - kh_val(gts, bucket) = 0; // initialize the bucket with all sample bits unset - } - kh_value(gts, bucket) |= (1<= 0; s--) - { - if ( args.flag & MISSING ) // if missing genotype counts are requested, print them to standard output - { - fprintf(fp, "%"PRIu64"\t%s-\n", args.missing_gts[s], bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, s)); - } - for ( i = 1; i < args.nsmpp2; i++ ) - { - if ( (args.bankers[i]>>s) & 1 ) - { - fprintf(fp, "%"PRIu64"\t", args.smp_is[ args.bankers[i] ]); // print out count of genotypes shared by samples in current banker's sequence position - int j; - /* Print sample list */ - fprintf(fp, "%s", bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, s)); // print current sample first - for ( j = args.nsmp-1; j >= 0; j-- ) - { - if ( (args.bankers[i] ^ (1<= 0; s--) - { - fprintf(fp, "%"PRIu64"\t%s-\n", args.missing_gts[s], bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, s)); - } - } - for ( i = 1; i < args.nsmpp2; i++ ) - { - fprintf(fp, "%"PRIu64"\t", args.smp_is[ args.bankers[i] ]); // print out count of genotypes shared by samples in current banker's sequence position - int j = 0; - for ( s = args.nsmp-1; s >= 0; s--) - { - if ( (args.bankers[i]>>s) & 1 ) - { - fprintf(fp, "%s%s", j ? "," : "", bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, s) ); // samples in specified order - j = 1; - } - } - fprintf(fp, "\n" ); - } - } - else - { - if ( args.flag & MISSING ) // if missing genotype counts are requested, print them to standard output - { - for ( s = args.nsmp-1; s >= 0; s--) - { - fprintf(fp, "%"PRIu64"\n", args.missing_gts[s]); - } - } - for ( i = 1; i < args.nsmpp2; i++ ) - { - fprintf(fp, "%"PRIu64"\n", args.smp_is[ args.bankers[i] ]); // print out count of genotypes shared by samples in current banker's sequence position - } - } - fclose(fp); - - /* freeing up args */ - free(args.gt_arr); - free(args.bankers); - free(args.quick); - if (args.flag & MISSING) free(args.missing_gts); - free(args.smp_is); -} diff --git a/bcftools/plugins/GTisec.c.pysam.c b/bcftools/plugins/GTisec.c.pysam.c deleted file mode 100644 index 5f898ba..0000000 --- a/bcftools/plugins/GTisec.c.pysam.c +++ /dev/null @@ -1,472 +0,0 @@ -#include "bcftools.pysam.h" - -/* plugins/GTisec.c -- collect genotype intersection counts of all possible - subsets of the present samples and output in banker's - sequence order (in this sequence, the number of contained - samples increases monotonically, a property that is e.g. - useful for programatically creating plotting files for the - R package VennDiagram or the plotting tool circos from the - counts, as in the command line tools bankers2VennDiagram and - bankers2circos at htpps://github.com/dlaehnemann/bankers2) - - Copyright (C) 2016 Computational Biology of Infection Research, - Helmholtz Centre for Infection Research, Braunschweig, - Germany - - Author: David Laehnemann - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -KHASH_MAP_INIT_INT(gts2smps, uint32_t) - -#include "bcftools.h" - -/*! - * Flag definitions for args.flag - */ -#define MISSING (1<<0) -#define VERBOSE (1<<1) -#define SMPORDER (1<<2) - -typedef struct _args_t -{ - bcf_srs_t *file; /*! multi-sample VCF file */ - bcf_hdr_t *hdr; /*! VCF file header */ - FILE *out; /*! output file pointer */ - int nsmp; /*! number of samples, can be determined from header but is needed in multiple contexts */ - int nsmpp2; /*! 2^(nsmp) (is needed multiple times) */ - int *gt_arr; /*! temporary array, to store GTs of current line/record */ - int ngt_arr; /*! hold the number of current GT array entries */ - uint32_t *bankers; /*! array to store banker's sequence for all possible sample subsets for - programmatic indexing into smp_is for output printing, e.g. for three - samples A, B and C this would be the following order: - [ C, B, A, CB, CA, BA, CBA ] - [ 100, 010, 001, 110, 101, 011, 111 ] - */ - uint64_t *quick; /*! array to store n choose k lookup table of choose() function */ - uint8_t flag; /*! several flags, for positions see above*/ - uint64_t *missing_gts; /*! array to count missing genotypes of each sample */ - uint64_t *smp_is; /*! array to track all possible intersections between - samples, with each bit in the index integer belonging to one - sample. E.g. for three samples A, B and C, count would be in - the following order: - [ A, B, AB, C, AC, BC, ABC ] - [ 001, 010, 011, 100, 101, 110, 111 ] - */ -} -args_t; - -static args_t args; -uint32_t compute_bankers(unsigned long a); - -const char *about(void) -{ - return "Count genotype intersections across all possible sample subsets in a vcf file.\n"; -} - - -const char *usage(void) -{ - return - "\n" - "About: Count genotype intersections across all possible sample subsets in a vcf file.\n" - "Usage: bcftools +GTisec [General Options] -- [Plugin Options] \n" - "\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -m, --missing if set, include count of missing genotypes per sample in output\n" - " -v, --verbose if set, annotate count rows with corresponding sample subset lists\n" - " -H, --human-readable if set, create human readable output; i.e. sort output by sample and\n" - " print each subset's intersection count once for each sample contained\n" - " in the subset; implies verbose output (-v)\n" - "\n" - "Example:\n" - " bcftools +GTisec in.vcf -- -v # for verbose output\n" - " bcftools +GTisec in.vcf -- -H # for human readable output\n" - "\n"; -} - - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - memset(&args,0,sizeof(args_t)); - args.flag = 0; - - static struct option loptions[] = - { - {"help", no_argument, 0,'h'}, - {"missing", no_argument, 0,'m'}, - {"verbose", no_argument, 0,'v'}, - {"human-readable", no_argument, 0,'H'}, - {0,0,0,0} - }; - - int c; - while ((c = getopt_long(argc, argv, "?mvHh",loptions,NULL)) >= 0) - { - switch (c) - { - case 'm': args.flag |= MISSING; break; - case 'v': args.flag |= VERBOSE; break; - case 'H': args.flag |= ( SMPORDER | VERBOSE ); break; - case 'h': usage(); break; - case '?': - default: error("%s", usage()); break; - } - } - if ( optind != argc ) usage(); // too many files given - - - args.hdr = in; - - if ( !bcf_hdr_nsamples(args.hdr) ) - { - error("No samples in input file.\n"); - } - - args.nsmp = bcf_hdr_nsamples(args.hdr); - if ( args.nsmp > 32 ) error("Too many samples. A maximum of 32 is supported.\n"); - args.nsmpp2 = pow( 2, args.nsmp); - args.bankers = (uint32_t*) calloc( args.nsmpp2, sizeof(uint32_t) ); - args.quick = (uint64_t*) calloc((args.nsmp * (args.nsmp + 1)) / 4, sizeof(unsigned long)); - if ( args.flag & MISSING ) args.missing_gts = (uint64_t*) calloc( args.nsmp, sizeof(uint64_t)); - args.smp_is = (uint64_t*) calloc( args.nsmpp2, sizeof(uint64_t)); - if ( bcf_hdr_id2int(args.hdr, BCF_DT_ID, "GT")<0 ) error("[E::%s] GT not present in the header\n", __func__); - - args.gt_arr = NULL; - args.ngt_arr = 0; - - args.out = bcftools_stdout; - - /*! Header printing */ - FILE *fp = args.out; - fprintf(fp, "# This file was produced by bcftools +GTisec (%s+htslib-%s)\n", bcftools_version(), hts_version()); - fprintf(fp, "# The command line was:\tbcftools +GTisec %s ", argv[0]); - int i; - for (i=1; i < argc; i++) - { - fprintf(fp, " %s", argv[i]); - } - fprintf(fp,"\n"); - fprintf(fp,"# This file can be used as input to the subset plotting tools at:\n" - "# https://github.com/dlaehnemann/bankers2\n"); - fprintf(fp,"# Genotype intersections across samples:\n"); - fprintf(fp,"@SMPS"); - for (i = args.nsmp-1; i >= 0; i--) - { - fprintf(fp," %s", bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, i)); - } - fprintf(fp,"\n"); - if ( args.flag & MISSING ) - { - if ( args.flag & SMPORDER ) - { - fprintf(fp, "# The first line of each sample contains its count of missing genotypes, with a '-' appended\n" - "# to the sample name.\n"); - } - else - { - fprintf(fp, "# The first %i lines contain the counts for missing values of each sample in the order provided\n" - "# in the SMPS-line above. Intersection counts only start afterwards.\n", args.nsmp); - } - } - if ( args.flag & SMPORDER ) - { - fprintf(fp, "# Human readable output (-H) was requested. Subset intersection counts are therefore sorted by\n" - "# sample and repeated for each contained sample. For each sample, counts are in banker's \n" - "# sequence order regarding all other samples.\n"); - } - else - { - fprintf(fp, "# Subset intersection counts are in global banker's sequence order.\n"); - if ( args.nsmp > 2 ) - { - fprintf(fp, "# After exclusive sample counts in order of the SMPS-line, banker's sequence continues with:\n" - "# %s,%s %s,%s ...\n", - bcf_hdr_int2id(in, BCF_DT_SAMPLE, args.nsmp-1 ), - bcf_hdr_int2id(in, BCF_DT_SAMPLE, args.nsmp-2 ), - bcf_hdr_int2id(in, BCF_DT_SAMPLE, args.nsmp-1 ), - bcf_hdr_int2id(in, BCF_DT_SAMPLE, args.nsmp-3 ) - ); - } - } - if (args.flag & VERBOSE ) - { - fprintf(fp,"# [1] Number of shared non-ref genotypes \t[2] Samples sharing non-ref genotype (GT)\n"); - } - else - { - fprintf(fp,"# [1] Number of shared non-ref genotypes\n"); - } - - /* Compute banker's sequence for following printing by sample and - * with increasing subset size. - */ - uint32_t j; - for ( j = 0; j < args.nsmpp2; j++ ) - { - args.bankers[j] = compute_bankers(j); - } - - return 1; -} - - -/* ADAPTED CODE FROM CORIN LAWSON (START) - * https://github.com/au-phiware/bankers/blob/master/c/bankers.c - * who implemented ideas of Eric Burnett: - * http://www.thelowlyprogrammer.com/2010/04/indexing-and-enumerating-subsets-of.html - */ - -/* - * Compute the binomial coefficient of `n choose k'. - * Use the fact that binom(n, k) = binom(n, n - k). - * Use a lookup table (triangle, actually) for speed. - * Otherwise it's dumb (heart) recursion. - * Added relative to Corin Lawson: - * * Passing in of sample number through pointer to args struct - * * Make quick lookup table external to keep it persistent with clean allocation - * and freeing - */ -uint64_t choose(unsigned int n, unsigned int k) { - if (n == 0) - return 0; - if (n == k || k == 0) - return 1; - if (k > n / 2) - k = n - k; - - unsigned int i = (n * (n - 1)) / 4 + k - 1; - if (args.quick[i] == 0) - args.quick[i] = choose(n - 1, k - 1) + choose(n - 1, k); - - return args.quick[i]; -} - -/* - * Returns the Banker's number at the specified position, a. - * Derived from the recursive bit flip method. - * Added relative to Corin Lawson: - * * Uses same lookup table solution as choose function, just - * maintained externally to persist across separate function calls. - * * Uses bitwise symmetry of banker's sequence to use bitwise inversion - * instead of recursive bit flip for second half of sequence. - */ -uint32_t compute_bankers(unsigned long a) -{ - if (a == 0) - return 0; - - if ( args.bankers[a] == 0 ) - { - if ( a >= (args.nsmpp2 / 2) ) - return args.bankers[a] = ( compute_bankers(args.nsmpp2 - (a+1)) ^ (args.nsmpp2 - 1) ); // use bitwise symmetry of bankers sequence - unsigned int c = 0; - uint32_t n = args.nsmp; - uint64_t e = a, binom; - binom = choose(n, c); - do { - e -= binom; - } while ((binom = choose(n, ++c)) <= e); - - do { - if (e == 0 || (binom = choose(n - 1, c - 1)) > e) - c--, args.bankers[a] |= 1; - else - e -= binom; - } while (--n && c && ((args.bankers[a] <<= 1) || 1)); - args.bankers[a] <<= n; - } - - return args.bankers[a]; -} - -// ADAPTED CODE FROM CORIN LAWSON END - - -/* - * GT field (genotype) comparison function. - */ -bcf1_t *process(bcf1_t *rec) -{ - uint64_t i; - bcf_unpack(rec, BCF_UN_FMT); // unpack the Format fields, including the GT field - int gte_smp = 0; // number GT array entries per sample (should be 2, one entry per allele) - if ( (gte_smp = bcf_get_genotypes(args.hdr, rec, &(args.gt_arr), &(args.ngt_arr) ) ) <= 0 ) - { - error("GT not present at %s: %d\n", args.hdr->id[BCF_DT_CTG][rec->rid].key, rec->pos+1); - } - - gte_smp /= args.nsmp; // divide total number of genotypes array entries (= args.ngt_arr) by number of samples - int ret; - - // stick all genotypes in a hash as keys and store up to 32 samples in a corresponding flag as its value - khiter_t bucket; - khash_t(gts2smps) *gts = kh_init(gts2smps); // create hash - for ( i = 0; i < args.nsmp; i++ ) - { - int *gt_ptr = args.gt_arr + gte_smp * i; - - if (bcf_gt_is_missing(gt_ptr[0]) || ( gte_smp == 2 && bcf_gt_is_missing(gt_ptr[1]) ) ) - { - if ( args.flag & MISSING ) args.missing_gts[i]++; // count missing genotypes, if requested - continue; // don't do anything else for missing genotypes, their "sharing" gives no info... - } - - int a = bcf_gt_allele(gt_ptr[0]); - int b; - if ( gte_smp == 2 ) // two entries available per sample, padded with missing values for haploid genotypes - { - b = bcf_gt_allele(gt_ptr[1]); - } - else if (gte_smp == 1 ) // use missing value for second entry in hash key generation below, if only one is available - { - b = bcf_gt_allele(bcf_int32_vector_end); - } - else - { - error("gtisec does not support ploidy higher than 2.\n"); - } - - int idx = bcf_alleles2gt(a,b); // generate genotype specific hash key - - bucket = kh_get(gts2smps, gts, idx); // get the genotype's hash bucket - - if ( bucket == kh_end(gts) ) { // means that key does not exist - bucket = kh_put(gts2smps, gts, idx, &ret); // create bucket with genotype index as key and return its iterator - kh_val(gts, bucket) = 0; // initialize the bucket with all sample bits unset - } - kh_value(gts, bucket) |= (1<= 0; s--) - { - if ( args.flag & MISSING ) // if missing genotype counts are requested, print them to standard output - { - fprintf(fp, "%"PRIu64"\t%s-\n", args.missing_gts[s], bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, s)); - } - for ( i = 1; i < args.nsmpp2; i++ ) - { - if ( (args.bankers[i]>>s) & 1 ) - { - fprintf(fp, "%"PRIu64"\t", args.smp_is[ args.bankers[i] ]); // print out count of genotypes shared by samples in current banker's sequence position - int j; - /* Print sample list */ - fprintf(fp, "%s", bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, s)); // print current sample first - for ( j = args.nsmp-1; j >= 0; j-- ) - { - if ( (args.bankers[i] ^ (1<= 0; s--) - { - fprintf(fp, "%"PRIu64"\t%s-\n", args.missing_gts[s], bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, s)); - } - } - for ( i = 1; i < args.nsmpp2; i++ ) - { - fprintf(fp, "%"PRIu64"\t", args.smp_is[ args.bankers[i] ]); // print out count of genotypes shared by samples in current banker's sequence position - int j = 0; - for ( s = args.nsmp-1; s >= 0; s--) - { - if ( (args.bankers[i]>>s) & 1 ) - { - fprintf(fp, "%s%s", j ? "," : "", bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, s) ); // samples in specified order - j = 1; - } - } - fprintf(fp, "\n" ); - } - } - else - { - if ( args.flag & MISSING ) // if missing genotype counts are requested, print them to standard output - { - for ( s = args.nsmp-1; s >= 0; s--) - { - fprintf(fp, "%"PRIu64"\n", args.missing_gts[s]); - } - } - for ( i = 1; i < args.nsmpp2; i++ ) - { - fprintf(fp, "%"PRIu64"\n", args.smp_is[ args.bankers[i] ]); // print out count of genotypes shared by samples in current banker's sequence position - } - } - fclose(fp); - - /* freeing up args */ - free(args.gt_arr); - free(args.bankers); - free(args.quick); - if (args.flag & MISSING) free(args.missing_gts); - free(args.smp_is); -} diff --git a/bcftools/plugins/GTsubset.c b/bcftools/plugins/GTsubset.c deleted file mode 100644 index 69e7dbe..0000000 --- a/bcftools/plugins/GTsubset.c +++ /dev/null @@ -1,266 +0,0 @@ -/* plugins/GTsubset.c -- output only positions where the selected samples exclusively - share a genotype, i.e. all selected samples must have the same - genotype (including both alleles) and none of the unselected - samples can have the same genotype - - Copyright (C) 2016 Computational Biology of Infection Research, - Helmholtz Centre for Infection Research, Braunschweig, - Germany - - Author: David Laehnemann - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "bcftools.h" - -typedef struct _args_t -{ - bcf_hdr_t *hdr; /*! VCF file header */ - int *gt_arr; /*! temporary array, to store GTs of current line/record */ - int ngt_arr; /*! hold the number of current GT array entries */ - int nsmp; /*! number of samples, can be determined from header but is needed in multiple contexts */ - int n_sel_smps; /*! number of selected samples who should exclusively share genotypes */ - int *selected_smps; /*! pointer to start of array containing 1 at indices corresponding to selected samples in header dict and 0 at others*/ -} -args_t; - -static args_t args; - -const char *about(void) -{ - return "Output only sites where the requested samples all exclusively share a genotype (GT).\n"; -} - - -const char *usage(void) -{ - return - "\n" - "About: Output only sites where the requested samples all exclusively share a genotype (GT), i.e.\n" - " all selected samples must have the same GT, while non of the others can have it.\n" - "Usage: bcftools +GTsubset [General Options] -- [Plugin Options] \n" - "\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -s,--sample-list comma-separated list of samples; only those sites where all of these\n" - " samples exclusively share their genotype are given as output\n" - "\n" - "Example:\n" - " bcftools +GTsubset in.vcf -- -s SMP1,SMP2 \n" - "\n"; -} - - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - memset(&args,0,sizeof(args_t)); - - int i; - - static struct option loptions[] = - { - {"help", no_argument, 0,'h'}, - {"sample-list", required_argument, 0,'s'}, - {0,0,0,0} - }; - - char **smps_strs = NULL; - - int c; - while ((c = getopt_long(argc, argv, "?s:h",loptions,NULL)) >= 0) - { - switch (c) - { - case 's': smps_strs = hts_readlist(optarg,0,&(args.n_sel_smps)); - if ( args.n_sel_smps == 0 ) - { - fprintf(stderr, "Sample specification not valid.\n"); - error("%s", usage()); - } - break; - case 'h': usage(); break; - case '?': - default: error("%s", usage()); break; - } - } - if ( optind != argc ) usage(); // too many files given - - args.hdr = bcf_hdr_dup(in); - - // Samples parsing from header and input option - if ( !bcf_hdr_nsamples(args.hdr) ) - { - error("No samples in input file.\n"); - } - args.nsmp = bcf_hdr_nsamples(args.hdr); - args.selected_smps = (int*) calloc(args.nsmp,sizeof(int)); - for ( i = 0; i < args.n_sel_smps; i++ ) - { - int ind = bcf_hdr_id2int(args.hdr, BCF_DT_SAMPLE, smps_strs[i]); - if ( ind == -1 ) - { - error("Sample '%s' not in input vcf file.\n", smps_strs[i]); - } else { - args.selected_smps[ind] = 1; - } - free(smps_strs[i]); - } - free(smps_strs); - - /* - fprintf(stderr, "Selected samples array:["); - for (i=0;iid[BCF_DT_CTG][rec->rid].key, rec->pos+1); - } - - gte_smp /= args.nsmp; // divide total number of genotypes array entries (= args.ngt_arr) by number of samples - - // initialize with missing genotype - int a1 = 0; - int a2 = 0; - - // initialize with first selected sample genotype that is not missing - int gt = -1; - while ( (a1 == 0) || (a2 == 0) ) - { - gt++; - if (gt == args.nsmp) break; - if (args.selected_smps[gt] == 0) continue; - a1 = (args.gt_arr + gte_smp * gt)[0]; - if ( gte_smp == 2 ) a2 = (args.gt_arr + gte_smp * gt)[1]; - else if ( gte_smp == 1 ) a2 = bcf_int32_vector_end; - else error("GTsubset does not support ploidy higher than 2.\n"); - } -// fprintf(stderr, "a1: %i a2: %i\n", a1, a2); - - // check all genotypes if they match (for included samples) or disagree (for samples not included) - gt = 0; - for ( i = 0; i < args.nsmp; i++ ) - { - int *gt_ptr = args.gt_arr + gte_smp * i; - - int b1 = gt_ptr[0]; - int b2; - if ( gte_smp == 2 ) // two entries available per sample, padded with missing values for haploid genotypes - { - b2 = gt_ptr[1]; - } - else if (gte_smp == 1 ) // use vector end value for second entry, if only one is available - { - b2 = bcf_int32_vector_end; - } - else - { - error("GTsubset does not support ploidy higher than 2.\n"); - } - - // fprintf(stderr, "b1: %i b2: %i\n", b1, b2); - /* missing genotypes are counted as always passing, as they neither - * mismatch the initial selected genotype for a selected sample, nor - * do they match the initial selected genotype for an excluded sample's - * genotype */ - if ( (b1 == 0) || (b2 == 0) ) - { - gt++; -// fprintf(stderr, "missing => pass\n"); - continue; - } - else if ( args.selected_smps[i] == 1 ) - { - if ( (b1 == a1) && (b2 == a2) ) - { - gt++; -// fprintf(stderr, "match => pass\n"); - continue; - } - else - { -// fprintf(stderr, "no match => fail\n"); - break; - } - } - else if ( args.selected_smps[i] == 0 ) - { - if ( (b1 != a1 ) || (b2 != a2) ) - { - gt++; - // fprintf(stderr, "no match => pass\n"); - continue; - } - else - { -// fprintf(stderr, "match => fail\n"); - break; - } - } - } - if ( gt == args.nsmp ) - { - return rec; - } - else - { - return NULL; - } -} - -void destroy(void) -{ - /* freeing up args */ - bcf_hdr_destroy(args.hdr); - free(args.gt_arr); - free(args.selected_smps); -} diff --git a/bcftools/plugins/GTsubset.c.pysam.c b/bcftools/plugins/GTsubset.c.pysam.c deleted file mode 100644 index d4f8658..0000000 --- a/bcftools/plugins/GTsubset.c.pysam.c +++ /dev/null @@ -1,268 +0,0 @@ -#include "bcftools.pysam.h" - -/* plugins/GTsubset.c -- output only positions where the selected samples exclusively - share a genotype, i.e. all selected samples must have the same - genotype (including both alleles) and none of the unselected - samples can have the same genotype - - Copyright (C) 2016 Computational Biology of Infection Research, - Helmholtz Centre for Infection Research, Braunschweig, - Germany - - Author: David Laehnemann - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "bcftools.h" - -typedef struct _args_t -{ - bcf_hdr_t *hdr; /*! VCF file header */ - int *gt_arr; /*! temporary array, to store GTs of current line/record */ - int ngt_arr; /*! hold the number of current GT array entries */ - int nsmp; /*! number of samples, can be determined from header but is needed in multiple contexts */ - int n_sel_smps; /*! number of selected samples who should exclusively share genotypes */ - int *selected_smps; /*! pointer to start of array containing 1 at indices corresponding to selected samples in header dict and 0 at others*/ -} -args_t; - -static args_t args; - -const char *about(void) -{ - return "Output only sites where the requested samples all exclusively share a genotype (GT).\n"; -} - - -const char *usage(void) -{ - return - "\n" - "About: Output only sites where the requested samples all exclusively share a genotype (GT), i.e.\n" - " all selected samples must have the same GT, while non of the others can have it.\n" - "Usage: bcftools +GTsubset [General Options] -- [Plugin Options] \n" - "\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -s,--sample-list comma-separated list of samples; only those sites where all of these\n" - " samples exclusively share their genotype are given as output\n" - "\n" - "Example:\n" - " bcftools +GTsubset in.vcf -- -s SMP1,SMP2 \n" - "\n"; -} - - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - memset(&args,0,sizeof(args_t)); - - int i; - - static struct option loptions[] = - { - {"help", no_argument, 0,'h'}, - {"sample-list", required_argument, 0,'s'}, - {0,0,0,0} - }; - - char **smps_strs = NULL; - - int c; - while ((c = getopt_long(argc, argv, "?s:h",loptions,NULL)) >= 0) - { - switch (c) - { - case 's': smps_strs = hts_readlist(optarg,0,&(args.n_sel_smps)); - if ( args.n_sel_smps == 0 ) - { - fprintf(bcftools_stderr, "Sample specification not valid.\n"); - error("%s", usage()); - } - break; - case 'h': usage(); break; - case '?': - default: error("%s", usage()); break; - } - } - if ( optind != argc ) usage(); // too many files given - - args.hdr = bcf_hdr_dup(in); - - // Samples parsing from header and input option - if ( !bcf_hdr_nsamples(args.hdr) ) - { - error("No samples in input file.\n"); - } - args.nsmp = bcf_hdr_nsamples(args.hdr); - args.selected_smps = (int*) calloc(args.nsmp,sizeof(int)); - for ( i = 0; i < args.n_sel_smps; i++ ) - { - int ind = bcf_hdr_id2int(args.hdr, BCF_DT_SAMPLE, smps_strs[i]); - if ( ind == -1 ) - { - error("Sample '%s' not in input vcf file.\n", smps_strs[i]); - } else { - args.selected_smps[ind] = 1; - } - free(smps_strs[i]); - } - free(smps_strs); - - /* - fprintf(bcftools_stderr, "Selected samples array:["); - for (i=0;iid[BCF_DT_CTG][rec->rid].key, rec->pos+1); - } - - gte_smp /= args.nsmp; // divide total number of genotypes array entries (= args.ngt_arr) by number of samples - - // initialize with missing genotype - int a1 = 0; - int a2 = 0; - - // initialize with first selected sample genotype that is not missing - int gt = -1; - while ( (a1 == 0) || (a2 == 0) ) - { - gt++; - if (gt == args.nsmp) break; - if (args.selected_smps[gt] == 0) continue; - a1 = (args.gt_arr + gte_smp * gt)[0]; - if ( gte_smp == 2 ) a2 = (args.gt_arr + gte_smp * gt)[1]; - else if ( gte_smp == 1 ) a2 = bcf_int32_vector_end; - else error("GTsubset does not support ploidy higher than 2.\n"); - } -// fprintf(bcftools_stderr, "a1: %i a2: %i\n", a1, a2); - - // check all genotypes if they match (for included samples) or disagree (for samples not included) - gt = 0; - for ( i = 0; i < args.nsmp; i++ ) - { - int *gt_ptr = args.gt_arr + gte_smp * i; - - int b1 = gt_ptr[0]; - int b2; - if ( gte_smp == 2 ) // two entries available per sample, padded with missing values for haploid genotypes - { - b2 = gt_ptr[1]; - } - else if (gte_smp == 1 ) // use vector end value for second entry, if only one is available - { - b2 = bcf_int32_vector_end; - } - else - { - error("GTsubset does not support ploidy higher than 2.\n"); - } - - // fprintf(bcftools_stderr, "b1: %i b2: %i\n", b1, b2); - /* missing genotypes are counted as always passing, as they neither - * mismatch the initial selected genotype for a selected sample, nor - * do they match the initial selected genotype for an excluded sample's - * genotype */ - if ( (b1 == 0) || (b2 == 0) ) - { - gt++; -// fprintf(bcftools_stderr, "missing => pass\n"); - continue; - } - else if ( args.selected_smps[i] == 1 ) - { - if ( (b1 == a1) && (b2 == a2) ) - { - gt++; -// fprintf(bcftools_stderr, "match => pass\n"); - continue; - } - else - { -// fprintf(bcftools_stderr, "no match => fail\n"); - break; - } - } - else if ( args.selected_smps[i] == 0 ) - { - if ( (b1 != a1 ) || (b2 != a2) ) - { - gt++; - // fprintf(bcftools_stderr, "no match => pass\n"); - continue; - } - else - { -// fprintf(bcftools_stderr, "match => fail\n"); - break; - } - } - } - if ( gt == args.nsmp ) - { - return rec; - } - else - { - return NULL; - } -} - -void destroy(void) -{ - /* freeing up args */ - bcf_hdr_destroy(args.hdr); - free(args.gt_arr); - free(args.selected_smps); -} diff --git a/bcftools/plugins/ad-bias.c b/bcftools/plugins/ad-bias.c deleted file mode 100644 index ee6a07e..0000000 --- a/bcftools/plugins/ad-bias.c +++ /dev/null @@ -1,226 +0,0 @@ -/* The MIT License - - Copyright (c) 2016 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "convert.h" - -typedef struct -{ - int smpl,ctrl; // VCF sample index - const char *smpl_name, *ctrl_name; -} -pair_t; - -typedef struct -{ - bcf_hdr_t *hdr; - pair_t *pair; - int npair, mpair, min_dp, min_alt_dp; - int32_t *ad_arr; - int mad_arr; - double th; - convert_t *convert; - kstring_t str; - uint64_t nsite,ncmp; -} -args_t; - -args_t args; - -const char *about(void) -{ - return "Find positions with wildly varying ALT allele frequency (Fisher test on FMT/AD).\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Find positions with wildly varying ALT allele frequency (Fisher test on FMT/AD).\n" - "Usage: bcftools +ad-bias [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -a, --min-alt-dp Minimum required alternate allele depth [1]\n" - " -d, --min-dp Minimum required depth [0]\n" - " -f, --format Optional tags to append to output (`bcftools query` style of format)\n" - " -s, --samples List of sample pairs, one tab-delimited pair per line\n" - " -t, --threshold Output only hits with p-value smaller than [1e-3]\n" - "\n" - "Example:\n" - " bcftools +ad-bias file.bcf -- -t 1e-3 -s samples.txt\n" - "\n"; -} - -void parse_samples(args_t *args, char *fname) -{ - htsFile *fp = hts_open(fname, "r"); - if ( !fp ) error("Could not read: %s\n", fname); - - kstring_t str = {0,0,0}; - if ( hts_getline(fp, KS_SEP_LINE, &str) <= 0 ) error("Empty file: %s\n", fname); - - int moff = 0, *off = NULL; - do - { - // HPSI0513i-veqz_6 HPSI0513pf-veqz - int ncols = ksplit_core(str.s,'\t',&moff,&off); - if ( ncols<2 ) error("Could not parse the sample file: %s\n", str.s); - - int smpl = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[0]]); - if ( smpl<0 ) continue; - int ctrl = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[1]]); - if ( ctrl<0 ) continue; - - args->npair++; - hts_expand0(pair_t,args->npair,args->mpair,args->pair); - pair_t *pair = &args->pair[args->npair-1]; - pair->ctrl = ctrl; - pair->smpl = smpl; - pair->smpl_name = bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,pair->smpl); - pair->ctrl_name = bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,pair->ctrl); - } while ( hts_getline(fp, KS_SEP_LINE, &str)>=0 ); - - free(str.s); - free(off); - hts_close(fp); -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - memset(&args,0,sizeof(args_t)); - args.hdr = in; - args.th = 1e-3; - args.min_alt_dp = 1; - char *fname = NULL, *format = NULL; - static struct option loptions[] = - { - {"min-dp",required_argument,NULL,'d'}, - {"min-alt-dp",required_argument,NULL,'a'}, - {"format",required_argument,NULL,'f'}, - {"samples",required_argument,NULL,'s'}, - {"threshold",required_argument,NULL,'t'}, - {NULL,0,NULL,0} - }; - int c; - char *tmp; - while ((c = getopt_long(argc, argv, "?hs:t:f:d:a:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'a': - args.min_alt_dp = strtol(optarg,&tmp,10); - if ( *tmp ) error("Could not parse: -a %s\n", optarg); - break; - case 'd': - args.min_dp = strtol(optarg,&tmp,10); - if ( *tmp ) error("Could not parse: -d %s\n", optarg); - break; - case 't': - args.th = strtod(optarg,&tmp); - if ( *tmp ) error("Could not parse: -t %s\n", optarg); - break; - case 's': fname = optarg; break; - case 'f': format = optarg; break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - if ( !fname ) error("Expected the -s option\n"); - parse_samples(&args, fname); - if ( format ) args.convert = convert_init(args.hdr, NULL, 0, format); - printf("# This file was produced by: bcftools +ad-bias(%s+htslib-%s)\n", bcftools_version(),hts_version()); - printf("# The command line was:\tbcftools +ad-bias %s", argv[0]); - for (c=1; csmpl; - int32_t *bptr = args.ad_arr + nad*pair->ctrl; - - if ( aptr[0]==bcf_int32_missing ) continue; - if ( bptr[0]==bcf_int32_missing ) continue; - if ( aptr[0]+aptr[1] < args.min_dp ) continue; - if ( bptr[0]+bptr[1] < args.min_dp ) continue; - if ( aptr[1] < args.min_alt_dp && bptr[1] < args.min_alt_dp ) continue; - - args.ncmp++; - - int n11 = aptr[0], n12 = aptr[1]; - int n21 = bptr[0], n22 = bptr[1]; - double left, right, fisher; - kt_fisher_exact(n11,n12,n21,n22, &left,&right,&fisher); - if ( fisher >= args.th ) continue; - - printf("FT\t%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%e", - pair->smpl_name,pair->ctrl_name, - bcf_hdr_id2name(args.hdr,rec->rid), rec->pos+1, - n11,n12,n21,n22, fisher - ); - if ( args.convert ) printf("\t%s", args.str.s); - printf("\n"); - } - return NULL; -} - -void destroy(void) -{ - printf("# SN, Summary Numbers\t[2]Number of Pairs\t[3]Number of Sites\t[4]Number of comparisons\t[5]P-value output threshold\n"); - printf("SN\t%d\t%"PRId64"\t%"PRId64"\t%e\n",args.npair,args.nsite,args.ncmp,args.th); - if (args.convert) convert_destroy(args.convert); - free(args.str.s); - free(args.pair); - free(args.ad_arr); -} diff --git a/bcftools/plugins/ad-bias.c.pysam.c b/bcftools/plugins/ad-bias.c.pysam.c deleted file mode 100644 index 894dd4c..0000000 --- a/bcftools/plugins/ad-bias.c.pysam.c +++ /dev/null @@ -1,228 +0,0 @@ -#include "bcftools.pysam.h" - -/* The MIT License - - Copyright (c) 2016 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "convert.h" - -typedef struct -{ - int smpl,ctrl; // VCF sample index - const char *smpl_name, *ctrl_name; -} -pair_t; - -typedef struct -{ - bcf_hdr_t *hdr; - pair_t *pair; - int npair, mpair, min_dp, min_alt_dp; - int32_t *ad_arr; - int mad_arr; - double th; - convert_t *convert; - kstring_t str; - uint64_t nsite,ncmp; -} -args_t; - -args_t args; - -const char *about(void) -{ - return "Find positions with wildly varying ALT allele frequency (Fisher test on FMT/AD).\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Find positions with wildly varying ALT allele frequency (Fisher test on FMT/AD).\n" - "Usage: bcftools +ad-bias [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -a, --min-alt-dp Minimum required alternate allele depth [1]\n" - " -d, --min-dp Minimum required depth [0]\n" - " -f, --format Optional tags to append to output (`bcftools query` style of format)\n" - " -s, --samples List of sample pairs, one tab-delimited pair per line\n" - " -t, --threshold Output only hits with p-value smaller than [1e-3]\n" - "\n" - "Example:\n" - " bcftools +ad-bias file.bcf -- -t 1e-3 -s samples.txt\n" - "\n"; -} - -void parse_samples(args_t *args, char *fname) -{ - htsFile *fp = hts_open(fname, "r"); - if ( !fp ) error("Could not read: %s\n", fname); - - kstring_t str = {0,0,0}; - if ( hts_getline(fp, KS_SEP_LINE, &str) <= 0 ) error("Empty file: %s\n", fname); - - int moff = 0, *off = NULL; - do - { - // HPSI0513i-veqz_6 HPSI0513pf-veqz - int ncols = ksplit_core(str.s,'\t',&moff,&off); - if ( ncols<2 ) error("Could not parse the sample file: %s\n", str.s); - - int smpl = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[0]]); - if ( smpl<0 ) continue; - int ctrl = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[1]]); - if ( ctrl<0 ) continue; - - args->npair++; - hts_expand0(pair_t,args->npair,args->mpair,args->pair); - pair_t *pair = &args->pair[args->npair-1]; - pair->ctrl = ctrl; - pair->smpl = smpl; - pair->smpl_name = bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,pair->smpl); - pair->ctrl_name = bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,pair->ctrl); - } while ( hts_getline(fp, KS_SEP_LINE, &str)>=0 ); - - free(str.s); - free(off); - hts_close(fp); -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - memset(&args,0,sizeof(args_t)); - args.hdr = in; - args.th = 1e-3; - args.min_alt_dp = 1; - char *fname = NULL, *format = NULL; - static struct option loptions[] = - { - {"min-dp",required_argument,NULL,'d'}, - {"min-alt-dp",required_argument,NULL,'a'}, - {"format",required_argument,NULL,'f'}, - {"samples",required_argument,NULL,'s'}, - {"threshold",required_argument,NULL,'t'}, - {NULL,0,NULL,0} - }; - int c; - char *tmp; - while ((c = getopt_long(argc, argv, "?hs:t:f:d:a:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'a': - args.min_alt_dp = strtol(optarg,&tmp,10); - if ( *tmp ) error("Could not parse: -a %s\n", optarg); - break; - case 'd': - args.min_dp = strtol(optarg,&tmp,10); - if ( *tmp ) error("Could not parse: -d %s\n", optarg); - break; - case 't': - args.th = strtod(optarg,&tmp); - if ( *tmp ) error("Could not parse: -t %s\n", optarg); - break; - case 's': fname = optarg; break; - case 'f': format = optarg; break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - if ( !fname ) error("Expected the -s option\n"); - parse_samples(&args, fname); - if ( format ) args.convert = convert_init(args.hdr, NULL, 0, format); - fprintf(bcftools_stdout, "# This file was produced by: bcftools +ad-bias(%s+htslib-%s)\n", bcftools_version(),hts_version()); - fprintf(bcftools_stdout, "# The command line was:\tbcftools +ad-bias %s", argv[0]); - for (c=1; csmpl; - int32_t *bptr = args.ad_arr + nad*pair->ctrl; - - if ( aptr[0]==bcf_int32_missing ) continue; - if ( bptr[0]==bcf_int32_missing ) continue; - if ( aptr[0]+aptr[1] < args.min_dp ) continue; - if ( bptr[0]+bptr[1] < args.min_dp ) continue; - if ( aptr[1] < args.min_alt_dp && bptr[1] < args.min_alt_dp ) continue; - - args.ncmp++; - - int n11 = aptr[0], n12 = aptr[1]; - int n21 = bptr[0], n22 = bptr[1]; - double left, right, fisher; - kt_fisher_exact(n11,n12,n21,n22, &left,&right,&fisher); - if ( fisher >= args.th ) continue; - - fprintf(bcftools_stdout, "FT\t%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%e", - pair->smpl_name,pair->ctrl_name, - bcf_hdr_id2name(args.hdr,rec->rid), rec->pos+1, - n11,n12,n21,n22, fisher - ); - if ( args.convert ) fprintf(bcftools_stdout, "\t%s", args.str.s); - fprintf(bcftools_stdout, "\n"); - } - return NULL; -} - -void destroy(void) -{ - fprintf(bcftools_stdout, "# SN, Summary Numbers\t[2]Number of Pairs\t[3]Number of Sites\t[4]Number of comparisons\t[5]P-value output threshold\n"); - fprintf(bcftools_stdout, "SN\t%d\t%"PRId64"\t%"PRId64"\t%e\n",args.npair,args.nsite,args.ncmp,args.th); - if (args.convert) convert_destroy(args.convert); - free(args.str.s); - free(args.pair); - free(args.ad_arr); -} diff --git a/bcftools/plugins/af-dist.c b/bcftools/plugins/af-dist.c deleted file mode 100644 index 819adc9..0000000 --- a/bcftools/plugins/af-dist.c +++ /dev/null @@ -1,220 +0,0 @@ -/* The MIT License - - Copyright (c) 2016 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "bin.h" - -typedef struct -{ - char *af_tag; - bcf_hdr_t *hdr; - int32_t *gt, ngt, naf; - float *af, list_min, list_max; - bin_t *dev_bins, *prob_bins; - uint64_t *dev_dist, *prob_dist; -} -args_t; - -args_t *args; - -const char *about(void) -{ - return "AF and GT probability distribution stats.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Collect AF deviation stats and GT probability distribution\n" - " given AF and assuming HWE\n" - "Usage: bcftools +af-dist [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -d, --dev-bins AF deviation bins\n" - " -l, --list list genotypes from the given bin (for debugging)\n" - " -p, --prob-bins probability distribution bins\n" - " -t, --af-tag VCF INFO tag to use [AF]\n" - "\n" - "Default binning:\n" - " -d: 0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1\n" - " -p: 0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1\n" - "Example:\n" - " bcftools +af-tag file.bcf -- -t EUR_AF -p bins.txt\n" - "\n"; -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - args = (args_t*) calloc(1,sizeof(args_t)); - char *dev_bins = "0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1"; - char *prob_bins = "0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1"; - args->hdr = in; - args->af_tag = "AF"; - args->list_min = -1; - static struct option loptions[] = - { - {"list",required_argument,NULL,'l'}, - {"dev-bins",required_argument,NULL,'d'}, - {"prob-bins",required_argument,NULL,'p'}, - {"af-tag",required_argument,NULL,'t'}, - {NULL,0,NULL,0} - }; - int c; - while ((c = getopt_long(argc, argv, "?ht:d:p:l:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'l': - { - char *a,*b; - args->list_min = strtod(optarg,&a); - if ( a==optarg || *a!=',' ) error("Could not parse: --list %s\n", optarg); - args->list_max = strtod(a+1,&b); - if ( a+1==b || *b ) error("Could not parse: --list %s\n", optarg); - break; - } - case 'd': dev_bins = optarg; break; - case 'p': prob_bins = optarg; break; - case 't': args->af_tag = optarg; break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - - args->dev_bins = bin_init(dev_bins,0,1); - int nbins = bin_get_size(args->dev_bins); - args->dev_dist = (uint64_t*)calloc(nbins,sizeof(*args->dev_dist)); - - args->prob_bins = bin_init(prob_bins,0,1); - nbins = bin_get_size(args->prob_bins); - args->prob_dist = (uint64_t*)calloc(nbins,sizeof(*args->prob_dist)); - - printf("# This file was produced by: bcftools +af-dist(%s+htslib-%s)\n", bcftools_version(),hts_version()); - printf("# The command line was:\tbcftools +af-dist %s", argv[0]); - for (c=1; clist_min!=-1 ) - printf("# GT, genotypes with P(AF) in [%f,%f]; [2]Chromosome\t[3]Position[4]Sample\t[5]Genotype\t[6]AF-based probability\n",args->list_min,args->list_max); - - return 1; -} - -bcf1_t *process(bcf1_t *rec) -{ - int naf = bcf_get_info_float(args->hdr,rec,args->af_tag,&args->af,&args->naf); - if ( naf<=0 ) return NULL; - float af = args->af[0]; - - float pRA = 2*af*(1-af); - float pAA = af*af; - int iRA = bin_get_idx(args->prob_bins,pRA); - int iAA = bin_get_idx(args->prob_bins,pAA); - - int list_RA = args->list_min==-1 || pRA < args->list_min || pRA > args->list_max ? 0 : 1; - int list_AA = args->list_min==-1 || pAA < args->list_min || pAA > args->list_max ? 0 : 1; - const char *chr = bcf_seqname(args->hdr,rec); - - int ngt = bcf_get_genotypes(args->hdr, rec, &args->gt, &args->ngt); - int i, j, nsmpl = bcf_hdr_nsamples(args->hdr); - int nals = 0, nalt = 0; - ngt /= nsmpl; - for (i=0; igt + i*ngt; - int dosage = 0; - for (j=0; jprob_dist[iRA]++; - if ( list_RA ) printf("GT\t%s\t%d\t%s\t1\t%f\n",chr,rec->pos+1,args->hdr->samples[i],pRA); - } - else if ( dosage==2 ) - { - args->prob_dist[iAA]++; - if ( list_AA ) printf("GT\t%s\t%d\t%s\t2\t%f\n",chr,rec->pos+1,args->hdr->samples[i],pAA); - } - } - - if ( nals && (nalt || af) ) - { - float af_dev = fabs(af - (float)nalt/nals); - int iAF = bin_get_idx(args->dev_bins,af_dev); - args->dev_dist[iAF]++; - } - - return NULL; -} - -void destroy(void) -{ - printf("# PROB_DIST, genotype probability distribution, assumes HWE\n"); - int i, n; - n = bin_get_size(args->prob_bins); - for (i=0; iprob_bins,i); - float max = bin_get_value(args->prob_bins,i+1); - printf("PROB_DIST\t%f\t%f\t%"PRId64"\n", min,max,args->prob_dist[i]); - } - printf("# DEV_DIST, distribution of AF deviation, based on %s and INFO/AN, AC calculated on the fly\n", args->af_tag); - n = bin_get_size(args->dev_bins); - for (i=0; idev_bins,i); - float max = bin_get_value(args->dev_bins,i+1); - printf("DEV_DIST\t%f\t%f\t%"PRId64"\n", min,max,args->dev_dist[i]); - } - bin_destroy(args->dev_bins); - bin_destroy(args->prob_bins); - free(args->dev_dist); - free(args->prob_dist); - free(args->gt); - free(args->af); - free(args); -} - - diff --git a/bcftools/plugins/af-dist.c.pysam.c b/bcftools/plugins/af-dist.c.pysam.c deleted file mode 100644 index 5dc67b3..0000000 --- a/bcftools/plugins/af-dist.c.pysam.c +++ /dev/null @@ -1,222 +0,0 @@ -#include "bcftools.pysam.h" - -/* The MIT License - - Copyright (c) 2016 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "bin.h" - -typedef struct -{ - char *af_tag; - bcf_hdr_t *hdr; - int32_t *gt, ngt, naf; - float *af, list_min, list_max; - bin_t *dev_bins, *prob_bins; - uint64_t *dev_dist, *prob_dist; -} -args_t; - -args_t *args; - -const char *about(void) -{ - return "AF and GT probability distribution stats.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Collect AF deviation stats and GT probability distribution\n" - " given AF and assuming HWE\n" - "Usage: bcftools +af-dist [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -d, --dev-bins AF deviation bins\n" - " -l, --list list genotypes from the given bin (for debugging)\n" - " -p, --prob-bins probability distribution bins\n" - " -t, --af-tag VCF INFO tag to use [AF]\n" - "\n" - "Default binning:\n" - " -d: 0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1\n" - " -p: 0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1\n" - "Example:\n" - " bcftools +af-tag file.bcf -- -t EUR_AF -p bins.txt\n" - "\n"; -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - args = (args_t*) calloc(1,sizeof(args_t)); - char *dev_bins = "0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1"; - char *prob_bins = "0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1"; - args->hdr = in; - args->af_tag = "AF"; - args->list_min = -1; - static struct option loptions[] = - { - {"list",required_argument,NULL,'l'}, - {"dev-bins",required_argument,NULL,'d'}, - {"prob-bins",required_argument,NULL,'p'}, - {"af-tag",required_argument,NULL,'t'}, - {NULL,0,NULL,0} - }; - int c; - while ((c = getopt_long(argc, argv, "?ht:d:p:l:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'l': - { - char *a,*b; - args->list_min = strtod(optarg,&a); - if ( a==optarg || *a!=',' ) error("Could not parse: --list %s\n", optarg); - args->list_max = strtod(a+1,&b); - if ( a+1==b || *b ) error("Could not parse: --list %s\n", optarg); - break; - } - case 'd': dev_bins = optarg; break; - case 'p': prob_bins = optarg; break; - case 't': args->af_tag = optarg; break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - - args->dev_bins = bin_init(dev_bins,0,1); - int nbins = bin_get_size(args->dev_bins); - args->dev_dist = (uint64_t*)calloc(nbins,sizeof(*args->dev_dist)); - - args->prob_bins = bin_init(prob_bins,0,1); - nbins = bin_get_size(args->prob_bins); - args->prob_dist = (uint64_t*)calloc(nbins,sizeof(*args->prob_dist)); - - fprintf(bcftools_stdout, "# This file was produced by: bcftools +af-dist(%s+htslib-%s)\n", bcftools_version(),hts_version()); - fprintf(bcftools_stdout, "# The command line was:\tbcftools +af-dist %s", argv[0]); - for (c=1; clist_min!=-1 ) - fprintf(bcftools_stdout, "# GT, genotypes with P(AF) in [%f,%f]; [2]Chromosome\t[3]Position[4]Sample\t[5]Genotype\t[6]AF-based probability\n",args->list_min,args->list_max); - - return 1; -} - -bcf1_t *process(bcf1_t *rec) -{ - int naf = bcf_get_info_float(args->hdr,rec,args->af_tag,&args->af,&args->naf); - if ( naf<=0 ) return NULL; - float af = args->af[0]; - - float pRA = 2*af*(1-af); - float pAA = af*af; - int iRA = bin_get_idx(args->prob_bins,pRA); - int iAA = bin_get_idx(args->prob_bins,pAA); - - int list_RA = args->list_min==-1 || pRA < args->list_min || pRA > args->list_max ? 0 : 1; - int list_AA = args->list_min==-1 || pAA < args->list_min || pAA > args->list_max ? 0 : 1; - const char *chr = bcf_seqname(args->hdr,rec); - - int ngt = bcf_get_genotypes(args->hdr, rec, &args->gt, &args->ngt); - int i, j, nsmpl = bcf_hdr_nsamples(args->hdr); - int nals = 0, nalt = 0; - ngt /= nsmpl; - for (i=0; igt + i*ngt; - int dosage = 0; - for (j=0; jprob_dist[iRA]++; - if ( list_RA ) fprintf(bcftools_stdout, "GT\t%s\t%d\t%s\t1\t%f\n",chr,rec->pos+1,args->hdr->samples[i],pRA); - } - else if ( dosage==2 ) - { - args->prob_dist[iAA]++; - if ( list_AA ) fprintf(bcftools_stdout, "GT\t%s\t%d\t%s\t2\t%f\n",chr,rec->pos+1,args->hdr->samples[i],pAA); - } - } - - if ( nals && (nalt || af) ) - { - float af_dev = fabs(af - (float)nalt/nals); - int iAF = bin_get_idx(args->dev_bins,af_dev); - args->dev_dist[iAF]++; - } - - return NULL; -} - -void destroy(void) -{ - fprintf(bcftools_stdout, "# PROB_DIST, genotype probability distribution, assumes HWE\n"); - int i, n; - n = bin_get_size(args->prob_bins); - for (i=0; iprob_bins,i); - float max = bin_get_value(args->prob_bins,i+1); - fprintf(bcftools_stdout, "PROB_DIST\t%f\t%f\t%"PRId64"\n", min,max,args->prob_dist[i]); - } - fprintf(bcftools_stdout, "# DEV_DIST, distribution of AF deviation, based on %s and INFO/AN, AC calculated on the fly\n", args->af_tag); - n = bin_get_size(args->dev_bins); - for (i=0; idev_bins,i); - float max = bin_get_value(args->dev_bins,i+1); - fprintf(bcftools_stdout, "DEV_DIST\t%f\t%f\t%"PRId64"\n", min,max,args->dev_dist[i]); - } - bin_destroy(args->dev_bins); - bin_destroy(args->prob_bins); - free(args->dev_dist); - free(args->prob_dist); - free(args->gt); - free(args->af); - free(args); -} - - diff --git a/bcftools/plugins/check-ploidy.c b/bcftools/plugins/check-ploidy.c deleted file mode 100644 index 51c4a3b..0000000 --- a/bcftools/plugins/check-ploidy.c +++ /dev/null @@ -1,165 +0,0 @@ -/* - Copyright (C) 2017 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" - -typedef struct -{ - char *sample; - int beg,end,ploidy; -} -dat_t; - -typedef struct -{ - int argc; - char **argv; - int rid, gt_id, ndat; - dat_t *dat; - bcf_hdr_t *hdr; -} -args_t; - -static args_t *args; - -const char *about(void) -{ - return "Check if ploidy of samples is consistent for all sites\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Check if ploidy of samples is consistent for all sites.\n" - "Usage: bcftools +check-ploidy [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Example:\n" - " bcftools +check-ploidy file.bcf\n" - "\n"; -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - args = (args_t*) calloc(1,sizeof(args_t)); - args->argc = argc; args->argv = argv; - args->hdr = in; - args->ndat = bcf_hdr_nsamples(args->hdr); - args->dat = (dat_t*) calloc(args->ndat,sizeof(dat_t)); - int i; - for (i=0; indat; i++) args->dat[i].sample = args->hdr->samples[i]; - args->rid = -1; - args->gt_id = bcf_hdr_id2int(args->hdr,BCF_DT_ID,"GT"); - if ( args->gt_id<0 ) error("Error: GT field is not present\n"); - printf("# [1]Sample\t[2]Chromosome\t[3]Region Start\t[4]Region End\t[5]Ploidy\n"); - return 1; -} - -bcf1_t *process(bcf1_t *rec) -{ - int i; - - bcf_unpack(rec, BCF_UN_FMT); - bcf_fmt_t *fmt_gt = NULL; - for (i=0; in_fmt; i++) - if ( rec->d.fmt[i].id==args->gt_id ) { fmt_gt = &rec->d.fmt[i]; break; } - if ( !fmt_gt ) return NULL; // no GT tag - - if ( args->ndat != rec->n_sample ) - error("Incorrect number of samples at %s:%d .. found %d, expected %d\n",bcf_seqname(args->hdr,rec),rec->pos+1,rec->n_sample,args->ndat); - - if ( args->rid!=rec->rid && args->rid!=-1 ) - { - for (i=0; indat; i++) - { - dat_t *dat = &args->dat[i]; - if ( dat->ploidy!=0 ) printf("%s\t%s\t%d\t%d\t%d\n", dat->sample,bcf_seqname(args->hdr,rec),dat->beg+1,dat->end+1,dat->ploidy); - dat->ploidy = 0; - } - } - args->rid = rec->rid; - - #define BRANCH_INT(type_t,vector_end) \ - { \ - for (i=0; in_sample; i++) \ - { \ - type_t *p = (type_t*) (fmt_gt->p + i*fmt_gt->size); \ - int nal, missing = 0; \ - for (nal=0; naln; nal++) \ - { \ - if ( p[nal]==vector_end ) break; /* smaller ploidy */ \ - if ( bcf_gt_is_missing(p[nal]) ) { missing=1; break; } /* missing allele */ \ - } \ - if ( !nal || missing ) continue; /* missing genotype */ \ - dat_t *dat = &args->dat[i]; \ - if ( dat->ploidy==nal ) \ - { \ - dat->end = rec->pos; \ - continue; \ - } \ - if ( dat->ploidy!=0 ) \ - printf("%s\t%s\t%d\t%d\t%d\n", dat->sample,bcf_seqname(args->hdr,rec),dat->beg+1,dat->end+1,dat->ploidy); \ - dat->ploidy = nal; \ - dat->beg = rec->pos; \ - dat->end = rec->pos; \ - } \ - } - switch (fmt_gt->type) { - case BCF_BT_INT8: BRANCH_INT(int8_t, bcf_int8_vector_end); break; - case BCF_BT_INT16: BRANCH_INT(int16_t, bcf_int16_vector_end); break; - case BCF_BT_INT32: BRANCH_INT(int32_t, bcf_int32_vector_end); break; - default: error("The GT type is not recognised: %d at %s:%d\n",fmt_gt->type, bcf_seqname(args->hdr,rec),rec->pos+1); break; - } - #undef BRANCH_INT - - return NULL; -} - -void destroy(void) -{ - int i; - for (i=0; indat; i++) - { - dat_t *dat = &args->dat[i]; - if ( dat->ploidy!=0 ) printf("%s\t%s\t%d\t%d\t%d\n", dat->sample,bcf_hdr_id2name(args->hdr,args->rid),dat->beg+1,dat->end+1,dat->ploidy); - dat->ploidy = 0; - } - free(args->dat); - free(args); -} - diff --git a/bcftools/plugins/check-ploidy.c.pysam.c b/bcftools/plugins/check-ploidy.c.pysam.c deleted file mode 100644 index a40b2f1..0000000 --- a/bcftools/plugins/check-ploidy.c.pysam.c +++ /dev/null @@ -1,167 +0,0 @@ -#include "bcftools.pysam.h" - -/* - Copyright (C) 2017 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" - -typedef struct -{ - char *sample; - int beg,end,ploidy; -} -dat_t; - -typedef struct -{ - int argc; - char **argv; - int rid, gt_id, ndat; - dat_t *dat; - bcf_hdr_t *hdr; -} -args_t; - -static args_t *args; - -const char *about(void) -{ - return "Check if ploidy of samples is consistent for all sites\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Check if ploidy of samples is consistent for all sites.\n" - "Usage: bcftools +check-ploidy [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Example:\n" - " bcftools +check-ploidy file.bcf\n" - "\n"; -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - args = (args_t*) calloc(1,sizeof(args_t)); - args->argc = argc; args->argv = argv; - args->hdr = in; - args->ndat = bcf_hdr_nsamples(args->hdr); - args->dat = (dat_t*) calloc(args->ndat,sizeof(dat_t)); - int i; - for (i=0; indat; i++) args->dat[i].sample = args->hdr->samples[i]; - args->rid = -1; - args->gt_id = bcf_hdr_id2int(args->hdr,BCF_DT_ID,"GT"); - if ( args->gt_id<0 ) error("Error: GT field is not present\n"); - fprintf(bcftools_stdout, "# [1]Sample\t[2]Chromosome\t[3]Region Start\t[4]Region End\t[5]Ploidy\n"); - return 1; -} - -bcf1_t *process(bcf1_t *rec) -{ - int i; - - bcf_unpack(rec, BCF_UN_FMT); - bcf_fmt_t *fmt_gt = NULL; - for (i=0; in_fmt; i++) - if ( rec->d.fmt[i].id==args->gt_id ) { fmt_gt = &rec->d.fmt[i]; break; } - if ( !fmt_gt ) return NULL; // no GT tag - - if ( args->ndat != rec->n_sample ) - error("Incorrect number of samples at %s:%d .. found %d, expected %d\n",bcf_seqname(args->hdr,rec),rec->pos+1,rec->n_sample,args->ndat); - - if ( args->rid!=rec->rid && args->rid!=-1 ) - { - for (i=0; indat; i++) - { - dat_t *dat = &args->dat[i]; - if ( dat->ploidy!=0 ) fprintf(bcftools_stdout, "%s\t%s\t%d\t%d\t%d\n", dat->sample,bcf_seqname(args->hdr,rec),dat->beg+1,dat->end+1,dat->ploidy); - dat->ploidy = 0; - } - } - args->rid = rec->rid; - - #define BRANCH_INT(type_t,vector_end) \ - { \ - for (i=0; in_sample; i++) \ - { \ - type_t *p = (type_t*) (fmt_gt->p + i*fmt_gt->size); \ - int nal, missing = 0; \ - for (nal=0; naln; nal++) \ - { \ - if ( p[nal]==vector_end ) break; /* smaller ploidy */ \ - if ( bcf_gt_is_missing(p[nal]) ) { missing=1; break; } /* missing allele */ \ - } \ - if ( !nal || missing ) continue; /* missing genotype */ \ - dat_t *dat = &args->dat[i]; \ - if ( dat->ploidy==nal ) \ - { \ - dat->end = rec->pos; \ - continue; \ - } \ - if ( dat->ploidy!=0 ) \ - fprintf(bcftools_stdout, "%s\t%s\t%d\t%d\t%d\n", dat->sample,bcf_seqname(args->hdr,rec),dat->beg+1,dat->end+1,dat->ploidy); \ - dat->ploidy = nal; \ - dat->beg = rec->pos; \ - dat->end = rec->pos; \ - } \ - } - switch (fmt_gt->type) { - case BCF_BT_INT8: BRANCH_INT(int8_t, bcf_int8_vector_end); break; - case BCF_BT_INT16: BRANCH_INT(int16_t, bcf_int16_vector_end); break; - case BCF_BT_INT32: BRANCH_INT(int32_t, bcf_int32_vector_end); break; - default: error("The GT type is not recognised: %d at %s:%d\n",fmt_gt->type, bcf_seqname(args->hdr,rec),rec->pos+1); break; - } - #undef BRANCH_INT - - return NULL; -} - -void destroy(void) -{ - int i; - for (i=0; indat; i++) - { - dat_t *dat = &args->dat[i]; - if ( dat->ploidy!=0 ) fprintf(bcftools_stdout, "%s\t%s\t%d\t%d\t%d\n", dat->sample,bcf_hdr_id2name(args->hdr,args->rid),dat->beg+1,dat->end+1,dat->ploidy); - dat->ploidy = 0; - } - free(args->dat); - free(args); -} - diff --git a/bcftools/plugins/check-sparsity.c b/bcftools/plugins/check-sparsity.c deleted file mode 100644 index 2c09f3d..0000000 --- a/bcftools/plugins/check-sparsity.c +++ /dev/null @@ -1,273 +0,0 @@ -/* - Copyright (C) 2017 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" - -typedef struct -{ - int argc; - char **argv, *fname, *region, **regs; - int region_is_file, nregs, regs_free; - int *smpl, nsmpl, *nsites, min_sites, gt_id; - kstring_t tmps; - bcf1_t *rec; - tbx_t *tbx; - hts_idx_t *idx; - hts_itr_t *itr; - htsFile *fp; - bcf_hdr_t *hdr; -} -args_t; - -const char *about(void) -{ - return "Print samples without genotypes in a region or chromosome\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Print samples without genotypess in a region (-r/-R) or chromosome (the default)\n" - "\n" - "Usage: bcftools +check-sparsity [Plugin Options]\n" - "Plugin options:\n" - " -n, --n-markers minimum number of required markers [1]\n" - " -r, --regions restrict to comma-separated list of regions\n" - " -R, --regions-file restrict to regions listed in a file\n" - "\n"; -} - -static void init_data(args_t *args) -{ - args->fp = hts_open(args->fname,"r"); - if ( !args->fp ) error("Could not read %s\n", args->fname); - args->hdr = bcf_hdr_read(args->fp); - if ( !args->hdr ) error("Could not read the header: %s\n", args->fname); - - args->rec = bcf_init1(); - args->gt_id = bcf_hdr_id2int(args->hdr,BCF_DT_ID,"GT"); - if ( args->gt_id<0 ) error("Error: GT field is not present\n"); - - int i; - args->nsmpl = bcf_hdr_nsamples(args->hdr); - args->nsites = (int*) calloc(args->nsmpl, sizeof(int)); - args->smpl = (int*) malloc(sizeof(int)*args->nsmpl); - for (i=0; insmpl; i++) args->smpl[i] = i; - - if ( strcmp("-",args->fname) ) // not reading from stdin - { - if ( hts_get_format(args->fp)->format==vcf ) - { - args->tbx = tbx_index_load(args->fname); - if ( !args->tbx && args->region ) error("Could not load the VCF index, please drop the -r/-R option\n"); - } - else if ( hts_get_format(args->fp)->format==bcf ) - { - args->idx = bcf_index_load(args->fname); - if ( !args->idx && args->region ) error("Could not load the BCF index, please drop the -r/-R option\n"); - } - } - else if ( args->region ) error("Cannot use index with this file, please drop the -r/-R option\n"); - - if ( args->tbx || args->idx ) - { - if ( args->region ) - { - args->regs = hts_readlist(args->region, args->region_is_file, &args->nregs); - if ( !args->regs ) error("Could not parse regions: %s\n", args->region); - args->regs_free = 1; - } - else - args->regs = (char**) (args->tbx ? tbx_seqnames(args->tbx, &args->nregs) : bcf_index_seqnames(args->idx, args->hdr, &args->nregs)); - } -} -static void destroy_data(args_t *args) -{ - int i; - if ( args->regs_free ) - for (i=0; inregs; i++) free(args->regs[i]); - free(args->regs); - bcf_hdr_destroy(args->hdr); - bcf_destroy(args->rec); - free(args->tmps.s); - free(args->smpl); - free(args->nsites); - if ( args->itr ) hts_itr_destroy(args->itr); - if ( args->tbx ) tbx_destroy(args->tbx); - if ( args->idx ) hts_idx_destroy(args->idx); - hts_close(args->fp); -} - -static void report(args_t *args, const char *reg) -{ - int i; - for (i=0; insmpl; i++) - printf("%s\t%s\n", reg, args->hdr->samples[args->smpl[i]]); - args->nsmpl = bcf_hdr_nsamples(args->hdr); - for (i=0; insmpl; i++) args->smpl[i] = i; - memset(args->nsites, 0, sizeof(int)*args->nsmpl); -} -static void test_region(args_t *args, char *reg) -{ - if ( args->tbx ) - { - args->itr = tbx_itr_querys(args->tbx,reg); - if ( !args->itr ) return; - } - else if ( args->idx ) - { - args->itr = bcf_itr_querys(args->idx,args->hdr,reg); - if ( !args->itr ) return; - } - - int ret,i, rid = -1, nread = 0; - while (1) - { - if ( args->tbx ) - { - if ( (ret=tbx_itr_next(args->fp, args->tbx, args->itr, &args->tmps)) < 0 ) break; // no more lines - ret = vcf_parse1(&args->tmps, args->hdr, args->rec); - if ( ret<0 ) error("Could not parse the line: %s\n", args->tmps.s); - } - else if ( args->idx ) - { - ret = bcf_itr_next(args->fp, args->itr, args->rec); - if ( ret < -1 ) error("Could not parse a line from %s\n", reg); - if ( ret < 0 ) break; // no more lines or an error - } - else - { - if ( args->fp->format.format==vcf ) - { - if ( (ret=hts_getline(args->fp, KS_SEP_LINE, &args->tmps)) < 0 ) break; // no more lines - ret = vcf_parse1(&args->tmps, args->hdr, args->rec); - if ( ret<0 ) error("Could not parse the line: %s\n", args->tmps.s); - } - else if ( args->fp->format.format==bcf ) - { - ret = bcf_read1(args->fp, args->hdr, args->rec); - if ( ret < -1 ) error("Could not parse %s\n", args->fname); - if ( ret < 0 ) break; // no more lines or an error - } - if ( rid!=-1 && rid!=args->rec->rid ) - { - report(args, bcf_hdr_id2name(args->hdr,rid)); - nread = 0; - } - rid = args->rec->rid; - } - - bcf_unpack(args->rec, BCF_UN_FMT); - bcf_fmt_t *fmt_gt = NULL; - for (i=0; irec->n_fmt; i++) - if ( args->rec->d.fmt[i].id==args->gt_id ) { fmt_gt = &args->rec->d.fmt[i]; break; } - if ( !fmt_gt ) continue; // no GT tag - if ( fmt_gt->n==0 ) continue; // empty?! - if ( fmt_gt->type!=BCF_BT_INT8 ) error("TODO: the GT fmt_type is not int8!\n"); - - // update the array of missing samples - for (i=0; insmpl; i++) - { - int8_t *ptr = (int8_t*) (fmt_gt->p + args->smpl[i]*fmt_gt->size); - int ial = 0; - for (ial=0; ialn; ial++) - if ( ptr[ial]==bcf_gt_missing || ptr[ial]==bcf_int8_vector_end ) break; - if ( ial==0 ) continue; // missing - if ( ++args->nsites[i] < args->min_sites ) continue; - if ( i+1nsmpl ) - { - memmove(args->smpl+i, args->smpl+i+1, sizeof(int)*(args->nsmpl-i-1)); - memmove(args->nsites+i, args->nsites+i+1, sizeof(int)*(args->nsmpl-i-1)); - } - args->nsmpl--; - i--; - } - nread = 1; - if ( !args->nsmpl ) break; - } - if ( nread ) report(args, rid==-1 ? reg : bcf_hdr_id2name(args->hdr,rid)); - - tbx_itr_destroy(args->itr); - args->itr = NULL; -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->argc = argc; args->argv = argv; - args->min_sites = 1; - static struct option loptions[] = - { - {"n-markers",required_argument,NULL,'n'}, - {"regions",required_argument,NULL,'r'}, - {"regions-file",required_argument,NULL,'R'}, - {NULL,0,NULL,0} - }; - int c,i; - char *tmp; - while ((c = getopt_long(argc, argv, "vr:R:n:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'n': - args->min_sites = strtol(optarg,&tmp,10); - if ( *tmp ) error("Could not parse: -n %s\n", optarg); - break; - case 'R': args->region_is_file = 1; - case 'r': args->region = optarg; break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - - if ( optind>=argc ) - { - if ( !isatty(fileno((FILE *)stdin)) ) args->fname = "-"; // reading from stdin - else error("%s",usage_text()); - } - else args->fname = argv[optind]; - init_data(args); - - for (i=0; inregs; i++) test_region(args, args->regs[i]); - if ( !args->nregs ) test_region(args, NULL); - - destroy_data(args); - free(args); - return 0; -} - diff --git a/bcftools/plugins/check-sparsity.c.pysam.c b/bcftools/plugins/check-sparsity.c.pysam.c deleted file mode 100644 index 8964d18..0000000 --- a/bcftools/plugins/check-sparsity.c.pysam.c +++ /dev/null @@ -1,275 +0,0 @@ -#include "bcftools.pysam.h" - -/* - Copyright (C) 2017 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" - -typedef struct -{ - int argc; - char **argv, *fname, *region, **regs; - int region_is_file, nregs, regs_free; - int *smpl, nsmpl, *nsites, min_sites, gt_id; - kstring_t tmps; - bcf1_t *rec; - tbx_t *tbx; - hts_idx_t *idx; - hts_itr_t *itr; - htsFile *fp; - bcf_hdr_t *hdr; -} -args_t; - -const char *about(void) -{ - return "Print samples without genotypes in a region or chromosome\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Print samples without genotypess in a region (-r/-R) or chromosome (the default)\n" - "\n" - "Usage: bcftools +check-sparsity [Plugin Options]\n" - "Plugin options:\n" - " -n, --n-markers minimum number of required markers [1]\n" - " -r, --regions restrict to comma-separated list of regions\n" - " -R, --regions-file restrict to regions listed in a file\n" - "\n"; -} - -static void init_data(args_t *args) -{ - args->fp = hts_open(args->fname,"r"); - if ( !args->fp ) error("Could not read %s\n", args->fname); - args->hdr = bcf_hdr_read(args->fp); - if ( !args->hdr ) error("Could not read the header: %s\n", args->fname); - - args->rec = bcf_init1(); - args->gt_id = bcf_hdr_id2int(args->hdr,BCF_DT_ID,"GT"); - if ( args->gt_id<0 ) error("Error: GT field is not present\n"); - - int i; - args->nsmpl = bcf_hdr_nsamples(args->hdr); - args->nsites = (int*) calloc(args->nsmpl, sizeof(int)); - args->smpl = (int*) malloc(sizeof(int)*args->nsmpl); - for (i=0; insmpl; i++) args->smpl[i] = i; - - if ( strcmp("-",args->fname) ) // not reading from stdin - { - if ( hts_get_format(args->fp)->format==vcf ) - { - args->tbx = tbx_index_load(args->fname); - if ( !args->tbx && args->region ) error("Could not load the VCF index, please drop the -r/-R option\n"); - } - else if ( hts_get_format(args->fp)->format==bcf ) - { - args->idx = bcf_index_load(args->fname); - if ( !args->idx && args->region ) error("Could not load the BCF index, please drop the -r/-R option\n"); - } - } - else if ( args->region ) error("Cannot use index with this file, please drop the -r/-R option\n"); - - if ( args->tbx || args->idx ) - { - if ( args->region ) - { - args->regs = hts_readlist(args->region, args->region_is_file, &args->nregs); - if ( !args->regs ) error("Could not parse regions: %s\n", args->region); - args->regs_free = 1; - } - else - args->regs = (char**) (args->tbx ? tbx_seqnames(args->tbx, &args->nregs) : bcf_index_seqnames(args->idx, args->hdr, &args->nregs)); - } -} -static void destroy_data(args_t *args) -{ - int i; - if ( args->regs_free ) - for (i=0; inregs; i++) free(args->regs[i]); - free(args->regs); - bcf_hdr_destroy(args->hdr); - bcf_destroy(args->rec); - free(args->tmps.s); - free(args->smpl); - free(args->nsites); - if ( args->itr ) hts_itr_destroy(args->itr); - if ( args->tbx ) tbx_destroy(args->tbx); - if ( args->idx ) hts_idx_destroy(args->idx); - hts_close(args->fp); -} - -static void report(args_t *args, const char *reg) -{ - int i; - for (i=0; insmpl; i++) - fprintf(bcftools_stdout, "%s\t%s\n", reg, args->hdr->samples[args->smpl[i]]); - args->nsmpl = bcf_hdr_nsamples(args->hdr); - for (i=0; insmpl; i++) args->smpl[i] = i; - memset(args->nsites, 0, sizeof(int)*args->nsmpl); -} -static void test_region(args_t *args, char *reg) -{ - if ( args->tbx ) - { - args->itr = tbx_itr_querys(args->tbx,reg); - if ( !args->itr ) return; - } - else if ( args->idx ) - { - args->itr = bcf_itr_querys(args->idx,args->hdr,reg); - if ( !args->itr ) return; - } - - int ret,i, rid = -1, nread = 0; - while (1) - { - if ( args->tbx ) - { - if ( (ret=tbx_itr_next(args->fp, args->tbx, args->itr, &args->tmps)) < 0 ) break; // no more lines - ret = vcf_parse1(&args->tmps, args->hdr, args->rec); - if ( ret<0 ) error("Could not parse the line: %s\n", args->tmps.s); - } - else if ( args->idx ) - { - ret = bcf_itr_next(args->fp, args->itr, args->rec); - if ( ret < -1 ) error("Could not parse a line from %s\n", reg); - if ( ret < 0 ) break; // no more lines or an error - } - else - { - if ( args->fp->format.format==vcf ) - { - if ( (ret=hts_getline(args->fp, KS_SEP_LINE, &args->tmps)) < 0 ) break; // no more lines - ret = vcf_parse1(&args->tmps, args->hdr, args->rec); - if ( ret<0 ) error("Could not parse the line: %s\n", args->tmps.s); - } - else if ( args->fp->format.format==bcf ) - { - ret = bcf_read1(args->fp, args->hdr, args->rec); - if ( ret < -1 ) error("Could not parse %s\n", args->fname); - if ( ret < 0 ) break; // no more lines or an error - } - if ( rid!=-1 && rid!=args->rec->rid ) - { - report(args, bcf_hdr_id2name(args->hdr,rid)); - nread = 0; - } - rid = args->rec->rid; - } - - bcf_unpack(args->rec, BCF_UN_FMT); - bcf_fmt_t *fmt_gt = NULL; - for (i=0; irec->n_fmt; i++) - if ( args->rec->d.fmt[i].id==args->gt_id ) { fmt_gt = &args->rec->d.fmt[i]; break; } - if ( !fmt_gt ) continue; // no GT tag - if ( fmt_gt->n==0 ) continue; // empty?! - if ( fmt_gt->type!=BCF_BT_INT8 ) error("TODO: the GT fmt_type is not int8!\n"); - - // update the array of missing samples - for (i=0; insmpl; i++) - { - int8_t *ptr = (int8_t*) (fmt_gt->p + args->smpl[i]*fmt_gt->size); - int ial = 0; - for (ial=0; ialn; ial++) - if ( ptr[ial]==bcf_gt_missing || ptr[ial]==bcf_int8_vector_end ) break; - if ( ial==0 ) continue; // missing - if ( ++args->nsites[i] < args->min_sites ) continue; - if ( i+1nsmpl ) - { - memmove(args->smpl+i, args->smpl+i+1, sizeof(int)*(args->nsmpl-i-1)); - memmove(args->nsites+i, args->nsites+i+1, sizeof(int)*(args->nsmpl-i-1)); - } - args->nsmpl--; - i--; - } - nread = 1; - if ( !args->nsmpl ) break; - } - if ( nread ) report(args, rid==-1 ? reg : bcf_hdr_id2name(args->hdr,rid)); - - tbx_itr_destroy(args->itr); - args->itr = NULL; -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->argc = argc; args->argv = argv; - args->min_sites = 1; - static struct option loptions[] = - { - {"n-markers",required_argument,NULL,'n'}, - {"regions",required_argument,NULL,'r'}, - {"regions-file",required_argument,NULL,'R'}, - {NULL,0,NULL,0} - }; - int c,i; - char *tmp; - while ((c = getopt_long(argc, argv, "vr:R:n:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'n': - args->min_sites = strtol(optarg,&tmp,10); - if ( *tmp ) error("Could not parse: -n %s\n", optarg); - break; - case 'R': args->region_is_file = 1; - case 'r': args->region = optarg; break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - - if ( optind>=argc ) - { - if ( !isatty(fileno((FILE *)stdin)) ) args->fname = "-"; // reading from stdin - else error("%s",usage_text()); - } - else args->fname = argv[optind]; - init_data(args); - - for (i=0; inregs; i++) test_region(args, args->regs[i]); - if ( !args->nregs ) test_region(args, NULL); - - destroy_data(args); - free(args); - return 0; -} - diff --git a/bcftools/plugins/color-chrs.c b/bcftools/plugins/color-chrs.c deleted file mode 100644 index dc80c84..0000000 --- a/bcftools/plugins/color-chrs.c +++ /dev/null @@ -1,561 +0,0 @@ -/* The MIT License - - Copyright (c) 2015 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -/* - Trio haplotypes: mother (A,B), father (C,D), child (E,F) - Modeling the following states: - 01|23|02 - 01|23|03 - 01|23|12 - 01|23|13 - 01|23|20 - 01|23|30 - 01|23|21 - 01|23|31 - with the likelihoods of two haplotypes A,B segments sharing an allele: - P(01|A==B) .. e (P of error) - P(00|A==B) .. 1-e - and - P(ab,cd,ef|E=A,F=C) = P(ea|E=A)*P(fc|F=C) - - - Unrelated samples: (A,B) and (C,D) - Modeling the states: - xxxx .. A!=C,A!=D,B!=C,B!=D - 0x0x .. A=C,B!=D - 0xx0 .. A=D,B!=C - x00x .. B=C,A!=D - x0x0 .. B=D,A!=C - 0101 .. A=C,B=D - 0110 .. A=D,B=C - with the likelihoods - P(01|A!=B) .. f*(1-f) - P(00|A!=B) .. (1-f)*(1-f) - P(11|A!=B) .. f*f - - Assuming 2x30 crossovers, P=2e-8. - */ - -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "HMM.h" - -#define C_TRIO 1 -#define C_UNRL 2 - -// states for unrelated samples -#define UNRL_xxxx 0 -#define UNRL_0x0x 1 -#define UNRL_0xx0 2 -#define UNRL_x00x 3 -#define UNRL_x0x0 4 -#define UNRL_0101 5 -#define UNRL_0110 6 - -// trio states -#define TRIO_AC 0 -#define TRIO_AD 1 -#define TRIO_BC 2 -#define TRIO_BD 3 -#define TRIO_CA 4 -#define TRIO_DA 5 -#define TRIO_CB 6 -#define TRIO_DB 7 - -typedef struct _args_t -{ - bcf_hdr_t *hdr; - hmm_t *hmm; - double *eprob, *tprob, pij, pgt_err; - uint32_t *sites; - int32_t *gt_arr; - int nsites, msites, ngt_arr, prev_rid; - int mode, nstates, nhet_father, nhet_mother; - int imother,ifather,ichild, isample,jsample; - void (*set_observed_prob) (bcf1_t *rec); - char *prefix; - FILE *fp; -} -args_t; - -static args_t args; - -#define SW_MOTHER 1 -#define SW_FATHER 2 -static int hap_switch[8][8]; - -static void set_observed_prob_trio(bcf1_t *rec); -static void set_observed_prob_unrelated(bcf1_t *rec); -static void init_hmm_trio(args_t *args); -static void init_hmm_unrelated(args_t *args); - - -const char *about(void) -{ - return "Color shared chromosomal segments, requires phased GTs.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Color shared chromosomal segments, requires phased GTs. The output\n" - " can be visualized using the color-chrs.pl script.\n" - "Usage: bcftools +color-chrs [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -p, --prefix output files prefix\n" - " -t, --trio names of mother, father and the child\n" - " -u, --unrelated names of two unrelated samples\n" - "\n" - "Example:\n" - " bcftools +color-chrs in.vcf --\n" - "\n"; -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - char *trio_samples = NULL, *unrelated_samples = NULL; - memset(&args,0,sizeof(args_t)); - args.prev_rid = -1; - args.hdr = in; - args.pij = 2e-8; - args.pgt_err = 1e-9; - - static struct option loptions[] = - { - {"prefix",1,0,'p'}, - {"trio",1,0,'t'}, - {"unrelated",1,0,'u'}, - {0,0,0,0} - }; - int c; - while ((c = getopt_long(argc, argv, "?ht:u:p:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'p': args.prefix = optarg; break; - case 't': trio_samples = optarg; break; - case 'u': unrelated_samples = optarg; break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - if ( optind != argc ) error("%s",usage()); - if ( trio_samples && unrelated_samples ) error("Expected only one of the -t/-u options\n"); - if ( !trio_samples && !unrelated_samples ) error("Expected one of the -t/-u options\n"); - if ( !args.prefix ) error("Expected the -p option\n"); - - int ret = bcf_hdr_set_samples(args.hdr, trio_samples ? trio_samples : unrelated_samples, 0); - if ( ret<0 ) error("Could not parse samples: %s\n", trio_samples ? trio_samples : unrelated_samples); - else if ( ret>0 ) error("%d-th sample not found: %s\n", ret,trio_samples ? trio_samples : unrelated_samples); - - if ( trio_samples ) - { - int i,n = 0; - char **list = hts_readlist(trio_samples, 0, &n); - if ( n!=3 ) error("Expected three sample names with -t\n"); - args.imother = bcf_hdr_id2int(args.hdr, BCF_DT_SAMPLE, list[0]); - args.ifather = bcf_hdr_id2int(args.hdr, BCF_DT_SAMPLE, list[1]); - args.ichild = bcf_hdr_id2int(args.hdr, BCF_DT_SAMPLE, list[2]); - for (i=0; instates = 8; - args->tprob = (double*) malloc(sizeof(double)*args->nstates*args->nstates); - - for (i=0; instates; i++) - for (j=0; jnstates; j++) hap_switch[i][j] = 0; - - hap_switch[TRIO_AD][TRIO_AC] = SW_FATHER; - hap_switch[TRIO_BC][TRIO_AC] = SW_MOTHER; - hap_switch[TRIO_BD][TRIO_AC] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_AC][TRIO_AD] = SW_FATHER; - hap_switch[TRIO_BC][TRIO_AD] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_BD][TRIO_AD] = SW_MOTHER; - hap_switch[TRIO_AC][TRIO_BC] = SW_MOTHER; - hap_switch[TRIO_AD][TRIO_BC] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_BD][TRIO_BC] = SW_FATHER; - hap_switch[TRIO_AC][TRIO_BD] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_AD][TRIO_BD] = SW_MOTHER; - hap_switch[TRIO_BC][TRIO_BD] = SW_FATHER; - - hap_switch[TRIO_DA][TRIO_CA] = SW_FATHER; - hap_switch[TRIO_CB][TRIO_CA] = SW_MOTHER; - hap_switch[TRIO_DB][TRIO_CA] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_CA][TRIO_DA] = SW_FATHER; - hap_switch[TRIO_CB][TRIO_DA] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_DB][TRIO_DA] = SW_MOTHER; - hap_switch[TRIO_CA][TRIO_CB] = SW_MOTHER; - hap_switch[TRIO_DA][TRIO_CB] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_DB][TRIO_CB] = SW_FATHER; - hap_switch[TRIO_CA][TRIO_DB] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_DA][TRIO_DB] = SW_MOTHER; - hap_switch[TRIO_CB][TRIO_DB] = SW_FATHER; - - for (i=0; instates; i++) - { - for (j=0; jnstates; j++) - { - if ( !hap_switch[i][j] ) MAT(args->tprob,args->nstates,i,j) = 0; - else - { - MAT(args->tprob,args->nstates,i,j) = 1; - if ( hap_switch[i][j] & SW_MOTHER ) MAT(args->tprob,args->nstates,i,j) *= args->pij; - if ( hap_switch[i][j] & SW_FATHER ) MAT(args->tprob,args->nstates,i,j) *= args->pij; - } - } - } - for (i=0; instates; i++) - { - double sum = 0; - for (j=0; jnstates; j++) - { - if ( i!=j ) sum += MAT(args->tprob,args->nstates,i,j); - } - MAT(args->tprob,args->nstates,i,i) = 1 - sum; - } - - #if 0 - for (i=0; instates; i++) - { - for (j=0; jnstates; j++) - fprintf(stderr,"\t%d",hap_switch[j][i]); - fprintf(stderr,"\n"); - } - for (i=0; instates; i++) - { - for (j=0; jnstates; j++) - fprintf(stderr,"\t%e",MAT(args->tprob,args->nstates,j,i)); - fprintf(stderr,"\n"); - } - #endif - - args->hmm = hmm_init(args->nstates, args->tprob, 10000); -} -static void init_hmm_unrelated(args_t *args) -{ - int i,j; - args->nstates = 7; - args->tprob = (double*) malloc(sizeof(double)*args->nstates*args->nstates); - - for (i=0; instates; i++) - { - for (j=0; jnstates; j++) - MAT(args->tprob,args->nstates,i,j) = args->pij; - } - MAT(args->tprob,args->nstates,UNRL_0101,UNRL_xxxx) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_0110,UNRL_xxxx) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_x0x0,UNRL_0x0x) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_0110,UNRL_0x0x) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_x00x,UNRL_0xx0) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_0101,UNRL_0xx0) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_0101,UNRL_x00x) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_0110,UNRL_x0x0) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_0110,UNRL_0101) = args->pij*args->pij; - - for (i=0; instates; i++) - { - for (j=i+1; jnstates; j++) - MAT(args->tprob,args->nstates,i,j) = MAT(args->tprob,args->nstates,j,i); - } - for (i=0; instates; i++) - { - double sum = 0; - for (j=0; jnstates; j++) - if ( i!=j ) sum += MAT(args->tprob,args->nstates,i,j); - MAT(args->tprob,args->nstates,i,i) = 1 - sum; - } - - #if 0 - for (i=0; instates; i++) - { - for (j=0; jnstates; j++) - fprintf(stderr,"\t%e",MAT(args->tprob,args->nstates,j,i)); - fprintf(stderr,"\n"); - } - #endif - - args->hmm = hmm_init(args->nstates, args->tprob, 10000); -} -static inline double prob_shared(float af, int a, int b) -{ - return a==b ? 1-args.pgt_err : args.pgt_err; -} -static inline double prob_not_shared(float af, int a, int b) -{ - if ( a!=b ) return af*(1-af); - else if ( a==0 ) return (1-af)*(1-af); - else return af*af; -} -static void set_observed_prob_unrelated(bcf1_t *rec) -{ - float af = 0.5; // alternate allele frequency - - int ngt = bcf_get_genotypes(args.hdr, rec, &args.gt_arr, &args.ngt_arr); - if ( ngt<0 ) return; - if ( ngt!=4 ) return; // chrX - - int32_t a,b,c,d; - a = args.gt_arr[2*args.isample]; - b = args.gt_arr[2*args.isample+1]; - c = args.gt_arr[2*args.jsample]; - d = args.gt_arr[2*args.jsample+1]; - if ( bcf_gt_is_missing(a) || bcf_gt_is_missing(b) ) return; - if ( bcf_gt_is_missing(c) || bcf_gt_is_missing(d) ) return; - if ( !bcf_gt_is_phased(a) && !bcf_gt_is_phased(b) ) return; // only the second allele should be set when phased - if ( !bcf_gt_is_phased(c) && !bcf_gt_is_phased(d) ) return; - a = bcf_gt_allele(a); - b = bcf_gt_allele(b); - c = bcf_gt_allele(c); - d = bcf_gt_allele(d); - - int m = args.msites; - args.nsites++; - hts_expand(uint32_t,args.nsites,args.msites,args.sites); - if ( m!=args.msites ) args.eprob = (double*) realloc(args.eprob, sizeof(double)*args.msites*args.nstates); - - args.sites[args.nsites-1] = rec->pos; - double *prob = args.eprob + args.nstates*(args.nsites-1); - prob[UNRL_xxxx] = prob_not_shared(af,a,c) * prob_not_shared(af,a,d) * prob_not_shared(af,b,c) * prob_not_shared(af,b,d); - prob[UNRL_0x0x] = prob_shared(af,a,c) * prob_not_shared(af,b,d); - prob[UNRL_0xx0] = prob_shared(af,a,d) * prob_not_shared(af,b,c); - prob[UNRL_x00x] = prob_shared(af,b,c) * prob_not_shared(af,a,d); - prob[UNRL_x0x0] = prob_shared(af,b,d) * prob_not_shared(af,a,c); - prob[UNRL_0101] = prob_shared(af,a,c) * prob_shared(af,b,d); - prob[UNRL_0110] = prob_shared(af,a,d) * prob_shared(af,b,c); - -#if 0 - static int x = 0; - if ( !x++) - { - printf("p(0==0) .. %f\n", prob_shared(af,0,0)); - printf("p(0!=0) .. %f\n", prob_not_shared(af,0,0)); - printf("p(0==1) .. %f\n", prob_shared(af,0,1)); - printf("p(0!=1) .. %f\n", prob_not_shared(af,0,1)); - } - printf("%d|%d %d|%d x:%f 11:%f 12:%f 21:%f 22:%f 11,22:%f 12,21:%f %d\n", a,b,c,d, - prob[UNRL_xxxx], prob[UNRL_0x0x], prob[UNRL_0xx0], prob[UNRL_x00x], prob[UNRL_x0x0], prob[UNRL_0101], prob[UNRL_0110], rec->pos+1); -#endif -} -static void set_observed_prob_trio(bcf1_t *rec) -{ - int ngt = bcf_get_genotypes(args.hdr, rec, &args.gt_arr, &args.ngt_arr); - if ( ngt<0 ) return; - if ( ngt!=6 ) return; // chrX - - int32_t a,b,c,d,e,f; - a = args.gt_arr[2*args.imother]; - b = args.gt_arr[2*args.imother+1]; - c = args.gt_arr[2*args.ifather]; - d = args.gt_arr[2*args.ifather+1]; - e = args.gt_arr[2*args.ichild]; - f = args.gt_arr[2*args.ichild+1]; - if ( bcf_gt_is_missing(a) || bcf_gt_is_missing(b) ) return; - if ( bcf_gt_is_missing(c) || bcf_gt_is_missing(d) ) return; - if ( bcf_gt_is_missing(e) || bcf_gt_is_missing(f) ) return; - if ( !bcf_gt_is_phased(a) && !bcf_gt_is_phased(b) ) return; // only the second allele should be set when phased - if ( !bcf_gt_is_phased(c) && !bcf_gt_is_phased(d) ) return; - if ( !bcf_gt_is_phased(e) && !bcf_gt_is_phased(f) ) return; - a = bcf_gt_allele(a); - b = bcf_gt_allele(b); - c = bcf_gt_allele(c); - d = bcf_gt_allele(d); - e = bcf_gt_allele(e); - f = bcf_gt_allele(f); - - int mother = (1<pos; - double *prob = args.eprob + args.nstates*(args.nsites-1); - prob[TRIO_AC] = prob_shared(0,e,a) * prob_shared(0,f,c); - prob[TRIO_AD] = prob_shared(0,e,a) * prob_shared(0,f,d); - prob[TRIO_BC] = prob_shared(0,e,b) * prob_shared(0,f,c); - prob[TRIO_BD] = prob_shared(0,e,b) * prob_shared(0,f,d); - prob[TRIO_CA] = prob_shared(0,e,c) * prob_shared(0,f,a); - prob[TRIO_DA] = prob_shared(0,e,d) * prob_shared(0,f,a); - prob[TRIO_CB] = prob_shared(0,e,c) * prob_shared(0,f,b); - prob[TRIO_DB] = prob_shared(0,e,d) * prob_shared(0,f,b); -} - -void flush_viterbi(args_t *args) -{ - const char *s1, *s2, *s3 = NULL; - if ( args->mode==C_UNRL ) - { - s1 = bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,args->isample); - s2 = bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,args->jsample); - } - else if ( args->mode==C_TRIO ) - { - s1 = bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,args->imother); - s3 = bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,args->ifather); - s2 = bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,args->ichild); - } - else abort(); - - if ( !args->fp ) - { - kstring_t str = {0,0,0}; - kputs(args->prefix, &str); - kputs(".dat", &str); - args->fp = fopen(str.s,"w"); - if ( !args->fp ) error("%s: %s\n", str.s,strerror(errno)); - free(str.s); - fprintf(args->fp,"# SG, shared segment\t[2]Chromosome\t[3]Start\t[4]End\t[5]%s:1\t[6]%s:2\n",s2,s2); - fprintf(args->fp,"# SW, number of switches\t[3]Sample\t[4]Chromosome\t[5]nHets\t[5]nSwitches\t[6]switch rate\n"); - } - - hmm_run_viterbi(args->hmm,args->nsites,args->eprob,args->sites); - uint8_t *vpath = hmm_get_viterbi_path(args->hmm); - int i, iprev = -1, prev_state = -1, nstates = hmm_get_nstates(args->hmm); - int nswitch_mother = 0, nswitch_father = 0; - for (i=0; insites; i++) - { - int state = vpath[i*nstates]; - if ( state!=prev_state || i+1==args->nsites ) - { - uint32_t start = iprev>=0 ? args->sites[iprev]+1 : 1, end = i>0 ? args->sites[i-1] : 1; - const char *chr = bcf_hdr_id2name(args->hdr,args->prev_rid); - if ( args->mode==C_UNRL ) - { - switch (prev_state) - { - case UNRL_0x0x: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:1\t-\n", chr,start,end,s1); break; - case UNRL_0xx0: - fprintf(args->fp,"SG\t%s\t%d\t%d\t-\t%s:1\n", chr,start,end,s1); break; - case UNRL_x00x: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:2\t-\n", chr,start,end,s1); break; - case UNRL_x0x0: - fprintf(args->fp,"SG\t%s\t%d\t%d\t-\t%s:2\n", chr,start,end,s1); break; - case UNRL_0101: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:1\t%s:2\n", chr,start,end,s1,s1); break; - case UNRL_0110: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:2\t%s:1\n", chr,start,end,s1,s1); break; - } - } - else if ( args->mode==C_TRIO ) - { - switch (prev_state) - { - case TRIO_AC: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:1\t%s:1\n", chr,start,end,s1,s3); break; - case TRIO_AD: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:1\t%s:2\n", chr,start,end,s1,s3); break; - case TRIO_BC: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:2\t%s:1\n", chr,start,end,s1,s3); break; - case TRIO_BD: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:2\t%s:2\n", chr,start,end,s1,s3); break; - case TRIO_CA: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:1\t%s:1\n", chr,start,end,s3,s1); break; - case TRIO_DA: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:2\t%s:1\n", chr,start,end,s3,s1); break; - case TRIO_CB: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:1\t%s:2\n", chr,start,end,s3,s1); break; - case TRIO_DB: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:2\t%s:2\n", chr,start,end,s3,s1); break; - } - if ( hap_switch[state][prev_state] & SW_MOTHER ) nswitch_mother++; - if ( hap_switch[state][prev_state] & SW_FATHER ) nswitch_father++; - } - iprev = i-1; - } - prev_state = state; - } - float mrate = args->nhet_mother>1 ? (float)nswitch_mother/(args->nhet_mother-1) : 0; - float frate = args->nhet_father>1 ? (float)nswitch_father/(args->nhet_father-1) : 0; - fprintf(args->fp,"SW\t%s\t%s\t%d\t%d\t%f\n", s1,bcf_hdr_id2name(args->hdr,args->prev_rid),args->nhet_mother,nswitch_mother,mrate); - fprintf(args->fp,"SW\t%s\t%s\t%d\t%d\t%f\n", s3,bcf_hdr_id2name(args->hdr,args->prev_rid),args->nhet_father,nswitch_father,frate); - args->nsites = 0; - args->nhet_father = args->nhet_mother = 0; -} - -bcf1_t *process(bcf1_t *rec) -{ - if ( args.prev_rid==-1 ) args.prev_rid = rec->rid; - if ( args.prev_rid!=rec->rid ) flush_viterbi(&args); - args.prev_rid = rec->rid; - args.set_observed_prob(rec); - return NULL; -} - -void destroy(void) -{ - flush_viterbi(&args); - fclose(args.fp); - - free(args.gt_arr); - free(args.tprob); - free(args.sites); - free(args.eprob); - hmm_destroy(args.hmm); -} - - - diff --git a/bcftools/plugins/color-chrs.c.pysam.c b/bcftools/plugins/color-chrs.c.pysam.c deleted file mode 100644 index 0b62b58..0000000 --- a/bcftools/plugins/color-chrs.c.pysam.c +++ /dev/null @@ -1,563 +0,0 @@ -#include "bcftools.pysam.h" - -/* The MIT License - - Copyright (c) 2015 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -/* - Trio haplotypes: mother (A,B), father (C,D), child (E,F) - Modeling the following states: - 01|23|02 - 01|23|03 - 01|23|12 - 01|23|13 - 01|23|20 - 01|23|30 - 01|23|21 - 01|23|31 - with the likelihoods of two haplotypes A,B segments sharing an allele: - P(01|A==B) .. e (P of error) - P(00|A==B) .. 1-e - and - P(ab,cd,ef|E=A,F=C) = P(ea|E=A)*P(fc|F=C) - - - Unrelated samples: (A,B) and (C,D) - Modeling the states: - xxxx .. A!=C,A!=D,B!=C,B!=D - 0x0x .. A=C,B!=D - 0xx0 .. A=D,B!=C - x00x .. B=C,A!=D - x0x0 .. B=D,A!=C - 0101 .. A=C,B=D - 0110 .. A=D,B=C - with the likelihoods - P(01|A!=B) .. f*(1-f) - P(00|A!=B) .. (1-f)*(1-f) - P(11|A!=B) .. f*f - - Assuming 2x30 crossovers, P=2e-8. - */ - -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "HMM.h" - -#define C_TRIO 1 -#define C_UNRL 2 - -// states for unrelated samples -#define UNRL_xxxx 0 -#define UNRL_0x0x 1 -#define UNRL_0xx0 2 -#define UNRL_x00x 3 -#define UNRL_x0x0 4 -#define UNRL_0101 5 -#define UNRL_0110 6 - -// trio states -#define TRIO_AC 0 -#define TRIO_AD 1 -#define TRIO_BC 2 -#define TRIO_BD 3 -#define TRIO_CA 4 -#define TRIO_DA 5 -#define TRIO_CB 6 -#define TRIO_DB 7 - -typedef struct _args_t -{ - bcf_hdr_t *hdr; - hmm_t *hmm; - double *eprob, *tprob, pij, pgt_err; - uint32_t *sites; - int32_t *gt_arr; - int nsites, msites, ngt_arr, prev_rid; - int mode, nstates, nhet_father, nhet_mother; - int imother,ifather,ichild, isample,jsample; - void (*set_observed_prob) (bcf1_t *rec); - char *prefix; - FILE *fp; -} -args_t; - -static args_t args; - -#define SW_MOTHER 1 -#define SW_FATHER 2 -static int hap_switch[8][8]; - -static void set_observed_prob_trio(bcf1_t *rec); -static void set_observed_prob_unrelated(bcf1_t *rec); -static void init_hmm_trio(args_t *args); -static void init_hmm_unrelated(args_t *args); - - -const char *about(void) -{ - return "Color shared chromosomal segments, requires phased GTs.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Color shared chromosomal segments, requires phased GTs. The output\n" - " can be visualized using the color-chrs.pl script.\n" - "Usage: bcftools +color-chrs [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -p, --prefix output files prefix\n" - " -t, --trio names of mother, father and the child\n" - " -u, --unrelated names of two unrelated samples\n" - "\n" - "Example:\n" - " bcftools +color-chrs in.vcf --\n" - "\n"; -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - char *trio_samples = NULL, *unrelated_samples = NULL; - memset(&args,0,sizeof(args_t)); - args.prev_rid = -1; - args.hdr = in; - args.pij = 2e-8; - args.pgt_err = 1e-9; - - static struct option loptions[] = - { - {"prefix",1,0,'p'}, - {"trio",1,0,'t'}, - {"unrelated",1,0,'u'}, - {0,0,0,0} - }; - int c; - while ((c = getopt_long(argc, argv, "?ht:u:p:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'p': args.prefix = optarg; break; - case 't': trio_samples = optarg; break; - case 'u': unrelated_samples = optarg; break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - if ( optind != argc ) error("%s",usage()); - if ( trio_samples && unrelated_samples ) error("Expected only one of the -t/-u options\n"); - if ( !trio_samples && !unrelated_samples ) error("Expected one of the -t/-u options\n"); - if ( !args.prefix ) error("Expected the -p option\n"); - - int ret = bcf_hdr_set_samples(args.hdr, trio_samples ? trio_samples : unrelated_samples, 0); - if ( ret<0 ) error("Could not parse samples: %s\n", trio_samples ? trio_samples : unrelated_samples); - else if ( ret>0 ) error("%d-th sample not found: %s\n", ret,trio_samples ? trio_samples : unrelated_samples); - - if ( trio_samples ) - { - int i,n = 0; - char **list = hts_readlist(trio_samples, 0, &n); - if ( n!=3 ) error("Expected three sample names with -t\n"); - args.imother = bcf_hdr_id2int(args.hdr, BCF_DT_SAMPLE, list[0]); - args.ifather = bcf_hdr_id2int(args.hdr, BCF_DT_SAMPLE, list[1]); - args.ichild = bcf_hdr_id2int(args.hdr, BCF_DT_SAMPLE, list[2]); - for (i=0; instates = 8; - args->tprob = (double*) malloc(sizeof(double)*args->nstates*args->nstates); - - for (i=0; instates; i++) - for (j=0; jnstates; j++) hap_switch[i][j] = 0; - - hap_switch[TRIO_AD][TRIO_AC] = SW_FATHER; - hap_switch[TRIO_BC][TRIO_AC] = SW_MOTHER; - hap_switch[TRIO_BD][TRIO_AC] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_AC][TRIO_AD] = SW_FATHER; - hap_switch[TRIO_BC][TRIO_AD] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_BD][TRIO_AD] = SW_MOTHER; - hap_switch[TRIO_AC][TRIO_BC] = SW_MOTHER; - hap_switch[TRIO_AD][TRIO_BC] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_BD][TRIO_BC] = SW_FATHER; - hap_switch[TRIO_AC][TRIO_BD] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_AD][TRIO_BD] = SW_MOTHER; - hap_switch[TRIO_BC][TRIO_BD] = SW_FATHER; - - hap_switch[TRIO_DA][TRIO_CA] = SW_FATHER; - hap_switch[TRIO_CB][TRIO_CA] = SW_MOTHER; - hap_switch[TRIO_DB][TRIO_CA] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_CA][TRIO_DA] = SW_FATHER; - hap_switch[TRIO_CB][TRIO_DA] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_DB][TRIO_DA] = SW_MOTHER; - hap_switch[TRIO_CA][TRIO_CB] = SW_MOTHER; - hap_switch[TRIO_DA][TRIO_CB] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_DB][TRIO_CB] = SW_FATHER; - hap_switch[TRIO_CA][TRIO_DB] = SW_MOTHER | SW_FATHER; - hap_switch[TRIO_DA][TRIO_DB] = SW_MOTHER; - hap_switch[TRIO_CB][TRIO_DB] = SW_FATHER; - - for (i=0; instates; i++) - { - for (j=0; jnstates; j++) - { - if ( !hap_switch[i][j] ) MAT(args->tprob,args->nstates,i,j) = 0; - else - { - MAT(args->tprob,args->nstates,i,j) = 1; - if ( hap_switch[i][j] & SW_MOTHER ) MAT(args->tprob,args->nstates,i,j) *= args->pij; - if ( hap_switch[i][j] & SW_FATHER ) MAT(args->tprob,args->nstates,i,j) *= args->pij; - } - } - } - for (i=0; instates; i++) - { - double sum = 0; - for (j=0; jnstates; j++) - { - if ( i!=j ) sum += MAT(args->tprob,args->nstates,i,j); - } - MAT(args->tprob,args->nstates,i,i) = 1 - sum; - } - - #if 0 - for (i=0; instates; i++) - { - for (j=0; jnstates; j++) - fprintf(bcftools_stderr,"\t%d",hap_switch[j][i]); - fprintf(bcftools_stderr,"\n"); - } - for (i=0; instates; i++) - { - for (j=0; jnstates; j++) - fprintf(bcftools_stderr,"\t%e",MAT(args->tprob,args->nstates,j,i)); - fprintf(bcftools_stderr,"\n"); - } - #endif - - args->hmm = hmm_init(args->nstates, args->tprob, 10000); -} -static void init_hmm_unrelated(args_t *args) -{ - int i,j; - args->nstates = 7; - args->tprob = (double*) malloc(sizeof(double)*args->nstates*args->nstates); - - for (i=0; instates; i++) - { - for (j=0; jnstates; j++) - MAT(args->tprob,args->nstates,i,j) = args->pij; - } - MAT(args->tprob,args->nstates,UNRL_0101,UNRL_xxxx) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_0110,UNRL_xxxx) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_x0x0,UNRL_0x0x) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_0110,UNRL_0x0x) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_x00x,UNRL_0xx0) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_0101,UNRL_0xx0) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_0101,UNRL_x00x) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_0110,UNRL_x0x0) = args->pij*args->pij; - MAT(args->tprob,args->nstates,UNRL_0110,UNRL_0101) = args->pij*args->pij; - - for (i=0; instates; i++) - { - for (j=i+1; jnstates; j++) - MAT(args->tprob,args->nstates,i,j) = MAT(args->tprob,args->nstates,j,i); - } - for (i=0; instates; i++) - { - double sum = 0; - for (j=0; jnstates; j++) - if ( i!=j ) sum += MAT(args->tprob,args->nstates,i,j); - MAT(args->tprob,args->nstates,i,i) = 1 - sum; - } - - #if 0 - for (i=0; instates; i++) - { - for (j=0; jnstates; j++) - fprintf(bcftools_stderr,"\t%e",MAT(args->tprob,args->nstates,j,i)); - fprintf(bcftools_stderr,"\n"); - } - #endif - - args->hmm = hmm_init(args->nstates, args->tprob, 10000); -} -static inline double prob_shared(float af, int a, int b) -{ - return a==b ? 1-args.pgt_err : args.pgt_err; -} -static inline double prob_not_shared(float af, int a, int b) -{ - if ( a!=b ) return af*(1-af); - else if ( a==0 ) return (1-af)*(1-af); - else return af*af; -} -static void set_observed_prob_unrelated(bcf1_t *rec) -{ - float af = 0.5; // alternate allele frequency - - int ngt = bcf_get_genotypes(args.hdr, rec, &args.gt_arr, &args.ngt_arr); - if ( ngt<0 ) return; - if ( ngt!=4 ) return; // chrX - - int32_t a,b,c,d; - a = args.gt_arr[2*args.isample]; - b = args.gt_arr[2*args.isample+1]; - c = args.gt_arr[2*args.jsample]; - d = args.gt_arr[2*args.jsample+1]; - if ( bcf_gt_is_missing(a) || bcf_gt_is_missing(b) ) return; - if ( bcf_gt_is_missing(c) || bcf_gt_is_missing(d) ) return; - if ( !bcf_gt_is_phased(a) && !bcf_gt_is_phased(b) ) return; // only the second allele should be set when phased - if ( !bcf_gt_is_phased(c) && !bcf_gt_is_phased(d) ) return; - a = bcf_gt_allele(a); - b = bcf_gt_allele(b); - c = bcf_gt_allele(c); - d = bcf_gt_allele(d); - - int m = args.msites; - args.nsites++; - hts_expand(uint32_t,args.nsites,args.msites,args.sites); - if ( m!=args.msites ) args.eprob = (double*) realloc(args.eprob, sizeof(double)*args.msites*args.nstates); - - args.sites[args.nsites-1] = rec->pos; - double *prob = args.eprob + args.nstates*(args.nsites-1); - prob[UNRL_xxxx] = prob_not_shared(af,a,c) * prob_not_shared(af,a,d) * prob_not_shared(af,b,c) * prob_not_shared(af,b,d); - prob[UNRL_0x0x] = prob_shared(af,a,c) * prob_not_shared(af,b,d); - prob[UNRL_0xx0] = prob_shared(af,a,d) * prob_not_shared(af,b,c); - prob[UNRL_x00x] = prob_shared(af,b,c) * prob_not_shared(af,a,d); - prob[UNRL_x0x0] = prob_shared(af,b,d) * prob_not_shared(af,a,c); - prob[UNRL_0101] = prob_shared(af,a,c) * prob_shared(af,b,d); - prob[UNRL_0110] = prob_shared(af,a,d) * prob_shared(af,b,c); - -#if 0 - static int x = 0; - if ( !x++) - { - fprintf(bcftools_stdout, "p(0==0) .. %f\n", prob_shared(af,0,0)); - fprintf(bcftools_stdout, "p(0!=0) .. %f\n", prob_not_shared(af,0,0)); - fprintf(bcftools_stdout, "p(0==1) .. %f\n", prob_shared(af,0,1)); - fprintf(bcftools_stdout, "p(0!=1) .. %f\n", prob_not_shared(af,0,1)); - } - fprintf(bcftools_stdout, "%d|%d %d|%d x:%f 11:%f 12:%f 21:%f 22:%f 11,22:%f 12,21:%f %d\n", a,b,c,d, - prob[UNRL_xxxx], prob[UNRL_0x0x], prob[UNRL_0xx0], prob[UNRL_x00x], prob[UNRL_x0x0], prob[UNRL_0101], prob[UNRL_0110], rec->pos+1); -#endif -} -static void set_observed_prob_trio(bcf1_t *rec) -{ - int ngt = bcf_get_genotypes(args.hdr, rec, &args.gt_arr, &args.ngt_arr); - if ( ngt<0 ) return; - if ( ngt!=6 ) return; // chrX - - int32_t a,b,c,d,e,f; - a = args.gt_arr[2*args.imother]; - b = args.gt_arr[2*args.imother+1]; - c = args.gt_arr[2*args.ifather]; - d = args.gt_arr[2*args.ifather+1]; - e = args.gt_arr[2*args.ichild]; - f = args.gt_arr[2*args.ichild+1]; - if ( bcf_gt_is_missing(a) || bcf_gt_is_missing(b) ) return; - if ( bcf_gt_is_missing(c) || bcf_gt_is_missing(d) ) return; - if ( bcf_gt_is_missing(e) || bcf_gt_is_missing(f) ) return; - if ( !bcf_gt_is_phased(a) && !bcf_gt_is_phased(b) ) return; // only the second allele should be set when phased - if ( !bcf_gt_is_phased(c) && !bcf_gt_is_phased(d) ) return; - if ( !bcf_gt_is_phased(e) && !bcf_gt_is_phased(f) ) return; - a = bcf_gt_allele(a); - b = bcf_gt_allele(b); - c = bcf_gt_allele(c); - d = bcf_gt_allele(d); - e = bcf_gt_allele(e); - f = bcf_gt_allele(f); - - int mother = (1<pos; - double *prob = args.eprob + args.nstates*(args.nsites-1); - prob[TRIO_AC] = prob_shared(0,e,a) * prob_shared(0,f,c); - prob[TRIO_AD] = prob_shared(0,e,a) * prob_shared(0,f,d); - prob[TRIO_BC] = prob_shared(0,e,b) * prob_shared(0,f,c); - prob[TRIO_BD] = prob_shared(0,e,b) * prob_shared(0,f,d); - prob[TRIO_CA] = prob_shared(0,e,c) * prob_shared(0,f,a); - prob[TRIO_DA] = prob_shared(0,e,d) * prob_shared(0,f,a); - prob[TRIO_CB] = prob_shared(0,e,c) * prob_shared(0,f,b); - prob[TRIO_DB] = prob_shared(0,e,d) * prob_shared(0,f,b); -} - -void flush_viterbi(args_t *args) -{ - const char *s1, *s2, *s3 = NULL; - if ( args->mode==C_UNRL ) - { - s1 = bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,args->isample); - s2 = bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,args->jsample); - } - else if ( args->mode==C_TRIO ) - { - s1 = bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,args->imother); - s3 = bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,args->ifather); - s2 = bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,args->ichild); - } - else abort(); - - if ( !args->fp ) - { - kstring_t str = {0,0,0}; - kputs(args->prefix, &str); - kputs(".dat", &str); - args->fp = fopen(str.s,"w"); - if ( !args->fp ) error("%s: %s\n", str.s,strerror(errno)); - free(str.s); - fprintf(args->fp,"# SG, shared segment\t[2]Chromosome\t[3]Start\t[4]End\t[5]%s:1\t[6]%s:2\n",s2,s2); - fprintf(args->fp,"# SW, number of switches\t[3]Sample\t[4]Chromosome\t[5]nHets\t[5]nSwitches\t[6]switch rate\n"); - } - - hmm_run_viterbi(args->hmm,args->nsites,args->eprob,args->sites); - uint8_t *vpath = hmm_get_viterbi_path(args->hmm); - int i, iprev = -1, prev_state = -1, nstates = hmm_get_nstates(args->hmm); - int nswitch_mother = 0, nswitch_father = 0; - for (i=0; insites; i++) - { - int state = vpath[i*nstates]; - if ( state!=prev_state || i+1==args->nsites ) - { - uint32_t start = iprev>=0 ? args->sites[iprev]+1 : 1, end = i>0 ? args->sites[i-1] : 1; - const char *chr = bcf_hdr_id2name(args->hdr,args->prev_rid); - if ( args->mode==C_UNRL ) - { - switch (prev_state) - { - case UNRL_0x0x: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:1\t-\n", chr,start,end,s1); break; - case UNRL_0xx0: - fprintf(args->fp,"SG\t%s\t%d\t%d\t-\t%s:1\n", chr,start,end,s1); break; - case UNRL_x00x: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:2\t-\n", chr,start,end,s1); break; - case UNRL_x0x0: - fprintf(args->fp,"SG\t%s\t%d\t%d\t-\t%s:2\n", chr,start,end,s1); break; - case UNRL_0101: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:1\t%s:2\n", chr,start,end,s1,s1); break; - case UNRL_0110: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:2\t%s:1\n", chr,start,end,s1,s1); break; - } - } - else if ( args->mode==C_TRIO ) - { - switch (prev_state) - { - case TRIO_AC: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:1\t%s:1\n", chr,start,end,s1,s3); break; - case TRIO_AD: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:1\t%s:2\n", chr,start,end,s1,s3); break; - case TRIO_BC: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:2\t%s:1\n", chr,start,end,s1,s3); break; - case TRIO_BD: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:2\t%s:2\n", chr,start,end,s1,s3); break; - case TRIO_CA: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:1\t%s:1\n", chr,start,end,s3,s1); break; - case TRIO_DA: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:2\t%s:1\n", chr,start,end,s3,s1); break; - case TRIO_CB: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:1\t%s:2\n", chr,start,end,s3,s1); break; - case TRIO_DB: - fprintf(args->fp,"SG\t%s\t%d\t%d\t%s:2\t%s:2\n", chr,start,end,s3,s1); break; - } - if ( hap_switch[state][prev_state] & SW_MOTHER ) nswitch_mother++; - if ( hap_switch[state][prev_state] & SW_FATHER ) nswitch_father++; - } - iprev = i-1; - } - prev_state = state; - } - float mrate = args->nhet_mother>1 ? (float)nswitch_mother/(args->nhet_mother-1) : 0; - float frate = args->nhet_father>1 ? (float)nswitch_father/(args->nhet_father-1) : 0; - fprintf(args->fp,"SW\t%s\t%s\t%d\t%d\t%f\n", s1,bcf_hdr_id2name(args->hdr,args->prev_rid),args->nhet_mother,nswitch_mother,mrate); - fprintf(args->fp,"SW\t%s\t%s\t%d\t%d\t%f\n", s3,bcf_hdr_id2name(args->hdr,args->prev_rid),args->nhet_father,nswitch_father,frate); - args->nsites = 0; - args->nhet_father = args->nhet_mother = 0; -} - -bcf1_t *process(bcf1_t *rec) -{ - if ( args.prev_rid==-1 ) args.prev_rid = rec->rid; - if ( args.prev_rid!=rec->rid ) flush_viterbi(&args); - args.prev_rid = rec->rid; - args.set_observed_prob(rec); - return NULL; -} - -void destroy(void) -{ - flush_viterbi(&args); - fclose(args.fp); - - free(args.gt_arr); - free(args.tprob); - free(args.sites); - free(args.eprob); - hmm_destroy(args.hmm); -} - - - diff --git a/bcftools/plugins/contrast.c b/bcftools/plugins/contrast.c deleted file mode 100644 index f5bafb1..0000000 --- a/bcftools/plugins/contrast.c +++ /dev/null @@ -1,364 +0,0 @@ -/* The MIT License - - Copyright (c) 2018 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include -#include // for isatty -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "filter.h" - - -// Logic of the filters: include or exclude sites which match the filters? -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -typedef struct -{ - int argc, filter_logic, regions_is_file, targets_is_file, output_type; - char **argv, *output_fname, *fname, *regions, *targets, *filter_str; - char *bg_samples_str, *novel_samples_str; - int *bg_smpl, *novel_smpl, nbg_smpl, nnovel_smpl; - filter_t *filter; - bcf_srs_t *sr; - bcf_hdr_t *hdr, *hdr_out; - htsFile *out_fh; - int32_t *gts; - int mgts; - uint32_t *bg_gts; - int nbg_gts, mbg_gts, ntotal, nskipped, ntested, nnovel_al, nnovel_gt; - kstring_t novel_als_smpl, novel_gts_smpl; -} -args_t; - -args_t args; - -const char *about(void) -{ - return "Find novel alleles and genotypes in two groups of samples.\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Finds novel alleles and genotypes in two groups of samples. Adds\n" - " an annotation which lists samples with a novel allele (INFO/NOVELAL)\n" - " or a novel genotype (INFO/NOVELGT)\n" - "Usage: bcftools +contrast [Plugin Options]\n" - "Plugin options:\n" - " -0, --bg-samples list of background samples\n" - " -1, --novel-samples list of samples where novel allele or genotype are expected\n" - " -e, --exclude EXPR exclude sites and samples for which the expression is true\n" - " -i, --include EXPR include sites and samples for which the expression is true\n" - " -o, --output FILE output file name [stdout]\n" - " -O, --output-type b: compressed BCF, u: uncompressed BCF, z: compressed VCF, v: uncompressed VCF [v]\n" - " -r, --regions REG restrict to comma-separated list of regions\n" - " -R, --regions-file FILE restrict to regions listed in a file\n" - " -t, --targets REG similar to -r but streams rather than index-jumps\n" - " -T, --targets-file FILE similar to -R but streams rather than index-jumps\n" - "\n" - "Example:\n" - " # Test if any of the samples a,b is different from the samples c,d,e\n" - " bcftools +contrast -0 c,d,e -1 a,b file.bcf\n" - "\n"; -} - -static void init_data(args_t *args) -{ - args->sr = bcf_sr_init(); - if ( args->regions ) - { - args->sr->require_index = 1; - if ( bcf_sr_set_regions(args->sr, args->regions, args->regions_is_file)<0 ) error("Failed to read the regions: %s\n",args->regions); - } - if ( args->targets && bcf_sr_set_targets(args->sr, args->targets, args->targets_is_file, 0)<0 ) error("Failed to read the targets: %s\n",args->targets); - if ( !bcf_sr_add_reader(args->sr,args->fname) ) error("Error: %s\n", bcf_sr_strerror(args->sr->errnum)); - args->hdr = bcf_sr_get_header(args->sr,0); - args->hdr_out = bcf_hdr_dup(args->hdr); - bcf_hdr_append(args->hdr_out, "##INFO="); - bcf_hdr_append(args->hdr_out, "##INFO="); - - if ( args->filter_str ) - args->filter = filter_init(args->hdr, args->filter_str); - - int i; - char **smpl = hts_readlist(args->bg_samples_str, 0, &args->nbg_smpl); - args->bg_smpl = (int*) malloc(sizeof(int)*args->nbg_smpl); - for (i=0; inbg_smpl; i++) - { - args->bg_smpl[i] = bcf_hdr_id2int(args->hdr, BCF_DT_SAMPLE, smpl[i]); - if ( args->bg_smpl[i]<0 ) error("The sample not present in the VCF: \"%s\"\n", smpl[i]); - free(smpl[i]); - } - free(smpl); - - smpl = hts_readlist(args->novel_samples_str, 0, &args->nnovel_smpl); - args->novel_smpl = (int*) malloc(sizeof(int)*args->nnovel_smpl); - for (i=0; innovel_smpl; i++) - { - args->novel_smpl[i] = bcf_hdr_id2int(args->hdr, BCF_DT_SAMPLE, smpl[i]); - if ( args->novel_smpl[i]<0 ) error("The sample not present in the VCF: \"%s\"\n", smpl[i]); - free(smpl[i]); - } - free(smpl); - - args->out_fh = hts_open(args->output_fname,hts_bcf_wmode(args->output_type)); - if ( args->out_fh == NULL ) error("Can't write to \"%s\": %s\n", args->output_fname, strerror(errno)); - bcf_hdr_write(args->out_fh, args->hdr_out); -} -static void destroy_data(args_t *args) -{ - bcf_hdr_destroy(args->hdr_out); - hts_close(args->out_fh); - free(args->novel_als_smpl.s); - free(args->novel_gts_smpl.s); - free(args->gts); - free(args->bg_gts); - free(args->bg_smpl); - free(args->novel_smpl); - if ( args->filter ) filter_destroy(args->filter); - bcf_sr_destroy(args->sr); - free(args); -} -static inline int binary_search(uint32_t val, uint32_t *dat, int ndat) -{ - int i = -1, imin = 0, imax = ndat - 1; - while ( imin<=imax ) - { - i = (imin+imax)/2; - if ( dat[i] < val ) imin = i + 1; - else if ( dat[i] > val ) imax = i - 1; - else return 1; - } - return 0; -} -static inline void binary_insert(uint32_t val, uint32_t **dat, int *ndat, int *mdat) -{ - int i = -1, imin = 0, imax = *ndat - 1; - while ( imin<=imax ) - { - i = (imin+imax)/2; - if ( (*dat)[i] < val ) imin = i + 1; - else if ( (*dat)[i] > val ) imax = i - 1; - else return; - } - while ( i>=0 && (*dat)[i]>val ) i--; - - (*ndat)++; - hts_expand(uint32_t, (*ndat), (*mdat), (*dat)); - - if ( *ndat > 1 ) - memmove(*dat + i + 1, *dat + i, sizeof(uint32_t)*(*ndat - i - 1)); - - (*dat)[i+1] = val; -} -static int process_record(args_t *args, bcf1_t *rec) -{ - args->ntotal++; - - static int warned = 0; - int ngts = bcf_get_genotypes(args->hdr, rec, &args->gts, &args->mgts); - ngts /= rec->n_sample; - if ( ngts>2 ) error("todo: ploidy=%d\n", ngts); - - args->nbg_gts = 0; - uint32_t bg_als = 0; - int i,j; - for (i=0; inbg_smpl; i++) - { - uint32_t gt = 0; - int32_t *ptr = args->gts + args->bg_smpl[i]*ngts; - for (j=0; j 31 ) - { - if ( !warned ) - { - fprintf(stderr,"Too many alleles (>32) at %s:%d, skipping. (todo?)\n", bcf_seqname(args->hdr,rec),rec->pos+1); - warned = 1; - } - args->nskipped++; - return -1; - } - bg_als |= 1<bg_gts, &args->nbg_gts, &args->mbg_gts); - } - if ( !bg_als ) - { - // all are missing - args->nskipped++; - return -1; - } - - args->novel_als_smpl.l = 0; - args->novel_gts_smpl.l = 0; - - int has_gt = 0; - for (i=0; innovel_smpl; i++) - { - int novel_al = 0; - uint32_t gt = 0; - int32_t *ptr = args->gts + args->novel_smpl[i]*ngts; - for (j=0; j 31 ) - { - if ( !warned ) - { - fprintf(stderr,"Too many alleles (>32) at %s:%d, skipping. (todo?)\n", bcf_seqname(args->hdr,rec),rec->pos+1); - warned = 1; - } - args->nskipped++; - return -1; - } - if ( !(bg_als & (1<hdr->samples[ args->novel_smpl[i] ]; - if ( novel_al ) - { - if ( args->novel_als_smpl.l ) kputc(',', &args->novel_als_smpl); - kputs(smpl, &args->novel_als_smpl); - } - else if ( !binary_search(gt, args->bg_gts, args->nbg_gts) ) - { - if ( args->novel_gts_smpl.l ) kputc(',', &args->novel_gts_smpl); - kputs(smpl, &args->novel_gts_smpl); - } - } - if ( !has_gt ) - { - // all are missing - args->nskipped++; - return -1; - } - if ( args->novel_als_smpl.l ) - { - bcf_update_info_string(args->hdr_out, rec, "NOVELAL", args->novel_als_smpl.s); - args->nnovel_al++; - } - if ( args->novel_gts_smpl.l ) - { - bcf_update_info_string(args->hdr_out, rec, "NOVELGT", args->novel_gts_smpl.s); - args->nnovel_gt++; - } - args->ntested++; - return 0; -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->argc = argc; args->argv = argv; - args->output_fname = "-"; - static struct option loptions[] = - { - {"bg-samples",required_argument,0,'0'}, - {"novel-samples",required_argument,0,'1'}, - {"include",required_argument,0,'i'}, - {"exclude",required_argument,0,'e'}, - {"output",required_argument,NULL,'o'}, - {"output-type",required_argument,NULL,'O'}, - {"regions",1,0,'r'}, - {"regions-file",1,0,'R'}, - {"targets",1,0,'t'}, - {"targets-file",1,0,'T'}, - {NULL,0,NULL,0} - }; - int c; - while ((c = getopt_long(argc, argv, "O:o:i:e:r:R:t:T:0:1:",loptions,NULL)) >= 0) - { - switch (c) - { - case '0': args->bg_samples_str = optarg; break; - case '1': args->novel_samples_str = optarg; break; - case 'e': args->filter_str = optarg; args->filter_logic |= FLT_EXCLUDE; break; - case 'i': args->filter_str = optarg; args->filter_logic |= FLT_INCLUDE; break; - case 't': args->targets = optarg; break; - case 'T': args->targets = optarg; args->targets_is_file = 1; break; - case 'r': args->regions = optarg; break; - case 'R': args->regions = optarg; args->regions_is_file = 1; break; - case 'o': args->output_fname = optarg; break; - case 'O': - switch (optarg[0]) { - case 'b': args->output_type = FT_BCF_GZ; break; - case 'u': args->output_type = FT_BCF; break; - case 'z': args->output_type = FT_VCF_GZ; break; - case 'v': args->output_type = FT_VCF; break; - default: error("The output type \"%s\" not recognised\n", optarg); - }; - break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - if ( optind==argc ) - { - if ( !isatty(fileno((FILE *)stdin)) ) args->fname = "-"; // reading from stdin - else { error("%s",usage_text()); } - } - else if ( optind+1!=argc ) error("%s",usage_text()); - else args->fname = argv[optind]; - - init_data(args); - - while ( bcf_sr_next_line(args->sr) ) - { - bcf1_t *rec = bcf_sr_get_line(args->sr,0); - if ( args->filter ) - { - int pass = filter_test(args->filter, rec, NULL); - if ( args->filter_logic & FLT_EXCLUDE ) pass = pass ? 0 : 1; - if ( !pass ) continue; - } - process_record(args, rec); - bcf_write(args->out_fh, args->hdr_out, rec); - } - - fprintf(stderr,"Total/processed/skipped/novel_allele/novel_gt:\t%d\t%d\t%d\t%d\t%d\n", args->ntotal, args->ntested, args->nskipped, args->nnovel_al, args->nnovel_gt); - destroy_data(args); - - return 0; -} diff --git a/bcftools/plugins/contrast.c.pysam.c b/bcftools/plugins/contrast.c.pysam.c deleted file mode 100644 index 6f7e3ea..0000000 --- a/bcftools/plugins/contrast.c.pysam.c +++ /dev/null @@ -1,366 +0,0 @@ -#include "bcftools.pysam.h" - -/* The MIT License - - Copyright (c) 2018 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include -#include // for isatty -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "filter.h" - - -// Logic of the filters: include or exclude sites which match the filters? -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -typedef struct -{ - int argc, filter_logic, regions_is_file, targets_is_file, output_type; - char **argv, *output_fname, *fname, *regions, *targets, *filter_str; - char *bg_samples_str, *novel_samples_str; - int *bg_smpl, *novel_smpl, nbg_smpl, nnovel_smpl; - filter_t *filter; - bcf_srs_t *sr; - bcf_hdr_t *hdr, *hdr_out; - htsFile *out_fh; - int32_t *gts; - int mgts; - uint32_t *bg_gts; - int nbg_gts, mbg_gts, ntotal, nskipped, ntested, nnovel_al, nnovel_gt; - kstring_t novel_als_smpl, novel_gts_smpl; -} -args_t; - -args_t args; - -const char *about(void) -{ - return "Find novel alleles and genotypes in two groups of samples.\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Finds novel alleles and genotypes in two groups of samples. Adds\n" - " an annotation which lists samples with a novel allele (INFO/NOVELAL)\n" - " or a novel genotype (INFO/NOVELGT)\n" - "Usage: bcftools +contrast [Plugin Options]\n" - "Plugin options:\n" - " -0, --bg-samples list of background samples\n" - " -1, --novel-samples list of samples where novel allele or genotype are expected\n" - " -e, --exclude EXPR exclude sites and samples for which the expression is true\n" - " -i, --include EXPR include sites and samples for which the expression is true\n" - " -o, --output FILE output file name [bcftools_stdout]\n" - " -O, --output-type b: compressed BCF, u: uncompressed BCF, z: compressed VCF, v: uncompressed VCF [v]\n" - " -r, --regions REG restrict to comma-separated list of regions\n" - " -R, --regions-file FILE restrict to regions listed in a file\n" - " -t, --targets REG similar to -r but streams rather than index-jumps\n" - " -T, --targets-file FILE similar to -R but streams rather than index-jumps\n" - "\n" - "Example:\n" - " # Test if any of the samples a,b is different from the samples c,d,e\n" - " bcftools +contrast -0 c,d,e -1 a,b file.bcf\n" - "\n"; -} - -static void init_data(args_t *args) -{ - args->sr = bcf_sr_init(); - if ( args->regions ) - { - args->sr->require_index = 1; - if ( bcf_sr_set_regions(args->sr, args->regions, args->regions_is_file)<0 ) error("Failed to read the regions: %s\n",args->regions); - } - if ( args->targets && bcf_sr_set_targets(args->sr, args->targets, args->targets_is_file, 0)<0 ) error("Failed to read the targets: %s\n",args->targets); - if ( !bcf_sr_add_reader(args->sr,args->fname) ) error("Error: %s\n", bcf_sr_strerror(args->sr->errnum)); - args->hdr = bcf_sr_get_header(args->sr,0); - args->hdr_out = bcf_hdr_dup(args->hdr); - bcf_hdr_append(args->hdr_out, "##INFO="); - bcf_hdr_append(args->hdr_out, "##INFO="); - - if ( args->filter_str ) - args->filter = filter_init(args->hdr, args->filter_str); - - int i; - char **smpl = hts_readlist(args->bg_samples_str, 0, &args->nbg_smpl); - args->bg_smpl = (int*) malloc(sizeof(int)*args->nbg_smpl); - for (i=0; inbg_smpl; i++) - { - args->bg_smpl[i] = bcf_hdr_id2int(args->hdr, BCF_DT_SAMPLE, smpl[i]); - if ( args->bg_smpl[i]<0 ) error("The sample not present in the VCF: \"%s\"\n", smpl[i]); - free(smpl[i]); - } - free(smpl); - - smpl = hts_readlist(args->novel_samples_str, 0, &args->nnovel_smpl); - args->novel_smpl = (int*) malloc(sizeof(int)*args->nnovel_smpl); - for (i=0; innovel_smpl; i++) - { - args->novel_smpl[i] = bcf_hdr_id2int(args->hdr, BCF_DT_SAMPLE, smpl[i]); - if ( args->novel_smpl[i]<0 ) error("The sample not present in the VCF: \"%s\"\n", smpl[i]); - free(smpl[i]); - } - free(smpl); - - args->out_fh = hts_open(args->output_fname,hts_bcf_wmode(args->output_type)); - if ( args->out_fh == NULL ) error("Can't write to \"%s\": %s\n", args->output_fname, strerror(errno)); - bcf_hdr_write(args->out_fh, args->hdr_out); -} -static void destroy_data(args_t *args) -{ - bcf_hdr_destroy(args->hdr_out); - hts_close(args->out_fh); - free(args->novel_als_smpl.s); - free(args->novel_gts_smpl.s); - free(args->gts); - free(args->bg_gts); - free(args->bg_smpl); - free(args->novel_smpl); - if ( args->filter ) filter_destroy(args->filter); - bcf_sr_destroy(args->sr); - free(args); -} -static inline int binary_search(uint32_t val, uint32_t *dat, int ndat) -{ - int i = -1, imin = 0, imax = ndat - 1; - while ( imin<=imax ) - { - i = (imin+imax)/2; - if ( dat[i] < val ) imin = i + 1; - else if ( dat[i] > val ) imax = i - 1; - else return 1; - } - return 0; -} -static inline void binary_insert(uint32_t val, uint32_t **dat, int *ndat, int *mdat) -{ - int i = -1, imin = 0, imax = *ndat - 1; - while ( imin<=imax ) - { - i = (imin+imax)/2; - if ( (*dat)[i] < val ) imin = i + 1; - else if ( (*dat)[i] > val ) imax = i - 1; - else return; - } - while ( i>=0 && (*dat)[i]>val ) i--; - - (*ndat)++; - hts_expand(uint32_t, (*ndat), (*mdat), (*dat)); - - if ( *ndat > 1 ) - memmove(*dat + i + 1, *dat + i, sizeof(uint32_t)*(*ndat - i - 1)); - - (*dat)[i+1] = val; -} -static int process_record(args_t *args, bcf1_t *rec) -{ - args->ntotal++; - - static int warned = 0; - int ngts = bcf_get_genotypes(args->hdr, rec, &args->gts, &args->mgts); - ngts /= rec->n_sample; - if ( ngts>2 ) error("todo: ploidy=%d\n", ngts); - - args->nbg_gts = 0; - uint32_t bg_als = 0; - int i,j; - for (i=0; inbg_smpl; i++) - { - uint32_t gt = 0; - int32_t *ptr = args->gts + args->bg_smpl[i]*ngts; - for (j=0; j 31 ) - { - if ( !warned ) - { - fprintf(bcftools_stderr,"Too many alleles (>32) at %s:%d, skipping. (todo?)\n", bcf_seqname(args->hdr,rec),rec->pos+1); - warned = 1; - } - args->nskipped++; - return -1; - } - bg_als |= 1<bg_gts, &args->nbg_gts, &args->mbg_gts); - } - if ( !bg_als ) - { - // all are missing - args->nskipped++; - return -1; - } - - args->novel_als_smpl.l = 0; - args->novel_gts_smpl.l = 0; - - int has_gt = 0; - for (i=0; innovel_smpl; i++) - { - int novel_al = 0; - uint32_t gt = 0; - int32_t *ptr = args->gts + args->novel_smpl[i]*ngts; - for (j=0; j 31 ) - { - if ( !warned ) - { - fprintf(bcftools_stderr,"Too many alleles (>32) at %s:%d, skipping. (todo?)\n", bcf_seqname(args->hdr,rec),rec->pos+1); - warned = 1; - } - args->nskipped++; - return -1; - } - if ( !(bg_als & (1<hdr->samples[ args->novel_smpl[i] ]; - if ( novel_al ) - { - if ( args->novel_als_smpl.l ) kputc(',', &args->novel_als_smpl); - kputs(smpl, &args->novel_als_smpl); - } - else if ( !binary_search(gt, args->bg_gts, args->nbg_gts) ) - { - if ( args->novel_gts_smpl.l ) kputc(',', &args->novel_gts_smpl); - kputs(smpl, &args->novel_gts_smpl); - } - } - if ( !has_gt ) - { - // all are missing - args->nskipped++; - return -1; - } - if ( args->novel_als_smpl.l ) - { - bcf_update_info_string(args->hdr_out, rec, "NOVELAL", args->novel_als_smpl.s); - args->nnovel_al++; - } - if ( args->novel_gts_smpl.l ) - { - bcf_update_info_string(args->hdr_out, rec, "NOVELGT", args->novel_gts_smpl.s); - args->nnovel_gt++; - } - args->ntested++; - return 0; -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->argc = argc; args->argv = argv; - args->output_fname = "-"; - static struct option loptions[] = - { - {"bg-samples",required_argument,0,'0'}, - {"novel-samples",required_argument,0,'1'}, - {"include",required_argument,0,'i'}, - {"exclude",required_argument,0,'e'}, - {"output",required_argument,NULL,'o'}, - {"output-type",required_argument,NULL,'O'}, - {"regions",1,0,'r'}, - {"regions-file",1,0,'R'}, - {"targets",1,0,'t'}, - {"targets-file",1,0,'T'}, - {NULL,0,NULL,0} - }; - int c; - while ((c = getopt_long(argc, argv, "O:o:i:e:r:R:t:T:0:1:",loptions,NULL)) >= 0) - { - switch (c) - { - case '0': args->bg_samples_str = optarg; break; - case '1': args->novel_samples_str = optarg; break; - case 'e': args->filter_str = optarg; args->filter_logic |= FLT_EXCLUDE; break; - case 'i': args->filter_str = optarg; args->filter_logic |= FLT_INCLUDE; break; - case 't': args->targets = optarg; break; - case 'T': args->targets = optarg; args->targets_is_file = 1; break; - case 'r': args->regions = optarg; break; - case 'R': args->regions = optarg; args->regions_is_file = 1; break; - case 'o': args->output_fname = optarg; break; - case 'O': - switch (optarg[0]) { - case 'b': args->output_type = FT_BCF_GZ; break; - case 'u': args->output_type = FT_BCF; break; - case 'z': args->output_type = FT_VCF_GZ; break; - case 'v': args->output_type = FT_VCF; break; - default: error("The output type \"%s\" not recognised\n", optarg); - }; - break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - if ( optind==argc ) - { - if ( !isatty(fileno((FILE *)stdin)) ) args->fname = "-"; // reading from stdin - else { error("%s",usage_text()); } - } - else if ( optind+1!=argc ) error("%s",usage_text()); - else args->fname = argv[optind]; - - init_data(args); - - while ( bcf_sr_next_line(args->sr) ) - { - bcf1_t *rec = bcf_sr_get_line(args->sr,0); - if ( args->filter ) - { - int pass = filter_test(args->filter, rec, NULL); - if ( args->filter_logic & FLT_EXCLUDE ) pass = pass ? 0 : 1; - if ( !pass ) continue; - } - process_record(args, rec); - bcf_write(args->out_fh, args->hdr_out, rec); - } - - fprintf(bcftools_stderr,"Total/processed/skipped/novel_allele/novel_gt:\t%d\t%d\t%d\t%d\t%d\n", args->ntotal, args->ntested, args->nskipped, args->nnovel_al, args->nnovel_gt); - destroy_data(args); - - return 0; -} diff --git a/bcftools/plugins/counts.c b/bcftools/plugins/counts.c deleted file mode 100644 index 2d57ba4..0000000 --- a/bcftools/plugins/counts.c +++ /dev/null @@ -1,82 +0,0 @@ -/* plugins/counts.c -- counts SNPs, Indels, and total number of sites. - - Copyright (C) 2013, 2014 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include - -int nsamples, nsnps, nindels, nmnps, nothers, nsites; - -/* - This short description is used to generate the output of `bcftools plugin -l`. -*/ -const char *about(void) -{ - return - "A minimal plugin which counts number of samples, SNPs,\n" - "INDELs, MNPs and total number of sites.\n"; -} - -/* - Called once at startup, allows to initialize local variables. - Return 1 to suppress VCF/BCF header from printing, 0 otherwise. -*/ -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - nsamples = bcf_hdr_nsamples(in); - nsnps = nindels = nmnps = nothers = nsites = 0; - return 1; -} - - -/* - Called for each VCF record. Return rec to output the line or NULL - to suppress output. -*/ -bcf1_t *process(bcf1_t *rec) -{ - int type = bcf_get_variant_types(rec); - if ( type & VCF_SNP ) nsnps++; - if ( type & VCF_INDEL ) nindels++; - if ( type & VCF_MNP ) nmnps++; - if ( type & VCF_OTHER ) nothers++; - nsites++; - return NULL; -} - - -/* - Clean up. -*/ -void destroy(void) -{ - printf("Number of samples: %d\n", nsamples); - printf("Number of SNPs: %d\n", nsnps); - printf("Number of INDELs: %d\n", nindels); - printf("Number of MNPs: %d\n", nmnps); - printf("Number of others: %d\n", nothers); - printf("Number of sites: %d\n", nsites); -} - - diff --git a/bcftools/plugins/counts.c.pysam.c b/bcftools/plugins/counts.c.pysam.c deleted file mode 100644 index 062808c..0000000 --- a/bcftools/plugins/counts.c.pysam.c +++ /dev/null @@ -1,84 +0,0 @@ -#include "bcftools.pysam.h" - -/* plugins/counts.c -- counts SNPs, Indels, and total number of sites. - - Copyright (C) 2013, 2014 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include - -int nsamples, nsnps, nindels, nmnps, nothers, nsites; - -/* - This short description is used to generate the output of `bcftools plugin -l`. -*/ -const char *about(void) -{ - return - "A minimal plugin which counts number of samples, SNPs,\n" - "INDELs, MNPs and total number of sites.\n"; -} - -/* - Called once at startup, allows to initialize local variables. - Return 1 to suppress VCF/BCF header from printing, 0 otherwise. -*/ -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - nsamples = bcf_hdr_nsamples(in); - nsnps = nindels = nmnps = nothers = nsites = 0; - return 1; -} - - -/* - Called for each VCF record. Return rec to output the line or NULL - to suppress output. -*/ -bcf1_t *process(bcf1_t *rec) -{ - int type = bcf_get_variant_types(rec); - if ( type & VCF_SNP ) nsnps++; - if ( type & VCF_INDEL ) nindels++; - if ( type & VCF_MNP ) nmnps++; - if ( type & VCF_OTHER ) nothers++; - nsites++; - return NULL; -} - - -/* - Clean up. -*/ -void destroy(void) -{ - fprintf(bcftools_stdout, "Number of samples: %d\n", nsamples); - fprintf(bcftools_stdout, "Number of SNPs: %d\n", nsnps); - fprintf(bcftools_stdout, "Number of INDELs: %d\n", nindels); - fprintf(bcftools_stdout, "Number of MNPs: %d\n", nmnps); - fprintf(bcftools_stdout, "Number of others: %d\n", nothers); - fprintf(bcftools_stdout, "Number of sites: %d\n", nsites); -} - - diff --git a/bcftools/plugins/dosage.c b/bcftools/plugins/dosage.c deleted file mode 100644 index fdf17d2..0000000 --- a/bcftools/plugins/dosage.c +++ /dev/null @@ -1,337 +0,0 @@ -/* plugins/dosage.c -- prints genotype dosage. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include -#include "bcftools.h" - - -/* - This short description is used to generate the output of `bcftools plugin -l`. -*/ -const char *about(void) -{ - return "Prints genotype dosage determined from tags requested by the user.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Print genotype dosage\n" - "Usage: bcftools +dosage [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -t, --tags VCF tags to determine the dosage from [PL,GL,GT]\n" - "\n" - "Example:\n" - " bcftools +dosage in.vcf -- -t GT\n" - "\n"; -} - -bcf_hdr_t *in_hdr = NULL; -int pl_type = 0, gl_type = 0; -uint8_t *buf = NULL; -int nbuf = 0; // NB: number of elements, not bytes -char **tags = NULL; -int ntags = 0; -float *vals = NULL, *dsg = NULL; -int mvals, mdsg; - -typedef int (*dosage_f) (bcf1_t *); -dosage_f *handlers = NULL; -int nhandlers = 0; - - -int calc_dosage_PL(bcf1_t *rec) -{ - int i, j, nret = bcf_get_format_values(in_hdr,rec,"PL",(void**)&buf,&nbuf,pl_type); - if ( nret<0 ) return -1; - - nret /= rec->n_sample; - if ( nret != rec->n_allele*(rec->n_allele+1)/2 ) return -1; // not diploid - hts_expand(float, nret, mvals, vals); - hts_expand(float, rec->n_allele, mdsg, dsg); - #define BRANCH(type_t,is_missing,is_vector_end) \ - { \ - type_t *ptr = (type_t*) buf; \ - for (i=0; in_sample; i++) \ - { \ - float sum = 0; \ - for (j=0; jn_allele; j++) dsg[j] = -1; \ - else \ - { \ - if ( sum ) for (j=0; jn_allele); \ - int k, l = 0; \ - for (j=0; jn_allele; j++) \ - { \ - for (k=0; k<=j; k++) \ - { \ - dsg[j] += vals[l]; \ - dsg[k] += vals[l]; \ - } \ - } \ - } \ - for (j=1; jn_allele; j++) \ - printf("%c%.1f",j==1?'\t':',',dsg[j]); \ - ptr += nret; \ - } \ - } - switch (pl_type) - { - case BCF_HT_INT: BRANCH(int32_t,ptr[j]==bcf_int32_missing,ptr[j]==bcf_int32_vector_end); break; - case BCF_HT_REAL: BRANCH(float,bcf_float_is_missing(ptr[j]),bcf_float_is_vector_end(ptr[j])); break; - } - #undef BRANCH - return 0; -} - -int calc_dosage_GL(bcf1_t *rec) -{ - int i, j, nret = bcf_get_format_values(in_hdr,rec,"GL",(void**)&buf,&nbuf,pl_type); - if ( nret<0 ) return -1; - - nret /= rec->n_sample; - if ( nret != rec->n_allele*(rec->n_allele+1)/2 ) return -1; // not diploid - hts_expand(float, nret, mvals, vals); - hts_expand(float, rec->n_allele, mdsg, dsg); - #define BRANCH(type_t,is_missing,is_vector_end) \ - { \ - type_t *ptr = (type_t*) buf; \ - for (i=0; in_sample; i++) \ - { \ - float sum = 0; \ - for (j=0; jn_allele; j++) dsg[j] = -1; \ - else \ - { \ - for (; jn_allele); \ - int k, l = 0; \ - for (j=0; jn_allele; j++) \ - { \ - for (k=0; k<=j; k++) \ - { \ - dsg[j] += vals[l]; \ - dsg[k] += vals[l]; \ - } \ - } \ - } \ - for (j=1; jn_allele; j++) \ - printf("%c%.1f",j==1?'\t':',',dsg[j]); \ - ptr += nret; \ - } \ - } - switch (pl_type) - { - case BCF_HT_INT: BRANCH(int32_t,ptr[j]==bcf_int32_missing,ptr[j]==bcf_int32_vector_end); break; - case BCF_HT_REAL: BRANCH(float,bcf_float_is_missing(ptr[j]),bcf_float_is_vector_end(ptr[j])); break; - } - #undef BRANCH - return 0; -} - -int calc_dosage_GT(bcf1_t *rec) -{ - int i, j, nret = bcf_get_genotypes(in_hdr,rec,(void**)&buf,&nbuf); - if ( nret<0 ) return -1; - - nret /= rec->n_sample; - int32_t *ptr = (int32_t*) buf; - hts_expand(float, rec->n_allele, mdsg, dsg); - for (i=0; in_sample; i++) - { - memset(dsg, 0, sizeof(float)*rec->n_allele); - for (j=0; j rec->n_allele ) error("The allele index is out of range at %s:%d\n", bcf_seqname(in_hdr,rec),rec->pos+1); - dsg[idx] += 1; - } - if ( !j ) - for (j=0; jn_allele; j++) dsg[j] = -1; - for (j=1; jn_allele; j++) - printf("%c%.1f",j==1?'\t':',',dsg[j]); - ptr += nret; - } - return 0; -} - - -char **split_list(char *str, int *nitems) -{ - int n = 0, done = 0; - char *ss = strdup(str), **out = NULL; - while ( !done && *ss ) - { - char *se = ss; - while ( *se && *se!=',' ) se++; - if ( !*se ) done = 1; - *se = 0; - n++; - out = (char**) realloc(out,sizeof(char*)*n); - out[n-1] = ss; - ss = se+1; - } - *nitems = n; - return out; -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - int i, id, c; - char *tags_str = "PL,GL,GT"; - - static struct option loptions[] = - { - {"tags",1,0,'t'}, - {0,0,0,0} - }; - while ((c = getopt_long(argc, argv, "t:?h",loptions,NULL)) >= 0) - { - switch (c) - { - case 't': tags_str = optarg; break; - case 'h': - case '?': - default: fprintf(stderr,"%s", usage()); exit(1); break; - } - } - tags = split_list(tags_str, &ntags); - - in_hdr = in; - for (i=0; isamples[i]); - printf("\n"); - - return 1; -} - - -bcf1_t *process(bcf1_t *rec) -{ - int i,j, ret; - - printf("%s\t%d\t%s", bcf_seqname(in_hdr,rec),rec->pos+1,rec->d.allele[0]); - if ( rec->n_allele == 1 ) printf("\t."); - else for (i=1; in_allele; i++) printf("%c%s", i==1?'\t':',', rec->d.allele[i]); - if ( rec->n_allele==1 ) - { - for (j=0; jn_sample; j++) printf("\t0.0"); - } - else - { - for (i=0; in_sample; i++) printf("\t-1.0"); - } - } - printf("\n"); - - return NULL; -} - - -void destroy(void) -{ - free(vals); - free(dsg); - free(handlers); - free(buf); -} - - diff --git a/bcftools/plugins/dosage.c.pysam.c b/bcftools/plugins/dosage.c.pysam.c deleted file mode 100644 index cd6b437..0000000 --- a/bcftools/plugins/dosage.c.pysam.c +++ /dev/null @@ -1,339 +0,0 @@ -#include "bcftools.pysam.h" - -/* plugins/dosage.c -- prints genotype dosage. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include -#include "bcftools.h" - - -/* - This short description is used to generate the output of `bcftools plugin -l`. -*/ -const char *about(void) -{ - return "Prints genotype dosage determined from tags requested by the user.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Print genotype dosage\n" - "Usage: bcftools +dosage [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -t, --tags VCF tags to determine the dosage from [PL,GL,GT]\n" - "\n" - "Example:\n" - " bcftools +dosage in.vcf -- -t GT\n" - "\n"; -} - -bcf_hdr_t *in_hdr = NULL; -int pl_type = 0, gl_type = 0; -uint8_t *buf = NULL; -int nbuf = 0; // NB: number of elements, not bytes -char **tags = NULL; -int ntags = 0; -float *vals = NULL, *dsg = NULL; -int mvals, mdsg; - -typedef int (*dosage_f) (bcf1_t *); -dosage_f *handlers = NULL; -int nhandlers = 0; - - -int calc_dosage_PL(bcf1_t *rec) -{ - int i, j, nret = bcf_get_format_values(in_hdr,rec,"PL",(void**)&buf,&nbuf,pl_type); - if ( nret<0 ) return -1; - - nret /= rec->n_sample; - if ( nret != rec->n_allele*(rec->n_allele+1)/2 ) return -1; // not diploid - hts_expand(float, nret, mvals, vals); - hts_expand(float, rec->n_allele, mdsg, dsg); - #define BRANCH(type_t,is_missing,is_vector_end) \ - { \ - type_t *ptr = (type_t*) buf; \ - for (i=0; in_sample; i++) \ - { \ - float sum = 0; \ - for (j=0; jn_allele; j++) dsg[j] = -1; \ - else \ - { \ - if ( sum ) for (j=0; jn_allele); \ - int k, l = 0; \ - for (j=0; jn_allele; j++) \ - { \ - for (k=0; k<=j; k++) \ - { \ - dsg[j] += vals[l]; \ - dsg[k] += vals[l]; \ - } \ - } \ - } \ - for (j=1; jn_allele; j++) \ - fprintf(bcftools_stdout, "%c%.1f",j==1?'\t':',',dsg[j]); \ - ptr += nret; \ - } \ - } - switch (pl_type) - { - case BCF_HT_INT: BRANCH(int32_t,ptr[j]==bcf_int32_missing,ptr[j]==bcf_int32_vector_end); break; - case BCF_HT_REAL: BRANCH(float,bcf_float_is_missing(ptr[j]),bcf_float_is_vector_end(ptr[j])); break; - } - #undef BRANCH - return 0; -} - -int calc_dosage_GL(bcf1_t *rec) -{ - int i, j, nret = bcf_get_format_values(in_hdr,rec,"GL",(void**)&buf,&nbuf,pl_type); - if ( nret<0 ) return -1; - - nret /= rec->n_sample; - if ( nret != rec->n_allele*(rec->n_allele+1)/2 ) return -1; // not diploid - hts_expand(float, nret, mvals, vals); - hts_expand(float, rec->n_allele, mdsg, dsg); - #define BRANCH(type_t,is_missing,is_vector_end) \ - { \ - type_t *ptr = (type_t*) buf; \ - for (i=0; in_sample; i++) \ - { \ - float sum = 0; \ - for (j=0; jn_allele; j++) dsg[j] = -1; \ - else \ - { \ - for (; jn_allele); \ - int k, l = 0; \ - for (j=0; jn_allele; j++) \ - { \ - for (k=0; k<=j; k++) \ - { \ - dsg[j] += vals[l]; \ - dsg[k] += vals[l]; \ - } \ - } \ - } \ - for (j=1; jn_allele; j++) \ - fprintf(bcftools_stdout, "%c%.1f",j==1?'\t':',',dsg[j]); \ - ptr += nret; \ - } \ - } - switch (pl_type) - { - case BCF_HT_INT: BRANCH(int32_t,ptr[j]==bcf_int32_missing,ptr[j]==bcf_int32_vector_end); break; - case BCF_HT_REAL: BRANCH(float,bcf_float_is_missing(ptr[j]),bcf_float_is_vector_end(ptr[j])); break; - } - #undef BRANCH - return 0; -} - -int calc_dosage_GT(bcf1_t *rec) -{ - int i, j, nret = bcf_get_genotypes(in_hdr,rec,(void**)&buf,&nbuf); - if ( nret<0 ) return -1; - - nret /= rec->n_sample; - int32_t *ptr = (int32_t*) buf; - hts_expand(float, rec->n_allele, mdsg, dsg); - for (i=0; in_sample; i++) - { - memset(dsg, 0, sizeof(float)*rec->n_allele); - for (j=0; j rec->n_allele ) error("The allele index is out of range at %s:%d\n", bcf_seqname(in_hdr,rec),rec->pos+1); - dsg[idx] += 1; - } - if ( !j ) - for (j=0; jn_allele; j++) dsg[j] = -1; - for (j=1; jn_allele; j++) - fprintf(bcftools_stdout, "%c%.1f",j==1?'\t':',',dsg[j]); - ptr += nret; - } - return 0; -} - - -char **split_list(char *str, int *nitems) -{ - int n = 0, done = 0; - char *ss = strdup(str), **out = NULL; - while ( !done && *ss ) - { - char *se = ss; - while ( *se && *se!=',' ) se++; - if ( !*se ) done = 1; - *se = 0; - n++; - out = (char**) realloc(out,sizeof(char*)*n); - out[n-1] = ss; - ss = se+1; - } - *nitems = n; - return out; -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - int i, id, c; - char *tags_str = "PL,GL,GT"; - - static struct option loptions[] = - { - {"tags",1,0,'t'}, - {0,0,0,0} - }; - while ((c = getopt_long(argc, argv, "t:?h",loptions,NULL)) >= 0) - { - switch (c) - { - case 't': tags_str = optarg; break; - case 'h': - case '?': - default: fprintf(bcftools_stderr,"%s", usage()); exit(1); break; - } - } - tags = split_list(tags_str, &ntags); - - in_hdr = in; - for (i=0; isamples[i]); - fprintf(bcftools_stdout, "\n"); - - return 1; -} - - -bcf1_t *process(bcf1_t *rec) -{ - int i,j, ret; - - fprintf(bcftools_stdout, "%s\t%d\t%s", bcf_seqname(in_hdr,rec),rec->pos+1,rec->d.allele[0]); - if ( rec->n_allele == 1 ) fprintf(bcftools_stdout, "\t."); - else for (i=1; in_allele; i++) fprintf(bcftools_stdout, "%c%s", i==1?'\t':',', rec->d.allele[i]); - if ( rec->n_allele==1 ) - { - for (j=0; jn_sample; j++) fprintf(bcftools_stdout, "\t0.0"); - } - else - { - for (i=0; in_sample; i++) fprintf(bcftools_stdout, "\t-1.0"); - } - } - fprintf(bcftools_stdout, "\n"); - - return NULL; -} - - -void destroy(void) -{ - free(vals); - free(dsg); - free(handlers); - free(buf); -} - - diff --git a/bcftools/plugins/fill-AN-AC.c b/bcftools/plugins/fill-AN-AC.c deleted file mode 100644 index 7d6c6f4..0000000 --- a/bcftools/plugins/fill-AN-AC.c +++ /dev/null @@ -1,67 +0,0 @@ -/* plugins/fill-AN-AC.c -- fills AN and AC INFO fields. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include - -bcf_hdr_t *in_hdr, *out_hdr; -int *arr = NULL, marr = 0; - -const char *about(void) -{ - return "Fill INFO fields AN and AC.\n"; -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - in_hdr = in; - out_hdr = out; - bcf_hdr_append(out_hdr, "##INFO="); - bcf_hdr_append(out_hdr, "##INFO="); - return 0; -} - -bcf1_t *process(bcf1_t *rec) -{ - hts_expand(int,rec->n_allele,marr,arr); - int ret = bcf_calc_ac(in_hdr,rec,arr,BCF_UN_FMT); - if ( ret>0 ) - { - int i, an = 0; - for (i=0; in_allele; i++) an += arr[i]; - bcf_update_info_int32(out_hdr, rec, "AN", &an, 1); - bcf_update_info_int32(out_hdr, rec, "AC", arr+1, rec->n_allele-1); - } - return rec; -} - -void destroy(void) -{ - free(arr); -} - - diff --git a/bcftools/plugins/fill-AN-AC.c.pysam.c b/bcftools/plugins/fill-AN-AC.c.pysam.c deleted file mode 100644 index 88690d5..0000000 --- a/bcftools/plugins/fill-AN-AC.c.pysam.c +++ /dev/null @@ -1,69 +0,0 @@ -#include "bcftools.pysam.h" - -/* plugins/fill-AN-AC.c -- fills AN and AC INFO fields. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include - -bcf_hdr_t *in_hdr, *out_hdr; -int *arr = NULL, marr = 0; - -const char *about(void) -{ - return "Fill INFO fields AN and AC.\n"; -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - in_hdr = in; - out_hdr = out; - bcf_hdr_append(out_hdr, "##INFO="); - bcf_hdr_append(out_hdr, "##INFO="); - return 0; -} - -bcf1_t *process(bcf1_t *rec) -{ - hts_expand(int,rec->n_allele,marr,arr); - int ret = bcf_calc_ac(in_hdr,rec,arr,BCF_UN_FMT); - if ( ret>0 ) - { - int i, an = 0; - for (i=0; in_allele; i++) an += arr[i]; - bcf_update_info_int32(out_hdr, rec, "AN", &an, 1); - bcf_update_info_int32(out_hdr, rec, "AC", arr+1, rec->n_allele-1); - } - return rec; -} - -void destroy(void) -{ - free(arr); -} - - diff --git a/bcftools/plugins/fill-from-fasta.c b/bcftools/plugins/fill-from-fasta.c deleted file mode 100644 index 80e7a8d..0000000 --- a/bcftools/plugins/fill-from-fasta.c +++ /dev/null @@ -1,206 +0,0 @@ -/* plugin/fill-from-fasta.c -- fill-from-fasta plugin. - - Copyright (C) 2016 Genome Research Ltd. - - Author: Shane McCarthy - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include -#include -#include -#include "filter.h" -#include "bcftools.h" - -const char *about(void) -{ - return "Fill INFO or REF field based on values in a fasta file\n"; -} - -const char *usage(void) -{ - return -"\n" -"About: Fill INFO or REF field based on values in a fasta file.\n" -" The fasta file must be indexed with samtools faidx.\n" -"Usage: bcftools +fill-from-fasta [General Options] -- [Plugin Options]\n" -"\n" -"General options:\n" -" run \"bcftools plugin\" for a list of common options\n" -"\n" -"Plugin options:\n" -" -c, --column REF or INFO tag, e.g. AA for ancestral allele\n" -" -f, --fasta fasta file\n" -" -h, --header-lines optional file containing header lines to append\n" -" -i, --include annotate only records passing filter expression\n" -" -e, --exclude annotate only records failing filter expression\n" - -"\n" -"Examples:\n" -" # fill ancestral allele as INFO/AA for SNP records\n" -" echo '##INFO=' > aa.hdr\n" -" bcftools +fill-from-fasta in.vcf -- -c AA -f aa.fasta -h aa.hdr -i 'TYPE=\"snp\"'\n" -"\n" -" # fix the REF allele in VCFs where REF=N or other\n" -" bcftools +fill-from-fasta in.vcf -- -c REF -f reference.fasta\n" -"\n" -" # select sites marked as P (PASS) in the 1000G Phase3 mask\n" -" echo '##INFO=' > mask.hdr\n" -" bcftools +fill-from-fasta in.vcf -Ou -- -c P3_MASK -f 1000G_mask.fasta -h mask.hdr | bcftools view -i 'P3_MASK=\"P\"'\n" -"\n"; -} - -bcf_hdr_t *in_hdr = NULL, *out_hdr = NULL; -faidx_t *faidx; -int anno = 0; -char *column = NULL; - -#define ANNO_REF 1 -#define ANNO_STRING 2 -#define ANNO_INT 3 - -filter_t *filter; -char *filter_str; -int filter_logic; // one of FLT_INCLUDE/FLT_EXCLUDE (-i or -e) - -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - int c; - char *ref_fname = NULL, *header_fname = NULL; - static struct option loptions[] = - { - {"exclude",required_argument,NULL,'e'}, - {"include",required_argument,NULL,'i'}, - {"column",required_argument,NULL,'c'}, - {"fasta",required_argument,NULL,'f'}, - {"header-lines",required_argument,NULL,'h'}, - {NULL,0,NULL,0} - }; - while ((c = getopt_long(argc, argv, "c:f:?h:i:e:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'e': filter_str = optarg; filter_logic |= FLT_EXCLUDE; break; - case 'i': filter_str = optarg; filter_logic |= FLT_INCLUDE; break; - case 'c': column = optarg; break; - case 'f': ref_fname = optarg; break; - case 'h': header_fname = optarg; break; - case '?': - default: fprintf(stderr,"%s", usage()); exit(1); break; - } - } - in_hdr = in; - out_hdr = out; - if ( filter_logic == (FLT_EXCLUDE|FLT_INCLUDE) ) { fprintf(stderr,"Only one of -i or -e can be given.\n"); return -1; } - - if ( !column ) - { - fprintf(stderr,"--column option is required.\n"); - return -1; - } - if (header_fname) - { - htsFile *file = hts_open(header_fname, "rb"); - if ( !file ) { fprintf(stderr,"Error reading %s\n", header_fname); return -1; } - kstring_t str = {0,0,0}; - while ( hts_getline(file, KS_SEP_LINE, &str) > 0 ) - { - if ( bcf_hdr_append(out_hdr, str.s) ) { fprintf(stderr,"Could not parse %s: %s\n", header_fname, str.s); return -1; } - } - hts_close(file); - free(str.s); - bcf_hdr_sync(out_hdr); - } - if (!strcasecmp("REF", column)) anno = ANNO_REF; - else { - if ( !strncasecmp(column,"INFO/",5) ) column += 5; - int hdr_id = bcf_hdr_id2int(out_hdr, BCF_DT_ID, column); - if (hdr_id<0) { fprintf(stderr,"No header ID found for %s. Header lines can be added with the --header-lines option\n", column); return -1; } - switch ( bcf_hdr_id2type(out_hdr,BCF_HL_INFO,hdr_id) ) - { - case BCF_HT_INT: - anno=ANNO_INT; - break; - case BCF_HT_STR: - anno=ANNO_STRING; - break; - default: - fprintf(stderr,"The type of %s not recognised (%d)\n", column, bcf_hdr_id2type(out_hdr,BCF_HL_INFO,hdr_id)); - return -1; - } - } - if ( !ref_fname ) - { - fprintf(stderr,"No fasta given.\n"); - return -1; - } - faidx = fai_load(ref_fname); - if ( filter_str ) - filter = filter_init(in, filter_str); - return 0; -} - -bcf1_t *process(bcf1_t *rec) -{ - // filter determines if we will annotate the record - // return record unchanged if filter applied - if ( filter ) - { - int ret = filter_test(filter, rec, NULL); - if ( filter_logic==FLT_INCLUDE ) { if ( !ret ) return rec; } - else if ( ret ) return rec; - } - - int i; - char *ref = rec->d.allele[0]; - int ref_len = strlen(ref); - int fa_len; - // could be sped up here by fetching the whole chromosome? could assume - // sorted, but revert to this when non-sorted records found? - char *fa = faidx_fetch_seq(faidx, bcf_seqname(in_hdr,rec), rec->pos, rec->pos+ref_len-1, &fa_len); - if ( !fa ) error("faidx_fetch_seq failed at %s:%d\n", bcf_hdr_id2name(in_hdr,rec->rid), rec->pos+1); - for (i=0; i96 ) fa[i] -= 32; - - assert(ref_len == fa_len); - if (anno==ANNO_REF) - strncpy(rec->d.allele[0], fa, fa_len); - else if (anno==ANNO_STRING) - bcf_update_info_string(out_hdr, rec, column, fa); - else if (anno==ANNO_INT && ref_len==1) - { - int val = atoi(&fa[0]); - bcf_update_info_int32(out_hdr, rec, column, &val, 1); - } - free(fa); - return rec; -} - -void destroy(void) -{ - fai_destroy(faidx); - if (filter) filter_destroy(filter); -} diff --git a/bcftools/plugins/fill-from-fasta.c.pysam.c b/bcftools/plugins/fill-from-fasta.c.pysam.c deleted file mode 100644 index c3b6da2..0000000 --- a/bcftools/plugins/fill-from-fasta.c.pysam.c +++ /dev/null @@ -1,208 +0,0 @@ -#include "bcftools.pysam.h" - -/* plugin/fill-from-fasta.c -- fill-from-fasta plugin. - - Copyright (C) 2016 Genome Research Ltd. - - Author: Shane McCarthy - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include -#include -#include -#include "filter.h" -#include "bcftools.h" - -const char *about(void) -{ - return "Fill INFO or REF field based on values in a fasta file\n"; -} - -const char *usage(void) -{ - return -"\n" -"About: Fill INFO or REF field based on values in a fasta file.\n" -" The fasta file must be indexed with samtools faidx.\n" -"Usage: bcftools +fill-from-fasta [General Options] -- [Plugin Options]\n" -"\n" -"General options:\n" -" run \"bcftools plugin\" for a list of common options\n" -"\n" -"Plugin options:\n" -" -c, --column REF or INFO tag, e.g. AA for ancestral allele\n" -" -f, --fasta fasta file\n" -" -h, --header-lines optional file containing header lines to append\n" -" -i, --include annotate only records passing filter expression\n" -" -e, --exclude annotate only records failing filter expression\n" - -"\n" -"Examples:\n" -" # fill ancestral allele as INFO/AA for SNP records\n" -" echo '##INFO=' > aa.hdr\n" -" bcftools +fill-from-fasta in.vcf -- -c AA -f aa.fasta -h aa.hdr -i 'TYPE=\"snp\"'\n" -"\n" -" # fix the REF allele in VCFs where REF=N or other\n" -" bcftools +fill-from-fasta in.vcf -- -c REF -f reference.fasta\n" -"\n" -" # select sites marked as P (PASS) in the 1000G Phase3 mask\n" -" echo '##INFO=' > mask.hdr\n" -" bcftools +fill-from-fasta in.vcf -Ou -- -c P3_MASK -f 1000G_mask.fasta -h mask.hdr | bcftools view -i 'P3_MASK=\"P\"'\n" -"\n"; -} - -bcf_hdr_t *in_hdr = NULL, *out_hdr = NULL; -faidx_t *faidx; -int anno = 0; -char *column = NULL; - -#define ANNO_REF 1 -#define ANNO_STRING 2 -#define ANNO_INT 3 - -filter_t *filter; -char *filter_str; -int filter_logic; // one of FLT_INCLUDE/FLT_EXCLUDE (-i or -e) - -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - int c; - char *ref_fname = NULL, *header_fname = NULL; - static struct option loptions[] = - { - {"exclude",required_argument,NULL,'e'}, - {"include",required_argument,NULL,'i'}, - {"column",required_argument,NULL,'c'}, - {"fasta",required_argument,NULL,'f'}, - {"header-lines",required_argument,NULL,'h'}, - {NULL,0,NULL,0} - }; - while ((c = getopt_long(argc, argv, "c:f:?h:i:e:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'e': filter_str = optarg; filter_logic |= FLT_EXCLUDE; break; - case 'i': filter_str = optarg; filter_logic |= FLT_INCLUDE; break; - case 'c': column = optarg; break; - case 'f': ref_fname = optarg; break; - case 'h': header_fname = optarg; break; - case '?': - default: fprintf(bcftools_stderr,"%s", usage()); exit(1); break; - } - } - in_hdr = in; - out_hdr = out; - if ( filter_logic == (FLT_EXCLUDE|FLT_INCLUDE) ) { fprintf(bcftools_stderr,"Only one of -i or -e can be given.\n"); return -1; } - - if ( !column ) - { - fprintf(bcftools_stderr,"--column option is required.\n"); - return -1; - } - if (header_fname) - { - htsFile *file = hts_open(header_fname, "rb"); - if ( !file ) { fprintf(bcftools_stderr,"Error reading %s\n", header_fname); return -1; } - kstring_t str = {0,0,0}; - while ( hts_getline(file, KS_SEP_LINE, &str) > 0 ) - { - if ( bcf_hdr_append(out_hdr, str.s) ) { fprintf(bcftools_stderr,"Could not parse %s: %s\n", header_fname, str.s); return -1; } - } - hts_close(file); - free(str.s); - bcf_hdr_sync(out_hdr); - } - if (!strcasecmp("REF", column)) anno = ANNO_REF; - else { - if ( !strncasecmp(column,"INFO/",5) ) column += 5; - int hdr_id = bcf_hdr_id2int(out_hdr, BCF_DT_ID, column); - if (hdr_id<0) { fprintf(bcftools_stderr,"No header ID found for %s. Header lines can be added with the --header-lines option\n", column); return -1; } - switch ( bcf_hdr_id2type(out_hdr,BCF_HL_INFO,hdr_id) ) - { - case BCF_HT_INT: - anno=ANNO_INT; - break; - case BCF_HT_STR: - anno=ANNO_STRING; - break; - default: - fprintf(bcftools_stderr,"The type of %s not recognised (%d)\n", column, bcf_hdr_id2type(out_hdr,BCF_HL_INFO,hdr_id)); - return -1; - } - } - if ( !ref_fname ) - { - fprintf(bcftools_stderr,"No fasta given.\n"); - return -1; - } - faidx = fai_load(ref_fname); - if ( filter_str ) - filter = filter_init(in, filter_str); - return 0; -} - -bcf1_t *process(bcf1_t *rec) -{ - // filter determines if we will annotate the record - // return record unchanged if filter applied - if ( filter ) - { - int ret = filter_test(filter, rec, NULL); - if ( filter_logic==FLT_INCLUDE ) { if ( !ret ) return rec; } - else if ( ret ) return rec; - } - - int i; - char *ref = rec->d.allele[0]; - int ref_len = strlen(ref); - int fa_len; - // could be sped up here by fetching the whole chromosome? could assume - // sorted, but revert to this when non-sorted records found? - char *fa = faidx_fetch_seq(faidx, bcf_seqname(in_hdr,rec), rec->pos, rec->pos+ref_len-1, &fa_len); - if ( !fa ) error("faidx_fetch_seq failed at %s:%d\n", bcf_hdr_id2name(in_hdr,rec->rid), rec->pos+1); - for (i=0; i96 ) fa[i] -= 32; - - assert(ref_len == fa_len); - if (anno==ANNO_REF) - strncpy(rec->d.allele[0], fa, fa_len); - else if (anno==ANNO_STRING) - bcf_update_info_string(out_hdr, rec, column, fa); - else if (anno==ANNO_INT && ref_len==1) - { - int val = atoi(&fa[0]); - bcf_update_info_int32(out_hdr, rec, column, &val, 1); - } - free(fa); - return rec; -} - -void destroy(void) -{ - fai_destroy(faidx); - if (filter) filter_destroy(filter); -} diff --git a/bcftools/plugins/fill-tags.c b/bcftools/plugins/fill-tags.c deleted file mode 100644 index a99d373..0000000 --- a/bcftools/plugins/fill-tags.c +++ /dev/null @@ -1,663 +0,0 @@ -/* The MIT License - - Copyright (c) 2015 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" - -#define SET_AN (1<<0) -#define SET_AC (1<<1) -#define SET_AC_Hom (1<<2) -#define SET_AC_Het (1<<3) -#define SET_AC_Hemi (1<<4) -#define SET_AF (1<<5) -#define SET_NS (1<<6) -#define SET_MAF (1<<7) -#define SET_HWE (1<<8) -#define SET_ExcHet (1<<9) - -typedef struct -{ - int nhom, nhet, nhemi, nac; -} -counts_t; - -typedef struct -{ - int ns; - int ncounts, mcounts; - counts_t *counts; - char *name, *suffix; - int nsmpl, *smpl; -} -pop_t; - -typedef struct -{ - bcf_hdr_t *in_hdr, *out_hdr; - int npop, tags, drop_missing, gt_id; - pop_t *pop, **smpl2pop; - float *farr; - int32_t *iarr, niarr, miarr, nfarr, mfarr; - double *hwe_probs; - int mhwe_probs; - kstring_t str; -} -args_t; - -static args_t *args; - -const char *about(void) -{ - return "Set INFO tags AF, AC, AC_Hemi, AC_Hom, AC_Het, AN, ExcHet, HWE, MAF, NS.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Set INFO tags AF, AC, AC_Hemi, AC_Hom, AC_Het, AN, ExcHet, HWE, MAF, NS.\n" - "Usage: bcftools +fill-tags [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -d, --drop-missing do not count half-missing genotypes \"./1\" as hemizygous\n" - " -l, --list-tags list available tags with description\n" - " -t, --tags LIST list of output tags. By default, all tags are filled.\n" - " -S, --samples-file FILE list of samples (first column) and comma-separated list of populations (second column)\n" - "\n" - "Example:\n" - " bcftools +fill-tags in.bcf -Ob -o out.bcf\n" - " bcftools +fill-tags in.bcf -Ob -o out.bcf -- -t AN,AC\n" - " bcftools +fill-tags in.bcf -Ob -o out.bcf -- -d\n" - " bcftools +fill-tags in.bcf -Ob -o out.bcf -- -S sample-group.txt -t HWE\n" - "\n"; -} - -void parse_samples(args_t *args, char *fname) -{ - htsFile *fp = hts_open(fname, "r"); - if ( !fp ) error("Could not read: %s\n", fname); - - void *pop2i = khash_str2int_init(); - void *smpli = khash_str2int_init(); - kstring_t str = {0,0,0}; - - int moff = 0, *off = NULL, nsmpl = 0; - while ( hts_getline(fp, KS_SEP_LINE, &str)>=0 ) - { - // NA12400 GRP1 - // NA18507 GRP1,GRP2 - char *pop_names = str.s + str.l - 1; - while ( pop_names >= str.s && isspace(*pop_names) ) pop_names--; - if ( pop_names <= str.s ) error("Could not parse the file: %s\n", str.s); - pop_names[1] = 0; // trailing spaces - while ( pop_names >= str.s && !isspace(*pop_names) ) pop_names--; - if ( pop_names <= str.s ) error("Could not parse the file: %s\n", str.s); - - char *smpl = pop_names++; - while ( smpl >= str.s && isspace(*smpl) ) smpl--; - if ( smpl <= str.s+1 ) error("Could not parse the file: %s\n", str.s); - smpl[1] = 0; - smpl = str.s; - - int ismpl = bcf_hdr_id2int(args->in_hdr,BCF_DT_SAMPLE,smpl); - if ( ismpl<0 ) - { - fprintf(stderr,"Warning: The sample not present in the VCF: %s\n",smpl); - continue; - } - if ( khash_str2int_has_key(smpli,smpl) ) - { - fprintf(stderr,"Warning: The sample is listed twice in %s: %s\n",fname,smpl); - continue; - } - khash_str2int_inc(smpli,strdup(smpl)); - - int i,npops = ksplit_core(pop_names,',',&moff,&off); - for (i=0; inpop); - args->npop++; - args->pop = (pop_t*) realloc(args->pop,args->npop*sizeof(*args->pop)); - memset(args->pop+args->npop-1,0,sizeof(*args->pop)); - args->pop[args->npop-1].name = pop_name; - args->pop[args->npop-1].suffix = (char*)malloc(strlen(pop_name)+2); - memcpy(args->pop[args->npop-1].suffix+1,pop_name,strlen(pop_name)+1); - args->pop[args->npop-1].suffix[0] = '_'; - } - int ipop = 0; - khash_str2int_get(pop2i,pop_name,&ipop); - pop_t *pop = &args->pop[ipop]; - pop->nsmpl++; - pop->smpl = (int*) realloc(pop->smpl,pop->nsmpl*sizeof(*pop->smpl)); - pop->smpl[pop->nsmpl-1] = ismpl; - } - nsmpl++; - } - - if ( nsmpl != bcf_hdr_nsamples(args->in_hdr) ) - fprintf(stderr,"Warning: %d samples in the list, %d samples in the VCF.\n", nsmpl,bcf_hdr_nsamples(args->in_hdr)); - - if ( !args->npop ) error("No populations given?\n"); - - khash_str2int_destroy(pop2i); - khash_str2int_destroy_free(smpli); - free(str.s); - free(off); - hts_close(fp); -} - -void init_pops(args_t *args) -{ - int i,j, nsmpl; - - // add the population "ALL", which is a summary population for all samples - args->npop++; - args->pop = (pop_t*) realloc(args->pop,args->npop*sizeof(*args->pop)); - memset(args->pop+args->npop-1,0,sizeof(*args->pop)); - args->pop[args->npop-1].name = strdup(""); - args->pop[args->npop-1].suffix = strdup(""); - - nsmpl = bcf_hdr_nsamples(args->in_hdr); - args->smpl2pop = (pop_t**) calloc(nsmpl*(args->npop+1),sizeof(pop_t*)); - for (i=0; ismpl2pop[i*(args->npop+1)] = &args->pop[args->npop-1]; - - for (i=0; inpop; i++) - { - for (j=0; jpop[i].nsmpl; j++) - { - int ismpl = args->pop[i].smpl[j]; - pop_t **smpl2pop = &args->smpl2pop[ismpl*(args->npop+1)]; - while (*smpl2pop) smpl2pop++; - *smpl2pop = &args->pop[i]; - } - } -} - -int parse_tags(args_t *args, const char *str) -{ - int i, flag = 0, n_tags; - char **tags = hts_readlist(str, 0, &n_tags); - for(i=0; inpop; i++) - bcf_hdr_printf(args->out_hdr, fmt, args->pop[i].suffix,*args->pop[i].name ? " in " : "",args->pop[i].name); -} - -void list_tags(void) -{ - error( - "INFO/AN Number:1 Type:Integer .. Total number of alleles in called genotypes\n" - "INFO/AC Number:A Type:Integer .. Allele count in genotypes\n" - "INFO/NS Number:1 Type:Integer .. Number of samples with data\n" - "INFO/AC_Hom Number:A Type:Integer .. Allele counts in homozygous genotypes\n" - "INFO/AC_Het Number:A Type:Integer .. Allele counts in heterozygous genotypes\n" - "INFO/AC_Hemi Number:A Type:Integer .. Allele counts in hemizygous genotypes\n" - "INFO/AF Number:A Type:Float .. Allele frequency\n" - "INFO/MAF Number:A Type:Float .. Minor Allele frequency\n" - "INFO/HWE Number:A Type:Float .. HWE test (PMID:15789306)\n" - "INFO/ExcHet Number:A Type:Float .. Probability of excess heterozygosity\n" - ); -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - args = (args_t*) calloc(1,sizeof(args_t)); - args->in_hdr = in; - args->out_hdr = out; - char *samples_fname = NULL; - static struct option loptions[] = - { - {"list-tags",0,0,'l'}, - {"drop-missing",0,0,'d'}, - {"tags",1,0,'t'}, - {"samples-file",1,0,'S'}, - {0,0,0,0} - }; - int c; - while ((c = getopt_long(argc, argv, "?ht:dS:l",loptions,NULL)) >= 0) - { - switch (c) - { - case 'l': list_tags(); break; - case 'd': args->drop_missing = 1; break; - case 't': args->tags |= parse_tags(args,optarg); break; - case 'S': samples_fname = optarg; break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - - if ( optind != argc ) error("%s",usage()); - - args->gt_id = bcf_hdr_id2int(args->in_hdr,BCF_DT_ID,"GT"); - if ( args->gt_id<0 ) error("Error: GT field is not present\n"); - - if ( !args->tags ) - for (c=0; c<=9; c++) args->tags |= 1<tags & SET_AN ) hdr_append(args, "##INFO="); - if ( args->tags & SET_AC ) hdr_append(args, "##INFO="); - if ( args->tags & SET_NS ) hdr_append(args, "##INFO="); - if ( args->tags & SET_AC_Hom ) hdr_append(args, "##INFO="); - if ( args->tags & SET_AC_Het ) hdr_append(args, "##INFO="); - if ( args->tags & SET_AC_Hemi ) hdr_append(args, "##INFO="); - if ( args->tags & SET_AF ) hdr_append(args, "##INFO="); - if ( args->tags & SET_MAF ) hdr_append(args, "##INFO="); - if ( args->tags & SET_HWE ) hdr_append(args, "##INFO="); - if ( args->tags & SET_ExcHet ) hdr_append(args, "##INFO="); - - return 0; -} - -/* - Wigginton 2005, PMID: 15789306 - - nref .. number of reference alleles - nalt .. number of alt alleles - nhet .. number of het genotypes, assuming number of genotypes = (nref+nalt)*2 - -*/ - -void calc_hwe(args_t *args, int nref, int nalt, int nhet, float *p_hwe, float *p_exc_het) -{ - int ngt = (nref+nalt) / 2; - int nrare = nref < nalt ? nref : nalt; - - // sanity check: there is odd/even number of rare alleles iff there is odd/even number of hets - if ( (nrare & 1) ^ (nhet & 1) ) error("nrare/nhet should be both odd or even: nrare=%d nref=%d nalt=%d nhet=%d\n",nrare,nref,nalt,nhet); - if ( nrare < nhet ) error("Fewer rare alleles than hets? nrare=%d nref=%d nalt=%d nhet=%d\n",nrare,nref,nalt,nhet); - if ( (nref+nalt) & 1 ) error("Expected diploid genotypes: nref=%d nalt=%d\n",nref,nalt); - - // initialize het probs - hts_expand(double,nrare+1,args->mhwe_probs,args->hwe_probs); - memset(args->hwe_probs, 0, sizeof(*args->hwe_probs)*(nrare+1)); - double *probs = args->hwe_probs; - - // start at midpoint - int mid = nrare * (nref + nalt - nrare) / (nref + nalt); - - // check to ensure that midpoint and rare alleles have same parity - if ( (nrare & 1) ^ (mid & 1) ) mid++; - - int het = mid; - int hom_r = (nrare - mid) / 2; - int hom_c = ngt - het - hom_r; - double sum = probs[mid] = 1.0; - - for (het = mid; het > 1; het -= 2) - { - probs[het - 2] = probs[het] * het * (het - 1.0) / (4.0 * (hom_r + 1.0) * (hom_c + 1.0)); - sum += probs[het - 2]; - - // 2 fewer heterozygotes for next iteration -> add one rare, one common homozygote - hom_r++; - hom_c++; - } - - het = mid; - hom_r = (nrare - mid) / 2; - hom_c = ngt - het - hom_r; - for (het = mid; het <= nrare - 2; het += 2) - { - probs[het + 2] = probs[het] * 4.0 * hom_r * hom_c / ((het + 2.0) * (het + 1.0)); - sum += probs[het + 2]; - - // add 2 heterozygotes for next iteration -> subtract one rare, one common homozygote - hom_r--; - hom_c--; - } - - for (het=0; het probs[nhet]) continue; - prob += probs[het]; - } - if ( prob > 1 ) prob = 1; - *p_hwe = prob; -} - -static inline void set_counts(pop_t *pop, int is_half, int is_hom, int is_hemi, int als) -{ - int ial; - for (ial=0; als; ial++) - { - if ( als&1 ) - { - if ( is_half ) pop->counts[ial].nac++; - else if ( !is_hom ) pop->counts[ial].nhet++; - else if ( !is_hemi ) pop->counts[ial].nhom += 2; - else pop->counts[ial].nhemi++; - } - als >>= 1; - } - pop->ns++; -} -static void clean_counts(pop_t *pop, int nals) -{ - pop->ns = 0; - memset(pop->counts,0,sizeof(counts_t)*nals); -} - -bcf1_t *process(bcf1_t *rec) -{ - int i,j, nsmpl = bcf_hdr_nsamples(args->in_hdr);; - - bcf_unpack(rec, BCF_UN_FMT); - bcf_fmt_t *fmt_gt = NULL; - for (i=0; in_fmt; i++) - if ( rec->d.fmt[i].id==args->gt_id ) { fmt_gt = &rec->d.fmt[i]; break; } - if ( !fmt_gt ) return rec; // no GT tag - - hts_expand(int32_t,rec->n_allele, args->miarr, args->iarr); - hts_expand(float,rec->n_allele*2, args->mfarr, args->farr); - for (i=0; inpop; i++) - hts_expand(counts_t,rec->n_allele,args->pop[i].mcounts, args->pop[i].counts); - - for (i=0; inpop; i++) - clean_counts(&args->pop[i], rec->n_allele); - - assert( rec->n_allele < 8*sizeof(int) ); - - #define BRANCH_INT(type_t,vector_end) \ - { \ - for (i=0; ip + i*fmt_gt->size); \ - int ial, als = 0, nals = 0, is_half, is_hom, is_hemi; \ - for (ial=0; ialn; ial++) \ - { \ - if ( p[ial]==vector_end ) break; /* smaller ploidy */ \ - if ( bcf_gt_is_missing(p[ial]) ) continue; /* missing allele */ \ - int idx = bcf_gt_allele(p[ial]); \ - nals++; \ - \ - if ( idx >= rec->n_allele ) \ - error("Incorrect allele (\"%d\") in %s at %s:%d\n",idx,args->in_hdr->samples[i],bcf_seqname(args->in_hdr,rec),rec->pos+1); \ - als |= (1<drop_missing ) is_hemi = 0, is_half = 1; \ - else is_hemi = 1, is_half = 0; \ - } \ - else if ( nals==1 ) is_hemi = 1, is_half = 0; \ - else is_hemi = 0, is_half = 0; \ - pop_t **pop = &args->smpl2pop[i*(args->npop+1)]; \ - while ( *pop ) { set_counts(*pop,is_half,is_hom,is_hemi,als); pop++; }\ - } \ - } - switch (fmt_gt->type) { - case BCF_BT_INT8: BRANCH_INT(int8_t, bcf_int8_vector_end); break; - case BCF_BT_INT16: BRANCH_INT(int16_t, bcf_int16_vector_end); break; - case BCF_BT_INT32: BRANCH_INT(int32_t, bcf_int32_vector_end); break; - default: error("The GT type is not recognised: %d at %s:%d\n",fmt_gt->type, bcf_seqname(args->in_hdr,rec),rec->pos+1); break; - } - #undef BRANCH_INT - - if ( args->tags & SET_NS ) - { - for (i=0; inpop; i++) - { - args->str.l = 0; - ksprintf(&args->str, "NS%s", args->pop[i].suffix); - if ( bcf_update_info_int32(args->out_hdr,rec,args->str.s,&args->pop[i].ns,1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - if ( args->tags & SET_AN ) - { - for (i=0; inpop; i++) - { - pop_t *pop = &args->pop[i]; - int32_t an = 0; - for (j=0; jn_allele; j++) - an += pop->counts[j].nhet + pop->counts[j].nhom + pop->counts[j].nhemi + pop->counts[j].nac; - - args->str.l = 0; - ksprintf(&args->str, "AN%s", args->pop[i].suffix); - if ( bcf_update_info_int32(args->out_hdr,rec,args->str.s,&an,1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - if ( args->tags & (SET_AF | SET_MAF) ) - { - for (i=0; inpop; i++) - { - int32_t an = 0; - if ( rec->n_allele > 1 ) - { - pop_t *pop = &args->pop[i]; - memset(args->farr, 0, sizeof(*args->farr)*(rec->n_allele-1)); - for (j=1; jn_allele; j++) - args->farr[j-1] += pop->counts[j].nhet + pop->counts[j].nhom + pop->counts[j].nhemi + pop->counts[j].nac; - an = pop->counts[0].nhet + pop->counts[0].nhom + pop->counts[0].nhemi + pop->counts[0].nac; - for (j=1; jn_allele; j++) an += args->farr[j-1]; - if ( !an ) continue; - for (j=1; jn_allele; j++) args->farr[j-1] /= an; - } - if ( args->tags & SET_AF ) - { - args->str.l = 0; - ksprintf(&args->str, "AF%s", args->pop[i].suffix); - if ( bcf_update_info_float(args->out_hdr,rec,args->str.s,args->farr,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - if ( args->tags & SET_MAF ) - { - if ( !an ) continue; - for (j=1; jn_allele; j++) - if ( args->farr[j-1] > 0.5 ) args->farr[j-1] = 1 - args->farr[j-1]; // todo: this is incorrect for multiallelic sites - args->str.l = 0; - ksprintf(&args->str, "MAF%s", args->pop[i].suffix); - if ( bcf_update_info_float(args->out_hdr,rec,args->str.s,args->farr,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - } - if ( args->tags & SET_AC ) - { - for (i=0; inpop; i++) - { - if ( rec->n_allele > 1 ) - { - pop_t *pop = &args->pop[i]; - memset(args->iarr, 0, sizeof(*args->iarr)*(rec->n_allele-1)); - for (j=1; jn_allele; j++) - args->iarr[j-1] += pop->counts[j].nhet + pop->counts[j].nhom + pop->counts[j].nhemi + pop->counts[j].nac; - } - args->str.l = 0; - ksprintf(&args->str, "AC%s", args->pop[i].suffix); - if ( bcf_update_info_int32(args->out_hdr,rec,args->str.s,args->iarr,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - if ( args->tags & SET_AC_Het ) - { - for (i=0; inpop; i++) - { - if ( rec->n_allele > 1 ) - { - pop_t *pop = &args->pop[i]; - memset(args->iarr, 0, sizeof(*args->iarr)*(rec->n_allele-1)); - for (j=1; jn_allele; j++) - args->iarr[j-1] += pop->counts[j].nhet; - } - args->str.l = 0; - ksprintf(&args->str, "AC_Het%s", args->pop[i].suffix); - if ( bcf_update_info_int32(args->out_hdr,rec,args->str.s,args->iarr,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - if ( args->tags & SET_AC_Hom ) - { - for (i=0; inpop; i++) - { - if ( rec->n_allele > 1 ) - { - pop_t *pop = &args->pop[i]; - memset(args->iarr, 0, sizeof(*args->iarr)*(rec->n_allele-1)); - for (j=1; jn_allele; j++) - args->iarr[j-1] += pop->counts[j].nhom; - } - args->str.l = 0; - ksprintf(&args->str, "AC_Hom%s", args->pop[i].suffix); - if ( bcf_update_info_int32(args->out_hdr,rec,args->str.s,args->iarr,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - if ( args->tags & SET_AC_Hemi && rec->n_allele > 1 ) - { - for (i=0; inpop; i++) - { - if ( rec->n_allele > 1 ) - { - pop_t *pop = &args->pop[i]; - memset(args->iarr, 0, sizeof(*args->iarr)*(rec->n_allele-1)); - for (j=1; jn_allele; j++) - args->iarr[j-1] += pop->counts[j].nhemi; - } - args->str.l = 0; - ksprintf(&args->str, "AC_Hemi%s", args->pop[i].suffix); - if ( bcf_update_info_int32(args->out_hdr,rec,args->str.s,args->iarr,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - if ( args->tags & (SET_HWE|SET_ExcHet) ) - { - for (i=0; inpop; i++) - { - float *fhwe = args->farr; - float *fexc_het = args->farr + rec->n_allele; - if ( rec->n_allele > 1 ) - { - pop_t *pop = &args->pop[i]; - memset(args->farr, 0, sizeof(*args->farr)*(2*rec->n_allele)); - int nref_tot = pop->counts[0].nhom; - for (j=0; jn_allele; j++) nref_tot += pop->counts[j].nhet; // NB this neglects multiallelic genotypes - for (j=1; jn_allele; j++) - { - int nref = nref_tot - pop->counts[j].nhet; - int nalt = pop->counts[j].nhet + pop->counts[j].nhom; - int nhet = pop->counts[j].nhet; - if ( nref>0 && nalt>0 ) - calc_hwe(args, nref, nalt, nhet, &fhwe[j-1], &fexc_het[j-1]); - else - fhwe[j-1] = fexc_het[j-1] = 1; - } - } - if ( args->tags & SET_HWE ) - { - args->str.l = 0; - ksprintf(&args->str, "HWE%s", args->pop[i].suffix); - if ( bcf_update_info_float(args->out_hdr,rec,args->str.s,fhwe,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - if ( args->tags & SET_ExcHet ) - { - args->str.l = 0; - ksprintf(&args->str, "ExcHet%s", args->pop[i].suffix); - if ( bcf_update_info_float(args->out_hdr,rec,args->str.s,fexc_het,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - } - - return rec; -} - -void destroy(void) -{ - int i; - for (i=0; inpop; i++) - { - free(args->pop[i].name); - free(args->pop[i].suffix); - free(args->pop[i].smpl); - free(args->pop[i].counts); - } - free(args->str.s); - free(args->pop); - free(args->smpl2pop); - free(args->iarr); - free(args->farr); - free(args->hwe_probs); - free(args); -} - - - diff --git a/bcftools/plugins/fill-tags.c.pysam.c b/bcftools/plugins/fill-tags.c.pysam.c deleted file mode 100644 index 4c3b06b..0000000 --- a/bcftools/plugins/fill-tags.c.pysam.c +++ /dev/null @@ -1,665 +0,0 @@ -#include "bcftools.pysam.h" - -/* The MIT License - - Copyright (c) 2015 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" - -#define SET_AN (1<<0) -#define SET_AC (1<<1) -#define SET_AC_Hom (1<<2) -#define SET_AC_Het (1<<3) -#define SET_AC_Hemi (1<<4) -#define SET_AF (1<<5) -#define SET_NS (1<<6) -#define SET_MAF (1<<7) -#define SET_HWE (1<<8) -#define SET_ExcHet (1<<9) - -typedef struct -{ - int nhom, nhet, nhemi, nac; -} -counts_t; - -typedef struct -{ - int ns; - int ncounts, mcounts; - counts_t *counts; - char *name, *suffix; - int nsmpl, *smpl; -} -pop_t; - -typedef struct -{ - bcf_hdr_t *in_hdr, *out_hdr; - int npop, tags, drop_missing, gt_id; - pop_t *pop, **smpl2pop; - float *farr; - int32_t *iarr, niarr, miarr, nfarr, mfarr; - double *hwe_probs; - int mhwe_probs; - kstring_t str; -} -args_t; - -static args_t *args; - -const char *about(void) -{ - return "Set INFO tags AF, AC, AC_Hemi, AC_Hom, AC_Het, AN, ExcHet, HWE, MAF, NS.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Set INFO tags AF, AC, AC_Hemi, AC_Hom, AC_Het, AN, ExcHet, HWE, MAF, NS.\n" - "Usage: bcftools +fill-tags [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -d, --drop-missing do not count half-missing genotypes \"./1\" as hemizygous\n" - " -l, --list-tags list available tags with description\n" - " -t, --tags LIST list of output tags. By default, all tags are filled.\n" - " -S, --samples-file FILE list of samples (first column) and comma-separated list of populations (second column)\n" - "\n" - "Example:\n" - " bcftools +fill-tags in.bcf -Ob -o out.bcf\n" - " bcftools +fill-tags in.bcf -Ob -o out.bcf -- -t AN,AC\n" - " bcftools +fill-tags in.bcf -Ob -o out.bcf -- -d\n" - " bcftools +fill-tags in.bcf -Ob -o out.bcf -- -S sample-group.txt -t HWE\n" - "\n"; -} - -void parse_samples(args_t *args, char *fname) -{ - htsFile *fp = hts_open(fname, "r"); - if ( !fp ) error("Could not read: %s\n", fname); - - void *pop2i = khash_str2int_init(); - void *smpli = khash_str2int_init(); - kstring_t str = {0,0,0}; - - int moff = 0, *off = NULL, nsmpl = 0; - while ( hts_getline(fp, KS_SEP_LINE, &str)>=0 ) - { - // NA12400 GRP1 - // NA18507 GRP1,GRP2 - char *pop_names = str.s + str.l - 1; - while ( pop_names >= str.s && isspace(*pop_names) ) pop_names--; - if ( pop_names <= str.s ) error("Could not parse the file: %s\n", str.s); - pop_names[1] = 0; // trailing spaces - while ( pop_names >= str.s && !isspace(*pop_names) ) pop_names--; - if ( pop_names <= str.s ) error("Could not parse the file: %s\n", str.s); - - char *smpl = pop_names++; - while ( smpl >= str.s && isspace(*smpl) ) smpl--; - if ( smpl <= str.s+1 ) error("Could not parse the file: %s\n", str.s); - smpl[1] = 0; - smpl = str.s; - - int ismpl = bcf_hdr_id2int(args->in_hdr,BCF_DT_SAMPLE,smpl); - if ( ismpl<0 ) - { - fprintf(bcftools_stderr,"Warning: The sample not present in the VCF: %s\n",smpl); - continue; - } - if ( khash_str2int_has_key(smpli,smpl) ) - { - fprintf(bcftools_stderr,"Warning: The sample is listed twice in %s: %s\n",fname,smpl); - continue; - } - khash_str2int_inc(smpli,strdup(smpl)); - - int i,npops = ksplit_core(pop_names,',',&moff,&off); - for (i=0; inpop); - args->npop++; - args->pop = (pop_t*) realloc(args->pop,args->npop*sizeof(*args->pop)); - memset(args->pop+args->npop-1,0,sizeof(*args->pop)); - args->pop[args->npop-1].name = pop_name; - args->pop[args->npop-1].suffix = (char*)malloc(strlen(pop_name)+2); - memcpy(args->pop[args->npop-1].suffix+1,pop_name,strlen(pop_name)+1); - args->pop[args->npop-1].suffix[0] = '_'; - } - int ipop = 0; - khash_str2int_get(pop2i,pop_name,&ipop); - pop_t *pop = &args->pop[ipop]; - pop->nsmpl++; - pop->smpl = (int*) realloc(pop->smpl,pop->nsmpl*sizeof(*pop->smpl)); - pop->smpl[pop->nsmpl-1] = ismpl; - } - nsmpl++; - } - - if ( nsmpl != bcf_hdr_nsamples(args->in_hdr) ) - fprintf(bcftools_stderr,"Warning: %d samples in the list, %d samples in the VCF.\n", nsmpl,bcf_hdr_nsamples(args->in_hdr)); - - if ( !args->npop ) error("No populations given?\n"); - - khash_str2int_destroy(pop2i); - khash_str2int_destroy_free(smpli); - free(str.s); - free(off); - hts_close(fp); -} - -void init_pops(args_t *args) -{ - int i,j, nsmpl; - - // add the population "ALL", which is a summary population for all samples - args->npop++; - args->pop = (pop_t*) realloc(args->pop,args->npop*sizeof(*args->pop)); - memset(args->pop+args->npop-1,0,sizeof(*args->pop)); - args->pop[args->npop-1].name = strdup(""); - args->pop[args->npop-1].suffix = strdup(""); - - nsmpl = bcf_hdr_nsamples(args->in_hdr); - args->smpl2pop = (pop_t**) calloc(nsmpl*(args->npop+1),sizeof(pop_t*)); - for (i=0; ismpl2pop[i*(args->npop+1)] = &args->pop[args->npop-1]; - - for (i=0; inpop; i++) - { - for (j=0; jpop[i].nsmpl; j++) - { - int ismpl = args->pop[i].smpl[j]; - pop_t **smpl2pop = &args->smpl2pop[ismpl*(args->npop+1)]; - while (*smpl2pop) smpl2pop++; - *smpl2pop = &args->pop[i]; - } - } -} - -int parse_tags(args_t *args, const char *str) -{ - int i, flag = 0, n_tags; - char **tags = hts_readlist(str, 0, &n_tags); - for(i=0; inpop; i++) - bcf_hdr_printf(args->out_hdr, fmt, args->pop[i].suffix,*args->pop[i].name ? " in " : "",args->pop[i].name); -} - -void list_tags(void) -{ - error( - "INFO/AN Number:1 Type:Integer .. Total number of alleles in called genotypes\n" - "INFO/AC Number:A Type:Integer .. Allele count in genotypes\n" - "INFO/NS Number:1 Type:Integer .. Number of samples with data\n" - "INFO/AC_Hom Number:A Type:Integer .. Allele counts in homozygous genotypes\n" - "INFO/AC_Het Number:A Type:Integer .. Allele counts in heterozygous genotypes\n" - "INFO/AC_Hemi Number:A Type:Integer .. Allele counts in hemizygous genotypes\n" - "INFO/AF Number:A Type:Float .. Allele frequency\n" - "INFO/MAF Number:A Type:Float .. Minor Allele frequency\n" - "INFO/HWE Number:A Type:Float .. HWE test (PMID:15789306)\n" - "INFO/ExcHet Number:A Type:Float .. Probability of excess heterozygosity\n" - ); -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - args = (args_t*) calloc(1,sizeof(args_t)); - args->in_hdr = in; - args->out_hdr = out; - char *samples_fname = NULL; - static struct option loptions[] = - { - {"list-tags",0,0,'l'}, - {"drop-missing",0,0,'d'}, - {"tags",1,0,'t'}, - {"samples-file",1,0,'S'}, - {0,0,0,0} - }; - int c; - while ((c = getopt_long(argc, argv, "?ht:dS:l",loptions,NULL)) >= 0) - { - switch (c) - { - case 'l': list_tags(); break; - case 'd': args->drop_missing = 1; break; - case 't': args->tags |= parse_tags(args,optarg); break; - case 'S': samples_fname = optarg; break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - - if ( optind != argc ) error("%s",usage()); - - args->gt_id = bcf_hdr_id2int(args->in_hdr,BCF_DT_ID,"GT"); - if ( args->gt_id<0 ) error("Error: GT field is not present\n"); - - if ( !args->tags ) - for (c=0; c<=9; c++) args->tags |= 1<tags & SET_AN ) hdr_append(args, "##INFO="); - if ( args->tags & SET_AC ) hdr_append(args, "##INFO="); - if ( args->tags & SET_NS ) hdr_append(args, "##INFO="); - if ( args->tags & SET_AC_Hom ) hdr_append(args, "##INFO="); - if ( args->tags & SET_AC_Het ) hdr_append(args, "##INFO="); - if ( args->tags & SET_AC_Hemi ) hdr_append(args, "##INFO="); - if ( args->tags & SET_AF ) hdr_append(args, "##INFO="); - if ( args->tags & SET_MAF ) hdr_append(args, "##INFO="); - if ( args->tags & SET_HWE ) hdr_append(args, "##INFO="); - if ( args->tags & SET_ExcHet ) hdr_append(args, "##INFO="); - - return 0; -} - -/* - Wigginton 2005, PMID: 15789306 - - nref .. number of reference alleles - nalt .. number of alt alleles - nhet .. number of het genotypes, assuming number of genotypes = (nref+nalt)*2 - -*/ - -void calc_hwe(args_t *args, int nref, int nalt, int nhet, float *p_hwe, float *p_exc_het) -{ - int ngt = (nref+nalt) / 2; - int nrare = nref < nalt ? nref : nalt; - - // sanity check: there is odd/even number of rare alleles iff there is odd/even number of hets - if ( (nrare & 1) ^ (nhet & 1) ) error("nrare/nhet should be both odd or even: nrare=%d nref=%d nalt=%d nhet=%d\n",nrare,nref,nalt,nhet); - if ( nrare < nhet ) error("Fewer rare alleles than hets? nrare=%d nref=%d nalt=%d nhet=%d\n",nrare,nref,nalt,nhet); - if ( (nref+nalt) & 1 ) error("Expected diploid genotypes: nref=%d nalt=%d\n",nref,nalt); - - // initialize het probs - hts_expand(double,nrare+1,args->mhwe_probs,args->hwe_probs); - memset(args->hwe_probs, 0, sizeof(*args->hwe_probs)*(nrare+1)); - double *probs = args->hwe_probs; - - // start at midpoint - int mid = nrare * (nref + nalt - nrare) / (nref + nalt); - - // check to ensure that midpoint and rare alleles have same parity - if ( (nrare & 1) ^ (mid & 1) ) mid++; - - int het = mid; - int hom_r = (nrare - mid) / 2; - int hom_c = ngt - het - hom_r; - double sum = probs[mid] = 1.0; - - for (het = mid; het > 1; het -= 2) - { - probs[het - 2] = probs[het] * het * (het - 1.0) / (4.0 * (hom_r + 1.0) * (hom_c + 1.0)); - sum += probs[het - 2]; - - // 2 fewer heterozygotes for next iteration -> add one rare, one common homozygote - hom_r++; - hom_c++; - } - - het = mid; - hom_r = (nrare - mid) / 2; - hom_c = ngt - het - hom_r; - for (het = mid; het <= nrare - 2; het += 2) - { - probs[het + 2] = probs[het] * 4.0 * hom_r * hom_c / ((het + 2.0) * (het + 1.0)); - sum += probs[het + 2]; - - // add 2 heterozygotes for next iteration -> subtract one rare, one common homozygote - hom_r--; - hom_c--; - } - - for (het=0; het probs[nhet]) continue; - prob += probs[het]; - } - if ( prob > 1 ) prob = 1; - *p_hwe = prob; -} - -static inline void set_counts(pop_t *pop, int is_half, int is_hom, int is_hemi, int als) -{ - int ial; - for (ial=0; als; ial++) - { - if ( als&1 ) - { - if ( is_half ) pop->counts[ial].nac++; - else if ( !is_hom ) pop->counts[ial].nhet++; - else if ( !is_hemi ) pop->counts[ial].nhom += 2; - else pop->counts[ial].nhemi++; - } - als >>= 1; - } - pop->ns++; -} -static void clean_counts(pop_t *pop, int nals) -{ - pop->ns = 0; - memset(pop->counts,0,sizeof(counts_t)*nals); -} - -bcf1_t *process(bcf1_t *rec) -{ - int i,j, nsmpl = bcf_hdr_nsamples(args->in_hdr);; - - bcf_unpack(rec, BCF_UN_FMT); - bcf_fmt_t *fmt_gt = NULL; - for (i=0; in_fmt; i++) - if ( rec->d.fmt[i].id==args->gt_id ) { fmt_gt = &rec->d.fmt[i]; break; } - if ( !fmt_gt ) return rec; // no GT tag - - hts_expand(int32_t,rec->n_allele, args->miarr, args->iarr); - hts_expand(float,rec->n_allele*2, args->mfarr, args->farr); - for (i=0; inpop; i++) - hts_expand(counts_t,rec->n_allele,args->pop[i].mcounts, args->pop[i].counts); - - for (i=0; inpop; i++) - clean_counts(&args->pop[i], rec->n_allele); - - assert( rec->n_allele < 8*sizeof(int) ); - - #define BRANCH_INT(type_t,vector_end) \ - { \ - for (i=0; ip + i*fmt_gt->size); \ - int ial, als = 0, nals = 0, is_half, is_hom, is_hemi; \ - for (ial=0; ialn; ial++) \ - { \ - if ( p[ial]==vector_end ) break; /* smaller ploidy */ \ - if ( bcf_gt_is_missing(p[ial]) ) continue; /* missing allele */ \ - int idx = bcf_gt_allele(p[ial]); \ - nals++; \ - \ - if ( idx >= rec->n_allele ) \ - error("Incorrect allele (\"%d\") in %s at %s:%d\n",idx,args->in_hdr->samples[i],bcf_seqname(args->in_hdr,rec),rec->pos+1); \ - als |= (1<drop_missing ) is_hemi = 0, is_half = 1; \ - else is_hemi = 1, is_half = 0; \ - } \ - else if ( nals==1 ) is_hemi = 1, is_half = 0; \ - else is_hemi = 0, is_half = 0; \ - pop_t **pop = &args->smpl2pop[i*(args->npop+1)]; \ - while ( *pop ) { set_counts(*pop,is_half,is_hom,is_hemi,als); pop++; }\ - } \ - } - switch (fmt_gt->type) { - case BCF_BT_INT8: BRANCH_INT(int8_t, bcf_int8_vector_end); break; - case BCF_BT_INT16: BRANCH_INT(int16_t, bcf_int16_vector_end); break; - case BCF_BT_INT32: BRANCH_INT(int32_t, bcf_int32_vector_end); break; - default: error("The GT type is not recognised: %d at %s:%d\n",fmt_gt->type, bcf_seqname(args->in_hdr,rec),rec->pos+1); break; - } - #undef BRANCH_INT - - if ( args->tags & SET_NS ) - { - for (i=0; inpop; i++) - { - args->str.l = 0; - ksprintf(&args->str, "NS%s", args->pop[i].suffix); - if ( bcf_update_info_int32(args->out_hdr,rec,args->str.s,&args->pop[i].ns,1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - if ( args->tags & SET_AN ) - { - for (i=0; inpop; i++) - { - pop_t *pop = &args->pop[i]; - int32_t an = 0; - for (j=0; jn_allele; j++) - an += pop->counts[j].nhet + pop->counts[j].nhom + pop->counts[j].nhemi + pop->counts[j].nac; - - args->str.l = 0; - ksprintf(&args->str, "AN%s", args->pop[i].suffix); - if ( bcf_update_info_int32(args->out_hdr,rec,args->str.s,&an,1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - if ( args->tags & (SET_AF | SET_MAF) ) - { - for (i=0; inpop; i++) - { - int32_t an = 0; - if ( rec->n_allele > 1 ) - { - pop_t *pop = &args->pop[i]; - memset(args->farr, 0, sizeof(*args->farr)*(rec->n_allele-1)); - for (j=1; jn_allele; j++) - args->farr[j-1] += pop->counts[j].nhet + pop->counts[j].nhom + pop->counts[j].nhemi + pop->counts[j].nac; - an = pop->counts[0].nhet + pop->counts[0].nhom + pop->counts[0].nhemi + pop->counts[0].nac; - for (j=1; jn_allele; j++) an += args->farr[j-1]; - if ( !an ) continue; - for (j=1; jn_allele; j++) args->farr[j-1] /= an; - } - if ( args->tags & SET_AF ) - { - args->str.l = 0; - ksprintf(&args->str, "AF%s", args->pop[i].suffix); - if ( bcf_update_info_float(args->out_hdr,rec,args->str.s,args->farr,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - if ( args->tags & SET_MAF ) - { - if ( !an ) continue; - for (j=1; jn_allele; j++) - if ( args->farr[j-1] > 0.5 ) args->farr[j-1] = 1 - args->farr[j-1]; // todo: this is incorrect for multiallelic sites - args->str.l = 0; - ksprintf(&args->str, "MAF%s", args->pop[i].suffix); - if ( bcf_update_info_float(args->out_hdr,rec,args->str.s,args->farr,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - } - if ( args->tags & SET_AC ) - { - for (i=0; inpop; i++) - { - if ( rec->n_allele > 1 ) - { - pop_t *pop = &args->pop[i]; - memset(args->iarr, 0, sizeof(*args->iarr)*(rec->n_allele-1)); - for (j=1; jn_allele; j++) - args->iarr[j-1] += pop->counts[j].nhet + pop->counts[j].nhom + pop->counts[j].nhemi + pop->counts[j].nac; - } - args->str.l = 0; - ksprintf(&args->str, "AC%s", args->pop[i].suffix); - if ( bcf_update_info_int32(args->out_hdr,rec,args->str.s,args->iarr,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - if ( args->tags & SET_AC_Het ) - { - for (i=0; inpop; i++) - { - if ( rec->n_allele > 1 ) - { - pop_t *pop = &args->pop[i]; - memset(args->iarr, 0, sizeof(*args->iarr)*(rec->n_allele-1)); - for (j=1; jn_allele; j++) - args->iarr[j-1] += pop->counts[j].nhet; - } - args->str.l = 0; - ksprintf(&args->str, "AC_Het%s", args->pop[i].suffix); - if ( bcf_update_info_int32(args->out_hdr,rec,args->str.s,args->iarr,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - if ( args->tags & SET_AC_Hom ) - { - for (i=0; inpop; i++) - { - if ( rec->n_allele > 1 ) - { - pop_t *pop = &args->pop[i]; - memset(args->iarr, 0, sizeof(*args->iarr)*(rec->n_allele-1)); - for (j=1; jn_allele; j++) - args->iarr[j-1] += pop->counts[j].nhom; - } - args->str.l = 0; - ksprintf(&args->str, "AC_Hom%s", args->pop[i].suffix); - if ( bcf_update_info_int32(args->out_hdr,rec,args->str.s,args->iarr,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - if ( args->tags & SET_AC_Hemi && rec->n_allele > 1 ) - { - for (i=0; inpop; i++) - { - if ( rec->n_allele > 1 ) - { - pop_t *pop = &args->pop[i]; - memset(args->iarr, 0, sizeof(*args->iarr)*(rec->n_allele-1)); - for (j=1; jn_allele; j++) - args->iarr[j-1] += pop->counts[j].nhemi; - } - args->str.l = 0; - ksprintf(&args->str, "AC_Hemi%s", args->pop[i].suffix); - if ( bcf_update_info_int32(args->out_hdr,rec,args->str.s,args->iarr,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - if ( args->tags & (SET_HWE|SET_ExcHet) ) - { - for (i=0; inpop; i++) - { - float *fhwe = args->farr; - float *fexc_het = args->farr + rec->n_allele; - if ( rec->n_allele > 1 ) - { - pop_t *pop = &args->pop[i]; - memset(args->farr, 0, sizeof(*args->farr)*(2*rec->n_allele)); - int nref_tot = pop->counts[0].nhom; - for (j=0; jn_allele; j++) nref_tot += pop->counts[j].nhet; // NB this neglects multiallelic genotypes - for (j=1; jn_allele; j++) - { - int nref = nref_tot - pop->counts[j].nhet; - int nalt = pop->counts[j].nhet + pop->counts[j].nhom; - int nhet = pop->counts[j].nhet; - if ( nref>0 && nalt>0 ) - calc_hwe(args, nref, nalt, nhet, &fhwe[j-1], &fexc_het[j-1]); - else - fhwe[j-1] = fexc_het[j-1] = 1; - } - } - if ( args->tags & SET_HWE ) - { - args->str.l = 0; - ksprintf(&args->str, "HWE%s", args->pop[i].suffix); - if ( bcf_update_info_float(args->out_hdr,rec,args->str.s,fhwe,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - if ( args->tags & SET_ExcHet ) - { - args->str.l = 0; - ksprintf(&args->str, "ExcHet%s", args->pop[i].suffix); - if ( bcf_update_info_float(args->out_hdr,rec,args->str.s,fexc_het,rec->n_allele-1)!=0 ) - error("Error occurred while updating %s at %s:%d\n", args->str.s,bcf_seqname(args->in_hdr,rec),rec->pos+1); - } - } - } - - return rec; -} - -void destroy(void) -{ - int i; - for (i=0; inpop; i++) - { - free(args->pop[i].name); - free(args->pop[i].suffix); - free(args->pop[i].smpl); - free(args->pop[i].counts); - } - free(args->str.s); - free(args->pop); - free(args->smpl2pop); - free(args->iarr); - free(args->farr); - free(args->hwe_probs); - free(args); -} - - - diff --git a/bcftools/plugins/fixploidy.c b/bcftools/plugins/fixploidy.c deleted file mode 100644 index 039d0f4..0000000 --- a/bcftools/plugins/fixploidy.c +++ /dev/null @@ -1,250 +0,0 @@ -/* - Copyright (C) 2014 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "ploidy.h" - -static bcf_hdr_t *in_hdr = NULL, *out_hdr = NULL; -static int *sample2sex = NULL; -static int n_sample = 0, nsex = 0, *sex2ploidy = NULL; -static int32_t ngt_arr = 0, *gt_arr = NULL, *gt_arr2 = NULL, ngt_arr2 = 0; -static ploidy_t *ploidy = NULL; -static int force_ploidy = -1; - -const char *about(void) -{ - return "Fix ploidy.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Fix ploidy\n" - "Usage: bcftools +fixploidy [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -d, --default-ploidy default ploidy for regions unlisted in -p [2]\n" - " -f, --force-ploidy ignore -p, set the same ploidy for all genotypes\n" - " -p, --ploidy space/tab-delimited list of CHROM,FROM,TO,SEX,PLOIDY\n" - " -s, --sex list of samples, \"NAME SEX\"\n" - " -t, --tags VCF tags to fix [GT]\n" - "\n" - "Example:\n" - " # Default ploidy, if -p not given. Unlisted regions have ploidy 2\n" - " X 1 60000 M 1\n" - " X 2699521 154931043 M 1\n" - " Y 1 59373566 M 1\n" - " Y 1 59373566 F 0\n" - " MT 1 16569 M 1\n" - " MT 1 16569 F 1\n" - " \n" - " # Example of -s file, sex of unlisted samples is \"F\"\n" - " sampleName1 M\n" - " \n" - " bcftools +fixploidy in.vcf -- -s samples.txt\n" - "\n"; -} - -void set_samples(char *fname, bcf_hdr_t *hdr, ploidy_t *ploidy, int *sample2sex) -{ - kstring_t tmp = {0,0,0}; - - htsFile *fp = hts_open(fname, "r"); - if ( !fp ) error("Could not read: %s\n", fname); - while ( hts_getline(fp, KS_SEP_LINE, &tmp) > 0 ) - { - char *ss = tmp.s; - while ( *ss && isspace(*ss) ) ss++; - if ( !*ss ) error("Could not parse: %s\n", tmp.s); - if ( *ss=='#' ) continue; - char *se = ss; - while ( *se && !isspace(*se) ) se++; - char x = *se; *se = 0; - - int ismpl = bcf_hdr_id2int(hdr, BCF_DT_SAMPLE, ss); - if ( ismpl < 0 ) { fprintf(stderr,"Warning: No such sample in the VCF: %s\n",ss); continue; } - - *se = x; - ss = se+1; - while ( *ss && isspace(*ss) ) ss++; - if ( !*ss ) error("Could not parse: %s\n", tmp.s); - se = ss; - while ( *se && !isspace(*se) ) se++; - if ( se==ss ) error("Could not parse: %s\n", tmp.s); - - sample2sex[ismpl] = ploidy_add_sex(ploidy, ss); - } - if ( hts_close(fp) ) error("Close failed: %s\n", fname); - free(tmp.s); -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - int c, default_ploidy = 2; - char *tags_str = "GT"; - char *ploidy_fname = NULL, *sex_fname = NULL; - - static struct option loptions[] = - { - {"default-ploidy",1,0,'d'}, - {"force-ploidy",1,0,'f'}, - {"ploidy",1,0,'p'}, - {"sex",1,0,'s'}, - {"tags",1,0,'t'}, - {0,0,0,0} - }; - char *tmp; - while ((c = getopt_long(argc, argv, "?ht:s:p:d:f:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'd': - default_ploidy = strtod(optarg,&tmp); - if ( *tmp ) error("Could not parse: -d %s\n", optarg); - break; - case 'f': - force_ploidy = strtod(optarg,&tmp); - if ( *tmp ) error("Could not parse: -f %s\n", optarg); - break; - case 'p': ploidy_fname = optarg; break; - case 's': sex_fname = optarg; break; - case 't': tags_str = optarg; break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - if ( strcasecmp("GT",tags_str) ) error("Only -t GT is currently supported, sorry\n"); - - n_sample = bcf_hdr_nsamples(in); - sample2sex = (int*) calloc(n_sample,sizeof(int)); - in_hdr = in; - out_hdr = out; - - if ( ploidy_fname ) - ploidy = ploidy_init(ploidy_fname, default_ploidy); - else if ( force_ploidy==-1 ) - { - ploidy = ploidy_init_string( - "X 1 60000 M 1\n" - "X 2699521 154931043 M 1\n" - "Y 1 59373566 M 1\n" - "Y 1 59373566 F 0\n" - "MT 1 16569 M 1\n" - "MT 1 16569 F 1\n", 2); - } - if ( force_ploidy==-1 ) - { - if ( !ploidy ) return -1; - - // add default sex in case it was not included - int i, dflt_sex_id = ploidy_add_sex(ploidy, "F"); - for (i=0; ipos+1); - - if ( force_ploidy==-1 ) - ploidy_query(ploidy, (char*)bcf_seqname(in_hdr,rec), rec->pos, sex2ploidy,NULL,&max_ploidy); - else - max_ploidy = force_ploidy; - - ngts /= n_sample; - if ( ngts < max_ploidy ) - { - hts_expand(int32_t,max_ploidy*n_sample,ngt_arr2,gt_arr2); - for (i=0; ipos+1); - } - else if ( ngts!=1 || max_ploidy!=1 ) - { - for (i=0; ipos+1); - } - return rec; -} - - -void destroy(void) -{ - free(gt_arr); - free(gt_arr2); - free(sample2sex); - free(sex2ploidy); - if ( ploidy ) ploidy_destroy(ploidy); -} - - diff --git a/bcftools/plugins/fixploidy.c.pysam.c b/bcftools/plugins/fixploidy.c.pysam.c deleted file mode 100644 index e282c19..0000000 --- a/bcftools/plugins/fixploidy.c.pysam.c +++ /dev/null @@ -1,252 +0,0 @@ -#include "bcftools.pysam.h" - -/* - Copyright (C) 2014 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "ploidy.h" - -static bcf_hdr_t *in_hdr = NULL, *out_hdr = NULL; -static int *sample2sex = NULL; -static int n_sample = 0, nsex = 0, *sex2ploidy = NULL; -static int32_t ngt_arr = 0, *gt_arr = NULL, *gt_arr2 = NULL, ngt_arr2 = 0; -static ploidy_t *ploidy = NULL; -static int force_ploidy = -1; - -const char *about(void) -{ - return "Fix ploidy.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Fix ploidy\n" - "Usage: bcftools +fixploidy [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -d, --default-ploidy default ploidy for regions unlisted in -p [2]\n" - " -f, --force-ploidy ignore -p, set the same ploidy for all genotypes\n" - " -p, --ploidy space/tab-delimited list of CHROM,FROM,TO,SEX,PLOIDY\n" - " -s, --sex list of samples, \"NAME SEX\"\n" - " -t, --tags VCF tags to fix [GT]\n" - "\n" - "Example:\n" - " # Default ploidy, if -p not given. Unlisted regions have ploidy 2\n" - " X 1 60000 M 1\n" - " X 2699521 154931043 M 1\n" - " Y 1 59373566 M 1\n" - " Y 1 59373566 F 0\n" - " MT 1 16569 M 1\n" - " MT 1 16569 F 1\n" - " \n" - " # Example of -s file, sex of unlisted samples is \"F\"\n" - " sampleName1 M\n" - " \n" - " bcftools +fixploidy in.vcf -- -s samples.txt\n" - "\n"; -} - -void set_samples(char *fname, bcf_hdr_t *hdr, ploidy_t *ploidy, int *sample2sex) -{ - kstring_t tmp = {0,0,0}; - - htsFile *fp = hts_open(fname, "r"); - if ( !fp ) error("Could not read: %s\n", fname); - while ( hts_getline(fp, KS_SEP_LINE, &tmp) > 0 ) - { - char *ss = tmp.s; - while ( *ss && isspace(*ss) ) ss++; - if ( !*ss ) error("Could not parse: %s\n", tmp.s); - if ( *ss=='#' ) continue; - char *se = ss; - while ( *se && !isspace(*se) ) se++; - char x = *se; *se = 0; - - int ismpl = bcf_hdr_id2int(hdr, BCF_DT_SAMPLE, ss); - if ( ismpl < 0 ) { fprintf(bcftools_stderr,"Warning: No such sample in the VCF: %s\n",ss); continue; } - - *se = x; - ss = se+1; - while ( *ss && isspace(*ss) ) ss++; - if ( !*ss ) error("Could not parse: %s\n", tmp.s); - se = ss; - while ( *se && !isspace(*se) ) se++; - if ( se==ss ) error("Could not parse: %s\n", tmp.s); - - sample2sex[ismpl] = ploidy_add_sex(ploidy, ss); - } - if ( hts_close(fp) ) error("Close failed: %s\n", fname); - free(tmp.s); -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - int c, default_ploidy = 2; - char *tags_str = "GT"; - char *ploidy_fname = NULL, *sex_fname = NULL; - - static struct option loptions[] = - { - {"default-ploidy",1,0,'d'}, - {"force-ploidy",1,0,'f'}, - {"ploidy",1,0,'p'}, - {"sex",1,0,'s'}, - {"tags",1,0,'t'}, - {0,0,0,0} - }; - char *tmp; - while ((c = getopt_long(argc, argv, "?ht:s:p:d:f:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'd': - default_ploidy = strtod(optarg,&tmp); - if ( *tmp ) error("Could not parse: -d %s\n", optarg); - break; - case 'f': - force_ploidy = strtod(optarg,&tmp); - if ( *tmp ) error("Could not parse: -f %s\n", optarg); - break; - case 'p': ploidy_fname = optarg; break; - case 's': sex_fname = optarg; break; - case 't': tags_str = optarg; break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - if ( strcasecmp("GT",tags_str) ) error("Only -t GT is currently supported, sorry\n"); - - n_sample = bcf_hdr_nsamples(in); - sample2sex = (int*) calloc(n_sample,sizeof(int)); - in_hdr = in; - out_hdr = out; - - if ( ploidy_fname ) - ploidy = ploidy_init(ploidy_fname, default_ploidy); - else if ( force_ploidy==-1 ) - { - ploidy = ploidy_init_string( - "X 1 60000 M 1\n" - "X 2699521 154931043 M 1\n" - "Y 1 59373566 M 1\n" - "Y 1 59373566 F 0\n" - "MT 1 16569 M 1\n" - "MT 1 16569 F 1\n", 2); - } - if ( force_ploidy==-1 ) - { - if ( !ploidy ) return -1; - - // add default sex in case it was not included - int i, dflt_sex_id = ploidy_add_sex(ploidy, "F"); - for (i=0; ipos+1); - - if ( force_ploidy==-1 ) - ploidy_query(ploidy, (char*)bcf_seqname(in_hdr,rec), rec->pos, sex2ploidy,NULL,&max_ploidy); - else - max_ploidy = force_ploidy; - - ngts /= n_sample; - if ( ngts < max_ploidy ) - { - hts_expand(int32_t,max_ploidy*n_sample,ngt_arr2,gt_arr2); - for (i=0; ipos+1); - } - else if ( ngts!=1 || max_ploidy!=1 ) - { - for (i=0; ipos+1); - } - return rec; -} - - -void destroy(void) -{ - free(gt_arr); - free(gt_arr2); - free(sample2sex); - free(sex2ploidy); - if ( ploidy ) ploidy_destroy(ploidy); -} - - diff --git a/bcftools/plugins/fixref.c b/bcftools/plugins/fixref.c deleted file mode 100644 index 04c19fe..0000000 --- a/bcftools/plugins/fixref.c +++ /dev/null @@ -1,572 +0,0 @@ -/* The MIT License - - Copyright (c) 2016 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -/* - Illumina TOP/BOT strand convention causes a lot of pain. This tool - attempts to determine the strand convention and convert it to the - forward reference strand. - - On TOP strand, we can encounter - unambiguous SNPs: - A/G - A/C - ambiguous (context-dependent) SNPs: - C/G - A/T - - On BOT strand: - unambiguous SNPs: - T/G - T/C - ambiguous (context-dependent) SNPs: - T/A - G/C - - - For unambiguous pairs (A/C, A/G, T/C, T/G), the knowledge of reference base - at the SNP position is enough to determine the strand: - - TOP REF -> ALLELES TOP_ON_STRAND - ------------------------------------------- - A/C A or C A/C 1 - " T or G T/G -1 - A/G A or G A/G 1 - " T or C T/C -1 - - - For ambiguous pairs (A/T, C/G), a sequence walking must be performed - (simultaneously upstream and downstream) until the first unambiguous pair - is encountered. The 5' base determines the strand: - - TOP 5'REF_BASE -> ALLELES TOP_ON_STRAND - ------------------------------------------------ - A/T A or T A/T 1 - " C or G T/A -1 - C/G A or T C/G 1 - " C or G G/C -1 - - */ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" - -#define MODE_STATS 1 -#define MODE_TOP2FWD 2 -#define MODE_FLIP2FWD 3 -#define MODE_USE_ID 4 - -typedef struct -{ - uint32_t pos; - uint8_t ref; -} -marker_t; - -KHASH_MAP_INIT_INT(i2m, marker_t) -typedef khash_t(i2m) i2m_t; - -typedef struct -{ - char *dbsnp_fname; - int mode, discard; - bcf_hdr_t *hdr; - faidx_t *fai; - int rid, skip_rid; - i2m_t *i2m; - int32_t *gts, ngts, pos; - uint32_t nsite,nok,nflip,nunresolved,nswap,nflip_swap,nonSNP,nonACGT,nonbiallelic; - uint32_t count[4][4], npos_err, unsorted; -} -args_t; - -args_t args; - -const char *about(void) -{ - return "Fix reference strand orientation, e.g. from Illumina/TOP to fwd.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: This tool helps to determine and fix strand orientation.\n" - " Currently the following modes are recognised:\n" - " flip .. flips non-ambiguous SNPs and ignores the rest\n" - " id .. swap REF/ALT and GTs using the ID column to determine the REF allele\n" - " stats .. collect and print stats\n" - " top .. converts from Illumina TOP strand to fwd\n" - "\n" - " WARNING: Do not use the program blindly, make an effort to\n" - " understand what strand convention your data uses! Make sure\n" - " the reason for mismatching REF alleles is not a different\n" - " reference build!!\n" - "\n" - "Usage: bcftools +fixref [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -d, --discard Discard sites which could not be resolved\n" - " -f, --fasta-ref Reference sequence\n" - " -i, --use-id Swap REF/ALT using the ID column to determine the REF allele, implies -m id.\n" - " Download the dbSNP file from\n" - " https://www.ncbi.nlm.nih.gov/variation/docs/human_variation_vcf\n" - " -m, --mode Collect stats (\"stats\") or convert (\"flip\", \"id\", \"top\") [stats]\n" - "\n" - "Examples:\n" - " # run stats\n" - " bcftools +fixref file.bcf -- -f ref.fa\n" - "\n" - " # convert from TOP to fwd\n" - " bcftools +fixref file.bcf -Ob -o out.bcf -- -f ref.fa -m top\n" - "\n" - " # match the REF/ALT alleles based on the ID column, discard unknown sites\n" - " bcftools +fixref file.bcf -Ob -o out.bcf -- -d -f ref.fa -i All_20151104.vcf.gz\n" - "\n" - " # assuming the reference build is correct, just flip to fwd, discarding the rest\n" - " bcftools +fixref file.bcf -Ob -o out.bcf -- -d -f ref.fa -m flip\n" - "\n"; -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - memset(&args,0,sizeof(args_t)); - args.skip_rid = -1; - args.hdr = in; - args.mode = MODE_STATS; - char *ref_fname = NULL; - static struct option loptions[] = - { - {"mode",required_argument,NULL,'m'}, - {"discard",no_argument,NULL,'d'}, - {"fasta-ref",required_argument,NULL,'f'}, - {"use-id",required_argument,NULL,'i'}, - {NULL,0,NULL,0} - }; - int c; - while ((c = getopt_long(argc, argv, "?hf:m:di:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'm': - if ( !strcasecmp(optarg,"top") ) args.mode = MODE_TOP2FWD; - else if ( !strcasecmp(optarg,"flip") ) args.mode = MODE_FLIP2FWD; - else if ( !strcasecmp(optarg,"id") ) args.mode = MODE_USE_ID; - else if ( !strcasecmp(optarg,"stats") ) args.mode = MODE_STATS; - else error("The source strand convention not recognised: %s\n", optarg); - break; - case 'i': args.dbsnp_fname = optarg; args.mode = MODE_USE_ID; break; - case 'd': args.discard = 1; break; - case 'f': ref_fname = optarg; break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - if ( !ref_fname ) error("Expected the -f option\n"); - args.fai = fai_load(ref_fname); - if ( !args.fai ) error("Failed to load the fai index: %s\n", ref_fname); - - if ( args.mode==MODE_STATS ) return 1; - return 0; -} - -static bcf1_t *set_ref_alt(args_t *args, bcf1_t *rec, const char ref, const char alt, int swap) -{ - rec->d.allele[0][0] = ref; - rec->d.allele[1][0] = alt; - rec->d.shared_dirty |= BCF1_DIRTY_ALS; - - if ( !swap ) return rec; // only fix the alleles, leaving GTs unchanged - - int ngts = bcf_get_genotypes(args->hdr, rec, &args->gts, &args->ngts); - int i, j, nsmpl = bcf_hdr_nsamples(args->hdr); - ngts /= nsmpl; - for (i=0; igts + i*ngts; - for (j=0; jhdr,rec,args->gts,args->ngts); - - return rec; -} - -static inline int nt2int(char nt) -{ - nt = toupper(nt); - if ( nt=='A' ) return 0; - if ( nt=='C' ) return 1; - if ( nt=='G' ) return 2; - if ( nt=='T' ) return 3; - return -1; -} -#define int2nt(x) "ACGT"[x] -#define revint(x) ("3210"[x]-'0') - -static inline uint32_t parse_rsid(char *name) -{ - if ( name[0]!='r' || name[1]!='s' ) - { - name = strstr(name, "rs"); - if ( !name ) return 0; - } - char *tmp; - name += 2; - uint64_t id = strtol(name, &tmp, 10); - if ( tmp==name || *tmp ) return 0; - if ( id > UINT32_MAX ) error("FIXME: the ID is too big for uint32_t: %s\n", name-2); - return id; -} - -static int fetch_ref(args_t *args, bcf1_t *rec) -{ - // Get the reference allele - int len; - char *ref = faidx_fetch_seq(args->fai, (char*)bcf_seqname(args->hdr,rec), rec->pos, rec->pos, &len); - if ( !ref ) - { - if ( faidx_has_seq(args->fai, bcf_seqname(args->hdr,rec))==0 ) - { - fprintf(stderr,"Ignoring sequence \"%s\"\n", bcf_seqname(args->hdr,rec)); - args->skip_rid = rec->rid; - return -2; - } - error("faidx_fetch_seq failed at %s:%d\n", bcf_seqname(args->hdr,rec),rec->pos+1); - } - int ir = nt2int(*ref); - free(ref); - return ir; -} - -static void dbsnp_init(args_t *args, const char *chr) -{ - if ( args->i2m ) kh_destroy(i2m, args->i2m); - args->i2m = kh_init(i2m); - bcf_srs_t *sr = bcf_sr_init(); - if ( bcf_sr_set_regions(sr, chr, 0) != 0 ) goto done; - if ( !bcf_sr_add_reader(sr,args->dbsnp_fname) ) error("Failed to open %s: %s\n", args->dbsnp_fname,bcf_sr_strerror(sr->errnum)); - while ( bcf_sr_next_line(sr) ) - { - bcf1_t *rec = bcf_sr_get_line(sr, 0); - if ( rec->d.allele[0][1]!=0 || rec->d.allele[1][1]!=0 ) continue; // skip non-snps - - int ref = nt2int(rec->d.allele[0][0]); - if ( ref<0 ) continue; // non-[ACGT] base - - uint32_t id = parse_rsid(rec->d.id); - if ( !id ) continue; - - int ret, k; - k = kh_put(i2m, args->i2m, id, &ret); - if ( ret<0 ) error("An error occurred while inserting the key %u\n", id); - if ( ret==0 ) continue; // skip ambiguous id - kh_val(args->i2m, k).pos = (uint32_t)rec->pos; - kh_val(args->i2m, k).ref = ref; - } -done: - bcf_sr_destroy(sr); -} - -static bcf1_t *dbsnp_check(args_t *args, bcf1_t *rec, int ir, int ia, int ib) -{ - int k, ref,pos; - uint32_t id = parse_rsid(rec->d.id); - if ( !id ) goto no_info; - - k = kh_get(i2m, args->i2m, id); - if ( k==kh_end(args->i2m) ) goto no_info; - - pos = (int)kh_val(args->i2m, k).pos; - if ( pos != rec->pos ) - { - rec->pos = pos; - ir = fetch_ref(args, rec); - args->npos_err++; - } - - ref = kh_val(args->i2m, k).ref; - if ( ref!=ir ) - error("Reference base mismatch at %s:%d .. %c vs %c\n",bcf_seqname(args->hdr,rec),rec->pos+1,int2nt(ref),int2nt(ir)); - - if ( ia==ref ) return rec; - if ( ib==ref ) { args->nswap++; return set_ref_alt(args,rec,int2nt(ib),int2nt(ia),1); } - -no_info: - args->nunresolved++; - return args->discard ? NULL : rec; -} - -bcf1_t *process(bcf1_t *rec) -{ - if ( rec->rid == args.skip_rid ) return NULL; - - bcf1_t *ret = args.mode==MODE_STATS ? NULL : rec; - args.nsite++; - - // Skip non-SNPs - if ( bcf_get_variant_types(rec)!=VCF_SNP ) - { - args.nonSNP++; - return args.discard ? NULL : ret; - } - - // Get the reference allele - int ir = fetch_ref(&args, rec); - if ( ir==-2 ) return NULL; - if ( ir==-1 ) - { - args.nonACGT++; - return args.discard ? NULL : ret; // not A,C,G,T - } - - if ( rec->n_allele!=2 ) - { - // not a biallelic site - args.nonbiallelic++; - return args.discard ? NULL : ret; - } - - int ia = nt2int(rec->d.allele[0][0]); - if ( ia<0 ) - { - // not A,C,G,T - args.nonACGT++; - return args.discard ? NULL : ret; - } - - int ib = nt2int(rec->d.allele[1][0]); - if ( ib<0 ) - { - // not A,C,G,T - args.nonACGT++; - return args.discard ? NULL : ret; - } - - if ( ia==ib ) - { - // should not happen in well-formed VCF - args.nonSNP++; - return args.discard ? NULL : ret; - } - args.count[ia][ib]++; - - if ( ir==ia ) args.nok++; - - if ( args.mode==MODE_USE_ID ) - { - if ( !args.i2m || args.rid!=rec->rid ) - { - args.pos = 0; - args.rid = rec->rid; - dbsnp_init(&args,bcf_seqname(args.hdr,rec)); - } - ret = dbsnp_check(&args, rec, ir,ia,ib); - if ( !args.unsorted && args.pos > rec->pos ) - { - fprintf(stderr, - "Warning: corrected position(s) results in unsorted VCF, for example %s:%d comes after %s:%d\n" - " The standard unix `sort` or `vcf-sort` from vcftools can be used to fix the order.\n", - bcf_seqname(args.hdr,rec),rec->pos+1,bcf_seqname(args.hdr,rec),args.pos); - args.unsorted = 1; - } - args.pos = rec->pos; - return ret; - } - else if ( args.mode==MODE_FLIP2FWD ) - { - int pair = 1 << ia | 1 << ib; - if ( pair==0x9 || pair==0x6 ) // skip ambiguous pairs: A/T or C/G - { - args.nunresolved++; - return args.discard ? NULL : ret; - } - if ( ir==ia ) return ret; - if ( ir==ib ) { args.nswap++; return set_ref_alt(&args,rec,int2nt(ib),int2nt(ia),1); } - if ( ir==revint(ia) ) { args.nflip++; return set_ref_alt(&args,rec,int2nt(revint(ia)),int2nt(revint(ib)),0); } - if ( ir==revint(ib) ) { args.nflip_swap++; return set_ref_alt(&args,rec,int2nt(revint(ib)),int2nt(revint(ia)),1); } - error("FIXME: this should not happen %s:%d\n", bcf_seqname(args.hdr,rec),rec->pos+1); - } - else if ( args.mode==MODE_TOP2FWD ) - { - int pair = 1 << ia | 1 << ib; - if ( pair != 0x9 && pair != 0x6 ) // unambiguous pair: A/C or A/G - { - if ( ir==ia ) return ret; - - int ia_rev = revint(ia); - if ( ir==ia_rev ) // vcfref is A, faref is T, flip - { - args.nflip++; - return set_ref_alt(&args,rec,int2nt(ia_rev),int2nt(revint(ib)),0); - } - if ( ir==ib ) // vcfalt is faref, swap - { - args.nswap++; - return set_ref_alt(&args,rec,int2nt(ib),int2nt(ia),1); - } - assert( ib==revint(ir) ); - - args.nflip_swap++; - return set_ref_alt(&args,rec,int2nt(revint(ib)),int2nt(revint(ia)),1); - } - else // ambiguous pair, sequence walking must be performed - { - int len, win = rec->pos > 100 ? 100 : rec->pos, beg = rec->pos - win, end = rec->pos + win; - char *ref = faidx_fetch_seq(args.fai, (char*)bcf_seqname(args.hdr,rec), beg,end, &len); - if ( !ref ) error("faidx_fetch_seq failed at %s:%d\n", bcf_seqname(args.hdr,rec),rec->pos+1); - if ( end - beg + 1 != len ) error("FIXME: check win=%d,len=%d at %s:%d (%d %d)\n", win,len, bcf_seqname(args.hdr,rec),rec->pos+1, end,beg); - - int i, mid = rec->pos - beg, strand = 0; - for (i=1; i<=win; i++) - { - int ra = nt2int(ref[mid-i]); - int rb = nt2int(ref[mid+i]); - if ( ra<0 || rb<0 || ra==rb ) continue; // skip N's and non-infomative pairs: A/A, C/C, G/G, T/T - pair = 1 << ra | 1 << rb; - if ( pair==0x9 || pair==0x6 ) continue; // skip ambiguous pairs: A/T or C/G - strand = 1 << ra & 0x9 ? 1 : -1; - break; - } - free(ref); - - if ( strand==1 ) - { - if ( ir==ia ) return ret; - if ( ir==ib ) - { - args.nswap++; - return set_ref_alt(&args,rec,int2nt(ib),int2nt(ia),1); - } - } - else if ( strand==-1 ) - { - int ia_rev = revint(ia); - int ib_rev = revint(ib); - if ( ir==ia_rev ) - { - args.nflip++; - return set_ref_alt(&args,rec,int2nt(ia_rev),int2nt(ib_rev),0); - } - if ( ir==ib_rev ) - { - args.nflip_swap++; - return set_ref_alt(&args,rec,int2nt(ib_rev),int2nt(ia_rev),1); - } - } - - args.nunresolved++; - return args.discard ? NULL : ret; - } - } - return ret; -} - -int top_mask[4][4] = -{ - {0,1,1,1}, - {0,0,1,0}, - {0,0,0,0}, - {0,0,0,0}, -}; -int bot_mask[4][4] = -{ - {0,0,0,0}, - {0,0,0,0}, - {0,1,0,0}, - {1,1,1,0}, -}; - -void destroy(void) -{ - uint32_t i,j,tot = 0; - uint32_t top_err = 0, bot_err = 0; - for (i=0; i<4; i++) - { - for (j=0; j<4; j++) - { - tot += args.count[i][j]; - if ( !top_mask[i][j] && args.count[i][j] ) top_err++; - if ( !bot_mask[i][j] && args.count[i][j] ) bot_err++; - } - } - uint32_t nskip = args.nonACGT+args.nonSNP+args.nonbiallelic; - uint32_t ncmp = args.nsite - nskip; - - fprintf(stderr,"# SC, guessed strand convention\n"); - fprintf(stderr,"SC\tTOP-compatible\t%d\n",top_err?0:1); - fprintf(stderr,"SC\tBOT-compatible\t%d\n",bot_err?0:1); - - fprintf(stderr,"# ST, substitution types\n"); - for (i=0; i<4; i++) - { - for (j=0; j<4; j++) - { - if ( i==j ) continue; - fprintf(stderr,"ST\t%c>%c\t%u\t%.1f%%\n", int2nt(i),int2nt(j),args.count[i][j], args.count[i][j]*100./tot); - } - } - fprintf(stderr,"# NS, Number of sites:\n"); - fprintf(stderr,"NS\ttotal \t%u\n", args.nsite); - fprintf(stderr,"NS\tref match \t%u\t%.1f%%\n", args.nok,100.*args.nok/ncmp); - fprintf(stderr,"NS\tref mismatch \t%u\t%.1f%%\n", ncmp-args.nok,100.*(ncmp-args.nok)/ncmp); - if ( args.mode!=MODE_STATS ) - { - fprintf(stderr,"NS\tflipped \t%u\t%.1f%%\n", args.nflip,100.*args.nflip/(args.nsite-nskip)); - fprintf(stderr,"NS\tswapped \t%u\t%.1f%%\n", args.nswap,100.*args.nswap/(args.nsite-nskip)); - fprintf(stderr,"NS\tflip+swap \t%u\t%.1f%%\n", args.nflip_swap,100.*args.nflip_swap/(args.nsite-nskip)); - fprintf(stderr,"NS\tunresolved \t%u\t%.1f%%\n", args.nunresolved,100.*args.nunresolved/(args.nsite-nskip)); - fprintf(stderr,"NS\tfixed pos \t%u\t%.1f%%\n", args.npos_err,100.*args.npos_err/(args.nsite-nskip)); - } - fprintf(stderr,"NS\tskipped \t%u\n", nskip); - fprintf(stderr,"NS\tnon-ACGT \t%u\n", args.nonACGT); - fprintf(stderr,"NS\tnon-SNP \t%u\n", args.nonSNP); - fprintf(stderr,"NS\tnon-biallelic\t%u\n", args.nonbiallelic); - - free(args.gts); - if ( args.fai ) fai_destroy(args.fai); - if ( args.i2m ) kh_destroy(i2m, args.i2m); -} diff --git a/bcftools/plugins/fixref.c.pysam.c b/bcftools/plugins/fixref.c.pysam.c deleted file mode 100644 index 6d3aa05..0000000 --- a/bcftools/plugins/fixref.c.pysam.c +++ /dev/null @@ -1,574 +0,0 @@ -#include "bcftools.pysam.h" - -/* The MIT License - - Copyright (c) 2016 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -/* - Illumina TOP/BOT strand convention causes a lot of pain. This tool - attempts to determine the strand convention and convert it to the - forward reference strand. - - On TOP strand, we can encounter - unambiguous SNPs: - A/G - A/C - ambiguous (context-dependent) SNPs: - C/G - A/T - - On BOT strand: - unambiguous SNPs: - T/G - T/C - ambiguous (context-dependent) SNPs: - T/A - G/C - - - For unambiguous pairs (A/C, A/G, T/C, T/G), the knowledge of reference base - at the SNP position is enough to determine the strand: - - TOP REF -> ALLELES TOP_ON_STRAND - ------------------------------------------- - A/C A or C A/C 1 - " T or G T/G -1 - A/G A or G A/G 1 - " T or C T/C -1 - - - For ambiguous pairs (A/T, C/G), a sequence walking must be performed - (simultaneously upstream and downstream) until the first unambiguous pair - is encountered. The 5' base determines the strand: - - TOP 5'REF_BASE -> ALLELES TOP_ON_STRAND - ------------------------------------------------ - A/T A or T A/T 1 - " C or G T/A -1 - C/G A or T C/G 1 - " C or G G/C -1 - - */ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" - -#define MODE_STATS 1 -#define MODE_TOP2FWD 2 -#define MODE_FLIP2FWD 3 -#define MODE_USE_ID 4 - -typedef struct -{ - uint32_t pos; - uint8_t ref; -} -marker_t; - -KHASH_MAP_INIT_INT(i2m, marker_t) -typedef khash_t(i2m) i2m_t; - -typedef struct -{ - char *dbsnp_fname; - int mode, discard; - bcf_hdr_t *hdr; - faidx_t *fai; - int rid, skip_rid; - i2m_t *i2m; - int32_t *gts, ngts, pos; - uint32_t nsite,nok,nflip,nunresolved,nswap,nflip_swap,nonSNP,nonACGT,nonbiallelic; - uint32_t count[4][4], npos_err, unsorted; -} -args_t; - -args_t args; - -const char *about(void) -{ - return "Fix reference strand orientation, e.g. from Illumina/TOP to fwd.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: This tool helps to determine and fix strand orientation.\n" - " Currently the following modes are recognised:\n" - " flip .. flips non-ambiguous SNPs and ignores the rest\n" - " id .. swap REF/ALT and GTs using the ID column to determine the REF allele\n" - " stats .. collect and print stats\n" - " top .. converts from Illumina TOP strand to fwd\n" - "\n" - " WARNING: Do not use the program blindly, make an effort to\n" - " understand what strand convention your data uses! Make sure\n" - " the reason for mismatching REF alleles is not a different\n" - " reference build!!\n" - "\n" - "Usage: bcftools +fixref [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -d, --discard Discard sites which could not be resolved\n" - " -f, --fasta-ref Reference sequence\n" - " -i, --use-id Swap REF/ALT using the ID column to determine the REF allele, implies -m id.\n" - " Download the dbSNP file from\n" - " https://www.ncbi.nlm.nih.gov/variation/docs/human_variation_vcf\n" - " -m, --mode Collect stats (\"stats\") or convert (\"flip\", \"id\", \"top\") [stats]\n" - "\n" - "Examples:\n" - " # run stats\n" - " bcftools +fixref file.bcf -- -f ref.fa\n" - "\n" - " # convert from TOP to fwd\n" - " bcftools +fixref file.bcf -Ob -o out.bcf -- -f ref.fa -m top\n" - "\n" - " # match the REF/ALT alleles based on the ID column, discard unknown sites\n" - " bcftools +fixref file.bcf -Ob -o out.bcf -- -d -f ref.fa -i All_20151104.vcf.gz\n" - "\n" - " # assuming the reference build is correct, just flip to fwd, discarding the rest\n" - " bcftools +fixref file.bcf -Ob -o out.bcf -- -d -f ref.fa -m flip\n" - "\n"; -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - memset(&args,0,sizeof(args_t)); - args.skip_rid = -1; - args.hdr = in; - args.mode = MODE_STATS; - char *ref_fname = NULL; - static struct option loptions[] = - { - {"mode",required_argument,NULL,'m'}, - {"discard",no_argument,NULL,'d'}, - {"fasta-ref",required_argument,NULL,'f'}, - {"use-id",required_argument,NULL,'i'}, - {NULL,0,NULL,0} - }; - int c; - while ((c = getopt_long(argc, argv, "?hf:m:di:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'm': - if ( !strcasecmp(optarg,"top") ) args.mode = MODE_TOP2FWD; - else if ( !strcasecmp(optarg,"flip") ) args.mode = MODE_FLIP2FWD; - else if ( !strcasecmp(optarg,"id") ) args.mode = MODE_USE_ID; - else if ( !strcasecmp(optarg,"stats") ) args.mode = MODE_STATS; - else error("The source strand convention not recognised: %s\n", optarg); - break; - case 'i': args.dbsnp_fname = optarg; args.mode = MODE_USE_ID; break; - case 'd': args.discard = 1; break; - case 'f': ref_fname = optarg; break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - if ( !ref_fname ) error("Expected the -f option\n"); - args.fai = fai_load(ref_fname); - if ( !args.fai ) error("Failed to load the fai index: %s\n", ref_fname); - - if ( args.mode==MODE_STATS ) return 1; - return 0; -} - -static bcf1_t *set_ref_alt(args_t *args, bcf1_t *rec, const char ref, const char alt, int swap) -{ - rec->d.allele[0][0] = ref; - rec->d.allele[1][0] = alt; - rec->d.shared_dirty |= BCF1_DIRTY_ALS; - - if ( !swap ) return rec; // only fix the alleles, leaving GTs unchanged - - int ngts = bcf_get_genotypes(args->hdr, rec, &args->gts, &args->ngts); - int i, j, nsmpl = bcf_hdr_nsamples(args->hdr); - ngts /= nsmpl; - for (i=0; igts + i*ngts; - for (j=0; jhdr,rec,args->gts,args->ngts); - - return rec; -} - -static inline int nt2int(char nt) -{ - nt = toupper(nt); - if ( nt=='A' ) return 0; - if ( nt=='C' ) return 1; - if ( nt=='G' ) return 2; - if ( nt=='T' ) return 3; - return -1; -} -#define int2nt(x) "ACGT"[x] -#define revint(x) ("3210"[x]-'0') - -static inline uint32_t parse_rsid(char *name) -{ - if ( name[0]!='r' || name[1]!='s' ) - { - name = strstr(name, "rs"); - if ( !name ) return 0; - } - char *tmp; - name += 2; - uint64_t id = strtol(name, &tmp, 10); - if ( tmp==name || *tmp ) return 0; - if ( id > UINT32_MAX ) error("FIXME: the ID is too big for uint32_t: %s\n", name-2); - return id; -} - -static int fetch_ref(args_t *args, bcf1_t *rec) -{ - // Get the reference allele - int len; - char *ref = faidx_fetch_seq(args->fai, (char*)bcf_seqname(args->hdr,rec), rec->pos, rec->pos, &len); - if ( !ref ) - { - if ( faidx_has_seq(args->fai, bcf_seqname(args->hdr,rec))==0 ) - { - fprintf(bcftools_stderr,"Ignoring sequence \"%s\"\n", bcf_seqname(args->hdr,rec)); - args->skip_rid = rec->rid; - return -2; - } - error("faidx_fetch_seq failed at %s:%d\n", bcf_seqname(args->hdr,rec),rec->pos+1); - } - int ir = nt2int(*ref); - free(ref); - return ir; -} - -static void dbsnp_init(args_t *args, const char *chr) -{ - if ( args->i2m ) kh_destroy(i2m, args->i2m); - args->i2m = kh_init(i2m); - bcf_srs_t *sr = bcf_sr_init(); - if ( bcf_sr_set_regions(sr, chr, 0) != 0 ) goto done; - if ( !bcf_sr_add_reader(sr,args->dbsnp_fname) ) error("Failed to open %s: %s\n", args->dbsnp_fname,bcf_sr_strerror(sr->errnum)); - while ( bcf_sr_next_line(sr) ) - { - bcf1_t *rec = bcf_sr_get_line(sr, 0); - if ( rec->d.allele[0][1]!=0 || rec->d.allele[1][1]!=0 ) continue; // skip non-snps - - int ref = nt2int(rec->d.allele[0][0]); - if ( ref<0 ) continue; // non-[ACGT] base - - uint32_t id = parse_rsid(rec->d.id); - if ( !id ) continue; - - int ret, k; - k = kh_put(i2m, args->i2m, id, &ret); - if ( ret<0 ) error("An error occurred while inserting the key %u\n", id); - if ( ret==0 ) continue; // skip ambiguous id - kh_val(args->i2m, k).pos = (uint32_t)rec->pos; - kh_val(args->i2m, k).ref = ref; - } -done: - bcf_sr_destroy(sr); -} - -static bcf1_t *dbsnp_check(args_t *args, bcf1_t *rec, int ir, int ia, int ib) -{ - int k, ref,pos; - uint32_t id = parse_rsid(rec->d.id); - if ( !id ) goto no_info; - - k = kh_get(i2m, args->i2m, id); - if ( k==kh_end(args->i2m) ) goto no_info; - - pos = (int)kh_val(args->i2m, k).pos; - if ( pos != rec->pos ) - { - rec->pos = pos; - ir = fetch_ref(args, rec); - args->npos_err++; - } - - ref = kh_val(args->i2m, k).ref; - if ( ref!=ir ) - error("Reference base mismatch at %s:%d .. %c vs %c\n",bcf_seqname(args->hdr,rec),rec->pos+1,int2nt(ref),int2nt(ir)); - - if ( ia==ref ) return rec; - if ( ib==ref ) { args->nswap++; return set_ref_alt(args,rec,int2nt(ib),int2nt(ia),1); } - -no_info: - args->nunresolved++; - return args->discard ? NULL : rec; -} - -bcf1_t *process(bcf1_t *rec) -{ - if ( rec->rid == args.skip_rid ) return NULL; - - bcf1_t *ret = args.mode==MODE_STATS ? NULL : rec; - args.nsite++; - - // Skip non-SNPs - if ( bcf_get_variant_types(rec)!=VCF_SNP ) - { - args.nonSNP++; - return args.discard ? NULL : ret; - } - - // Get the reference allele - int ir = fetch_ref(&args, rec); - if ( ir==-2 ) return NULL; - if ( ir==-1 ) - { - args.nonACGT++; - return args.discard ? NULL : ret; // not A,C,G,T - } - - if ( rec->n_allele!=2 ) - { - // not a biallelic site - args.nonbiallelic++; - return args.discard ? NULL : ret; - } - - int ia = nt2int(rec->d.allele[0][0]); - if ( ia<0 ) - { - // not A,C,G,T - args.nonACGT++; - return args.discard ? NULL : ret; - } - - int ib = nt2int(rec->d.allele[1][0]); - if ( ib<0 ) - { - // not A,C,G,T - args.nonACGT++; - return args.discard ? NULL : ret; - } - - if ( ia==ib ) - { - // should not happen in well-formed VCF - args.nonSNP++; - return args.discard ? NULL : ret; - } - args.count[ia][ib]++; - - if ( ir==ia ) args.nok++; - - if ( args.mode==MODE_USE_ID ) - { - if ( !args.i2m || args.rid!=rec->rid ) - { - args.pos = 0; - args.rid = rec->rid; - dbsnp_init(&args,bcf_seqname(args.hdr,rec)); - } - ret = dbsnp_check(&args, rec, ir,ia,ib); - if ( !args.unsorted && args.pos > rec->pos ) - { - fprintf(bcftools_stderr, - "Warning: corrected position(s) results in unsorted VCF, for example %s:%d comes after %s:%d\n" - " The standard unix `sort` or `vcf-sort` from vcftools can be used to fix the order.\n", - bcf_seqname(args.hdr,rec),rec->pos+1,bcf_seqname(args.hdr,rec),args.pos); - args.unsorted = 1; - } - args.pos = rec->pos; - return ret; - } - else if ( args.mode==MODE_FLIP2FWD ) - { - int pair = 1 << ia | 1 << ib; - if ( pair==0x9 || pair==0x6 ) // skip ambiguous pairs: A/T or C/G - { - args.nunresolved++; - return args.discard ? NULL : ret; - } - if ( ir==ia ) return ret; - if ( ir==ib ) { args.nswap++; return set_ref_alt(&args,rec,int2nt(ib),int2nt(ia),1); } - if ( ir==revint(ia) ) { args.nflip++; return set_ref_alt(&args,rec,int2nt(revint(ia)),int2nt(revint(ib)),0); } - if ( ir==revint(ib) ) { args.nflip_swap++; return set_ref_alt(&args,rec,int2nt(revint(ib)),int2nt(revint(ia)),1); } - error("FIXME: this should not happen %s:%d\n", bcf_seqname(args.hdr,rec),rec->pos+1); - } - else if ( args.mode==MODE_TOP2FWD ) - { - int pair = 1 << ia | 1 << ib; - if ( pair != 0x9 && pair != 0x6 ) // unambiguous pair: A/C or A/G - { - if ( ir==ia ) return ret; - - int ia_rev = revint(ia); - if ( ir==ia_rev ) // vcfref is A, faref is T, flip - { - args.nflip++; - return set_ref_alt(&args,rec,int2nt(ia_rev),int2nt(revint(ib)),0); - } - if ( ir==ib ) // vcfalt is faref, swap - { - args.nswap++; - return set_ref_alt(&args,rec,int2nt(ib),int2nt(ia),1); - } - assert( ib==revint(ir) ); - - args.nflip_swap++; - return set_ref_alt(&args,rec,int2nt(revint(ib)),int2nt(revint(ia)),1); - } - else // ambiguous pair, sequence walking must be performed - { - int len, win = rec->pos > 100 ? 100 : rec->pos, beg = rec->pos - win, end = rec->pos + win; - char *ref = faidx_fetch_seq(args.fai, (char*)bcf_seqname(args.hdr,rec), beg,end, &len); - if ( !ref ) error("faidx_fetch_seq failed at %s:%d\n", bcf_seqname(args.hdr,rec),rec->pos+1); - if ( end - beg + 1 != len ) error("FIXME: check win=%d,len=%d at %s:%d (%d %d)\n", win,len, bcf_seqname(args.hdr,rec),rec->pos+1, end,beg); - - int i, mid = rec->pos - beg, strand = 0; - for (i=1; i<=win; i++) - { - int ra = nt2int(ref[mid-i]); - int rb = nt2int(ref[mid+i]); - if ( ra<0 || rb<0 || ra==rb ) continue; // skip N's and non-infomative pairs: A/A, C/C, G/G, T/T - pair = 1 << ra | 1 << rb; - if ( pair==0x9 || pair==0x6 ) continue; // skip ambiguous pairs: A/T or C/G - strand = 1 << ra & 0x9 ? 1 : -1; - break; - } - free(ref); - - if ( strand==1 ) - { - if ( ir==ia ) return ret; - if ( ir==ib ) - { - args.nswap++; - return set_ref_alt(&args,rec,int2nt(ib),int2nt(ia),1); - } - } - else if ( strand==-1 ) - { - int ia_rev = revint(ia); - int ib_rev = revint(ib); - if ( ir==ia_rev ) - { - args.nflip++; - return set_ref_alt(&args,rec,int2nt(ia_rev),int2nt(ib_rev),0); - } - if ( ir==ib_rev ) - { - args.nflip_swap++; - return set_ref_alt(&args,rec,int2nt(ib_rev),int2nt(ia_rev),1); - } - } - - args.nunresolved++; - return args.discard ? NULL : ret; - } - } - return ret; -} - -int top_mask[4][4] = -{ - {0,1,1,1}, - {0,0,1,0}, - {0,0,0,0}, - {0,0,0,0}, -}; -int bot_mask[4][4] = -{ - {0,0,0,0}, - {0,0,0,0}, - {0,1,0,0}, - {1,1,1,0}, -}; - -void destroy(void) -{ - uint32_t i,j,tot = 0; - uint32_t top_err = 0, bot_err = 0; - for (i=0; i<4; i++) - { - for (j=0; j<4; j++) - { - tot += args.count[i][j]; - if ( !top_mask[i][j] && args.count[i][j] ) top_err++; - if ( !bot_mask[i][j] && args.count[i][j] ) bot_err++; - } - } - uint32_t nskip = args.nonACGT+args.nonSNP+args.nonbiallelic; - uint32_t ncmp = args.nsite - nskip; - - fprintf(bcftools_stderr,"# SC, guessed strand convention\n"); - fprintf(bcftools_stderr,"SC\tTOP-compatible\t%d\n",top_err?0:1); - fprintf(bcftools_stderr,"SC\tBOT-compatible\t%d\n",bot_err?0:1); - - fprintf(bcftools_stderr,"# ST, substitution types\n"); - for (i=0; i<4; i++) - { - for (j=0; j<4; j++) - { - if ( i==j ) continue; - fprintf(bcftools_stderr,"ST\t%c>%c\t%u\t%.1f%%\n", int2nt(i),int2nt(j),args.count[i][j], args.count[i][j]*100./tot); - } - } - fprintf(bcftools_stderr,"# NS, Number of sites:\n"); - fprintf(bcftools_stderr,"NS\ttotal \t%u\n", args.nsite); - fprintf(bcftools_stderr,"NS\tref match \t%u\t%.1f%%\n", args.nok,100.*args.nok/ncmp); - fprintf(bcftools_stderr,"NS\tref mismatch \t%u\t%.1f%%\n", ncmp-args.nok,100.*(ncmp-args.nok)/ncmp); - if ( args.mode!=MODE_STATS ) - { - fprintf(bcftools_stderr,"NS\tflipped \t%u\t%.1f%%\n", args.nflip,100.*args.nflip/(args.nsite-nskip)); - fprintf(bcftools_stderr,"NS\tswapped \t%u\t%.1f%%\n", args.nswap,100.*args.nswap/(args.nsite-nskip)); - fprintf(bcftools_stderr,"NS\tflip+swap \t%u\t%.1f%%\n", args.nflip_swap,100.*args.nflip_swap/(args.nsite-nskip)); - fprintf(bcftools_stderr,"NS\tunresolved \t%u\t%.1f%%\n", args.nunresolved,100.*args.nunresolved/(args.nsite-nskip)); - fprintf(bcftools_stderr,"NS\tfixed pos \t%u\t%.1f%%\n", args.npos_err,100.*args.npos_err/(args.nsite-nskip)); - } - fprintf(bcftools_stderr,"NS\tskipped \t%u\n", nskip); - fprintf(bcftools_stderr,"NS\tnon-ACGT \t%u\n", args.nonACGT); - fprintf(bcftools_stderr,"NS\tnon-SNP \t%u\n", args.nonSNP); - fprintf(bcftools_stderr,"NS\tnon-biallelic\t%u\n", args.nonbiallelic); - - free(args.gts); - if ( args.fai ) fai_destroy(args.fai); - if ( args.i2m ) kh_destroy(i2m, args.i2m); -} diff --git a/bcftools/plugins/frameshifts.c b/bcftools/plugins/frameshifts.c deleted file mode 100644 index 5c0e924..0000000 --- a/bcftools/plugins/frameshifts.c +++ /dev/null @@ -1,157 +0,0 @@ -/* plugins/frameshifts.c -- annotates frameshift indels. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include - -bcf_hdr_t *in_hdr, *out_hdr; -bcf_sr_regions_t *exons; -int32_t *frm = NULL, nfrm = 0; - -const char *about(void) -{ - return - "Annotate frameshift indels.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Annotate frameshift indels\n" - "Usage: bcftools +frameshifts [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -e, --exons list of exons, see \"--targets-file\" man page entry for details\n" - "\n" - "Example:\n" - " bcftools +frameshifts in.vcf -- -e exons.bed.gz\n" - "\n"; -} - - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - int c; - char *fname = NULL; - - static struct option loptions[] = - { - {"exons",1,0,'e'}, - {0,0,0,0} - }; - while ((c = getopt_long(argc, argv, "e:?h",loptions,NULL)) >= 0) - { - switch (c) - { - case 'e': fname = optarg; break; - case 'h': - case '?': - default: fprintf(stderr,"%s", usage()); exit(1); break; - } - } - if ( !fname ) - { - fprintf(stderr,"Missing the -e option.\n"); - return -1; - } - - in_hdr = in; - out_hdr = out; - - int ret = bcf_hdr_append(out_hdr,"##INFO="); - if ( ret!=0 ) - { - fprintf(stderr,"Error updating the header\n"); - return -1; - } - - exons = bcf_sr_regions_init(fname,1,0,1,2); - if ( !exons ) - { - fprintf(stderr,"Error occurred while reading (was the file compressed with bgzip?): %s\n", fname); - return -1; - } - - return 0; -} - -bcf1_t *process(bcf1_t *rec) -{ - if ( rec->n_allele<2 ) return rec; // not a variant - - int type = bcf_get_variant_types(rec); - if ( !(type&VCF_INDEL) ) return rec; // not an indel - - int i, len = 0; - for (i=1; in_allele; i++) - if ( len > rec->d.var[i].n ) len = rec->d.var[i].n; - - int pos_to = len!=0 ? rec->pos : rec->pos - len; // len is negative - if ( bcf_sr_regions_overlap(exons, bcf_seqname(in_hdr,rec),rec->pos,pos_to) ) return rec; // no overlap - - hts_expand(int32_t,rec->n_allele-1,nfrm,frm); - for (i=1; in_allele; i++) - { - if ( rec->d.var[i].type!=VCF_INDEL ) { frm[i-1] = -1; continue; } - - int len = rec->d.var[i].n, tlen = 0; - if ( len>0 ) - { - // insertion - if ( exons->start <= rec->pos && exons->end > rec->pos ) tlen = abs(len); - } - else if ( exons->start <= rec->pos + abs(len) ) - { - // deletion - tlen = abs(len); - if ( rec->pos < exons->start ) // trim the beginning - tlen -= exons->start - rec->pos + 1; - if ( exons->end < rec->pos + abs(len) ) // trim the end - tlen -= rec->pos + abs(len) - exons->end; - } - if ( tlen ) // there are some deleted/inserted bases in the exon - { - if ( tlen%3 ) frm[i-1] = 1; // out-of-frame - else frm[i-1] = 0; // in-frame - } - else frm[i-1] = -1; // not applicable (is outside) - } - - if ( bcf_update_info_int32(out_hdr,rec,"OOF",frm,rec->n_allele-1)<0 ) { fprintf(stderr, "Could not annotate OOF :-/\n"); exit(1); } - return rec; -} - - -void destroy(void) -{ - bcf_sr_regions_destroy(exons); -} - - diff --git a/bcftools/plugins/frameshifts.c.pysam.c b/bcftools/plugins/frameshifts.c.pysam.c deleted file mode 100644 index 0587937..0000000 --- a/bcftools/plugins/frameshifts.c.pysam.c +++ /dev/null @@ -1,159 +0,0 @@ -#include "bcftools.pysam.h" - -/* plugins/frameshifts.c -- annotates frameshift indels. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include - -bcf_hdr_t *in_hdr, *out_hdr; -bcf_sr_regions_t *exons; -int32_t *frm = NULL, nfrm = 0; - -const char *about(void) -{ - return - "Annotate frameshift indels.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Annotate frameshift indels\n" - "Usage: bcftools +frameshifts [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -e, --exons list of exons, see \"--targets-file\" man page entry for details\n" - "\n" - "Example:\n" - " bcftools +frameshifts in.vcf -- -e exons.bed.gz\n" - "\n"; -} - - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - int c; - char *fname = NULL; - - static struct option loptions[] = - { - {"exons",1,0,'e'}, - {0,0,0,0} - }; - while ((c = getopt_long(argc, argv, "e:?h",loptions,NULL)) >= 0) - { - switch (c) - { - case 'e': fname = optarg; break; - case 'h': - case '?': - default: fprintf(bcftools_stderr,"%s", usage()); exit(1); break; - } - } - if ( !fname ) - { - fprintf(bcftools_stderr,"Missing the -e option.\n"); - return -1; - } - - in_hdr = in; - out_hdr = out; - - int ret = bcf_hdr_append(out_hdr,"##INFO="); - if ( ret!=0 ) - { - fprintf(bcftools_stderr,"Error updating the header\n"); - return -1; - } - - exons = bcf_sr_regions_init(fname,1,0,1,2); - if ( !exons ) - { - fprintf(bcftools_stderr,"Error occurred while reading (was the file compressed with bgzip?): %s\n", fname); - return -1; - } - - return 0; -} - -bcf1_t *process(bcf1_t *rec) -{ - if ( rec->n_allele<2 ) return rec; // not a variant - - int type = bcf_get_variant_types(rec); - if ( !(type&VCF_INDEL) ) return rec; // not an indel - - int i, len = 0; - for (i=1; in_allele; i++) - if ( len > rec->d.var[i].n ) len = rec->d.var[i].n; - - int pos_to = len!=0 ? rec->pos : rec->pos - len; // len is negative - if ( bcf_sr_regions_overlap(exons, bcf_seqname(in_hdr,rec),rec->pos,pos_to) ) return rec; // no overlap - - hts_expand(int32_t,rec->n_allele-1,nfrm,frm); - for (i=1; in_allele; i++) - { - if ( rec->d.var[i].type!=VCF_INDEL ) { frm[i-1] = -1; continue; } - - int len = rec->d.var[i].n, tlen = 0; - if ( len>0 ) - { - // insertion - if ( exons->start <= rec->pos && exons->end > rec->pos ) tlen = abs(len); - } - else if ( exons->start <= rec->pos + abs(len) ) - { - // deletion - tlen = abs(len); - if ( rec->pos < exons->start ) // trim the beginning - tlen -= exons->start - rec->pos + 1; - if ( exons->end < rec->pos + abs(len) ) // trim the end - tlen -= rec->pos + abs(len) - exons->end; - } - if ( tlen ) // there are some deleted/inserted bases in the exon - { - if ( tlen%3 ) frm[i-1] = 1; // out-of-frame - else frm[i-1] = 0; // in-frame - } - else frm[i-1] = -1; // not applicable (is outside) - } - - if ( bcf_update_info_int32(out_hdr,rec,"OOF",frm,rec->n_allele-1)<0 ) { fprintf(bcftools_stderr, "Could not annotate OOF :-/\n"); exit(1); } - return rec; -} - - -void destroy(void) -{ - bcf_sr_regions_destroy(exons); -} - - diff --git a/bcftools/plugins/guess-ploidy.c b/bcftools/plugins/guess-ploidy.c deleted file mode 100644 index eee060f..0000000 --- a/bcftools/plugins/guess-ploidy.c +++ /dev/null @@ -1,568 +0,0 @@ -/* - Copyright (C) 2016 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "filter.h" - -// Logic of the filters: include or exclude sites which match the filters? -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -#define GUESS_GT 1 -#define GUESS_PL 2 -#define GUESS_GL 4 - -typedef struct -{ - uint64_t ncount; - double phap, pdip; -} -count_t; - -typedef struct -{ - char *chr; - uint32_t start, end; - count_t *counts; // per-sample counts: counts[isample] -} -stats_t; - -typedef struct -{ - int argc; - char **argv, *af_tag; - double af_dflt; - stats_t stats; - filter_t *filter; - char *filter_str; - int filter_logic; // include or exclude sites which match the filters? One of FLT_INCLUDE/FLT_EXCLUDE - const uint8_t *smpl_pass; - int nsample, verbose, tag, include_indels; - int *counts, ncounts; // number of observed GTs with given ploidy, used when -g is not given - double *tmpf, *pl2p, gt_err_prob; - float *af; - int maf; - int32_t *arr, narr, nfarr; - float *farr; - bcf_srs_t *sr; - bcf_hdr_t *hdr; -} -args_t; - -const char *about(void) -{ - return "Determine sample sex by checking genotype likelihoods in haploid regions.\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Determine sample sex by checking genotype likelihoods (GL,PL) or genotypes (GT)\n" - " in the non-PAR region of chrX. The HWE is assumed, so given the alternate allele\n" - " frequency fA and the genotype likelihoods pRR,pRA,pAA, the probabilities are\n" - " calculated as\n" - " P(dip) = pRR*(1-fA)^2 + pAA*fA^2 + 2*pRA*(1-fA)*fA\n" - " P(hap) = pRR*(1-fA) + pAA*fA\n" - " When genotype likelihoods are not available, the -e option is used to account\n" - " for genotyping errors with -t GT. The alternate allele frequency fA is estimated\n" - " directly from the data (the default) or can be provided by an INFO tag.\n" - " The results can be visualized using the accompanied guess-ploidy.py script.\n" - " Note that this plugin is intended to replace the former vcf2sex plugin.\n" - "\n" - "Usage: bcftools +guess-ploidy [Plugin Options]\n" - "Plugin options:\n" - " --AF-dflt the default alternate allele frequency [0.5]\n" - " --AF-tag use TAG for allele frequency\n" - " -e, --error-rate probability of GT being wrong (with -t GT) [1e-3]\n" - " --exclude exclude sites for which the expression is true\n" - " -i, --include-indels do not skip indel sites\n" - " --include include only sites for which the expression is true\n" - " -g, --genome shortcut to select nonPAR region for common genomes b37|hg19|b38|hg38\n" - " -r, --regions restrict to comma-separated list of regions\n" - " -R, --regions-file restrict to regions listed in a file\n" - " -t, --tag genotype or genotype likelihoods: GT, PL, GL [PL]\n" - " -v, --verbose verbose output (specify twice to increase verbosity)\n" - "\n" - "Region shortcuts:\n" - " b37 .. -r X:2699521-154931043 # GRCh37 no-chr prefix\n" - " b38 .. -r X:2781480-155701381 # GRCh38 no-chr prefix\n" - " hg19 .. -r chrX:2699521-154931043 # GRCh37 chr prefix\n" - " hg38 .. -r chrX:2781480-155701381 # GRCh38 chr prefix\n" - "\n" - "Examples:\n" - " bcftools +guess-ploidy -g b37 in.vcf.gz\n" - " bcftools +guess-ploidy in.vcf.gz -t GL -r chrX:2699521-154931043\n" - " bcftools view file.vcf.gz -r chrX:2699521-154931043 | bcftools +guess-ploidy\n" - " bcftools +guess-ploidy in.bcf -v > ploidy.txt && guess-ploidy.py ploidy.txt img\n" - "\n"; -} - -static inline int smpl_pass(args_t *args, int ismpl) -{ - if ( !args->smpl_pass ) return 1; - int pass = args->smpl_pass[ismpl]; - if ( args->filter_logic & FLT_EXCLUDE ) pass = pass ? 0 : 1; - if ( pass ) return 1; - return 0; -} - -void process_region_guess(args_t *args) -{ - while ( bcf_sr_next_line(args->sr) ) - { - bcf1_t *rec = bcf_sr_get_line(args->sr,0); - if ( rec->n_allele==1 ) continue; - if ( !args->include_indels && !(bcf_get_variant_types(rec)&VCF_SNP) ) continue; - - if ( args->filter ) - { - int pass = filter_test(args->filter, rec, &args->smpl_pass); - if ( args->filter_logic & FLT_EXCLUDE ) pass = pass ? 0 : 1; - if ( !args->smpl_pass && !pass ) continue; // site-level filtering, not per-sample filtering - } - - double freq[2] = {0,0}, sum; - int ismpl,i; - if ( args->tag & GUESS_GT ) // use GTs to guess the ploidy, considering only one ALT - { - int ngt = bcf_get_genotypes(args->hdr,rec,&args->arr,&args->narr); - if ( ngt<=0 ) continue; - ngt /= args->nsample; - for (ismpl=0; ismplnsample; ismpl++) - { - if ( !smpl_pass(args,ismpl) ) continue; - int32_t *ptr = args->arr + ismpl*ngt; - double *tmp = args->tmpf + ismpl*3; - - if ( ptr[0]==bcf_gt_missing ) - { - tmp[0] = -1; - continue; - } - if ( ptr[1]==bcf_int32_vector_end ) - { - if ( bcf_gt_allele(ptr[0])==0 ) // haploid R - { - tmp[0] = 1 - 2*args->gt_err_prob; - tmp[1] = tmp[2] = args->gt_err_prob; - } - else // haploid A - { - tmp[0] = tmp[1] = args->gt_err_prob; - tmp[2] = 1 - 2*args->gt_err_prob; - } - continue; - } - if ( bcf_gt_allele(ptr[0])==0 && bcf_gt_allele(ptr[1])==0 ) // RR - { - tmp[0] = 1 - 2*args->gt_err_prob; - tmp[1] = tmp[2] = args->gt_err_prob; - } - else if ( bcf_gt_allele(ptr[0])==bcf_gt_allele(ptr[1]) ) // AA - { - tmp[0] = tmp[1] = args->gt_err_prob; - tmp[2] = 1 - 2*args->gt_err_prob; - } - else // RA or hetAA, treating as RA - { - tmp[1] = 1 - 2*args->gt_err_prob; - tmp[0] = tmp[2] = args->gt_err_prob; - } - freq[0] += 2*tmp[0]+tmp[1]; - freq[1] += tmp[1]+2*tmp[2]; - } - } - else if ( args->tag & GUESS_PL ) // use PL guess the ploidy, restrict to first ALT allele - { - int npl = bcf_get_format_int32(args->hdr,rec,"PL",&args->arr,&args->narr); - if ( npl<=0 ) continue; - npl /= args->nsample; - int ndip_gt = rec->n_allele*(rec->n_allele+1)/2; - if ( npl==ndip_gt ) // diploid - { - for (ismpl=0; ismplnsample; ismpl++) - { - if ( !smpl_pass(args,ismpl) ) continue; - int32_t *ptr = args->arr + ismpl*npl; - double *tmp = args->tmpf + ismpl*3; - - // restrict to first ALT - if ( ptr[0]==bcf_int32_missing || ptr[1]==bcf_int32_missing || ptr[2]==bcf_int32_missing ) - { - tmp[0] = -1; - continue; - } - if ( ptr[0]==ptr[1] && ptr[0]==ptr[2] ) // non-informative - { - tmp[0] = -1; - continue; - } - if ( ptr[2]==bcf_int32_vector_end ) - { - tmp[0] = (ptr[0]<0 || ptr[0]>=256) ? args->pl2p[255] : args->pl2p[ptr[0]]; - tmp[1] = args->pl2p[255]; - tmp[2] = (ptr[1]<0 || ptr[1]>=256) ? args->pl2p[255] : args->pl2p[ptr[1]]; - } - else - for (i=0; i<3; i++) - tmp[i] = (ptr[i]<0 || ptr[i]>=256) ? args->pl2p[255] : args->pl2p[ptr[i]]; - - sum = 0; - for (i=0; i<3; i++) sum += tmp[i]; - for (i=0; i<3; i++) tmp[i] /= sum; - - if ( ptr[2]==bcf_int32_vector_end ) - { - freq[0] += tmp[0]; - freq[1] += tmp[2]; - } - else - { - freq[0] += 2*tmp[0]+tmp[1]; - freq[1] += tmp[1]+2*tmp[2]; - } - } - } - else if ( npl==rec->n_allele ) // all samples haploid - { - for (ismpl=0; ismplnsample; ismpl++) - { - if ( !smpl_pass(args,ismpl) ) continue; - int32_t *ptr = args->arr + ismpl*npl; - double *tmp = args->tmpf + ismpl*3; - - // restrict to first ALT - if ( ptr[0]==bcf_int32_missing || ptr[1]==bcf_int32_missing ) - { - tmp[0] = -1; - continue; - } - tmp[0] = (ptr[0]<0 || ptr[0]>=256) ? args->pl2p[255] : args->pl2p[ptr[0]]; - tmp[1] = args->pl2p[255]; - tmp[2] = (ptr[1]<0 || ptr[1]>=256) ? args->pl2p[255] : args->pl2p[ptr[1]]; - - sum = 0; - for (i=0; i<3; i++) sum += tmp[i]; - for (i=0; i<3; i++) tmp[i] /= sum; - - freq[0] += tmp[0]; - freq[1] += tmp[2]; - } - } - else - continue; // neither diploid nor haploid - } - else // use GL - { - int ngl = bcf_get_format_float(args->hdr,rec,"GL",&args->farr,&args->nfarr); - if ( ngl<=0 ) continue; - ngl /= args->nsample; - int ndip_gt = rec->n_allele*(rec->n_allele+1)/2; - if ( ngl==ndip_gt ) // diploid - { - for (ismpl=0; ismplnsample; ismpl++) - { - if ( !smpl_pass(args,ismpl) ) continue; - float *ptr = args->farr + ismpl*ngl; - double *tmp = args->tmpf + ismpl*3; - - // restrict to first ALT - if ( bcf_float_is_missing(ptr[0]) || bcf_float_is_missing(ptr[1]) || bcf_float_is_missing(ptr[2]) ) - { - tmp[0] = -1; - continue; - } - if ( ptr[0]==ptr[1] && ptr[0]==ptr[2] ) // non-informative - { - tmp[0] = -1; - continue; - } - if ( bcf_float_is_vector_end(ptr[2]) ) - { - tmp[0] = pow(10.,ptr[0]); - tmp[1] = 1e-26; // arbitrary small value for a het - tmp[2] = pow(10.,ptr[1]); - } - else - for (i=0; i<3; i++) - tmp[i] = pow(10.,ptr[i]); - - sum = 0; - for (i=0; i<3; i++) sum += tmp[i]; - for (i=0; i<3; i++) tmp[i] /= sum; - - if ( bcf_float_is_vector_end(ptr[2]) ) - { - freq[0] += tmp[0]; - freq[1] += tmp[2]; - } - else - { - freq[0] += 2*tmp[0]+tmp[1]; - freq[1] += tmp[1]+2*tmp[2]; - } - } - } - else if ( ngl==rec->n_allele ) // all samples haploid - { - for (ismpl=0; ismplnsample; ismpl++) - { - if ( !smpl_pass(args,ismpl) ) continue; - float *ptr = args->farr + ismpl*ngl; - double *tmp = args->tmpf + ismpl*3; - - // restrict to first ALT - if ( bcf_float_is_missing(ptr[0]) || bcf_float_is_missing(ptr[1]) ) - { - tmp[0] = -1; - continue; - } - tmp[0] = pow(10.,ptr[0]); - tmp[1] = 1e-26; - tmp[2] = pow(10.,ptr[1]); - - sum = 0; - for (i=0; i<3; i++) sum += tmp[i]; - for (i=0; i<3; i++) tmp[i] /= sum; - - freq[0] += tmp[0]; - freq[1] += tmp[2]; - } - } - else - continue; // neither diploid nor haploid - } - if ( args->af_tag ) - { - int ret = bcf_get_info_float(args->hdr,rec,args->af_tag,&args->af, &args->maf); - if ( ret>0 ) { freq[0] = 1 - args->af[0]; freq[1] = args->af[0]; } - } - - if ( !freq[0] && !freq[1] ) { freq[0] = 1 - args->af_dflt; freq[1] = args->af_dflt; } - sum = freq[0] + freq[1]; - freq[0] /= sum; - freq[1] /= sum; - for (ismpl=0; ismplnsample; ismpl++) - { - if ( !smpl_pass(args,ismpl) ) continue; - count_t *counts = &args->stats.counts[ismpl]; - double *tmp = args->tmpf + ismpl*3; - if ( tmp[0] < 0 ) continue; - double phap = freq[0]*tmp[0] + freq[1]*tmp[2]; - double pdip = freq[0]*freq[0]*tmp[0] + 2*freq[0]*freq[1]*tmp[1] + freq[1]*freq[1]*tmp[2]; - counts->phap += log(phap); - counts->pdip += log(pdip); - counts->ncount++; - if ( args->verbose>1 ) - printf("DBG\t%s\t%d\t%s\t%e\t%e\t%e\t%e\t%e\t%e\n", bcf_seqname(args->hdr,rec),rec->pos+1,bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,ismpl), - freq[1],tmp[0],tmp[1],tmp[2],phap,pdip); - } - } -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->tag = GUESS_PL; - args->argc = argc; args->argv = argv; - args->gt_err_prob = 1e-3; - args->af_dflt = 0.5; - char *region = NULL; - int region_is_file = 0; - static struct option loptions[] = - { - {"AF-tag",required_argument,NULL,0}, - {"AF-dflt",required_argument,NULL,1}, - {"exclude",required_argument,NULL,2}, - {"include",required_argument,NULL,3}, - {"verbose",no_argument,NULL,'v'}, - {"include-indels",no_argument,NULL,'i'}, - {"error-rate",required_argument,NULL,'e'}, - {"tag",required_argument,NULL,'t'}, - {"genome",required_argument,NULL,'g'}, - {"regions",required_argument,NULL,'r'}, - {"regions-file",required_argument,NULL,'R'}, - {"background",required_argument,NULL,'b'}, - {NULL,0,NULL,0} - }; - int c; - char *tmp; - while ((c = getopt_long(argc, argv, "vr:R:t:e:ig:",loptions,NULL)) >= 0) - { - switch (c) - { - case 0: args->af_tag = optarg; break; - case 1: - args->af_dflt = strtod(optarg,&tmp); - if ( *tmp ) error("Could not parse: --AF-dflt %s\n", optarg); - break; - case 2: args->filter_str = optarg; args->filter_logic |= FLT_EXCLUDE; break; - case 3: args->filter_str = optarg; args->filter_logic |= FLT_INCLUDE; break; - case 'i': args->include_indels = 1; break; - case 'e': - args->gt_err_prob = strtod(optarg,&tmp); - if ( *tmp ) error("Could not parse: -e %s\n", optarg); - if ( args->gt_err_prob<0 || args->gt_err_prob>1 ) error("Expected value from the interval [0,1]: -e %s\n", optarg); - break; - case 'g': - if ( !strcasecmp(optarg,"b37") ) region = "X:2699521-154931043"; - else if ( !strcasecmp(optarg,"b38") ) region = "X:2781480-155701381"; - else if ( !strcasecmp(optarg,"hg19") ) region = "chrX:2699521-154931043"; - else if ( !strcasecmp(optarg,"hg38") ) region = "chrX:2781480-155701381"; - else error("The argument not recognised, expected --genome b37, b38, hg19 or hg38: %s\n", optarg); - break; - case 'R': region_is_file = 1; - case 'r': region = optarg; break; - case 'v': args->verbose++; break; - case 't': - if ( !strcasecmp(optarg,"GT") ) args->tag = GUESS_GT; - else if ( !strcasecmp(optarg,"PL") ) args->tag = GUESS_PL; - else if ( !strcasecmp(optarg,"GL") ) args->tag = GUESS_GL; - else error("The argument not recognised, expected --tag GT, PL or GL: %s\n", optarg); - break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - if ( args->filter_logic == (FLT_EXCLUDE|FLT_INCLUDE) ) error("Only one of --include or --exclude can be given.\n"); - - char *fname = NULL; - if ( optind==argc ) - { - if ( !isatty(fileno((FILE *)stdin)) ) fname = "-"; // reading from stdin - else { error("%s",usage_text()); } - } - else if ( optind+1!=argc ) error("%s",usage_text()); - else fname = argv[optind]; - - args->sr = bcf_sr_init(); - if ( strcmp("-",fname) ) - { - if ( region ) - { - args->sr->require_index = 1; - if ( bcf_sr_set_regions(args->sr, region, region_is_file)<0 ) - error("Failed to read the regions: %s\n",region); - } - } - else - { - if ( region ) - { - if ( bcf_sr_set_targets(args->sr, region, region_is_file, 0)<0 ) - error("Failed to read the targets: %s\n",region); - } - } - if ( !bcf_sr_add_reader(args->sr,fname) ) error("Error: %s\n", bcf_sr_strerror(args->sr->errnum)); - args->hdr = args->sr->readers[0].header; - args->nsample = bcf_hdr_nsamples(args->hdr); - args->stats.counts = (count_t*) calloc(args->nsample,sizeof(count_t)); - - if ( args->filter_str ) - args->filter = filter_init(args->hdr, args->filter_str); - - if ( args->af_tag && !bcf_hdr_idinfo_exists(args->hdr,BCF_HL_INFO,bcf_hdr_id2int(args->hdr,BCF_DT_ID,args->af_tag)) ) - error("No such INFO tag: %s\n", args->af_tag); - - if ( args->tag&GUESS_PL && bcf_hdr_id2int(args->hdr, BCF_DT_ID, "PL")<0 ) - { - fprintf(stderr, "Warning: PL tag not found in header, switching to GL\n"); - args->tag = GUESS_GL; - } - - if ( args->tag&GUESS_GL && bcf_hdr_id2int(args->hdr, BCF_DT_ID, "GL")<0 ) - { - fprintf(stderr, "Warning: GL tag not found in header, switching to GT\n"); - args->tag = GUESS_GT; - } - - if ( args->tag&GUESS_GT && bcf_hdr_id2int(args->hdr, BCF_DT_ID, "GT")<0 ) - error("Error: GT tag not found in header\n"); - - int i; - if ( args->tag&GUESS_PL ) - { - args->pl2p = (double*) calloc(256,sizeof(double)); - for (i=0; i<256; i++) args->pl2p[i] = pow(10., -i/10.); - } - if ( args->tag&GUESS_PL || args->tag&GUESS_GL || args->tag&GUESS_GT ) - args->tmpf = (double*) malloc(sizeof(*args->tmpf)*3*args->nsample); - - if ( args->verbose ) - { - printf("# This file was produced by: bcftools +guess-ploidy(%s+htslib-%s)\n", bcftools_version(),hts_version()); - printf("# The command line was:\tbcftools +%s", args->argv[0]); - for (i=1; iargc; i++) - printf(" %s",args->argv[i]); - printf("\n"); - printf("# [1]SEX\t[2]Sample\t[3]Predicted sex\t[4]log P(Haploid)/nSites\t[5]log P(Diploid)/nSites\t[6]nSites\t[7]Score: F < 0 < M ($4-$5)\n"); - if ( args->verbose>1 ) - printf("# [1]DBG\t[2]Chr\t[3]Pos\t[4]Sample\t[5]AF\t[6]pRR\t[7]pRA\t[8]pAA\t[9]P(Haploid)\t[10]P(Diploid)\n"); - } - - process_region_guess(args); - - for (i=0; insample; i++) - { - double phap = args->stats.counts[i].ncount ? args->stats.counts[i].phap / args->stats.counts[i].ncount : 0.5; - double pdip = args->stats.counts[i].ncount ? args->stats.counts[i].pdip / args->stats.counts[i].ncount : 0.5; - char predicted_sex = 'U'; - if (phap>pdip) predicted_sex = 'M'; - else if (phapverbose ) - { - printf("SEX\t%s\t%c\t%f\t%f\t%"PRId64"\t%f\n", args->hdr->samples[i],predicted_sex, - phap,pdip,args->stats.counts[i].ncount,phap-pdip); - } - else - printf("%s\t%c\n", args->hdr->samples[i],predicted_sex); - } - - if ( args->filter ) - filter_destroy(args->filter); - - bcf_sr_destroy(args->sr); - free(args->pl2p); - free(args->tmpf); - free(args->counts); - free(args->stats.counts); - free(args->arr); - free(args->farr); - free(args->af); - free(args); - return 0; -} diff --git a/bcftools/plugins/guess-ploidy.c.pysam.c b/bcftools/plugins/guess-ploidy.c.pysam.c deleted file mode 100644 index a08a11a..0000000 --- a/bcftools/plugins/guess-ploidy.c.pysam.c +++ /dev/null @@ -1,570 +0,0 @@ -#include "bcftools.pysam.h" - -/* - Copyright (C) 2016 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "filter.h" - -// Logic of the filters: include or exclude sites which match the filters? -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -#define GUESS_GT 1 -#define GUESS_PL 2 -#define GUESS_GL 4 - -typedef struct -{ - uint64_t ncount; - double phap, pdip; -} -count_t; - -typedef struct -{ - char *chr; - uint32_t start, end; - count_t *counts; // per-sample counts: counts[isample] -} -stats_t; - -typedef struct -{ - int argc; - char **argv, *af_tag; - double af_dflt; - stats_t stats; - filter_t *filter; - char *filter_str; - int filter_logic; // include or exclude sites which match the filters? One of FLT_INCLUDE/FLT_EXCLUDE - const uint8_t *smpl_pass; - int nsample, verbose, tag, include_indels; - int *counts, ncounts; // number of observed GTs with given ploidy, used when -g is not given - double *tmpf, *pl2p, gt_err_prob; - float *af; - int maf; - int32_t *arr, narr, nfarr; - float *farr; - bcf_srs_t *sr; - bcf_hdr_t *hdr; -} -args_t; - -const char *about(void) -{ - return "Determine sample sex by checking genotype likelihoods in haploid regions.\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Determine sample sex by checking genotype likelihoods (GL,PL) or genotypes (GT)\n" - " in the non-PAR region of chrX. The HWE is assumed, so given the alternate allele\n" - " frequency fA and the genotype likelihoods pRR,pRA,pAA, the probabilities are\n" - " calculated as\n" - " P(dip) = pRR*(1-fA)^2 + pAA*fA^2 + 2*pRA*(1-fA)*fA\n" - " P(hap) = pRR*(1-fA) + pAA*fA\n" - " When genotype likelihoods are not available, the -e option is used to account\n" - " for genotyping errors with -t GT. The alternate allele frequency fA is estimated\n" - " directly from the data (the default) or can be provided by an INFO tag.\n" - " The results can be visualized using the accompanied guess-ploidy.py script.\n" - " Note that this plugin is intended to replace the former vcf2sex plugin.\n" - "\n" - "Usage: bcftools +guess-ploidy [Plugin Options]\n" - "Plugin options:\n" - " --AF-dflt the default alternate allele frequency [0.5]\n" - " --AF-tag use TAG for allele frequency\n" - " -e, --error-rate probability of GT being wrong (with -t GT) [1e-3]\n" - " --exclude exclude sites for which the expression is true\n" - " -i, --include-indels do not skip indel sites\n" - " --include include only sites for which the expression is true\n" - " -g, --genome shortcut to select nonPAR region for common genomes b37|hg19|b38|hg38\n" - " -r, --regions restrict to comma-separated list of regions\n" - " -R, --regions-file restrict to regions listed in a file\n" - " -t, --tag genotype or genotype likelihoods: GT, PL, GL [PL]\n" - " -v, --verbose verbose output (specify twice to increase verbosity)\n" - "\n" - "Region shortcuts:\n" - " b37 .. -r X:2699521-154931043 # GRCh37 no-chr prefix\n" - " b38 .. -r X:2781480-155701381 # GRCh38 no-chr prefix\n" - " hg19 .. -r chrX:2699521-154931043 # GRCh37 chr prefix\n" - " hg38 .. -r chrX:2781480-155701381 # GRCh38 chr prefix\n" - "\n" - "Examples:\n" - " bcftools +guess-ploidy -g b37 in.vcf.gz\n" - " bcftools +guess-ploidy in.vcf.gz -t GL -r chrX:2699521-154931043\n" - " bcftools view file.vcf.gz -r chrX:2699521-154931043 | bcftools +guess-ploidy\n" - " bcftools +guess-ploidy in.bcf -v > ploidy.txt && guess-ploidy.py ploidy.txt img\n" - "\n"; -} - -static inline int smpl_pass(args_t *args, int ismpl) -{ - if ( !args->smpl_pass ) return 1; - int pass = args->smpl_pass[ismpl]; - if ( args->filter_logic & FLT_EXCLUDE ) pass = pass ? 0 : 1; - if ( pass ) return 1; - return 0; -} - -void process_region_guess(args_t *args) -{ - while ( bcf_sr_next_line(args->sr) ) - { - bcf1_t *rec = bcf_sr_get_line(args->sr,0); - if ( rec->n_allele==1 ) continue; - if ( !args->include_indels && !(bcf_get_variant_types(rec)&VCF_SNP) ) continue; - - if ( args->filter ) - { - int pass = filter_test(args->filter, rec, &args->smpl_pass); - if ( args->filter_logic & FLT_EXCLUDE ) pass = pass ? 0 : 1; - if ( !args->smpl_pass && !pass ) continue; // site-level filtering, not per-sample filtering - } - - double freq[2] = {0,0}, sum; - int ismpl,i; - if ( args->tag & GUESS_GT ) // use GTs to guess the ploidy, considering only one ALT - { - int ngt = bcf_get_genotypes(args->hdr,rec,&args->arr,&args->narr); - if ( ngt<=0 ) continue; - ngt /= args->nsample; - for (ismpl=0; ismplnsample; ismpl++) - { - if ( !smpl_pass(args,ismpl) ) continue; - int32_t *ptr = args->arr + ismpl*ngt; - double *tmp = args->tmpf + ismpl*3; - - if ( ptr[0]==bcf_gt_missing ) - { - tmp[0] = -1; - continue; - } - if ( ptr[1]==bcf_int32_vector_end ) - { - if ( bcf_gt_allele(ptr[0])==0 ) // haploid R - { - tmp[0] = 1 - 2*args->gt_err_prob; - tmp[1] = tmp[2] = args->gt_err_prob; - } - else // haploid A - { - tmp[0] = tmp[1] = args->gt_err_prob; - tmp[2] = 1 - 2*args->gt_err_prob; - } - continue; - } - if ( bcf_gt_allele(ptr[0])==0 && bcf_gt_allele(ptr[1])==0 ) // RR - { - tmp[0] = 1 - 2*args->gt_err_prob; - tmp[1] = tmp[2] = args->gt_err_prob; - } - else if ( bcf_gt_allele(ptr[0])==bcf_gt_allele(ptr[1]) ) // AA - { - tmp[0] = tmp[1] = args->gt_err_prob; - tmp[2] = 1 - 2*args->gt_err_prob; - } - else // RA or hetAA, treating as RA - { - tmp[1] = 1 - 2*args->gt_err_prob; - tmp[0] = tmp[2] = args->gt_err_prob; - } - freq[0] += 2*tmp[0]+tmp[1]; - freq[1] += tmp[1]+2*tmp[2]; - } - } - else if ( args->tag & GUESS_PL ) // use PL guess the ploidy, restrict to first ALT allele - { - int npl = bcf_get_format_int32(args->hdr,rec,"PL",&args->arr,&args->narr); - if ( npl<=0 ) continue; - npl /= args->nsample; - int ndip_gt = rec->n_allele*(rec->n_allele+1)/2; - if ( npl==ndip_gt ) // diploid - { - for (ismpl=0; ismplnsample; ismpl++) - { - if ( !smpl_pass(args,ismpl) ) continue; - int32_t *ptr = args->arr + ismpl*npl; - double *tmp = args->tmpf + ismpl*3; - - // restrict to first ALT - if ( ptr[0]==bcf_int32_missing || ptr[1]==bcf_int32_missing || ptr[2]==bcf_int32_missing ) - { - tmp[0] = -1; - continue; - } - if ( ptr[0]==ptr[1] && ptr[0]==ptr[2] ) // non-informative - { - tmp[0] = -1; - continue; - } - if ( ptr[2]==bcf_int32_vector_end ) - { - tmp[0] = (ptr[0]<0 || ptr[0]>=256) ? args->pl2p[255] : args->pl2p[ptr[0]]; - tmp[1] = args->pl2p[255]; - tmp[2] = (ptr[1]<0 || ptr[1]>=256) ? args->pl2p[255] : args->pl2p[ptr[1]]; - } - else - for (i=0; i<3; i++) - tmp[i] = (ptr[i]<0 || ptr[i]>=256) ? args->pl2p[255] : args->pl2p[ptr[i]]; - - sum = 0; - for (i=0; i<3; i++) sum += tmp[i]; - for (i=0; i<3; i++) tmp[i] /= sum; - - if ( ptr[2]==bcf_int32_vector_end ) - { - freq[0] += tmp[0]; - freq[1] += tmp[2]; - } - else - { - freq[0] += 2*tmp[0]+tmp[1]; - freq[1] += tmp[1]+2*tmp[2]; - } - } - } - else if ( npl==rec->n_allele ) // all samples haploid - { - for (ismpl=0; ismplnsample; ismpl++) - { - if ( !smpl_pass(args,ismpl) ) continue; - int32_t *ptr = args->arr + ismpl*npl; - double *tmp = args->tmpf + ismpl*3; - - // restrict to first ALT - if ( ptr[0]==bcf_int32_missing || ptr[1]==bcf_int32_missing ) - { - tmp[0] = -1; - continue; - } - tmp[0] = (ptr[0]<0 || ptr[0]>=256) ? args->pl2p[255] : args->pl2p[ptr[0]]; - tmp[1] = args->pl2p[255]; - tmp[2] = (ptr[1]<0 || ptr[1]>=256) ? args->pl2p[255] : args->pl2p[ptr[1]]; - - sum = 0; - for (i=0; i<3; i++) sum += tmp[i]; - for (i=0; i<3; i++) tmp[i] /= sum; - - freq[0] += tmp[0]; - freq[1] += tmp[2]; - } - } - else - continue; // neither diploid nor haploid - } - else // use GL - { - int ngl = bcf_get_format_float(args->hdr,rec,"GL",&args->farr,&args->nfarr); - if ( ngl<=0 ) continue; - ngl /= args->nsample; - int ndip_gt = rec->n_allele*(rec->n_allele+1)/2; - if ( ngl==ndip_gt ) // diploid - { - for (ismpl=0; ismplnsample; ismpl++) - { - if ( !smpl_pass(args,ismpl) ) continue; - float *ptr = args->farr + ismpl*ngl; - double *tmp = args->tmpf + ismpl*3; - - // restrict to first ALT - if ( bcf_float_is_missing(ptr[0]) || bcf_float_is_missing(ptr[1]) || bcf_float_is_missing(ptr[2]) ) - { - tmp[0] = -1; - continue; - } - if ( ptr[0]==ptr[1] && ptr[0]==ptr[2] ) // non-informative - { - tmp[0] = -1; - continue; - } - if ( bcf_float_is_vector_end(ptr[2]) ) - { - tmp[0] = pow(10.,ptr[0]); - tmp[1] = 1e-26; // arbitrary small value for a het - tmp[2] = pow(10.,ptr[1]); - } - else - for (i=0; i<3; i++) - tmp[i] = pow(10.,ptr[i]); - - sum = 0; - for (i=0; i<3; i++) sum += tmp[i]; - for (i=0; i<3; i++) tmp[i] /= sum; - - if ( bcf_float_is_vector_end(ptr[2]) ) - { - freq[0] += tmp[0]; - freq[1] += tmp[2]; - } - else - { - freq[0] += 2*tmp[0]+tmp[1]; - freq[1] += tmp[1]+2*tmp[2]; - } - } - } - else if ( ngl==rec->n_allele ) // all samples haploid - { - for (ismpl=0; ismplnsample; ismpl++) - { - if ( !smpl_pass(args,ismpl) ) continue; - float *ptr = args->farr + ismpl*ngl; - double *tmp = args->tmpf + ismpl*3; - - // restrict to first ALT - if ( bcf_float_is_missing(ptr[0]) || bcf_float_is_missing(ptr[1]) ) - { - tmp[0] = -1; - continue; - } - tmp[0] = pow(10.,ptr[0]); - tmp[1] = 1e-26; - tmp[2] = pow(10.,ptr[1]); - - sum = 0; - for (i=0; i<3; i++) sum += tmp[i]; - for (i=0; i<3; i++) tmp[i] /= sum; - - freq[0] += tmp[0]; - freq[1] += tmp[2]; - } - } - else - continue; // neither diploid nor haploid - } - if ( args->af_tag ) - { - int ret = bcf_get_info_float(args->hdr,rec,args->af_tag,&args->af, &args->maf); - if ( ret>0 ) { freq[0] = 1 - args->af[0]; freq[1] = args->af[0]; } - } - - if ( !freq[0] && !freq[1] ) { freq[0] = 1 - args->af_dflt; freq[1] = args->af_dflt; } - sum = freq[0] + freq[1]; - freq[0] /= sum; - freq[1] /= sum; - for (ismpl=0; ismplnsample; ismpl++) - { - if ( !smpl_pass(args,ismpl) ) continue; - count_t *counts = &args->stats.counts[ismpl]; - double *tmp = args->tmpf + ismpl*3; - if ( tmp[0] < 0 ) continue; - double phap = freq[0]*tmp[0] + freq[1]*tmp[2]; - double pdip = freq[0]*freq[0]*tmp[0] + 2*freq[0]*freq[1]*tmp[1] + freq[1]*freq[1]*tmp[2]; - counts->phap += log(phap); - counts->pdip += log(pdip); - counts->ncount++; - if ( args->verbose>1 ) - fprintf(bcftools_stdout, "DBG\t%s\t%d\t%s\t%e\t%e\t%e\t%e\t%e\t%e\n", bcf_seqname(args->hdr,rec),rec->pos+1,bcf_hdr_int2id(args->hdr,BCF_DT_SAMPLE,ismpl), - freq[1],tmp[0],tmp[1],tmp[2],phap,pdip); - } - } -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->tag = GUESS_PL; - args->argc = argc; args->argv = argv; - args->gt_err_prob = 1e-3; - args->af_dflt = 0.5; - char *region = NULL; - int region_is_file = 0; - static struct option loptions[] = - { - {"AF-tag",required_argument,NULL,0}, - {"AF-dflt",required_argument,NULL,1}, - {"exclude",required_argument,NULL,2}, - {"include",required_argument,NULL,3}, - {"verbose",no_argument,NULL,'v'}, - {"include-indels",no_argument,NULL,'i'}, - {"error-rate",required_argument,NULL,'e'}, - {"tag",required_argument,NULL,'t'}, - {"genome",required_argument,NULL,'g'}, - {"regions",required_argument,NULL,'r'}, - {"regions-file",required_argument,NULL,'R'}, - {"background",required_argument,NULL,'b'}, - {NULL,0,NULL,0} - }; - int c; - char *tmp; - while ((c = getopt_long(argc, argv, "vr:R:t:e:ig:",loptions,NULL)) >= 0) - { - switch (c) - { - case 0: args->af_tag = optarg; break; - case 1: - args->af_dflt = strtod(optarg,&tmp); - if ( *tmp ) error("Could not parse: --AF-dflt %s\n", optarg); - break; - case 2: args->filter_str = optarg; args->filter_logic |= FLT_EXCLUDE; break; - case 3: args->filter_str = optarg; args->filter_logic |= FLT_INCLUDE; break; - case 'i': args->include_indels = 1; break; - case 'e': - args->gt_err_prob = strtod(optarg,&tmp); - if ( *tmp ) error("Could not parse: -e %s\n", optarg); - if ( args->gt_err_prob<0 || args->gt_err_prob>1 ) error("Expected value from the interval [0,1]: -e %s\n", optarg); - break; - case 'g': - if ( !strcasecmp(optarg,"b37") ) region = "X:2699521-154931043"; - else if ( !strcasecmp(optarg,"b38") ) region = "X:2781480-155701381"; - else if ( !strcasecmp(optarg,"hg19") ) region = "chrX:2699521-154931043"; - else if ( !strcasecmp(optarg,"hg38") ) region = "chrX:2781480-155701381"; - else error("The argument not recognised, expected --genome b37, b38, hg19 or hg38: %s\n", optarg); - break; - case 'R': region_is_file = 1; - case 'r': region = optarg; break; - case 'v': args->verbose++; break; - case 't': - if ( !strcasecmp(optarg,"GT") ) args->tag = GUESS_GT; - else if ( !strcasecmp(optarg,"PL") ) args->tag = GUESS_PL; - else if ( !strcasecmp(optarg,"GL") ) args->tag = GUESS_GL; - else error("The argument not recognised, expected --tag GT, PL or GL: %s\n", optarg); - break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - if ( args->filter_logic == (FLT_EXCLUDE|FLT_INCLUDE) ) error("Only one of --include or --exclude can be given.\n"); - - char *fname = NULL; - if ( optind==argc ) - { - if ( !isatty(fileno((FILE *)stdin)) ) fname = "-"; // reading from stdin - else { error("%s",usage_text()); } - } - else if ( optind+1!=argc ) error("%s",usage_text()); - else fname = argv[optind]; - - args->sr = bcf_sr_init(); - if ( strcmp("-",fname) ) - { - if ( region ) - { - args->sr->require_index = 1; - if ( bcf_sr_set_regions(args->sr, region, region_is_file)<0 ) - error("Failed to read the regions: %s\n",region); - } - } - else - { - if ( region ) - { - if ( bcf_sr_set_targets(args->sr, region, region_is_file, 0)<0 ) - error("Failed to read the targets: %s\n",region); - } - } - if ( !bcf_sr_add_reader(args->sr,fname) ) error("Error: %s\n", bcf_sr_strerror(args->sr->errnum)); - args->hdr = args->sr->readers[0].header; - args->nsample = bcf_hdr_nsamples(args->hdr); - args->stats.counts = (count_t*) calloc(args->nsample,sizeof(count_t)); - - if ( args->filter_str ) - args->filter = filter_init(args->hdr, args->filter_str); - - if ( args->af_tag && !bcf_hdr_idinfo_exists(args->hdr,BCF_HL_INFO,bcf_hdr_id2int(args->hdr,BCF_DT_ID,args->af_tag)) ) - error("No such INFO tag: %s\n", args->af_tag); - - if ( args->tag&GUESS_PL && bcf_hdr_id2int(args->hdr, BCF_DT_ID, "PL")<0 ) - { - fprintf(bcftools_stderr, "Warning: PL tag not found in header, switching to GL\n"); - args->tag = GUESS_GL; - } - - if ( args->tag&GUESS_GL && bcf_hdr_id2int(args->hdr, BCF_DT_ID, "GL")<0 ) - { - fprintf(bcftools_stderr, "Warning: GL tag not found in header, switching to GT\n"); - args->tag = GUESS_GT; - } - - if ( args->tag&GUESS_GT && bcf_hdr_id2int(args->hdr, BCF_DT_ID, "GT")<0 ) - error("Error: GT tag not found in header\n"); - - int i; - if ( args->tag&GUESS_PL ) - { - args->pl2p = (double*) calloc(256,sizeof(double)); - for (i=0; i<256; i++) args->pl2p[i] = pow(10., -i/10.); - } - if ( args->tag&GUESS_PL || args->tag&GUESS_GL || args->tag&GUESS_GT ) - args->tmpf = (double*) malloc(sizeof(*args->tmpf)*3*args->nsample); - - if ( args->verbose ) - { - fprintf(bcftools_stdout, "# This file was produced by: bcftools +guess-ploidy(%s+htslib-%s)\n", bcftools_version(),hts_version()); - fprintf(bcftools_stdout, "# The command line was:\tbcftools +%s", args->argv[0]); - for (i=1; iargc; i++) - fprintf(bcftools_stdout, " %s",args->argv[i]); - fprintf(bcftools_stdout, "\n"); - fprintf(bcftools_stdout, "# [1]SEX\t[2]Sample\t[3]Predicted sex\t[4]log P(Haploid)/nSites\t[5]log P(Diploid)/nSites\t[6]nSites\t[7]Score: F < 0 < M ($4-$5)\n"); - if ( args->verbose>1 ) - fprintf(bcftools_stdout, "# [1]DBG\t[2]Chr\t[3]Pos\t[4]Sample\t[5]AF\t[6]pRR\t[7]pRA\t[8]pAA\t[9]P(Haploid)\t[10]P(Diploid)\n"); - } - - process_region_guess(args); - - for (i=0; insample; i++) - { - double phap = args->stats.counts[i].ncount ? args->stats.counts[i].phap / args->stats.counts[i].ncount : 0.5; - double pdip = args->stats.counts[i].ncount ? args->stats.counts[i].pdip / args->stats.counts[i].ncount : 0.5; - char predicted_sex = 'U'; - if (phap>pdip) predicted_sex = 'M'; - else if (phapverbose ) - { - fprintf(bcftools_stdout, "SEX\t%s\t%c\t%f\t%f\t%"PRId64"\t%f\n", args->hdr->samples[i],predicted_sex, - phap,pdip,args->stats.counts[i].ncount,phap-pdip); - } - else - fprintf(bcftools_stdout, "%s\t%c\n", args->hdr->samples[i],predicted_sex); - } - - if ( args->filter ) - filter_destroy(args->filter); - - bcf_sr_destroy(args->sr); - free(args->pl2p); - free(args->tmpf); - free(args->counts); - free(args->stats.counts); - free(args->arr); - free(args->farr); - free(args->af); - free(args); - return 0; -} diff --git a/bcftools/plugins/impute-info.c b/bcftools/plugins/impute-info.c deleted file mode 100644 index 42d4eb4..0000000 --- a/bcftools/plugins/impute-info.c +++ /dev/null @@ -1,165 +0,0 @@ -/* plugins/impute-info.c -- adds info metrics to a VCF file. - - Copyright (C) 2015-2016 Genome Research Ltd. - - Author: Shane McCarthy - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - - -/* - -Marchini & Howie, Nature Genetics, 11 (July 2010) - -Let G_ij in {0,1,2} be the genotype of the ith individual at the -jth SNP in a study cohort of N samples. Let - - p_ijk = P(G_ij = k | H,G) - -be the probability that the genotype at the jth SNP of the ith -individual is k. - -Let the expected allele dosage for the genotype at the jth SNP -of the ith individual be - - e_ij = p_ij1 + 2 * p_ij2 - -and define - - f_ij = p_ij1 + 4 * p_ij2 - -Let theta_j denote the (unknown) population allele frequency of the jth SNP -with: - - theta_j = SUM[i=1..N] e_ij / 2 * N - -The IMPUTE2 information measure is then: - - if theta_j in (0,1): - I(theta_j) = 1 - SUM[i=1..N](f_ij - e_ij^2) / 2 * N * theta_j * (1 - theta_j) - else: - I(theta_j) = 1 - -*/ - -#include -#include -#include -#include -#include - -const char *about(void) -{ - return "Add imputation information metrics to the INFO field based on selected FORMAT tags.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Add imputation information metrics to the INFO field based\n" - " on selected FORMAT tags. Only the IMPUTE2 INFO metric from\n" - " FORMAT/GP tags is currently available.\n" - "Usage: bcftools +impute-info [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - // "Plugin options:\n" - // " -i, --info information metrics to add [INFO]\n" // [BEAGLE_R2,MACH_R2] - // " -t, --tags VCF tags to determine the information from [GP]\n" - // "\n" - "Example:\n" - " bcftools +impute-info in.vcf\n" - "\n"; -} - -bcf_hdr_t *in_hdr = NULL, *out_hdr = NULL; -int gp_type = BCF_HT_REAL; -uint8_t *buf = NULL; -int nbuf = 0; // NB: number of elements, not bytes -int nrec = 0, nskip_gp = 0, nskip_dip = 0; - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - in_hdr = in; - out_hdr = out; - bcf_hdr_append(out_hdr,"##INFO="); - return 0; -} - -bcf1_t *process(bcf1_t *rec) -{ - int nval = 0, i, j, nret = bcf_get_format_values(in_hdr,rec,"GP",(void**)&buf,&nbuf,gp_type); - if ( nret<0 ) - { - if (!nskip_gp) fprintf(stderr, "[impute-info.c] Warning: info tag not added to sites without GP tag\n"); - nskip_gp++; - return rec; // require FORMAT/GP tag, return site unchanged - } - - nret /= rec->n_sample; - if ( nret != 3 ) - { - if (!nskip_dip) fprintf(stderr, "[impute-info.c] Warning: info tag not added to sites that are not biallelic diploid\n"); - nskip_dip++; - return rec; // require biallelic diploid, return site unchanged - } - - double esum = 0, e2sum = 0, fsum = 0; - #define BRANCH(type_t,is_missing,is_vector_end) \ - { \ - type_t *ptr = (type_t*) buf; \ - for (i=0; in_sample; i++) \ - { \ - double vals[3] = {0,0,0}; \ - for (j=0; j0 && theta<1) ? (float)(1 - (fsum - e2sum) / (2 * (double)nval * theta * (1.0 - theta))) : 1; - - bcf_update_info_float(out_hdr, rec, "INFO", &info, 1); - nrec++; - return rec; -} - - -void destroy(void) -{ - fprintf(stderr,"Lines total/info-added/unchanged-no-tag/unchanged-not-biallelic-diploid:\t%d/%d/%d/%d\n", nrec+nskip_gp+nskip_dip, nrec, nskip_gp, nskip_dip); - free(buf); -} diff --git a/bcftools/plugins/impute-info.c.pysam.c b/bcftools/plugins/impute-info.c.pysam.c deleted file mode 100644 index 67545e5..0000000 --- a/bcftools/plugins/impute-info.c.pysam.c +++ /dev/null @@ -1,167 +0,0 @@ -#include "bcftools.pysam.h" - -/* plugins/impute-info.c -- adds info metrics to a VCF file. - - Copyright (C) 2015-2016 Genome Research Ltd. - - Author: Shane McCarthy - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - - -/* - -Marchini & Howie, Nature Genetics, 11 (July 2010) - -Let G_ij in {0,1,2} be the genotype of the ith individual at the -jth SNP in a study cohort of N samples. Let - - p_ijk = P(G_ij = k | H,G) - -be the probability that the genotype at the jth SNP of the ith -individual is k. - -Let the expected allele dosage for the genotype at the jth SNP -of the ith individual be - - e_ij = p_ij1 + 2 * p_ij2 - -and define - - f_ij = p_ij1 + 4 * p_ij2 - -Let theta_j denote the (unknown) population allele frequency of the jth SNP -with: - - theta_j = SUM[i=1..N] e_ij / 2 * N - -The IMPUTE2 information measure is then: - - if theta_j in (0,1): - I(theta_j) = 1 - SUM[i=1..N](f_ij - e_ij^2) / 2 * N * theta_j * (1 - theta_j) - else: - I(theta_j) = 1 - -*/ - -#include -#include -#include -#include -#include - -const char *about(void) -{ - return "Add imputation information metrics to the INFO field based on selected FORMAT tags.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Add imputation information metrics to the INFO field based\n" - " on selected FORMAT tags. Only the IMPUTE2 INFO metric from\n" - " FORMAT/GP tags is currently available.\n" - "Usage: bcftools +impute-info [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - // "Plugin options:\n" - // " -i, --info information metrics to add [INFO]\n" // [BEAGLE_R2,MACH_R2] - // " -t, --tags VCF tags to determine the information from [GP]\n" - // "\n" - "Example:\n" - " bcftools +impute-info in.vcf\n" - "\n"; -} - -bcf_hdr_t *in_hdr = NULL, *out_hdr = NULL; -int gp_type = BCF_HT_REAL; -uint8_t *buf = NULL; -int nbuf = 0; // NB: number of elements, not bytes -int nrec = 0, nskip_gp = 0, nskip_dip = 0; - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - in_hdr = in; - out_hdr = out; - bcf_hdr_append(out_hdr,"##INFO="); - return 0; -} - -bcf1_t *process(bcf1_t *rec) -{ - int nval = 0, i, j, nret = bcf_get_format_values(in_hdr,rec,"GP",(void**)&buf,&nbuf,gp_type); - if ( nret<0 ) - { - if (!nskip_gp) fprintf(bcftools_stderr, "[impute-info.c] Warning: info tag not added to sites without GP tag\n"); - nskip_gp++; - return rec; // require FORMAT/GP tag, return site unchanged - } - - nret /= rec->n_sample; - if ( nret != 3 ) - { - if (!nskip_dip) fprintf(bcftools_stderr, "[impute-info.c] Warning: info tag not added to sites that are not biallelic diploid\n"); - nskip_dip++; - return rec; // require biallelic diploid, return site unchanged - } - - double esum = 0, e2sum = 0, fsum = 0; - #define BRANCH(type_t,is_missing,is_vector_end) \ - { \ - type_t *ptr = (type_t*) buf; \ - for (i=0; in_sample; i++) \ - { \ - double vals[3] = {0,0,0}; \ - for (j=0; j0 && theta<1) ? (float)(1 - (fsum - e2sum) / (2 * (double)nval * theta * (1.0 - theta))) : 1; - - bcf_update_info_float(out_hdr, rec, "INFO", &info, 1); - nrec++; - return rec; -} - - -void destroy(void) -{ - fprintf(bcftools_stderr,"Lines total/info-added/unchanged-no-tag/unchanged-not-biallelic-diploid:\t%d/%d/%d/%d\n", nrec+nskip_gp+nskip_dip, nrec, nskip_gp, nskip_dip); - free(buf); -} diff --git a/bcftools/plugins/isecGT.c b/bcftools/plugins/isecGT.c deleted file mode 100644 index 38b2708..0000000 --- a/bcftools/plugins/isecGT.c +++ /dev/null @@ -1,177 +0,0 @@ -/* - Copyright (C) 2016 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "smpl_ilist.h" - -typedef struct -{ - int argc, output_type, regions_is_file, targets_is_file; - char **argv, *output_fname, *regions_list, *targets_list; - int32_t *arr_a, narr_a, *arr_b, narr_b; - bcf_srs_t *sr; - bcf_hdr_t *hdr_a, *hdr_b; - htsFile *out_fh; -} -args_t; - -const char *about(void) -{ - return "Compare two files and set non-identical genotypes to missing.\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Compare two files and set non-identical genotypes in the first file to missing.\n" - "\n" - "Usage: bcftools +isecGT [Plugin Options]\n" - "Plugin options:\n" - " -o, --output write output to a file [standard output]\n" - " -O, --output-type 'b' compressed BCF; 'u' uncompressed BCF; 'z' compressed VCF; 'v' uncompressed VCF [v]\n" - " -r, --regions restrict to comma-separated list of regions\n" - " -R, --regions-file restrict to regions listed in a file\n" - " -t, --targets similar to -r but streams rather than index-jumps\n" - " -T, --targets-file similar to -R but streams rather than index-jumps\n" - "\n"; -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->output_fname = "-"; - args->output_type = FT_VCF; - static struct option loptions[] = - { - {"regions",required_argument,NULL,'r'}, - {"regions-file",required_argument,NULL,'R'}, - {"targets",required_argument,NULL,'t'}, - {"targets-file",required_argument,NULL,'T'}, - {"output",required_argument,NULL,'o'}, - {"output-type",required_argument,NULL,'O'}, - {NULL,0,NULL,0} - }; - int c; - while ((c = getopt_long(argc, argv, "o:O:r:R:t:T:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'o': args->output_fname = optarg; break; - case 'O': - switch (optarg[0]) { - case 'b': args->output_type = FT_BCF_GZ; break; - case 'u': args->output_type = FT_BCF; break; - case 'z': args->output_type = FT_VCF_GZ; break; - case 'v': args->output_type = FT_VCF; break; - default: error("The output type \"%s\" not recognised\n", optarg); - } - break; - case 'r': args->regions_list = optarg; break; - case 'R': args->regions_list = optarg; args->regions_is_file = 1; break; - case 't': args->targets_list = optarg; break; - case 'T': args->targets_list = optarg; args->targets_is_file = 1; break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - - if ( optind+2!=argc ) error("%s",usage_text()); - - args->sr = bcf_sr_init(); - args->sr->require_index = 1; - if ( args->regions_list ) - { - if ( bcf_sr_set_regions(args->sr, args->regions_list, args->regions_is_file)<0 ) - error("Failed to read the regions: %s\n", args->regions_list); - } - if ( args->targets_list ) - { - if ( bcf_sr_set_targets(args->sr, args->targets_list, args->targets_is_file, 0)<0 ) - error("Failed to read the targets: %s\n", args->targets_list); - args->sr->collapse |= COLLAPSE_BOTH; - } - if ( !bcf_sr_add_reader(args->sr,argv[optind]) ) error("Error opening %s: %s\n", argv[optind],bcf_sr_strerror(args->sr->errnum)); - if ( !bcf_sr_add_reader(args->sr,argv[optind+1]) ) error("Error opening %s: %s\n", argv[optind+1],bcf_sr_strerror(args->sr->errnum)); - args->hdr_a = bcf_sr_get_header(args->sr,0); - args->hdr_b = bcf_sr_get_header(args->sr,1); - smpl_ilist_t *smpl = smpl_ilist_map(args->hdr_a, args->hdr_b, SMPL_STRICT); - args->out_fh = hts_open(args->output_fname, hts_bcf_wmode(args->output_type)); - if ( args->out_fh == NULL ) error("Can't write to \"%s\": %s\n", args->output_fname, strerror(errno)); - bcf_hdr_write(args->out_fh, args->hdr_a); - - while ( bcf_sr_next_line(args->sr) ) - { - if ( !bcf_sr_has_line(args->sr,0) ) continue; - if ( !bcf_sr_has_line(args->sr,1) ) - { - bcf_write(args->out_fh, args->hdr_a, bcf_sr_get_line(args->sr,0)); - continue; - } - - bcf1_t *line_a = bcf_sr_get_line(args->sr,0); - bcf1_t *line_b = bcf_sr_get_line(args->sr,1); - int ngt_a = bcf_get_genotypes(args->hdr_a, line_a, &args->arr_a, &args->narr_a); - int ngt_b = bcf_get_genotypes(args->hdr_b, line_b, &args->arr_b, &args->narr_b); - assert( ngt_a==ngt_b ); // todo - ngt_a /= smpl->n; - ngt_b /= smpl->n; - int i, j, dirty = 0; - for (i=0; in; i++) - { - int32_t *a = args->arr_a + i*ngt_a; - int32_t *b = args->arr_b + smpl->idx[i]*ngt_b; - for (j=0; jhdr_a, line_a, args->arr_a, ngt_a*smpl->n); - bcf_write(args->out_fh, args->hdr_a, line_a); - } - - if ( hts_close(args->out_fh)!=0 ) error("Close failed: %s\n",args->output_fname); - smpl_ilist_destroy(smpl); - bcf_sr_destroy(args->sr); - free(args->arr_a); - free(args->arr_b); - free(args); - return 0; -} - diff --git a/bcftools/plugins/isecGT.c.pysam.c b/bcftools/plugins/isecGT.c.pysam.c deleted file mode 100644 index 54efcf6..0000000 --- a/bcftools/plugins/isecGT.c.pysam.c +++ /dev/null @@ -1,179 +0,0 @@ -#include "bcftools.pysam.h" - -/* - Copyright (C) 2016 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "smpl_ilist.h" - -typedef struct -{ - int argc, output_type, regions_is_file, targets_is_file; - char **argv, *output_fname, *regions_list, *targets_list; - int32_t *arr_a, narr_a, *arr_b, narr_b; - bcf_srs_t *sr; - bcf_hdr_t *hdr_a, *hdr_b; - htsFile *out_fh; -} -args_t; - -const char *about(void) -{ - return "Compare two files and set non-identical genotypes to missing.\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Compare two files and set non-identical genotypes in the first file to missing.\n" - "\n" - "Usage: bcftools +isecGT [Plugin Options]\n" - "Plugin options:\n" - " -o, --output write output to a file [standard output]\n" - " -O, --output-type 'b' compressed BCF; 'u' uncompressed BCF; 'z' compressed VCF; 'v' uncompressed VCF [v]\n" - " -r, --regions restrict to comma-separated list of regions\n" - " -R, --regions-file restrict to regions listed in a file\n" - " -t, --targets similar to -r but streams rather than index-jumps\n" - " -T, --targets-file similar to -R but streams rather than index-jumps\n" - "\n"; -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->output_fname = "-"; - args->output_type = FT_VCF; - static struct option loptions[] = - { - {"regions",required_argument,NULL,'r'}, - {"regions-file",required_argument,NULL,'R'}, - {"targets",required_argument,NULL,'t'}, - {"targets-file",required_argument,NULL,'T'}, - {"output",required_argument,NULL,'o'}, - {"output-type",required_argument,NULL,'O'}, - {NULL,0,NULL,0} - }; - int c; - while ((c = getopt_long(argc, argv, "o:O:r:R:t:T:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'o': args->output_fname = optarg; break; - case 'O': - switch (optarg[0]) { - case 'b': args->output_type = FT_BCF_GZ; break; - case 'u': args->output_type = FT_BCF; break; - case 'z': args->output_type = FT_VCF_GZ; break; - case 'v': args->output_type = FT_VCF; break; - default: error("The output type \"%s\" not recognised\n", optarg); - } - break; - case 'r': args->regions_list = optarg; break; - case 'R': args->regions_list = optarg; args->regions_is_file = 1; break; - case 't': args->targets_list = optarg; break; - case 'T': args->targets_list = optarg; args->targets_is_file = 1; break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - - if ( optind+2!=argc ) error("%s",usage_text()); - - args->sr = bcf_sr_init(); - args->sr->require_index = 1; - if ( args->regions_list ) - { - if ( bcf_sr_set_regions(args->sr, args->regions_list, args->regions_is_file)<0 ) - error("Failed to read the regions: %s\n", args->regions_list); - } - if ( args->targets_list ) - { - if ( bcf_sr_set_targets(args->sr, args->targets_list, args->targets_is_file, 0)<0 ) - error("Failed to read the targets: %s\n", args->targets_list); - args->sr->collapse |= COLLAPSE_BOTH; - } - if ( !bcf_sr_add_reader(args->sr,argv[optind]) ) error("Error opening %s: %s\n", argv[optind],bcf_sr_strerror(args->sr->errnum)); - if ( !bcf_sr_add_reader(args->sr,argv[optind+1]) ) error("Error opening %s: %s\n", argv[optind+1],bcf_sr_strerror(args->sr->errnum)); - args->hdr_a = bcf_sr_get_header(args->sr,0); - args->hdr_b = bcf_sr_get_header(args->sr,1); - smpl_ilist_t *smpl = smpl_ilist_map(args->hdr_a, args->hdr_b, SMPL_STRICT); - args->out_fh = hts_open(args->output_fname, hts_bcf_wmode(args->output_type)); - if ( args->out_fh == NULL ) error("Can't write to \"%s\": %s\n", args->output_fname, strerror(errno)); - bcf_hdr_write(args->out_fh, args->hdr_a); - - while ( bcf_sr_next_line(args->sr) ) - { - if ( !bcf_sr_has_line(args->sr,0) ) continue; - if ( !bcf_sr_has_line(args->sr,1) ) - { - bcf_write(args->out_fh, args->hdr_a, bcf_sr_get_line(args->sr,0)); - continue; - } - - bcf1_t *line_a = bcf_sr_get_line(args->sr,0); - bcf1_t *line_b = bcf_sr_get_line(args->sr,1); - int ngt_a = bcf_get_genotypes(args->hdr_a, line_a, &args->arr_a, &args->narr_a); - int ngt_b = bcf_get_genotypes(args->hdr_b, line_b, &args->arr_b, &args->narr_b); - assert( ngt_a==ngt_b ); // todo - ngt_a /= smpl->n; - ngt_b /= smpl->n; - int i, j, dirty = 0; - for (i=0; in; i++) - { - int32_t *a = args->arr_a + i*ngt_a; - int32_t *b = args->arr_b + smpl->idx[i]*ngt_b; - for (j=0; jhdr_a, line_a, args->arr_a, ngt_a*smpl->n); - bcf_write(args->out_fh, args->hdr_a, line_a); - } - - if ( hts_close(args->out_fh)!=0 ) error("Close failed: %s\n",args->output_fname); - smpl_ilist_destroy(smpl); - bcf_sr_destroy(args->sr); - free(args->arr_a); - free(args->arr_b); - free(args); - return 0; -} - diff --git a/bcftools/plugins/mendelian.c b/bcftools/plugins/mendelian.c deleted file mode 100644 index f3cda54..0000000 --- a/bcftools/plugins/mendelian.c +++ /dev/null @@ -1,566 +0,0 @@ -/* The MIT License - - Copyright (c) 2015 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for isatty -#include "bcftools.h" -#include "regidx.h" - -#define MODE_COUNT 1 -#define MODE_LIST_GOOD 2 -#define MODE_LIST_BAD 4 -#define MODE_DELETE 8 - -typedef struct -{ - int nok, nbad; - int imother,ifather,ichild; -} -trio_t; - -typedef struct -{ - int mpl, fpl, cpl; // ploidies - mother, father, child - int mal, fal; // expect an allele from mother and father -} -rule_t; - -typedef struct _args_t -{ - regidx_t *rules; - regitr_t *itr, *itr_ori; - bcf_hdr_t *hdr; - htsFile *out_fh; - int32_t *gt_arr; - int mode; - int ngt_arr, nrec; - trio_t *trios; - int ntrios; - int output_type; - char *output_fname; - bcf_srs_t *sr; -} -args_t; - -static args_t args; -static int parse_rules(const char *line, char **chr_beg, char **chr_end, uint32_t *beg, uint32_t *end, void *payload, void *usr); -static bcf1_t *process(bcf1_t *rec); - -const char *about(void) -{ - return "Count Mendelian consistent / inconsistent genotypes.\n"; -} - -typedef struct -{ - const char *alias, *about, *rules; -} -rules_predef_t; - -static rules_predef_t rules_predefs[] = -{ - { .alias = "GRCh37", - .about = "Human Genome reference assembly GRCh37 / hg19, both chr naming conventions", - .rules = - " X:1-60000 M/M + F > M\n" - " X:1-60000 M/M + F > M/F\n" - " X:2699521-154931043 M/M + F > M\n" - " X:2699521-154931043 M/M + F > M/F\n" - " Y:1-59373566 . + F > F\n" - " MT:1-16569 M + F > M\n" - "\n" - " chrX:1-60000 M/M + F > M\n" - " chrX:1-60000 M/M + F > M/F\n" - " chrX:2699521-154931043 M/M + F > M\n" - " chrX:2699521-154931043 M/M + F > M/F\n" - " chrY:1-59373566 . + F > F\n" - " chrM:1-16569 M + F > M\n" - }, - { .alias = "GRCh38", - .about = "Human Genome reference assembly GRCh38 / hg38, both chr naming conventions", - .rules = - " X:1-9999 M/M + F > M\n" - " X:1-9999 M/M + F > M/F\n" - " X:2781480-155701381 M/M + F > M\n" - " X:2781480-155701381 M/M + F > M/F\n" - " Y:1-57227415 . + F > F\n" - " MT:1-16569 M + F > M\n" - "\n" - " chrX:1-9999 M/M + F > M\n" - " chrX:1-9999 M/M + F > M/F\n" - " chrX:2781480-155701381 M/M + F > M\n" - " chrX:2781480-155701381 M/M + F > M/F\n" - " chrY:1-57227415 . + F > F\n" - " chrM:1-16569 M + F > M\n" - }, - { - .alias = NULL, - .about = NULL, - .rules = NULL, - } -}; - - -const char *usage(void) -{ - return - "\n" - "About: Count Mendelian consistent / inconsistent genotypes.\n" - "Usage: bcftools +mendelian [Options]\n" - "Options:\n" - " -c, --count count the number of consistent sites\n" - " -d, --delete delete inconsistent genotypes (set to \"./.\")\n" - " -l, --list [+x] list consistent (+) or inconsistent (x) sites\n" - " -o, --output write output to a file [standard output]\n" - " -O, --output-type 'b' compressed BCF; 'u' uncompressed BCF; 'z' compressed VCF; 'v' uncompressed VCF [v]\n" - " -r, --rules [?] predefined rules, 'list' to print available settings, append '?' for details\n" - " -R, --rules-file inheritance rules, see example below\n" - " -t, --trio names of mother, father and the child\n" - " -T, --trio-file list of trios, one per line\n" - "\n" - "Example:\n" - " # Default inheritance patterns, override with -r\n" - " # region mothernal_ploidy + paternal > offspring\n" - " X:1-60000 M/M + F > M\n" - " X:1-60000 M/M + F > M/F\n" - " X:2699521-154931043 M/M + F > M\n" - " X:2699521-154931043 M/M + F > M/F\n" - " Y:1-59373566 . + F > F\n" - " MT:1-16569 M + F > M\n" - "\n" - " bcftools +mendelian in.vcf -t Mother,Father,Child -c\n" - "\n"; -} - -regidx_t *init_rules(args_t *args, char *alias) -{ - const rules_predef_t *rules = rules_predefs; - if ( !alias ) alias = "GRCh37"; - - int detailed = 0, len = strlen(alias); - if ( alias[len-1]=='?' ) { detailed = 1; alias[len-1] = 0; } - - while ( rules->alias && strcasecmp(alias,rules->alias) ) rules++; - - if ( !rules->alias ) - { - fprintf(stderr,"\nPRE-DEFINED INHERITANCE RULES\n\n"); - fprintf(stderr," * Columns are: CHROM:BEG-END MATERNAL_PLOIDY + PATERNAL_PLOIDY > OFFSPRING\n"); - fprintf(stderr," * Coordinates are 1-based inclusive.\n\n"); - rules = rules_predefs; - while ( rules->alias ) - { - fprintf(stderr,"%s\n .. %s\n\n", rules->alias,rules->about); - if ( detailed ) - fprintf(stderr,"%s\n", rules->rules); - rules++; - } - fprintf(stderr,"Run as --rules (e.g. --rules GRCh37).\n"); - fprintf(stderr,"To see the detailed ploidy definition, append a question mark (e.g. --rules GRCh37?).\n"); - fprintf(stderr,"\n"); - exit(-1); - } - else if ( detailed ) - { - fprintf(stderr,"%s", rules->rules); - exit(-1); - } - return regidx_init_string(rules->rules, parse_rules, NULL, sizeof(rule_t), &args); -} - -static int parse_rules(const char *line, char **chr_beg, char **chr_end, uint32_t *beg, uint32_t *end, void *payload, void *usr) -{ - // e.g. "Y:1-59373566 . + F > . # daugther" - - // eat any leading spaces - char *ss = (char*) line; - while ( *ss && isspace(*ss) ) ss++; - if ( !*ss ) return -1; // skip empty lines - - // chromosome name, beg, end - char *tmp, *se = ss; - while ( se[1] && !isspace(se[1]) ) se++; - while ( se > ss && isdigit(*se) ) se--; - if ( *se!='-' ) error("Could not parse the region: %s\n", line); - *end = strtol(se+1, &tmp, 10) - 1; - if ( tmp==se+1 ) error("Could not parse the region:%s\n",line); - while ( se > ss && *se!=':' ) se--; - *beg = strtol(se+1, &tmp, 10) - 1; - if ( tmp==se+1 ) error("Could not parse the region:%s\n",line); - - *chr_beg = ss; - *chr_end = se-1; - - // skip region - while ( *ss && !isspace(*ss) ) ss++; - while ( *ss && isspace(*ss) ) ss++; - - rule_t *rule = (rule_t*) payload; - memset(rule, 0, sizeof(rule_t)); - - // mothernal ploidy - se = ss; - while ( *se && !isspace(*se) ) se++; - int err = 0; - if ( se - ss == 1 ) - { - if ( *ss=='M' ) rule->mpl = 1; - else if ( *ss=='.' ) rule->mpl = 0; - else err = 1; - } - else if ( se - ss == 3 ) - { - if ( !strncmp(ss,"M/M",3) ) rule->mpl = 2; - else err = 1; - } - else err = 1; - if ( err ) error("Could not parse the mothernal ploidy, only \"M\", \"M/M\" and \".\" currently supported: %s\n",line); - - // skip "+" - while ( *se && isspace(*se) ) se++; - if ( *se != '+' ) error("Could not parse the line: %s\n",line); - se++; - while ( *se && isspace(*se) ) se++; - - // paternal ploidy - ss = se; - while ( *se && !isspace(*se) ) se++; - if ( se - ss == 1 ) - { - if ( *ss=='F' ) rule->fpl = 1; - else err = 1; - } - else err = 1; - if ( err ) error("Could not parse the paternal ploidy, only \"F\" is currently supported: %s [%s]\n",line, ss); - - // skip ">" - while ( *se && isspace(*se) ) se++; - if ( *se != '>' ) error("Could not parse the line: %s\n",line); - se++; - while ( *se && isspace(*se) ) se++; - - // ploidy in offspring - ss = se; - while ( *se && !isspace(*se) ) se++; - if ( se - ss == 3 ) - { - if ( !strncmp(ss,"M/F",3) ) { rule->cpl = 2; rule->fal = 1; rule->mal = 1; } - else err = 1; - } - else if ( se - ss == 1 ) - { - if ( *ss=='F' ) { rule->cpl = 1; rule->fal = 1; } - else if ( *ss=='M' ) { rule->cpl = 1; rule->mal = 1; } - else err = 1; - } - else err = 1; - if ( err ) error("Could not parse the offspring's ploidy, only \"M\", \"F\" or \"M/F\" is currently supported: %s\n",line); - - return 0; -} - -int run(int argc, char **argv) -{ - char *trio_samples = NULL, *trio_file = NULL, *rules_fname = NULL, *rules_string = NULL; - memset(&args,0,sizeof(args_t)); - args.mode = 0; - args.output_fname = "-"; - - static struct option loptions[] = - { - {"trio",1,0,'t'}, - {"trio-file",1,0,'T'}, - {"delete",0,0,'d'}, - {"list",1,0,'l'}, - {"count",0,0,'c'}, - {"rules",1,0,'r'}, - {"rules-file",1,0,'R'}, - {"output",required_argument,NULL,'o'}, - {"output-type",required_argument,NULL,'O'}, - {0,0,0,0} - }; - int c; - while ((c = getopt_long(argc, argv, "?ht:T:l:cdr:R:o:O:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'o': args.output_fname = optarg; break; - case 'O': - switch (optarg[0]) { - case 'b': args.output_type = FT_BCF_GZ; break; - case 'u': args.output_type = FT_BCF; break; - case 'z': args.output_type = FT_VCF_GZ; break; - case 'v': args.output_type = FT_VCF; break; - default: error("The output type \"%s\" not recognised\n", optarg); - }; - break; - case 'R': rules_fname = optarg; break; - case 'r': rules_string = optarg; break; - case 'd': args.mode |= MODE_DELETE; break; - case 'c': args.mode |= MODE_COUNT; break; - case 'l': - if ( !strcmp("+",optarg) ) args.mode |= MODE_LIST_GOOD; - else if ( !strcmp("x",optarg) ) args.mode |= MODE_LIST_BAD; - else error("The argument not recognised: --list %s\n", optarg); - break; - case 't': trio_samples = optarg; break; - case 'T': trio_file = optarg; break; - case 'h': - case '?': - default: error("%s",usage()); break; - } - } - if ( rules_fname ) - args.rules = regidx_init(rules_fname, parse_rules, NULL, sizeof(rule_t), &args); - else - args.rules = init_rules(&args, rules_string); - if ( !args.rules ) return -1; - args.itr = regitr_init(args.rules); - args.itr_ori = regitr_init(args.rules); - - char *fname = NULL; - if ( optind>=argc || argv[optind][0]=='-' ) - { - if ( !isatty(fileno((FILE *)stdin)) ) fname = "-"; // reading from stdin - else error("%s",usage()); - } - else - fname = argv[optind]; - - if ( !trio_samples && !trio_file ) error("Expected the -t/T option\n"); - if ( !args.mode ) error("Expected one of the -c, -d or -l options\n"); - if ( args.mode&MODE_DELETE && !(args.mode&(MODE_LIST_GOOD|MODE_LIST_BAD)) ) args.mode |= MODE_LIST_GOOD|MODE_LIST_BAD; - - args.sr = bcf_sr_init(); - if ( !bcf_sr_add_reader(args.sr, fname) ) error("Failed to open %s: %s\n", fname,bcf_sr_strerror(args.sr->errnum)); - args.hdr = bcf_sr_get_header(args.sr, 0); - args.out_fh = hts_open(args.output_fname,hts_bcf_wmode(args.output_type)); - if ( args.out_fh == NULL ) error("Can't write to \"%s\": %s\n", args.output_fname, strerror(errno)); - bcf_hdr_write(args.out_fh, args.hdr); - - - int i, n = 0; - char **list; - if ( trio_samples ) - { - args.ntrios = 1; - args.trios = (trio_t*) calloc(1,sizeof(trio_t)); - list = hts_readlist(trio_samples, 0, &n); - if ( n!=3 ) error("Expected three sample names with -t\n"); - args.trios[0].imother = bcf_hdr_id2int(args.hdr, BCF_DT_SAMPLE, list[0]); - args.trios[0].ifather = bcf_hdr_id2int(args.hdr, BCF_DT_SAMPLE, list[1]); - args.trios[0].ichild = bcf_hdr_id2int(args.hdr, BCF_DT_SAMPLE, list[2]); - for (i=0; ierrcode ) error("TODO: Unchecked error (%d), exiting\n",line->errcode); - bcf_write1(args.out_fh, args.hdr, line); - } - } - - - fprintf(stderr,"# [1]nOK\t[2]nBad\t[3]nSkipped\t[4]Trio\n"); - for (i=0; inok,trio->nbad,args.nrec-(trio->nok+trio->nbad), - bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, trio->imother), - bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, trio->ifather), - bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, trio->ichild) - ); - } - free(args.gt_arr); - free(args.trios); - regitr_destroy(args.itr); - regitr_destroy(args.itr_ori); - regidx_destroy(args.rules); - bcf_sr_destroy(args.sr); - if ( hts_close(args.out_fh)!=0 ) error("Error: close failed\n"); - return 0; -} - -static void warn_ploidy(bcf1_t *rec) -{ - static int warned = 0; - if ( warned ) return; - fprintf(stderr,"Incorrect ploidy at %s:%d, skipping the trio. (This warning is printed only once.)\n", bcf_seqname(args.hdr,rec),rec->pos+1); - warned = 1; -} - -bcf1_t *process(bcf1_t *rec) -{ - bcf1_t *dflt = args.mode&MODE_LIST_GOOD ? rec : NULL; - args.nrec++; - - if ( rec->n_allele > 63 ) return dflt; // we use 64bit bitmask below - - int ngt = bcf_get_genotypes(args.hdr, rec, &args.gt_arr, &args.ngt_arr); - if ( ngt<0 ) return dflt; - if ( ngt!=2*bcf_hdr_nsamples(args.hdr) && ngt!=bcf_hdr_nsamples(args.hdr) ) return dflt; - ngt /= bcf_hdr_nsamples(args.hdr); - - int itr_set = regidx_overlap(args.rules, bcf_seqname(args.hdr,rec),rec->pos,rec->pos, args.itr_ori); - - int i, has_bad = 0, needs_update = 0; - for (i=0; iimother]; - b = ngt==2 ? args.gt_arr[ngt*trio->imother+1] : bcf_int32_vector_end; - c = args.gt_arr[ngt*trio->ifather]; - d = ngt==2 ? args.gt_arr[ngt*trio->ifather+1] : bcf_int32_vector_end; - e = args.gt_arr[ngt*trio->ichild]; - f = ngt==2 ? args.gt_arr[ngt*trio->ichild+1] : bcf_int32_vector_end; - - // skip sites with missing data in child - if ( bcf_gt_is_missing(e) || bcf_gt_is_missing(f) ) continue; - - uint64_t mother = 0, father = 0,child1,child2; - - int is_ok = 0; - if ( !itr_set ) - { - if ( f==bcf_int32_vector_end ) { warn_ploidy(rec); continue; } - - // All M,F,C genotypes are diploid. Missing data are considered consistent. - child1 = 1<mal || !rule->fal ) continue; // wrong rule (haploid), but this is a diploid GT - if ( !mother ) mother = child1|child2; - if ( !father ) father = child1|child2; - if ( (mother&child1 && father&child2) || (mother&child2 && father&child1) ) is_ok = 1; - continue; - } - if ( rule->mal ) - { - if ( mother && !(child1&mother) ) continue; - } - if ( rule->fal ) - { - if ( father && !(child1&father) ) continue; - } - is_ok = 1; - } - } - if ( is_ok ) - { - trio->nok++; - } - else - { - trio->nbad++; - has_bad = 1; - if ( args.mode&MODE_DELETE ) - { - args.gt_arr[ngt*trio->imother] = bcf_gt_missing; - if ( b!=bcf_int32_vector_end ) args.gt_arr[ngt*trio->imother+1] = bcf_gt_missing; // should be always true - args.gt_arr[ngt*trio->ifather] = bcf_gt_missing; - if ( d!=bcf_int32_vector_end ) args.gt_arr[ngt*trio->ifather+1] = bcf_gt_missing; - args.gt_arr[ngt*trio->ichild] = bcf_gt_missing; - if ( f!=bcf_int32_vector_end ) args.gt_arr[ngt*trio->ichild+1] = bcf_gt_missing; - needs_update = 1; - } - } - } - - if ( needs_update && bcf_update_genotypes(args.hdr,rec,args.gt_arr,ngt*bcf_hdr_nsamples(args.hdr)) ) - error("Could not update GT field at %s:%d\n", bcf_seqname(args.hdr,rec),rec->pos+1); - - if ( args.mode&MODE_DELETE ) return rec; - if ( args.mode&MODE_LIST_GOOD ) return has_bad ? NULL : rec; - if ( args.mode&MODE_LIST_BAD ) return has_bad ? rec : NULL; - - return NULL; -} - diff --git a/bcftools/plugins/mendelian.c.pysam.c b/bcftools/plugins/mendelian.c.pysam.c deleted file mode 100644 index 904587f..0000000 --- a/bcftools/plugins/mendelian.c.pysam.c +++ /dev/null @@ -1,568 +0,0 @@ -#include "bcftools.pysam.h" - -/* The MIT License - - Copyright (c) 2015 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for isatty -#include "bcftools.h" -#include "regidx.h" - -#define MODE_COUNT 1 -#define MODE_LIST_GOOD 2 -#define MODE_LIST_BAD 4 -#define MODE_DELETE 8 - -typedef struct -{ - int nok, nbad; - int imother,ifather,ichild; -} -trio_t; - -typedef struct -{ - int mpl, fpl, cpl; // ploidies - mother, father, child - int mal, fal; // expect an allele from mother and father -} -rule_t; - -typedef struct _args_t -{ - regidx_t *rules; - regitr_t *itr, *itr_ori; - bcf_hdr_t *hdr; - htsFile *out_fh; - int32_t *gt_arr; - int mode; - int ngt_arr, nrec; - trio_t *trios; - int ntrios; - int output_type; - char *output_fname; - bcf_srs_t *sr; -} -args_t; - -static args_t args; -static int parse_rules(const char *line, char **chr_beg, char **chr_end, uint32_t *beg, uint32_t *end, void *payload, void *usr); -static bcf1_t *process(bcf1_t *rec); - -const char *about(void) -{ - return "Count Mendelian consistent / inconsistent genotypes.\n"; -} - -typedef struct -{ - const char *alias, *about, *rules; -} -rules_predef_t; - -static rules_predef_t rules_predefs[] = -{ - { .alias = "GRCh37", - .about = "Human Genome reference assembly GRCh37 / hg19, both chr naming conventions", - .rules = - " X:1-60000 M/M + F > M\n" - " X:1-60000 M/M + F > M/F\n" - " X:2699521-154931043 M/M + F > M\n" - " X:2699521-154931043 M/M + F > M/F\n" - " Y:1-59373566 . + F > F\n" - " MT:1-16569 M + F > M\n" - "\n" - " chrX:1-60000 M/M + F > M\n" - " chrX:1-60000 M/M + F > M/F\n" - " chrX:2699521-154931043 M/M + F > M\n" - " chrX:2699521-154931043 M/M + F > M/F\n" - " chrY:1-59373566 . + F > F\n" - " chrM:1-16569 M + F > M\n" - }, - { .alias = "GRCh38", - .about = "Human Genome reference assembly GRCh38 / hg38, both chr naming conventions", - .rules = - " X:1-9999 M/M + F > M\n" - " X:1-9999 M/M + F > M/F\n" - " X:2781480-155701381 M/M + F > M\n" - " X:2781480-155701381 M/M + F > M/F\n" - " Y:1-57227415 . + F > F\n" - " MT:1-16569 M + F > M\n" - "\n" - " chrX:1-9999 M/M + F > M\n" - " chrX:1-9999 M/M + F > M/F\n" - " chrX:2781480-155701381 M/M + F > M\n" - " chrX:2781480-155701381 M/M + F > M/F\n" - " chrY:1-57227415 . + F > F\n" - " chrM:1-16569 M + F > M\n" - }, - { - .alias = NULL, - .about = NULL, - .rules = NULL, - } -}; - - -const char *usage(void) -{ - return - "\n" - "About: Count Mendelian consistent / inconsistent genotypes.\n" - "Usage: bcftools +mendelian [Options]\n" - "Options:\n" - " -c, --count count the number of consistent sites\n" - " -d, --delete delete inconsistent genotypes (set to \"./.\")\n" - " -l, --list [+x] list consistent (+) or inconsistent (x) sites\n" - " -o, --output write output to a file [standard output]\n" - " -O, --output-type 'b' compressed BCF; 'u' uncompressed BCF; 'z' compressed VCF; 'v' uncompressed VCF [v]\n" - " -r, --rules [?] predefined rules, 'list' to print available settings, append '?' for details\n" - " -R, --rules-file inheritance rules, see example below\n" - " -t, --trio names of mother, father and the child\n" - " -T, --trio-file list of trios, one per line\n" - "\n" - "Example:\n" - " # Default inheritance patterns, override with -r\n" - " # region mothernal_ploidy + paternal > offspring\n" - " X:1-60000 M/M + F > M\n" - " X:1-60000 M/M + F > M/F\n" - " X:2699521-154931043 M/M + F > M\n" - " X:2699521-154931043 M/M + F > M/F\n" - " Y:1-59373566 . + F > F\n" - " MT:1-16569 M + F > M\n" - "\n" - " bcftools +mendelian in.vcf -t Mother,Father,Child -c\n" - "\n"; -} - -regidx_t *init_rules(args_t *args, char *alias) -{ - const rules_predef_t *rules = rules_predefs; - if ( !alias ) alias = "GRCh37"; - - int detailed = 0, len = strlen(alias); - if ( alias[len-1]=='?' ) { detailed = 1; alias[len-1] = 0; } - - while ( rules->alias && strcasecmp(alias,rules->alias) ) rules++; - - if ( !rules->alias ) - { - fprintf(bcftools_stderr,"\nPRE-DEFINED INHERITANCE RULES\n\n"); - fprintf(bcftools_stderr," * Columns are: CHROM:BEG-END MATERNAL_PLOIDY + PATERNAL_PLOIDY > OFFSPRING\n"); - fprintf(bcftools_stderr," * Coordinates are 1-based inclusive.\n\n"); - rules = rules_predefs; - while ( rules->alias ) - { - fprintf(bcftools_stderr,"%s\n .. %s\n\n", rules->alias,rules->about); - if ( detailed ) - fprintf(bcftools_stderr,"%s\n", rules->rules); - rules++; - } - fprintf(bcftools_stderr,"Run as --rules (e.g. --rules GRCh37).\n"); - fprintf(bcftools_stderr,"To see the detailed ploidy definition, append a question mark (e.g. --rules GRCh37?).\n"); - fprintf(bcftools_stderr,"\n"); - exit(-1); - } - else if ( detailed ) - { - fprintf(bcftools_stderr,"%s", rules->rules); - exit(-1); - } - return regidx_init_string(rules->rules, parse_rules, NULL, sizeof(rule_t), &args); -} - -static int parse_rules(const char *line, char **chr_beg, char **chr_end, uint32_t *beg, uint32_t *end, void *payload, void *usr) -{ - // e.g. "Y:1-59373566 . + F > . # daugther" - - // eat any leading spaces - char *ss = (char*) line; - while ( *ss && isspace(*ss) ) ss++; - if ( !*ss ) return -1; // skip empty lines - - // chromosome name, beg, end - char *tmp, *se = ss; - while ( se[1] && !isspace(se[1]) ) se++; - while ( se > ss && isdigit(*se) ) se--; - if ( *se!='-' ) error("Could not parse the region: %s\n", line); - *end = strtol(se+1, &tmp, 10) - 1; - if ( tmp==se+1 ) error("Could not parse the region:%s\n",line); - while ( se > ss && *se!=':' ) se--; - *beg = strtol(se+1, &tmp, 10) - 1; - if ( tmp==se+1 ) error("Could not parse the region:%s\n",line); - - *chr_beg = ss; - *chr_end = se-1; - - // skip region - while ( *ss && !isspace(*ss) ) ss++; - while ( *ss && isspace(*ss) ) ss++; - - rule_t *rule = (rule_t*) payload; - memset(rule, 0, sizeof(rule_t)); - - // mothernal ploidy - se = ss; - while ( *se && !isspace(*se) ) se++; - int err = 0; - if ( se - ss == 1 ) - { - if ( *ss=='M' ) rule->mpl = 1; - else if ( *ss=='.' ) rule->mpl = 0; - else err = 1; - } - else if ( se - ss == 3 ) - { - if ( !strncmp(ss,"M/M",3) ) rule->mpl = 2; - else err = 1; - } - else err = 1; - if ( err ) error("Could not parse the mothernal ploidy, only \"M\", \"M/M\" and \".\" currently supported: %s\n",line); - - // skip "+" - while ( *se && isspace(*se) ) se++; - if ( *se != '+' ) error("Could not parse the line: %s\n",line); - se++; - while ( *se && isspace(*se) ) se++; - - // paternal ploidy - ss = se; - while ( *se && !isspace(*se) ) se++; - if ( se - ss == 1 ) - { - if ( *ss=='F' ) rule->fpl = 1; - else err = 1; - } - else err = 1; - if ( err ) error("Could not parse the paternal ploidy, only \"F\" is currently supported: %s [%s]\n",line, ss); - - // skip ">" - while ( *se && isspace(*se) ) se++; - if ( *se != '>' ) error("Could not parse the line: %s\n",line); - se++; - while ( *se && isspace(*se) ) se++; - - // ploidy in offspring - ss = se; - while ( *se && !isspace(*se) ) se++; - if ( se - ss == 3 ) - { - if ( !strncmp(ss,"M/F",3) ) { rule->cpl = 2; rule->fal = 1; rule->mal = 1; } - else err = 1; - } - else if ( se - ss == 1 ) - { - if ( *ss=='F' ) { rule->cpl = 1; rule->fal = 1; } - else if ( *ss=='M' ) { rule->cpl = 1; rule->mal = 1; } - else err = 1; - } - else err = 1; - if ( err ) error("Could not parse the offspring's ploidy, only \"M\", \"F\" or \"M/F\" is currently supported: %s\n",line); - - return 0; -} - -int run(int argc, char **argv) -{ - char *trio_samples = NULL, *trio_file = NULL, *rules_fname = NULL, *rules_string = NULL; - memset(&args,0,sizeof(args_t)); - args.mode = 0; - args.output_fname = "-"; - - static struct option loptions[] = - { - {"trio",1,0,'t'}, - {"trio-file",1,0,'T'}, - {"delete",0,0,'d'}, - {"list",1,0,'l'}, - {"count",0,0,'c'}, - {"rules",1,0,'r'}, - {"rules-file",1,0,'R'}, - {"output",required_argument,NULL,'o'}, - {"output-type",required_argument,NULL,'O'}, - {0,0,0,0} - }; - int c; - while ((c = getopt_long(argc, argv, "?ht:T:l:cdr:R:o:O:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'o': args.output_fname = optarg; break; - case 'O': - switch (optarg[0]) { - case 'b': args.output_type = FT_BCF_GZ; break; - case 'u': args.output_type = FT_BCF; break; - case 'z': args.output_type = FT_VCF_GZ; break; - case 'v': args.output_type = FT_VCF; break; - default: error("The output type \"%s\" not recognised\n", optarg); - }; - break; - case 'R': rules_fname = optarg; break; - case 'r': rules_string = optarg; break; - case 'd': args.mode |= MODE_DELETE; break; - case 'c': args.mode |= MODE_COUNT; break; - case 'l': - if ( !strcmp("+",optarg) ) args.mode |= MODE_LIST_GOOD; - else if ( !strcmp("x",optarg) ) args.mode |= MODE_LIST_BAD; - else error("The argument not recognised: --list %s\n", optarg); - break; - case 't': trio_samples = optarg; break; - case 'T': trio_file = optarg; break; - case 'h': - case '?': - default: error("%s",usage()); break; - } - } - if ( rules_fname ) - args.rules = regidx_init(rules_fname, parse_rules, NULL, sizeof(rule_t), &args); - else - args.rules = init_rules(&args, rules_string); - if ( !args.rules ) return -1; - args.itr = regitr_init(args.rules); - args.itr_ori = regitr_init(args.rules); - - char *fname = NULL; - if ( optind>=argc || argv[optind][0]=='-' ) - { - if ( !isatty(fileno((FILE *)stdin)) ) fname = "-"; // reading from stdin - else error("%s",usage()); - } - else - fname = argv[optind]; - - if ( !trio_samples && !trio_file ) error("Expected the -t/T option\n"); - if ( !args.mode ) error("Expected one of the -c, -d or -l options\n"); - if ( args.mode&MODE_DELETE && !(args.mode&(MODE_LIST_GOOD|MODE_LIST_BAD)) ) args.mode |= MODE_LIST_GOOD|MODE_LIST_BAD; - - args.sr = bcf_sr_init(); - if ( !bcf_sr_add_reader(args.sr, fname) ) error("Failed to open %s: %s\n", fname,bcf_sr_strerror(args.sr->errnum)); - args.hdr = bcf_sr_get_header(args.sr, 0); - args.out_fh = hts_open(args.output_fname,hts_bcf_wmode(args.output_type)); - if ( args.out_fh == NULL ) error("Can't write to \"%s\": %s\n", args.output_fname, strerror(errno)); - bcf_hdr_write(args.out_fh, args.hdr); - - - int i, n = 0; - char **list; - if ( trio_samples ) - { - args.ntrios = 1; - args.trios = (trio_t*) calloc(1,sizeof(trio_t)); - list = hts_readlist(trio_samples, 0, &n); - if ( n!=3 ) error("Expected three sample names with -t\n"); - args.trios[0].imother = bcf_hdr_id2int(args.hdr, BCF_DT_SAMPLE, list[0]); - args.trios[0].ifather = bcf_hdr_id2int(args.hdr, BCF_DT_SAMPLE, list[1]); - args.trios[0].ichild = bcf_hdr_id2int(args.hdr, BCF_DT_SAMPLE, list[2]); - for (i=0; ierrcode ) error("TODO: Unchecked error (%d), exiting\n",line->errcode); - bcf_write1(args.out_fh, args.hdr, line); - } - } - - - fprintf(bcftools_stderr,"# [1]nOK\t[2]nBad\t[3]nSkipped\t[4]Trio\n"); - for (i=0; inok,trio->nbad,args.nrec-(trio->nok+trio->nbad), - bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, trio->imother), - bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, trio->ifather), - bcf_hdr_int2id(args.hdr, BCF_DT_SAMPLE, trio->ichild) - ); - } - free(args.gt_arr); - free(args.trios); - regitr_destroy(args.itr); - regitr_destroy(args.itr_ori); - regidx_destroy(args.rules); - bcf_sr_destroy(args.sr); - if ( hts_close(args.out_fh)!=0 ) error("Error: close failed\n"); - return 0; -} - -static void warn_ploidy(bcf1_t *rec) -{ - static int warned = 0; - if ( warned ) return; - fprintf(bcftools_stderr,"Incorrect ploidy at %s:%d, skipping the trio. (This warning is printed only once.)\n", bcf_seqname(args.hdr,rec),rec->pos+1); - warned = 1; -} - -bcf1_t *process(bcf1_t *rec) -{ - bcf1_t *dflt = args.mode&MODE_LIST_GOOD ? rec : NULL; - args.nrec++; - - if ( rec->n_allele > 63 ) return dflt; // we use 64bit bitmask below - - int ngt = bcf_get_genotypes(args.hdr, rec, &args.gt_arr, &args.ngt_arr); - if ( ngt<0 ) return dflt; - if ( ngt!=2*bcf_hdr_nsamples(args.hdr) && ngt!=bcf_hdr_nsamples(args.hdr) ) return dflt; - ngt /= bcf_hdr_nsamples(args.hdr); - - int itr_set = regidx_overlap(args.rules, bcf_seqname(args.hdr,rec),rec->pos,rec->pos, args.itr_ori); - - int i, has_bad = 0, needs_update = 0; - for (i=0; iimother]; - b = ngt==2 ? args.gt_arr[ngt*trio->imother+1] : bcf_int32_vector_end; - c = args.gt_arr[ngt*trio->ifather]; - d = ngt==2 ? args.gt_arr[ngt*trio->ifather+1] : bcf_int32_vector_end; - e = args.gt_arr[ngt*trio->ichild]; - f = ngt==2 ? args.gt_arr[ngt*trio->ichild+1] : bcf_int32_vector_end; - - // skip sites with missing data in child - if ( bcf_gt_is_missing(e) || bcf_gt_is_missing(f) ) continue; - - uint64_t mother = 0, father = 0,child1,child2; - - int is_ok = 0; - if ( !itr_set ) - { - if ( f==bcf_int32_vector_end ) { warn_ploidy(rec); continue; } - - // All M,F,C genotypes are diploid. Missing data are considered consistent. - child1 = 1<mal || !rule->fal ) continue; // wrong rule (haploid), but this is a diploid GT - if ( !mother ) mother = child1|child2; - if ( !father ) father = child1|child2; - if ( (mother&child1 && father&child2) || (mother&child2 && father&child1) ) is_ok = 1; - continue; - } - if ( rule->mal ) - { - if ( mother && !(child1&mother) ) continue; - } - if ( rule->fal ) - { - if ( father && !(child1&father) ) continue; - } - is_ok = 1; - } - } - if ( is_ok ) - { - trio->nok++; - } - else - { - trio->nbad++; - has_bad = 1; - if ( args.mode&MODE_DELETE ) - { - args.gt_arr[ngt*trio->imother] = bcf_gt_missing; - if ( b!=bcf_int32_vector_end ) args.gt_arr[ngt*trio->imother+1] = bcf_gt_missing; // should be always true - args.gt_arr[ngt*trio->ifather] = bcf_gt_missing; - if ( d!=bcf_int32_vector_end ) args.gt_arr[ngt*trio->ifather+1] = bcf_gt_missing; - args.gt_arr[ngt*trio->ichild] = bcf_gt_missing; - if ( f!=bcf_int32_vector_end ) args.gt_arr[ngt*trio->ichild+1] = bcf_gt_missing; - needs_update = 1; - } - } - } - - if ( needs_update && bcf_update_genotypes(args.hdr,rec,args.gt_arr,ngt*bcf_hdr_nsamples(args.hdr)) ) - error("Could not update GT field at %s:%d\n", bcf_seqname(args.hdr,rec),rec->pos+1); - - if ( args.mode&MODE_DELETE ) return rec; - if ( args.mode&MODE_LIST_GOOD ) return has_bad ? NULL : rec; - if ( args.mode&MODE_LIST_BAD ) return has_bad ? rec : NULL; - - return NULL; -} - diff --git a/bcftools/plugins/missing2ref.c b/bcftools/plugins/missing2ref.c deleted file mode 100644 index c4fb6ab..0000000 --- a/bcftools/plugins/missing2ref.c +++ /dev/null @@ -1,144 +0,0 @@ -/* plugins/missing2ref.c -- sets missing genotypes to reference allele. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include -#include - -bcf_hdr_t *in_hdr, *out_hdr; -int32_t *gts = NULL, mgts = 0; -int *arr = NULL, marr = 0; -uint64_t nchanged = 0; -int new_gt = bcf_gt_unphased(0); -int use_major = 0; - -const char *about(void) -{ - return "Set missing genotypes (\"./.\") to ref or major allele (\"0/0\" or \"0|0\").\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Set missing genotypes\n" - "Usage: bcftools +missing2ref [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -p, --phased Set to \"0|0\" \n" - " -m, --major Set to major allele \n" - "\n" - "Example:\n" - " bcftools +missing2ref in.vcf -- -p\n" - " bcftools +missing2ref in.vcf -- -p -m\n" - "\n"; -} - - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - int c; - static struct option loptions[] = - { - {"phased",0,0,'p'}, - {"major",0,0,'m'}, - {0,0,0,0} - }; - while ((c = getopt_long(argc, argv, "mp?h",loptions,NULL)) >= 0) - { - switch (c) - { - case 'p': new_gt = bcf_gt_phased(0); break; - case 'm': use_major = 1; break; - case 'h': - case '?': - default: fprintf(stderr,"%s", usage()); exit(1); break; - } - } - in_hdr = in; - out_hdr = out; - return 0; -} - -bcf1_t *process(bcf1_t *rec) -{ - int ngts = bcf_get_genotypes(in_hdr, rec, >s, &mgts); - int i, changed = 0; - - // Calculating allele frequency for each allele and determining major allele - // only do this if use_major is true - int majorAllele = -1; - int maxAC = -1; - int an = 0; - if(use_major == 1){ - hts_expand(int,rec->n_allele,marr,arr); - int ret = bcf_calc_ac(in_hdr,rec,arr,BCF_UN_FMT); - if(ret > 0){ - for(i=0; i < rec->n_allele; ++i){ - an += arr[i]; - if(*(arr+i) > maxAC){ - maxAC = *(arr+i); - majorAllele = i; - } - } - } - else{ - fprintf(stderr,"Warning: Could not calculate allele count at position %d\n", rec->pos); - exit(1); - } - - // replacing new_gt by major allele - if(bcf_gt_is_phased(new_gt)) - new_gt = bcf_gt_phased(majorAllele); - else - new_gt = bcf_gt_unphased(majorAllele); - } - - // replace gts - for (i=0; i - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include -#include - -bcf_hdr_t *in_hdr, *out_hdr; -int32_t *gts = NULL, mgts = 0; -int *arr = NULL, marr = 0; -uint64_t nchanged = 0; -int new_gt = bcf_gt_unphased(0); -int use_major = 0; - -const char *about(void) -{ - return "Set missing genotypes (\"./.\") to ref or major allele (\"0/0\" or \"0|0\").\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Set missing genotypes\n" - "Usage: bcftools +missing2ref [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -p, --phased Set to \"0|0\" \n" - " -m, --major Set to major allele \n" - "\n" - "Example:\n" - " bcftools +missing2ref in.vcf -- -p\n" - " bcftools +missing2ref in.vcf -- -p -m\n" - "\n"; -} - - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - int c; - static struct option loptions[] = - { - {"phased",0,0,'p'}, - {"major",0,0,'m'}, - {0,0,0,0} - }; - while ((c = getopt_long(argc, argv, "mp?h",loptions,NULL)) >= 0) - { - switch (c) - { - case 'p': new_gt = bcf_gt_phased(0); break; - case 'm': use_major = 1; break; - case 'h': - case '?': - default: fprintf(bcftools_stderr,"%s", usage()); exit(1); break; - } - } - in_hdr = in; - out_hdr = out; - return 0; -} - -bcf1_t *process(bcf1_t *rec) -{ - int ngts = bcf_get_genotypes(in_hdr, rec, >s, &mgts); - int i, changed = 0; - - // Calculating allele frequency for each allele and determining major allele - // only do this if use_major is true - int majorAllele = -1; - int maxAC = -1; - int an = 0; - if(use_major == 1){ - hts_expand(int,rec->n_allele,marr,arr); - int ret = bcf_calc_ac(in_hdr,rec,arr,BCF_UN_FMT); - if(ret > 0){ - for(i=0; i < rec->n_allele; ++i){ - an += arr[i]; - if(*(arr+i) > maxAC){ - maxAC = *(arr+i); - majorAllele = i; - } - } - } - else{ - fprintf(bcftools_stderr,"Warning: Could not calculate allele count at position %d\n", rec->pos); - exit(1); - } - - // replacing new_gt by major allele - if(bcf_gt_is_phased(new_gt)) - new_gt = bcf_gt_phased(majorAllele); - else - new_gt = bcf_gt_unphased(majorAllele); - } - - // replace gts - for (i=0; i - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -/* - Prune sites by missingness, LD - - See calc_ld() in vcfbuf.c for the actual LD calculation - -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "vcfbuf.h" -#include "filter.h" - -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -typedef struct -{ - filter_t *filter; - char *filter_str, *af_tag; - int filter_logic; // one of FLT_INCLUDE/FLT_EXCLUDE (-i or -e) - vcfbuf_t *vcfbuf; - int argc, region_is_file, target_is_file, output_type, filter_r2_id, rand_missing, nsites, ld_win; - char **argv, *region, *target, *fname, *output_fname, *info_pos, *info_r2, *filter_r2; - htsFile *out_fh; - bcf_hdr_t *hdr; - bcf_srs_t *sr; - double max_ld; -} -args_t; - -const char *about(void) -{ - return "Prune sites by missingness, linkage disequilibrium\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Prune sites by missingness or linkage disequilibrium.\n" - "\n" - "Usage: bcftools +prune [Options]\n" - "Plugin options:\n" - " --AF-tag STR use this tag with -n to determine allele frequency\n" - " -a, --annotate-info STR add INFO/STR_POS and STR_R2 annotation: an upstream site with the biggest r2 value\n" - " -e, --exclude EXPR exclude sites for which the expression is true\n" - " -f, --set-filter STR annotate FILTER column with STR instead of discarding the site\n" - " -i, --include EXPR include only sites for which the expression is true\n" - " -l, --max-LD R2 remove sites with r2 bigger than R2 within within the -w window\n" - " -n, --nsites-per-win N keep at most N sites in the -w window, removing sites with small AF first\n" - " -o, --output FILE write output to the FILE [standard output]\n" - " -O, --output-type b|u|z|v b: compressed BCF, u: uncompressed BCF, z: compressed VCF, v: uncompressed VCF [v]\n" - " --randomize-missing replace missing data with randomly assigned genotype based on site's allele frequency\n" - " -r, --regions REGION restrict to comma-separated list of regions\n" - " -R, --regions-file FILE restrict to regions listed in a file\n" - " -t, --targets REGION similar to -r but streams rather than index-jumps\n" - " -T, --targets-file FILE similar to -R but streams rather than index-jumps\n" - " -w, --window INT[bp|kb] the window size of INT sites/bp/kb for the -n/-l options [100kb]\n" - "Examples:\n" - " # Discard records with r2 bigger than 0.6 in a window of 1000 sites\n" - " bcftools +prune -l 0.6 -w 1000 input.bcf -Ob -o output.bcf\n" - "\n" - " # Set FILTER (but do not discard) records with r2 bigger than 0.4 in the default window of 100kb\n" - " bcftools +prune -l 0.4 -f MAX_R2 input.bcf -Ob -o output.bcf\n" - "\n" - " # Annotate INFO field of all records with maximum r2 in a window of 1000 sites\n" - " bcftools +prune -l 0.6 -w 1000 -f MAX_R2 input.bcf -Ob -o output.bcf\n" - "\n" - " # Discard records with r2 bigger than 0.6, first removing records with more than 2% of genotypes missing\n" - " bcftools +prune -l 0.6 -e'F_MISSING>=0.02' input.bcf -Ob -o output.bcf\n" - "\n"; -} - -static void init_data(args_t *args) -{ - args->sr = bcf_sr_init(); - if ( args->region ) - { - args->sr->require_index = 1; - if ( bcf_sr_set_regions(args->sr, args->region, args->region_is_file)<0 ) error("Failed to read the regions: %s\n",args->region); - } - if ( args->target && bcf_sr_set_targets(args->sr, args->target, args->target_is_file, 0)<0 ) error("Failed to read the targets: %s\n",args->target); - if ( !bcf_sr_add_reader(args->sr,args->fname) ) error("Error: %s\n", bcf_sr_strerror(args->sr->errnum)); - args->hdr = bcf_sr_get_header(args->sr,0); - - args->out_fh = hts_open(args->output_fname,hts_bcf_wmode(args->output_type)); - if ( args->out_fh == NULL ) error("Can't write to \"%s\": %s\n", args->output_fname, strerror(errno)); - if ( args->filter_r2 ) - { - bcf_hdr_printf(args->hdr,"##FILTER=%e upstream within %d%s\">",args->filter_r2,args->max_ld, - args->ld_win < 0 ? -args->ld_win/1000 : args->ld_win, - args->ld_win < 0 ? "kb" : " sites"); - } - if ( args->info_r2 ) - { - bcf_hdr_printf(args->hdr,"##INFO=%e upstream\">",args->info_pos,args->max_ld); - bcf_hdr_printf(args->hdr,"##INFO=%e upstream\">",args->info_r2,args->max_ld); - } - bcf_hdr_write(args->out_fh, args->hdr); - if ( args->filter_r2 ) - args->filter_r2_id = bcf_hdr_id2int(args->hdr, BCF_DT_ID, args->filter_r2); - - args->vcfbuf = vcfbuf_init(args->hdr, args->ld_win); - vcfbuf_set_opt(args->vcfbuf,double,VCFBUF_LD_MAX,args->max_ld); - if ( args->nsites ) vcfbuf_set_opt(args->vcfbuf,int,VCFBUF_NSITES,args->nsites); - if ( args->af_tag ) vcfbuf_set_opt(args->vcfbuf,char*,VCFBUF_AF_TAG,args->af_tag); - if ( args->rand_missing ) vcfbuf_set_opt(args->vcfbuf,int,VCFBUF_RAND_MISSING,1); - vcfbuf_set_opt(args->vcfbuf,int,VCFBUF_SKIP_FILTER,args->filter_r2 ? 1 : 0); - - if ( args->filter_str ) - args->filter = filter_init(args->hdr, args->filter_str); -} -static void destroy_data(args_t *args) -{ - if ( args->filter ) - filter_destroy(args->filter); - hts_close(args->out_fh); - vcfbuf_destroy(args->vcfbuf); - bcf_sr_destroy(args->sr); - free(args->info_pos); - free(args->info_r2); - free(args); -} -static void flush(args_t *args, int flush_all) -{ - bcf1_t *rec; - while ( (rec = vcfbuf_flush(args->vcfbuf, flush_all)) ) - bcf_write1(args->out_fh, args->hdr, rec); -} -static void process(args_t *args) -{ - bcf1_t *rec = bcf_sr_get_line(args->sr,0); - if ( args->filter ) - { - int ret = filter_test(args->filter, rec, NULL); - if ( args->filter_logic==FLT_INCLUDE ) { if ( !ret ) return; } - else if ( ret ) return; - } - bcf_sr_t *sr = bcf_sr_get_reader(args->sr, 0); - if ( args->max_ld ) - { - double ld_val; - bcf1_t *ld_rec = vcfbuf_max_ld(args->vcfbuf, rec, &ld_val); - if ( ld_rec && ld_val > args->max_ld ) - { - if ( !args->filter_r2 ) return; - bcf_add_filter(args->hdr, rec, args->filter_r2_id); - } - if ( ld_rec && args->info_r2 ) - { - float tmp = ld_val; - int32_t tmp_pos = ld_rec->pos + 1; - bcf_update_info_float(args->hdr, rec, args->info_r2, &tmp, 1); - bcf_update_info_int32(args->hdr, rec, args->info_pos, &tmp_pos, 1); - } - } - sr->buffer[0] = vcfbuf_push(args->vcfbuf, rec, 1); - flush(args,0); -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->argc = argc; args->argv = argv; - args->output_type = FT_VCF; - args->output_fname = "-"; - args->ld_win = -100e3; - static struct option loptions[] = - { - {"randomize-missing",no_argument,NULL,1}, - {"AF-tag",required_argument,NULL,2}, - {"exclude",required_argument,NULL,'e'}, - {"include",required_argument,NULL,'i'}, - {"annotate-info",required_argument,NULL,'a'}, - {"set-filter",required_argument,NULL,'f'}, - {"max-LD",required_argument,NULL,'l'}, - {"regions",required_argument,NULL,'r'}, - {"regions-file",required_argument,NULL,'R'}, - {"output",required_argument,NULL,'o'}, - {"output-type",required_argument,NULL,'O'}, - {"nsites-per-win",required_argument,NULL,'n'}, - {"window",required_argument,NULL,'w'}, - {NULL,0,NULL,0} - }; - int c; - char *tmp; - while ((c = getopt_long(argc, argv, "vr:R:t:T:l:o:O:a:f:i:e:n:w:",loptions,NULL)) >= 0) - { - switch (c) - { - case 1 : args->rand_missing = 1; break; - case 2 : args->af_tag = optarg; break; - case 'e': args->filter_str = optarg; args->filter_logic |= FLT_EXCLUDE; break; - case 'i': args->filter_str = optarg; args->filter_logic |= FLT_INCLUDE; break; - case 'a': - { - int l = strlen(optarg); - args->info_pos = (char*)malloc(l+5); - args->info_r2 = (char*)malloc(l+5); - sprintf(args->info_pos,"%s_POS", optarg); - sprintf(args->info_r2,"%s_R2", optarg); - } - break; - case 'f': args->filter_r2 = optarg; break; - case 'n': - args->nsites = strtod(optarg,&tmp); - if ( tmp==optarg || *tmp ) error("Could not parse: --nsites-per-win %s\n", optarg); - break; - case 'l': - args->max_ld = strtod(optarg,&tmp); - if ( tmp==optarg || *tmp ) error("Could not parse: --max-LD %s\n", optarg); - break; - case 'w': - args->ld_win = strtod(optarg,&tmp); - if ( !*tmp ) break; - if ( tmp==optarg ) error("Could not parse: --window %s\n", optarg); - else if ( !strcasecmp("bp",tmp) ) args->ld_win *= -1; - else if ( !strcasecmp("kb",tmp) ) args->ld_win *= -1000; - else error("Could not parse: --window %s\n", optarg); - break; - case 'T': args->target_is_file = 1; - case 't': args->target = optarg; break; - case 'R': args->region_is_file = 1; - case 'r': args->region = optarg; break; - case 'o': args->output_fname = optarg; break; - case 'O': - switch (optarg[0]) { - case 'b': args->output_type = FT_BCF_GZ; break; - case 'u': args->output_type = FT_BCF; break; - case 'z': args->output_type = FT_VCF_GZ; break; - case 'v': args->output_type = FT_VCF; break; - default: error("The output type \"%s\" not recognised\n", optarg); - } - break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - if ( args->filter_logic == (FLT_EXCLUDE|FLT_INCLUDE) ) error("Only one of -i or -e can be given.\n"); - if ( !args->max_ld && !args->nsites ) error("%sError: Expected --max-LD, --nsites-per-win or both\n\n", usage_text()); - - if ( optind==argc ) - { - if ( !isatty(fileno((FILE *)stdin)) ) args->fname = "-"; // reading from stdin - else { error("%s",usage_text()); } - } - else if ( optind+1!=argc ) error("%s",usage_text()); - else args->fname = argv[optind]; - - init_data(args); - - while ( bcf_sr_next_line(args->sr) ) process(args); - flush(args,1); - - destroy_data(args); - return 0; -} - - diff --git a/bcftools/plugins/prune.c.pysam.c b/bcftools/plugins/prune.c.pysam.c deleted file mode 100644 index 55f16e4..0000000 --- a/bcftools/plugins/prune.c.pysam.c +++ /dev/null @@ -1,295 +0,0 @@ -#include "bcftools.pysam.h" - -/* - Copyright (C) 2017 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -/* - Prune sites by missingness, LD - - See calc_ld() in vcfbuf.c for the actual LD calculation - -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "vcfbuf.h" -#include "filter.h" - -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -typedef struct -{ - filter_t *filter; - char *filter_str, *af_tag; - int filter_logic; // one of FLT_INCLUDE/FLT_EXCLUDE (-i or -e) - vcfbuf_t *vcfbuf; - int argc, region_is_file, target_is_file, output_type, filter_r2_id, rand_missing, nsites, ld_win; - char **argv, *region, *target, *fname, *output_fname, *info_pos, *info_r2, *filter_r2; - htsFile *out_fh; - bcf_hdr_t *hdr; - bcf_srs_t *sr; - double max_ld; -} -args_t; - -const char *about(void) -{ - return "Prune sites by missingness, linkage disequilibrium\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Prune sites by missingness or linkage disequilibrium.\n" - "\n" - "Usage: bcftools +prune [Options]\n" - "Plugin options:\n" - " --AF-tag STR use this tag with -n to determine allele frequency\n" - " -a, --annotate-info STR add INFO/STR_POS and STR_R2 annotation: an upstream site with the biggest r2 value\n" - " -e, --exclude EXPR exclude sites for which the expression is true\n" - " -f, --set-filter STR annotate FILTER column with STR instead of discarding the site\n" - " -i, --include EXPR include only sites for which the expression is true\n" - " -l, --max-LD R2 remove sites with r2 bigger than R2 within within the -w window\n" - " -n, --nsites-per-win N keep at most N sites in the -w window, removing sites with small AF first\n" - " -o, --output FILE write output to the FILE [standard output]\n" - " -O, --output-type b|u|z|v b: compressed BCF, u: uncompressed BCF, z: compressed VCF, v: uncompressed VCF [v]\n" - " --randomize-missing replace missing data with randomly assigned genotype based on site's allele frequency\n" - " -r, --regions REGION restrict to comma-separated list of regions\n" - " -R, --regions-file FILE restrict to regions listed in a file\n" - " -t, --targets REGION similar to -r but streams rather than index-jumps\n" - " -T, --targets-file FILE similar to -R but streams rather than index-jumps\n" - " -w, --window INT[bp|kb] the window size of INT sites/bp/kb for the -n/-l options [100kb]\n" - "Examples:\n" - " # Discard records with r2 bigger than 0.6 in a window of 1000 sites\n" - " bcftools +prune -l 0.6 -w 1000 input.bcf -Ob -o output.bcf\n" - "\n" - " # Set FILTER (but do not discard) records with r2 bigger than 0.4 in the default window of 100kb\n" - " bcftools +prune -l 0.4 -f MAX_R2 input.bcf -Ob -o output.bcf\n" - "\n" - " # Annotate INFO field of all records with maximum r2 in a window of 1000 sites\n" - " bcftools +prune -l 0.6 -w 1000 -f MAX_R2 input.bcf -Ob -o output.bcf\n" - "\n" - " # Discard records with r2 bigger than 0.6, first removing records with more than 2% of genotypes missing\n" - " bcftools +prune -l 0.6 -e'F_MISSING>=0.02' input.bcf -Ob -o output.bcf\n" - "\n"; -} - -static void init_data(args_t *args) -{ - args->sr = bcf_sr_init(); - if ( args->region ) - { - args->sr->require_index = 1; - if ( bcf_sr_set_regions(args->sr, args->region, args->region_is_file)<0 ) error("Failed to read the regions: %s\n",args->region); - } - if ( args->target && bcf_sr_set_targets(args->sr, args->target, args->target_is_file, 0)<0 ) error("Failed to read the targets: %s\n",args->target); - if ( !bcf_sr_add_reader(args->sr,args->fname) ) error("Error: %s\n", bcf_sr_strerror(args->sr->errnum)); - args->hdr = bcf_sr_get_header(args->sr,0); - - args->out_fh = hts_open(args->output_fname,hts_bcf_wmode(args->output_type)); - if ( args->out_fh == NULL ) error("Can't write to \"%s\": %s\n", args->output_fname, strerror(errno)); - if ( args->filter_r2 ) - { - bcf_hdr_printf(args->hdr,"##FILTER=%e upstream within %d%s\">",args->filter_r2,args->max_ld, - args->ld_win < 0 ? -args->ld_win/1000 : args->ld_win, - args->ld_win < 0 ? "kb" : " sites"); - } - if ( args->info_r2 ) - { - bcf_hdr_printf(args->hdr,"##INFO=%e upstream\">",args->info_pos,args->max_ld); - bcf_hdr_printf(args->hdr,"##INFO=%e upstream\">",args->info_r2,args->max_ld); - } - bcf_hdr_write(args->out_fh, args->hdr); - if ( args->filter_r2 ) - args->filter_r2_id = bcf_hdr_id2int(args->hdr, BCF_DT_ID, args->filter_r2); - - args->vcfbuf = vcfbuf_init(args->hdr, args->ld_win); - vcfbuf_set_opt(args->vcfbuf,double,VCFBUF_LD_MAX,args->max_ld); - if ( args->nsites ) vcfbuf_set_opt(args->vcfbuf,int,VCFBUF_NSITES,args->nsites); - if ( args->af_tag ) vcfbuf_set_opt(args->vcfbuf,char*,VCFBUF_AF_TAG,args->af_tag); - if ( args->rand_missing ) vcfbuf_set_opt(args->vcfbuf,int,VCFBUF_RAND_MISSING,1); - vcfbuf_set_opt(args->vcfbuf,int,VCFBUF_SKIP_FILTER,args->filter_r2 ? 1 : 0); - - if ( args->filter_str ) - args->filter = filter_init(args->hdr, args->filter_str); -} -static void destroy_data(args_t *args) -{ - if ( args->filter ) - filter_destroy(args->filter); - hts_close(args->out_fh); - vcfbuf_destroy(args->vcfbuf); - bcf_sr_destroy(args->sr); - free(args->info_pos); - free(args->info_r2); - free(args); -} -static void flush(args_t *args, int flush_all) -{ - bcf1_t *rec; - while ( (rec = vcfbuf_flush(args->vcfbuf, flush_all)) ) - bcf_write1(args->out_fh, args->hdr, rec); -} -static void process(args_t *args) -{ - bcf1_t *rec = bcf_sr_get_line(args->sr,0); - if ( args->filter ) - { - int ret = filter_test(args->filter, rec, NULL); - if ( args->filter_logic==FLT_INCLUDE ) { if ( !ret ) return; } - else if ( ret ) return; - } - bcf_sr_t *sr = bcf_sr_get_reader(args->sr, 0); - if ( args->max_ld ) - { - double ld_val; - bcf1_t *ld_rec = vcfbuf_max_ld(args->vcfbuf, rec, &ld_val); - if ( ld_rec && ld_val > args->max_ld ) - { - if ( !args->filter_r2 ) return; - bcf_add_filter(args->hdr, rec, args->filter_r2_id); - } - if ( ld_rec && args->info_r2 ) - { - float tmp = ld_val; - int32_t tmp_pos = ld_rec->pos + 1; - bcf_update_info_float(args->hdr, rec, args->info_r2, &tmp, 1); - bcf_update_info_int32(args->hdr, rec, args->info_pos, &tmp_pos, 1); - } - } - sr->buffer[0] = vcfbuf_push(args->vcfbuf, rec, 1); - flush(args,0); -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->argc = argc; args->argv = argv; - args->output_type = FT_VCF; - args->output_fname = "-"; - args->ld_win = -100e3; - static struct option loptions[] = - { - {"randomize-missing",no_argument,NULL,1}, - {"AF-tag",required_argument,NULL,2}, - {"exclude",required_argument,NULL,'e'}, - {"include",required_argument,NULL,'i'}, - {"annotate-info",required_argument,NULL,'a'}, - {"set-filter",required_argument,NULL,'f'}, - {"max-LD",required_argument,NULL,'l'}, - {"regions",required_argument,NULL,'r'}, - {"regions-file",required_argument,NULL,'R'}, - {"output",required_argument,NULL,'o'}, - {"output-type",required_argument,NULL,'O'}, - {"nsites-per-win",required_argument,NULL,'n'}, - {"window",required_argument,NULL,'w'}, - {NULL,0,NULL,0} - }; - int c; - char *tmp; - while ((c = getopt_long(argc, argv, "vr:R:t:T:l:o:O:a:f:i:e:n:w:",loptions,NULL)) >= 0) - { - switch (c) - { - case 1 : args->rand_missing = 1; break; - case 2 : args->af_tag = optarg; break; - case 'e': args->filter_str = optarg; args->filter_logic |= FLT_EXCLUDE; break; - case 'i': args->filter_str = optarg; args->filter_logic |= FLT_INCLUDE; break; - case 'a': - { - int l = strlen(optarg); - args->info_pos = (char*)malloc(l+5); - args->info_r2 = (char*)malloc(l+5); - sprintf(args->info_pos,"%s_POS", optarg); - sprintf(args->info_r2,"%s_R2", optarg); - } - break; - case 'f': args->filter_r2 = optarg; break; - case 'n': - args->nsites = strtod(optarg,&tmp); - if ( tmp==optarg || *tmp ) error("Could not parse: --nsites-per-win %s\n", optarg); - break; - case 'l': - args->max_ld = strtod(optarg,&tmp); - if ( tmp==optarg || *tmp ) error("Could not parse: --max-LD %s\n", optarg); - break; - case 'w': - args->ld_win = strtod(optarg,&tmp); - if ( !*tmp ) break; - if ( tmp==optarg ) error("Could not parse: --window %s\n", optarg); - else if ( !strcasecmp("bp",tmp) ) args->ld_win *= -1; - else if ( !strcasecmp("kb",tmp) ) args->ld_win *= -1000; - else error("Could not parse: --window %s\n", optarg); - break; - case 'T': args->target_is_file = 1; - case 't': args->target = optarg; break; - case 'R': args->region_is_file = 1; - case 'r': args->region = optarg; break; - case 'o': args->output_fname = optarg; break; - case 'O': - switch (optarg[0]) { - case 'b': args->output_type = FT_BCF_GZ; break; - case 'u': args->output_type = FT_BCF; break; - case 'z': args->output_type = FT_VCF_GZ; break; - case 'v': args->output_type = FT_VCF; break; - default: error("The output type \"%s\" not recognised\n", optarg); - } - break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - if ( args->filter_logic == (FLT_EXCLUDE|FLT_INCLUDE) ) error("Only one of -i or -e can be given.\n"); - if ( !args->max_ld && !args->nsites ) error("%sError: Expected --max-LD, --nsites-per-win or both\n\n", usage_text()); - - if ( optind==argc ) - { - if ( !isatty(fileno((FILE *)stdin)) ) args->fname = "-"; // reading from stdin - else { error("%s",usage_text()); } - } - else if ( optind+1!=argc ) error("%s",usage_text()); - else args->fname = argv[optind]; - - init_data(args); - - while ( bcf_sr_next_line(args->sr) ) process(args); - flush(args,1); - - destroy_data(args); - return 0; -} - - diff --git a/bcftools/plugins/setGT.c b/bcftools/plugins/setGT.c deleted file mode 100644 index 80943ff..0000000 --- a/bcftools/plugins/setGT.c +++ /dev/null @@ -1,447 +0,0 @@ -/* plugins/setGT.c -- set gentoypes to given values - - Copyright (C) 2015-2017 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "filter.h" - -// Logic of the filters: include or exclude sites which match the filters? -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -typedef int (*cmp_f)(double a, double b); - -static int cmp_eq(double a, double b) { return a==b ? 1 : 0; } -static int cmp_le(double a, double b) { return a<=b ? 1 : 0; } -static int cmp_ge(double a, double b) { return a>=b ? 1 : 0; } -static int cmp_lt(double a, double b) { return ab ? 1 : 0; } - -typedef struct -{ - bcf_hdr_t *in_hdr, *out_hdr; - int32_t *gts, mgts, *iarr, miarr; - int *arr, marr; - uint64_t nchanged; - int tgt_mask, new_mask, new_gt; - filter_t *filter; - char *filter_str; - int filter_logic; - uint8_t *smpl_pass; - double binom_val; - char *binom_tag; - cmp_f binom_cmp; -} -args_t; - -args_t *args = NULL; - -#define GT_MISSING 1 -#define GT_PARTIAL (1<<1) -#define GT_REF (1<<2) -#define GT_MAJOR (1<<3) -#define GT_PHASED (1<<4) -#define GT_UNPHASED (1<<5) -#define GT_ALL (1<<6) -#define GT_QUERY (1<<7) -#define GT_BINOM (1<<8) - -const char *about(void) -{ - return "Set genotypes: partially missing to missing, missing to ref/major allele, etc.\n"; -} - -const char *usage(void) -{ - return - "About: Sets genotypes. The target genotypes can be specified as:\n" - " ./. .. completely missing (\".\" or \"./.\", depending on ploidy)\n" - " ./x .. partially missing (e.g., \"./0\" or \".|1\" but not \"./.\")\n" - " . .. partially or completely missing\n" - " a .. all genotypes\n" - " b .. heterozygous genotypes failing two-tailed binomial test (example below)\n" - " q .. select genotypes using -i/-e options\n" - " and the new genotype can be one of:\n" - " . .. missing (\".\" or \"./.\", keeps ploidy)\n" - " 0 .. reference allele\n" - " M .. major allele\n" - " p .. phased genotype\n" - " u .. unphase genotype and sort by allele (1|0 becomes 0/1)\n" - "Usage: bcftools +setGT [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -e, --exclude Exclude a genotype if true (requires -t q)\n" - " -i, --include include a genotype if true (requires -t q)\n" - " -n, --new-gt Genotypes to set, see above\n" - " -t, --target-gt Genotypes to change, see above\n" - "\n" - "Example:\n" - " # set missing genotypes (\"./.\") to phased ref genotypes (\"0|0\")\n" - " bcftools +setGT in.vcf -- -t . -n 0p\n" - "\n" - " # set missing genotypes with DP>0 and GQ>20 to ref genotypes (\"0/0\")\n" - " bcftools +setGT in.vcf -- -t q -n 0 -i 'GT=\".\" && FMT/DP>0 && GQ>20'\n" - "\n" - " # set partially missing genotypes to completely missing\n" - " bcftools +setGT in.vcf -- -t ./x -n .\n" - "\n" - " # set heterozygous genotypes to 0/0 if binom.test(nAlt,nRef+nAlt,0.5)<1e-3\n" - " bcftools +setGT in.vcf -- -t \"b:AD<1e-3\" -n 0\n" // todo: make -i/-e recognise something like is_het or gt="het" so that this can be generalized? - "\n"; -} - -static void _parse_binom_expr_error(char *str) -{ - error( - "Error parsing the expression: %s\n" - "Expected TAG CMP VAL, where\n" - " TAG .. one of the format tags\n" - " CMP .. operator, one of <, <=, >, >=\n" - " VAL .. value\n" - "For example:\n" - " bcftools +setGT in.vcf -- -t \"b:AD>1e-3\" -n 0\n" - "\n", str - ); -} -void parse_binom_expr(args_t *args, char *str) -{ - if ( str[1]!=':' ) _parse_binom_expr_error(str); - - char *beg = str+2; - while ( *beg && isspace(*beg) ) beg++; - if ( !*beg ) _parse_binom_expr_error(str); - char *end = beg; - while ( *end ) - { - if ( isspace(*end) || *end=='<' || *end=='=' || *end=='>' ) break; - end++; - } - if ( !*end ) _parse_binom_expr_error(str); - args->binom_tag = (char*) calloc(1,end-beg+1); - memcpy(args->binom_tag,beg,end-beg); - int tag_id = bcf_hdr_id2int(args->in_hdr,BCF_DT_ID,args->binom_tag); - if ( !bcf_hdr_idinfo_exists(args->in_hdr,BCF_HL_FMT,tag_id) ) error("The FORMAT tag \"%s\" is not present in the VCF\n", args->binom_tag); - - while ( *end && isspace(*end) ) end++; - if ( !*end ) _parse_binom_expr_error(str); - - if ( !strncmp(end,"<=",2) ) { args->binom_cmp = cmp_le; beg = end+2; } - else if ( !strncmp(end,">=",2) ) { args->binom_cmp = cmp_ge; beg = end+2; } - else if ( !strncmp(end,"==",2) ) { args->binom_cmp = cmp_eq; beg = end+2; } - else if ( !strncmp(end,"<",1) ) { args->binom_cmp = cmp_lt; beg = end+1; } - else if ( !strncmp(end,">",1) ) { args->binom_cmp = cmp_gt; beg = end+1; } - else if ( !strncmp(end,"=",1) ) { args->binom_cmp = cmp_eq; beg = end+1; } - else _parse_binom_expr_error(str); - - while ( *beg && isspace(*beg) ) beg++; - if ( !*beg ) _parse_binom_expr_error(str); - - args->binom_val = strtod(beg, &end); - while ( *end && isspace(*end) ) end++; - if ( *end ) _parse_binom_expr_error(str); - - args->tgt_mask |= GT_BINOM; - return; -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - args = (args_t*) calloc(1,sizeof(args_t)); - args->in_hdr = in; - args->out_hdr = out; - - int c; - static struct option loptions[] = - { - {"include",required_argument,NULL,'i'}, - {"exclude",required_argument,NULL,'e'}, - {"new-gt",required_argument,NULL,'n'}, - {"target-gt",required_argument,NULL,'t'}, - {NULL,0,NULL,0} - }; - while ((c = getopt_long(argc, argv, "?hn:t:i:e:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'i': args->filter_str = optarg; args->filter_logic = FLT_INCLUDE; break; - case 'e': args->filter_str = optarg; args->filter_logic = FLT_EXCLUDE; break; - case 'n': args->new_mask = 0; - if ( strchr(optarg,'.') ) args->new_mask |= GT_MISSING; - if ( strchr(optarg,'0') ) args->new_mask |= GT_REF; - if ( strchr(optarg,'M') ) args->new_mask |= GT_MAJOR; - if ( strchr(optarg,'p') ) args->new_mask |= GT_PHASED; - if ( strchr(optarg,'u') ) args->new_mask |= GT_UNPHASED; - if ( args->new_mask==0 ) error("Unknown parameter to --new-gt: %s\n", optarg); - break; - case 't': - if ( !strcmp(optarg,".") ) args->tgt_mask |= GT_MISSING|GT_PARTIAL; - if ( !strcmp(optarg,"./x") ) args->tgt_mask |= GT_PARTIAL; - if ( !strcmp(optarg,"./.") ) args->tgt_mask |= GT_MISSING; - if ( !strcmp(optarg,"a") ) args->tgt_mask |= GT_ALL; - if ( !strcmp(optarg,"q") ) args->tgt_mask |= GT_QUERY; - if ( !strcmp(optarg,"?") ) args->tgt_mask |= GT_QUERY; // for backward compatibility - if ( strchr(optarg,'b') ) parse_binom_expr(args, strchr(optarg,'b')); - if ( args->tgt_mask==0 ) error("Unknown parameter to --target-gt: %s\n", optarg); - break; - case 'h': - case '?': - default: fprintf(stderr,"%s", usage()); exit(1); break; - } - } - - if ( !args->new_mask ) error("Expected -n option\n"); - if ( !args->tgt_mask ) error("Expected -t option\n"); - - if ( args->new_mask & GT_MISSING ) args->new_gt = bcf_gt_missing; - if ( args->new_mask & GT_REF ) args->new_gt = args->new_mask>_PHASED ? bcf_gt_phased(0) : bcf_gt_unphased(0); - - if ( args->filter_str && !(args->tgt_mask>_QUERY) ) error("Expected -tq with -i/-e\n"); - if ( !args->filter_str && args->tgt_mask>_QUERY ) error("Expected -i/-e with -tq\n"); - if ( args->filter_str ) args->filter = filter_init(in,args->filter_str); - - return 0; -} - -static inline int phase_gt(int32_t *ptr, int ngts) -{ - int j, changed = 0; - for (j=0; j0 && ptr[l-1]>x ) - { - ptr[l] = ptr[l-1]; - l--; - } - ptr[l] = x; - } - return changed; -} -static inline int set_gt(int32_t *ptr, int ngts, int gt) -{ - int j, changed = 0; - for (j=0; j nb ? 2*kf_betai(na, nb + 1, 0.5) : 2*kf_betai(nb, na + 1, 0.5); - if ( prob > 1 ) prob = 1; - - return prob; -} - -bcf1_t *process(bcf1_t *rec) -{ - if ( !rec->n_sample ) return rec; - - int ngts = bcf_get_genotypes(args->in_hdr, rec, &args->gts, &args->mgts); - ngts /= rec->n_sample; - int i, j, changed = 0; - - int nbinom = 0; - if ( args->tgt_mask & GT_BINOM ) - { - nbinom = bcf_get_format_int32(args->in_hdr, rec, args->binom_tag, &args->iarr, &args->miarr); - if ( nbinom<0 ) nbinom = 0; - nbinom /= rec->n_sample; - } - - // Calculating allele frequency for each allele and determining major allele - // only do this if use_major is true - int an = 0, maxAC = -1, majorAllele = -1; - if ( args->new_mask & GT_MAJOR ) - { - hts_expand(int,rec->n_allele,args->marr,args->arr); - int ret = bcf_calc_ac(args->in_hdr,rec,args->arr,BCF_UN_FMT); - if ( ret<= 0 ) - error("Could not calculate allele count at %s:%d\n", bcf_seqname(args->in_hdr,rec),rec->pos+1); - - for(i=0; i < rec->n_allele; ++i) - { - an += args->arr[i]; - if (args->arr[i] > maxAC) - { - maxAC = args->arr[i]; - majorAllele = i; - } - } - - // replacing new_gt by major allele - args->new_gt = args->new_mask & GT_PHASED ? bcf_gt_phased(majorAllele) : bcf_gt_unphased(majorAllele); - } - - // replace gts - if ( nbinom && ngts>=2 ) // only diploid genotypes are considered: higher ploidy ignored further, haploid here - { - if ( args->filter ) filter_test(args->filter,rec,(const uint8_t **)&args->smpl_pass); - for (i=0; in_sample; i++) - { - if ( args->smpl_pass ) - { - if ( !args->smpl_pass[i] && args->filter_logic==FLT_INCLUDE ) continue; - if ( args->smpl_pass[i] && args->filter_logic==FLT_EXCLUDE ) continue; - } - int32_t *ptr = args->gts + i*ngts; - if ( bcf_gt_is_missing(ptr[0]) || bcf_gt_is_missing(ptr[1]) || ptr[1]==bcf_int32_vector_end ) continue; - if ( ptr[0]==ptr[1] ) continue; // a hom - int ia = bcf_gt_allele(ptr[0]); - int ib = bcf_gt_allele(ptr[1]); - if ( ia>=nbinom || ib>=nbinom ) - error("The sample %s has incorrect number of %s fields at %s:%d\n", - args->in_hdr->samples[i],args->binom_tag,bcf_seqname(args->in_hdr,rec),rec->pos+1); - - double prob = calc_binom(args->iarr[i*nbinom+ia],args->iarr[i*nbinom+ib]); - if ( !args->binom_cmp(prob,args->binom_val) ) continue; - - if ( args->new_mask>_UNPHASED ) - changed += unphase_gt(ptr, ngts); - else if ( args->new_mask==GT_PHASED ) - changed += phase_gt(ptr, ngts); - else - changed += set_gt(ptr, ngts, args->new_gt); - } - } - else if ( args->tgt_mask>_QUERY ) - { - int pass_site = filter_test(args->filter,rec,(const uint8_t **)&args->smpl_pass); - if ( pass_site && args->filter_logic==FLT_EXCLUDE ) - { - // -i can include a site but exclude a sample, -e exclude a site but include a sample - if ( pass_site ) - { - if ( !args->smpl_pass ) return rec; - pass_site = 0; - for (i=0; in_sample; i++) - { - if ( args->smpl_pass[i] ) args->smpl_pass[i] = 0; - else { args->smpl_pass[i] = 1; pass_site = 1; } - } - if ( !pass_site ) return rec; - } - else if ( args->smpl_pass ) - for (i=0; in_sample; i++) args->smpl_pass[i] = 1; - } - else if ( !pass_site ) return rec; - - for (i=0; in_sample; i++) - { - if ( !args->smpl_pass[i] ) continue; - if ( args->new_mask>_UNPHASED ) - changed += unphase_gt(args->gts + i*ngts, ngts); - else if ( args->new_mask==GT_PHASED ) - changed += phase_gt(args->gts + i*ngts, ngts); - else - changed += set_gt(args->gts + i*ngts, ngts, args->new_gt); - } - } - else - { - for (i=0; in_sample; i++) - { - int ploidy = 0, nmiss = 0; - int32_t *ptr = args->gts + i*ngts; - for (j=0; jtgt_mask>_ALL ) do_set = 1; - else if ( args->tgt_mask>_PARTIAL && nmiss ) do_set = 1; - else if ( args->tgt_mask>_MISSING && ploidy==nmiss ) do_set = 1; - - if ( !do_set ) continue; - - if ( args->new_mask>_UNPHASED ) - changed += unphase_gt(ptr, ngts); - else if ( args->new_mask==GT_PHASED ) - changed += phase_gt(ptr, ngts); - else - changed += set_gt(ptr, ngts, args->new_gt); - } - } - args->nchanged += changed; - if ( changed ) bcf_update_genotypes(args->out_hdr, rec, args->gts, ngts*rec->n_sample); - return rec; -} - -void destroy(void) -{ - fprintf(stderr,"Filled %"PRId64" alleles\n", args->nchanged); - free(args->binom_tag); - if ( args->filter ) filter_destroy(args->filter); - free(args->arr); - free(args->iarr); - free(args->gts); - free(args); -} - - diff --git a/bcftools/plugins/setGT.c.pysam.c b/bcftools/plugins/setGT.c.pysam.c deleted file mode 100644 index c3759de..0000000 --- a/bcftools/plugins/setGT.c.pysam.c +++ /dev/null @@ -1,449 +0,0 @@ -#include "bcftools.pysam.h" - -/* plugins/setGT.c -- set gentoypes to given values - - Copyright (C) 2015-2017 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "filter.h" - -// Logic of the filters: include or exclude sites which match the filters? -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -typedef int (*cmp_f)(double a, double b); - -static int cmp_eq(double a, double b) { return a==b ? 1 : 0; } -static int cmp_le(double a, double b) { return a<=b ? 1 : 0; } -static int cmp_ge(double a, double b) { return a>=b ? 1 : 0; } -static int cmp_lt(double a, double b) { return ab ? 1 : 0; } - -typedef struct -{ - bcf_hdr_t *in_hdr, *out_hdr; - int32_t *gts, mgts, *iarr, miarr; - int *arr, marr; - uint64_t nchanged; - int tgt_mask, new_mask, new_gt; - filter_t *filter; - char *filter_str; - int filter_logic; - uint8_t *smpl_pass; - double binom_val; - char *binom_tag; - cmp_f binom_cmp; -} -args_t; - -args_t *args = NULL; - -#define GT_MISSING 1 -#define GT_PARTIAL (1<<1) -#define GT_REF (1<<2) -#define GT_MAJOR (1<<3) -#define GT_PHASED (1<<4) -#define GT_UNPHASED (1<<5) -#define GT_ALL (1<<6) -#define GT_QUERY (1<<7) -#define GT_BINOM (1<<8) - -const char *about(void) -{ - return "Set genotypes: partially missing to missing, missing to ref/major allele, etc.\n"; -} - -const char *usage(void) -{ - return - "About: Sets genotypes. The target genotypes can be specified as:\n" - " ./. .. completely missing (\".\" or \"./.\", depending on ploidy)\n" - " ./x .. partially missing (e.g., \"./0\" or \".|1\" but not \"./.\")\n" - " . .. partially or completely missing\n" - " a .. all genotypes\n" - " b .. heterozygous genotypes failing two-tailed binomial test (example below)\n" - " q .. select genotypes using -i/-e options\n" - " and the new genotype can be one of:\n" - " . .. missing (\".\" or \"./.\", keeps ploidy)\n" - " 0 .. reference allele\n" - " M .. major allele\n" - " p .. phased genotype\n" - " u .. unphase genotype and sort by allele (1|0 becomes 0/1)\n" - "Usage: bcftools +setGT [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -e, --exclude Exclude a genotype if true (requires -t q)\n" - " -i, --include include a genotype if true (requires -t q)\n" - " -n, --new-gt Genotypes to set, see above\n" - " -t, --target-gt Genotypes to change, see above\n" - "\n" - "Example:\n" - " # set missing genotypes (\"./.\") to phased ref genotypes (\"0|0\")\n" - " bcftools +setGT in.vcf -- -t . -n 0p\n" - "\n" - " # set missing genotypes with DP>0 and GQ>20 to ref genotypes (\"0/0\")\n" - " bcftools +setGT in.vcf -- -t q -n 0 -i 'GT=\".\" && FMT/DP>0 && GQ>20'\n" - "\n" - " # set partially missing genotypes to completely missing\n" - " bcftools +setGT in.vcf -- -t ./x -n .\n" - "\n" - " # set heterozygous genotypes to 0/0 if binom.test(nAlt,nRef+nAlt,0.5)<1e-3\n" - " bcftools +setGT in.vcf -- -t \"b:AD<1e-3\" -n 0\n" // todo: make -i/-e recognise something like is_het or gt="het" so that this can be generalized? - "\n"; -} - -static void _parse_binom_expr_error(char *str) -{ - error( - "Error parsing the expression: %s\n" - "Expected TAG CMP VAL, where\n" - " TAG .. one of the format tags\n" - " CMP .. operator, one of <, <=, >, >=\n" - " VAL .. value\n" - "For example:\n" - " bcftools +setGT in.vcf -- -t \"b:AD>1e-3\" -n 0\n" - "\n", str - ); -} -void parse_binom_expr(args_t *args, char *str) -{ - if ( str[1]!=':' ) _parse_binom_expr_error(str); - - char *beg = str+2; - while ( *beg && isspace(*beg) ) beg++; - if ( !*beg ) _parse_binom_expr_error(str); - char *end = beg; - while ( *end ) - { - if ( isspace(*end) || *end=='<' || *end=='=' || *end=='>' ) break; - end++; - } - if ( !*end ) _parse_binom_expr_error(str); - args->binom_tag = (char*) calloc(1,end-beg+1); - memcpy(args->binom_tag,beg,end-beg); - int tag_id = bcf_hdr_id2int(args->in_hdr,BCF_DT_ID,args->binom_tag); - if ( !bcf_hdr_idinfo_exists(args->in_hdr,BCF_HL_FMT,tag_id) ) error("The FORMAT tag \"%s\" is not present in the VCF\n", args->binom_tag); - - while ( *end && isspace(*end) ) end++; - if ( !*end ) _parse_binom_expr_error(str); - - if ( !strncmp(end,"<=",2) ) { args->binom_cmp = cmp_le; beg = end+2; } - else if ( !strncmp(end,">=",2) ) { args->binom_cmp = cmp_ge; beg = end+2; } - else if ( !strncmp(end,"==",2) ) { args->binom_cmp = cmp_eq; beg = end+2; } - else if ( !strncmp(end,"<",1) ) { args->binom_cmp = cmp_lt; beg = end+1; } - else if ( !strncmp(end,">",1) ) { args->binom_cmp = cmp_gt; beg = end+1; } - else if ( !strncmp(end,"=",1) ) { args->binom_cmp = cmp_eq; beg = end+1; } - else _parse_binom_expr_error(str); - - while ( *beg && isspace(*beg) ) beg++; - if ( !*beg ) _parse_binom_expr_error(str); - - args->binom_val = strtod(beg, &end); - while ( *end && isspace(*end) ) end++; - if ( *end ) _parse_binom_expr_error(str); - - args->tgt_mask |= GT_BINOM; - return; -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - args = (args_t*) calloc(1,sizeof(args_t)); - args->in_hdr = in; - args->out_hdr = out; - - int c; - static struct option loptions[] = - { - {"include",required_argument,NULL,'i'}, - {"exclude",required_argument,NULL,'e'}, - {"new-gt",required_argument,NULL,'n'}, - {"target-gt",required_argument,NULL,'t'}, - {NULL,0,NULL,0} - }; - while ((c = getopt_long(argc, argv, "?hn:t:i:e:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'i': args->filter_str = optarg; args->filter_logic = FLT_INCLUDE; break; - case 'e': args->filter_str = optarg; args->filter_logic = FLT_EXCLUDE; break; - case 'n': args->new_mask = 0; - if ( strchr(optarg,'.') ) args->new_mask |= GT_MISSING; - if ( strchr(optarg,'0') ) args->new_mask |= GT_REF; - if ( strchr(optarg,'M') ) args->new_mask |= GT_MAJOR; - if ( strchr(optarg,'p') ) args->new_mask |= GT_PHASED; - if ( strchr(optarg,'u') ) args->new_mask |= GT_UNPHASED; - if ( args->new_mask==0 ) error("Unknown parameter to --new-gt: %s\n", optarg); - break; - case 't': - if ( !strcmp(optarg,".") ) args->tgt_mask |= GT_MISSING|GT_PARTIAL; - if ( !strcmp(optarg,"./x") ) args->tgt_mask |= GT_PARTIAL; - if ( !strcmp(optarg,"./.") ) args->tgt_mask |= GT_MISSING; - if ( !strcmp(optarg,"a") ) args->tgt_mask |= GT_ALL; - if ( !strcmp(optarg,"q") ) args->tgt_mask |= GT_QUERY; - if ( !strcmp(optarg,"?") ) args->tgt_mask |= GT_QUERY; // for backward compatibility - if ( strchr(optarg,'b') ) parse_binom_expr(args, strchr(optarg,'b')); - if ( args->tgt_mask==0 ) error("Unknown parameter to --target-gt: %s\n", optarg); - break; - case 'h': - case '?': - default: fprintf(bcftools_stderr,"%s", usage()); exit(1); break; - } - } - - if ( !args->new_mask ) error("Expected -n option\n"); - if ( !args->tgt_mask ) error("Expected -t option\n"); - - if ( args->new_mask & GT_MISSING ) args->new_gt = bcf_gt_missing; - if ( args->new_mask & GT_REF ) args->new_gt = args->new_mask>_PHASED ? bcf_gt_phased(0) : bcf_gt_unphased(0); - - if ( args->filter_str && !(args->tgt_mask>_QUERY) ) error("Expected -tq with -i/-e\n"); - if ( !args->filter_str && args->tgt_mask>_QUERY ) error("Expected -i/-e with -tq\n"); - if ( args->filter_str ) args->filter = filter_init(in,args->filter_str); - - return 0; -} - -static inline int phase_gt(int32_t *ptr, int ngts) -{ - int j, changed = 0; - for (j=0; j0 && ptr[l-1]>x ) - { - ptr[l] = ptr[l-1]; - l--; - } - ptr[l] = x; - } - return changed; -} -static inline int set_gt(int32_t *ptr, int ngts, int gt) -{ - int j, changed = 0; - for (j=0; j nb ? 2*kf_betai(na, nb + 1, 0.5) : 2*kf_betai(nb, na + 1, 0.5); - if ( prob > 1 ) prob = 1; - - return prob; -} - -bcf1_t *process(bcf1_t *rec) -{ - if ( !rec->n_sample ) return rec; - - int ngts = bcf_get_genotypes(args->in_hdr, rec, &args->gts, &args->mgts); - ngts /= rec->n_sample; - int i, j, changed = 0; - - int nbinom = 0; - if ( args->tgt_mask & GT_BINOM ) - { - nbinom = bcf_get_format_int32(args->in_hdr, rec, args->binom_tag, &args->iarr, &args->miarr); - if ( nbinom<0 ) nbinom = 0; - nbinom /= rec->n_sample; - } - - // Calculating allele frequency for each allele and determining major allele - // only do this if use_major is true - int an = 0, maxAC = -1, majorAllele = -1; - if ( args->new_mask & GT_MAJOR ) - { - hts_expand(int,rec->n_allele,args->marr,args->arr); - int ret = bcf_calc_ac(args->in_hdr,rec,args->arr,BCF_UN_FMT); - if ( ret<= 0 ) - error("Could not calculate allele count at %s:%d\n", bcf_seqname(args->in_hdr,rec),rec->pos+1); - - for(i=0; i < rec->n_allele; ++i) - { - an += args->arr[i]; - if (args->arr[i] > maxAC) - { - maxAC = args->arr[i]; - majorAllele = i; - } - } - - // replacing new_gt by major allele - args->new_gt = args->new_mask & GT_PHASED ? bcf_gt_phased(majorAllele) : bcf_gt_unphased(majorAllele); - } - - // replace gts - if ( nbinom && ngts>=2 ) // only diploid genotypes are considered: higher ploidy ignored further, haploid here - { - if ( args->filter ) filter_test(args->filter,rec,(const uint8_t **)&args->smpl_pass); - for (i=0; in_sample; i++) - { - if ( args->smpl_pass ) - { - if ( !args->smpl_pass[i] && args->filter_logic==FLT_INCLUDE ) continue; - if ( args->smpl_pass[i] && args->filter_logic==FLT_EXCLUDE ) continue; - } - int32_t *ptr = args->gts + i*ngts; - if ( bcf_gt_is_missing(ptr[0]) || bcf_gt_is_missing(ptr[1]) || ptr[1]==bcf_int32_vector_end ) continue; - if ( ptr[0]==ptr[1] ) continue; // a hom - int ia = bcf_gt_allele(ptr[0]); - int ib = bcf_gt_allele(ptr[1]); - if ( ia>=nbinom || ib>=nbinom ) - error("The sample %s has incorrect number of %s fields at %s:%d\n", - args->in_hdr->samples[i],args->binom_tag,bcf_seqname(args->in_hdr,rec),rec->pos+1); - - double prob = calc_binom(args->iarr[i*nbinom+ia],args->iarr[i*nbinom+ib]); - if ( !args->binom_cmp(prob,args->binom_val) ) continue; - - if ( args->new_mask>_UNPHASED ) - changed += unphase_gt(ptr, ngts); - else if ( args->new_mask==GT_PHASED ) - changed += phase_gt(ptr, ngts); - else - changed += set_gt(ptr, ngts, args->new_gt); - } - } - else if ( args->tgt_mask>_QUERY ) - { - int pass_site = filter_test(args->filter,rec,(const uint8_t **)&args->smpl_pass); - if ( pass_site && args->filter_logic==FLT_EXCLUDE ) - { - // -i can include a site but exclude a sample, -e exclude a site but include a sample - if ( pass_site ) - { - if ( !args->smpl_pass ) return rec; - pass_site = 0; - for (i=0; in_sample; i++) - { - if ( args->smpl_pass[i] ) args->smpl_pass[i] = 0; - else { args->smpl_pass[i] = 1; pass_site = 1; } - } - if ( !pass_site ) return rec; - } - else if ( args->smpl_pass ) - for (i=0; in_sample; i++) args->smpl_pass[i] = 1; - } - else if ( !pass_site ) return rec; - - for (i=0; in_sample; i++) - { - if ( !args->smpl_pass[i] ) continue; - if ( args->new_mask>_UNPHASED ) - changed += unphase_gt(args->gts + i*ngts, ngts); - else if ( args->new_mask==GT_PHASED ) - changed += phase_gt(args->gts + i*ngts, ngts); - else - changed += set_gt(args->gts + i*ngts, ngts, args->new_gt); - } - } - else - { - for (i=0; in_sample; i++) - { - int ploidy = 0, nmiss = 0; - int32_t *ptr = args->gts + i*ngts; - for (j=0; jtgt_mask>_ALL ) do_set = 1; - else if ( args->tgt_mask>_PARTIAL && nmiss ) do_set = 1; - else if ( args->tgt_mask>_MISSING && ploidy==nmiss ) do_set = 1; - - if ( !do_set ) continue; - - if ( args->new_mask>_UNPHASED ) - changed += unphase_gt(ptr, ngts); - else if ( args->new_mask==GT_PHASED ) - changed += phase_gt(ptr, ngts); - else - changed += set_gt(ptr, ngts, args->new_gt); - } - } - args->nchanged += changed; - if ( changed ) bcf_update_genotypes(args->out_hdr, rec, args->gts, ngts*rec->n_sample); - return rec; -} - -void destroy(void) -{ - fprintf(bcftools_stderr,"Filled %"PRId64" alleles\n", args->nchanged); - free(args->binom_tag); - if ( args->filter ) filter_destroy(args->filter); - free(args->arr); - free(args->iarr); - free(args->gts); - free(args); -} - - diff --git a/bcftools/plugins/smpl-stats.c b/bcftools/plugins/smpl-stats.c deleted file mode 100644 index 0139a9f..0000000 --- a/bcftools/plugins/smpl-stats.c +++ /dev/null @@ -1,483 +0,0 @@ -/* The MIT License - - Copyright (c) 2018 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include // for isatty -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "filter.h" - - -// Logic of the filters: include or exclude sites which match the filters? -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -typedef struct -{ - uint32_t - npass, // number of genotypes passing the filter - nnon_ref, // number of non-reference genotypes - nhomRR, - nhomAA, - nhemi, - nhet, - nSNV, - nIndel, - nmissing, - nsingleton, // het different from everyone else - nts, ntv; // number of transitions and transversions -} -stats_t; - -typedef struct -{ - stats_t *stats, site_stats; - filter_t *filter; - char *expr; -} -flt_stats_t; - -typedef struct -{ - int argc, filter_logic, regions_is_file, targets_is_file; - int nflt_str; - char *filter_str, **flt_str; - char **argv, *output_fname, *fname, *regions, *targets; - bcf_srs_t *sr; - bcf_hdr_t *hdr; - flt_stats_t *filters; - int nfilters, nsmpl; - int32_t *gt_arr, *ac; - int mgt_arr, mac; -} -args_t; - -args_t args; - -const char *about(void) -{ - return "Calculate basic per-sample stats scanning over a range of thresholds simultaneously.\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Calculates basic per-sample stats. Use curly brackets to scan a range of values simultaneously\n" - "Usage: bcftools +smpl-stats [Plugin Options]\n" - "Plugin options:\n" - " -e, --exclude EXPR exclude sites and samples for which the expression is true\n" - " -i, --include EXPR include sites and samples for which the expression is true\n" - " -o, --output FILE output file name [stdout]\n" - " -r, --regions REG restrict to comma-separated list of regions\n" - " -R, --regions-file FILE restrict to regions listed in a file\n" - " -t, --targets REG similar to -r but streams rather than index-jumps\n" - " -T, --targets-file FILE similar to -R but streams rather than index-jumps\n" - "\n" - "Example:\n" - " bcftools +smpl-stats -i 'GQ>{10,20,30,40,50}' file.bcf\n" - "\n"; -} - -static void parse_filters(args_t *args) -{ - if ( !args->filter_str ) return; - int mflt = 1; - args->nflt_str = 1; - args->flt_str = (char**) malloc(sizeof(char*)); - args->flt_str[0] = strdup(args->filter_str); - while (1) - { - int i, expanded = 0; - for (i=args->nflt_str-1; i>=0; i--) - { - char *exp_beg = strchr(args->flt_str[i], '{'); - if ( !exp_beg ) continue; - char *exp_end = strchr(exp_beg+1, '}'); - if ( !exp_end ) error("Could not parse the expression: %s\n", args->filter_str); - char *beg = exp_beg+1, *mid = beg; - while ( midflt_str[i], exp_beg - args->flt_str[i], &tmp); - kputsn(beg, mid - beg, &tmp); - kputs(exp_end+1, &tmp); - args->nflt_str++; - hts_expand(char*, args->nflt_str, mflt, args->flt_str); - args->flt_str[args->nflt_str-1] = tmp.s; - beg = ++mid; - } - expanded = 1; - free(args->flt_str[i]); - memmove(&args->flt_str[i], &args->flt_str[i+1], (args->nflt_str-i-1)*sizeof(*args->flt_str)); - args->nflt_str--; - args->flt_str[args->nflt_str] = NULL; - } - if ( !expanded ) break; - } - - fprintf(stderr,"Collecting data for %d filtering expressions\n", args->nflt_str); -} - -static void init_data(args_t *args) -{ - args->sr = bcf_sr_init(); - if ( args->regions ) - { - args->sr->require_index = 1; - if ( bcf_sr_set_regions(args->sr, args->regions, args->regions_is_file)<0 ) error("Failed to read the regions: %s\n",args->regions); - } - if ( args->targets && bcf_sr_set_targets(args->sr, args->targets, args->targets_is_file, 0)<0 ) error("Failed to read the targets: %s\n",args->targets); - if ( !bcf_sr_add_reader(args->sr,args->fname) ) error("Error: %s\n", bcf_sr_strerror(args->sr->errnum)); - args->hdr = bcf_sr_get_header(args->sr,0); - - parse_filters(args); - - int i; - if ( !args->nflt_str ) - { - args->filters = (flt_stats_t*) calloc(1, sizeof(flt_stats_t)); - args->nfilters = 1; - args->filters[0].expr = strdup("all"); - } - else - { - args->nfilters = args->nflt_str; - args->filters = (flt_stats_t*) calloc(args->nfilters, sizeof(flt_stats_t)); - for (i=0; infilters; i++) - { - args->filters[i].filter = filter_init(args->hdr, args->flt_str[i]); - args->filters[i].expr = strdup(args->flt_str[i]); - - // replace tab's with spaces so that the output stays parsable - char *tmp = args->filters[i].expr; - while ( *tmp ) - { - if ( *tmp=='\t' ) *tmp = ' '; - tmp++; - } - } - } - args->nsmpl = bcf_hdr_nsamples(args->hdr); - for (i=0; infilters; i++) - args->filters[i].stats = (stats_t*) calloc(args->nsmpl,sizeof(stats_t)); -} -static void destroy_data(args_t *args) -{ - int i; - for (i=0; infilters; i++) - { - if ( args->filters[i].filter ) filter_destroy(args->filters[i].filter); - free(args->filters[i].stats); - free(args->filters[i].expr); - } - free(args->filters); - for (i=0; inflt_str; i++) free(args->flt_str[i]); - free(args->flt_str); - bcf_sr_destroy(args->sr); - free(args->ac); - free(args->gt_arr); - free(args); -} -static void report_stats(args_t *args) -{ - int i = 0,j; - FILE *fh = !args->output_fname || !strcmp("-",args->output_fname) ? stdout : fopen(args->output_fname,"w"); - if ( !fh ) error("Could not open the file for writing: %s\n", args->output_fname); - fprintf(fh,"# CMD line shows the command line used to generate this output\n"); - fprintf(fh,"# DEF lines define expressions for all tested thresholds\n"); - fprintf(fh,"# FLT* lines report numbers for every threshold and every sample:\n"); - fprintf(fh,"# %d) filter id\n", ++i); - fprintf(fh,"# %d) sample\n", ++i); - fprintf(fh,"# %d) number of genotypes which pass the filter\n", ++i); - fprintf(fh,"# %d) number of non-reference genotypes\n", ++i); - fprintf(fh,"# %d) number of homozygous ref genotypes (0/0 or 0)\n", ++i); - fprintf(fh,"# %d) number of homozygous alt genotypes (1/1, 2/2, etc)\n", ++i); - fprintf(fh,"# %d) number of heterozygous genotypes (0/1, 1/2, etc)\n", ++i); - fprintf(fh,"# %d) number of hemizygous genotypes (0, 1, etc)\n", ++i); - fprintf(fh,"# %d) number of SNVs\n", ++i); - fprintf(fh,"# %d) number of indels\n", ++i); - fprintf(fh,"# %d) number of singletons\n", ++i); - fprintf(fh,"# %d) number of missing genotypes (./., ., ./0, etc)\n", ++i); - fprintf(fh,"# %d) number of transitions (genotypes such as \"1/2\" are counted twice)\n", ++i); - fprintf(fh,"# %d) number of transversions (genotypes such as \"1/2\" are counted twice)\n", ++i); - fprintf(fh,"# %d) overall ts/tv\n", ++i); - i = 0; - fprintf(fh,"# SITE* lines report numbers for every threshold and site:\n"); - fprintf(fh,"# %d) filter id\n", ++i); - fprintf(fh,"# %d) number of sites which pass the filter\n", ++i); - fprintf(fh,"# %d) number of SNVs\n", ++i); - fprintf(fh,"# %d) number of indels\n", ++i); - fprintf(fh,"# %d) number of singletons\n", ++i); - fprintf(fh,"# %d) number of transitions (counted at most once at multiallelic sites)\n", ++i); - fprintf(fh,"# %d) number of transversions (counted at most once at multiallelic sites)\n", ++i); - fprintf(fh,"# %d) overall ts/tv\n", ++i); - fprintf(fh, "CMD\t%s", args->argv[0]); - for (i=1; iargc; i++) fprintf(fh, " %s",args->argv[i]); - fprintf(fh, "\n"); - for (i=0; infilters; i++) - { - flt_stats_t *flt = &args->filters[i]; - fprintf(fh,"DEF\tFLT%d\t%s\n", i, flt->expr); - } - for (i=0; infilters; i++) - { - flt_stats_t *flt = &args->filters[i]; - for (j=0; jnsmpl; j++) - { - fprintf(fh,"FLT%d", i); - fprintf(fh,"\t%s",args->hdr->samples[j]); - stats_t *stats = &flt->stats[j]; - fprintf(fh,"\t%d", stats->npass); - fprintf(fh,"\t%d", stats->nnon_ref); - fprintf(fh,"\t%d", stats->nhomRR); - fprintf(fh,"\t%d", stats->nhomAA); - fprintf(fh,"\t%d", stats->nhet); - fprintf(fh,"\t%d", stats->nhemi); - fprintf(fh,"\t%d", stats->nSNV); - fprintf(fh,"\t%d", stats->nIndel); - fprintf(fh,"\t%d", stats->nsingleton); - fprintf(fh,"\t%d", stats->nmissing); - fprintf(fh,"\t%d", stats->nts); - fprintf(fh,"\t%d", stats->ntv); - fprintf(fh,"\t%.2f", stats->ntv ? (float)stats->nts/stats->ntv : INFINITY); - fprintf(fh,"\n"); - } - fprintf(fh,"SITE%d", i); - stats_t *stats = &flt->site_stats; - fprintf(fh,"\t%d", stats->npass); - fprintf(fh,"\t%d", stats->nSNV); - fprintf(fh,"\t%d", stats->nIndel); - fprintf(fh,"\t%d", stats->nsingleton); - fprintf(fh,"\t%d", stats->nts); - fprintf(fh,"\t%d", stats->ntv); - fprintf(fh,"\t%.2f", stats->ntv ? (float)stats->nts/stats->ntv : INFINITY); - fprintf(fh,"\n"); - } - if ( fclose(fh)!=0 ) error("Close failed: %s\n", (!args->output_fname || !strcmp("-",args->output_fname)) ? "stdout" : args->output_fname); -} - -static inline int parse_genotype(int32_t *arr, int ngt1, int idx, int als[2]) -{ - int32_t *ptr = arr + ngt1 * idx; - if ( bcf_gt_is_missing(ptr[0]) ) return -1; - als[0] = bcf_gt_allele(ptr[0]); - - if ( ngt1==1 || ptr[1]==bcf_int32_vector_end ) { ptr[1] = ptr[0]; return -2; } - - if ( bcf_gt_is_missing(ptr[1]) ) return -1; - als[1] = bcf_gt_allele(ptr[1]); - - return 0; -} - -static void process_record(args_t *args, bcf1_t *rec, flt_stats_t *flt) -{ - int i,j; - uint8_t *smpl_pass = NULL; - - // Find out which trios pass and if the site passes - if ( flt->filter ) - { - int pass_site = filter_test(flt->filter, rec, (const uint8_t**) &smpl_pass); - if ( args->filter_logic & FLT_EXCLUDE ) - { - if ( pass_site ) - { - if ( !smpl_pass ) return; - pass_site = 0; - for (i=0; insmpl; i++) - { - if ( smpl_pass[i] ) smpl_pass[i] = 0; - else { smpl_pass[i] = 1; pass_site = 1; } - } - if ( !pass_site ) return; - } - else - for (i=0; insmpl; i++) smpl_pass[i] = 1; - } - else if ( !pass_site ) return; - } - - // Find out the allele counts. Try to use INFO/AC, if not present, determine from the genotypes - hts_expand(int, rec->n_allele, args->mac, args->ac); - if ( !bcf_calc_ac(args->hdr, rec, args->ac, BCF_UN_INFO|BCF_UN_FMT) ) return; - - // Get the genotypes - int ngt = bcf_get_genotypes(args->hdr, rec, &args->gt_arr, &args->mgt_arr); - if ( ngt<0 ) return; - int ngt1 = ngt / rec->n_sample; - - - // For ts/tv: numeric code of the reference allele, -1 for insertions - int ref = !rec->d.allele[0][1] ? bcf_acgt2int(*rec->d.allele[0]) : -1; - - int star_allele = -1; - for (i=1; in_allele; i++) - if ( !rec->d.allele[i][1] && rec->d.allele[i][0]=='*' ) { star_allele = i; break; } - - // Run the stats - int site_pass = 0; - int site_SNV = 0; - int site_Indel = 0; - int site_has_ts = 0; - int site_has_tv = 0; - int site_singleton = 0; - for (i=0; insmpl; i++) - { - if ( smpl_pass && !smpl_pass[i] ) continue; - stats_t *stats = &flt->stats[i]; - - // Determine the alternate allele and the genotypes, skip if any of the alleles is missing. - int als[2]; - int ret = parse_genotype(args->gt_arr, ngt1, i, als); - if ( ret==-1 ) { stats->nmissing++; continue; } // missing allele - if ( ret==-2 ) stats->nhemi++; - else if ( als[0]!=als[1] ) stats->nhet++; - else if ( als[0]==0 ) stats->nhomRR++; - else stats->nhomAA++; - - stats->npass++; - site_pass = 1; - - // Is there an alternate allele other than *? - int has_nonref = 0; - for (j=0; j<2; j++) - { - if ( als[j]==star_allele ) continue; - if ( als[j]==0 ) continue; - has_nonref = 1; - } - if ( !has_nonref ) continue; // only ref or * in this genotype - - stats->nnon_ref++; - - // Calculate ts/tv, count SNPs, indels. It does the right thing and handles also HetAA genotypes - { - int has_ts = 0, has_tv = 0, has_snv = 0, has_indel = 0; - for (j=0; j<2; j++) - { - if ( als[j]==0 || als[j]==star_allele ) continue; - if ( als[j] >= rec->n_allele ) - error("The GT index is out of range at %s:%d in %s\n", bcf_seqname(args->hdr,rec),rec->pos+1,args->hdr->samples[j]); - - if ( args->ac[als[j]]==1 ) { stats->nsingleton++; site_singleton = 1; } - - int var_type = bcf_get_variant_type(rec, als[j]); - if ( var_type==VCF_SNP || var_type==VCF_MNP ) - { - int k = 0; - while ( rec->d.allele[0][k] && rec->d.allele[als[j]][k] ) - { - if ( rec->d.allele[0][k]==rec->d.allele[als[j]][k] ) { k++; continue; } - - int alt = bcf_acgt2int(rec->d.allele[als[j]][k]); - if ( abs(ref-alt)==2 ) has_ts = 1; - else has_tv = 1; - has_snv = 1; - - k++; - } - } - else if ( var_type==VCF_INDEL ) has_indel = 1; - } - if ( has_ts ) { stats->nts++; site_has_ts = 1; } - if ( has_tv ) { stats->ntv++; site_has_tv = 1; } - if ( has_snv ) { stats->nSNV++; site_SNV = 1; } - if ( has_indel ) { stats->nIndel++; site_Indel = 1; } - } - } - flt->site_stats.npass += site_pass; - flt->site_stats.nSNV += site_SNV; - flt->site_stats.nIndel += site_Indel; - flt->site_stats.nts += site_has_ts; - flt->site_stats.ntv += site_has_tv; - flt->site_stats.nsingleton += site_singleton; -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->argc = argc; args->argv = argv; - args->output_fname = "-"; - static struct option loptions[] = - { - {"include",required_argument,0,'i'}, - {"exclude",required_argument,0,'e'}, - {"output",required_argument,NULL,'o'}, - {"regions",1,0,'r'}, - {"regions-file",1,0,'R'}, - {"targets",1,0,'t'}, - {"targets-file",1,0,'T'}, - {NULL,0,NULL,0} - }; - int c, i; - while ((c = getopt_long(argc, argv, "o:s:i:e:r:R:t:T:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'e': args->filter_str = optarg; args->filter_logic |= FLT_EXCLUDE; break; - case 'i': args->filter_str = optarg; args->filter_logic |= FLT_INCLUDE; break; - case 't': args->targets = optarg; break; - case 'T': args->targets = optarg; args->targets_is_file = 1; break; - case 'r': args->regions = optarg; break; - case 'R': args->regions = optarg; args->regions_is_file = 1; break; - case 'o': args->output_fname = optarg; break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - if ( optind==argc ) - { - if ( !isatty(fileno((FILE *)stdin)) ) args->fname = "-"; // reading from stdin - else { error("%s",usage_text()); } - } - else if ( optind+1!=argc ) error("%s",usage_text()); - else args->fname = argv[optind]; - - init_data(args); - - while ( bcf_sr_next_line(args->sr) ) - { - bcf1_t *rec = bcf_sr_get_line(args->sr,0); - for (i=0; infilters; i++) - process_record(args, rec, &args->filters[i]); - } - - report_stats(args); - destroy_data(args); - - return 0; -} diff --git a/bcftools/plugins/smpl-stats.c.pysam.c b/bcftools/plugins/smpl-stats.c.pysam.c deleted file mode 100644 index 5d9dc87..0000000 --- a/bcftools/plugins/smpl-stats.c.pysam.c +++ /dev/null @@ -1,485 +0,0 @@ -#include "bcftools.pysam.h" - -/* The MIT License - - Copyright (c) 2018 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include // for isatty -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "filter.h" - - -// Logic of the filters: include or exclude sites which match the filters? -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -typedef struct -{ - uint32_t - npass, // number of genotypes passing the filter - nnon_ref, // number of non-reference genotypes - nhomRR, - nhomAA, - nhemi, - nhet, - nSNV, - nIndel, - nmissing, - nsingleton, // het different from everyone else - nts, ntv; // number of transitions and transversions -} -stats_t; - -typedef struct -{ - stats_t *stats, site_stats; - filter_t *filter; - char *expr; -} -flt_stats_t; - -typedef struct -{ - int argc, filter_logic, regions_is_file, targets_is_file; - int nflt_str; - char *filter_str, **flt_str; - char **argv, *output_fname, *fname, *regions, *targets; - bcf_srs_t *sr; - bcf_hdr_t *hdr; - flt_stats_t *filters; - int nfilters, nsmpl; - int32_t *gt_arr, *ac; - int mgt_arr, mac; -} -args_t; - -args_t args; - -const char *about(void) -{ - return "Calculate basic per-sample stats scanning over a range of thresholds simultaneously.\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Calculates basic per-sample stats. Use curly brackets to scan a range of values simultaneously\n" - "Usage: bcftools +smpl-stats [Plugin Options]\n" - "Plugin options:\n" - " -e, --exclude EXPR exclude sites and samples for which the expression is true\n" - " -i, --include EXPR include sites and samples for which the expression is true\n" - " -o, --output FILE output file name [bcftools_stdout]\n" - " -r, --regions REG restrict to comma-separated list of regions\n" - " -R, --regions-file FILE restrict to regions listed in a file\n" - " -t, --targets REG similar to -r but streams rather than index-jumps\n" - " -T, --targets-file FILE similar to -R but streams rather than index-jumps\n" - "\n" - "Example:\n" - " bcftools +smpl-stats -i 'GQ>{10,20,30,40,50}' file.bcf\n" - "\n"; -} - -static void parse_filters(args_t *args) -{ - if ( !args->filter_str ) return; - int mflt = 1; - args->nflt_str = 1; - args->flt_str = (char**) malloc(sizeof(char*)); - args->flt_str[0] = strdup(args->filter_str); - while (1) - { - int i, expanded = 0; - for (i=args->nflt_str-1; i>=0; i--) - { - char *exp_beg = strchr(args->flt_str[i], '{'); - if ( !exp_beg ) continue; - char *exp_end = strchr(exp_beg+1, '}'); - if ( !exp_end ) error("Could not parse the expression: %s\n", args->filter_str); - char *beg = exp_beg+1, *mid = beg; - while ( midflt_str[i], exp_beg - args->flt_str[i], &tmp); - kputsn(beg, mid - beg, &tmp); - kputs(exp_end+1, &tmp); - args->nflt_str++; - hts_expand(char*, args->nflt_str, mflt, args->flt_str); - args->flt_str[args->nflt_str-1] = tmp.s; - beg = ++mid; - } - expanded = 1; - free(args->flt_str[i]); - memmove(&args->flt_str[i], &args->flt_str[i+1], (args->nflt_str-i-1)*sizeof(*args->flt_str)); - args->nflt_str--; - args->flt_str[args->nflt_str] = NULL; - } - if ( !expanded ) break; - } - - fprintf(bcftools_stderr,"Collecting data for %d filtering expressions\n", args->nflt_str); -} - -static void init_data(args_t *args) -{ - args->sr = bcf_sr_init(); - if ( args->regions ) - { - args->sr->require_index = 1; - if ( bcf_sr_set_regions(args->sr, args->regions, args->regions_is_file)<0 ) error("Failed to read the regions: %s\n",args->regions); - } - if ( args->targets && bcf_sr_set_targets(args->sr, args->targets, args->targets_is_file, 0)<0 ) error("Failed to read the targets: %s\n",args->targets); - if ( !bcf_sr_add_reader(args->sr,args->fname) ) error("Error: %s\n", bcf_sr_strerror(args->sr->errnum)); - args->hdr = bcf_sr_get_header(args->sr,0); - - parse_filters(args); - - int i; - if ( !args->nflt_str ) - { - args->filters = (flt_stats_t*) calloc(1, sizeof(flt_stats_t)); - args->nfilters = 1; - args->filters[0].expr = strdup("all"); - } - else - { - args->nfilters = args->nflt_str; - args->filters = (flt_stats_t*) calloc(args->nfilters, sizeof(flt_stats_t)); - for (i=0; infilters; i++) - { - args->filters[i].filter = filter_init(args->hdr, args->flt_str[i]); - args->filters[i].expr = strdup(args->flt_str[i]); - - // replace tab's with spaces so that the output stays parsable - char *tmp = args->filters[i].expr; - while ( *tmp ) - { - if ( *tmp=='\t' ) *tmp = ' '; - tmp++; - } - } - } - args->nsmpl = bcf_hdr_nsamples(args->hdr); - for (i=0; infilters; i++) - args->filters[i].stats = (stats_t*) calloc(args->nsmpl,sizeof(stats_t)); -} -static void destroy_data(args_t *args) -{ - int i; - for (i=0; infilters; i++) - { - if ( args->filters[i].filter ) filter_destroy(args->filters[i].filter); - free(args->filters[i].stats); - free(args->filters[i].expr); - } - free(args->filters); - for (i=0; inflt_str; i++) free(args->flt_str[i]); - free(args->flt_str); - bcf_sr_destroy(args->sr); - free(args->ac); - free(args->gt_arr); - free(args); -} -static void report_stats(args_t *args) -{ - int i = 0,j; - FILE *fh = !args->output_fname || !strcmp("-",args->output_fname) ? bcftools_stdout : fopen(args->output_fname,"w"); - if ( !fh ) error("Could not open the file for writing: %s\n", args->output_fname); - fprintf(fh,"# CMD line shows the command line used to generate this output\n"); - fprintf(fh,"# DEF lines define expressions for all tested thresholds\n"); - fprintf(fh,"# FLT* lines report numbers for every threshold and every sample:\n"); - fprintf(fh,"# %d) filter id\n", ++i); - fprintf(fh,"# %d) sample\n", ++i); - fprintf(fh,"# %d) number of genotypes which pass the filter\n", ++i); - fprintf(fh,"# %d) number of non-reference genotypes\n", ++i); - fprintf(fh,"# %d) number of homozygous ref genotypes (0/0 or 0)\n", ++i); - fprintf(fh,"# %d) number of homozygous alt genotypes (1/1, 2/2, etc)\n", ++i); - fprintf(fh,"# %d) number of heterozygous genotypes (0/1, 1/2, etc)\n", ++i); - fprintf(fh,"# %d) number of hemizygous genotypes (0, 1, etc)\n", ++i); - fprintf(fh,"# %d) number of SNVs\n", ++i); - fprintf(fh,"# %d) number of indels\n", ++i); - fprintf(fh,"# %d) number of singletons\n", ++i); - fprintf(fh,"# %d) number of missing genotypes (./., ., ./0, etc)\n", ++i); - fprintf(fh,"# %d) number of transitions (genotypes such as \"1/2\" are counted twice)\n", ++i); - fprintf(fh,"# %d) number of transversions (genotypes such as \"1/2\" are counted twice)\n", ++i); - fprintf(fh,"# %d) overall ts/tv\n", ++i); - i = 0; - fprintf(fh,"# SITE* lines report numbers for every threshold and site:\n"); - fprintf(fh,"# %d) filter id\n", ++i); - fprintf(fh,"# %d) number of sites which pass the filter\n", ++i); - fprintf(fh,"# %d) number of SNVs\n", ++i); - fprintf(fh,"# %d) number of indels\n", ++i); - fprintf(fh,"# %d) number of singletons\n", ++i); - fprintf(fh,"# %d) number of transitions (counted at most once at multiallelic sites)\n", ++i); - fprintf(fh,"# %d) number of transversions (counted at most once at multiallelic sites)\n", ++i); - fprintf(fh,"# %d) overall ts/tv\n", ++i); - fprintf(fh, "CMD\t%s", args->argv[0]); - for (i=1; iargc; i++) fprintf(fh, " %s",args->argv[i]); - fprintf(fh, "\n"); - for (i=0; infilters; i++) - { - flt_stats_t *flt = &args->filters[i]; - fprintf(fh,"DEF\tFLT%d\t%s\n", i, flt->expr); - } - for (i=0; infilters; i++) - { - flt_stats_t *flt = &args->filters[i]; - for (j=0; jnsmpl; j++) - { - fprintf(fh,"FLT%d", i); - fprintf(fh,"\t%s",args->hdr->samples[j]); - stats_t *stats = &flt->stats[j]; - fprintf(fh,"\t%d", stats->npass); - fprintf(fh,"\t%d", stats->nnon_ref); - fprintf(fh,"\t%d", stats->nhomRR); - fprintf(fh,"\t%d", stats->nhomAA); - fprintf(fh,"\t%d", stats->nhet); - fprintf(fh,"\t%d", stats->nhemi); - fprintf(fh,"\t%d", stats->nSNV); - fprintf(fh,"\t%d", stats->nIndel); - fprintf(fh,"\t%d", stats->nsingleton); - fprintf(fh,"\t%d", stats->nmissing); - fprintf(fh,"\t%d", stats->nts); - fprintf(fh,"\t%d", stats->ntv); - fprintf(fh,"\t%.2f", stats->ntv ? (float)stats->nts/stats->ntv : INFINITY); - fprintf(fh,"\n"); - } - fprintf(fh,"SITE%d", i); - stats_t *stats = &flt->site_stats; - fprintf(fh,"\t%d", stats->npass); - fprintf(fh,"\t%d", stats->nSNV); - fprintf(fh,"\t%d", stats->nIndel); - fprintf(fh,"\t%d", stats->nsingleton); - fprintf(fh,"\t%d", stats->nts); - fprintf(fh,"\t%d", stats->ntv); - fprintf(fh,"\t%.2f", stats->ntv ? (float)stats->nts/stats->ntv : INFINITY); - fprintf(fh,"\n"); - } - if ( fclose(fh)!=0 ) error("Close failed: %s\n", (!args->output_fname || !strcmp("-",args->output_fname)) ? "bcftools_stdout" : args->output_fname); -} - -static inline int parse_genotype(int32_t *arr, int ngt1, int idx, int als[2]) -{ - int32_t *ptr = arr + ngt1 * idx; - if ( bcf_gt_is_missing(ptr[0]) ) return -1; - als[0] = bcf_gt_allele(ptr[0]); - - if ( ngt1==1 || ptr[1]==bcf_int32_vector_end ) { ptr[1] = ptr[0]; return -2; } - - if ( bcf_gt_is_missing(ptr[1]) ) return -1; - als[1] = bcf_gt_allele(ptr[1]); - - return 0; -} - -static void process_record(args_t *args, bcf1_t *rec, flt_stats_t *flt) -{ - int i,j; - uint8_t *smpl_pass = NULL; - - // Find out which trios pass and if the site passes - if ( flt->filter ) - { - int pass_site = filter_test(flt->filter, rec, (const uint8_t**) &smpl_pass); - if ( args->filter_logic & FLT_EXCLUDE ) - { - if ( pass_site ) - { - if ( !smpl_pass ) return; - pass_site = 0; - for (i=0; insmpl; i++) - { - if ( smpl_pass[i] ) smpl_pass[i] = 0; - else { smpl_pass[i] = 1; pass_site = 1; } - } - if ( !pass_site ) return; - } - else - for (i=0; insmpl; i++) smpl_pass[i] = 1; - } - else if ( !pass_site ) return; - } - - // Find out the allele counts. Try to use INFO/AC, if not present, determine from the genotypes - hts_expand(int, rec->n_allele, args->mac, args->ac); - if ( !bcf_calc_ac(args->hdr, rec, args->ac, BCF_UN_INFO|BCF_UN_FMT) ) return; - - // Get the genotypes - int ngt = bcf_get_genotypes(args->hdr, rec, &args->gt_arr, &args->mgt_arr); - if ( ngt<0 ) return; - int ngt1 = ngt / rec->n_sample; - - - // For ts/tv: numeric code of the reference allele, -1 for insertions - int ref = !rec->d.allele[0][1] ? bcf_acgt2int(*rec->d.allele[0]) : -1; - - int star_allele = -1; - for (i=1; in_allele; i++) - if ( !rec->d.allele[i][1] && rec->d.allele[i][0]=='*' ) { star_allele = i; break; } - - // Run the stats - int site_pass = 0; - int site_SNV = 0; - int site_Indel = 0; - int site_has_ts = 0; - int site_has_tv = 0; - int site_singleton = 0; - for (i=0; insmpl; i++) - { - if ( smpl_pass && !smpl_pass[i] ) continue; - stats_t *stats = &flt->stats[i]; - - // Determine the alternate allele and the genotypes, skip if any of the alleles is missing. - int als[2]; - int ret = parse_genotype(args->gt_arr, ngt1, i, als); - if ( ret==-1 ) { stats->nmissing++; continue; } // missing allele - if ( ret==-2 ) stats->nhemi++; - else if ( als[0]!=als[1] ) stats->nhet++; - else if ( als[0]==0 ) stats->nhomRR++; - else stats->nhomAA++; - - stats->npass++; - site_pass = 1; - - // Is there an alternate allele other than *? - int has_nonref = 0; - for (j=0; j<2; j++) - { - if ( als[j]==star_allele ) continue; - if ( als[j]==0 ) continue; - has_nonref = 1; - } - if ( !has_nonref ) continue; // only ref or * in this genotype - - stats->nnon_ref++; - - // Calculate ts/tv, count SNPs, indels. It does the right thing and handles also HetAA genotypes - { - int has_ts = 0, has_tv = 0, has_snv = 0, has_indel = 0; - for (j=0; j<2; j++) - { - if ( als[j]==0 || als[j]==star_allele ) continue; - if ( als[j] >= rec->n_allele ) - error("The GT index is out of range at %s:%d in %s\n", bcf_seqname(args->hdr,rec),rec->pos+1,args->hdr->samples[j]); - - if ( args->ac[als[j]]==1 ) { stats->nsingleton++; site_singleton = 1; } - - int var_type = bcf_get_variant_type(rec, als[j]); - if ( var_type==VCF_SNP || var_type==VCF_MNP ) - { - int k = 0; - while ( rec->d.allele[0][k] && rec->d.allele[als[j]][k] ) - { - if ( rec->d.allele[0][k]==rec->d.allele[als[j]][k] ) { k++; continue; } - - int alt = bcf_acgt2int(rec->d.allele[als[j]][k]); - if ( abs(ref-alt)==2 ) has_ts = 1; - else has_tv = 1; - has_snv = 1; - - k++; - } - } - else if ( var_type==VCF_INDEL ) has_indel = 1; - } - if ( has_ts ) { stats->nts++; site_has_ts = 1; } - if ( has_tv ) { stats->ntv++; site_has_tv = 1; } - if ( has_snv ) { stats->nSNV++; site_SNV = 1; } - if ( has_indel ) { stats->nIndel++; site_Indel = 1; } - } - } - flt->site_stats.npass += site_pass; - flt->site_stats.nSNV += site_SNV; - flt->site_stats.nIndel += site_Indel; - flt->site_stats.nts += site_has_ts; - flt->site_stats.ntv += site_has_tv; - flt->site_stats.nsingleton += site_singleton; -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->argc = argc; args->argv = argv; - args->output_fname = "-"; - static struct option loptions[] = - { - {"include",required_argument,0,'i'}, - {"exclude",required_argument,0,'e'}, - {"output",required_argument,NULL,'o'}, - {"regions",1,0,'r'}, - {"regions-file",1,0,'R'}, - {"targets",1,0,'t'}, - {"targets-file",1,0,'T'}, - {NULL,0,NULL,0} - }; - int c, i; - while ((c = getopt_long(argc, argv, "o:s:i:e:r:R:t:T:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'e': args->filter_str = optarg; args->filter_logic |= FLT_EXCLUDE; break; - case 'i': args->filter_str = optarg; args->filter_logic |= FLT_INCLUDE; break; - case 't': args->targets = optarg; break; - case 'T': args->targets = optarg; args->targets_is_file = 1; break; - case 'r': args->regions = optarg; break; - case 'R': args->regions = optarg; args->regions_is_file = 1; break; - case 'o': args->output_fname = optarg; break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - if ( optind==argc ) - { - if ( !isatty(fileno((FILE *)stdin)) ) args->fname = "-"; // reading from stdin - else { error("%s",usage_text()); } - } - else if ( optind+1!=argc ) error("%s",usage_text()); - else args->fname = argv[optind]; - - init_data(args); - - while ( bcf_sr_next_line(args->sr) ) - { - bcf1_t *rec = bcf_sr_get_line(args->sr,0); - for (i=0; infilters; i++) - process_record(args, rec, &args->filters[i]); - } - - report_stats(args); - destroy_data(args); - - return 0; -} diff --git a/bcftools/plugins/split.c b/bcftools/plugins/split.c deleted file mode 100644 index 7cd38a4..0000000 --- a/bcftools/plugins/split.c +++ /dev/null @@ -1,415 +0,0 @@ -/* - Copyright (C) 2017 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -/* - Split VCF by sample(s) - -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "filter.h" - -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -typedef struct -{ - htsFile **fh; - filter_t *filter; - char *filter_str; - int filter_logic; // one of FLT_INCLUDE/FLT_EXCLUDE (-i or -e) - uint8_t *info_tags, *fmt_tags; - int ninfo_tags, minfo_tags, nfmt_tags, mfmt_tags, keep_info, keep_fmt; - int argc, region_is_file, target_is_file, output_type; - char **argv, *region, *target, *fname, *output_dir, *keep_tags, **bnames, *samples_fname; - bcf_hdr_t *hdr_in, *hdr_out; - bcf_srs_t *sr; -} -args_t; - -const char *about(void) -{ - return "Split VCF by sample creating single-sample VCFs\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Split VCF by sample, creating single-sample VCFs.\n" - "\n" - "Usage: bcftools +split [Options]\n" - "Plugin options:\n" - " -e, --exclude EXPR exclude sites for which the expression is true (applied on the outputs)\n" - " -i, --include EXPR include only sites for which the expression is true (applied on the outputs)\n" - " -k, --keep-tags LIST list of tags to keep. By default all tags are preserved\n" - " -o, --output DIR write output to the directory DIR\n" - " -O, --output-type b|u|z|v b: compressed BCF, u: uncompressed BCF, z: compressed VCF, v: uncompressed VCF [v]\n" - " -r, --regions REGION restrict to comma-separated list of regions\n" - " -R, --regions-file FILE restrict to regions listed in a file\n" - " -S, --samples-file FILE list of samples to keep with second (optional) column for basename of the new file\n" - " -t, --targets REGION similar to -r but streams rather than index-jumps\n" - " -T, --targets-file FILE similar to -R but streams rather than index-jumps\n" - "Examples:\n" - " # Split a VCF file\n" - " bcftools +split input.bcf -Ob -o dir\n" - "\n" - " # Exclude sites with missing or hom-ref genotypes\n" - " bcftools +split input.bcf -Ob -o dir -i'GT=\"alt\"'\n" - "\n" - " # Keep all INFO tags but only GT and PL in FORMAT\n" - " bcftools +split input.bcf -Ob -o dir -k INFO,FMT/GT,PL\n" - "\n" - " # Keep all FORMAT tags but drop all INFO tags\n" - " bcftools +split input.bcf -Ob -o dir -k FMT\n" - "\n"; -} - -void mkdir_p(const char *fmt, ...); - -char **set_file_base_names(args_t *args) -{ - int i, nsmpl = bcf_hdr_nsamples(args->hdr_in); - char **fnames = (char**) calloc(nsmpl,sizeof(char*)); - if ( args->samples_fname ) - { - kstring_t str = {0,0,0}; - int nsamples = 0; - char **samples = NULL; - samples = hts_readlines(args->samples_fname, &nsamples); - for (i=0; ihdr_in, BCF_DT_SAMPLE, str.s); - if ( idx<0 ) - { - fprintf(stderr,"Warning: The sample \"%s\" is not present in %s\n", str.s,args->fname); - continue; - } - while ( *ptr && isspace(*ptr) ) ptr++; - if ( !*ptr ) - { - fnames[idx] = strdup(str.s); - continue; - } - str.l = 0; - while ( *ptr ) - { - if ( *ptr=='\\' && !escaped ) { escaped = 1; ptr++; continue; } - if ( isspace(*ptr) && !escaped ) break; - kputc(*ptr, &str); - escaped = 0; - ptr++; - } - fnames[idx] = strdup(str.s); - } - for (i=0; ihdr_in->samples[i]); - } - return fnames; -} - -static void init_data(args_t *args) -{ - args->sr = bcf_sr_init(); - if ( args->region ) - { - args->sr->require_index = 1; - if ( bcf_sr_set_regions(args->sr, args->region, args->region_is_file)<0 ) error("Failed to read the regions: %s\n",args->region); - } - if ( args->target && bcf_sr_set_targets(args->sr, args->target, args->target_is_file, 0)<0 ) error("Failed to read the targets: %s\n",args->target); - if ( !bcf_sr_add_reader(args->sr,args->fname) ) error("Error: %s\n", bcf_sr_strerror(args->sr->errnum)); - args->hdr_in = bcf_sr_get_header(args->sr,0); - args->hdr_out = bcf_hdr_dup(args->hdr_in); - - if ( args->filter_str ) - args->filter = filter_init(args->hdr_in, args->filter_str); - - mkdir_p("%s/",args->output_dir); - - int i, nsmpl = bcf_hdr_nsamples(args->hdr_in); - if ( !nsmpl ) error("No samples to split: %s\n", args->fname); - args->fh = (htsFile**)calloc(nsmpl,sizeof(*args->fh)); - args->bnames = set_file_base_names(args); - kstring_t str = {0,0,0}; - for (i=0; ibnames[i] ) continue; - str.l = 0; - kputs(args->output_dir, &str); - if ( str.s[str.l-1] != '/' ) kputc('/', &str); - int k, l = str.l; - kputs(args->bnames[i], &str); - for (k=l; koutput_type & FT_BCF ) kputs(".bcf", &str); - else if ( args->output_type & FT_GZ ) kputs(".vcf.gz", &str); - else kputs(".vcf", &str); - args->fh[i] = hts_open(str.s, hts_bcf_wmode(args->output_type)); - if ( args->fh[i] == NULL ) error("Can't write to \"%s\": %s\n", str.s, strerror(errno)); - bcf_hdr_nsamples(args->hdr_out) = 1; - args->hdr_out->samples[0] = args->bnames[i]; - bcf_hdr_write(args->fh[i], args->hdr_out); - } - free(str.s); - - // parse tags - int is_info = 0, is_fmt = 0; - char *beg = args->keep_tags; - while ( beg && *beg ) - { - if ( !strncasecmp("INFO/",beg,5) ) { is_info = 1; is_fmt = 0; beg += 5; } - else if ( !strcasecmp("INFO",beg) ) { args->keep_info = 1; break; } - else if ( !strncasecmp("INFO,",beg,5) ) { args->keep_info = 1; beg += 5; continue; } - else if ( !strncasecmp("FMT/",beg,4) ) { is_info = 0; is_fmt = 1; beg += 4; } - else if ( !strncasecmp("FORMAT/",beg,7) ) { is_info = 0; is_fmt = 1; beg += 7; } - else if ( !strcasecmp("FMT",beg) ) { args->keep_fmt = 1; break; } - else if ( !strcasecmp("FORMAT",beg) ) { args->keep_fmt = 1; break; } - else if ( !strncasecmp("FMT,",beg,4) ) { args->keep_fmt = 1; beg += 4; continue; } - else if ( !strncasecmp("FORMAT,",beg,7) ) { args->keep_fmt = 1; beg += 7; continue; } - char *end = beg; - while ( *end && *end!=',' ) end++; - char tmp = *end; *end = 0; - int id = bcf_hdr_id2int(args->hdr_in, BCF_DT_ID, beg); - beg = tmp ? end + 1 : end; - if ( is_info && bcf_hdr_idinfo_exists(args->hdr_in,BCF_HL_INFO,id) ) - { - if ( id >= args->ninfo_tags ) args->ninfo_tags = id + 1; - hts_expand0(uint8_t, args->ninfo_tags, args->minfo_tags, args->info_tags); - args->info_tags[id] = 1; - } - if ( is_fmt && bcf_hdr_idinfo_exists(args->hdr_in,BCF_HL_FMT,id) ) - { - if ( id >= args->nfmt_tags ) args->nfmt_tags = id + 1; - hts_expand0(uint8_t, args->nfmt_tags, args->mfmt_tags, args->fmt_tags); - args->fmt_tags[id] = 1; - } - } - if ( !args->keep_info && !args->keep_fmt && !args->ninfo_tags && !args->nfmt_tags ) - { - args->keep_info = args->keep_fmt = 1; - } -} -static void destroy_data(args_t *args) -{ - free(args->info_tags); - free(args->fmt_tags); - if ( args->filter ) - filter_destroy(args->filter); - int i, nsmpl = bcf_hdr_nsamples(args->hdr_in); - for (i=0; ifh[i] && hts_close(args->fh[i])!=0 ) error("Error: close failed!\n"); - free(args->bnames[i]); - } - free(args->bnames); - free(args->fh); - bcf_sr_destroy(args->sr); - bcf_hdr_destroy(args->hdr_out); - free(args); -} - -static bcf1_t *rec_set_info(args_t *args, bcf1_t *rec) -{ - bcf1_t *out = bcf_init1(); - out->rid = rec->rid; - out->pos = rec->pos; - out->rlen = rec->rlen; - out->qual = rec->qual; - out->n_allele = rec->n_allele; - out->n_sample = 1; - if ( args->keep_info ) - { - out->n_info = rec->n_info; - out->shared.m = out->shared.l = rec->shared.l; - out->shared.s = (char*) malloc(out->shared.l); - memcpy(out->shared.s,rec->shared.s,out->shared.l); - return out; - } - - // build the BCF record - kstring_t tmp = {0,0,0}; - char *ptr = rec->shared.s; - kputsn_(ptr, rec->unpack_size[0], &tmp); ptr += rec->unpack_size[0]; // ID - kputsn_(ptr, rec->unpack_size[1], &tmp); ptr += rec->unpack_size[1]; // REF+ALT - kputsn_(ptr, rec->unpack_size[2], &tmp); // FILTER - if ( args->ninfo_tags ) - { - int i; - for (i=0; in_info; i++) - { - bcf_info_t *info = &rec->d.info[i]; - int id = info->key; - if ( !args->info_tags[id] ) continue; - kputsn_(info->vptr - info->vptr_off, info->vptr_len + info->vptr_off, &tmp); - out->n_info++; - } - } - out->shared.m = tmp.m; - out->shared.s = tmp.s; - out->shared.l = tmp.l; - out->unpacked = 0; - return out; -} - -static bcf1_t *rec_set_format(args_t *args, bcf1_t *src, int ismpl, bcf1_t *dst) -{ - dst->n_fmt = 0; - kstring_t tmp = dst->indiv; tmp.l = 0; - int i; - for (i=0; in_fmt; i++) - { - bcf_fmt_t *fmt = &src->d.fmt[i]; - int id = fmt->id; - if ( !args->keep_fmt && !args->fmt_tags[id] ) continue; - - bcf_enc_int1(&tmp, id); - bcf_enc_size(&tmp, fmt->n, fmt->type); - kputsn_(fmt->p + ismpl*fmt->size, fmt->size, &tmp); - - dst->n_fmt++; - } - dst->indiv = tmp; - return dst; -} - -static void process(args_t *args) -{ - bcf1_t *rec = bcf_sr_get_line(args->sr,0); - bcf_unpack(rec, BCF_UN_ALL); - - int i, site_pass = 1; - const uint8_t *smpl_pass = NULL; - if ( args->filter ) - { - site_pass = filter_test(args->filter, rec, &smpl_pass); - if ( args->filter_logic & FLT_EXCLUDE ) site_pass = site_pass ? 0 : 1; - } - bcf1_t *out = NULL; - for (i=0; in_sample; i++) - { - if ( !args->fh[i] ) continue; - if ( !smpl_pass && !site_pass ) continue; - if ( smpl_pass ) - { - int pass = args->filter_logic & FLT_EXCLUDE ? ( smpl_pass[i] ? 0 : 1) : smpl_pass[i]; - if ( !pass ) continue; - } - if ( !out ) out = rec_set_info(args, rec); - rec_set_format(args, rec, i, out); - bcf_write(args->fh[i], args->hdr_out, out); - } - if ( out ) bcf_destroy(out); -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->argc = argc; args->argv = argv; - args->output_type = FT_VCF; - static struct option loptions[] = - { - {"keep-tags",required_argument,NULL,'k'}, - {"exclude",required_argument,NULL,'e'}, - {"include",required_argument,NULL,'i'}, - {"regions",required_argument,NULL,'r'}, - {"regions-file",required_argument,NULL,'R'}, - {"samples-file",required_argument,NULL,'S'}, - {"output",required_argument,NULL,'o'}, - {"output-type",required_argument,NULL,'O'}, - {NULL,0,NULL,0} - }; - int c; - while ((c = getopt_long(argc, argv, "vr:R:t:T:o:O:i:e:k:S:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'k': args->keep_tags = optarg; break; - case 'e': args->filter_str = optarg; args->filter_logic |= FLT_EXCLUDE; break; - case 'i': args->filter_str = optarg; args->filter_logic |= FLT_INCLUDE; break; - case 'T': args->target = optarg; args->target_is_file = 1; break; - case 't': args->target = optarg; break; - case 'R': args->region = optarg; args->region_is_file = 1; break; - case 'S': args->samples_fname = optarg; break; - case 'r': args->region = optarg; break; - case 'o': args->output_dir = optarg; break; - case 'O': - switch (optarg[0]) { - case 'b': args->output_type = FT_BCF_GZ; break; - case 'u': args->output_type = FT_BCF; break; - case 'z': args->output_type = FT_VCF_GZ; break; - case 'v': args->output_type = FT_VCF; break; - default: error("The output type \"%s\" not recognised\n", optarg); - } - break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - if ( optind==argc ) - { - if ( !isatty(fileno((FILE *)stdin)) ) args->fname = "-"; // reading from stdin - else { error("%s", usage_text()); } - } - else if ( optind+1!=argc ) error("%s", usage_text()); - else args->fname = argv[optind]; - - if ( !args->output_dir ) error("Missing the -o option\n"); - if ( args->filter_logic == (FLT_EXCLUDE|FLT_INCLUDE) ) error("Only one of -i or -e can be given.\n"); - - init_data(args); - - while ( bcf_sr_next_line(args->sr) ) process(args); - - destroy_data(args); - return 0; -} - - diff --git a/bcftools/plugins/split.c.pysam.c b/bcftools/plugins/split.c.pysam.c deleted file mode 100644 index 140ab5d..0000000 --- a/bcftools/plugins/split.c.pysam.c +++ /dev/null @@ -1,417 +0,0 @@ -#include "bcftools.pysam.h" - -/* - Copyright (C) 2017 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -/* - Split VCF by sample(s) - -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "filter.h" - -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -typedef struct -{ - htsFile **fh; - filter_t *filter; - char *filter_str; - int filter_logic; // one of FLT_INCLUDE/FLT_EXCLUDE (-i or -e) - uint8_t *info_tags, *fmt_tags; - int ninfo_tags, minfo_tags, nfmt_tags, mfmt_tags, keep_info, keep_fmt; - int argc, region_is_file, target_is_file, output_type; - char **argv, *region, *target, *fname, *output_dir, *keep_tags, **bnames, *samples_fname; - bcf_hdr_t *hdr_in, *hdr_out; - bcf_srs_t *sr; -} -args_t; - -const char *about(void) -{ - return "Split VCF by sample creating single-sample VCFs\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Split VCF by sample, creating single-sample VCFs.\n" - "\n" - "Usage: bcftools +split [Options]\n" - "Plugin options:\n" - " -e, --exclude EXPR exclude sites for which the expression is true (applied on the outputs)\n" - " -i, --include EXPR include only sites for which the expression is true (applied on the outputs)\n" - " -k, --keep-tags LIST list of tags to keep. By default all tags are preserved\n" - " -o, --output DIR write output to the directory DIR\n" - " -O, --output-type b|u|z|v b: compressed BCF, u: uncompressed BCF, z: compressed VCF, v: uncompressed VCF [v]\n" - " -r, --regions REGION restrict to comma-separated list of regions\n" - " -R, --regions-file FILE restrict to regions listed in a file\n" - " -S, --samples-file FILE list of samples to keep with second (optional) column for basename of the new file\n" - " -t, --targets REGION similar to -r but streams rather than index-jumps\n" - " -T, --targets-file FILE similar to -R but streams rather than index-jumps\n" - "Examples:\n" - " # Split a VCF file\n" - " bcftools +split input.bcf -Ob -o dir\n" - "\n" - " # Exclude sites with missing or hom-ref genotypes\n" - " bcftools +split input.bcf -Ob -o dir -i'GT=\"alt\"'\n" - "\n" - " # Keep all INFO tags but only GT and PL in FORMAT\n" - " bcftools +split input.bcf -Ob -o dir -k INFO,FMT/GT,PL\n" - "\n" - " # Keep all FORMAT tags but drop all INFO tags\n" - " bcftools +split input.bcf -Ob -o dir -k FMT\n" - "\n"; -} - -void mkdir_p(const char *fmt, ...); - -char **set_file_base_names(args_t *args) -{ - int i, nsmpl = bcf_hdr_nsamples(args->hdr_in); - char **fnames = (char**) calloc(nsmpl,sizeof(char*)); - if ( args->samples_fname ) - { - kstring_t str = {0,0,0}; - int nsamples = 0; - char **samples = NULL; - samples = hts_readlines(args->samples_fname, &nsamples); - for (i=0; ihdr_in, BCF_DT_SAMPLE, str.s); - if ( idx<0 ) - { - fprintf(bcftools_stderr,"Warning: The sample \"%s\" is not present in %s\n", str.s,args->fname); - continue; - } - while ( *ptr && isspace(*ptr) ) ptr++; - if ( !*ptr ) - { - fnames[idx] = strdup(str.s); - continue; - } - str.l = 0; - while ( *ptr ) - { - if ( *ptr=='\\' && !escaped ) { escaped = 1; ptr++; continue; } - if ( isspace(*ptr) && !escaped ) break; - kputc(*ptr, &str); - escaped = 0; - ptr++; - } - fnames[idx] = strdup(str.s); - } - for (i=0; ihdr_in->samples[i]); - } - return fnames; -} - -static void init_data(args_t *args) -{ - args->sr = bcf_sr_init(); - if ( args->region ) - { - args->sr->require_index = 1; - if ( bcf_sr_set_regions(args->sr, args->region, args->region_is_file)<0 ) error("Failed to read the regions: %s\n",args->region); - } - if ( args->target && bcf_sr_set_targets(args->sr, args->target, args->target_is_file, 0)<0 ) error("Failed to read the targets: %s\n",args->target); - if ( !bcf_sr_add_reader(args->sr,args->fname) ) error("Error: %s\n", bcf_sr_strerror(args->sr->errnum)); - args->hdr_in = bcf_sr_get_header(args->sr,0); - args->hdr_out = bcf_hdr_dup(args->hdr_in); - - if ( args->filter_str ) - args->filter = filter_init(args->hdr_in, args->filter_str); - - mkdir_p("%s/",args->output_dir); - - int i, nsmpl = bcf_hdr_nsamples(args->hdr_in); - if ( !nsmpl ) error("No samples to split: %s\n", args->fname); - args->fh = (htsFile**)calloc(nsmpl,sizeof(*args->fh)); - args->bnames = set_file_base_names(args); - kstring_t str = {0,0,0}; - for (i=0; ibnames[i] ) continue; - str.l = 0; - kputs(args->output_dir, &str); - if ( str.s[str.l-1] != '/' ) kputc('/', &str); - int k, l = str.l; - kputs(args->bnames[i], &str); - for (k=l; koutput_type & FT_BCF ) kputs(".bcf", &str); - else if ( args->output_type & FT_GZ ) kputs(".vcf.gz", &str); - else kputs(".vcf", &str); - args->fh[i] = hts_open(str.s, hts_bcf_wmode(args->output_type)); - if ( args->fh[i] == NULL ) error("Can't write to \"%s\": %s\n", str.s, strerror(errno)); - bcf_hdr_nsamples(args->hdr_out) = 1; - args->hdr_out->samples[0] = args->bnames[i]; - bcf_hdr_write(args->fh[i], args->hdr_out); - } - free(str.s); - - // parse tags - int is_info = 0, is_fmt = 0; - char *beg = args->keep_tags; - while ( beg && *beg ) - { - if ( !strncasecmp("INFO/",beg,5) ) { is_info = 1; is_fmt = 0; beg += 5; } - else if ( !strcasecmp("INFO",beg) ) { args->keep_info = 1; break; } - else if ( !strncasecmp("INFO,",beg,5) ) { args->keep_info = 1; beg += 5; continue; } - else if ( !strncasecmp("FMT/",beg,4) ) { is_info = 0; is_fmt = 1; beg += 4; } - else if ( !strncasecmp("FORMAT/",beg,7) ) { is_info = 0; is_fmt = 1; beg += 7; } - else if ( !strcasecmp("FMT",beg) ) { args->keep_fmt = 1; break; } - else if ( !strcasecmp("FORMAT",beg) ) { args->keep_fmt = 1; break; } - else if ( !strncasecmp("FMT,",beg,4) ) { args->keep_fmt = 1; beg += 4; continue; } - else if ( !strncasecmp("FORMAT,",beg,7) ) { args->keep_fmt = 1; beg += 7; continue; } - char *end = beg; - while ( *end && *end!=',' ) end++; - char tmp = *end; *end = 0; - int id = bcf_hdr_id2int(args->hdr_in, BCF_DT_ID, beg); - beg = tmp ? end + 1 : end; - if ( is_info && bcf_hdr_idinfo_exists(args->hdr_in,BCF_HL_INFO,id) ) - { - if ( id >= args->ninfo_tags ) args->ninfo_tags = id + 1; - hts_expand0(uint8_t, args->ninfo_tags, args->minfo_tags, args->info_tags); - args->info_tags[id] = 1; - } - if ( is_fmt && bcf_hdr_idinfo_exists(args->hdr_in,BCF_HL_FMT,id) ) - { - if ( id >= args->nfmt_tags ) args->nfmt_tags = id + 1; - hts_expand0(uint8_t, args->nfmt_tags, args->mfmt_tags, args->fmt_tags); - args->fmt_tags[id] = 1; - } - } - if ( !args->keep_info && !args->keep_fmt && !args->ninfo_tags && !args->nfmt_tags ) - { - args->keep_info = args->keep_fmt = 1; - } -} -static void destroy_data(args_t *args) -{ - free(args->info_tags); - free(args->fmt_tags); - if ( args->filter ) - filter_destroy(args->filter); - int i, nsmpl = bcf_hdr_nsamples(args->hdr_in); - for (i=0; ifh[i] && hts_close(args->fh[i])!=0 ) error("Error: close failed!\n"); - free(args->bnames[i]); - } - free(args->bnames); - free(args->fh); - bcf_sr_destroy(args->sr); - bcf_hdr_destroy(args->hdr_out); - free(args); -} - -static bcf1_t *rec_set_info(args_t *args, bcf1_t *rec) -{ - bcf1_t *out = bcf_init1(); - out->rid = rec->rid; - out->pos = rec->pos; - out->rlen = rec->rlen; - out->qual = rec->qual; - out->n_allele = rec->n_allele; - out->n_sample = 1; - if ( args->keep_info ) - { - out->n_info = rec->n_info; - out->shared.m = out->shared.l = rec->shared.l; - out->shared.s = (char*) malloc(out->shared.l); - memcpy(out->shared.s,rec->shared.s,out->shared.l); - return out; - } - - // build the BCF record - kstring_t tmp = {0,0,0}; - char *ptr = rec->shared.s; - kputsn_(ptr, rec->unpack_size[0], &tmp); ptr += rec->unpack_size[0]; // ID - kputsn_(ptr, rec->unpack_size[1], &tmp); ptr += rec->unpack_size[1]; // REF+ALT - kputsn_(ptr, rec->unpack_size[2], &tmp); // FILTER - if ( args->ninfo_tags ) - { - int i; - for (i=0; in_info; i++) - { - bcf_info_t *info = &rec->d.info[i]; - int id = info->key; - if ( !args->info_tags[id] ) continue; - kputsn_(info->vptr - info->vptr_off, info->vptr_len + info->vptr_off, &tmp); - out->n_info++; - } - } - out->shared.m = tmp.m; - out->shared.s = tmp.s; - out->shared.l = tmp.l; - out->unpacked = 0; - return out; -} - -static bcf1_t *rec_set_format(args_t *args, bcf1_t *src, int ismpl, bcf1_t *dst) -{ - dst->n_fmt = 0; - kstring_t tmp = dst->indiv; tmp.l = 0; - int i; - for (i=0; in_fmt; i++) - { - bcf_fmt_t *fmt = &src->d.fmt[i]; - int id = fmt->id; - if ( !args->keep_fmt && !args->fmt_tags[id] ) continue; - - bcf_enc_int1(&tmp, id); - bcf_enc_size(&tmp, fmt->n, fmt->type); - kputsn_(fmt->p + ismpl*fmt->size, fmt->size, &tmp); - - dst->n_fmt++; - } - dst->indiv = tmp; - return dst; -} - -static void process(args_t *args) -{ - bcf1_t *rec = bcf_sr_get_line(args->sr,0); - bcf_unpack(rec, BCF_UN_ALL); - - int i, site_pass = 1; - const uint8_t *smpl_pass = NULL; - if ( args->filter ) - { - site_pass = filter_test(args->filter, rec, &smpl_pass); - if ( args->filter_logic & FLT_EXCLUDE ) site_pass = site_pass ? 0 : 1; - } - bcf1_t *out = NULL; - for (i=0; in_sample; i++) - { - if ( !args->fh[i] ) continue; - if ( !smpl_pass && !site_pass ) continue; - if ( smpl_pass ) - { - int pass = args->filter_logic & FLT_EXCLUDE ? ( smpl_pass[i] ? 0 : 1) : smpl_pass[i]; - if ( !pass ) continue; - } - if ( !out ) out = rec_set_info(args, rec); - rec_set_format(args, rec, i, out); - bcf_write(args->fh[i], args->hdr_out, out); - } - if ( out ) bcf_destroy(out); -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->argc = argc; args->argv = argv; - args->output_type = FT_VCF; - static struct option loptions[] = - { - {"keep-tags",required_argument,NULL,'k'}, - {"exclude",required_argument,NULL,'e'}, - {"include",required_argument,NULL,'i'}, - {"regions",required_argument,NULL,'r'}, - {"regions-file",required_argument,NULL,'R'}, - {"samples-file",required_argument,NULL,'S'}, - {"output",required_argument,NULL,'o'}, - {"output-type",required_argument,NULL,'O'}, - {NULL,0,NULL,0} - }; - int c; - while ((c = getopt_long(argc, argv, "vr:R:t:T:o:O:i:e:k:S:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'k': args->keep_tags = optarg; break; - case 'e': args->filter_str = optarg; args->filter_logic |= FLT_EXCLUDE; break; - case 'i': args->filter_str = optarg; args->filter_logic |= FLT_INCLUDE; break; - case 'T': args->target = optarg; args->target_is_file = 1; break; - case 't': args->target = optarg; break; - case 'R': args->region = optarg; args->region_is_file = 1; break; - case 'S': args->samples_fname = optarg; break; - case 'r': args->region = optarg; break; - case 'o': args->output_dir = optarg; break; - case 'O': - switch (optarg[0]) { - case 'b': args->output_type = FT_BCF_GZ; break; - case 'u': args->output_type = FT_BCF; break; - case 'z': args->output_type = FT_VCF_GZ; break; - case 'v': args->output_type = FT_VCF; break; - default: error("The output type \"%s\" not recognised\n", optarg); - } - break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - if ( optind==argc ) - { - if ( !isatty(fileno((FILE *)stdin)) ) args->fname = "-"; // reading from stdin - else { error("%s", usage_text()); } - } - else if ( optind+1!=argc ) error("%s", usage_text()); - else args->fname = argv[optind]; - - if ( !args->output_dir ) error("Missing the -o option\n"); - if ( args->filter_logic == (FLT_EXCLUDE|FLT_INCLUDE) ) error("Only one of -i or -e can be given.\n"); - - init_data(args); - - while ( bcf_sr_next_line(args->sr) ) process(args); - - destroy_data(args); - return 0; -} - - diff --git a/bcftools/plugins/tag2tag.c b/bcftools/plugins/tag2tag.c deleted file mode 100644 index 6fd2255..0000000 --- a/bcftools/plugins/tag2tag.c +++ /dev/null @@ -1,254 +0,0 @@ -/* plugins/tag2tag.c -- convert between similar tags - - Copyright (C) 2014-2016 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include -#include -#include "bcftools.h" - - -#define GP_TO_GL 1 -#define GL_TO_PL 2 -#define GP_TO_GT 3 -#define PL_TO_GL 4 - -static int mode = 0, drop_source_tag = 0; -static bcf_hdr_t *in_hdr, *out_hdr; -static float *farr = NULL, thresh = 0.1; -static int32_t *iarr = NULL; -static int mfarr = 0, miarr = 0; - -const char *about(void) -{ - return "Convert between similar tags, such as GL, PL and GP.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Convert between similar tags, such as GL, PL and GP.\n" - "Usage: bcftools +tag2tag [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " --gp-to-gl convert FORMAT/GP to FORMAT/GL\n" - " --gp-to-gt convert FORMAT/GP to FORMAT/GT by taking argmax of GP\n" - " --gl-to-pl convert FORMAT/GL to FORMAT/PL\n" - " --pl-to-gl convert FORMAT/PL to FORMAT/GL\n" - " -r, --replace drop the source tag\n" - " -t, --threshold threshold for GP to GT hard-call [0.1]\n" - "\n" - "Example:\n" - " bcftools +tag2tag in.vcf -- -r --gp-to-gl\n" - "\n"; -} - - -static void init_header(bcf_hdr_t *hdr, const char *ori, int ori_type, const char *new_hdr_line) -{ - if ( ori ) - bcf_hdr_remove(hdr,ori_type,ori); - - bcf_hdr_append(hdr, new_hdr_line); -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - static struct option loptions[] = - { - {"replace",no_argument,NULL,'r'}, - {"gp-to-gl",no_argument,NULL,1}, - {"gl-to-pl",no_argument,NULL,2}, - {"gp-to-gt",no_argument,NULL,3}, - {"pl-to-gl",no_argument,NULL,4}, - {"threshold",required_argument,NULL,'t'}, - {NULL,0,NULL,0} - }; - int c; - char *src_tag = "GP"; - while ((c = getopt_long(argc, argv, "?hrt:",loptions,NULL)) >= 0) - { - switch (c) - { - case 1 : src_tag = "GP"; mode = GP_TO_GL; break; - case 2 : src_tag = "GL"; mode = GL_TO_PL; break; - case 3 : src_tag = "GP"; mode = GP_TO_GT; break; - case 4 : src_tag = "PL"; mode = PL_TO_GL; break; - case 'r': drop_source_tag = 1; break; - case 't': thresh = atof(optarg); break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - if ( !mode ) mode = GP_TO_GL; - - in_hdr = in; - out_hdr = out; - - if ( mode==GP_TO_GL ) - init_header(out_hdr,drop_source_tag?"GP":NULL,BCF_HL_FMT,"##FORMAT="); - else if ( mode==GL_TO_PL ) - init_header(out_hdr,drop_source_tag?"GL":NULL,BCF_HL_FMT,"##FORMAT="); - else if ( mode==PL_TO_GL ) - init_header(out_hdr,drop_source_tag?"PL":NULL,BCF_HL_FMT,"##FORMAT="); - else if ( mode==GP_TO_GT ) { - if (thresh<0||thresh>1) error("--threshold must be in the range [0,1]: %f\n", thresh); - init_header(out_hdr,drop_source_tag?"GP":NULL,BCF_HL_FMT,"##FORMAT="); - } - - int tag_id; - if ( (tag_id=bcf_hdr_id2int(in_hdr,BCF_DT_ID,src_tag))<0 || !bcf_hdr_idinfo_exists(in_hdr,BCF_HL_FMT,tag_id) ) - error("The source tag does not exist: %s\n", src_tag); - - return 0; -} - -bcf1_t *process(bcf1_t *rec) -{ - int i, n; - if ( mode==GP_TO_GL ) - { - n = bcf_get_format_float(in_hdr,rec,"GP",&farr,&mfarr); - if ( n<=0 ) return rec; - for (i=0; in_allele; - int nsmpl = bcf_hdr_nsamples(in_hdr); - hts_expand(int32_t,nsmpl*2,miarr,iarr); - - n = bcf_get_format_float(in_hdr,rec,"GP",&farr,&mfarr); - if ( n<=0 ) return rec; - - n /= nsmpl; - for (i=0; i ptr[jmax] ) jmax = j; - } - - // haploid genotype - if ( j==nals ) - { - iarr[2*i] = ptr[jmax] < 1-thresh ? bcf_gt_missing : bcf_gt_unphased(jmax); - iarr[2*i+1] = bcf_int32_vector_end; - continue; - } - - if ( j!=nals*(nals+1)/2 ) - error("Wrong number of GP values for diploid genotype at %s:%d, expected %d, found %d\n", - bcf_seqname(in_hdr,rec),rec->pos+1, nals*(nals+1)/2,j); - - if (ptr[jmax] < 1-thresh) - { - iarr[2*i] = iarr[2*i+1] = bcf_gt_missing; - continue; - } - - // most common case: RR - if ( jmax==0 ) - { - iarr[2*i] = iarr[2*i+1] = bcf_gt_unphased(0); - continue; - } - - int a,b; - bcf_gt2alleles(jmax,&a,&b); - iarr[2*i] = bcf_gt_unphased(a); - iarr[2*i+1] = bcf_gt_unphased(b); - } - bcf_update_genotypes(out_hdr,rec,iarr,nsmpl*2); - if ( drop_source_tag ) - bcf_update_format_float(out_hdr,rec,"GP",NULL,0); - } - return rec; -} - -void destroy(void) -{ - free(farr); - free(iarr); -} - - diff --git a/bcftools/plugins/tag2tag.c.pysam.c b/bcftools/plugins/tag2tag.c.pysam.c deleted file mode 100644 index 8d8d13b..0000000 --- a/bcftools/plugins/tag2tag.c.pysam.c +++ /dev/null @@ -1,256 +0,0 @@ -#include "bcftools.pysam.h" - -/* plugins/tag2tag.c -- convert between similar tags - - Copyright (C) 2014-2016 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include -#include -#include -#include -#include "bcftools.h" - - -#define GP_TO_GL 1 -#define GL_TO_PL 2 -#define GP_TO_GT 3 -#define PL_TO_GL 4 - -static int mode = 0, drop_source_tag = 0; -static bcf_hdr_t *in_hdr, *out_hdr; -static float *farr = NULL, thresh = 0.1; -static int32_t *iarr = NULL; -static int mfarr = 0, miarr = 0; - -const char *about(void) -{ - return "Convert between similar tags, such as GL, PL and GP.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Convert between similar tags, such as GL, PL and GP.\n" - "Usage: bcftools +tag2tag [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " --gp-to-gl convert FORMAT/GP to FORMAT/GL\n" - " --gp-to-gt convert FORMAT/GP to FORMAT/GT by taking argmax of GP\n" - " --gl-to-pl convert FORMAT/GL to FORMAT/PL\n" - " --pl-to-gl convert FORMAT/PL to FORMAT/GL\n" - " -r, --replace drop the source tag\n" - " -t, --threshold threshold for GP to GT hard-call [0.1]\n" - "\n" - "Example:\n" - " bcftools +tag2tag in.vcf -- -r --gp-to-gl\n" - "\n"; -} - - -static void init_header(bcf_hdr_t *hdr, const char *ori, int ori_type, const char *new_hdr_line) -{ - if ( ori ) - bcf_hdr_remove(hdr,ori_type,ori); - - bcf_hdr_append(hdr, new_hdr_line); -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - static struct option loptions[] = - { - {"replace",no_argument,NULL,'r'}, - {"gp-to-gl",no_argument,NULL,1}, - {"gl-to-pl",no_argument,NULL,2}, - {"gp-to-gt",no_argument,NULL,3}, - {"pl-to-gl",no_argument,NULL,4}, - {"threshold",required_argument,NULL,'t'}, - {NULL,0,NULL,0} - }; - int c; - char *src_tag = "GP"; - while ((c = getopt_long(argc, argv, "?hrt:",loptions,NULL)) >= 0) - { - switch (c) - { - case 1 : src_tag = "GP"; mode = GP_TO_GL; break; - case 2 : src_tag = "GL"; mode = GL_TO_PL; break; - case 3 : src_tag = "GP"; mode = GP_TO_GT; break; - case 4 : src_tag = "PL"; mode = PL_TO_GL; break; - case 'r': drop_source_tag = 1; break; - case 't': thresh = atof(optarg); break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - if ( !mode ) mode = GP_TO_GL; - - in_hdr = in; - out_hdr = out; - - if ( mode==GP_TO_GL ) - init_header(out_hdr,drop_source_tag?"GP":NULL,BCF_HL_FMT,"##FORMAT="); - else if ( mode==GL_TO_PL ) - init_header(out_hdr,drop_source_tag?"GL":NULL,BCF_HL_FMT,"##FORMAT="); - else if ( mode==PL_TO_GL ) - init_header(out_hdr,drop_source_tag?"PL":NULL,BCF_HL_FMT,"##FORMAT="); - else if ( mode==GP_TO_GT ) { - if (thresh<0||thresh>1) error("--threshold must be in the range [0,1]: %f\n", thresh); - init_header(out_hdr,drop_source_tag?"GP":NULL,BCF_HL_FMT,"##FORMAT="); - } - - int tag_id; - if ( (tag_id=bcf_hdr_id2int(in_hdr,BCF_DT_ID,src_tag))<0 || !bcf_hdr_idinfo_exists(in_hdr,BCF_HL_FMT,tag_id) ) - error("The source tag does not exist: %s\n", src_tag); - - return 0; -} - -bcf1_t *process(bcf1_t *rec) -{ - int i, n; - if ( mode==GP_TO_GL ) - { - n = bcf_get_format_float(in_hdr,rec,"GP",&farr,&mfarr); - if ( n<=0 ) return rec; - for (i=0; in_allele; - int nsmpl = bcf_hdr_nsamples(in_hdr); - hts_expand(int32_t,nsmpl*2,miarr,iarr); - - n = bcf_get_format_float(in_hdr,rec,"GP",&farr,&mfarr); - if ( n<=0 ) return rec; - - n /= nsmpl; - for (i=0; i ptr[jmax] ) jmax = j; - } - - // haploid genotype - if ( j==nals ) - { - iarr[2*i] = ptr[jmax] < 1-thresh ? bcf_gt_missing : bcf_gt_unphased(jmax); - iarr[2*i+1] = bcf_int32_vector_end; - continue; - } - - if ( j!=nals*(nals+1)/2 ) - error("Wrong number of GP values for diploid genotype at %s:%d, expected %d, found %d\n", - bcf_seqname(in_hdr,rec),rec->pos+1, nals*(nals+1)/2,j); - - if (ptr[jmax] < 1-thresh) - { - iarr[2*i] = iarr[2*i+1] = bcf_gt_missing; - continue; - } - - // most common case: RR - if ( jmax==0 ) - { - iarr[2*i] = iarr[2*i+1] = bcf_gt_unphased(0); - continue; - } - - int a,b; - bcf_gt2alleles(jmax,&a,&b); - iarr[2*i] = bcf_gt_unphased(a); - iarr[2*i+1] = bcf_gt_unphased(b); - } - bcf_update_genotypes(out_hdr,rec,iarr,nsmpl*2); - if ( drop_source_tag ) - bcf_update_format_float(out_hdr,rec,"GP",NULL,0); - } - return rec; -} - -void destroy(void) -{ - free(farr); - free(iarr); -} - - diff --git a/bcftools/plugins/trio-stats.c b/bcftools/plugins/trio-stats.c deleted file mode 100644 index b77d1df..0000000 --- a/bcftools/plugins/trio-stats.c +++ /dev/null @@ -1,554 +0,0 @@ -/* The MIT License - - Copyright (c) 2018 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include // for isatty -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "filter.h" - - -// Logic of the filters: include or exclude sites which match the filters? -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -#define iCHILD 0 -#define iFATHER 1 -#define iMOTHER 2 - -typedef struct -{ - int idx[3]; // VCF sample index for father, mother and child - int pass; // do all three pass the filters? -} -trio_t; - -typedef struct -{ - uint32_t - npass, // number of genotypes passing the filter - nnon_ref, // number of non-reference genotypes - nmendel_err, // number of mendelian errors - nnovel, // a singleton allele, but observed only in the child. Counted as mendel_err as well. - nsingleton, // het mother or father different from everyone else - ndoubleton, // het mother+child or father+child different from everyone else - nts, ntv; // number of transitions and transversions -} -trio_stats_t; - -typedef struct -{ - trio_stats_t *stats; - filter_t *filter; - char *expr; -} -flt_stats_t; - -typedef struct -{ - int argc, filter_logic, regions_is_file, targets_is_file; - int nflt_str; - char *filter_str, **flt_str; - char **argv, *ped_fname, *output_fname, *fname, *regions, *targets; - bcf_srs_t *sr; - bcf_hdr_t *hdr; - trio_t *trio; - int ntrio, mtrio; - flt_stats_t *filters; - int nfilters; - int32_t *gt_arr, *ac, *ac_trio; - int mgt_arr, mac, mac_trio; -} -args_t; - -args_t args; - -const char *about(void) -{ - return "Calculate transmission rate and other stats in trio children.\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Calculate transmission rate in trio children. Use curly brackets to scan\n" - " a range of values simultaneously\n" - "Usage: bcftools +trio-stats [Plugin Options]\n" - "Plugin options:\n" - " -e, --exclude EXPR exclude sites and samples for which the expression is true\n" - " -i, --include EXPR include sites and samples for which the expression is true\n" - " -o, --output FILE output file name [stdout]\n" - " -p, --ped FILE PED file\n" - " -r, --regions REG restrict to comma-separated list of regions\n" - " -R, --regions-file FILE restrict to regions listed in a file\n" - " -t, --targets REG similar to -r but streams rather than index-jumps\n" - " -T, --targets-file FILE similar to -R but streams rather than index-jumps\n" - "\n" - "Example:\n" - " bcftools +trio-stats -p file.ped -i 'GQ>{10,20,30,40,50}' file.bcf\n" - "\n"; -} - -static int cmp_trios(const void *_a, const void *_b) -{ - trio_t *a = (trio_t *) _a; - trio_t *b = (trio_t *) _b; - int i; - int amin = a->idx[0]; - for (i=1; i<3; i++) - if ( amin > a->idx[i] ) amin = a->idx[i]; - int bmin = b->idx[0]; - for (i=1; i<3; i++) - if ( bmin > b->idx[i] ) bmin = b->idx[i]; - if ( amin < bmin ) return -1; - if ( amin > bmin ) return 1; - return 0; -} - -static void parse_ped(args_t *args, char *fname) -{ - htsFile *fp = hts_open(fname, "r"); - if ( !fp ) error("Could not read: %s\n", fname); - - kstring_t str = {0,0,0}; - if ( hts_getline(fp, KS_SEP_LINE, &str) <= 0 ) error("Empty file: %s\n", fname); - - int moff = 0, *off = NULL; - do - { - // familyID sampleID paternalID maternalID sex phenotype population relationship siblings secondOrder thirdOrder children comment - // BB03 HG01884 HG01885 HG01956 2 0 ACB child 0 0 0 0 - int ncols = ksplit_core(str.s,0,&moff,&off); - if ( ncols<4 ) error("Could not parse the ped file: %s\n", str.s); - - int father = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[2]]); - if ( father<0 ) continue; - int mother = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[3]]); - if ( mother<0 ) continue; - int child = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[1]]); - if ( child<0 ) continue; - - args->ntrio++; - hts_expand0(trio_t,args->ntrio,args->mtrio,args->trio); - trio_t *trio = &args->trio[args->ntrio-1]; - trio->idx[iFATHER] = father; - trio->idx[iMOTHER] = mother; - trio->idx[iCHILD] = child; - } - while ( hts_getline(fp, KS_SEP_LINE, &str)>=0 ); - - fprintf(stderr,"Identified %d complete trios in the VCF file\n", args->ntrio); - - // sort the sample by index so that they are accessed more or less sequentially - qsort(args->trio,args->ntrio,sizeof(trio_t),cmp_trios); - - free(str.s); - free(off); - hts_close(fp); -} - -static void parse_filters(args_t *args) -{ - if ( !args->filter_str ) return; - int mflt = 1; - args->nflt_str = 1; - args->flt_str = (char**) malloc(sizeof(char*)); - args->flt_str[0] = strdup(args->filter_str); - while (1) - { - int i, expanded = 0; - for (i=args->nflt_str-1; i>=0; i--) - { - char *exp_beg = strchr(args->flt_str[i], '{'); - if ( !exp_beg ) continue; - char *exp_end = strchr(exp_beg+1, '}'); - if ( !exp_end ) error("Could not parse the expression: %s\n", args->filter_str); - char *beg = exp_beg+1, *mid = beg; - while ( midflt_str[i], exp_beg - args->flt_str[i], &tmp); - kputsn(beg, mid - beg, &tmp); - kputs(exp_end+1, &tmp); - args->nflt_str++; - hts_expand(char*, args->nflt_str, mflt, args->flt_str); - args->flt_str[args->nflt_str-1] = tmp.s; - beg = ++mid; - } - expanded = 1; - free(args->flt_str[i]); - memmove(&args->flt_str[i], &args->flt_str[i+1], (args->nflt_str-i-1)*sizeof(*args->flt_str)); - args->nflt_str--; - args->flt_str[args->nflt_str] = NULL; - } - if ( !expanded ) break; - } - - fprintf(stderr,"Collecting data for %d filtering expressions\n", args->nflt_str); -} - -static void init_data(args_t *args) -{ - args->sr = bcf_sr_init(); - if ( args->regions ) - { - args->sr->require_index = 1; - if ( bcf_sr_set_regions(args->sr, args->regions, args->regions_is_file)<0 ) error("Failed to read the regions: %s\n",args->regions); - } - if ( args->targets && bcf_sr_set_targets(args->sr, args->targets, args->targets_is_file, 0)<0 ) error("Failed to read the targets: %s\n",args->targets); - if ( !bcf_sr_add_reader(args->sr,args->fname) ) error("Error: %s\n", bcf_sr_strerror(args->sr->errnum)); - args->hdr = bcf_sr_get_header(args->sr,0); - - parse_ped(args, args->ped_fname); - parse_filters(args); - - int i; - if ( !args->nflt_str ) - { - args->filters = (flt_stats_t*) calloc(1, sizeof(flt_stats_t)); - args->nfilters = 1; - args->filters[0].expr = strdup("all"); - } - else - { - args->nfilters = args->nflt_str; - args->filters = (flt_stats_t*) calloc(args->nfilters, sizeof(flt_stats_t)); - for (i=0; infilters; i++) - { - args->filters[i].filter = filter_init(args->hdr, args->flt_str[i]); - args->filters[i].expr = strdup(args->flt_str[i]); - - // replace tab's with spaces so that the output stays parsable - char *tmp = args->filters[i].expr; - while ( *tmp ) - { - if ( *tmp=='\t' ) *tmp = ' '; - tmp++; - } - } - } - for (i=0; infilters; i++) - args->filters[i].stats = (trio_stats_t*) calloc(args->ntrio,sizeof(trio_stats_t)); -} -static void destroy_data(args_t *args) -{ - int i; - for (i=0; infilters; i++) - { - if ( args->filters[i].filter ) filter_destroy(args->filters[i].filter); - free(args->filters[i].stats); - free(args->filters[i].expr); - } - free(args->filters); - for (i=0; inflt_str; i++) free(args->flt_str[i]); - free(args->flt_str); - bcf_sr_destroy(args->sr); - free(args->trio); - free(args->ac); - free(args->ac_trio); - free(args->gt_arr); - free(args); -} -static void report_stats(args_t *args) -{ - int i = 0,j; - FILE *fh = !args->output_fname || !strcmp("-",args->output_fname) ? stdout : fopen(args->output_fname,"w"); - if ( !fh ) error("Could not open the file for writing: %s\n", args->output_fname); - fprintf(fh,"# CMD line shows the command line used to generate this output\n"); - fprintf(fh,"# DEF lines define expressions for all tested thresholds\n"); - fprintf(fh,"# FLT* lines report numbers for every threshold and every trio:\n"); - fprintf(fh,"# %d) filter id\n", ++i); - fprintf(fh,"# %d) child\n", ++i); - fprintf(fh,"# %d) father\n", ++i); - fprintf(fh,"# %d) mother\n", ++i); - fprintf(fh,"# %d) number of valid trio genotypes (all trio members pass filters, all non-missing)\n", ++i); - fprintf(fh,"# %d) number of non-reference trio GTs (at least one trio member carries an alternate allele)\n", ++i); - fprintf(fh,"# %d) number of Mendelian errors\n", ++i); - fprintf(fh,"# %d) number of novel singleton alleles in the child (counted also as a Mendelian error)\n", ++i); - fprintf(fh,"# %d) number of untransmitted singletons, present only in one parent\n", ++i); - fprintf(fh,"# %d) number of transmitted singletons, present only in one parent and the child\n", ++i); - fprintf(fh,"# %d) number of transitions, all ALT alleles present in the trio are considered\n", ++i); - fprintf(fh,"# %d) number of transversions, all ALT alleles present in the trio are considered\n", ++i); - fprintf(fh,"# %d) overall ts/tv, all ALT alleles present in the trio are considered\n", ++i); - fprintf(fh, "CMD\t%s", args->argv[0]); - for (i=1; iargc; i++) fprintf(fh, " %s",args->argv[i]); - fprintf(fh, "\n"); - for (i=0; infilters; i++) - { - flt_stats_t *flt = &args->filters[i]; - fprintf(fh,"DEF\tFLT%d\t%s\n", i, flt->expr); - } - for (i=0; infilters; i++) - { - flt_stats_t *flt = &args->filters[i]; - for (j=0; jntrio; j++) - { - fprintf(fh,"FLT%d", i); - fprintf(fh,"\t%s",args->hdr->samples[args->trio[j].idx[iCHILD]]); - fprintf(fh,"\t%s",args->hdr->samples[args->trio[j].idx[iFATHER]]); - fprintf(fh,"\t%s",args->hdr->samples[args->trio[j].idx[iMOTHER]]); - trio_stats_t *stats = &flt->stats[j]; - fprintf(fh,"\t%d", stats->npass); - fprintf(fh,"\t%d", stats->nnon_ref); - fprintf(fh,"\t%d", stats->nmendel_err); - fprintf(fh,"\t%d", stats->nnovel); - fprintf(fh,"\t%d", stats->nsingleton); - fprintf(fh,"\t%d", stats->ndoubleton); - fprintf(fh,"\t%d", stats->nts); - fprintf(fh,"\t%d", stats->ntv); - fprintf(fh,"\t%.2f", stats->ntv ? (float)stats->nts/stats->ntv : INFINITY); - fprintf(fh,"\n"); - } - } - if ( fclose(fh)!=0 ) error("Close failed: %s\n", (!args->output_fname || !strcmp("-",args->output_fname)) ? "stdout" : args->output_fname); -} - -static inline int parse_genotype(int32_t *arr, int ngt1, int idx, int als[2]) -{ - int32_t *ptr = arr + ngt1 * idx; - if ( bcf_gt_is_missing(ptr[0]) ) return -1; - als[0] = bcf_gt_allele(ptr[0]); - - // treat haploid GTs as homozygous diploid - if ( ngt1==1 || ptr[1]==bcf_int32_vector_end ) { als[1] = als[0]; return 0; } - - if ( bcf_gt_is_missing(ptr[1]) ) return -1; - als[1] = bcf_gt_allele(ptr[1]); - - return 0; -} - -static void process_record(args_t *args, bcf1_t *rec, flt_stats_t *flt) -{ - int i,j; - - // Find out which trios pass and if the site passes - if ( flt->filter ) - { - uint8_t *smpl_pass = NULL; - int pass_site = filter_test(flt->filter, rec, (const uint8_t**) &smpl_pass); - if ( args->filter_logic & FLT_EXCLUDE ) - { - if ( pass_site ) - { - if ( !smpl_pass ) return; - pass_site = 0; - for (i=0; intrio; i++) - { - int pass_trio = 1; - for (j=0; j<3; j++) - { - int idx = args->trio[i].idx[j]; - if ( smpl_pass[idx] ) { pass_trio = 0; break; } - } - args->trio[i].pass = pass_trio; - if ( pass_trio ) pass_site = 1; - } - if ( !pass_site ) return; - } - else - for (i=0; intrio; i++) args->trio[i].pass = 1; - } - else if ( !pass_site ) return; - else if ( smpl_pass ) - { - pass_site = 0; - for (i=0; intrio; i++) - { - int pass_trio = 1; - for (j=0; j<3; j++) - { - int idx = args->trio[i].idx[j]; - if ( !smpl_pass[idx] ) { pass_trio = 0; break; } - } - args->trio[i].pass = pass_trio; - if ( pass_trio ) pass_site = 1; - } - if ( !pass_site ) return; - } - else - for (i=0; intrio; i++) args->trio[i].pass = 1; - } - - // Find out the allele counts. Try to use INFO/AC, if not present, determine from the genotypes - hts_expand(int, rec->n_allele, args->mac, args->ac); - if ( !bcf_calc_ac(args->hdr, rec, args->ac, BCF_UN_INFO|BCF_UN_FMT) ) return; - hts_expand(int, rec->n_allele, args->mac_trio, args->ac_trio); - - // Get the genotypes - int ngt = bcf_get_genotypes(args->hdr, rec, &args->gt_arr, &args->mgt_arr); - if ( ngt<0 ) return; - int ngt1 = ngt / rec->n_sample; - - - // For ts/tv: numeric code of the reference allele, -1 for insertions - int ref = !rec->d.allele[0][1] ? bcf_acgt2int(*rec->d.allele[0]) : -1; - - int star_allele = -1; - for (i=1; in_allele; i++) - if ( !rec->d.allele[i][1] && rec->d.allele[i][0]=='*' ) { star_allele = i; break; } - - // Run the stats - for (i=0; intrio; i++) - { - if ( flt->filter && !args->trio[i].pass ) continue; - trio_stats_t *stats = &flt->stats[i]; - - // Determine the alternate allele and the genotypes, skip if any of the alleles is missing. - // the order is: child, father, mother - int als[6], *als_child = als, *als_father = als+2, *als_mother = als+4; - if ( parse_genotype(args->gt_arr, ngt1, args->trio[i].idx[iCHILD], als_child) < 0 ) continue; - if ( parse_genotype(args->gt_arr, ngt1, args->trio[i].idx[iFATHER], als_father) < 0 ) continue; - if ( parse_genotype(args->gt_arr, ngt1, args->trio[i].idx[iMOTHER], als_mother) < 0 ) continue; - - stats->npass++; - - // Has the trio an alternate allele other than *? - int has_star_allele = 0, has_nonref = 0; - memset(args->ac_trio,0,rec->n_allele*sizeof(*args->ac_trio)); - for (j=0; j<6; j++) - { - if ( als[j]==star_allele ) { has_star_allele = 1; continue; } - if ( als[j]==0 ) continue; - has_nonref = 1; - args->ac_trio[ als[j] ]++; - } - if ( !has_nonref ) continue; // only ref or * in this trio - - stats->nnon_ref++; - - // Calculate ts/tv. It does the right thing and handles also HetAA genotypes - if ( ref != -1 ) - { - int has_ts = 0, has_tv = 0; - for (j=0; j<6; j++) - { - if ( als[j]==0 || als[j]==star_allele ) continue; - if ( als[j] >= rec->n_allele ) - error("The GT index is out of range at %s:%d in %s\n", bcf_seqname(args->hdr,rec),rec->pos+1,args->hdr->samples[args->trio[i].idx[j/2]]); - if ( rec->d.allele[als[j]][1] ) continue; - - int alt = bcf_acgt2int(rec->d.allele[als[j]][0]); - if ( abs(ref-alt)==2 ) has_ts = 1; - else has_tv = 1; - } - if ( has_ts ) stats->nts++; - if ( has_tv ) stats->ntv++; - } - - // Skip some stats if the star allele is present as it was already checked at the primary record, we do not want to count the same - // thing multiple times. There can be other alternate allele, but we ignore that for simplicity. - if ( has_star_allele ) continue; - - // Detect mendelian errors - int mendel_ok = (als_child[0]==als_father[0] || als_child[0]==als_father[1]) && (als_child[1]==als_mother[0] || als_child[1]==als_mother[1]) ? 1 : 0; - if ( !mendel_ok ) mendel_ok = (als_child[1]==als_father[0] || als_child[1]==als_father[1]) && (als_child[0]==als_mother[0] || als_child[0]==als_mother[1]) ? 1 : 0; - if ( !mendel_ok ) stats->nmendel_err++; - - // Is this a singleton, doubleton, neither? - for (j=1; jn_allele; j++) - { - if ( args->ac_trio[j]==1 && args->ac[j]==1 ) // singleton (in parent) or novel (in child) - { - if ( als_child[0]==j || als_child[1]==j ) stats->nnovel++; - else stats->nsingleton++; - } - else if ( args->ac_trio[j]==2 && args->ac[j]==2 ) // possibly a doubleton - { - if ( (als_child[0]==j || als_child[1]==j) && (als_child[0]!=j || als_child[1]!=j) ) stats->ndoubleton++; - } - } - } -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->argc = argc; args->argv = argv; - args->output_fname = "-"; - static struct option loptions[] = - { - {"include",required_argument,0,'i'}, - {"exclude",required_argument,0,'e'}, - {"output",required_argument,NULL,'o'}, - {"ped",required_argument,NULL,'p'}, - {"regions",1,0,'r'}, - {"regions-file",1,0,'R'}, - {"targets",1,0,'t'}, - {"targets-file",1,0,'T'}, - {NULL,0,NULL,0} - }; - int c, i; - while ((c = getopt_long(argc, argv, "p:o:s:i:e:r:R:t:T:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'e': args->filter_str = optarg; args->filter_logic |= FLT_EXCLUDE; break; - case 'i': args->filter_str = optarg; args->filter_logic |= FLT_INCLUDE; break; - case 't': args->targets = optarg; break; - case 'T': args->targets = optarg; args->targets_is_file = 1; break; - case 'r': args->regions = optarg; break; - case 'R': args->regions = optarg; args->regions_is_file = 1; break; - case 'o': args->output_fname = optarg; break; - case 'p': args->ped_fname = optarg; break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - if ( optind==argc ) - { - if ( !isatty(fileno((FILE *)stdin)) ) args->fname = "-"; // reading from stdin - else { error("%s", usage_text()); } - } - else if ( optind+1!=argc ) error("%s", usage_text()); - else args->fname = argv[optind]; - - if ( !args->ped_fname ) error("Missing the -p, --ped option\n"); - - init_data(args); - - while ( bcf_sr_next_line(args->sr) ) - { - bcf1_t *rec = bcf_sr_get_line(args->sr,0); - for (i=0; infilters; i++) - process_record(args, rec, &args->filters[i]); - } - - report_stats(args); - destroy_data(args); - - return 0; -} diff --git a/bcftools/plugins/trio-stats.c.pysam.c b/bcftools/plugins/trio-stats.c.pysam.c deleted file mode 100644 index 626cafa..0000000 --- a/bcftools/plugins/trio-stats.c.pysam.c +++ /dev/null @@ -1,556 +0,0 @@ -#include "bcftools.pysam.h" - -/* The MIT License - - Copyright (c) 2018 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include // for isatty -#include -#include -#include -#include -#include -#include -#include "bcftools.h" -#include "filter.h" - - -// Logic of the filters: include or exclude sites which match the filters? -#define FLT_INCLUDE 1 -#define FLT_EXCLUDE 2 - -#define iCHILD 0 -#define iFATHER 1 -#define iMOTHER 2 - -typedef struct -{ - int idx[3]; // VCF sample index for father, mother and child - int pass; // do all three pass the filters? -} -trio_t; - -typedef struct -{ - uint32_t - npass, // number of genotypes passing the filter - nnon_ref, // number of non-reference genotypes - nmendel_err, // number of mendelian errors - nnovel, // a singleton allele, but observed only in the child. Counted as mendel_err as well. - nsingleton, // het mother or father different from everyone else - ndoubleton, // het mother+child or father+child different from everyone else - nts, ntv; // number of transitions and transversions -} -trio_stats_t; - -typedef struct -{ - trio_stats_t *stats; - filter_t *filter; - char *expr; -} -flt_stats_t; - -typedef struct -{ - int argc, filter_logic, regions_is_file, targets_is_file; - int nflt_str; - char *filter_str, **flt_str; - char **argv, *ped_fname, *output_fname, *fname, *regions, *targets; - bcf_srs_t *sr; - bcf_hdr_t *hdr; - trio_t *trio; - int ntrio, mtrio; - flt_stats_t *filters; - int nfilters; - int32_t *gt_arr, *ac, *ac_trio; - int mgt_arr, mac, mac_trio; -} -args_t; - -args_t args; - -const char *about(void) -{ - return "Calculate transmission rate and other stats in trio children.\n"; -} - -static const char *usage_text(void) -{ - return - "\n" - "About: Calculate transmission rate in trio children. Use curly brackets to scan\n" - " a range of values simultaneously\n" - "Usage: bcftools +trio-stats [Plugin Options]\n" - "Plugin options:\n" - " -e, --exclude EXPR exclude sites and samples for which the expression is true\n" - " -i, --include EXPR include sites and samples for which the expression is true\n" - " -o, --output FILE output file name [bcftools_stdout]\n" - " -p, --ped FILE PED file\n" - " -r, --regions REG restrict to comma-separated list of regions\n" - " -R, --regions-file FILE restrict to regions listed in a file\n" - " -t, --targets REG similar to -r but streams rather than index-jumps\n" - " -T, --targets-file FILE similar to -R but streams rather than index-jumps\n" - "\n" - "Example:\n" - " bcftools +trio-stats -p file.ped -i 'GQ>{10,20,30,40,50}' file.bcf\n" - "\n"; -} - -static int cmp_trios(const void *_a, const void *_b) -{ - trio_t *a = (trio_t *) _a; - trio_t *b = (trio_t *) _b; - int i; - int amin = a->idx[0]; - for (i=1; i<3; i++) - if ( amin > a->idx[i] ) amin = a->idx[i]; - int bmin = b->idx[0]; - for (i=1; i<3; i++) - if ( bmin > b->idx[i] ) bmin = b->idx[i]; - if ( amin < bmin ) return -1; - if ( amin > bmin ) return 1; - return 0; -} - -static void parse_ped(args_t *args, char *fname) -{ - htsFile *fp = hts_open(fname, "r"); - if ( !fp ) error("Could not read: %s\n", fname); - - kstring_t str = {0,0,0}; - if ( hts_getline(fp, KS_SEP_LINE, &str) <= 0 ) error("Empty file: %s\n", fname); - - int moff = 0, *off = NULL; - do - { - // familyID sampleID paternalID maternalID sex phenotype population relationship siblings secondOrder thirdOrder children comment - // BB03 HG01884 HG01885 HG01956 2 0 ACB child 0 0 0 0 - int ncols = ksplit_core(str.s,0,&moff,&off); - if ( ncols<4 ) error("Could not parse the ped file: %s\n", str.s); - - int father = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[2]]); - if ( father<0 ) continue; - int mother = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[3]]); - if ( mother<0 ) continue; - int child = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[1]]); - if ( child<0 ) continue; - - args->ntrio++; - hts_expand0(trio_t,args->ntrio,args->mtrio,args->trio); - trio_t *trio = &args->trio[args->ntrio-1]; - trio->idx[iFATHER] = father; - trio->idx[iMOTHER] = mother; - trio->idx[iCHILD] = child; - } - while ( hts_getline(fp, KS_SEP_LINE, &str)>=0 ); - - fprintf(bcftools_stderr,"Identified %d complete trios in the VCF file\n", args->ntrio); - - // sort the sample by index so that they are accessed more or less sequentially - qsort(args->trio,args->ntrio,sizeof(trio_t),cmp_trios); - - free(str.s); - free(off); - hts_close(fp); -} - -static void parse_filters(args_t *args) -{ - if ( !args->filter_str ) return; - int mflt = 1; - args->nflt_str = 1; - args->flt_str = (char**) malloc(sizeof(char*)); - args->flt_str[0] = strdup(args->filter_str); - while (1) - { - int i, expanded = 0; - for (i=args->nflt_str-1; i>=0; i--) - { - char *exp_beg = strchr(args->flt_str[i], '{'); - if ( !exp_beg ) continue; - char *exp_end = strchr(exp_beg+1, '}'); - if ( !exp_end ) error("Could not parse the expression: %s\n", args->filter_str); - char *beg = exp_beg+1, *mid = beg; - while ( midflt_str[i], exp_beg - args->flt_str[i], &tmp); - kputsn(beg, mid - beg, &tmp); - kputs(exp_end+1, &tmp); - args->nflt_str++; - hts_expand(char*, args->nflt_str, mflt, args->flt_str); - args->flt_str[args->nflt_str-1] = tmp.s; - beg = ++mid; - } - expanded = 1; - free(args->flt_str[i]); - memmove(&args->flt_str[i], &args->flt_str[i+1], (args->nflt_str-i-1)*sizeof(*args->flt_str)); - args->nflt_str--; - args->flt_str[args->nflt_str] = NULL; - } - if ( !expanded ) break; - } - - fprintf(bcftools_stderr,"Collecting data for %d filtering expressions\n", args->nflt_str); -} - -static void init_data(args_t *args) -{ - args->sr = bcf_sr_init(); - if ( args->regions ) - { - args->sr->require_index = 1; - if ( bcf_sr_set_regions(args->sr, args->regions, args->regions_is_file)<0 ) error("Failed to read the regions: %s\n",args->regions); - } - if ( args->targets && bcf_sr_set_targets(args->sr, args->targets, args->targets_is_file, 0)<0 ) error("Failed to read the targets: %s\n",args->targets); - if ( !bcf_sr_add_reader(args->sr,args->fname) ) error("Error: %s\n", bcf_sr_strerror(args->sr->errnum)); - args->hdr = bcf_sr_get_header(args->sr,0); - - parse_ped(args, args->ped_fname); - parse_filters(args); - - int i; - if ( !args->nflt_str ) - { - args->filters = (flt_stats_t*) calloc(1, sizeof(flt_stats_t)); - args->nfilters = 1; - args->filters[0].expr = strdup("all"); - } - else - { - args->nfilters = args->nflt_str; - args->filters = (flt_stats_t*) calloc(args->nfilters, sizeof(flt_stats_t)); - for (i=0; infilters; i++) - { - args->filters[i].filter = filter_init(args->hdr, args->flt_str[i]); - args->filters[i].expr = strdup(args->flt_str[i]); - - // replace tab's with spaces so that the output stays parsable - char *tmp = args->filters[i].expr; - while ( *tmp ) - { - if ( *tmp=='\t' ) *tmp = ' '; - tmp++; - } - } - } - for (i=0; infilters; i++) - args->filters[i].stats = (trio_stats_t*) calloc(args->ntrio,sizeof(trio_stats_t)); -} -static void destroy_data(args_t *args) -{ - int i; - for (i=0; infilters; i++) - { - if ( args->filters[i].filter ) filter_destroy(args->filters[i].filter); - free(args->filters[i].stats); - free(args->filters[i].expr); - } - free(args->filters); - for (i=0; inflt_str; i++) free(args->flt_str[i]); - free(args->flt_str); - bcf_sr_destroy(args->sr); - free(args->trio); - free(args->ac); - free(args->ac_trio); - free(args->gt_arr); - free(args); -} -static void report_stats(args_t *args) -{ - int i = 0,j; - FILE *fh = !args->output_fname || !strcmp("-",args->output_fname) ? bcftools_stdout : fopen(args->output_fname,"w"); - if ( !fh ) error("Could not open the file for writing: %s\n", args->output_fname); - fprintf(fh,"# CMD line shows the command line used to generate this output\n"); - fprintf(fh,"# DEF lines define expressions for all tested thresholds\n"); - fprintf(fh,"# FLT* lines report numbers for every threshold and every trio:\n"); - fprintf(fh,"# %d) filter id\n", ++i); - fprintf(fh,"# %d) child\n", ++i); - fprintf(fh,"# %d) father\n", ++i); - fprintf(fh,"# %d) mother\n", ++i); - fprintf(fh,"# %d) number of valid trio genotypes (all trio members pass filters, all non-missing)\n", ++i); - fprintf(fh,"# %d) number of non-reference trio GTs (at least one trio member carries an alternate allele)\n", ++i); - fprintf(fh,"# %d) number of Mendelian errors\n", ++i); - fprintf(fh,"# %d) number of novel singleton alleles in the child (counted also as a Mendelian error)\n", ++i); - fprintf(fh,"# %d) number of untransmitted singletons, present only in one parent\n", ++i); - fprintf(fh,"# %d) number of transmitted singletons, present only in one parent and the child\n", ++i); - fprintf(fh,"# %d) number of transitions, all ALT alleles present in the trio are considered\n", ++i); - fprintf(fh,"# %d) number of transversions, all ALT alleles present in the trio are considered\n", ++i); - fprintf(fh,"# %d) overall ts/tv, all ALT alleles present in the trio are considered\n", ++i); - fprintf(fh, "CMD\t%s", args->argv[0]); - for (i=1; iargc; i++) fprintf(fh, " %s",args->argv[i]); - fprintf(fh, "\n"); - for (i=0; infilters; i++) - { - flt_stats_t *flt = &args->filters[i]; - fprintf(fh,"DEF\tFLT%d\t%s\n", i, flt->expr); - } - for (i=0; infilters; i++) - { - flt_stats_t *flt = &args->filters[i]; - for (j=0; jntrio; j++) - { - fprintf(fh,"FLT%d", i); - fprintf(fh,"\t%s",args->hdr->samples[args->trio[j].idx[iCHILD]]); - fprintf(fh,"\t%s",args->hdr->samples[args->trio[j].idx[iFATHER]]); - fprintf(fh,"\t%s",args->hdr->samples[args->trio[j].idx[iMOTHER]]); - trio_stats_t *stats = &flt->stats[j]; - fprintf(fh,"\t%d", stats->npass); - fprintf(fh,"\t%d", stats->nnon_ref); - fprintf(fh,"\t%d", stats->nmendel_err); - fprintf(fh,"\t%d", stats->nnovel); - fprintf(fh,"\t%d", stats->nsingleton); - fprintf(fh,"\t%d", stats->ndoubleton); - fprintf(fh,"\t%d", stats->nts); - fprintf(fh,"\t%d", stats->ntv); - fprintf(fh,"\t%.2f", stats->ntv ? (float)stats->nts/stats->ntv : INFINITY); - fprintf(fh,"\n"); - } - } - if ( fclose(fh)!=0 ) error("Close failed: %s\n", (!args->output_fname || !strcmp("-",args->output_fname)) ? "bcftools_stdout" : args->output_fname); -} - -static inline int parse_genotype(int32_t *arr, int ngt1, int idx, int als[2]) -{ - int32_t *ptr = arr + ngt1 * idx; - if ( bcf_gt_is_missing(ptr[0]) ) return -1; - als[0] = bcf_gt_allele(ptr[0]); - - // treat haploid GTs as homozygous diploid - if ( ngt1==1 || ptr[1]==bcf_int32_vector_end ) { als[1] = als[0]; return 0; } - - if ( bcf_gt_is_missing(ptr[1]) ) return -1; - als[1] = bcf_gt_allele(ptr[1]); - - return 0; -} - -static void process_record(args_t *args, bcf1_t *rec, flt_stats_t *flt) -{ - int i,j; - - // Find out which trios pass and if the site passes - if ( flt->filter ) - { - uint8_t *smpl_pass = NULL; - int pass_site = filter_test(flt->filter, rec, (const uint8_t**) &smpl_pass); - if ( args->filter_logic & FLT_EXCLUDE ) - { - if ( pass_site ) - { - if ( !smpl_pass ) return; - pass_site = 0; - for (i=0; intrio; i++) - { - int pass_trio = 1; - for (j=0; j<3; j++) - { - int idx = args->trio[i].idx[j]; - if ( smpl_pass[idx] ) { pass_trio = 0; break; } - } - args->trio[i].pass = pass_trio; - if ( pass_trio ) pass_site = 1; - } - if ( !pass_site ) return; - } - else - for (i=0; intrio; i++) args->trio[i].pass = 1; - } - else if ( !pass_site ) return; - else if ( smpl_pass ) - { - pass_site = 0; - for (i=0; intrio; i++) - { - int pass_trio = 1; - for (j=0; j<3; j++) - { - int idx = args->trio[i].idx[j]; - if ( !smpl_pass[idx] ) { pass_trio = 0; break; } - } - args->trio[i].pass = pass_trio; - if ( pass_trio ) pass_site = 1; - } - if ( !pass_site ) return; - } - else - for (i=0; intrio; i++) args->trio[i].pass = 1; - } - - // Find out the allele counts. Try to use INFO/AC, if not present, determine from the genotypes - hts_expand(int, rec->n_allele, args->mac, args->ac); - if ( !bcf_calc_ac(args->hdr, rec, args->ac, BCF_UN_INFO|BCF_UN_FMT) ) return; - hts_expand(int, rec->n_allele, args->mac_trio, args->ac_trio); - - // Get the genotypes - int ngt = bcf_get_genotypes(args->hdr, rec, &args->gt_arr, &args->mgt_arr); - if ( ngt<0 ) return; - int ngt1 = ngt / rec->n_sample; - - - // For ts/tv: numeric code of the reference allele, -1 for insertions - int ref = !rec->d.allele[0][1] ? bcf_acgt2int(*rec->d.allele[0]) : -1; - - int star_allele = -1; - for (i=1; in_allele; i++) - if ( !rec->d.allele[i][1] && rec->d.allele[i][0]=='*' ) { star_allele = i; break; } - - // Run the stats - for (i=0; intrio; i++) - { - if ( flt->filter && !args->trio[i].pass ) continue; - trio_stats_t *stats = &flt->stats[i]; - - // Determine the alternate allele and the genotypes, skip if any of the alleles is missing. - // the order is: child, father, mother - int als[6], *als_child = als, *als_father = als+2, *als_mother = als+4; - if ( parse_genotype(args->gt_arr, ngt1, args->trio[i].idx[iCHILD], als_child) < 0 ) continue; - if ( parse_genotype(args->gt_arr, ngt1, args->trio[i].idx[iFATHER], als_father) < 0 ) continue; - if ( parse_genotype(args->gt_arr, ngt1, args->trio[i].idx[iMOTHER], als_mother) < 0 ) continue; - - stats->npass++; - - // Has the trio an alternate allele other than *? - int has_star_allele = 0, has_nonref = 0; - memset(args->ac_trio,0,rec->n_allele*sizeof(*args->ac_trio)); - for (j=0; j<6; j++) - { - if ( als[j]==star_allele ) { has_star_allele = 1; continue; } - if ( als[j]==0 ) continue; - has_nonref = 1; - args->ac_trio[ als[j] ]++; - } - if ( !has_nonref ) continue; // only ref or * in this trio - - stats->nnon_ref++; - - // Calculate ts/tv. It does the right thing and handles also HetAA genotypes - if ( ref != -1 ) - { - int has_ts = 0, has_tv = 0; - for (j=0; j<6; j++) - { - if ( als[j]==0 || als[j]==star_allele ) continue; - if ( als[j] >= rec->n_allele ) - error("The GT index is out of range at %s:%d in %s\n", bcf_seqname(args->hdr,rec),rec->pos+1,args->hdr->samples[args->trio[i].idx[j/2]]); - if ( rec->d.allele[als[j]][1] ) continue; - - int alt = bcf_acgt2int(rec->d.allele[als[j]][0]); - if ( abs(ref-alt)==2 ) has_ts = 1; - else has_tv = 1; - } - if ( has_ts ) stats->nts++; - if ( has_tv ) stats->ntv++; - } - - // Skip some stats if the star allele is present as it was already checked at the primary record, we do not want to count the same - // thing multiple times. There can be other alternate allele, but we ignore that for simplicity. - if ( has_star_allele ) continue; - - // Detect mendelian errors - int mendel_ok = (als_child[0]==als_father[0] || als_child[0]==als_father[1]) && (als_child[1]==als_mother[0] || als_child[1]==als_mother[1]) ? 1 : 0; - if ( !mendel_ok ) mendel_ok = (als_child[1]==als_father[0] || als_child[1]==als_father[1]) && (als_child[0]==als_mother[0] || als_child[0]==als_mother[1]) ? 1 : 0; - if ( !mendel_ok ) stats->nmendel_err++; - - // Is this a singleton, doubleton, neither? - for (j=1; jn_allele; j++) - { - if ( args->ac_trio[j]==1 && args->ac[j]==1 ) // singleton (in parent) or novel (in child) - { - if ( als_child[0]==j || als_child[1]==j ) stats->nnovel++; - else stats->nsingleton++; - } - else if ( args->ac_trio[j]==2 && args->ac[j]==2 ) // possibly a doubleton - { - if ( (als_child[0]==j || als_child[1]==j) && (als_child[0]!=j || als_child[1]!=j) ) stats->ndoubleton++; - } - } - } -} - -int run(int argc, char **argv) -{ - args_t *args = (args_t*) calloc(1,sizeof(args_t)); - args->argc = argc; args->argv = argv; - args->output_fname = "-"; - static struct option loptions[] = - { - {"include",required_argument,0,'i'}, - {"exclude",required_argument,0,'e'}, - {"output",required_argument,NULL,'o'}, - {"ped",required_argument,NULL,'p'}, - {"regions",1,0,'r'}, - {"regions-file",1,0,'R'}, - {"targets",1,0,'t'}, - {"targets-file",1,0,'T'}, - {NULL,0,NULL,0} - }; - int c, i; - while ((c = getopt_long(argc, argv, "p:o:s:i:e:r:R:t:T:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'e': args->filter_str = optarg; args->filter_logic |= FLT_EXCLUDE; break; - case 'i': args->filter_str = optarg; args->filter_logic |= FLT_INCLUDE; break; - case 't': args->targets = optarg; break; - case 'T': args->targets = optarg; args->targets_is_file = 1; break; - case 'r': args->regions = optarg; break; - case 'R': args->regions = optarg; args->regions_is_file = 1; break; - case 'o': args->output_fname = optarg; break; - case 'p': args->ped_fname = optarg; break; - case 'h': - case '?': - default: error("%s", usage_text()); break; - } - } - if ( optind==argc ) - { - if ( !isatty(fileno((FILE *)stdin)) ) args->fname = "-"; // reading from stdin - else { error("%s", usage_text()); } - } - else if ( optind+1!=argc ) error("%s", usage_text()); - else args->fname = argv[optind]; - - if ( !args->ped_fname ) error("Missing the -p, --ped option\n"); - - init_data(args); - - while ( bcf_sr_next_line(args->sr) ) - { - bcf1_t *rec = bcf_sr_get_line(args->sr,0); - for (i=0; infilters; i++) - process_record(args, rec, &args->filters[i]); - } - - report_stats(args); - destroy_data(args); - - return 0; -} diff --git a/bcftools/plugins/trio-switch-rate.c b/bcftools/plugins/trio-switch-rate.c deleted file mode 100644 index 34f840d..0000000 --- a/bcftools/plugins/trio-switch-rate.c +++ /dev/null @@ -1,273 +0,0 @@ -/* The MIT License - - Copyright (c) 2016 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" - -typedef struct -{ - int father, mother, child; // VCF sample index - int prev, ipop; - uint32_t err, nswitch, ntest; -} -trio_t; - -typedef struct -{ - char *name; - uint32_t err, nswitch, ntest, ntrio; - float pswitch; -} -pop_t; - -typedef struct -{ - int argc; - char **argv; - bcf_hdr_t *hdr; - trio_t *trio; - int ntrio, mtrio; - int32_t *gt_arr; - int npop; - pop_t *pop; - int mgt_arr, prev_rid; -} -args_t; - -args_t args; - -const char *about(void) -{ - return "Calculate phase switch rate in trio samples, children samples must have phased GTs.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Calculate phase switch rate in trio children.\n" - "Usage: bcftools +trio-swich-rate [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -p, --ped PED file with optional 7th column to group\n" - " results by population\n" - "\n" - "Example:\n" - " bcftools +trio-switch-rate file.bcf -- -p file.ped\n" - "\n"; -} - -void parse_ped(args_t *args, char *fname) -{ - htsFile *fp = hts_open(fname, "r"); - if ( !fp ) error("Could not read: %s\n", fname); - - kstring_t str = {0,0,0}; - if ( hts_getline(fp, KS_SEP_LINE, &str) <= 0 ) error("Empty file: %s\n", fname); - - void *pop2i = khash_str2int_init(); - - int moff = 0, *off = NULL; - do - { - // familyID sampleID paternalID maternalID sex phenotype population relationship siblings secondOrder thirdOrder children comment - // BB03 HG01884 HG01885 HG01956 2 0 ACB child 0 0 0 0 - int ncols = ksplit_core(str.s,0,&moff,&off); - if ( ncols<4 ) error("Could not parse the ped file: %s\n", str.s); - - int father = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[2]]); - if ( father<0 ) continue; - int mother = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[3]]); - if ( mother<0 ) continue; - int child = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[1]]); - if ( child<0 ) continue; - - args->ntrio++; - hts_expand0(trio_t,args->ntrio,args->mtrio,args->trio); - trio_t *trio = &args->trio[args->ntrio-1]; - trio->father = father; - trio->mother = mother; - trio->child = child; - - if (ncols>6) { - char *pop_name = &str.s[off[6]]; - if ( !khash_str2int_has_key(pop2i,pop_name) ) - { - pop_name = strdup(&str.s[off[6]]); - khash_str2int_set(pop2i,pop_name,args->npop); - args->npop++; - args->pop = (pop_t*) realloc(args->pop,args->npop*sizeof(*args->pop)); - memset(args->pop+args->npop-1,0,sizeof(*args->pop)); - args->pop[args->npop-1].name = pop_name; - } - khash_str2int_get(pop2i,pop_name,&trio->ipop); - args->pop[trio->ipop].ntrio++; - } - } while ( hts_getline(fp, KS_SEP_LINE, &str)>=0 ); - - khash_str2int_destroy(pop2i); - free(str.s); - free(off); - hts_close(fp); -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - memset(&args,0,sizeof(args_t)); - args.argc = argc; args.argv = argv; - args.prev_rid = -1; - args.hdr = in; - char *ped_fname = NULL; - static struct option loptions[] = - { - {"ped",required_argument,NULL,'p'}, - {0,0,0,0} - }; - int c; - while ((c = getopt_long(argc, argv, "?hp:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'p': ped_fname = optarg; break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - if ( !ped_fname ) error("Expected the -p option\n"); - parse_ped(&args, ped_fname); - return 1; -} - -typedef struct -{ - int a, b, phased; -} -gt_t; - -int parse_genotype(gt_t *gt, int32_t *ptr); - -inline int parse_genotype(gt_t *gt, int32_t *ptr) -{ - if ( ptr[0]==bcf_gt_missing ) return 0; - if ( ptr[1]==bcf_gt_missing ) return 0; - if ( ptr[1]==bcf_int32_vector_end ) return 0; - gt->phased = bcf_gt_is_phased(ptr[1]) ? 1 : 0; - gt->a = bcf_gt_allele(ptr[0]); if ( gt->a > 1 ) return 0; // consider only the first two alleles at biallelic sites - gt->b = bcf_gt_allele(ptr[1]); if ( gt->b > 1 ) return 0; - return 1; -} - -bcf1_t *process(bcf1_t *rec) -{ - int ngt = bcf_get_genotypes(args.hdr, rec, &args.gt_arr, &args.mgt_arr); - if ( ngt<0 ) return NULL; - ngt /= bcf_hdr_nsamples(args.hdr); - if ( ngt!=2 ) return NULL; - - int i; - if ( rec->rid!=args.prev_rid ) - { - args.prev_rid = rec->rid; - for (i=0; ichild) ) continue; - if ( !child.phased ) continue; - if ( child.a+child.b != 1 ) continue; // child is not a het - - if ( !parse_genotype(&father, args.gt_arr + ngt*trio->father) ) continue; - if ( !parse_genotype(&mother, args.gt_arr + ngt*trio->mother) ) continue; - if ( father.a+father.b == 1 && mother.a+mother.b == 1 ) continue; // both parents are hets - if ( father.a+father.b == mother.a+mother.b ) { trio->err++; continue; } // mendelian error - - int test_phase = 0; - if ( father.a==father.b ) test_phase = 1 + (child.a==father.a); - else if ( mother.a==mother.b ) test_phase = 1 + (child.b==mother.a); - if ( trio->prev > 0 ) - { - if ( trio->prev!=test_phase ) trio->nswitch++; - } - trio->ntest++; - trio->prev = test_phase; - } - return NULL; -} - -void destroy(void) -{ - int i; - printf("# This file was produced by: bcftools +trio-switch-rate(%s+htslib-%s)\n", bcftools_version(),hts_version()); - printf("# The command line was:\tbcftools +trio-switch-rate %s", args.argv[0]); - for (i=1; ifather), - bcf_hdr_int2id(args.hdr,BCF_DT_SAMPLE,trio->mother), - bcf_hdr_int2id(args.hdr,BCF_DT_SAMPLE,trio->child), - trio->ntest, trio->err, trio->nswitch, trio->ntest ? trio->nswitch*100./trio->ntest : 0 - ); - if (args.npop) { - pop_t *pop = &args.pop[trio->ipop]; - pop->err += trio->err; - pop->nswitch += trio->nswitch; - pop->ntest += trio->ntest; - pop->pswitch += trio->ntest ? trio->nswitch*100./trio->ntest : 0; - } - } - printf("# POP\tpopulation or other grouping defined by an optional 7-th column of the PED file\n"); - printf("# POP\t[2]Name\t[3]Number of trios\t[4]avgTested\t[5]avgMendelian Errors\t[6]avgSwitch\t[7]avgSwitch (%%)\n"); - for (i=0; iname,pop->ntrio, - (float)pop->ntest/pop->ntrio,(float)pop->err/pop->ntrio,(float)pop->nswitch/pop->ntrio, - pop->pswitch/pop->ntrio); - } - for (i=0; i - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bcftools.h" - -typedef struct -{ - int father, mother, child; // VCF sample index - int prev, ipop; - uint32_t err, nswitch, ntest; -} -trio_t; - -typedef struct -{ - char *name; - uint32_t err, nswitch, ntest, ntrio; - float pswitch; -} -pop_t; - -typedef struct -{ - int argc; - char **argv; - bcf_hdr_t *hdr; - trio_t *trio; - int ntrio, mtrio; - int32_t *gt_arr; - int npop; - pop_t *pop; - int mgt_arr, prev_rid; -} -args_t; - -args_t args; - -const char *about(void) -{ - return "Calculate phase switch rate in trio samples, children samples must have phased GTs.\n"; -} - -const char *usage(void) -{ - return - "\n" - "About: Calculate phase switch rate in trio children.\n" - "Usage: bcftools +trio-swich-rate [General Options] -- [Plugin Options]\n" - "Options:\n" - " run \"bcftools plugin\" for a list of common options\n" - "\n" - "Plugin options:\n" - " -p, --ped PED file with optional 7th column to group\n" - " results by population\n" - "\n" - "Example:\n" - " bcftools +trio-switch-rate file.bcf -- -p file.ped\n" - "\n"; -} - -void parse_ped(args_t *args, char *fname) -{ - htsFile *fp = hts_open(fname, "r"); - if ( !fp ) error("Could not read: %s\n", fname); - - kstring_t str = {0,0,0}; - if ( hts_getline(fp, KS_SEP_LINE, &str) <= 0 ) error("Empty file: %s\n", fname); - - void *pop2i = khash_str2int_init(); - - int moff = 0, *off = NULL; - do - { - // familyID sampleID paternalID maternalID sex phenotype population relationship siblings secondOrder thirdOrder children comment - // BB03 HG01884 HG01885 HG01956 2 0 ACB child 0 0 0 0 - int ncols = ksplit_core(str.s,0,&moff,&off); - if ( ncols<4 ) error("Could not parse the ped file: %s\n", str.s); - - int father = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[2]]); - if ( father<0 ) continue; - int mother = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[3]]); - if ( mother<0 ) continue; - int child = bcf_hdr_id2int(args->hdr,BCF_DT_SAMPLE,&str.s[off[1]]); - if ( child<0 ) continue; - - args->ntrio++; - hts_expand0(trio_t,args->ntrio,args->mtrio,args->trio); - trio_t *trio = &args->trio[args->ntrio-1]; - trio->father = father; - trio->mother = mother; - trio->child = child; - - if (ncols>6) { - char *pop_name = &str.s[off[6]]; - if ( !khash_str2int_has_key(pop2i,pop_name) ) - { - pop_name = strdup(&str.s[off[6]]); - khash_str2int_set(pop2i,pop_name,args->npop); - args->npop++; - args->pop = (pop_t*) realloc(args->pop,args->npop*sizeof(*args->pop)); - memset(args->pop+args->npop-1,0,sizeof(*args->pop)); - args->pop[args->npop-1].name = pop_name; - } - khash_str2int_get(pop2i,pop_name,&trio->ipop); - args->pop[trio->ipop].ntrio++; - } - } while ( hts_getline(fp, KS_SEP_LINE, &str)>=0 ); - - khash_str2int_destroy(pop2i); - free(str.s); - free(off); - hts_close(fp); -} - -int init(int argc, char **argv, bcf_hdr_t *in, bcf_hdr_t *out) -{ - memset(&args,0,sizeof(args_t)); - args.argc = argc; args.argv = argv; - args.prev_rid = -1; - args.hdr = in; - char *ped_fname = NULL; - static struct option loptions[] = - { - {"ped",required_argument,NULL,'p'}, - {0,0,0,0} - }; - int c; - while ((c = getopt_long(argc, argv, "?hp:",loptions,NULL)) >= 0) - { - switch (c) - { - case 'p': ped_fname = optarg; break; - case 'h': - case '?': - default: error("%s", usage()); break; - } - } - if ( !ped_fname ) error("Expected the -p option\n"); - parse_ped(&args, ped_fname); - return 1; -} - -typedef struct -{ - int a, b, phased; -} -gt_t; - -int parse_genotype(gt_t *gt, int32_t *ptr); - -inline int parse_genotype(gt_t *gt, int32_t *ptr) -{ - if ( ptr[0]==bcf_gt_missing ) return 0; - if ( ptr[1]==bcf_gt_missing ) return 0; - if ( ptr[1]==bcf_int32_vector_end ) return 0; - gt->phased = bcf_gt_is_phased(ptr[1]) ? 1 : 0; - gt->a = bcf_gt_allele(ptr[0]); if ( gt->a > 1 ) return 0; // consider only the first two alleles at biallelic sites - gt->b = bcf_gt_allele(ptr[1]); if ( gt->b > 1 ) return 0; - return 1; -} - -bcf1_t *process(bcf1_t *rec) -{ - int ngt = bcf_get_genotypes(args.hdr, rec, &args.gt_arr, &args.mgt_arr); - if ( ngt<0 ) return NULL; - ngt /= bcf_hdr_nsamples(args.hdr); - if ( ngt!=2 ) return NULL; - - int i; - if ( rec->rid!=args.prev_rid ) - { - args.prev_rid = rec->rid; - for (i=0; ichild) ) continue; - if ( !child.phased ) continue; - if ( child.a+child.b != 1 ) continue; // child is not a het - - if ( !parse_genotype(&father, args.gt_arr + ngt*trio->father) ) continue; - if ( !parse_genotype(&mother, args.gt_arr + ngt*trio->mother) ) continue; - if ( father.a+father.b == 1 && mother.a+mother.b == 1 ) continue; // both parents are hets - if ( father.a+father.b == mother.a+mother.b ) { trio->err++; continue; } // mendelian error - - int test_phase = 0; - if ( father.a==father.b ) test_phase = 1 + (child.a==father.a); - else if ( mother.a==mother.b ) test_phase = 1 + (child.b==mother.a); - if ( trio->prev > 0 ) - { - if ( trio->prev!=test_phase ) trio->nswitch++; - } - trio->ntest++; - trio->prev = test_phase; - } - return NULL; -} - -void destroy(void) -{ - int i; - fprintf(bcftools_stdout, "# This file was produced by: bcftools +trio-switch-rate(%s+htslib-%s)\n", bcftools_version(),hts_version()); - fprintf(bcftools_stdout, "# The command line was:\tbcftools +trio-switch-rate %s", args.argv[0]); - for (i=1; ifather), - bcf_hdr_int2id(args.hdr,BCF_DT_SAMPLE,trio->mother), - bcf_hdr_int2id(args.hdr,BCF_DT_SAMPLE,trio->child), - trio->ntest, trio->err, trio->nswitch, trio->ntest ? trio->nswitch*100./trio->ntest : 0 - ); - if (args.npop) { - pop_t *pop = &args.pop[trio->ipop]; - pop->err += trio->err; - pop->nswitch += trio->nswitch; - pop->ntest += trio->ntest; - pop->pswitch += trio->ntest ? trio->nswitch*100./trio->ntest : 0; - } - } - fprintf(bcftools_stdout, "# POP\tpopulation or other grouping defined by an optional 7-th column of the PED file\n"); - fprintf(bcftools_stdout, "# POP\t[2]Name\t[3]Number of trios\t[4]avgTested\t[5]avgMendelian Errors\t[6]avgSwitch\t[7]avgSwitch (%%)\n"); - for (i=0; iname,pop->ntrio, - (float)pop->ntest/pop->ntrio,(float)pop->err/pop->ntrio,(float)pop->nswitch/pop->ntrio, - pop->pswitch/pop->ntrio); - } - for (i=0; i - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include "rbuf.h" - -void debug_print(rbuf_t *rbuf, int *dat) -{ - int i; - for (i=-1; rbuf_next(rbuf, &i); ) printf(" %2d", i); - printf("\n"); - for (i=-1; rbuf_next(rbuf, &i); ) printf(" %2d", dat[i]); - printf("\n"); -} - -int main(int argc, char **argv) -{ - int i, j, *dat = (int*)calloc(10,sizeof(int)); - rbuf_t rbuf; - rbuf_init(&rbuf,10); - - rbuf.f = 5; // force wrapping - for (i=0; i<9; i++) - { - j = rbuf_append(&rbuf); - dat[j] = i+1; - } - printf("Inserted 1-9 starting at offset 5:\n"); - debug_print(&rbuf, dat); - - i = rbuf_kth(&rbuf, 3); - printf("4th is %d\n", dat[i]); - - printf("Deleting 1-2:\n"); - rbuf_shift_n(&rbuf, 2); - debug_print(&rbuf, dat); - - printf("Prepending 0-8:\n"); - for (i=0; i<9; i++) - { - j = rbuf_prepend(&rbuf); - dat[j] = i; - } - debug_print(&rbuf, dat); - - printf("Expanding:\n"); - rbuf_expand0(&rbuf,int,rbuf.n+1,dat); - debug_print(&rbuf, dat); - - free(dat); - return 0; -} - diff --git a/bcftools/test/test-rbuf.c.pysam.c b/bcftools/test/test-rbuf.c.pysam.c deleted file mode 100644 index 9dae8bc..0000000 --- a/bcftools/test/test-rbuf.c.pysam.c +++ /dev/null @@ -1,77 +0,0 @@ -#include "bcftools.pysam.h" - -/* test/test-rbuf.c -- rbuf_t test harness. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include -#include -#include "rbuf.h" - -void debug_print(rbuf_t *rbuf, int *dat) -{ - int i; - for (i=-1; rbuf_next(rbuf, &i); ) fprintf(bcftools_stdout, " %2d", i); - fprintf(bcftools_stdout, "\n"); - for (i=-1; rbuf_next(rbuf, &i); ) fprintf(bcftools_stdout, " %2d", dat[i]); - fprintf(bcftools_stdout, "\n"); -} - -int bcftools_test-rbuf_main(int argc, char **argv) -{ - int i, j, *dat = (int*)calloc(10,sizeof(int)); - rbuf_t rbuf; - rbuf_init(&rbuf,10); - - rbuf.f = 5; // force wrapping - for (i=0; i<9; i++) - { - j = rbuf_append(&rbuf); - dat[j] = i+1; - } - fprintf(bcftools_stdout, "Inserted 1-9 starting at offset 5:\n"); - debug_print(&rbuf, dat); - - i = rbuf_kth(&rbuf, 3); - fprintf(bcftools_stdout, "4th is %d\n", dat[i]); - - fprintf(bcftools_stdout, "Deleting 1-2:\n"); - rbuf_shift_n(&rbuf, 2); - debug_print(&rbuf, dat); - - fprintf(bcftools_stdout, "Prepending 0-8:\n"); - for (i=0; i<9; i++) - { - j = rbuf_prepend(&rbuf); - dat[j] = i; - } - debug_print(&rbuf, dat); - - fprintf(bcftools_stdout, "Expanding:\n"); - rbuf_expand0(&rbuf,int,rbuf.n+1,dat); - debug_print(&rbuf, dat); - - free(dat); - return 0; -} - diff --git a/bcftools/test/test-regidx.c b/bcftools/test/test-regidx.c deleted file mode 100644 index be44077..0000000 --- a/bcftools/test/test-regidx.c +++ /dev/null @@ -1,374 +0,0 @@ -/* test/test-regidx.c -- Regions index test harness. - - gcc -g -Wall -O0 -I. -I../htslib/ -L../htslib regidx.c -o test-regidx test-regidx.c -lhts - - Copyright (C) 2014 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include "regidx.h" - -static int verbose = 0; - -void debug(const char *format, ...) -{ - if ( verbose<2 ) return; - va_list ap; - va_start(ap, format); - vfprintf(stderr, format, ap); - va_end(ap); -} -void info(const char *format, ...) -{ - if ( verbose<1 ) return; - va_list ap; - va_start(ap, format); - vfprintf(stderr, format, ap); - va_end(ap); -} -void error(const char *format, ...) -{ - va_list ap; - va_start(ap, format); - vfprintf(stderr, format, ap); - va_end(ap); - exit(-1); -} - -int custom_parse(const char *line, char **chr_beg, char **chr_end, uint32_t *beg, uint32_t *end, void *payload, void *usr) -{ - // Use the standard parser for CHROM,FROM,TO - int i, ret = regidx_parse_tab(line,chr_beg,chr_end,beg,end,NULL,NULL); - if ( ret!=0 ) return ret; - - // Skip the fields that were parsed above - char *ss = (char*) line; - while ( *ss && isspace(*ss) ) ss++; - for (i=0; i<3; i++) - { - while ( *ss && !isspace(*ss) ) ss++; - if ( !*ss ) return -2; // wrong number of fields - while ( *ss && isspace(*ss) ) ss++; - } - if ( !*ss ) return -2; - - // Parse the payload - char *se = ss; - while ( *se && !isspace(*se) ) se++; - char **dat = (char**) payload; - *dat = (char*) malloc(se-ss+1); - memcpy(*dat,ss,se-ss+1); - (*dat)[se-ss] = 0; - return 0; -} -void custom_free(void *payload) -{ - char **dat = (char**)payload; - free(*dat); -} - -void test_sequential_access(void) -{ - // Init index with no file name, we will insert the regions manually - regidx_t *idx = regidx_init(NULL,custom_parse,custom_free,sizeof(char*),NULL); - if ( !idx ) error("init failed\n"); - - // Insert regions - kstring_t str = {0,0,0}; - int i, n = 10; - for (i=0; ibeg!=itr->end || itr->beg+1!=10*(i+1) ) error("listing failed, expected %d, found %d\n",10*(i+1),itr->beg+1); - str.l = 0; - ksprintf(&str,"%d",itr->beg+1); - if ( strcmp(regitr_payload(itr,char*),str.s) ) error("listing failed, expected payload \"%s\", found \"%s\"\n",str.s,regitr_payload(itr,char*)); - i++; - } - if ( i!=n ) error("Expected %d regions, listed %d\n", n,i); - debug("ok: listed %d regions\n", n); - - // Clean up - regitr_destroy(itr); - regidx_destroy(idx); - free(str.s); -} - -void test_custom_payload(void) -{ - // Init index with no file name, we will insert the regions manually - regidx_t *idx = regidx_init(NULL,custom_parse,custom_free,sizeof(char*),NULL); - if ( !idx ) error("init failed\n"); - - // Insert regions - char *line; - line = "1 10000000 10000000 1:10000000-10000000"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line); - line = "1 20000000 20000001 1:20000000-20000001"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line); - line = "1 20000002 20000002 1:20000002-20000002"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line); - line = "1 30000000 30000000 1:30000000-30000000"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line); - - // Test - regitr_t *itr = regitr_init(idx); - int from, to; - - from = to = 10000000; - if ( !regidx_overlap(idx,"1",from-1,to-1,itr) ) error("query failed: 1:%d-%d\n",from,to); - if ( strcmp("1:10000000-10000000",regitr_payload(itr,char*)) ) error("query failed: 1:%d-%d vs %s\n", from,to,regitr_payload(itr,char*)); - if ( !regidx_overlap(idx,"1",from-2,to-1,itr) ) error("query failed: 1:%d-%d\n",from-1,to); - if ( !regidx_overlap(idx,"1",from-2,to+3,itr) ) error("query failed: 1:%d-%d\n",from-1,to+2); - if ( regidx_overlap(idx,"1",from-2,to-2,itr) ) error("query failed: 1:%d-%d\n",from-1,to-1); - - from = to = 20000000; - if ( !regidx_overlap(idx,"1",from-1,to-1,itr) ) error("query failed: 1:%d-%d\n",from,to); - - from = to = 20000002; - if ( !regidx_overlap(idx,"1",from-1,to-1,itr) ) error("query failed: 1:%d-%d\n",from,to); - - from = to = 30000000; - if ( !regidx_overlap(idx,"1",from-1,to-1,itr) ) error("query failed: 1:%d-%d\n",from,to); - - // Clean up - regitr_destroy(itr); - regidx_destroy(idx); -} - -void get_random_region(uint32_t min, uint32_t max, uint32_t *beg, uint32_t *end) -{ - long int b = random(), e = random(); - *beg = min + (float)b * (max-min) / RAND_MAX; - *end = *beg + (float)e * (max-*beg) / RAND_MAX; -} - -void test_random(int nregs, uint32_t min, uint32_t max) -{ - min--; - max--; - - // Init index with no file name, we will insert the regions manually - regidx_t *idx = regidx_init(NULL,custom_parse,custom_free,sizeof(char*),NULL); - if ( !idx ) error("init failed\n"); - - // Test region - uint32_t beg,end; - get_random_region(min,max,&beg,&end); - - // Insert regions - int i, nexp = 0; - kstring_t str = {0,0,0}; - for (i=0; i=beg && b<=end ) nexp++; - } - - // Test - regitr_t *itr = regitr_init(idx); - int nhit = 0, ret = regidx_overlap(idx,"1",beg,end,itr); - if ( nexp && !ret ) error("query failed, expected %d overlap(s), found none: %d-%d\n", nexp,beg+1,end+1); - if ( !nexp && ret ) error("query failed, expected no overlaps, found some: %d-%d\n", beg+1,end+1); - while ( ret && regitr_overlap(itr) ) - { - str.l = 0; - ksprintf(&str,"1:%"PRIu32"-%"PRIu32"",itr->beg+1,itr->end+1); - if ( strcmp(str.s,regitr_payload(itr,char*)) ) - error("query failed, incorrect payload: %s vs %s (%d-%d)\n",str.s,regitr_payload(itr,char*),beg+1,end+1); - if ( itr->beg > end || itr->end < beg ) - error("query failed, incorrect hit: %d-%d vs %d-%d, payload %s\n", beg+1,end+1,itr->beg+1,itr->end+1,regitr_payload(itr,char*)); - nhit++; - } - if ( nexp!=nhit ) error("query failed, expected %d overlap(s), found %d: %d-%d\n",nexp,nhit,beg+1,end+1); - debug("ok: found %d overlaps\n", nexp); - - // Clean up - regitr_destroy(itr); - regidx_destroy(idx); - free(str.s); -} - -void create_line_bed(char *line, char *chr, int start, int end) -{ - sprintf(line,"%s\t%d\t%d\n",chr,start-1,end); -} -void create_line_tab(char *line, char *chr, int start, int end) -{ - sprintf(line,"%s\t%d\t%d\n",chr,start,end); -} -void create_line_reg(char *line, char *chr, int start, int end) -{ - sprintf(line,"%s:%d-%d\n",chr,start,end); -} - -typedef void (*set_line_f)(char *line, char *chr, int start, int end); - -void test(set_line_f set_line, regidx_parse_f parse) -{ - regidx_t *idx = regidx_init(NULL,parse,NULL,0,NULL); - if ( !idx ) error("init failed\n"); - - char line[250], *chr = "1"; - int i, n = 10, start, end, nhit; - for (i=1; ibeg > end-1 || itr->end < start-1 ) error("query failed, incorrect region: %d-%d for %d-%d\n",itr->beg+1,itr->end+1,start,end); - debug("\t %d-%d\n",itr->beg+1,itr->end+1); - nhit++; - } - if ( nhit!=1 ) error("query failed, expected one hit, found %d: %s:%d-%d\n",nhit,chr,start,end); - - - // one hit - start = end = 10*i+1; - if ( !regidx_overlap(idx,chr,start-1,end-1,itr) ) error("query failed, there should be a hit: %s:%d-%d\n",chr,start,end); - debug("ok: overlap(s) found for %s:%d-%d\n",chr,start,end); - nhit = 0; - while ( regitr_overlap(itr) ) - { - if ( itr->beg > end-1 || itr->end < start-1 ) error("query failed, incorrect region: %d-%d for %d-%d\n",itr->beg+1,itr->end+1,start,end); - debug("\t %d-%d\n",itr->beg+1,itr->end+1); - nhit++; - } - if ( nhit!=1 ) error("query failed, expected one hit, found %d: %s:%d-%d\n",nhit,chr,start,end); - - - // two hits - start = 10*i; end = start+1; - if ( !regidx_overlap(idx,chr,start-1,end-1,itr) ) error("query failed, there should be a hit: %s:%d-%d\n",chr,start,end); - debug("ok: overlap(s) found for %s:%d-%d\n",chr,start,end); - nhit = 0; - while ( regitr_overlap(itr) ) - { - if ( itr->beg > end-1 || itr->end < start-1 ) error("query failed, incorrect region: %d-%d for %d-%d\n",itr->beg+1,itr->end+1,start,end); - debug("\t %d-%d\n",itr->beg+1,itr->end+1); - nhit++; - } - if ( nhit!=2 ) error("query failed, expected two hits, found %d: %s:%d-%d\n",nhit,chr,start,end); - - } - regitr_destroy(itr); - regidx_destroy(idx); -} - -static void usage(void) -{ - fprintf(stderr, "Usage: test-regidx [OPTIONS]\n"); - fprintf(stderr, "Options:\n"); - fprintf(stderr, " -h, --help this help message\n"); - fprintf(stderr, " -s, --seed random seed\n"); - fprintf(stderr, " -v, --verbose increase verbosity by giving multiple times\n"); - - exit(1); -} - -int main(int argc, char **argv) -{ - static struct option loptions[] = - { - {"help",0,0,'h'}, - {"verbose",0,0,'v'}, - {"seed",1,0,'s'}, - {0,0,0,0} - }; - int c; - int seed = (int)time(NULL); - while ((c = getopt_long(argc, argv, "hvs:",loptions,NULL)) >= 0) - { - switch (c) - { - case 's': seed = atoi(optarg); break; - case 'v': verbose++; break; - default: usage(); break; - } - } - - info("Testing sequential access\n"); - test_sequential_access(); - - info("Testing TAB\n"); - test(create_line_tab,regidx_parse_tab); - - info("Testing REG\n"); - test(create_line_reg,regidx_parse_reg); - - info("Testing BED\n"); - test(create_line_bed,regidx_parse_bed); - - info("Testing custom payload\n"); - test_custom_payload(); - - int i, ntest = 1000, nreg = 50; - srandom(seed); - info("%d randomized tests, %d regions per test. Random seed is %d\n", ntest,nreg,seed); - for (i=0; i - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include "regidx.h" - -static int verbose = 0; - -void debug(const char *format, ...) -{ - if ( verbose<2 ) return; - va_list ap; - va_start(ap, format); - vfprintf(bcftools_stderr, format, ap); - va_end(ap); -} -void info(const char *format, ...) -{ - if ( verbose<1 ) return; - va_list ap; - va_start(ap, format); - vfprintf(bcftools_stderr, format, ap); - va_end(ap); -} -void error(const char *format, ...) -{ - va_list ap; - va_start(ap, format); - vfprintf(bcftools_stderr, format, ap); - va_end(ap); - exit(-1); -} - -int custom_parse(const char *line, char **chr_beg, char **chr_end, uint32_t *beg, uint32_t *end, void *payload, void *usr) -{ - // Use the standard parser for CHROM,FROM,TO - int i, ret = regidx_parse_tab(line,chr_beg,chr_end,beg,end,NULL,NULL); - if ( ret!=0 ) return ret; - - // Skip the fields that were parsed above - char *ss = (char*) line; - while ( *ss && isspace(*ss) ) ss++; - for (i=0; i<3; i++) - { - while ( *ss && !isspace(*ss) ) ss++; - if ( !*ss ) return -2; // wrong number of fields - while ( *ss && isspace(*ss) ) ss++; - } - if ( !*ss ) return -2; - - // Parse the payload - char *se = ss; - while ( *se && !isspace(*se) ) se++; - char **dat = (char**) payload; - *dat = (char*) malloc(se-ss+1); - memcpy(*dat,ss,se-ss+1); - (*dat)[se-ss] = 0; - return 0; -} -void custom_free(void *payload) -{ - char **dat = (char**)payload; - free(*dat); -} - -void test_sequential_access(void) -{ - // Init index with no file name, we will insert the regions manually - regidx_t *idx = regidx_init(NULL,custom_parse,custom_free,sizeof(char*),NULL); - if ( !idx ) error("init failed\n"); - - // Insert regions - kstring_t str = {0,0,0}; - int i, n = 10; - for (i=0; ibeg!=itr->end || itr->beg+1!=10*(i+1) ) error("listing failed, expected %d, found %d\n",10*(i+1),itr->beg+1); - str.l = 0; - ksprintf(&str,"%d",itr->beg+1); - if ( strcmp(regitr_payload(itr,char*),str.s) ) error("listing failed, expected payload \"%s\", found \"%s\"\n",str.s,regitr_payload(itr,char*)); - i++; - } - if ( i!=n ) error("Expected %d regions, listed %d\n", n,i); - debug("ok: listed %d regions\n", n); - - // Clean up - regitr_destroy(itr); - regidx_destroy(idx); - free(str.s); -} - -void test_custom_payload(void) -{ - // Init index with no file name, we will insert the regions manually - regidx_t *idx = regidx_init(NULL,custom_parse,custom_free,sizeof(char*),NULL); - if ( !idx ) error("init failed\n"); - - // Insert regions - char *line; - line = "1 10000000 10000000 1:10000000-10000000"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line); - line = "1 20000000 20000001 1:20000000-20000001"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line); - line = "1 20000002 20000002 1:20000002-20000002"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line); - line = "1 30000000 30000000 1:30000000-30000000"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line); - - // Test - regitr_t *itr = regitr_init(idx); - int from, to; - - from = to = 10000000; - if ( !regidx_overlap(idx,"1",from-1,to-1,itr) ) error("query failed: 1:%d-%d\n",from,to); - if ( strcmp("1:10000000-10000000",regitr_payload(itr,char*)) ) error("query failed: 1:%d-%d vs %s\n", from,to,regitr_payload(itr,char*)); - if ( !regidx_overlap(idx,"1",from-2,to-1,itr) ) error("query failed: 1:%d-%d\n",from-1,to); - if ( !regidx_overlap(idx,"1",from-2,to+3,itr) ) error("query failed: 1:%d-%d\n",from-1,to+2); - if ( regidx_overlap(idx,"1",from-2,to-2,itr) ) error("query failed: 1:%d-%d\n",from-1,to-1); - - from = to = 20000000; - if ( !regidx_overlap(idx,"1",from-1,to-1,itr) ) error("query failed: 1:%d-%d\n",from,to); - - from = to = 20000002; - if ( !regidx_overlap(idx,"1",from-1,to-1,itr) ) error("query failed: 1:%d-%d\n",from,to); - - from = to = 30000000; - if ( !regidx_overlap(idx,"1",from-1,to-1,itr) ) error("query failed: 1:%d-%d\n",from,to); - - // Clean up - regitr_destroy(itr); - regidx_destroy(idx); -} - -void get_random_region(uint32_t min, uint32_t max, uint32_t *beg, uint32_t *end) -{ - long int b = random(), e = random(); - *beg = min + (float)b * (max-min) / RAND_MAX; - *end = *beg + (float)e * (max-*beg) / RAND_MAX; -} - -void test_random(int nregs, uint32_t min, uint32_t max) -{ - min--; - max--; - - // Init index with no file name, we will insert the regions manually - regidx_t *idx = regidx_init(NULL,custom_parse,custom_free,sizeof(char*),NULL); - if ( !idx ) error("init failed\n"); - - // Test region - uint32_t beg,end; - get_random_region(min,max,&beg,&end); - - // Insert regions - int i, nexp = 0; - kstring_t str = {0,0,0}; - for (i=0; i=beg && b<=end ) nexp++; - } - - // Test - regitr_t *itr = regitr_init(idx); - int nhit = 0, ret = regidx_overlap(idx,"1",beg,end,itr); - if ( nexp && !ret ) error("query failed, expected %d overlap(s), found none: %d-%d\n", nexp,beg+1,end+1); - if ( !nexp && ret ) error("query failed, expected no overlaps, found some: %d-%d\n", beg+1,end+1); - while ( ret && regitr_overlap(itr) ) - { - str.l = 0; - ksprintf(&str,"1:%"PRIu32"-%"PRIu32"",itr->beg+1,itr->end+1); - if ( strcmp(str.s,regitr_payload(itr,char*)) ) - error("query failed, incorrect payload: %s vs %s (%d-%d)\n",str.s,regitr_payload(itr,char*),beg+1,end+1); - if ( itr->beg > end || itr->end < beg ) - error("query failed, incorrect hit: %d-%d vs %d-%d, payload %s\n", beg+1,end+1,itr->beg+1,itr->end+1,regitr_payload(itr,char*)); - nhit++; - } - if ( nexp!=nhit ) error("query failed, expected %d overlap(s), found %d: %d-%d\n",nexp,nhit,beg+1,end+1); - debug("ok: found %d overlaps\n", nexp); - - // Clean up - regitr_destroy(itr); - regidx_destroy(idx); - free(str.s); -} - -void create_line_bed(char *line, char *chr, int start, int end) -{ - sprintf(line,"%s\t%d\t%d\n",chr,start-1,end); -} -void create_line_tab(char *line, char *chr, int start, int end) -{ - sprintf(line,"%s\t%d\t%d\n",chr,start,end); -} -void create_line_reg(char *line, char *chr, int start, int end) -{ - sprintf(line,"%s:%d-%d\n",chr,start,end); -} - -typedef void (*set_line_f)(char *line, char *chr, int start, int end); - -void test(set_line_f set_line, regidx_parse_f parse) -{ - regidx_t *idx = regidx_init(NULL,parse,NULL,0,NULL); - if ( !idx ) error("init failed\n"); - - char line[250], *chr = "1"; - int i, n = 10, start, end, nhit; - for (i=1; ibeg > end-1 || itr->end < start-1 ) error("query failed, incorrect region: %d-%d for %d-%d\n",itr->beg+1,itr->end+1,start,end); - debug("\t %d-%d\n",itr->beg+1,itr->end+1); - nhit++; - } - if ( nhit!=1 ) error("query failed, expected one hit, found %d: %s:%d-%d\n",nhit,chr,start,end); - - - // one hit - start = end = 10*i+1; - if ( !regidx_overlap(idx,chr,start-1,end-1,itr) ) error("query failed, there should be a hit: %s:%d-%d\n",chr,start,end); - debug("ok: overlap(s) found for %s:%d-%d\n",chr,start,end); - nhit = 0; - while ( regitr_overlap(itr) ) - { - if ( itr->beg > end-1 || itr->end < start-1 ) error("query failed, incorrect region: %d-%d for %d-%d\n",itr->beg+1,itr->end+1,start,end); - debug("\t %d-%d\n",itr->beg+1,itr->end+1); - nhit++; - } - if ( nhit!=1 ) error("query failed, expected one hit, found %d: %s:%d-%d\n",nhit,chr,start,end); - - - // two hits - start = 10*i; end = start+1; - if ( !regidx_overlap(idx,chr,start-1,end-1,itr) ) error("query failed, there should be a hit: %s:%d-%d\n",chr,start,end); - debug("ok: overlap(s) found for %s:%d-%d\n",chr,start,end); - nhit = 0; - while ( regitr_overlap(itr) ) - { - if ( itr->beg > end-1 || itr->end < start-1 ) error("query failed, incorrect region: %d-%d for %d-%d\n",itr->beg+1,itr->end+1,start,end); - debug("\t %d-%d\n",itr->beg+1,itr->end+1); - nhit++; - } - if ( nhit!=2 ) error("query failed, expected two hits, found %d: %s:%d-%d\n",nhit,chr,start,end); - - } - regitr_destroy(itr); - regidx_destroy(idx); -} - -static void usage(void) -{ - fprintf(bcftools_stderr, "Usage: test-regidx [OPTIONS]\n"); - fprintf(bcftools_stderr, "Options:\n"); - fprintf(bcftools_stderr, " -h, --help this help message\n"); - fprintf(bcftools_stderr, " -s, --seed random seed\n"); - fprintf(bcftools_stderr, " -v, --verbose increase verbosity by giving multiple times\n"); - - exit(1); -} - -int bcftools_test-regidx_main(int argc, char **argv) -{ - static struct option loptions[] = - { - {"help",0,0,'h'}, - {"verbose",0,0,'v'}, - {"seed",1,0,'s'}, - {0,0,0,0} - }; - int c; - int seed = (int)time(NULL); - while ((c = getopt_long(argc, argv, "hvs:",loptions,NULL)) >= 0) - { - switch (c) - { - case 's': seed = atoi(optarg); break; - case 'v': verbose++; break; - default: usage(); break; - } - } - - info("Testing sequential access\n"); - test_sequential_access(); - - info("Testing TAB\n"); - test(create_line_tab,regidx_parse_tab); - - info("Testing REG\n"); - test(create_line_reg,regidx_parse_reg); - - info("Testing BED\n"); - test(create_line_bed,regidx_parse_bed); - - info("Testing custom payload\n"); - test_custom_payload(); - - int i, ntest = 1000, nreg = 50; - srandom(seed); - info("%d randomized tests, %d regions per test. Random seed is %d\n", ntest,nreg,seed); - for (i=0; i repository contains - several additional plugins, including the iRODS () - file access plugin previously distributed with HTSlib. - ---with-plugin-dir=DIR - Specifies the directory into which plugins built while building HTSlib - should be installed; by default, LIBEXECDIR/htslib. - ---with-plugin-path=DIR:DIR:DIR... - Specifies the list of directories that HTSlib will search for plugins. - By default, only the directory specified via --with-plugin-dir will be - searched; you can use --with-plugin-path='DIR:$(plugindir):DIR' and so - on to cause additional directories to be searched. - ---enable-libcurl - Use libcurl () to implement network access to - remote files via FTP, HTTP, HTTPS, etc. By default, HTSlib uses its - own simple networking code to provide access via FTP and HTTP only. - ---enable-gcs - Implement network access to Google Cloud Storage. By default or with - --enable-gcs=check, this is enabled when libcurl is enabled. - ---enable-s3 - Implement network access to Amazon AWS S3. By default or with - --enable-s3=check, this is enabled when libcurl is enabled. - ---disable-bz2 - Bzip2 is an optional compression codec format for CRAM, included - in HTSlib by default. It can be disabled with --disable-bz2, but - be aware that not all CRAM files may be possible to decode. - ---disable-lzma - LZMA is an optional compression codec for CRAM, included in HTSlib - by default. It can be disabled with --disable-lzma, but be aware - that not all CRAM files may be possible to decode. - ---with-libdeflate - Libdeflate is a heavily optimized library for DEFLATE-based compression - and decompression. It also includes a fast crc32 implementation. - By default, ./configure will probe for libdeflate and use it if - available. To prevent this, use --without-libdeflate. - -The configure script also accepts the usual options and environment variables -for tuning installation locations and compilers: type './configure --help' -for details. For example, - - ./configure CC=icc --prefix=/opt/icc-compiled - -would specify that HTSlib is to be built with icc and installed into bin, -lib, etc subdirectories under /opt/icc-compiled. - -If dependencies have been installed in non-standard locations (i.e. not on -the normal include and library search paths) then the CPPFLAGS and LDFLAGS -environment variables can be used to set the options needed to find them. -For example, NetBSD users may use: - - ./configure CPPFLAGS=-I/usr/pkg/include \ - LDFLAGS='-L/usr/pkg/lib -Wl,-R/usr/pkg/lib' - -to allow compiling and linking against dependencies installed via the ports -collection. - -Installation Locations -====================== - -By default, 'make install' installs HTSlib libraries under /usr/local/lib, -HTSlib header files under /usr/local/include, utility programs under -/usr/local/bin, etc. (To be precise, the header files are installed within -a fixed 'htslib' subdirectory under the specified .../include location.) - -You can specify a different location to install HTSlib by configuring -with --prefix=DIR or specify locations for particular parts of HTSlib by -configuring with --libdir=DIR and so on. Type './configure --help' for -the full list of such install directory options. - -Alternatively you can specify different locations at install time by -typing 'make prefix=DIR install' or 'make libdir=DIR install' and so on. -Consult the list of prefix/exec_prefix/etc variables near the top of the -Makefile for the full list of such variables that can be overridden. - -You can also specify a staging area by typing 'make DESTDIR=DIR install', -possibly in conjunction with other --prefix or prefix=DIR settings. -For example, - - make DESTDIR=/tmp/staging prefix=/opt - -would install into bin, lib, etc subdirectories under /tmp/staging/opt. - - -System Specific Details -======================= - -Installing the prerequisites is system dependent and there is more -than one correct way of satisfying these, including downloading them -from source, compiling and installing them yourself. - -For people with super-user access, we provide an example set of commands -below for installing the dependencies on a variety of operating system -distributions. Note these are not specific recommendations on distribution, -compiler or SSL implementation. It is assumed you already have the core set -of packages for the given distribution - the lists may be incomplete if -this is not the case. - -Debian / Ubuntu ---------------- - -sudo apt-get update # Ensure the package list is up to date -sudo apt-get install autoconf automake make gcc perl zlib1g-dev libbz2-dev liblzma-dev libcurl4-gnutls-dev libssl-dev - -Note: libcurl4-openssl-dev can be used as an alternative to libcurl4-gnutls-dev. - -RedHat / CentOS ---------------- - -sudo yum install autoconf automake make gcc perl-Data-Dumper zlib-devel bzip2 bzip2-devel xz-devel curl-devel openssl-devel - -Alpine Linux ------------- - -sudo apk update # Ensure the package list is up to date -sudo apk add autoconf automake make gcc musl-dev perl bash zlib-dev bzip2-dev xz-dev curl-dev libressl-dev - -OpenSUSE --------- - -sudo zypper install autoconf automake make gcc perl zlib-devel libbz2-devel xz-devel libcurl-devel libopenssl-devel diff --git a/htslib/NEWS b/htslib/NEWS deleted file mode 100644 index c895ea1..0000000 --- a/htslib/NEWS +++ /dev/null @@ -1,440 +0,0 @@ -Noteworthy changes in release 1.9 (18th July 2018) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -* If `./configure` fails, `make` will stop working until either configure - is re-run successfully, or `make distclean` is used. This makes - configuration failures more obvious. (#711, thanks to John Marshall) - -* The default SAM version has been changed to 1.6. This is in line with the - latest version specification and indicates that HTSlib supports the - CG tag used to store long CIGAR data in BAM format. - -* bgzip integrity check option '--test' (#682, thanks to @sd4B75bJ, @jrayner) - -* Faidx can now index fastq files as well as fasta. The fastq index adds - an extra column to the `.fai` index which gives the offset to the quality - values. New interfaces have been added to `htslib/faidx.h` to read the - fastq index and retrieve the quality values. It is possible to open - a fastq index as if fasta (only sequences will be returned), but not - the other way round. (#701) - -* New API interfaces to add or update integer, float and array aux tags. (#694) - -* Add `level=` option to `hts_set_opt()` to allow the compression - level to be set. Setting `level=0` enables uncompressed output. (#715) - -* Improved bgzip error reporting. - -* Better error reporting when CRAM reference files can't be opened. (#706) - -* Fixes to make tests work properly on Windows/MinGW - mainly to handle - line ending differences. (#716) - -* Efficiency improvements: - - - Small speed-up for CRAM indexing. - - - Reduce the number of unnecessary wake-ups in the thread pool. (#703) - - - Avoid some memory copies when writing data, notably for uncompressed - BGZF output. (#703) - -* Bug fixes: - - - Fix multi-region iterator bugs on CRAM files. (#684) - - - Fixed multi-region iterator bug that caused some reads to be skipped - incorrectly when reading BAM files. (#687) - - - Fixed synced_bcf_reader() bug when reading contigs multiple times. (#691, - reported by @freeseek) - - - Fixed bug where bcf_hdr_set_samples() did not update the sample dictionary - when removing samples. (#692, reported by @freeseek) - - - Fixed bug where the VCF record ref length was calculated incorrectly - if an INFO END tag was present. (71b00a) - - - Fixed warnings found when compiling with gcc 8.1.0. (#700) - - - sam_hdr_read() and sam_hdr_write() will now return an error code - if passed a NULL file pointer, instead of crashing. - - - Fixed possible negative array look-up in sam_parse1() that somehow - escaped previous fuzz testing. (#731, reported by @fCorleone) - - - Fixed bug where cram range queries could incorrectly report an error - when using multiple threads. (#734, reported by Brent Pedersen) - - - Fixed very rare rANS normalisation bug that could cause an assertion - failure when writing CRAM files. (#739, reported by @carsonhh) - -Noteworthy changes in release 1.8 (3rd April 2018) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -* The URL to get sequences from the EBI reference server has been changed - to https://. This is because the EBI no longer serve sequences via - plain HTTP - requests to the http:// endpoint just get redirected. - HTSlib needs to be linked against libcurl to download https:// URLs, - so CRAM users who want to get references from the EBI will need to - run configure and ensure libcurl support is enabled using the - --enable-libcurl option. - -* Added libdeflate as a build option for alternative faster compression and - decompression. Results vary by CPU but compression should be twice as fast - and decompression faster. - -* It is now possible to set the compression level in bgzip. (#675; thanks - to Nathan Weeks). - -* bgzip now gets its own manual page. - -* CRAM encoding now stored MD and NM tags verbatim where the reference - contains 'N' characters, to work around ambiguities in the SAM - specification (samtools #717/762). - Also added "store_md" and "store_nm" cram-options for forcing these - tags to be stored at all locations. This is best when combined with - a subsequent decode_md=0 option while reading CRAM. - -* Multiple CRAM bug fixes, including a fix to free and the subsequent reuse of - references with `-T ref.fa`. (#654; reported by Chris Saunders) - -* CRAM multi-threading bugs fixed: don't try to call flush on reading; - processing of multiple range queries; problems with multi-slice containers. - -* Fixed crashes caused when decoding some cramtools produced CRAM files. - -* Fixed a couple of minor rANS issues with handling invalid data. - -* Fixed bug where probaln_glocal() tried to allocate far more memory than - needed when the query sequence was much longer than the reference. This - caused crashes in samtools and bcftools mpileup when used on data with very - long reads. (#572, problem reported by Felix Bemm via minimap2). - -* sam_prop_realn() now returns -1 (the same value as for unmapped reads) - on reads that do not include at least one 'M', 'X' or '=' CIGAR operator, - and no longer adds BQ or ZQ tags. BAQ adjustments are only made to bases - covered by these operators so there is no point in trying to align - reads that do not have them. (#572) - -Noteworthy changes in release 1.7 (26th January 2018) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -* BAM: HTSlib now supports BAMs which include CIGARs with more than - 65535 operations as per HTS-Specs 18th November (dab57f4 and 2f915a8). - -* BCF/VCF: - - Removed the need for long double in pileup calculations. - - Sped up the synced reader in some situations. - - Bug fixing: removed memory leak in bcf_copy. - -* CRAM: - - Added support for HTS_IDX_START in cram iterators. - - Easier to build when lzma header files are absent. - - Bug fixing: a region query with REQUIRED_FIELDS option to - disable sequence retrieval now gives correct results. - - Bug fixing: stop queries to regions starting after the last - read on a chromosome from incorrectly reporting errors - (#651, #653; reported by Imran Haque and @egafni via pysam). - -* Multi-region iterator: The new structure takes a list of regions and - iterates over all, deduplicating reads in the process, and producing a - full list of file offset intervals. This is usually much faster than - repeatedly using the old single-region iterator on a series of regions. - -* Curl improvements: - - Add Bearer token support via HTS_AUTH_LOCATION env (#600). - - Use CURL_CA_BUNDLE environment variable to override the CA (#622; - thanks to Garret Kelly & David Alexander). - - Speed up (removal of excessive waiting) for both http(s) and ftp. - - Avoid repeatedly reconnecting by removal of unnecessary seeks. - - Bug fixing: double free when libcurl_open fails. - -* BGZF block caching, if enabled, now performs far better (#629; reported - by Ram Yalamanchili). - -* Added an hFILE layer for in-memory I/O buffers (#590; thanks to Thomas - Hickman). - -* Tidied up the drand48 support (intended for systems that do not - provide this function). - -Noteworthy changes in release 1.6 (28th September 2017) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -* Fixed bug where iterators on CRAM files did not propagate error return - values to the caller correctly. Thanks go to Chris Saunders. - -* Overhauled Windows builds. Building with msys2/mingw64 now works - correctly and passes all tests. - -* More improvements to logging output (thanks again to Anders Kaplan). - -* Return codes from sam_read1() when reading cram have been made - consistent with those returned when reading sam/bam. Thanks to - Chris Saunders (#575). - -* BGZF CRC32 checksums are now always verified. - -* It's now possible to set nthreads = 1 for cram files. - -* hfile_libcurl has been modified to make it thread-safe. It's also - better at handling web servers that do not honour byte range requests - when attempting to seek - it now sets errno to ESPIPE and keeps - the existing connection open so callers can revert to streaming mode - it they want to. - -* hfile_s3 now recalculates access tokens if they have become stale. This - fixes a reported problem where authentication failed after a file - had been in use for more than 15 minutes. - -* Fixed bug where remote index fetches would fail to notice errors when - writing files. - -* bam_read1() now checks that the query sequence length derived from the - CIGAR alignment matches the sequence length in the BAM record. - -Noteworthy changes in release 1.5 (21st June 2017) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -* Added a new logging API: hts_log(), along with hts_log_error(), - hts_log_warn() etc. convenience macros. Thanks go to Anders Kaplan - for the implementation. (#499, #543, #551) - -* Added a new file I/O option "block_size" (HTS_OPT_BLOCK_SIZE) to - alter the hFILE buffer size. - -* Fixed various bugs, including compilation issues samtools/bcftools#610, - samtools/bcftools#611 and robustness to corrupted data #537, #538, - #541, #546, #548, #549, #554. - - -Noteworthy changes in release 1.4.1 (8th May 2017) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This is primarily a security bug fix update. - -* Fixed SECURITY (CVE-2017-1000206) issue with buffer overruns with malicious data. (#514). - -* S3 support for non Amazon AWS endpoints. (#506) - -* Support for variant breakpoints in bcftools. (#516) - -* Improved handling of BCF NaNs. (#485) - -* Compilation / portability improvements. (#255, #423, #498, #488) - -* Miscellaneous bug fixes (#482, #521, #522, #523, #524). - -* Sanitise headers (#509) - - -Release 1.4 (13 March 2017) - -* Incompatible changes: several functions and data types have been changed - in this release, and the shared library soversion has been bumped to 2. - - - bam_pileup1_t has an additional field (which holds user data) - - bam1_core_t has been modified to allow for >64K CIGAR operations - and (along with bam1_t) so that CIGAR entries are aligned in memory - - hopen() has vararg arguments for setting URL scheme-dependent options - - the various tbx_conf_* presets are now const - - auxiliary fields in bam1_t are now always stored in little-endian byte - order (previously this depended on if you read a bam, sam or cram file) - - index metadata (accessible via hts_idx_get_meta()) is now always - stored in little-endian byte order (previously this depended on if - the index was in tbi or csi format) - - bam_aux2i() now returns an int64_t value - - fai_load() will no longer save local copies of remote fasta indexes - - hts_idx_get_meta() now takes a uint32_t * for l_meta (was int32_t *) - -* HTSlib now links against libbz2 and liblzma by default. To remove these - dependencies, run configure with options --disable-bz2 and --disable-lzma, - but note that this may make some CRAM files produced elsewhere unreadable. - -* Added a thread pool interface and replaced the bgzf multi-threading - code to use this pool. BAM and CRAM decoding is now multi-threaded - too, using the pool to automatically balance the number of threads - between decode, encode and any data processing jobs. - -* New errmod_cal(), probaln_glocal(), sam_cap_mapq(), and sam_prob_realn() - functions, previously internal to SAMtools, have been added to HTSlib. - -* Files can now be accessed via Google Cloud Storage using gs: URLs, when - HTSlib is configured to use libcurl for network file access rather than - the included basic knetfile networking. - -* S3 file access now also supports the "host_base" setting in the - $HOME/.s3cfg configuration file. - -* Data URLs ("data:,text") now follow the standard RFC 2397 format and may - be base64-encoded (when written as "data:;base64,text") or may include - percent-encoded characters. HTSlib's previous over-simplified "data:text" - format is no longer supported -- you will need to add an initial comma. - -* When plugins are enabled, S3 support is now provided by a separate - hfile_s3 plugin rather than by hfile_libcurl itself as previously. - When --enable-libcurl is used, by default both GCS and S3 support - and plugins will also be built; they can be individually disabled - via --disable-gcs and --disable-s3. - -* The iRODS file access plugin has been moved to a separate repository. - Configure no longer has a --with-irods option; instead build the plugin - found at . - -* APIs to portably read and write (possibly unaligned) data in little-endian - byte order have been added. - -* New functions bam_auxB_len(), bam_auxB2i() and bam_auxB2f() have been - added to make accessing array-type auxiliary data easier. bam_aux2i() - can now return the full range of values that can be stored in an integer - tag (including unsigned 32 bit tags). bam_aux2f() will return the value - of integer tags (as a double) as well as floating-point ones. All of - the bam_aux2 and bam_auxB2 functions will set errno if the requested - conversion is not valid. - -* New functions fai_load3() and fai_build3() allow fasta indexes to be - stored in a different location to the indexed fasta file. - -* New functions bgzf_index_dump_hfile() and bgzf_index_load_hfile() - allow bgzf index files (.gzi) to be written to / read from an existing - hFILE handle. - -* hts_idx_push() will report when trying to add a range to an index that - is beyond the limits that the given index can handle. This means trying - to index chromosomes longer than 2^29 bases with a .bai or .tbi index - will report an error instead of apparantly working but creating an invalid - index entry. - -* VCF formatting is now approximately 4x faster. (Whether this is - noticable depends on what was creating the VCF.) - -* CRAM lossy_names mode now works with TLEN of 0 or TLEN within +/- 1 - of the computed value. Note in these situations TLEN will be - generated / fixed during CRAM decode. - -* CRAM now supports bzip2 and lzma codecs. Within htslib these are - disabled by default, but can be enabled by specifying "use_bzip2" or - "use_lzma" in an hts_opt_add() call or via the mode string of the - hts_open_format() function. - -Noteworthy changes in release 1.3.2 (13 September 2016) - -* Corrected bin calculation when converting directly from CRAM to BAM. - Previously a small fraction of converted reads would fail Picard's - validation with "bin field of BAM record does not equal value computed" - (SAMtools issue #574). - -* Plugins can now signal to HTSlib which of RTLD_LOCAL and RTLD_GLOBAL - they wish to be opened with -- previously they were always RTLD_LOCAL. - - -Noteworthy changes in release 1.3.1 (22 April 2016) - -* Improved error checking and reporting, especially of I/O errors when - writing output files (#17, #315, PR #271, PR #317). - -* Build fixes for 32-bit systems; be sure to run configure to enable - large file support and access to 2GiB+ files. - -* Numerous VCF parsing fixes (#321, #322, #323, #324, #325; PR #370). - Particular thanks to Kostya Kortchinsky of the Google Security Team - for testing and numerous input parsing bug reports. - -* HTSlib now prints an informational message when initially creating a - CRAM reference cache in the default location under your $HOME directory. - (No message is printed if you are using $REF_CACHE to specify a location.) - -* Avoided rare race condition when caching downloaded CRAM reference sequence - files, by using distinctive names for temporary files (in addition to O_EXCL, - which has always been used). Occasional corruption would previously occur - when multiple tools were simultaneously caching the same reference sequences - on an NFS filesystem that did not support O_EXCL (PR #320). - -* Prevented race condition in file access plugin loading (PR #341). - -* Fixed mpileup memory leak, so no more "[bam_plp_destroy] memory leak [...] - Continue anyway" warning messages (#299). - -* Various minor CRAM fixes. - -* Fixed documentation problems #348 and #358. - - -Noteworthy changes in release 1.3 (15 December 2015) - -* Files can now be accessed via HTTPS and Amazon S3 in addition to HTTP - and FTP, when HTSlib is configured to use libcurl for network file access - rather than the included basic knetfile networking. - -* HTSlib can be built to use remote access hFILE backends (such as iRODS - and libcurl) via a plugin mechanism. This allows other backends to be - easily added and facilitates building tools that use HTSlib, as they - don't need to be linked with the backends' various required libraries. - -* When writing CRAM output, sam_open() etc now default to writing CRAM v3.0 - rather than v2.1. - -* fai_build() and samtools faidx now accept initial whitespace in ">" - headers (e.g., "> chr1 description" is taken to refer to "chr1"). - -* tabix --only-header works again (was broken in 1.2.x; #249). - -* HTSlib's configure script and Makefile now fully support the standard - convention of allowing CC/CPPFLAGS/CFLAGS/LDFLAGS/LIBS to be overridden - as needed. Previously the Makefile listened to $(LDLIBS) instead; if you - were overriding that, you should now override LIBS rather than LDLIBS. - -* Fixed bugs #168, #172, #176, #197, #206, #225, #245, #265, #295, and #296. - - -Noteworthy changes in release 1.2.1 (3 February 2015) - -* Reinstated hts_file_type() and FT_* macros, which were available until 1.1 - but briefly removed in 1.2. This function is deprecated and will be removed - in a future release -- you should use hts_detect_format() etc instead - - -Noteworthy changes in release 1.2 (2 February 2015) - -* HTSlib now has a configure script which checks your build environment - and allows for selection of optional extras. See INSTALL for details - -* By default, reference sequences are fetched from the EBI CRAM Reference - Registry and cached in your $HOME cache directory. This behaviour can - be controlled by setting REF_PATH and REF_CACHE enviroment variables - (see the samtools(1) man page for details) - -* Numerous CRAM improvements: - - Support for CRAM v3.0, an upcoming revision to CRAM supporting - better compression and per-container checksums - - EOF checking for v2.1 and v3.0 (similar to checking BAM EOF blocks) - - Non-standard values for PNEXT and TLEN fields are now preserved - - hts_set_fai_filename() now provides a reference file when encoding - - Generated read names are now numbered from 1, rather than being - labelled 'slice:record-in-slice' - - Multi-threading and speed improvements - -* New htsfile command for identifying file formats, and corresponding - file format detection APIs - -* New tabix --regions FILE, --targets FILE options for filtering via BED files - -* Optional iRODS file access, disabled by default. Configure with --with-irods - to enable accessing iRODS data objects directly via 'irods:DATAOBJ' - -* All occurences of 2^29 in the source have been eliminated, so indexing - and querying against reference sequences larger than 512Mbp works (when - using CSI indices) - -* Support for plain GZIP compression in various places - -* VCF header editing speed improvements - -* Added seq_nt16_int[] (equivalent to the samtools API's bam_nt16_nt4_table) - -* Reinstated faidx_fetch_nseq(), which was accidentally removed from 1.1. - Now faidx_fetch_nseq() and faidx_nseq() are equivalent; eventually - faidx_fetch_nseq() will be deprecated and removed [#156] - -* Fixed bugs #141, #152, #155, #158, #159, and various memory leaks diff --git a/htslib/bgzip.1 b/htslib/bgzip.1 deleted file mode 100644 index 71eddde..0000000 --- a/htslib/bgzip.1 +++ /dev/null @@ -1,178 +0,0 @@ -.TH bgzip 1 "18 July 2018" "htslib-1.9" "Bioinformatics tools" -.SH NAME -.PP -bgzip \- Block compression/decompression utility -.\" -.\" Copyright (C) 2009-2011 Broad Institute. -.\" Copyright (C) 2018 Genome Research Limited. -.\" -.\" Author: Heng Li -.\" -.\" Permission is hereby granted, free of charge, to any person obtaining a -.\" copy of this software and associated documentation files (the "Software"), -.\" to deal in the Software without restriction, including without limitation -.\" the rights to use, copy, modify, merge, publish, distribute, sublicense, -.\" and/or sell copies of the Software, and to permit persons to whom the -.\" Software is furnished to do so, subject to the following conditions: -.\" -.\" The above copyright notice and this permission notice shall be included in -.\" all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -.\" DEALINGS IN THE SOFTWARE. -.\" -. -.\" For code blocks and examples (cf groff's Ultrix-specific man macros) -.de EX - -. in +\\$1 -. nf -. ft CR -.. -.de EE -. ft -. fi -. in - -.. -.SH SYNOPSIS -.PP -.B bgzip -.RB [ -cdfhir ] -.RB [ -b -.IR virtualOffset ] -.RB [ -I -.IR index_name ] -.RB [ -l -.IR compression_level ] -.RB [ -s -.IR size ] -.RB [ -@ -.IR threads ] -.RI [ file ] -.PP -.SH DESCRIPTION -.PP -Bgzip compresses files in a similar manner to, and compatible with, gzip(1). -The file is compressed into a series of small (less than 64K) 'BGZF' blocks. -This allows indexes to be built against the compressed file and used to -retrieve portions of the data without having to decompress the entire file. - -If no files are specified on the command line, bgzip will compress (or -decompress if the -d option is used) standard input to standard output. -If a file is specified, it will be compressed (or decompressed with -d). -If the -c option is used, the result will be written to standard output, -otherwise when compressing bgzip will write to a new file with a .gz -suffix and remove the original. When decompressing the input file must -have a .gz suffix, which will be removed to make the output name. Again -after decompression completes the input file will be removed. - -.SH OPTIONS -.TP 10 -.BI "-b, --offset " INT -Decompress to standard output from virtual file position (0-based uncompressed -offset). -Implies -c and -d. -.TP -.B "-c, --stdout" -Write to standard output, keep original files unchanged. -.TP -.B "-d, --decompress" -Decompress. -.TP -.B "-f, --force" -Overwrite files without asking. -.TP -.B "-h, --help" -Displays a help message. -.TP -.B "-i, --index" -Create a BGZF index while compressing. -Unless the -I option is used, this will have the name of the compressed -file with .gzi appended to it. -.TP -.BI "-I, --index-name " FILE -Index file name. -.TP -.BI "-l, --compress-level " INT -Compression level to use when compressing. -From 0 to 9, or -1 for the default level set by the compression library. [-1] -.TP -.B "-r, --reindex" -Rebuild the index on an existing compressed file. -.TP -.B "-g, --rebgzip" -Try to use an existing index to create a compressed file with matching -block offsets. -Note that this assumes that the same compression library and level are in use -as when making the original file. -Don't use it unless you know what you're doing. -.TP -.BI "-s, --size " INT -Decompress INT bytes (uncompressed size) to standard output. -Implies -c. -.TP -.BI "-@, --threads " INT -Number of threads to use [1]. -.PP - -.SH BGZF FORMAT -The BGZF format written by bgzip is described in the SAM format specification -available from http://samtools.github.io/hts-specs/SAMv1.pdf. - -It makes use of a gzip feature which allows compressed files to be -concatenated. -The input data is divided into blocks which are no larger than 64 kilobytes -both before and after compression (including compression headers). -Each block is compressed into a gzip file. -The gzip header includes an extra sub-field with identifier 'BC' and the length -of the compressed block, including all headers. - -.SH GZI FORMAT -The index format is a binary file listing pairs of compressed and -uncompressed offsets in a BGZF file. -Each compressed offset points to the start of a BGZF block. -The uncompressed offset is the corresponding location in the uncompressed -data stream. - -All values are stored as little-endian 64-bit unsigned integers. - -The file contents are: -.EX 4 -uint64_t number_entries -.EE -followed by number_entries pairs of: -.EX 4 -uint64_t compressed_offset -uint64_t uncompressed_offset -.EE - -.SH EXAMPLES -.EX 4 -# Compress stdin to stdout -bgzip < /usr/share/dict/words > /tmp/words.gz - -# Make a .gzi index -bgzip -r /tmp/words.gz - -# Extract part of the data using the index -bgzip -b 367635 -s 4 /tmp/words.gz - -# Uncompress the whole file, removing the compressed copy -bgzip -d /tmp/words.gz -.EE - -.SH AUTHOR -.PP -The BGZF library was originally implemented by Bob Handsaker and modified -by Heng Li for remote file access and in-memory caching. - -.SH SEE ALSO -.PP -.BR gzip (1), -.BR tabix (1) diff --git a/htslib/faidx.5 b/htslib/faidx.5 deleted file mode 100644 index fb84fb2..0000000 --- a/htslib/faidx.5 +++ /dev/null @@ -1,238 +0,0 @@ -'\" t -.TH faidx 5 "June 2018" "htslib" "Bioinformatics formats" -.SH NAME -faidx \- an index enabling random access to FASTA and FASTQ files -.\" -.\" Copyright (C) 2013, 2015, 2018 Genome Research Ltd. -.\" -.\" Author: John Marshall -.\" -.\" Permission is hereby granted, free of charge, to any person obtaining a -.\" copy of this software and associated documentation files (the "Software"), -.\" to deal in the Software without restriction, including without limitation -.\" the rights to use, copy, modify, merge, publish, distribute, sublicense, -.\" and/or sell copies of the Software, and to permit persons to whom the -.\" Software is furnished to do so, subject to the following conditions: -.\" -.\" The above copyright notice and this permission notice shall be included in -.\" all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -.\" DEALINGS IN THE SOFTWARE. -.\" -.SH SYNOPSIS -.IR file.fa .fai, -.IR file.fasta .fai, -.IR file.fq .fai, -.IR file.fastq .fai -.SH DESCRIPTION -Using an \fBfai index\fP file in conjunction with a FASTA/FASTQ file containing -reference sequences enables efficient access to arbitrary regions within -those reference sequences. -The index file typically has the same filename as the corresponding FASTA/FASTQ -file, with \fB.fai\fP appended. -.P -An \fBfai index\fP file is a text file consisting of lines each with -five TAB-delimited columns for a FASTA file and six for FASTQ: -.TS -lbl. -NAME Name of this reference sequence -LENGTH Total length of this reference sequence, in bases -OFFSET Offset in the FASTA/FASTQ file of this sequence's first base -LINEBASES The number of bases on each line -LINEWIDTH The number of bytes in each line, including the newline -QUALOFFSET Offset of sequence's first quality within the FASTQ file -.TE -.P -The \fBNAME\fP and \fBLENGTH\fP columns contain the same -data as would appear in the \fBSN\fP and \fBLN\fP fields of a -SAM \fB@SQ\fP header for the same reference sequence. -.P -The \fBOFFSET\fP column contains the offset within the FASTA/FASTQ file, in -bytes starting from zero, of the first base of this reference sequence, i.e., of -the character following the newline at the end of the header line (the -"\fB>\fP" line in FASTA, "\fB@\fP" in FASTQ). Typically the lines of a -\fBfai index\fP file appear in the order in which the reference sequences -appear in the FASTA/FASTQ file, so \fB.fai\fP files are typically sorted -according to this column. -.P -The \fBLINEBASES\fP column contains the number of bases in each of the sequence -lines that form the body of this reference sequence, apart from the final line -which may be shorter. -The \fBLINEWIDTH\fP column contains the number of \fIbytes\fP in each of -the sequence lines (except perhaps the final line), thus differing from -\fBLINEBASES\fP in that it also counts the bytes forming the line terminator. -.P -The \fBQUALOFFSET\fP works the same way as \fBOFFSET\fP but for the first -quality score of this reference sequence. This would be the first character -following the newline at the end of the "\fB+\fP" line. For FASTQ files only. -.SS FASTA Files -In order to be indexed with \fBsamtools faidx\fP, a FASTA file must be a text -file of the form -.LP -.RS -.RI > name -.RI [ description ...] -.br -ATGCATGCATGCATGCATGCATGCATGCAT -.br -GCATGCATGCATGCATGCATGCATGCATGC -.br -ATGCAT -.br -.RI > name -.RI [ description ...] -.br -ATGCATGCATGCAT -.br -GCATGCATGCATGC -.br -[...] -.RE -.LP -In particular, each reference sequence must be "well-formatted", i.e., all -of its sequence lines must be the same length, apart from the final sequence -line which may be shorter. -(While this sequence line length must be the same within each sequence, -it may vary between different reference sequences in the same FASTA file.) -.P -This also means that although the FASTA file may have Unix- or Windows-style -or other line termination, the newline characters present must be consistent, -at least within each reference sequence. -.P -The \fBsamtools\fP implementation uses the first word of the "\fB>\fP" header -line text (i.e., up to the first whitespace character, having skipped any -initial whitespace after the ">") as the \fBNAME\fP column. -.SS FASTQ Files -FASTQ files for indexing work in the same way as the FASTA files. -.LP -.RS -.RI @ name -.RI [ description...] -.br -ATGCATGCATGCATGCATGCATGCATGCAT -.br -GCATGCATGCATGCATGCATGCATGCATGC -.br -ATGCAT -.br -.RI + -.br -FFFA@@FFFFFFFFFFHHB:::@BFFFFGG -.br -HIHIIIIIIIIIIIIIIIIIIIIIIIFFFF -.br -8011<< -.br -.RI @ name -.RI [ description...] -.br -ATGCATGCATGCAT -.br -GCATGCATGCATGC -.br -.RI + -.br -IIA94445EEII== -.br -=>IIIIIIIIICCC -.br -[...] -.RE -.LP -Quality lines must be wrapped at the same length as the corresponding -sequence lines. -.SH EXAMPLE -For example, given this FASTA file -.LP -.RS ->one -.br -ATGCATGCATGCATGCATGCATGCATGCAT -.br -GCATGCATGCATGCATGCATGCATGCATGC -.br -ATGCAT -.br ->two another chromosome -.br -ATGCATGCATGCAT -.br -GCATGCATGCATGC -.br -.RE -.LP -formatted with Unix-style (LF) line termination, the corresponding fai index -would be -.RS -.TS -lnnnn. -one 66 5 30 31 -two 28 98 14 15 -.TE -.RE -.LP -If the FASTA file were formatted with Windows-style (CR-LF) line termination, -the fai index would be -.RS -.TS -lnnnn. -one 66 6 30 32 -two 28 103 14 16 -.TE -.RE -.LP -An example FASTQ file -.LP -.RS -@fastq1 -.br -ATGCATGCATGCATGCATGCATGCATGCAT -.br -GCATGCATGCATGCATGCATGCATGCATGC -.br -ATGCAT -.br -+ -.br -FFFA@@FFFFFFFFFFHHB:::@BFFFFGG -.br -HIHIIIIIIIIIIIIIIIIIIIIIIIFFFF -.br -8011<< -.br -@fastq2 -.br -ATGCATGCATGCAT -.br -GCATGCATGCATGC -.br -+ -.br -IIA94445EEII== -.br -=>IIIIIIIIICCC -.br -.RE -.LP -Formatted with Unix-style line termination would give this fai index -.RS -.TS -lnnnnn. -fastq1 66 8 30 31 79 -fastq2 28 156 14 15 188 -.TE -.RE -.SH SEE ALSO -.IR samtools (1) -.TP -https://en.wikipedia.org/wiki/FASTA_format -.TP -https://en.wikipedia.org/wiki/FASTQ_format - -Further description of the FASTA and FASTQ formats diff --git a/htslib/htsfile.1 b/htslib/htsfile.1 deleted file mode 100644 index e270116..0000000 --- a/htslib/htsfile.1 +++ /dev/null @@ -1,80 +0,0 @@ -.TH htsfile 1 "18 July 2018" "htslib-1.9" "Bioinformatics tools" -.SH NAME -htsfile \- identify high-throughput sequencing data files -.\" -.\" Copyright (C) 2015, 2017 Genome Research Ltd. -.\" -.\" Author: John Marshall -.\" -.\" Permission is hereby granted, free of charge, to any person obtaining a -.\" copy of this software and associated documentation files (the "Software"), -.\" to deal in the Software without restriction, including without limitation -.\" the rights to use, copy, modify, merge, publish, distribute, sublicense, -.\" and/or sell copies of the Software, and to permit persons to whom the -.\" Software is furnished to do so, subject to the following conditions: -.\" -.\" The above copyright notice and this permission notice shall be included in -.\" all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -.\" DEALINGS IN THE SOFTWARE. -.\" -.SH SYNOPSIS -.B htsfile -.RB [ -chHv ] -.IR FILE ... -.SH DESCRIPTION -The \fBhtsfile\fR utility attempts to identify what kind of high-throughput -sequencing data files the specified files are, and provides minimal viewing -capabilities for some kinds of data file. -.P -It can identify sequencing data files such as SAM, BAM, and CRAM; -variant calling data files such as VCF and BCF; -index files used to index these data files; -and compressed versions of many of them. -.P -For each \fIFILE\fR given, \fBhtsfile\fP prints a description of the file -format determined, using similar keyword conventions to \fBfile\fP(1): -"text" indicates a textual file that can probably be viewed on a terminal; -"data" indicates binary data; -"sequence", "variant calling", and "index" indicate different categories of -data file. -When it can be identified, the name of the particular file format (such as -"BAM" or "VCF") is printed at the start of the description. -.P -When used to view file contents as text, \fBhtsfile\fP can optionally show -only headers or only data records, but has no other filtering capabilities. -Use \fBsamtools\fR or \fBbcftools\fR if you need more extensive viewing or -filtering capabilities. -.P -The following options are accepted: -.TP 4n -.BR -c ", " --view -Instead of identifying the specified files, display a textual representation -of their contents on standard output. -.IP -By default, \fB--view\fR refuses to display files in unknown formats. -When \fB--verbose\fR is also given, the raw contents of such files are -displayed, with non-printable characters shown via C-style "\\x" hexadecimal -escape sequences. -.TP -.BR -h ", " --header-only -Display data file headers only. -Implies \fB--view\fR. -.TP -.BR -H ", " --no-header -When viewing files, display data records only. -.TP -.BR -v ", " --verbose -Display additional warnings and diagnostic messages. -Using \fB--verbose\fR repeatedly further raises the verbosity. -.PP -.SH SEE ALSO -.IR bcftools (1), -.IR file (1), -.IR samtools (1) diff --git a/htslib/sam.5 b/htslib/sam.5 deleted file mode 100644 index 66542bb..0000000 --- a/htslib/sam.5 +++ /dev/null @@ -1,68 +0,0 @@ -'\" t -.TH sam 5 "August 2013" "htslib" "Bioinformatics formats" -.SH NAME -sam \- Sequence Alignment/Map file format -.\" -.\" Copyright (C) 2009, 2013 Genome Research Ltd. -.\" -.\" Author: Heng Li -.\" -.\" Permission is hereby granted, free of charge, to any person obtaining a -.\" copy of this software and associated documentation files (the "Software"), -.\" to deal in the Software without restriction, including without limitation -.\" the rights to use, copy, modify, merge, publish, distribute, sublicense, -.\" and/or sell copies of the Software, and to permit persons to whom the -.\" Software is furnished to do so, subject to the following conditions: -.\" -.\" The above copyright notice and this permission notice shall be included in -.\" all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -.\" DEALINGS IN THE SOFTWARE. -.\" -.SH DESCRIPTION -Sequence Alignment/Map (SAM) format is TAB-delimited. Apart from the header lines, which are started -with the `@' symbol, each alignment line consists of: -.TS -nlbl. -1 QNAME Query template/pair NAME -2 FLAG bitwise FLAG -3 RNAME Reference sequence NAME -4 POS 1-based leftmost POSition/coordinate of clipped sequence -5 MAPQ MAPping Quality (Phred-scaled) -6 CIGAR extended CIGAR string -7 MRNM Mate Reference sequence NaMe (`=' if same as RNAME) -8 MPOS 1-based Mate POSistion -9 TLEN inferred Template LENgth (insert size) -10 SEQ query SEQuence on the same strand as the reference -11 QUAL query QUALity (ASCII-33 gives the Phred base quality) -12+ OPT variable OPTional fields in the format TAG:VTYPE:VALUE -.TE -.PP -Each bit in the FLAG field is defined as: -.TS -lcbl. -0x0001 p the read is paired in sequencing -0x0002 P the read is mapped in a proper pair -0x0004 u the query sequence itself is unmapped -0x0008 U the mate is unmapped -0x0010 r strand of the query (1 for reverse) -0x0020 R strand of the mate -0x0040 1 the read is the first read in a pair -0x0080 2 the read is the second read in a pair -0x0100 s the alignment is not primary -0x0200 f the read fails platform/vendor quality checks -0x0400 d the read is either a PCR or an optical duplicate -0x0800 S the alignment is supplementary -.TE -.P -where the second column gives the string representation of the FLAG field. -.SH SEE ALSO -.TP -https://github.com/samtools/hts-specs -The full SAM/BAM file format specification diff --git a/htslib/tabix.1 b/htslib/tabix.1 deleted file mode 100644 index 8bc37ca..0000000 --- a/htslib/tabix.1 +++ /dev/null @@ -1,171 +0,0 @@ -.TH tabix 1 "18 July 2018" "htslib-1.9" "Bioinformatics tools" -.SH NAME -.PP -tabix \- Generic indexer for TAB-delimited genome position files -.\" -.\" Copyright (C) 2009-2011 Broad Institute. -.\" -.\" Author: Heng Li -.\" -.\" Permission is hereby granted, free of charge, to any person obtaining a -.\" copy of this software and associated documentation files (the "Software"), -.\" to deal in the Software without restriction, including without limitation -.\" the rights to use, copy, modify, merge, publish, distribute, sublicense, -.\" and/or sell copies of the Software, and to permit persons to whom the -.\" Software is furnished to do so, subject to the following conditions: -.\" -.\" The above copyright notice and this permission notice shall be included in -.\" all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -.\" DEALINGS IN THE SOFTWARE. -.\" -.SH SYNOPSIS -.PP -.B tabix -.RB [ -0lf ] -.RB [ -p -gff|bed|sam|vcf] -.RB [ -s -.IR seqCol ] -.RB [ -b -.IR begCol ] -.RB [ -e -.IR endCol ] -.RB [ -S -.IR lineSkip ] -.RB [ -c -.IR metaChar ] -.I in.tab.bgz -.RI [ "region1 " [ "region2 " [ ... "]]]" - -.SH DESCRIPTION -.PP -Tabix indexes a TAB-delimited genome position file -.I in.tab.bgz -and creates an index file -.RI ( in.tab.bgz.tbi -or -.IR in.tab.bgz.csi ) -when -.I region -is absent from the command-line. The input data file must be position -sorted and compressed by -.B bgzip -which has a -.BR gzip (1) -like interface. - -After indexing, tabix is able to quickly retrieve data lines overlapping -.I regions -specified in the format "chr:beginPos-endPos". -(Coordinates specified in this region format are 1-based and inclusive.) - -Fast data retrieval also -works over network if URI is given as a file name and in this case the -index file will be downloaded if it is not present locally. - -.SH INDEXING OPTIONS -.TP 10 -.B -0, --zero-based -Specify that the position in the data file is 0-based (e.g. UCSC files) -rather than 1-based. -.TP -.BI "-b, --begin " INT -Column of start chromosomal position. [4] -.TP -.BI "-c, --comment " CHAR -Skip lines started with character CHAR. [#] -.TP -.BI "-C, --csi" -Produce CSI format index instead of classical tabix or BAI style indices. -.TP -.BI "-e, --end " INT -Column of end chromosomal position. The end column can be the same as the -start column. [5] -.TP -.B "-f, --force " -Force to overwrite the index file if it is present. -.TP -.BI "-m, --min-shift " INT -set minimal interval size for CSI indices to 2^INT [14] -.TP -.BI "-p, --preset " STR -Input format for indexing. Valid values are: gff, bed, sam, vcf. -This option should not be applied together with any of -.BR -s ", " -b ", " -e ", " -c " and " -0 ; -it is not used for data retrieval because this setting is stored in -the index file. [gff] -.TP -.BI "-s, --sequence " INT -Column of sequence name. Option -.BR -s ", " -b ", " -e ", " -S ", " -c " and " -0 -are all stored in the index file and thus not used in data retrieval. [1] -.TP -.BI "-S, --skip-lines " INT -Skip first INT lines in the data file. [0] - -.SH QUERYING AND OTHER OPTIONS -.TP -.B "-h, --print-header " -Print also the header/meta lines. -.TP -.B "-H, --only-header " -Print only the header/meta lines. -.TP -.B "-l, --list-chroms " -List the sequence names stored in the index file. -.TP -.BI "-r, --reheader " FILE -Replace the header with the content of FILE -.TP -.BI "-R, --regions " FILE -Restrict to regions listed in the FILE. The FILE can be BED file (requires .bed, .bed.gz, .bed.bgz -file name extension) or a TAB-delimited file with CHROM, POS, and, optionally, -POS_TO columns, where positions are 1-based and inclusive. When this option is in use, the input -file may not be sorted. -.TP -.BI "-T, --targets " FILE -Similar to -.B -R -but the entire input will be read sequentially and regions not listed in FILE will be skipped. -.PP -.SH EXAMPLE -(grep ^"#" in.gff; grep -v ^"#" in.gff | sort -k1,1 -k4,4n) | bgzip > sorted.gff.gz; - -tabix -p gff sorted.gff.gz; - -tabix sorted.gff.gz chr1:10,000,000-20,000,000; - -.SH NOTES -It is straightforward to achieve overlap queries using the standard -B-tree index (with or without binning) implemented in all SQL databases, -or the R-tree index in PostgreSQL and Oracle. But there are still many -reasons to use tabix. Firstly, tabix directly works with a lot of widely -used TAB-delimited formats such as GFF/GTF and BED. We do not need to -design database schema or specialized binary formats. Data do not need -to be duplicated in different formats, either. Secondly, tabix works on -compressed data files while most SQL databases do not. The GenCode -annotation GTF can be compressed down to 4%. Thirdly, tabix is -fast. The same indexing algorithm is known to work efficiently for an -alignment with a few billion short reads. SQL databases probably cannot -easily handle data at this scale. Last but not the least, tabix supports -remote data retrieval. One can put the data file and the index at an FTP -or HTTP server, and other users or even web services will be able to get -a slice without downloading the entire file. - -.SH AUTHOR -.PP -Tabix was written by Heng Li. The BGZF library was originally -implemented by Bob Handsaker and modified by Heng Li for remote file -access and in-memory caching. - -.SH SEE ALSO -.PP -.BR bgzip (1), -.BR samtools (1) diff --git a/htslib/test/auxf#values.sam b/htslib/test/auxf#values.sam deleted file mode 100644 index 6aafc45..0000000 --- a/htslib/test/auxf#values.sam +++ /dev/null @@ -1,5 +0,0 @@ -@HD VN:1.4 SO:unsorted -@SQ SN:Sheila LN:20 -@RG ID:ID SM:foo -Fred 16 Sheila 1 86 10M * 0 0 GCTAGCTCAG ********** RG:Z:ID A!:A:! Ac:A:c AC:A:C I0:i:0 I1:i:1 I2:i:127 I3:i:128 I4:i:255 I5:i:256 I6:i:32767 I7:i:32768 I8:i:65535 I9:i:65536 IA:i:2147483647 i1:i:-1 i2:i:-127 i3:i:-128 i4:i:-255 i5:i:-256 i6:i:-32767 i7:i:-32768 i8:i:-65535 i9:i:-65536 iA:i:-2147483647 iB:i:-2147483648 F0:f:-1 F1:f:0 F2:f:1 F3:f:9.9e-19 F4:f:-9.9e-19 F5:f:9.9e+19 F6:f:-9.9e+19 H0:H:AA H1:H:dead00beef Z0:Z:space space Zn:Z: Hn:H: -Jim 16 Sheila 11 11 10M * 0 0 AAAAAAAAAA * BC:B:C,0,127,128,255 Bc:B:c,-128,-127,0,127 BS:B:S,0,32767,32768,65535 Bs:B:s,-32768,-32767,0,32767 BI:B:I,0,2147483647,2147483648,4294967295 Bi:B:i,-2147483648,-2147483647,0,2147483647 Hn:H: Zn:Z: diff --git a/htslib/test/auxf#values_java.cram b/htslib/test/auxf#values_java.cram deleted file mode 100644 index 17f1ae627d792caf24f44e3d101e6dc0177f563c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5152 zcmeH~dvFuS9mjX&m1OyWAK1hXjAdX76m08h%f=Mz#jft27H?d+Yk|h)EOoWE2<;wCjkDCC)6|+vi@jd2 z#batV`3$_?+rpcSrs5(`vC-13_mngj8{*3AD>aUaQb&cxRa@%o>WV9`3kf=nt){fi zv)rRC?DUC+y<$tZh<8nGg>4;rOCjIw>FDX|Y8NAS`NjfWL7S&ri*?%keBN_^Pj7ci zzNfuCzsIvw)aG|;^A~9I>$N>CVoxECy};+u<~t%~NiMYc^S`1uVTTGZyr#}s`ehd| zAJBGwvq5Kw!=!zCeVc**#|-%HJb7?W5{!(dDM;Epy1MecQEG)fVs+W-GXGX(y^~t& zNPRtZ)n?<>P~l%kI2*?~IL^g!JjV$fCvsJtTw`Y=vF2H=HmjAl+I2p=-e))X>_(s6 zd^5HJ?}8^4x`OsvN_D6qeyfVyBrpmqeO66g+^T?gcJ0z7%#Fr7;U!l(LE%N|l_IQdNVK zQneGf*m}@3^_7&y)h?hkzTT-+XcC<8Tw((}GR_WQ5(jt54y;LOfMBV$@ZfkSh-o&s zOK*S>8TAfIGwVUia@hdPt^#mkT?M5%{py(k$O21~t3rYd7qf{vZrPw7^id_LPt5mUo zQX+(ua8{ud04qxss}KNZhm?d+TTlvs(L+jjTu=&t?G3^?+GRWo58>s3Li$>qP@}3xD?R*XxuNB4^_l4rAi&EL1)CFh0ruO zy*QzmGE5StB|af>TvBpM>iD$ujLa;YIGid>4<-atfP>DSn1g=Cm4Mzyx1*cUzvx(; zOPoD)9r_HNg+4)Ngbq?a``fze`Ll8^+A7<`^;y5}=JXt&2HWVVlI@r7TUMQDSa{&_ zH>w|eG+Rq=U zJoZl6l83ME4fbaoA6R*@kl&{tuC%V`+i5YZ_-xv#@45a*akvVO$J65G-;Uqs`tQB- zvhl5_j$P;^N~kDQ-@XF78qDPcMeh1oQ1Ig2aKKFc(5is@Yg+qN-1m5EI*kz3D$+H& z50*S3%3l9;#z+plaG->bB>w_Vrm_C;hroaMX!rj4VQfg(n3E6*Gqa$o#<_61YGVQ! zT>9ce34p$(-v0!EV5kfh0eSDuU@lp+>-01n&W_VnQ&bW~|`*!nIWXivr`zbP3 zIpcM=67r+jGEY7NrjS30^%^}0&6CU}GF?p?VHJ34CK5DzH4`J@hTF>)ffYzsQzu?byg z5wOVsQAK_i{9q0OQ^t?2WsGVSh8p}LG}-^nGPwwBd z8B-Br*uH>Mt@3rFMVEz?JKT}i-Cl#Svvd6 z2-)4fe=bh$*0zmD5irSsTX+g3K?E-7-cSJmo4PcD1bBDH)fosFWWX{;W-lJD!U#P1 zxe@`R9EkLxVd^hmrYv5%hsB>&k)8SrrRX;IhFGvwf^?mUGw0QwxqfKmAB<=g6yC%I z6kNXP7G;UjAiO)W5zgLybda%el1U{|CbiSj1ldUXx*)#wgV2-Y=(gE${6HUNDbXwM zw~S;_mKwdXmdZ zT5+Y~iv41>TAw~KnX(L7tIdpjT>ejnkF`8{?i0o`3F*DBcn@V+(YwBk+W=k17rQJD z?7*WNJ`Y!Lc$^=Zoys;T?!)c;B#j-qd!cdEXM65VjOv;7YWBupAHGLoVb}p zy6^m@9f@Yuz*;1Vq@CRx zL}uW)K}5zZV_w|96sBX}C>H1$jD#yw}Qck=8(|`D?|CY^wh;ikkQGu5T1}nFDs7Y9`n+xWhW7k?^1Aj z${tnjL}2~7X*>e*UF!F0qU|3_MPP95*cJrt@|c?uVe;uBbkKLUcj9RaPMuN*-GcLj pw!bnJ2~Pj=HQYJzRGJjHcfK9&VZkYfKb#N$RQMYU{x0#f`aj=mCq4iG diff --git a/htslib/test/auxf.fa b/htslib/test/auxf.fa deleted file mode 100644 index 11d25dd..0000000 --- a/htslib/test/auxf.fa +++ /dev/null @@ -1,2 +0,0 @@ ->Sheila -GCTAGCTCAGAAAAAAAAAA diff --git a/htslib/test/auxf.fa.fai b/htslib/test/auxf.fa.fai deleted file mode 100644 index f3cdedb..0000000 --- a/htslib/test/auxf.fa.fai +++ /dev/null @@ -1 +0,0 @@ -Sheila 20 8 20 21 diff --git a/htslib/test/bgziptest.txt b/htslib/test/bgziptest.txt deleted file mode 100644 index a086a51..0000000 --- a/htslib/test/bgziptest.txt +++ /dev/null @@ -1 +0,0 @@ -122333444455555 \ No newline at end of file diff --git a/htslib/test/bgziptest.txt.gz b/htslib/test/bgziptest.txt.gz deleted file mode 100644 index dc433df327bdb62ac610327e27f4be1598e4667f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmb2|=3rp}f&Xj_PR>jWG7QEn4BOw|X=Vh9$)iciG8h{%G4P4kr7&TUm18hAGh<`; v+je~tGZtxi24h1*Lq>)tzdk+(S&42qP`fEB6T`HZCi_^iNJ}$-421vyAfp}T diff --git a/htslib/test/bgziptest.txt.gz.gzi b/htslib/test/bgziptest.txt.gz.gzi deleted file mode 100644 index 3bc450e0162faa88d44c042022084a0402ac140a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 lcmZQ&fB;!2%?PEfp)@m;j)Kx`P`V0Ab3y5uP?{e~0{}+Y0qy_* diff --git a/htslib/test/c1#bounds.sam b/htslib/test/c1#bounds.sam deleted file mode 100644 index 181dbe0..0000000 --- a/htslib/test/c1#bounds.sam +++ /dev/null @@ -1,4 +0,0 @@ -@SQ SN:c1 LN:10 -s0 0 c1 1 0 10M * 0 0 AACCGCGGTT ********** -s1 0 c1 2 0 10M * 0 0 ACCGCGGTTC ********** -s2 0 c1 3 0 10M * 0 0 CCGCGGTTCG ********** diff --git a/htslib/test/c1#clip.sam b/htslib/test/c1#clip.sam deleted file mode 100644 index fd073f0..0000000 --- a/htslib/test/c1#clip.sam +++ /dev/null @@ -1,8 +0,0 @@ -@SQ SN:c1 LN:10 -s0a 0 c1 1 0 10M * 0 0 AACCGCGGTT ********** -s0A 0 c1 1 0 3M4N3M * 0 0 AACGTT ****** -s0b 0 c1 2 0 1S8M1S * 0 0 AACCGCGGTT ********** -s0B 0 c1 2 0 1H8M1H * 0 0 ACCGCGGT ******** -s0c 0 c1 3 0 2S6M2S * 0 0 AACCGCGGTT ********** -s0c 0 c1 3 0 2S3M2I3M2S * 0 0 AACCGNNCGGTT ************ -s0C 0 c1 3 0 2H6M2H * 0 0 CCGCGG ****** diff --git a/htslib/test/c1#noseq.sam b/htslib/test/c1#noseq.sam deleted file mode 100644 index fda58c2..0000000 --- a/htslib/test/c1#noseq.sam +++ /dev/null @@ -1,10 +0,0 @@ -@SQ SN:c1 LN:10 -sq1 0 c1 1 0 10M * 0 0 AACCGCGGTT ********** MD:Z:10 NM:i:0 -sQ1 0 c1 1 0 10M * 0 0 AACCGCGGTT * MD:Z:10 NM:i:0 -SQ1 0 c1 1 0 10M * 0 0 * * MD:Z:10 NM:i:0 -sq2 0 c1 1 0 4M1D5M * 0 0 AACCCGGTT ********* MD:Z:4^G5 NM:i:1 -sQ2 0 c1 1 0 4M1D5M * 0 0 AACCCGGTT * MD:Z:4^G5 NM:i:1 -SQ2 0 c1 1 0 4M1D5M * 0 0 * * MD:Z:4^G5 NM:i:1 -sq3 4 c1 1 0 * * 0 0 AACCCGGTT ********* -sQ3 4 c1 1 0 * * 0 0 AACCCGGTT * -SQ3 4 c1 1 0 * * 0 0 * * diff --git a/htslib/test/c1#pad1.sam b/htslib/test/c1#pad1.sam deleted file mode 100644 index 54f7a11..0000000 --- a/htslib/test/c1#pad1.sam +++ /dev/null @@ -1,10 +0,0 @@ -@SQ SN:c1 LN:10 -s0a 0 c1 1 0 10M * 0 0 AACCGCGGTT * -s0b 0 c1 1 0 10M * 0 0 AACCGCGGTT * -s0c 0 c1 1 0 10M * 0 0 AACCGCGGTT * -s1 0 c1 1 0 5M6I5M * 0 0 AACCGGTTAACCGGTT * -s2 0 c1 1 0 5M1P4I1P5M * 0 0 AACCGTTAACGGTT * -s3 0 c1 1 0 5M3I3P5M * 0 0 AACCGGTTCGGTT * -s4 0 c1 1 0 5M3P3I5M * 0 0 AACCGAACCGGTT * -s5 0 c1 1 0 4M1D2P2I2P1D4M * 0 0 AACCTAGGTT * -s6 0 c1 1 0 2M3D6I3D2M * 0 0 AAGTTAACTT * diff --git a/htslib/test/c1#pad2.sam b/htslib/test/c1#pad2.sam deleted file mode 100644 index 66da374..0000000 --- a/htslib/test/c1#pad2.sam +++ /dev/null @@ -1,14 +0,0 @@ -@SQ SN:c1 LN:10 -s0a 0 c1 1 0 10M * 0 0 AACCGCGGTT * -s0b 0 c1 1 0 10M * 0 0 AACCGCGGTT * -s0c 0 c1 1 0 10M * 0 0 AACCGCGGTT * -s0d 0 c1 1 0 10M * 0 0 AACCGCGGTT * -s1 0 c1 1 0 5M6I5M * 0 0 AACCGGTTAACCGGTT * -s2 0 c1 1 0 5M1P4I1P5M * 0 0 AACCGTTAACGGTT * -s3 0 c1 1 0 5M3I3P5M * 0 0 AACCGGTTCGGTT * -s4 0 c1 1 0 5M3P3I5M * 0 0 AACCGAACCGGTT * -s5 0 c1 1 0 4M1D2P2I2P1D4M * 0 0 AACCTAGGTT * -s6 0 c1 1 0 2M3D6I3D2M * 0 0 AAGTTAACTT * -s7 0 c1 1 0 4M2D4M * 0 0 AACCGGTT * -s8 0 c1 1 0 5D2P2I2P5D * 0 0 TA * -s9 0 c1 5 0 1M2P2I2P * 0 0 GTA * diff --git a/htslib/test/c1#pad3.sam b/htslib/test/c1#pad3.sam deleted file mode 100644 index c77da85..0000000 --- a/htslib/test/c1#pad3.sam +++ /dev/null @@ -1,14 +0,0 @@ -@SQ SN:c1 LN:10 -@RG ID:p.sam SM:unknown LB:p.sam -s0a 0 c1 6 0 5I6P5M * 0 0 AACCGCGGTT * RG:Z:p.sam -s0b 0 c1 6 0 5I6P5M * 0 0 AACCGCGGTT * RG:Z:p.sam -s0c 0 c1 6 0 5I6P5M * 0 0 AACCGCGGTT * RG:Z:p.sam -s0d 0 c1 6 0 5I6P5M * 0 0 AACCGCGGTT * RG:Z:p.sam -s1 0 c1 6 0 11I5M * 0 0 AACCGGTTAACCGGTT * RG:Z:p.sam -s2 0 c1 6 0 5I1P4I1P5M * 0 0 AACCGTTAACGGTT * RG:Z:p.sam -s3 0 c1 6 0 8I3P5M * 0 0 AACCGGTTCGGTT * RG:Z:p.sam -s4 0 c1 6 0 5I3P3I5M * 0 0 AACCGAACCGGTT * RG:Z:p.sam -s5 0 c1 6 0 4I3P2I2P1D4M * 0 0 AACCTAGGTT * RG:Z:p.sam -s6 0 c1 6 0 2I3P6I3D2M * 0 0 AAGTTAACTT * RG:Z:p.sam -s7 0 c1 6 0 4I7P1D4M * 0 0 AACCGGTT * RG:Z:p.sam -s8 0 c1 6 0 7P2I2P * 0 0 TA !! RG:Z:p.sam diff --git a/htslib/test/c1#unknown.sam b/htslib/test/c1#unknown.sam deleted file mode 100644 index 1f1616a..0000000 --- a/htslib/test/c1#unknown.sam +++ /dev/null @@ -1,9 +0,0 @@ -@SQ SN:c1 LN:10 -@CO Tests permuations of seq / qual being present or "*" in mapped -@CO and unmapped forms. Also tests MD/NM tag generation. -_sqm 0 c1 1 0 2M1I4M1D3M * 0 0 AACCCTCGTT IIIIIIIIII MD:Z:4G1^G3 NM:i:3 -_sm 0 c1 1 0 2M1I4M1D3M * 0 0 AACCCTCGTT * MD:Z:4G1^G3 NM:i:3 -_m 0 c1 1 0 2M1I4M1D3M * 0 0 * * MD:Z:4G1^G3 NM:i:3 -_squ 4 c1 1 0 * * 0 0 AACCCTCGTT IIIIIIIIII -_su 4 c1 1 0 * * 0 0 AACCCTCGTT * -_u 4 c1 1 0 * * 0 0 * * diff --git a/htslib/test/c1.fa b/htslib/test/c1.fa deleted file mode 100644 index 12c54c9..0000000 --- a/htslib/test/c1.fa +++ /dev/null @@ -1,2 +0,0 @@ ->c1 -AACCGCGGTT diff --git a/htslib/test/c1.fa.fai b/htslib/test/c1.fa.fai deleted file mode 100644 index fc35bec..0000000 --- a/htslib/test/c1.fa.fai +++ /dev/null @@ -1 +0,0 @@ -c1 10 4 10 11 diff --git a/htslib/test/c2#pad.sam b/htslib/test/c2#pad.sam deleted file mode 100644 index 49e991b..0000000 --- a/htslib/test/c2#pad.sam +++ /dev/null @@ -1,26 +0,0 @@ -@SQ SN:c2 LN:9 -@CO -@CO mpileup example from https://github.com/samtools/htslib/issues/59 -@CO with additional Pad cigar operations -@CO -@CO c2 CC***AA**T**AA***CC -@CO -@CO +s1 CT***AA**T**AA***TC -@CO +s1b CT*******T*******TC -@CO +s2 CT*****G***G*****TC -@CO +s2p CT*****G***G*****TC -@CO +s3 CT*****GG*GG*****TC -@CO +s3b CT****CGGCGGC****TC -@CO +s4 CT***AAG***GAA***TC -@CO +s4p CT***AAG***GAA***TC -@CO +s5 CTGGG*********GGGTC -@CO -s1 0 c2 1 0 9M * 0 0 CTAATAATC XXXXXXXXX -s1b 0 c2 1 0 2M2D1M2D2M * 0 0 CTTTC * -s2 0 c2 1 0 2M2D1I1D1I2D2M * 0 0 CTGGTC * -s2p 0 c2 1 0 2M2D1I1P1D1P1I2D2M * 0 0 CTGGTC * -s3 0 c2 1 0 2M2D2I1D2I2D2M * 0 0 CTGGGGTC * -s3b 0 c2 1 0 2M1D1M2I1M2I1M1D2M * 0 0 CTCGGCGGCTC * -s4 0 c2 1 0 4M1I1D1I4M * 0 0 CTAAGGAATC * -s4p 0 c2 1 0 4M1I1P1D1P1I4M * 0 0 CTAAGGAATC * -s5 0 c2 1 0 2M3I5D3I2M * 0 0 CTGGGGGGTC * diff --git a/htslib/test/c2.fa b/htslib/test/c2.fa deleted file mode 100644 index 1e1d309..0000000 --- a/htslib/test/c2.fa +++ /dev/null @@ -1,2 +0,0 @@ ->c2 -CCAATAACC diff --git a/htslib/test/c2.fa.fai b/htslib/test/c2.fa.fai deleted file mode 100644 index f95d35d..0000000 --- a/htslib/test/c2.fa.fai +++ /dev/null @@ -1 +0,0 @@ -c2 9 4 9 10 diff --git a/htslib/test/ce#1.sam b/htslib/test/ce#1.sam deleted file mode 100644 index 4376deb..0000000 --- a/htslib/test/ce#1.sam +++ /dev/null @@ -1,2 +0,0 @@ -@SQ SN:CHROMOSOME_I LN:1009800 -SRR065390.14978392 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 AS:i:-18 XS:i:-18 YT:Z:UU diff --git a/htslib/test/ce#1000.sam b/htslib/test/ce#1000.sam deleted file mode 100644 index 857a9cd..0000000 --- a/htslib/test/ce#1000.sam +++ /dev/null @@ -1,1005 +0,0 @@ -@SQ SN:CHROMOSOME_I LN:1009800 -@SQ SN:CHROMOSOME_II LN:5000 -@SQ SN:CHROMOSOME_III LN:5000 -@SQ SN:CHROMOSOME_IV LN:5000 -@SQ SN:CHROMOSOME_V LN:5000 -SRR065390.14978392 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-18 XS:i:-18 XN:i:0 XM:i:5 XO:i:1 XG:i:1 YT:Z:UU MD:Z:4A0G5G5G5G3^A73 NM:i:6 -SRR065390.921023 16 CHROMOSOME_I 3 12 100M * 0 0 CTAAGCCTAAATCTAAGCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############################################???88:;98768700000<>:BBA?BBAB?BBBBBBBB>B>BB::;?:00000 AS:i:-6 XS:i:-13 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:10G0C10G77 NM:i:3 -SRR065390.1871511 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA 0:BB@>B<=B@???@=8@B>BB@CA@DACDCBBCCCA@CCCCACCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.3743423 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##################?6@:7<=@3=@ABAAB>BDBBABADABDDDBDDBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4251890 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###########@BB=BCBBC?B>B;>B@@ADBBB@DBBBBDCCBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5238868 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA @,=@@D8D;?BBB>;?BBB==BB@D;>D>BBB>BBDDBA@@BCCB@=BACBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.8289592 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############################A?@C9@@BC=AABDD@A@DC@CB=@BA?6@CCAAC@+CCCCCCCCCCCCCCC@CCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14497557 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ######@:@@.>=><;;B>AB>>BB?B=>B=BD>BDADDD>CCDDDBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.15617929 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA D?;;D>?C>CBAAACD@BB?B>BBDB>@BBDDBDC@CBDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16049575 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #######################@??BB8BBB@@:AB@BDBCCDCBDCCCCACCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17838261 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #################@>=?B@DCBDB>@D>DBADCDDD>CC@DCCCCBCCACCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22711273 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################B<@=<:6/0307==72@@=?788==;AAA:@CCAACCC?CCAACCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22922978 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##########################B=B>A@BBBC??=@=A@AC<><<8>C6CCCCC8CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23087186 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ############@:73???@6;D?B>:>BBA?B<>B@B>@B>@>BCDCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23506653 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############A/=A5::87@:=>6@AA>@CDBA@ABCB?BC>CD>DDBDC@CCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23791575 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCCCACCCCAACCCTTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##############################B4;:=B@>A@BCB@@ABCCBB@BCC@CCDCCDCCDCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-12 XS:i:-12 XN:i:0 XM:i:6 XO:i:0 XG:i:0 YT:Z:UU MD:Z:7T0A1G2T2G3A79 NM:i:6 -SRR065390.25911768 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##############@8B@B?9=:A?=@DDB>;B6?DDBCABABB@DDCCBDBDCCDACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.26055380 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #################################DAA><0=>=B;?BACDBDABCBBC@CACACACACCACCCCCCCCCCCCCCCCCCCCCCBCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.26121674 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #################?:AA::@DAAA>B??@A4@=BBBBDDBDBDCCBDDBCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.30352568 16 CHROMOSOME_I 3 7 100M * 0 0 CTAGGGCTAACCCTCAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #################################################################A>>5A?CCC@CCCCCCCCCC?CC:C@A@==@A@A@ AS:i:-10 XS:i:-19 XN:i:0 XM:i:5 XO:i:0 XG:i:0 YT:Z:UU MD:Z:3A1C4G3A37G47 NM:i:5 -SRR065390.31341126 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ########################?AD?D@BCAABBBD@=DBCDBAACCDCAABCDCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.33653624 16 CHROMOSOME_I 3 17 100M * 0 0 CTAATCCTAGGCCTAAGCCCAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ####################################??8?000-+0000,@ABBBB@B:B@B>BB????>>>@@?::?6?>>;>>@ACCCCBCCBACCCC AS:i:-6 XS:i:-19 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:4G4A9T80 NM:i:3 -SRR065390.28043279 16 CHROMOSOME_I 4 0 9M1I90M * 0 0 TCTTCCGATCTCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #####A>=7A6DD=@AA?>AAABC@CAABDBCBBABDADBADCABBBDCDCDCACDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCC AS:i:-26 XS:i:-26 XN:i:0 XM:i:6 XO:i:1 XG:i:1 YT:Z:UU MD:Z:1A0A0G2T1A0G89 NM:i:7 -SRR065390.29270443 16 CHROMOSOME_I 6 1 100M * 0 0 AGCCTAAGCCGAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC ###################################@:88@@>B>C>CCCCA@CCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCCCCCCCC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:10T2G86 NM:i:2 -SRR065390.1364843 16 CHROMOSOME_I 11 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ####################@=A=8@:>@;@@=>>B8?C6CCCCCCCCCCACCCCBBCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10190875 16 CHROMOSOME_I 11 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ##################@@@@@@;>BBB?>A6BAB?BB=BAB@?:A.<===@7:4::>8D@BABBACCCCAB@CCCDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13556211 0 CHROMOSOME_I 11 0 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGATTGGAAGAGCGGCTAAGCAGGAACGCCGGGCTCGATCTCAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCBCDCCB>BBBBB########################################### AS:i:-50 XS:i:-50 XN:i:0 XM:i:25 XO:i:0 XG:i:0 YT:Z:UU MD:Z:57C0C1A0A0G0C0C0T0A0A1C6C0T0A1G1C0T0A0A1C2A0A0G0C2A3 NM:i:25 -SRR065390.20524775 16 CHROMOSOME_I 11 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ############################?9<8B=?@C8A<@?@C8CBDCCC=CCCCC??@CCDCCCCCCCCCCCCCCCCCCCCDCCCCCCCDCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.20580336 16 CHROMOSOME_I 11 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ############################?:>@?@=>@=0<:CB>@B=DCADB@CCCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22573273 16 CHROMOSOME_I 11 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ##################################A9;?@CBBDBA>BB;ABDB>AAA;=>=0943@########### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.20870114 0 CHROMOSOME_I 12 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCABCCCC=BBBCA@B>B?D;B=>9?############################ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.3863623 16 CHROMOSOME_I 12 1 100M * 0 0 CGCCTACGCCTACGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC ##############################?@BB>B@BCABBB?DC@DADC@DCDCACDCBCCCCCCCCCCC@CCCCCCCCCCCCCCC1CCCCCCCCCCC AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0A5A5A87 NM:i:3 -SRR065390.1659845 0 CHROMOSOME_I 13 0 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAACCTAAGCCTAAGCCCAACCCTAAGACCGAGACCGAGACC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCAB@CCC######################################### AS:i:-22 XS:i:-22 XN:i:0 XM:i:11 XO:i:0 XG:i:0 YT:Z:UU MD:Z:60G14T2G6C1T0A2C1T0A2C1T0 NM:i:11 -SRR065390.1567418 16 CHROMOSOME_I 15 1 100M * 0 0 CACAGCCTACGTCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #########################################?:8A@<@>>BBB8>BBB@BBBB>@:??::87688:?:::?@<@@97866@?>@@;;>:< AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1T0A6A1C88 NM:i:4 -SRR065390.4996386 16 CHROMOSOME_I 15 17 100M * 0 0 CCAAGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###################################@@@@A=BB@C>>DCCACCCCCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-4 XS:i:-22 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1T5T92 NM:i:2 -SRR065390.14822977 16 CHROMOSOME_I 15 1 100M * 0 0 CGAAGCCAGAGCCTAGGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ####################################B:B?:==2>6@B@@C>?>A@CB5@??@28C@CCCBC@CC?CC?A@CC:CBCCCCCCCCCCCCCC AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1T5T0A6A84 NM:i:4 -SRR065390.15148736 16 CHROMOSOME_I 15 17 100M * 0 0 CTGAGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###########################CCBC<=C;9??<;==C@BCCCCC=CCCCACACACCBBCCCCCCCCCCCCCCCCCBCCCCCCCCCCCBCA?CCC AS:i:-4 XS:i:-21 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2A4T92 NM:i:2 -SRR065390.18089757 16 CHROMOSOME_I 15 1 100M * 0 0 CTGAGCCTGAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ########################A212.0:?.>8?BB?B<@@C?CCBCB;DCCCACDCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2A5A91 NM:i:2 -SRR065390.25601994 16 CHROMOSOME_I 15 17 100M * 0 0 ATAAGCCTAATCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #####################???DD?BD?BDBB>ACBDBDDBDDDBDBDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-4 XS:i:-21 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0C9G89 NM:i:2 -SRR065390.29400981 16 CHROMOSOME_I 15 17 100M * 0 0 CGAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############################A<:?C>>BCABABC?AD>BDADDDBDBBDBDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-4 XS:i:-18 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1T2G95 NM:i:2 -SRR065390.1056430 0 CHROMOSOME_I 17 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGC CCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCDCCDCCC:@<:<@=:>>DD6?################ AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:96A3 NM:i:1 -SRR065390.32986719 0 CHROMOSOME_I 17 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACCCTAAGC CCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC>C@@C@@A?8?@==0><:??@C?7:@B############################# AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:92G7 NM:i:1 -SRR065390.25620225 16 CHROMOSOME_I 17 1 100M * 0 0 AAGCCGAAGCCGAAGCCTAAGCCGAAGCGTGAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #########################################?1?<8@=CC@>CC?CCCCCACCCCC@@ACCCCCCBCCCCCAACCCCACCCCCCBACACC AS:i:-10 XS:i:-10 XN:i:0 XM:i:5 XO:i:0 XG:i:0 YT:Z:UU MD:Z:5T5T11T4C1A69 NM:i:5 -SRR065390.1843941 0 CHROMOSOME_I 18 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBDCDDBADDDDD@DADDAABABBB>BBA?>>B;>@8=@@:@83@>AAA:A6?<4= AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.1866654 0 CHROMOSOME_I 18 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCDCDDCDCCDDB6:?@B=;@@=@@:A=B@??A=@<41@##### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.2940592 0 CHROMOSOME_I 18 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCBC@@=CB?B=?A@@DD>DB=?>B7@8@@?BABABB@3>D9=?(@==A=A##### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.3916542 0 CHROMOSOME_I 18 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCBDDCDD@DDDDBABDDDAA?BC@<:?@B?A????@?<@@<@;D@?@9 AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9532073 0 CHROMOSOME_I 18 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CACBCCCCCCCCCCCCBCCBCCCCCCCCCCC@C=CCCCCCC@CCCCCCC@C=?CCA=CCBACCAB?@BABCB=@B8BA=A::;8;BB>8>=??####### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22616746 0 CHROMOSOME_I 18 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCAC@CCCCCA@CCAA<::>BB?@88@@########################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.26956496 0 CHROMOSOME_I 18 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CACCCCCCCCCCCCCCCCCACCCCC@CCCCCCACCC@DADBC@BACAAC@B<@@BAA@A>@>?B@################################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10808349 16 CHROMOSOME_I 18 0 18M1I81M * 0 0 TGCGCCAGCCCCAGCCCCGAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCGGCCTAATCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #################################################################?A??ACCCCCCBBACCCCCCCCCCBC@CCCCCCCC AS:i:-33 XS:i:-33 XN:i:0 XM:i:11 XO:i:1 XG:i:1 YT:Z:UU MD:Z:0A2C0T0A4T0A4T0A41A0A6G31 NM:i:12 -SRR065390.10873351 16 CHROMOSOME_I 18 0 100M * 0 0 AGCCTAAGCCCAAGCCTAAGCCTAAGCCTAAGCCCAGTCCCGAGCCTCCTCCTAAACCTCACCCCAAATCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC ######################################################################CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-30 XS:i:-30 XN:i:0 XM:i:15 XO:i:0 XG:i:0 YT:Z:UU MD:Z:10T23T1A0G2T0A5A0A0G5G3A1G2T2G0C31 NM:i:15 -SRR065390.15490530 16 CHROMOSOME_I 18 1 100M * 0 0 CGCCCCTCCCTACGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC ###############A@A5ACAB?<0ACBB??CCBBA@?CCC?C@?CCAACCC@AACCACCCC;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-12 XS:i:-12 XN:i:0 XM:i:6 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0A3T0A0A0G4A87 NM:i:6 -SRR065390.1909715 16 CHROMOSOME_I 19 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ############@B@:;0=:1@B5ACD@DDCC@@@DACCCDDC@CCCCCCCCCCCCBCCCCCCCCC@C@CCCCCCCCCCCBCCCACCCCCDCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.7382123 16 CHROMOSOME_I 19 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ###############??6D?B?D>?B>?B>>?@BB;@BBB@??>AB@B@DCADABBCDBD?CCCACC@CCCCCBACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.20593989 16 CHROMOSOME_I 19 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ####################@=698@?8:4>=BDBDDCCDBAACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.25363430 16 CHROMOSOME_I 19 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ########A663>BB>CBABBAAAA?A??;BCDBAADCDDBCDACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.32419676 16 CHROMOSOME_I 19 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ###############A1=@?A@6A?>BD6?AABBBBB@AD>BBDBD>CDCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22906057 0 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCAAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCA@CCC@ACB@C=CC;=BBBB>;AABA################################ AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:86T13 NM:i:1 -SRR065390.27521332 0 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTACACCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCATAAGCCTCAGCCTA BBBBBBBBBB**9+7BBBBBBBBBBBBBBBBBBBBBBB@BB@>BB;B@BAB;BB@BA>ABA>A4A################################### AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:10A0G73C7A6 NM:i:4 -SRR065390.30947354 0 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGACTC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCDCC@ADABCBBBBBAABB>BA>B?@@B################################### AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:90C5C2A0 NM:i:3 -SRR065390.31587235 0 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTGAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'AAA@CCCAC@DCDC@;BABB@>@B?A@4;;8@??>:DBD?>:A AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:45A54 NM:i:1 -SRR065390.1370038 16 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #####@B>;DAB?B@=@@B=@BBB>B@@BDDB>DDDACBBCDDCCBC?CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4643729 16 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #########################BD6;@BB@BB?BDDBDDDCDBCDCCBBCBCCCCCDCCCCCCCCCCCCCCCCCACCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6133344 16 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ####################@?BB@999.4A;;;:C8C@@@A@>B;=;==CCCCCC@CCCBCCBBC?CCCCBACCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6927609 16 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ###########D?D@6@@@@3:>CCAABA>ABB>ABBB?>BB@@BDDBDCDA;BCCDCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.7858967 0 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGTCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCC>CCCCCCCCCCCCDCCCCBC;CC:AB>A?<@'>ADBABB>CAABBB>>B@B;BBB;BA?7>989?D?@?########## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:48C51 NM:i:1 -SRR065390.8362231 16 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA 3AA3@AA==.>>>>=4@?@?;BBBAAA>@@AAB>DDAB@BDDBDBBBDCC@CCCDCB@CDACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9016128 16 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ################?B@?=<9=:@>=7?AA??=A=??:7B=;=A=C?CB8B>C?ACBCAAAAACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.11434451 16 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ########A9<=?B@B@?:CC=:?DAA>A@BBA>B@B8BD=DBBBC@?DD<ABBBDBBBDDB@B<>DDBBCDCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.20362361 16 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #######A1:6DBB?C;BBD=B@BDBABADDBCB@CBCBBACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.28067938 16 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ###############@6=?@75595=7:=:;:A1@BA@@C@CACC6CAACC9CCCBC?@CCCCCCCCBBCCCCCCCCCCCBCCCCCCCCBCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.28676889 16 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ######################D@D<>BBB86.5/B=7/7B<@@?ABA;BCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.31914072 16 CHROMOSOME_I 20 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #######################BCC>AADDADBABDCDDBCACCDCCCCCCAADBDCCCCACCCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.28534879 0 CHROMOSOME_I 21 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCATAAGCCTAAGTCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBDCCCDDDBB89BAAA@@?DB:@@9>====?########################### AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:81A2C10C4 NM:i:3 -SRR065390.2215027 0 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBDCCCCBC@BB@BCDDBDDBA@DDBBB8@BB>B?=B?>B?>CBAAA?9>>A>:6@= AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.2347049 0 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCBCCCDCCCDBDBADDD@AAD@BBDBBBCAA>@C??################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.3130808 0 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCA@ACCCCC>AC@=CBCC@@BBBB=>BA.A=:?A@@@:>@####### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4139123 0 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCCDDCBCCCCBACBBB;DADBD;?BDB>;BBAB=;DDBBB>??BB>ACACC?>.A@=>,@########## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5087657 0 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCACCCC@CCCDCCCCC>B@CC@CB;@CBAB1B@=BBB@BA;A8??B:==B=@@?>><=6=6D@@>::9>9><=@@,@@@14;<@####### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10185722 0 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCD@BCDBBBDBDB@<@BBBB>DB>B@=BDBC>A;@@DD<4=@=<@6@###################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14268858 0 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCBCADCDBCABDDBB>BBBCBBAD?CA?>>BCBB?AD?BA?=99>8;8@;@ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14318056 0 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC=ADACBBABCBBD>AD=25867BB@BBBBA@;<>A=AAAA?A8?<>B78*=8=<>@###### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16702871 0 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCDACCCCD@BCCCD?DDDCD?ABDDB;BBBB>?@?A@88B:@=2/99>A3.A##### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18871990 0 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBDCBCCBDBDCDDDDBC?;;B@BB>?D:>BBB@94@########################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23185275 0 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCC?DD@A@B@?BB>BB?>BD?########################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.26311247 0 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC8CCDCDADB@;BB?@>:D>BB=>:DD>@=@>@?6?AA?AA############ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.31584477 0 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCDCBCCCDDDCDCDDDDCDDDDCDDB?DABBBCBBABBCCBA?AAA=?D?DAA:AAACA>AAAA?################ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.33157605 0 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBC8?>??DBBBBA@?CBA=?=>BB@?@=<=?B@BAA@@:=>::8AAA>BBBB3:===8D?B<:DD<:?#################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5496550 16 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ##########@727;=>/7=<=B:=@@ACA?A8CB@B;A@CCB?BCCC@CCCCBCCCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17740346 16 CHROMOSOME_I 23 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ###############A;:>A7>=9=:.>==@A=BCCCBACCCCDBBB>B@BBB;A??BB;DAABD@DACCCBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16643153 0 CHROMOSOME_I 24 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCGTAAGCCTAAGCCTAAGGCTAAGGCTAAGGCTAAGCCTATGCTTAAGACTAAGCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC################################################################### AS:i:-14 XS:i:-14 XN:i:0 XM:i:7 XO:i:0 XG:i:0 YT:Z:UU MD:Z:45C16C5C5C9A2C4C7 NM:i:7 -SRR065390.1203526 16 CHROMOSOME_I 24 1 100M * 0 0 ACCCTAAAACAAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC ###############################A==B7277*@A?5AB9A@CCCDCDABA?:?A@ACCCCC?CC?CCCCCDCCCCCCCCCCCCCCCCCCCCA AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1G5G0C1T89 NM:i:4 -SRR065390.1571837 0 CHROMOSOME_I 26 0 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCGGAAGCCTAGGCCAGAGGCAAAGCCGAGGCCTAAGCCGA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCC>40?######################################### AS:i:-20 XS:i:-20 XN:i:0 XM:i:10 XO:i:0 XG:i:0 YT:Z:UU MD:Z:61C0T7A3T0A2C1T5T1A9T1 NM:i:10 -SRR065390.26106665 0 CHROMOSOME_I 26 0 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGCCAAAGCCTAAGCATGAACCTAAGGCTCAACCTAAGCCGCAGCCTAATGCTAGGCATA CCCCCCBCCCCCCCCCCBCCCCCCCCCCCACCCCCA0AA############################################################# AS:i:-29 XS:i:-29 XN:i:0 XM:i:14 XO:i:0 XG:i:0 YT:Z:UU MD:Z:36C7T10C1A1G6C2A1G8T0A7G0C3A2C2 NM:i:14 -SRR065390.28275609 0 CHROMOSOME_I 26 0 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAACCTTCGACTAATCCTACACGCACGCATAAGCCTCCCCATA CCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCDDCDCBBDCBDBABB6@C################################################## AS:i:-30 XS:i:-30 XN:i:0 XM:i:15 XO:i:0 XG:i:0 YT:Z:UU MD:Z:59G3A0A1C4G4A0G1C0T1A2C7A0A0G1C2 NM:i:15 -SRR065390.7812 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##############################@::?>=CB@CACCC???CCCBAB@BB;?B@B==@ACAA@?C?BBCBBCBCCCC@@CCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.2770334 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##################A<8.@@@=A?@?B?@>CBB=B8BAC;@BBCAAADCCCACD@CCC@ACC?CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5038515 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #####################@>BB>B;@@BBBBBDD@D@BCCADA?CCBCCCCCDC@CCCCCCCCCACCCCCCCCCCCCCCCCCCBCCBCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5869665 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ########################@6A@?@A;B=BCC8BC@CC@BB@CC?CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.8368880 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA <:3:B??@4??DB><7;;84A>>DD?BADDD@DABACDBBCACCDDCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.11712874 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA >8=?=:;;1;1??:2279772,5552-278A8?A1@CCB@:ACCC=ACACA9?=BCCCACCCCCCCB@CCCCC@CCCC?CCCCCBCCCC=CBCCBBCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12176045 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #####################B4BB@;B?B@@==0BC5B?ABDB@BBDCBCB=BCDCC=CCCCCCCCCCCCBCCCCCCCBCCBBCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12322670 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ####?@@=6<??:>BBBBAAABBBB=DBB@4ADBBDABCCBB>CCCBC=@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14671547 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############?A@A8@@?@BBD9BB@@?CCCDDDA>CCAD?CCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.15954948 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###A97==00;A????;=BCCBD>DCCCCCCCCCCC@CBCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17314912 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################AA54=?A?<8?@4:8)??:==.A>7;=3CCBCC@CCACC;CCCCC;CCACCCCCCCC@CCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17920847 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ####################@(=@@9632;283*38762-8AAA=8@CCCBACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18484794 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #################@A=B@4BC?AA>CCBC@ACCBCAACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19979752 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ??@?AA>8=<;>=:2>;>BBA6ABB?>BABDB>BBBBB@>BDDBDDAACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.20318652 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ############?A<8BBB8?A=B<8AB=CACCCCC@CC=CCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.20730275 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##############################?4?::BAAAAACCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24048983 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA 98(934>>39/<==9>3>>A.BDB?C;CCBD>BBBBDDABBDBBBBDBCCDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.26914314 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############@;<:AAA?>?>>BBB>:ABBBBDADBBBBDDDD@DDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29129737 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ############A?7;B?B>A6AA?:>:@@B;AABBA?@5DDDBADCDDADCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.30130221 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #########################ABBABA@@;@@@@@BB;B>B@CCC?CCACCCCCCCCCCCCCCCCC@CCCCCCBCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.30619064 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ######################@@?>@3>DA6?>AA@?@>BDDBD@DCCCCACCCCCCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.31338027 16 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###################################@>=>@BBBAABBBDB>BB@B=DBABCCCDCCCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.31592423 0 CHROMOSOME_I 27 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAAGCCTAAGCCTGAGCCTCA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CCCCACCBCAACCDDD@BBCDBD############################### AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:74A17A5A1 NM:i:3 -SRR065390.7084193 0 CHROMOSOME_I 28 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCGAAC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCBCCD@ABDCB@=>BBB>>>BBB############################## AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:96T2G0 NM:i:2 -SRR065390.19170893 0 CHROMOSOME_I 28 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTAAGCCTACGCCTATGCCTCACCCCAAG CCCCCCCCCCCCCCCCCCCCCCCCCBB######################################################################### AS:i:-12 XS:i:-12 XN:i:0 XM:i:6 XO:i:0 XG:i:0 YT:Z:UU MD:Z:68A11A5A4A1G2T3 NM:i:6 -SRR065390.22308979 0 CHROMOSOME_I 28 0 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGCCTAAAGCTACGCTGACGACAACGCCACAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCDDDCCCBACCCA########################################### AS:i:-24 XS:i:-24 XN:i:0 XM:i:12 XO:i:0 XG:i:0 YT:Z:UU MD:Z:64C10G0C3A2C0T1A1C1T1A3T0A2 NM:i:12 -SRR065390.5010743 0 CHROMOSOME_I 29 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGC CCB@@CCCC@CC@CC@CCC?C5CCC<<8:?=@@:;CCC@;=CC8;@CCCC;1?C@:858?5618/?=695;9@@;>?B###################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:97A2 NM:i:1 -SRR065390.5559541 0 CHROMOSOME_I 29 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACACCBBCCCDDBACB@DD@B>@BB=BD?;B@=??85797;@::@########### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:97A2 NM:i:1 -SRR065390.31135792 0 CHROMOSOME_I 29 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCBD@CACDDBDDBBCBBDBC>?BAABAC?BBAAABCAAAAAD:D<=<3<9<@####################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:93C6 NM:i:1 -SRR065390.1936876 16 CHROMOSOME_I 29 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #@>?B5555(=<:=?@@A?@;>>B?D?BDBBDDDDBBBC@BC@CCDCCCCCDCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16850763 16 CHROMOSOME_I 29 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #######@8?73=/=@=:=7@A==A;;@;9C@@@BDA@CCADCCDCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17680911 0 CHROMOSOME_I 29 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACC CCCBCCCCCCCCCCCCCCCCC@CCACCCCCCCCCBBCBCCDCC=?CCABBAAAB@4BC?@:?@@B*B1B>B####################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98G1 NM:i:1 -SRR065390.24171347 16 CHROMOSOME_I 29 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #####################BB@DAD@B?A>BADBBABADABBB;DBBCDBCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24428216 0 CHROMOSOME_I 29 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACC CCCCBCCCCBCCCCCCCCCCCCCCCCCCCCCBCCCCCC@CCACC8??>A@?@@(=8==@=@8A@A>A##################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98G1 NM:i:1 -SRR065390.27070077 16 CHROMOSOME_I 29 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ##########################?A=?@?@6@AAAAA>@CACB;BBABBB@BB>@DDCCDCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.27769553 0 CHROMOSOME_I 29 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDBCCCCBBABDABABDDDD?DBBABACBBBBC>>B;D1?B??D?:B?2@@=:=A?=?A=@######## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:93C6 NM:i:1 -SRR065390.32563299 16 CHROMOSOME_I 29 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ###########@;;@.<@@?A?B@B?AAAABDCBBBDAADABCDDBCDCCDDCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.2792992 0 CHROMOSOME_I 30 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGTC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCBCC@CCBCDBCCBCBBBDD@DBADA@BB>BB=>:AABB>@B@>B?:D?D################# AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:95A2C1 NM:i:2 -SRR065390.639284 0 CHROMOSOME_I 31 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCDCCCAADA>C=@A@@@><@B@B=B4>@############## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.1105550 0 CHROMOSOME_I 31 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCBCC;A?CCACACCDB>? AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.8156389 0 CHROMOSOME_I 31 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCC>CCCCACCCBCC@@CCCC@CCCC@@CCCC=@@ADD?@@BBBACBA=DAA< AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.11912243 0 CHROMOSOME_I 31 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACCCCAAGCCTAAGCCTAAGCCC CCC@BCC@CB>CACCCCC@CC??C@CCCCBCC?BBCBC@+=A5=1==:=76+@#################### AS:i:-7 XS:i:-7 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:78G2T17T0 NM:i:3 -SRR065390.17298969 0 CHROMOSOME_I 31 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCCCAA>BBACA>AA>>C:A?A>?<<< AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.20623938 0 CHROMOSOME_I 31 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAAGCCCAAGCTCAAACGC CCCCCCCBCCCCBCCCCCCBCCCCCCCC?A@CCCCCCACCBC@C:::?:@8?######################################## AS:i:-14 XS:i:-14 XN:i:0 XM:i:7 XO:i:0 XG:i:0 YT:Z:UU MD:Z:76A10T4C0T2G1C0T0 NM:i:7 -SRR065390.21172388 0 CHROMOSOME_I 31 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTACGGCAGAGCGG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCC>>CCCB48@BBAA.=@@@0.=>:=*7??####################### AS:i:-14 XS:i:-14 XN:i:0 XM:i:7 XO:i:0 XG:i:0 YT:Z:UU MD:Z:85C3A1C1T0A3C0T0 NM:i:7 -SRR065390.32636364 0 CHROMOSOME_I 31 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCCCCACCA@?CCC@BACBABA@B@@?B@DB8:=4=9;2B########################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14726933 0 CHROMOSOME_I 33 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CCCCCCADCCAABD@CBBBB=BB8BBBB>;DB;B@@B>B########## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:92A7 NM:i:1 -SRR065390.19804249 0 CHROMOSOME_I 33 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTAAGCCTAA 00.00?????CCCCCCCCCCCCCCCCCCCCCCCCBCCCBCBBBBBBBB@@B>@>@@BBB=<>>>>=>?0?############################## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:87A12 NM:i:1 -SRR065390.641561 0 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCC?BCCCCC@AA=C@C?BBC8@=C@@A@A@;=?@>A95<=>=*=9:<@################ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4398044 0 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCDCACDDB@DB@@BA>B@@A><@@?@)?B72=77B############### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9917822 0 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBBACCDD@BDBDBDBB@B?@@<@@?:D???<@??@==@3@@1<@=<<9< AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13766985 0 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCACCCCCCCCCCC@CBDDCBCDABBB=<@BBABB@BBB=B4BB>BB?4???>B>8DB<.?? AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13985245 0 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCADCDACCBDDA<@BBBBB@BBBC=>B>BCB>AA>AA>D==; AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.15076148 0 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCCCBADDCBCABC=CCB@@;B@@?B8?@@;?8<:A:==?BAD?;@B@=@.@D@??2=? AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16049660 0 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC=CCCCCCCCCBBCCCCBD@ADBB@@?@BB?;?B>20+7/<===@?######### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22701424 0 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCDCCBD?@@@ABBBABA?ABAB=3A;B?;D?DD>B5@69<6:=5=> AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.32125404 0 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACDCB;@@BB<;@@@A@:?A?@?6AAAA############################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.7546701 16 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG #####@?.:@?BAA>DBBD<=BAB>BB>BB>DB>BC@DCDCCBCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10989112 16 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG 5050388648?AA6A===)77;==5:>BBCABBDDCBBADCCC?C=CCC@CCCCCCC@CCC@CCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.11531996 0 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCBCCDCBBCCDABB@@BABBBB?B?ADABDB:@7.?=4A=:9A=???D>=(;4 AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16826146 16 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG 9=59>@??;B==<::1@@@>8BB>BD=@CCCA@ACDCB@CCCAC?ACCCCAACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17948445 16 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG #####@4@4@8A>::<>5>=68AABC>CBABBCBC?===:B?DCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29829737 16 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ############################@B?@>BB@4=AA@@?A@?BC<@DBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29888392 0 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCDCCCCBCCCDCBDDBDCBDABBBADBBABAACA@>?@>?B?>BD=>@==A3<<.773783A################# AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.30225547 0 CHROMOSOME_I 34 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCADBBDAADBABB>ABBABA>BDBB<>>?8<>55>'0626526@88A0;3'5 AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.8226077 0 CHROMOSOME_I 38 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCGAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCC@CBCC@CCCDCCBCCCACBCCDB;@=C?BC########################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:80T19 NM:i:1 -SRR065390.17492028 0 CHROMOSOME_I 38 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACACCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCDCCDCA@@BACB==BBBA;4BBBBB@B??#################################### AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:94A0G4 NM:i:2 -SRR065390.17605413 0 CHROMOSOME_I 38 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCA?CCCCCCDCDACA@<=8@==*51553BB?BB?;@*?##### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:96C3 NM:i:1 -SRR065390.20811266 0 CHROMOSOME_I 38 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCB@BCC@ACC8;;:;CCCCC=A@5CBCB5=?7<<>>A:.@######################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:88A11 NM:i:1 -SRR065390.25876953 0 CHROMOSOME_I 38 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAATCCTA #################################################################################################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:95G4 NM:i:1 -SRR065390.27381447 0 CHROMOSOME_I 38 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGTCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCDDCCCCACDCCC@-A>A>>DAB>@A?AA:A>AACAC6<@@###### AS:i:-3 XS:i:-3 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:54C45 NM:i:1 -SRR065390.32350443 0 CHROMOSOME_I 38 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTACGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCCCCCDCDDCCDBADCDDACBDB@=DBBDAB6C@######################## AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:84C3A11 NM:i:2 -SRR065390.26113957 16 CHROMOSOME_I 38 1 100M * 0 0 CCTCCCCCTAAGCCTGAGCCTAAGCCTAAGCCTAAGCCTGAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #########################################A=B7===;:?@??:B?CC?CAACCCBACCBC?CCCCCCCCCCCCCCDCCCCCCCCCCCC AS:i:-10 XS:i:-10 XN:i:0 XM:i:5 XO:i:0 XG:i:0 YT:Z:UU MD:Z:3A0A0G9A23A60 NM:i:5 -SRR065390.22114448 16 CHROMOSOME_I 39 1 67M1I32M * 0 0 CTAAGCCCAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ############################A:B;@@>?B@?ABBDABB@BC?BAACC>BCCAC>@CCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-10 XS:i:-10 XN:i:0 XM:i:1 XO:i:1 XG:i:1 YT:Z:UU MD:Z:7T91 NM:i:2 -SRR065390.4122396 0 CHROMOSOME_I 40 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACG CCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCCBCCCDCCCCC@DDCCCA>DDDBBBABB<@C>@BB?8@@@;87?9<700727;7/7<@@@###### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98A1 NM:i:1 -SRR065390.12501634 0 CHROMOSOME_I 40 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTAAGCCCAAG CCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCDBCDCCDCB@DB>@BBDDABD@BB><@=@?############################### AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:84T11T3 NM:i:2 -SRR065390.15005277 0 CHROMOSOME_I 40 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDACC?CAACAA@A:ABB=;1@################################## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:86A13 NM:i:1 -SRR065390.22489915 0 CHROMOSOME_I 40 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAG CCCCCCCCCCCCCCCCCCCCC?CCCCCCCCCCCDCCCCCCCBDCD@C@BACB@@B@BBBB@:@==B:B<@BB3>?######################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:94C5 NM:i:1 -SRR065390.25381446 0 CHROMOSOME_I 40 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCDCC@@BBCCADDDB################################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:66T33 NM:i:1 -SRR065390.26177760 0 CHROMOSOME_I 40 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCAAAGCCTAAGCCTAAG CCA@CCCCB@CCCCCC@ACCC?CCA9<:<=9;??6?########################## AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:79A4T15 NM:i:2 -SRR065390.26407476 0 CHROMOSOME_I 40 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGNCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGTCTCAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCC/C00!+03;999CCCCBBCCCBCCBCCB?BBB@BCBBBABBB######################################## AS:i:-5 XS:i:-5 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:22C59C2A14 NM:i:3 -SRR065390.13931899 16 CHROMOSOME_I 40 0 100M * 0 0 TAAGCCTAACCCTATCGGTATCCCTACTCCTGCGCCTCCGCCTTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###################################################CCCCCCCCCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-28 XS:i:-28 XN:i:0 XM:i:14 XO:i:0 XG:i:0 YT:Z:UU MD:Z:9G4A0G0C0C2A0G4A0G3A0A4A0A4A56 NM:i:14 -SRR065390.1371033 0 CHROMOSOME_I 43 0 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTAGGCCAACGCATAAACCCCAAGCA :@@B??4?????3??77938<=<7?>39??B8A?A@@C???A>>BBBACCBCCCCCACBCCBBCCCC@?@??BB>B> AS:i:-10 XS:i:-10 XN:i:0 XM:i:5 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0G5G1C8A5A76 NM:i:5 -SRR065390.3034972 16 CHROMOSOME_I 43 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT >B>B;@B=B?><@B@B>>@>BBDBBADDBBA>CC?@CCCBCACCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5390013 16 CHROMOSOME_I 43 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #####################@88C8:?=AA1:A;8C5=CCAC=@ACAC=ABBDBBB@DDDBB@CD@DD@CCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10370271 16 CHROMOSOME_I 43 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #########################################?>BB37:7/:8:/75;7;77;=?4><;CB@A;@CCCCC@C@CCCCC@CC?CCCCCC@CC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.11422655 16 CHROMOSOME_I 43 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ######ABAC>?DBBBDBBBDADD@>DCBBDBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.15298468 16 CHROMOSOME_I 43 1 100M * 0 0 GCCCACGCCTAATCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #####################################AAACC=ACC1ACCACC2BCC?C@ABCC?AA?A=C>CCACCC@BCCCCCCCCCCCCCCCCBCCC AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:3T1A6G87 NM:i:3 -SRR065390.20235987 16 CHROMOSOME_I 43 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #############@@9:7:8BAA>ABB?@BB:B?@AA=DDA@ABBADDCCCBCCCCCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.21015579 16 CHROMOSOME_I 43 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ##########################A;@=B@;BBA@CA=CAC@CCCCDCCCCCACCCCC@CCCCBCCCCCCCBCCCCCCCCCCCCCCCBCCCCCBCBCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.21101533 16 CHROMOSOME_I 43 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ##########################??A;=ABBAA>BB>ABADDB8DADCBCCCCCCCCDCCCDCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23753867 16 CHROMOSOME_I 43 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ######################??6?B@:DD6D>AA?>C;BBBC>BBDD@BBBBCBDCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.26254463 16 CHROMOSOME_I 43 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ######################@@@>=:>8?BB>B@=@A@=====@B;B@BBA;7B=AA?8BBB##### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:96C3 NM:i:1 -SRR065390.31555089 0 CHROMOSOME_I 44 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCBCCCCCCBCCCCACCCCBBBBB(?A??AA=B=CCCCDC>AC=BB@?B8>==:BB@6?#################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:45A54 NM:i:1 -SRR065390.4469707 16 CHROMOSOME_I 44 1 100M * 0 0 GCGAATCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ###########################@>==@A>=.@@@?CCCCCC@=CCBC@CCCBCC>C@C==?=>?ACC;;>5>@=CA?9A############################################# AS:i:-14 XS:i:-14 XN:i:0 XM:i:7 XO:i:0 XG:i:0 YT:Z:UU MD:Z:68A12A5A6G1C0T0A1 NM:i:7 -SRR065390.28536327 16 CHROMOSOME_I 45 1 100M * 0 0 CGTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTGAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ######################A:A@(6@@>:9:>553+(>@7<>=B:A@5BCDCADCBAC@CCCACCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCC AS:i:-7 XS:i:-7 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1T0A35A61 NM:i:3 -SRR065390.30452237 16 CHROMOSOME_I 45 1 100M * 0 0 CCAAGCCTAAGCCTACGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #########################################B@=@A=@DBCDCDCCCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1T13A84 NM:i:2 -SRR065390.473101 0 CHROMOSOME_I 46 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGCCTAAGCCTAAGCACCAG CCC@@C@CCCCCC@CBC@C@C:?@@==;@=CBABC@CAC9?2?;2A6AA@################################################## AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:76C18C0T0A2 NM:i:4 -SRR065390.2292661 0 CHROMOSOME_I 46 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCDCCCCCACCCBCDCABCB@CCDBABC@######################################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4943586 0 CHROMOSOME_I 46 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCCCABCCCC=BCC@@@BC@B<@BAB?<;5@?877;7;>D>?D:>?=>@@@B=6@@@###### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5569754 0 CHROMOSOME_I 46 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACBCDCCBDCBB@CBBBBBDB;DB>@ABBA?CAAAAAAA@AAAA########## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.8043944 0 CHROMOSOME_I 46 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCB@DCCCBCCBCDDADDDD>DBBD@B@@ADB?>B>B@B@>CBBABAA?BDB4@>??DAAA7A AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12047482 0 CHROMOSOME_I 46 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCA@C@@BAB@DDB>B@;@A:@@>DC=;@@DBBBBBBAC>B?6B;?<8?:? AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16134128 0 CHROMOSOME_I 46 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACGCTAAGCCTAAGCCTAAGCATAAGCGTAAG AAA=ABBABBCCCCC>ACACBCCCCCCCB?CCC@C@BBB>3?8A>>@CC@@D@?###################################### AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:69G0C18C5C4 NM:i:4 -SRR065390.17957775 0 CHROMOSOME_I 46 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCDDCBADBBCADDB<=DBABBBBB?C?DD>B::8AAA@@################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22147900 0 CHROMOSOME_I 46 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACCCCAAGCCGAAGGCTAGG CCCCCCCCCCCCCCC@CCCCCCCCCCCCCCCCCCCCCCCACCCCCCCCCCCCBAD=@=A=@5==:74@################################ AS:i:-10 XS:i:-10 XN:i:0 XM:i:5 XO:i:0 XG:i:0 YT:Z:UU MD:Z:81G2T5T3C3A1 NM:i:5 -SRR065390.22676708 0 CHROMOSOME_I 46 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACCCCGCCCAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCADDBDB@@DABABBDAD@?>6@@@@@################################### AS:i:-10 XS:i:-10 XN:i:0 XM:i:5 XO:i:0 XG:i:0 YT:Z:UU MD:Z:88C1T0A0A3T3 NM:i:5 -SRR065390.22905722 0 CHROMOSOME_I 46 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCDCDC@BBBBDBBBADB@BCBBB>A?>===92>9=985@###################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23066210 0 CHROMOSOME_I 46 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCDC?DCAB?>BCAB@DBDAA>>?BB??>DBB######################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24301313 0 CHROMOSOME_I 46 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCDBDDADBBDDBBBCDBDBBBB>BAC>A>AAA53=@9>999AAA################# AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.25506513 0 CHROMOSOME_I 46 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTCAGACTAAGAAAAAGACTAAG CCCCCCCCCCCCCCCCCCCCCACCCCCDBDCCCDDDDDCBBDBBDAA>BA################################################## AS:i:-14 XS:i:-14 XN:i:0 XM:i:7 XO:i:0 XG:i:0 YT:Z:UU MD:Z:76C2A2C5C0C0T3C5 NM:i:7 -SRR065390.32874751 0 CHROMOSOME_I 46 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCD6CB?>?;>ABAA6A??>(9<9:18868@68@:692:85 AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12211289 16 CHROMOSOME_I 47 1 100M * 0 0 ACGCCTAAGCCTAAGCGTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ###################################@;6;BBB?B>A?DD@:999<<><<;87;89<<>>?<9??;::9;7883800000 AS:i:-44 XS:i:-44 XN:i:0 XM:i:18 XO:i:1 XG:i:1 YT:Z:UU MD:Z:0A2C1T2G3A1G0C4G2T2G2T2G2T0A1G2T2G5G48 NM:i:19 -SRR065390.26846416 16 CHROMOSOME_I 48 1 100M * 0 0 GCCCGACGCCTACGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC ############################################################?BABC@CCB@AACCBCCCCCCCCCCC@CCCCCCCCCCCCC AS:i:-12 XS:i:-12 XN:i:0 XM:i:6 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0A0G2T1A5A3T83 NM:i:6 -SRR065390.4887361 16 CHROMOSOME_I 49 0 100M * 0 0 GCCTTCGCCCTGGCCCCCGCCTCCGCCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ##############################?AB>>BBDBBBBBBB>DBDCCDCBAACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-24 XS:i:-24 XN:i:0 XM:i:12 XO:i:0 XG:i:0 YT:Z:UU MD:Z:4A0A3T0A0A3T0A0A4A0A3T0A71 NM:i:12 -SRR065390.27800038 16 CHROMOSOME_I 49 1 100M * 0 0 GCCTAAGCCTAATGCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ############################################################@A@@@B>>@>>AA6:@A>>CB@BBACBBB4?>??@@BA;B>B0@############### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:93A6 NM:i:1 -SRR065390.4627990 0 CHROMOSOME_I 51 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDC?BDCABB>BA=B?@?B;?=BA@47??:?############### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16715324 0 CHROMOSOME_I 51 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCBAADB=AB;@D0;BACB;BBBA;0>==5=3?@>@7477:@######### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18309630 0 CHROMOSOME_I 51 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCA=CCCBBBCC?BA@B;BAB<:703=:=:::??@@@######################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:93A6 NM:i:1 -SRR065390.19555357 0 CHROMOSOME_I 51 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAC CCCCCCCCCCCCCCCCCCCCCCBCCCCCBCCDCCACC@CC@CCDCA@@BBDDBA@BADC<@DBB;;@@??A>A@C######################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:99A0 NM:i:1 -SRR065390.20581090 0 CHROMOSOME_I 51 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCGAAGCCTAA CCCCCCCCCCCCCCCCCCBCCCCCC=A?:A<;?;;A?;A=9=;9A####################################################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:91T8 NM:i:1 -SRR065390.23080061 0 CHROMOSOME_I 51 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACAAC@CCCDBBDACDDADB@ABDB>ABBABA@CC>:A8B<<:?@>A@AAA???B### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.26337922 0 CHROMOSOME_I 51 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAA CCCCCBCCCCCCBCCCC?BCCCCCCCCCCCCCDCADCCCAA2=:(@############################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:92A7 NM:i:1 -SRR065390.10947804 0 CHROMOSOME_I 52 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGGCTAAGACTAAGGCTAAGGCTCAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CACC@@CBBC>=CB?A?5A######################################## AS:i:-10 XS:i:-10 XN:i:0 XM:i:5 XO:i:0 XG:i:0 YT:Z:UU MD:Z:76C5C5C5C2A2 NM:i:5 -SRR065390.13041859 0 CHROMOSOME_I 52 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTAAGCCTACGCCACACCCCAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCDCCDCCDBAABC@B@?BB?BBDADABAB8B?>>:9A########################## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:90T9 NM:i:1 -SRR065390.20639196 0 CHROMOSOME_I 52 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAGGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@BCA=AA?CDCCCDACDCBBDDBBBBBBBBABB>?;>BBB?AADDB@D@BB@=BBA>=@BAB?5ACDDC5BACCAADCCC@ACCACCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.1360842 16 CHROMOSOME_I 56 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #############AA;9457A5:7@C>B:C@CCB@@CCCC5@=CC=7;===@?==CC0>9A=;;BB;BBB?>AA@9?CAC>@BBCCCCC@CCCCABCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.8944828 16 CHROMOSOME_I 56 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ######D@D>>BDABAA@@ABBBBBDBD@@DDBBDADCDCBBCCDBDACCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9154510 16 CHROMOSOME_I 56 0 100M * 0 0 TTCATATGGGCAGGGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ##############################@B;@?>>B1?BCBBC@>CDB>B@CA@CCAC=AA>>AC;CCACCCCCCC=CCCCCCCCCCCCBCCCCCCCC AS:i:-28 XS:i:-28 XN:i:0 XM:i:14 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0C0C0T1A0G0C0C0T0A0A0G0C0C0T85 NM:i:14 -SRR065390.10327745 16 CHROMOSOME_I 56 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #####?BB?>793=2=@7>75;BBDABDBBCB@CC@CCC89876@CCCC@B8@@ AS:i:-10 XS:i:-10 XN:i:0 XM:i:5 XO:i:0 XG:i:0 YT:Z:UU MD:Z:3A4T2G5G2T79 NM:i:5 -SRR065390.11441245 16 CHROMOSOME_I 56 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #######################?=:>==8;;;231@==;B8BBA;?8AA9B@=CDABCDCD@CCCCCCCCCCCCCCCCCCCCCCCCCCCABCCCCCCBC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12629337 16 CHROMOSOME_I 56 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ;=5?:8A?<:?8A@@A?==@6B=BDBBBA@CABC@DCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13640483 16 CHROMOSOME_I 56 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA =>8=>3A@=6B=B@8B?>BDB@ABDA>BDBCCDDCCACCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18076115 16 CHROMOSOME_I 56 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ###########@<88>>8?<=;8A@>:=;*AAB=@C>@84=>5:535BCBB@DCC?A?DCC?CA9CABC@;CCBAABCCDCCACCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22432674 16 CHROMOSOME_I 56 1 100M * 0 0 CCCACGCCCAACCCCAAGCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #####################################A?5@@AA:9B;BCCCACBCCCCCCCBCBCCCCCCCCCCCCDBCCCCCCCCCCCCCCCCCCCCC AS:i:-12 XS:i:-12 XN:i:0 XM:i:6 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2T1A3T2G2T8G76 NM:i:6 -SRR065390.24633504 16 CHROMOSOME_I 56 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ###############?>B==B:BC4BDAACDC@CCACCCCCACCDCCCCCCCCCCCCCCACCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.30385823 16 CHROMOSOME_I 56 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ########################################?@?@AB@BBCD@B>CCBCD@BCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.159947 16 CHROMOSOME_I 57 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA <>4=96:98:?46?A6?B@BA=?>BBB>>BADBBBDA@BCBCCCCADCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.1796988 16 CHROMOSOME_I 57 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##############################################AAA:00000?=@BCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.2760975 16 CHROMOSOME_I 57 1 100M * 0 0 AGAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############AABB@ABBACBCBC?CDCBCACCCCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCCDCC AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0C0T2G95 NM:i:3 -SRR065390.12418490 16 CHROMOSOME_I 57 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############A8@AACBBB;;B@BBBB@CB@B@DADADA>CCDCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14521060 16 CHROMOSOME_I 57 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##############################B?>BB@A=:<07;;7B@@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14712716 16 CHROMOSOME_I 57 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #########################@@98@B<=@@B=?ABCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17723586 16 CHROMOSOME_I 57 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ####################################@:B><;75<@-==;CC@BCBC?CACBCCCCCCC>>==AA AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17845832 16 CHROMOSOME_I 57 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #################?@9A?88ABB0?@ABBBABA=B*BC=BC?CDCCC=DCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18910535 16 CHROMOSOME_I 57 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #######################BABCAAB>BBBBDB=DBBD@BD@DCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19689790 16 CHROMOSOME_I 57 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ####################@33B@>B>ADA>B@@CADDCACCBACCCCCCCCCCCACCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19927220 16 CHROMOSOME_I 57 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ######################CBBA>BBDDB>DBBD@ABBDCBDBDCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19989398 16 CHROMOSOME_I 57 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA @@6@?@@:<@BBB@D>@D??>A?>CCBCBBBBAB@>BBAADBBBABDDCDDDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.28429399 16 CHROMOSOME_I 57 1 100M * 0 0 CAGAGCCTAAGCCTAAGCCTAATGCTAAGCCAAAGCATAGTCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############################################A:=@@.AC@CBCDCCCCCCCC;CBCCCCCCCCCCCCCCCCCCCCCCCCCC@CC AS:i:-16 XS:i:-16 XN:i:0 XM:i:8 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1T0A19G0C7T4C2A0G59 NM:i:8 -SRR065390.29699086 16 CHROMOSOME_I 57 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ####################################?:@?;:>=4B@BA?AB@BCB:BAACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.30602381 16 CHROMOSOME_I 57 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###########################ABBB@>>B@B?;B?BB?@B;CBBB=BDCBCCCCCCCCDCCCCCCCC?CCCCC@CCCCCCCCCCCCCCCCCBCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.30661211 16 CHROMOSOME_I 57 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ######??8?5<08<::=48?B6@B8;8=?=ABB=B;AABA@>BB;BBABB6BD>BDDDDDDCBACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.1865058 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCDCCCBCCCCCCCBCCCCCCCCCACCCCCCCBCA?BBCCAA########################################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.3486883 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG 000000000,00000AAAAAA>A=ABBA<:;8;592;77230/79111-9?+79?############################################# AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5071220 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCATAAGCCTAAGCCTAAGCATACG BCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCC?6>=>=@9B=?==9==BA;;@######################################## AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:72T4C17C2A1 NM:i:4 -SRR065390.7153981 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCACCCCCCBCCCDCCCCACCCCCCCD@BDDDB:BA8>6>=)=>:==>>>5B?@@@96<:;@>0>> AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9722947 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCDCDDDCA@DBDDAC?BBBBB?ABBB@;A>:=:?9?6A??########## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13953914 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCGTCAG @@A?=CC@CC===A=CC:@@ACCCCCC@C<:8<839>=>?5=@@######################################################## AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:95C1A2 NM:i:2 -SRR065390.15007214 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCB;DDDCDBD@DACB>?=BBBBA=0>>DBBDD=ABDB@B@@@BABABCB>>AB?BBB4?6(? AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16824019 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTCAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@DCCD@@ABBAA>>DADBBBBAB?BAA=A############################### AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:92A4A2 NM:i:2 -SRR065390.16851488 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTAAGCCCAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCC=8=A<=>=8:252;/@@A=?############################## AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:78T11T9 NM:i:2 -SRR065390.17897057 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCAACCCCACDC@@>>BCBB8AAB>@############ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19083188 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCCCCC@CCCCCABADCBAD@ABB0B@B@(@################ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19427372 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCDCDDCABACD>BDDB?>BBBDA;D>A<>>DBB?A>DBBBA>ACB??><@ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19483941 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCCCBCCCCCCCCCCC@CCCC@CC@BC=>4B?CBB AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23214436 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCABCCCC@CCCCCDCBDCAACBBCCB@CB@BBBB?;@@=BA>AABAA>;>AA.A@@?B?############### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24888065 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTACG CCCCCCCCCCCCCCCCCCCCCCCCCCCDCBCDD@DBDAAADBBBBA###################################################### AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:92A5A1 NM:i:2 -SRR065390.29491496 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCDCCBCCCCCCCCCC@ACCCCACCCCCCCCCCCBCCCCCDDABCDDBBBDBAABDB@A>;@B@AAA??0:+=544925??######## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.31477096 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACACCTAAG CCCACCCBCACCBCCCCCCCCAC@@CCCC@@@>?@>B@@;>A>>>*865><9?;;@>=>@BB@B>B;>;;===B=>;AA?*-373BB(?B########## AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:92A0G6 NM:i:2 -SRR065390.23852108 16 CHROMOSOME_I 58 0 15M1I84M * 0 0 TTAGCATAAGAATAAAGTTTAAAATTTAGCTTAAGACAAAGCCTAATCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ########################################################?A@<=CCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-36 XS:i:-36 XN:i:0 XM:i:14 XO:i:1 XG:i:1 YT:Z:UU MD:Z:1A3C4C0C4C0C3G0C0C1A3C4C1T8G53 NM:i:15 -SRR065390.23932205 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCDDCCDCDADDDBDBABABDBBBBAABBAAB?CC=AAACA?8=@@68: AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24149813 0 CHROMOSOME_I 58 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCDCC@DDACA@=D@A=@BABBB6BBAAB=@B@AB71<>9>0:>1@6@## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.1087596 0 CHROMOSOME_I 59 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACCCTAAGC CCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCDCCBBCDCAA@CB@=9:::A################################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:92G7 NM:i:1 -SRR065390.26571979 0 CHROMOSOME_I 59 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGCCTAAGCCTAAGCCTAAGC =???=>AA>ACBCBCCCCCCCC>@@############################################# AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:75C24 NM:i:1 -SRR065390.31153791 0 CHROMOSOME_I 59 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CCCCCCCCBABDADBADDDBBBBBBBB>@B?CA:AA>AC6=<:A:2:@###################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:85A14 NM:i:1 -SRR065390.33128805 0 CHROMOSOME_I 60 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCGTAAGCCTAAGACTAAGCCTAAGCCAAAGCA CABCCCCCCCCCCCCCCCCCCCCCCACCCCCDCDCCABBBAAA@?BA@<=0@@@<>B>BBBA>AB@################################## AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:69C10C13T4C0 NM:i:4 -SRR065390.8926768 0 CHROMOSOME_I 61 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCD@CDA?=>C88A==@.8:@=<4><@@86;@::@# AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9390775 0 CHROMOSOME_I 61 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCB@CD>CBAADCC=AABB@@???@A######################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:81T18 NM:i:1 -SRR065390.12883674 0 CHROMOSOME_I 61 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCACACCCC=ACCCCABD@B@BADABBB:@@=@= AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19474303 0 CHROMOSOME_I 61 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@DCCCC=CDBC=CACDC:>BBDB>?DB###################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.32664926 0 CHROMOSOME_I 61 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCAAACC?BCBC;CCCBB>=@C>4@############################# AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:82A17 NM:i:1 -SRR065390.33180966 0 CHROMOSOME_I 61 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACT CCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCACCCBCBCCACCACCCC@8?>AA############################################# AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:97C2 NM:i:1 -SRR065390.14178092 16 CHROMOSOME_I 62 1 100M * 0 0 CCGAAGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ##############################DBBBD@AC@@A??C@9><;:CABDCCBCCCCCACCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2T5T91 NM:i:2 -SRR065390.33093699 0 CHROMOSOME_I 63 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCGTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCC1'0000>=39A############################## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:72C27 NM:i:1 -SRR065390.3811166 16 CHROMOSOME_I 63 1 100M * 0 0 CGAAGCCTAAGCCTCAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #########################??>AB@?B?>@A==:BB@=??CBB>D@BDABBCDBDCDCDCCCACACCACCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1T12A85 NM:i:2 -SRR065390.9360891 16 CHROMOSOME_I 63 0 100M * 0 0 GTGCGCCTACCGCTACCCGTCACGGCAAGCCTGCGCCTCCGCCTAACCCTACGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #####################################################@C@BBCCCCCCCCC1BCCCCCCCCBCCCBCCCCCCCCCCCCCACCCC AS:i:-40 XS:i:-40 XN:i:0 XM:i:20 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0C1A0A5A0G0C3A0G1C1A1G0C0C0T6A0A4A0A6G4A48 NM:i:20 -SRR065390.11907902 16 CHROMOSOME_I 63 1 100M * 0 0 CTACCCCGACGCCAAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################B==8>7BB>@B?@CDC@@CCBCC?@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-10 XS:i:-10 XN:i:0 XM:i:5 XO:i:0 XG:i:0 YT:Z:UU MD:Z:3A0G2T1A3T86 NM:i:5 -SRR065390.18166736 16 CHROMOSOME_I 63 1 100M * 0 0 CTAATCCGAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ####################@?;AA>BB>B>===3BCBC@@CCDCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:4G2T2G89 NM:i:3 -SRR065390.24035073 16 CHROMOSOME_I 63 1 100M * 0 0 CTAAGCCTAAGCCGCAGCCTAAGCCCACGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##################################################A=CA?BACACBCCABCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCDC AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:13T0A10T1A72 NM:i:4 -SRR065390.29735708 16 CHROMOSOME_I 63 1 100M * 0 0 ACAAGCCTACGCCTAAGCCTGGGCCTCAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ####################################@B4B000+,1.+108;@BBBBBBB<@?B@>AB?BBB>>@?@>BBBB?:;>><:@@@? AS:i:-14 XS:i:-14 XN:i:0 XM:i:7 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1T6A7G2T5T7A12G53 NM:i:7 -SRR065390.1636136 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCC@CCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CACC@CACCAB:B?66@:@@@ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.3392236 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCBCBDCAABBDADDDBBABB@?A>BBADA?ACBBB@;?B;@?@@@<@6@@ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6690334 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCBCBBCCCCCCCCBCCCCCCCBCCCCCC@CCAC>:AAA;9;==?=:/A=AA@?C?@A8757=?######################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13292986 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAGGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCACCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCC@CCCCCB@CD?C>C>@=A@5@A?AA?0=?####################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14309215 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCAACBCA:ACCADBABDDA;@BB<=::A>?B4;D69===D######### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98A1 NM:i:1 -SRR065390.15577802 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBDCCCCDACCCCBADCD@B>BB@BB3?B?BB>>B@AC?BB?>B?>?@@A@?B6AD AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16480523 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGGCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CBCCC??>CCC=ABBBAC;?AA6?@>@########################## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:94C5 NM:i:1 -SRR065390.17141184 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACG @BBBBBBBB=>>>>>:>>>:<>>:>BBBBBBBBBAB:BB>>BB5BB9>>?BBB############################################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98A1 NM:i:1 -SRR065390.17760882 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACG CCCBCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCA@CCCCBA@CACC@CCC@BA>BCC@CBBCA><=CC@B@BB##################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98A1 NM:i:1 -SRR065390.18662066 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCBCCBCCCCCDC@BC@AA=A5A=A@C=@@=?BB8A############### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.21809038 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAACCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCBCCDCCDCCBDCBDC?ABCBB?>B5=AA########################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:93G6 NM:i:1 -SRR065390.22192818 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDCCCCBBCCDDDBBBBBBBBABB>B>BDB?AA>>@>@>9<48*@######### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23362845 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCC?CCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCDDDCBBCBDDB>BBBB?AABBBA6A>BB:>>5,=99?;6>=?####################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.26775560 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCGAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCADCDDCBDCDB@B>BBBBB>>AA=<=@########################## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:96T3 NM:i:1 -SRR065390.28745603 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCDCCDBABBB>BDB6BC>AA@BBDB>BA@B####################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29133277 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAATCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCDCCCDCCDCDBCBBBBCDBBBBCDDCCAABBDBAAA>@A@>D>A############### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:93G6 NM:i:1 -SRR065390.4912040 16 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###@@A5:8A7;84:=>A:>;BB@>;BBBB?=@BDDBBCBCB>DCACCCBCCCBCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9629649 16 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ######################@A=>>;@@B;4BDB?BB5CCBB@>CCBBCCCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.15607771 16 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ######@@=?<==:6<<>AA)B@BBA@BBBB>BA@BBCDDDADABCDDC@CCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16191081 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCBCCCCCCCCCCCCCC@CCCCCCCCCCCCCCCCCCCCCCC@A?CCCCCCCCCCCBC@CCCBB>A=@4=>@CC@@9@AA################# AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16241777 16 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###############DBDD?:@1:@4=0=;>8B>@CC<@=CACCCCCCCCCBCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22359834 16 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG @=)????<6>A>AAADBDD>;>>BBC;@BBAB;ADBBBBADBCB@@CCCD@CCCC;@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.25076320 16 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###################################@:=C>@D=CCDCCCCCCCCCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.26013356 16 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###############?C>CBBA=BBDDBBABDD@DCDACDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29257811 16 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###############@9@@=:@?BB>;B?BB>>BBDBD;CBCDAACCCA>?CACC?CCCCCACCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29430375 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCBCCCCDDCBBCABBBBBBAACCAAAABCBAAB?AAA6A@A@>?AAAA?64?########## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.30148213 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCC=@@B@A<@@;BB=BB;BBB>>?B@?@4;@############################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.30863885 16 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ####################@@@@@>>DBB>6BBBC@BDBBA=BBBBCDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.31415192 0 CHROMOSOME_I 64 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBDDCCBCBCBCDD@C;@@C@BBB@BAB>BB@82>>=AB;B?@B>6>77=7*;,7378/895A?AB< AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6076202 0 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCCCCDCACDC@DCABB>A>?@>??,>?=A########## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6192585 0 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBBBDBCBABBDDB@BDDD@B>BAB?@ABABB?C?:AA@=)?:=@@####### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9007991 0 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCCACCCCCCCCCCCCCCC=CDBC@AB>B5<@==BBB>B>?BBB20879=(5:.=:@94 AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12321086 0 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDCDDBDD@DDDDBDBBBBC=>B>BBBACCBC>CCAC?ACC= AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.20771747 0 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCA@ACC@DCDAC@>@BBBB??B<<7739373:93937;3=@A>?A?A96<*8:5<8@############ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.21858348 0 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCDDDABDBBBBBBADABBBA4>BB???######################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22848365 0 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCBAC@CDADB;DDBB@@@?BBB>BCAACAADD??A>A>>40771 AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.25705771 0 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCDDDBBCDAD>DABB>BCA=@:@?@A?*=70;70=@@A@######################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12439940 16 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ##DDB6@<<=D6B>@BB@@ABDB@@B@BB=D@DBDCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14000986 0 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCBACCCDD@CBDDA@DDABBADBDDDDABBBB;DBBBBB>CABAABAACA:BA:?B?6?ADD? AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16839733 16 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #############################################AA@CC;CCCCCCCAABA@CCCCA@C@CC@BCCCCCCAABAA@AACCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17727634 0 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCAACCBCBDCDDACBCBBBBAB@>BBB@BA@B?;BB@A6?A8?################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19208569 16 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #########?979-5A:.6@B?>6BABCA;=DDDB=ACCBDCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22372328 16 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ####A5*904@6=@>1BBBBBBCBBBABCDCCDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23208723 16 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ######@==B:77.<<@=<::>=:7;6BBBDB4BBBB9=BCA@B;CCBCAABCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24356433 0 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCDCBDDBADDBB;BBAABBABB>C6AB??>*AA@:A8@@@###### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.33542765 16 CHROMOSOME_I 65 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #######A6@>:AAC=AA4A>;@DB>=@8<@BBBDABBDDA@B:?0?############################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12905806 0 CHROMOSOME_I 67 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCC@CCCCC?ACCC<@CBBBA5CBDA@=A@=@A><@>BB8BB>BBD3D###### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17964782 0 CHROMOSOME_I 67 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCAABCB=8BB?BBB>AB8<=???0;7?######################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24880161 0 CHROMOSOME_I 67 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCADCCCDDDDDCBAABDBB>D>B@BD?D8@==A==@@>;;: AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29470600 0 CHROMOSOME_I 67 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCADCA@ABBBAB=BB<=A=BDD:@BCACAC@@############# AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:95A4 NM:i:1 -SRR065390.9712286 16 CHROMOSOME_I 67 1 100M * 0 0 CCCTAAGCCTAAGCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ##############################@AA@A::=>/==:A>B@DCCBBBBCCC>CDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0G17G81 NM:i:2 -SRR065390.9802725 0 CHROMOSOME_I 67 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCDCCCCCCCCCCCBCCCCBCCCCCCAA@CCCCCCCCCCCCBCCC?>AAA=>AA3>AA8=AC>A=CAC?>?B?B@B#################### AS:i:-3 XS:i:-3 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:58A41 NM:i:1 -SRR065390.4151860 0 CHROMOSOME_I 68 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTA CCCCCCCCCCCCDCCCCCCCCCCCCCCCC@7?<A:=;A27>22@37???A6@A:9;-390=754:=@##################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:93A6 NM:i:1 -SRR065390.6451314 0 CHROMOSOME_I 68 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCCCCCBCDAACDABBBDD@B=BDBB;A7A???#################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:93A6 NM:i:1 -SRR065390.7753919 0 CHROMOSOME_I 68 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGTCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCBCCBCCBCA?>*>??@?:B>CCC>CCCDBB>DB@B=6BBBB=1=A?9:D8D@@?@8 AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:48C51 NM:i:1 -SRR065390.12766808 0 CHROMOSOME_I 68 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCCCC@CCCCBBCB5>@?@B@B@97;;9@################################## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98T1 NM:i:1 -SRR065390.27353147 16 CHROMOSOME_I 68 1 100M * 0 0 CCGCAGCCTAAGTCTGAGCCTAAGCCTAAGCCTAATCCTAAGCCTGAGCCTACGCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #############################################################################################B>==@A? AS:i:-16 XS:i:-16 XN:i:0 XM:i:8 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2T0A8C2A19G9A6A6G40 NM:i:8 -SRR065390.2141529 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CCCCCADAD@B>B>@@@D?BABB>?BA?########### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.2320480 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC<>CCCC8@CCCC=ABCCBACBC9=CB@:C56@8A.:5?=3A?B@B@?>?B?;;434=>90>: AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4714421 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCBADBCDDCDBDCBBABDAC@BCBAAABBB?AB>=BDAAA?BD;?B?@#### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6640654 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCC@CCCCC@CCCCCCACCCCCCCCDC>CCCC>CCDCCABADCBD;B@BB=B?=B>19>==@>4BB8:=74B;?8D??8@########### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.7630109 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCBACCBDAB@DAABBB@B?@########################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9514930 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCB@CCDB@BAB@A@>@B=>>4A???8BBD??9D@>?;?85@####### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10004235 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCACACCDCC@CD@AB@@C>BC;:@?:@=??########################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10865454 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDC@CD@BB?CB@BDDD@BAA@AB3>?>>==(9:;=4>@:@;:27.@ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12673297 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCDCCACCCC=CACBA>DCDDCABBDB@>>B>B@>B@AAA>C>3@=:@@A>?########## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12772245 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CACBBC@CCABC;CACBCCBA==B>?=A#################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13667706 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCBCCCCCCCCCCCC@CCCCCACCC?CCCCC@8AAA:@:>:BBB;B@=?B?BDB0BBD@B>B>=BD,//85A4AA@CAAAAAAAA??8?@@@@?########### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17659493 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCCA@CCCDBCCACB@BBDBDA=BBABB=AACA=@?B####### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18370296 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDC>CCBA>BC>BBDBB>B=8BBDCAAAA>8?:?A?:?DAA>A###### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18372281 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCDBDDDBBDBDBBBB=BB;BB@BABBB>?BA?A>CAA@CCCACC>CBA>DCDB@A@BB@C@BBCA=>=:@##################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.31254323 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCDBCCACCCCBABDBDBBAAB>BBBBBA?BBB>AABAAA??BB@9(AABDA>B@BB>BA8BB>:>8@=>6@3:<@=@:@ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.11515609 16 CHROMOSOME_I 69 1 100M * 0 0 CCAAGCCAAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############################?>55;C<CCCC@@82@A=A;=@8?C@C@@CCCB@CCCCBCCCBCCCCCCCCCACCCACCAC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1T5T92 NM:i:2 -SRR065390.11752838 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDBBCCBABBBD@BAB=BB?B=3?@@=?@:B>:A########### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.11823969 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCBCCCCCCCC?CCACC>@C@CA?BC?AB;@@@@DB=ABBBBAD@BBB;AABBCAAABAA=A>A AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12248467 0 CHROMOSOME_I 69 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCCCCCCBCCCCCCCCCCCBDD@A=A>BDD>>>BBB@BB>B3BB?@;:>=+<55,75=::AA@6@## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.7434339 0 CHROMOSOME_I 70 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCAAAGCCTAAG DBCCCCCCCCCCCCCCCCCCCCBC@CCACCAAB?ACCCCBA>BBBBA>>AD@B@?>@@A########################## AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:84A8C6 NM:i:2 -SRR065390.23718480 16 CHROMOSOME_I 71 0 100M * 0 0 ACGCAGACGCCATAGCAGAGGGGTACGCCTCAGCCTGAGCCTACGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ############################################################################A>4@AA:?A@;A6>00000763:6 AS:i:-30 XS:i:-30 XN:i:0 XM:i:15 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1A2C0T1A3T0A3C0T1A1C0C2A4A5A6A56 NM:i:15 -SRR065390.21251465 0 CHROMOSOME_I 73 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCACCC@CCCCB>CBCDB=@7?5@@>:>@=??/=?############################ AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:94A5 NM:i:1 -SRR065390.21597469 16 CHROMOSOME_I 73 1 100M * 0 0 GCCTAAGCCTCAGCCTAAGCCTAAGGCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ####################################BBABC?CDCCC@CCCCACBCCCCCCCCCCCACCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:10A14C74 NM:i:2 -SRR065390.29344619 16 CHROMOSOME_I 73 1 100M * 0 0 TGATAGGCCAAAGCCTAAGCCTAGGCCAACACCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #########################################AA?A897+99>;7:0A>>8BABABB?ABBAABA8><>9>808<8 AS:i:-18 XS:i:-18 XN:i:0 XM:i:9 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0G0C0C2A3T13A3T1A0G69 NM:i:9 -SRR065390.32874267 0 CHROMOSOME_I 75 1 13M1D87M * 0 0 CTAAGCCTAAGCCAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG DCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCC@CCCCCCCCCCCCCCA>/=;=9>:/5AA############# AS:i:-8 XS:i:-8 XN:i:0 XM:i:0 XO:i:1 XG:i:1 YT:Z:UU MD:Z:13^T87 NM:i:1 -SRR065390.13205982 16 CHROMOSOME_I 75 1 100M * 0 0 CTAAGCCTAGGCCCAAGCCCAAGCCTAAGCCTAATCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #################################################################################################### AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:9A3T5T14G65 NM:i:4 -SRR065390.1968887 0 CHROMOSOME_I 76 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAAGCTAAGCCCAAACCTAAAGCTAAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCC@C==@=:A####################################################### AS:i:-16 XS:i:-16 XN:i:0 XM:i:8 XO:i:0 XG:i:0 YT:Z:UU MD:Z:72T2G0C7T2G5G0C4G0 NM:i:8 -SRR065390.3020042 0 CHROMOSOME_I 76 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGCCTACGACTAAG CCCCCCCCCCCCCCCCCCCCCC@CCCCACCCCCCCCCC@CCBCCCCC=CCCCD8CCA########################################### AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:82C9A1C5 NM:i:3 -SRR065390.5329842 0 CHROMOSOME_I 76 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAGGCCTAAG CCCCC@CCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCCC@CCCCCCCACDCCCCABCCB0@>A@?BBD@B>BA>B>B??BBAAC>?=:?A########## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:92A7 NM:i:1 -SRR065390.7718336 0 CHROMOSOME_I 76 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCAAAA+AAAAAACCCCCACDDCCDCCBD@B@BBBD<;@BBB?BACBBB8D>B>B)>? AS:i:-3 XS:i:-3 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:48T51 NM:i:1 -SRR065390.9099421 0 CHROMOSOME_I 76 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCAAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCB@C<@@BDCA@D@;B@A?=@B########################## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:84T15 NM:i:1 -SRR065390.13504888 0 CHROMOSOME_I 76 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACCCTAAGCCTAAG CCCCCCCCCCCCCCCBCCCCCCCCCCCACCCCCCCCCCCCC@CCC=;3=ABB=@B@?@B<@################################ AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:87G12 NM:i:1 -SRR065390.26299881 0 CHROMOSOME_I 76 0 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCACAAAGCTAAACGCATC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCBDBBDDDABBDD?###################################################### AS:i:-20 XS:i:-20 XN:i:0 XM:i:10 XO:i:0 XG:i:0 YT:Z:UU MD:Z:80A2C0T2G0C4G1C0T1A0G0 NM:i:10 -SRR065390.26546478 0 CHROMOSOME_I 76 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAACCTAAGCCTCAGCCTAAC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@DCAACBBC@CC@BCBDD=BB>;BDDB>?################################### AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:78T2G9A7G0 NM:i:4 -SRR065390.27871278 0 CHROMOSOME_I 76 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCDDDBCC@@B@AD@BDDC=BBBB@>;@BAA################################ AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:90T9 NM:i:1 -SRR065390.28581901 0 CHROMOSOME_I 76 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCATAAGCAAAAG CCCCCCCCC@CCCCCCCC@C>>B>>C@8CC@CC@@@?A######################################### AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:89C5C0T3 NM:i:3 -SRR065390.30916163 0 CHROMOSOME_I 76 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACG CCCCCCCCC9CCCCCCCCCCCCCCCCC@AC>?<;CCACCCCCB;C@@===;=BBB0A=A################################# AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98A1 NM:i:1 -SRR065390.32781383 0 CHROMOSOME_I 76 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCAAAG DCCCDCCCCCCCCCCACCCCCCCCCCCCCCCCCCCCCCCCCC?CCCCC@CCC?CC?CCCBCCDA@BB?BB3B>BBDADBDCACCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0T2G0C95 NM:i:3 -SRR065390.7469639 0 CHROMOSOME_I 77 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGC CCBC?CABC>CCBCCACACCCB?CCC@ABCCCBDCA@C@BCB=@<@@##################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:85A14 NM:i:1 -SRR065390.13605737 0 CHROMOSOME_I 77 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGC CCCCCCCCCCCCCCCCCCCBCCCCCCACCCCCACCCDCACCACBABB@B<>BB>B:7;=7=><<<<>A=:?A.@@######################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:95T4 NM:i:1 -SRR065390.14866698 16 CHROMOSOME_I 77 1 100M * 0 0 AAGCGTAAGCCTAAGCCTAAGCGTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ########################################C>3CCAABAA3AA?ACCCCBCCBCCCCCCCCCCACCCCCCCCACCCCCCCCCCCDCCCCC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:4C17C77 NM:i:2 -SRR065390.19434606 16 CHROMOSOME_I 77 1 100M * 0 0 AATGCTATGACTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ##############################################@:A80000/=09;?5>>>;AA5A>?CCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2G0C3A1C90 NM:i:4 -SRR065390.30084692 16 CHROMOSOME_I 77 0 56M3I41M * 0 0 GCGCGTAGTCCTCATCCTCAGCCTCAGCCTAAGCCTAAGCCGAAGCCTAAGCCTAATAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ########################################################BA76CCB>B@ACBCA.>?ACC5CCCCCA;CC@CCCCCCC>==?=?@BC@@BCCCCACBACCACCBB@>BA=5BB############################################## AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:79C13T3C2 NM:i:3 -SRR065390.29958565 0 CHROMOSOME_I 79 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAACCTAAGCCTAGGCAGAAGGGCAAGCTC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDBCCACCC=BDDBA>@@@>B################################ AS:i:-18 XS:i:-18 XN:i:0 XM:i:9 XO:i:0 XG:i:0 YT:Z:UU MD:Z:72G10A2C0T3C0C0T4C0T0 NM:i:9 -SRR065390.26894079 0 CHROMOSOME_I 80 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCGCA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCDCC=CCACB;BBBB>8A8AA?=<>:?=8=A?@=D?D=B@B########################## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:91A8 NM:i:1 -SRR065390.15628724 0 CHROMOSOME_I 83 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCC00000+0//000000CCCCCCCCCDCCCCA@@BCCCADCCCB;8@BBB>;BBBB@;AA?A749=>:=*9=>@::A?8=3@##### AS:i:-3 XS:i:-3 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:20G79 NM:i:1 -SRR065390.4058482 16 CHROMOSOME_I 83 1 100M * 0 0 AAGCCTATGCCCAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ############################BD:?2;@?24?6?3??86?3?:B>@BB87787>BBBBBBBBBBBBBBA????>:BBB?CACC?C@C@CCC@@ AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:7A3T88 NM:i:2 -SRR065390.31993990 16 CHROMOSOME_I 83 1 100M * 0 0 AAGCCTACGCCTAAGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ###########################B9;13>54888@@<@9>>7>7:@A@><8<68@@##################################################### AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:80T15C3 NM:i:2 -SRR065390.268023 16 CHROMOSOME_I 86 1 100M * 0 0 CCCAAGCCTAAGCCCAAGCCTACGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #########################################@@B?>?;BBB>>CCC8CCDCCC?CCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCC AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2T11T7A77 NM:i:3 -SRR065390.6919046 16 CHROMOSOME_I 86 1 100M * 0 0 CCCAAGCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ##########################################BCBAB=BCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2T8G88 NM:i:2 -SRR065390.2121410 16 CHROMOSOME_I 87 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ######################?BA;;=:8CDBABDCDA@ADCABDACCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6166783 16 CHROMOSOME_I 87 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##########BB?A?B>BB@>@CABABBA@@@BBDADB@BBCBBADCCBDCCCCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.7495357 16 CHROMOSOME_I 87 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA B3>6BB=?>BBB4?@>@BBBB;@BBBAB=BBA@=AADDCCCCCCC@@CCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.11353312 16 CHROMOSOME_I 87 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##################@7?;<@BB=6>BB?@A@@B;B@BACBDD@CCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.15848524 16 CHROMOSOME_I 87 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA 77471AAAAAAACCBAABB>BBDBBDBDDDADDCC@>?@6CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.15965869 16 CHROMOSOME_I 87 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #######@7.@B>>?@??@@:,9;3=<:8@>ABB=BBB@>ABBAC:CCCCD@ACCCAACCCCCC8CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17210890 16 CHROMOSOME_I 87 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA D>:>DDD*>?BDB?;BDBB@>BBBB@>DC@CCBAB?CAB@DCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17578845 16 CHROMOSOME_I 87 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA B:=@@1BAAAD>B???@???==;@A=@AADC@ACCCCB=CBCCC@?DCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.21562505 16 CHROMOSOME_I 87 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #################DBBBBB@>BCB=D@ADCBABCCCBDCDCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.30807379 16 CHROMOSOME_I 87 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #################@@;852A>:?A;AB>C;ABBAB>CBBBA@BBDBBACDDDDB>CCDCCDCCBCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.32276242 16 CHROMOSOME_I 87 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #########################?9>=AB@?@BBDA6DDBCDDBCDCCDCCCCCACCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.33628207 16 CHROMOSOME_I 87 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #####@B@9@77=74>6BBD;?B?B<@>DCBDABBAB?B@ACC=CCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.25375430 0 CHROMOSOME_I 88 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCGAAGCCTAAGCCTAAGCATAAGCCTAAGCGTAAG CCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCBCACCDBDBBDA@@BC>B@>.?A??<1@########################## AS:i:-7 XS:i:-7 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:66T16C11C4 NM:i:3 -SRR065390.7789978 16 CHROMOSOME_I 88 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCGGAGCCTCAGCCTGAGCCTAGTCTTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###########################################################@C?A@C<;;;5;;;65AACCCCC@CCCCCCCCCCCCCCCCC AS:i:-14 XS:i:-14 XN:i:0 XM:i:7 XO:i:0 XG:i:0 YT:Z:UU MD:Z:30T0A5A5A6A0G1C46 NM:i:7 -SRR065390.22922524 16 CHROMOSOME_I 88 1 100M * 0 0 TAAGCCTAAGCCTAGCCCTAGGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ##########################AA?:CBABABBDBB<;ABBA@@>8BC=>BCBCBACCACCCCADCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:14A0G4A79 NM:i:3 -SRR065390.30422609 16 CHROMOSOME_I 88 1 100M * 0 0 TAACCCTAAGCCCAAGCCTAAGCCTAAGCCTAAGCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###################################################?CCCCCC?CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:3G8T26G60 NM:i:3 -SRR065390.3148788 0 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCC796B@5B=5=@=:*=>><<8@############################# AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.3974764 0 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCCBCCA@CAC@A@DDADBCBAA@BCCBBBC=BCBB>?==>>=??@A@@?@########################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.8437156 0 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCACCCCADCCCCCCCCCDDDCCCCA@B@B@BACAB?@BB>BBA>B=>?::D>??B8@?:@######################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12974063 0 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCDDACBCB@;@BD@?@@@>@@@@??(@######################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17247283 0 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCCCCABBCBC8?AAAAA>B@BCABB>BB@.=@BA=>==BB@B@########## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17845387 0 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCACCCCC8CCCBC;BBBBAAADDDC>BDD>AA@BC?CA>CA>A;0500=A:?AB AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19019558 0 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCBDCCCDADC=B>BBBB;?BB>B>BB8A=A<=@############# AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.20644304 0 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CCCC;ACCCA8ACCC<8@4@@@5?>@@3?###### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29723571 0 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCDADDBDA@BDBDBBCB>BB>BC>>A;@@3D>??D;?#################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.30710022 0 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCDCACCCDDACDDBDBDDDBBABBBCB6BBBAC;>AAAAA?AAAA>??@?########### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.33685608 0 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBDCDBBBBCBABBBDBA:;=:<;=AAAB?@=CBB@=C<@>B;@B:A>;BD>AB=@BBD@DAABABCCDDCCACCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.15212051 0 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCDCCCCCDD@CDC@DDBB@BDACB?BB=@B=B?D?B5=::A#################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18095819 16 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ################@B;DDBBB;BBDDB>BBDCB=DBBCBCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.20762057 16 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ####?7:88;:7@.=>>>BBCB>@D>DB=BDBDDDBCDBBBDCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.21120770 16 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ###########################@@?A?A@C@B@BAC@@?@CCACBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23419512 16 CHROMOSOME_I 89 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ###############?=;9:5A?@@2==9=270;7AB;:BDDCBDDDCBCCCCCCACCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.25957119 0 CHROMOSOME_I 91 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCGAAGCGTCAGCCTAGGCCT =BB?CA@@@C7?;<<;>CBCCCCCCCCC8?C@CC?@@B>>2B7888*.0000@====;80==.;?;2?######################## AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:81T4C1A6A4 NM:i:4 -SRR065390.256433 16 CHROMOSOME_I 91 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ##########################A>9=;BCA?BBBC@0?@>DB?=B@BBCCC>@ACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6797268 0 CHROMOSOME_I 91 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCATAAGACTAAGCCTAAGACT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCC@AAAAC@CB?@@?@C;15<@9=7/7=<<>@B@B@##################### AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:80C4C11C2 NM:i:3 -SRR065390.7161425 16 CHROMOSOME_I 91 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ####################?8:@2@B;?@B@B>@DBBCB@DABCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10403193 16 CHROMOSOME_I 91 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT 7:;72=9<=:4@@?A?5?>BDC>BB?@>8:??@B9BBDCD>@BBCCCC@ACCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14326039 16 CHROMOSOME_I 91 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ##########?<@??>B1ABABB>BDABBB=ADBC@ACCCBC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16063981 16 CHROMOSOME_I 91 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT 7@7:7+>:=9@@B@=D>4B>@B6@B>B=<>DA@DABC=AC@BC=CCBCCCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.20404151 16 CHROMOSOME_I 91 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ############?<>A?<<=73:55235124813808A?>8237:=;9?A000/000000?CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24289923 16 CHROMOSOME_I 91 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ###############################AA>A=@A@@@B;CCB@D>CCBCC@DCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.28545477 0 CHROMOSOME_I 93 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCGTAA CCCCCCCCCCCCCCCCCCCC@@B@ACCBCCCCCCCCCCCCCCCBCBCC@C;?:7:::@>A>@>B>;@=A: AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.3687468 0 CHROMOSOME_I 94 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG BCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCBCCCCCCCCACCCACCCCCCCCCABACCCDACA>@@:@############################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6194634 0 CHROMOSOME_I 94 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCC@CCAACCCC@CACCC?>ABBC=@@1@CB=CB6><@88:377;ABBBB##### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6316515 0 CHROMOSOME_I 94 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCDDCDACBDDBDDBBDB>A>?B@?@5@???##### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.7638809 0 CHROMOSOME_I 94 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CACCDCADACBACB@CDABB@DBB@@>B>B>B=BAAC>>@:@@@5;79@########## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12817194 0 CHROMOSOME_I 94 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCBCBDCCDCCBCCDDAABBB@DBCBDDD@DBB@CB>C= AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16588016 0 CHROMOSOME_I 94 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCCCCD@C=CCCBCDC@BBCB@?A@A?@>BDBBB>BAA):=:7D@@D? AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.21115573 0 CHROMOSOME_I 94 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCDCABDCDD@ABBBB@=BBBA=DBBBB;>B?D?6>B?D?############ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22487510 0 CHROMOSOME_I 94 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCBCCADBBDDABACBB=AA?@DDBA:BD?A??B::==::9:*>@############### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9644932 16 CHROMOSOME_I 94 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG 77=9==5845?A=??AB@@3BB@CAB;CCCAC>CBCDB@CCCCB?CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12890063 16 CHROMOSOME_I 94 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ######@(<9?B4;B:A@;8?BBB9B@>BDB;DBDCCADBCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16020961 16 CHROMOSOME_I 94 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ##################?:B*B@@?>?:?57=36C>@@AA=63ACC@CCCCCCCC@@CCBBCACCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.28179307 16 CHROMOSOME_I 94 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###############?.?=@:B@??@@@@6?B>B?CBA;DBBBB;BBBBBADDBDDBCDDDDDCCACDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.28514209 0 CHROMOSOME_I 94 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCDCCACCCCCACCCCCCCCCACDCCB@>AABB>=B?A??=BBB>B8=>>8><@?62;B=@############### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29025503 16 CHROMOSOME_I 94 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ##########A@63@;CCAC===@=>B?BBBB?BBBABBDBCDDDCDBDBCBCCCBCBCACCCBCCCCCCACCCCCCCCCCCCCDCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.25192538 0 CHROMOSOME_I 95 0 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGGCGAGGTTTAGCAGGAATGCCGAGACTGATACGACAACCCAGCCTCTGCCTCAGC AAAA>?A>A?@@B@>>?=>?58:>:AB<>B>>:B################################################################## AS:i:-56 XS:i:-56 XN:i:0 XM:i:28 XO:i:0 XG:i:0 YT:Z:UU MD:Z:42A2C1T1A1C0C2A0G0C0C0T2G0C1T0A2C2A1G0C1T1A0G0C1T0A5A0A4A3 NM:i:28 -SRR065390.28309751 0 CHROMOSOME_I 95 0 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAATCCTACGCCTAAACCTACACAAAAGCCTAAGCCTAACCCTAAAG AA>AACCCCCCCCCCCCCCCACCCCCACCCC5BBCCCCABDDDDBDC>@B################################################## AS:i:-20 XS:i:-20 XN:i:0 XM:i:10 XO:i:0 XG:i:0 YT:Z:UU MD:Z:56G4A6G4A0G1C0T14G5G0C0 NM:i:10 -SRR065390.28547696 0 CHROMOSOME_I 95 0 77M1I22M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCGTAAGCCTAAGCCTAACCCTAAACCATAGGACAACGCTAAAGCCTAAC B?CCCCCBCCBBBB=@BB:>:>B>@B>BBB@B<@@B@=ABAA;>>B?D>DAD################ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10373067 0 CHROMOSOME_I 96 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CCDCCCCCCCCCCCCCCCCCCACCCCCCCCCBD=CCCCCC?CA??<=AB<=A@A@@6A?AAB>@?B@B;B>?8DD>AAA>?>????3>8989A=;4A?;8;17888@############################################# AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:86C5C3A3 NM:i:3 -SRR065390.14825713 0 CHROMOSOME_I 96 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCBBAAB@AD@BA=BBB=ABABBC@4>B=5=>AB>DA5<@@@86@=@< AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.15608785 0 CHROMOSOME_I 96 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCBCCCCCCCCCBCDDBDABBB>BBA@B>ABBABABBB>A4B=;9>5AA######## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29977405 0 CHROMOSOME_I 96 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCDDCBBBDDDDBDDDDDAADBBDABAABB>ACCBC>:<@@@##################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.7301839 0 CHROMOSOME_I 98 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTACGAGTAAGCCAAAGACTAAGACTA CCCCCCCCCCCCCCCCC4>@################################################################################ AS:i:-14 XS:i:-14 XN:i:0 XM:i:7 XO:i:0 XG:i:0 YT:Z:UU MD:Z:69A6A1C0C6T3C5C3 NM:i:7 -SRR065390.253303 0 CHROMOSOME_I 99 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGCCTAC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCB?BC@=CCBC@BBC?;@############################## AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:89C9A0 NM:i:2 -SRR065390.1116804 0 CHROMOSOME_I 101 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAAGCCTATGACTAAAC 0000089938?:?>8:8:<>785;;@3@@@######################################## AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:93C2A3 NM:i:2 -SRR065390.15284472 16 CHROMOSOME_I 102 0 79M3I18M * 0 0 AGCCTAAGCGTATCCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAATAAGCCTAAGCCGAAGCCTAA ###################################################A9<>>>BBBB>BBB>>88>/???89B>BBCC?CC00000:9:<;@B?CC AS:i:-24 XS:i:-24 XN:i:0 XM:i:4 XO:i:1 XG:i:3 YT:Z:UU MD:Z:9C2A0G74T8 NM:i:7 -SRR065390.32407240 16 CHROMOSOME_I 102 1 100M * 0 0 ACGCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC ######################################A=::@@A853;200*.054B5?=0=AA3338900.0/CCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1G0C97 NM:i:2 -SRR065390.2751803 0 CHROMOSOME_I 105 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCGAAGCCTAAGCCTAA BCCCCBCCCCCCCACCCCC>CCCCCCCBCBCCCCCCCCCC==:AA@CCCCB=BC:+0100C?CC?######################### AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:80A4T14 NM:i:2 -SRR065390.9101383 16 CHROMOSOME_I 105 12 100M * 0 0 CGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCGCAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###########################################################A<7?<1?CCCC@ACBACAC?CCCCCCCCCCCCCCCBC@CCC AS:i:-6 XS:i:-18 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1T35T0A61 NM:i:3 -SRR065390.19805019 16 CHROMOSOME_I 109 1 100M * 0 0 GCCTGAGCCGAGGCCTAAGCCGAAGCCGAAGCCGGAGCCGAAGCCTAAGCCTAAGCGTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #################################################################C>C:CCC@CC@CCCCBBCCCCCCCCBBCACCCBCC AS:i:-18 XS:i:-18 XN:i:0 XM:i:9 XO:i:0 XG:i:0 YT:Z:UU MD:Z:4A4T1A9T5T5T0A4T16C43 NM:i:9 -SRR065390.634578 0 CHROMOSOME_I 110 0 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCATAAGAATAAGCCAAAGCCTAAGCCTACGCTTACGCTTACGCCTATGCCTA >@C@@CCCBCCBCCC@B@5BAAAAA@BBBBB@BBAB(BBB?;;;?####################################################### AS:i:-20 XS:i:-20 XN:i:0 XM:i:10 XO:i:0 XG:i:0 YT:Z:UU MD:Z:49C4C0C6T13A2C2A2C2A5A5 NM:i:10 -SRR065390.14445465 16 CHROMOSOME_I 110 1 100M * 0 0 CCTGCGCCTAAGCGTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ##############################C?BBB=AAA:'000(0=AAA>?CCCC@8@BCCCCCCCCCCCCCCCC?@C@?CC@BBCCCC@C@C@CCCC AS:i:-10 XS:i:-10 XN:i:0 XM:i:5 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0C8A0A3T12A72 NM:i:5 -SRR065390.19877275 16 CHROMOSOME_I 110 1 100M * 0 0 CCTAACCCTACGCCAAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ##############################@=9==(B?<B>B>>B>>>A>B>BBB<>BB888:;00./0::72;CCCCCCCACC AS:i:-16 XS:i:-16 XN:i:0 XM:i:8 XO:i:0 XG:i:0 YT:Z:UU MD:Z:3A0A4A4T0A5A0A4A72 NM:i:8 -SRR065390.4419 0 CHROMOSOME_I 111 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAA CCCCCCCCCCCCCCBCBCCCBCC8CCCC?C@CCCCC@CC@C@CC8C?@5BCC@;@CA>@@=:>>532:;8A@A@########################## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:92A7 NM:i:1 -SRR065390.6629332 0 CHROMOSOME_I 111 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCADCACCC@B=ACBBB=CBD?@BB>B@DB>>.>=>>*4;77A@?A>DB<:?=@@,8 AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:80A19 NM:i:1 -SRR065390.13561281 0 CHROMOSOME_I 111 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCADDCCCC?CCC@CB8?*?:7==8==@<@:@######################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:97T2 NM:i:1 -SRR065390.13848363 0 CHROMOSOME_I 111 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCBDCC@CCAA?DCBBADBD>>>BB>>B1DAB;B6B9DD###### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:99A0 NM:i:1 -SRR065390.15692749 0 CHROMOSOME_I 111 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCC@CCCCB@BAC??>B@B@B?<:??C8@?A8A####################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98A1 NM:i:1 -SRR065390.27886908 0 CHROMOSOME_I 111 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTGAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCBBBDBD@BCBBAB@############################################# AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:56A43 NM:i:1 -SRR065390.32433607 0 CHROMOSOME_I 111 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAATCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCDCCCD@BBCB*A:A?:@BBB?BA@BA;BBBBB=B>>B@;=>;<::82>8<59 AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:58G41 NM:i:1 -SRR065390.32577253 0 CHROMOSOME_I 111 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCGTAAGCCTAAGCCCAAGCCTCAGATTAAGCCGAG CCBCCCCCCCCBCCCCCCCBBCCCCCCCC=CCCC?CCCCCCCCCCCCCCBADCCDACABCD@DAB@BBBBC@AB@@################################# AS:i:-5 XS:i:-5 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:6C93 NM:i:1 -SRR065390.27208864 0 CHROMOSOME_I 112 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCGTAAGCCTAAGCCAACGCCTAAGCATAAGCCTAAGCCTAAGCCTAAGCGTAAGCGCAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCC?####################################################################### AS:i:-14 XS:i:-14 XN:i:0 XM:i:7 XO:i:0 XG:i:0 YT:Z:UU MD:Z:41C12T1A8C23C5C0T3 NM:i:7 -SRR065390.14809419 0 CHROMOSOME_I 114 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCCAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CCCCCCCCCCCCCCCCCCCCCC=CCCCCCCCDCCCCCDCCDCCBCBDCCBDBBCDBDB>BDABAABBC@BCBBC>>A?B?B>?AAA>A4A=9@####### AS:i:-4 XS:i:-4 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:22T77 NM:i:1 -SRR065390.20842573 0 CHROMOSOME_I 114 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCC@CCCBDDBCDDB>D@A==:9@256&(3036-@@@3@#################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:68C31 NM:i:1 -SRR065390.349756 0 CHROMOSOME_I 115 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCAC@CCCB=B<>BB@= AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.8856958 0 CHROMOSOME_I 115 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCC@CCC?CCCCCDCCBDCDDBCA?>AA@@?BB?;B::2=4=B################################# AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19124748 0 CHROMOSOME_I 115 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CCCCCCCCCCCC=CCCCDBCCDDACCB<<=@?B@6@?BB>B>?>9>(:=979A#### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23327180 0 CHROMOSOME_I 115 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBDCDCCBBABA@@B@BB6BB@BAAAC?CAA>=@@<(@########## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24595212 0 CHROMOSOME_I 115 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCACDCCBB@DDDAA>DBDBA;AABB?6DBD>?=??B>@9<:=<;46@@@:@############## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.802879 16 CHROMOSOME_I 115 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ###############?05@@@@;BBAA=CCCBA6@@CCCC?CCCCCCCCCCCACCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9215590 16 CHROMOSOME_I 115 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ######?=?:@6B@@C<=A?A?8@@B@B@@B?8CBCDBB;>==BDADDBDBADBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13357175 16 CHROMOSOME_I 115 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT B>::@@D<@??:?DB?B;D>BAB=B@DB>@DDBDBABBDC@ACACCDACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13460510 16 CHROMOSOME_I 115 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #########################C@<B>B@@@@8BCCDD>ACDBCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24138882 16 CHROMOSOME_I 115 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ##############################@?BA?<;BCBB@ABC;DBA@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29591166 16 CHROMOSOME_I 115 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #########################@@<81=@@<BBBAADDBDBDDDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29698542 0 CHROMOSOME_I 115 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCCCCCCCDCCACCBCCACABAABCBABBBB@A@?@AAA?####################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.30439372 0 CHROMOSOME_I 115 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCD@BBBCDDABCCBCDBC>BA@DABB>BBB;>BABABB>B?>ADB>B AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6134052 0 CHROMOSOME_I 116 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTACGCCTAAGCCTAAGGCTA CCCCCC@BCCC@BCBBB>@B9<;88@@:@:8778;88;;>=:3@@76384@<@@############################################## AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:74T7A13C3 NM:i:3 -SRR065390.10167659 0 CHROMOSOME_I 116 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCATAAGCGTACGCCCA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCB=;ACCC@=AACC=?@@=@;(?@?################################### AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:85C5C2A3T1 NM:i:4 -SRR065390.14472485 0 CHROMOSOME_I 116 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCGTAAGCCTA CCCCCCCCCCCCCCCCCACCCCCCCCCCCCCCCCCCCCDCCCCDBDCDDDDCBDDDCDDBBBBDBBBAABD>DD3:=>A><==A################ AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:86T4C8 NM:i:2 -SRR065390.16076532 0 CHROMOSOME_I 116 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCGCACGCCTA CCCCCCCCCCCCBCCCCCCCCCCCCCCCC@BCBCCCCCCCCCACCCCCCC?CCCC4;???@=B=C?A?A;??<B;==?############### AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:91C0T1A5 NM:i:3 -SRR065390.28531075 0 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAC BCCCCCCCCCCCCCCC@CCCCCCACCCCCCCCCCCCCC=CACCCCCC@BDCC################################################ AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:99A0 NM:i:1 -SRR065390.32393251 0 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCCCCCC@BCCA>B?CB@CBBBB=@B?BBB75@;<>BABBABBB@@CDAA@CBBCCDCCD@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.2710794 16 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##################A,A?@9A59>;<1@AB<@5=BC9;9:3CCCCCCCBBCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.3026627 0 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAA CCCCCCCCCCBBCCCCBCCCCC@CCCCCCBCCCCCCCCCCCAC?CC?CACCBBCCAC=?@@@?@BBAB@C############################## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:97T2 NM:i:1 -SRR065390.4690010 16 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ;=<@@9355*;B@@B>B>BB:BBDBBB4BBAA;8AACB@@CBBC;DCCCDACCCCCCCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4869028 0 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTACGACTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCDCCBCBDCBBBBBB?########################################## AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:87A5A1C4 NM:i:3 -SRR065390.5729393 0 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGTCTAATCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCDBBDADDD?DDA?BD>B>CBBBBD:>2B#################### AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:89C4G5 NM:i:2 -SRR065390.7269481 16 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ############B??@@@@8>@BBB>BBDBBB>ADABBBCDDCBCCDCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10010220 16 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##########AA?==??>BBA6BB>B>;AB?DA@@DDBC@DCCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10563492 16 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##########################################@:A@6@??AAC@C@?3B@?BCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.11835411 16 CHROMOSOME_I 117 0 100M * 0 0 CCAACTCAACGCCTCTTCCTATCCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #########################################CCA=ABCCCCB@6CC@CCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-20 XS:i:-20 XN:i:0 XM:i:10 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1T2G0C1T1A4A0A0G4A0G77 NM:i:10 -SRR065390.11890498 0 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCB?CBCCCC@6>BA>>>ABC>>@DABBD>D@BABDDCDBCCBCCC@DCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13274061 16 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##################A91=:?B?D;BBB>AA=BBBB<=BCA@8AAB@CCCCCCC@@BA6>BBB@D@B?BB>BBABDAD@A@CCCBCCAACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.15182324 16 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA AA?>5BB?D;BABB=>BBBBAABB;DABDD@CDBCAACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16508065 16 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA =297=@>>:@=?@:8B@BBBA=>BCB@C;CA8AC@AAACBCC@CC=4CACA;=@@###################################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:87A12 NM:i:1 -SRR065390.16618625 0 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAAGCCTAAGCCTAAGCCTAA CCBCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCC@CCCCCC@CA@A>?ABACCC?8A@AA=CB?AA@BB(??B=A*553;;8>?66:9:>+?;79 AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:74A25 NM:i:1 -SRR065390.16909890 16 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA A.=:@>>B8@B@B;BBACBAB@BCADBDCCCDDACCCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17985359 16 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##################A<48@B58=9=>=8=?B?>B3B=CDDBBB>@CDBCBCDDCCDCCCCCCCCACCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.20428024 16 CHROMOSOME_I 117 1 100M * 0 0 CCAAGCCTAAGCCTAAGCCTAAGCCTAAGCCGAAGCGTAAGCCTAAGGCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ######################################################################################AAAA1/555/0000 AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1T29T4C10C52 NM:i:4 -SRR065390.25333072 16 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #####################?B>DD?>BBBB;?>@BABBBACABBDDC@DBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.26734455 16 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ################?A?@=;CBBA?>BAB>AABDDAA@DCDBBDCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.26915421 16 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ####################@?=:6@;;7/4;5550>DD>>BBBB@B1DBBBB:;CABD?DC=AD@BACCACBCCDCCCCBCCCCCACCCCCCCCCCCCCCCCCBCCCCCCCCCBCBCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.32532096 16 CHROMOSOME_I 117 1 100M * 0 0 CTAATCATAAGCCTAAGCGTAAGCCTAATCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##################################################################A5?A000003699;:;<8:9;<99BC@CCCCCBB AS:i:-10 XS:i:-10 XN:i:0 XM:i:5 XO:i:0 XG:i:0 YT:Z:UU MD:Z:4G1C11C9G5G65 NM:i:5 -SRR065390.33077092 16 CHROMOSOME_I 117 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ############?7=;?=A?>@BBA=@?DCCA@CACCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4104352 0 CHROMOSOME_I 119 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCDBDCCCDBACCCDACCCCBDBDDBD@BBDCBBBDBBBABBABBABA>BAC;>@>?####### AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98G0C0 NM:i:2 -SRR065390.11335401 0 CHROMOSOME_I 119 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCCAAGCCTCAGCCCAAGCCCCAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCC@CCABCDBCACBBBCBBB:A>??C################################### AS:i:-12 XS:i:-12 XN:i:0 XM:i:6 XO:i:0 XG:i:0 YT:Z:UU MD:Z:71T5T6A4T5T0A3 NM:i:6 -SRR065390.19440436 0 CHROMOSOME_I 119 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCGTAAGCCTAAGCCTATGC CCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC=@CCC@C@BAAA################################################## AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:82C14A2 NM:i:2 -SRR065390.31062597 0 CHROMOSOME_I 119 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCCAAGCCTAGGCCCAAGCGCAAGC CBBCCCCCCCCCCCCCCCCCCCCACCCCCCC=?CCCCC?CC;;@@BBB@B@BC<@;;9>7@:=@@################################### AS:i:-12 XS:i:-12 XN:i:0 XM:i:6 XO:i:0 XG:i:0 YT:Z:UU MD:Z:71T5T7A3T4C0T4 NM:i:6 -SRR065390.21240567 16 CHROMOSOME_I 119 1 100M * 0 0 AAGCCTAACCCTAAGCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ########################################A::A48>,57/C6CC@CCBCC@CC?CCCCCDCCCCCCCCCCCCCCCCCBCCCCCDC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:8G11G79 NM:i:2 -SRR065390.473388 0 CHROMOSOME_I 123 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CACCC@CCCCCCCC6CCCCCCDAB?@A=C;CA@=BA######################################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5212583 0 CHROMOSOME_I 123 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CCCCCBCBCDDA>BDBD=>?B>BB3B@B@@@DAC?C;>D:?<(79.:@<@@= AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6106911 0 CHROMOSOME_I 123 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CBCCCACCA?79878B@@?B78678B??>?>=AAABBBBA8A;>>B>:>BB<>?>;???######################################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.7281918 0 CHROMOSOME_I 123 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CDBCCBCDCCC@CDDDDBDBB@BBABB>AB@BD>B?85=797/@<:8 AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14025609 0 CHROMOSOME_I 123 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCC>CCCCD@BCDDBBCDAC?@A@DDABDA=D53885@?:A@@BDBB?3?>;=A######## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19641253 0 CHROMOSOME_I 123 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCAACCCCCCDCD@D@B@BD@B>BDBAB8>??A??;@B@D;?3==?B6?A##### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.20334733 0 CHROMOSOME_I 123 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCACCCCCCCCCCCCCCCCC@BCAD?@@@BB@<1?################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22745112 0 CHROMOSOME_I 123 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCB@BDCCBCCACAAD=DDBA>B>@BB6B@AD?###### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.25556189 0 CHROMOSOME_I 123 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCDCCCCCBCCCCCCCCCCCDBCDDDBBBBBBBCBCBAAB@BBA@################################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.27641394 0 CHROMOSOME_I 124 0 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAACCTAACCCTAAGCCTAAGGCGTAACCCAAACCAAAGCGCAAGCGCAAC 88;68;;:;9@?>AA@CCCCCCCCCCC@CCC@C<>>>CCAC@A-@####################################################### AS:i:-28 XS:i:-28 XN:i:0 XM:i:14 XO:i:0 XG:i:0 YT:Z:UU MD:Z:51G5G12C1T0A1G2T2G2T4C0T4C0T2G0 NM:i:14 -SRR065390.9280611 16 CHROMOSOME_I 124 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG @@D=6@@6@@A?=ABABAA@B>=BCDBCDBBDBBDBDDADC=DCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12478066 16 CHROMOSOME_I 124 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG #####B@@A?DB??@A:?AD=CBB>BCBBBADBBBDBABBDDDDCDCCDC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.25264436 16 CHROMOSOME_I 124 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG #######################@<766>><:4==:5==;C??@?=ACCCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.32908522 16 CHROMOSOME_I 124 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG #############################@B=>><:CAB@=DCCAACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24389795 16 CHROMOSOME_I 125 1 100M * 0 0 ACGCCTAAGCCTCAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #######################################BBB=>DABB>BDCDDBBBCD@DCDCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1A10A87 NM:i:2 -SRR065390.7886550 16 CHROMOSOME_I 127 12 100M * 0 0 CCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #####?6@??AA;AAD:6@?A=CAC;;<;7<1B@@>BDDBB@B@BDBABBAB>>;BB8=;@BD::;>D#### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.3825439 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCCCCCCCDCCCCCBCCCCDDCCD@CBCCDDCBDBABBA@DBDBBBBCBBABBC>BAAA>D@######## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6176897 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCC@CCCCCCCC@ABCCAACCDCBBBA@ABABA@:@:??BBBA@DBAAAB>?B?:>B@@ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6179290 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCDACBDCBABDBD@BBDDDBAAABBA>BCABB>A=4>>/=0298696=@##### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9176327 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCC?CCCDDACDBDC>@BBAB=;?BBB4@@BD:3???5=:8>>9@:6@##### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10096114 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCDCCDBCBADABDABBAA=B>B@?BD;4@7>9=7==>>> AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12408086 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDBAA>DBDBB@BBAD=@?B?B?4A??B:A?AA<(@ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.15769247 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCACDDADDBA@B@BBBB>B6B?B@?########## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16538618 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCC?ACCCCBCCCC@ABB@B:6BB8A?7@<><@:9?################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18630353 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCC@@CCDA?BBDBB@B@BB;@?BB>B;?<>=>69@:86A3=@@##### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.21703645 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCDDCCCA?D?C@CB@@B@@CDA@:==@@@<@@=?=>BCABA##### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24795092 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCBCCCCCCCCCCCCBCCCCBCCABCACA<;;??C@;BBBD?6@@@@>2?@;8::>9>A11@###### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.31111380 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCDCCBDCBDCBDBBBDBDDBBBA@BBDBA@BBDDAACAB?:DD:??@><@<@@@ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.1774013 16 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ###################@=379:@=??D>@<7D>>@B@DDB@;: AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.3893380 16 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ####################A?0@A@=>8CCC@B=@CC?B@@CCAB@ACCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4975116 16 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #############B??8B?B8>>DB?=;8?BB@B@;BBB=>DCCBCABCCCCABCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5530338 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCC?CCAAACDDBADBADDBBBAB@BB@;@B??################ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6465879 16 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #####################?;@B;;>5A38;98BBDBBDDDC@BCCBCCCCCCCCCCCCCCDCCABCCCCCC@CCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6537766 16 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ################@8?=?D=6B>:==>?C;BBA5DBCB@BBAB;BCCBCB;CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.7401229 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCDCDCCCCDCCCCCCCCCCCCCCCCCCBBCB@CACABCBAA@BBB?=B;>B=5AA??@AB@=6=8=CC>AC;:??8;5/-51B>2A###### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.11449581 16 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA 7=741.8A;4B>>AAAB>AB?>B@BA@?A?/000(@AA>:C=;CCCCBCCCCCCCCBCCCCCCCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.11762556 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACDACBADDBADDBB@DB@BBDBBACBCCC>A??>?<8B### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.11780901 16 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ######@@@@=<@@@68=>=>BADABBB6BB;BB>@CDBAA@CBBDADCCCCCCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12246013 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCACCCCCCCCCCCCCCCCC@CBDBB@DBB@DBCBB;D@D?@B>?B=0=====;:@@@@@:@CCCCB?ACCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13762870 16 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ###############A<>=@92757;;?8ABBB>B@A;BBB<>;B6B;@AAA;:BD:?@*5@@17@### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.21762505 16 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #############?:1,@>B<<===>8@6@DB?@?ABBB@ABADBBDDBCDBDCBCCACCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.21990338 16 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #############A=452==:=?=?@:?::@5?>=8:<=C?C@CCCCC@CB?CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23838269 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCABCCDABDDCBABBBB>@=93=7=BBBB?0?:A=47@7@8/8<8@######### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24259901 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCCBC@BCC@;CB@@BB><@@B@;;A??@:.?>9B:9>@@@(6=@####################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.26950543 16 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #################################################A@B?@@CCACBCCCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.28049981 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCDCCDDCCCDBBA>B@>B>@?BDB@???<:?.75377?DAAA############### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.28919001 16 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #########################?:6>6@B6@@@B>D>AABBABDBACDADBBDDDDDBCDCDDCCCCAC@CDCCCCCCCCCCCCCCCBCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29600181 0 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDBBDBDB?<@@6@?>9;9@############################# AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29907490 16 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #########################@:<=2A8=B>6;A?@B@?>BC@B;CACBDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.30476269 16 CHROMOSOME_I 128 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ########################@9/<22A?5:9@D>=D>A@BCAABDDBBDBCDBDCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9576969 16 CHROMOSOME_I 129 1 100M * 0 0 CTAAGCCTGAGCCTAAGCCTGAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###################################################AA=AA4A?AA.=AA;>7<>>58>>>71;<>;;7300000<>9>>@A??? AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:8A11A79 NM:i:2 -SRR065390.9988260 0 CHROMOSOME_I 129 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCCCCCCCCCDA>A;C@=@;C@@@A@@############################ AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:79T20 NM:i:1 -SRR065390.10035310 16 CHROMOSOME_I 129 1 100M * 0 0 CAACGCCTAGGCCAACGCCAAAGCCGAAGCCTAGGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ########################################################A4?==:C?C>C@C@??><>@:@C@B@A@@CCCCBCACACC@CCC AS:i:-16 XS:i:-16 XN:i:0 XM:i:8 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1T1A5A3T1A3T5T7A66 NM:i:8 -SRR065390.29366441 16 CHROMOSOME_I 129 1 100M * 0 0 CAAACCCTAAACCTAAGCCCAAGCCCAAACCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###################################################A=@A>@BBBDA=CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-12 XS:i:-12 XN:i:0 XM:i:6 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1T2G5G8T5T2G71 NM:i:6 -SRR065390.3937302 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCC?CCC?CCCCCCBCD?CCBCCBDC@CCB@==@A@@@B?8B?B?===?@?@A>?>A AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4086234 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCAADCCACADDAB8@BBBB>?BBBD>B?BBACAB>BBA########### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4778767 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGCCTAAGCGGAAGCGTAAGCATAAGGCTACGCATAAC CCCCCCCCCCCCCCCC@ACCCCBCCCCCCACCCC@ACCAC=9CBCA<=?CA>=;BA@?########################################## AS:i:-18 XS:i:-18 XN:i:0 XM:i:9 XO:i:0 XG:i:0 YT:Z:UU MD:Z:58C12C0T4C5C4C3A2C3G0 NM:i:9 -SRR065390.8295829 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCDCBDDBBCBBABBBBB==BB@@8@?@:>@@@A.:;8>A*<=8< AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10871940 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCDDBDDCCDBBBC>A############################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12095552 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTAAGCCTCAC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDACCCBADBBC@4A)0.//A=>=6?>>:A>=@D99.@################# AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:84T12A1G0 NM:i:3 -SRR065390.13775982 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCC@CCDCBDADBC@DDBAB>BBB>=??@B@@?@>BD AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.15558825 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCAACCCCDCDBDBCDC@DB5BB@>@@;=A;?4@?############### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16058509 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCACCACCBBCACC@DCBDC>CCABCBBC3===;DACBA;A:?########################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19900294 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCABACCDBDDABDABBA####################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19995334 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCBCCCCCCCBCCCB@BDCCBCCCDBADBBB@BBABBDAB@ADACD=>88A@@:=<>=A####### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.21017432 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBDCCCC@DDCCCDBA=AA=>>:?<@BB8>B############################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.21103370 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDBCCCCBBCDDCB;ABABB>?BB?@############################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23568099 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CCCCDCCCC:ACCCAC>B>@@;C9=<8==BCAACCBB8;:69;37:5:3;9?########### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24833775 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCDDDCBCDBDDBBDBCDA=DBBDBBB>BA6BA>BB??:??A?AAA@= AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24981819 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCC?:CCBCCCCCCCBCCCCCBCCCCCC@CCCCCCCCCC@@CCC?CCC:C?CBCBC@BCB>@>@@.=9>9B@BB5@#################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.26074983 0 CHROMOSOME_I 130 0 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCACAAGCCCAACACTTACACCACG CCCCCCCBCCCCCCABCCCCCCC@CCCC>CCCCA@?CCBC3;A==<=;AD3BD;D@BB?=AAAA?>??###### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.28071689 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACBCCCCCACCBDCBDC>BADA?BB=A@>>8=48(;88/? AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.28757581 0 CHROMOSOME_I 130 0 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACACAAAGCCTAAACAAACGCCTATGCTTATTCAAAATCCTAAT CCCCCCCCCCCCCCCCCCCCCACCCCCCCCCCC=CCC?C@8?>>>B>B5B################################################## AS:i:-30 XS:i:-30 XN:i:0 XM:i:15 XO:i:0 XG:i:0 YT:Z:UU MD:Z:57G0C1T8G1C0T1A5A2C2A0G1C0T2G5G0 NM:i:15 -SRR065390.29809470 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDD@CACDDADBDAAADBDB>;DBBB>BBABAC>ACB@3@@6:95*@########## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.32683144 0 CHROMOSOME_I 130 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCBCCCCDDB@BDBD>ABBADAABBBBA?>ADB>=AAABC>>C AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.24353773 16 CHROMOSOME_I 130 0 7M7I86M * 0 0 TAATCCTGCTTAGTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA @@@9@<>>=>1BBB>?@B>A>?B;AB@>>B<;<>>?7?C=CCC907=9728*82*3-3:=<9>@>BA>=+>@############################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:72A27 NM:i:1 -SRR065390.9158702 0 CHROMOSOME_I 131 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCDBAAD@C@@=>BBCBBDB>ABBBDABDAADBB?D############################################# AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:55A44 NM:i:1 -SRR065390.27452830 0 CHROMOSOME_I 131 1 100M * 0 0 AAGCCTAAGCATAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCC('/(/BBBBBCCCCCCCCCCCCCCCCCCDCCCCCDCDDCCDCBD?DDDBDDBBBDBDABBABB>A:B@;@>3@?@?:;6:@/?688<3:: AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:10C89 NM:i:1 -SRR065390.31152354 0 CHROMOSOME_I 131 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCDDCDCCDDDDDDBABDBBBBBBDBBBBAB>ACA@>.@D1/;>>@<6@##################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:79A20 NM:i:1 -SRR065390.33386269 0 CHROMOSOME_I 131 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCACACCBDCCBCDDCABCABCABBBCB;>BB??AA;9=8=?>BB?BB4;B;B>B=B@D=CDC@CCCACAD@DAC@CCCCACCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.8335531 16 CHROMOSOME_I 133 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ?DBD?=A?A?66A>BB<>B@B@??@>DAABCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.8716276 16 CHROMOSOME_I 133 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ###########@??8B;D@@BAB>BB@BB>BB@>@;@CBCC@C?@ACCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12206123 16 CHROMOSOME_I 133 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #####################################@:BAA?AC@@A:5<@53;97>DACCDBDCCCBC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13431089 16 CHROMOSOME_I 133 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ###############@3??A?:B@=>ABDBBDCBBDABADBBBCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14308521 16 CHROMOSOME_I 133 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT 35880;A6AA?DAA@A=AACBC;CAADBBBBDDA@BBBDBACBBCDCBDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17911869 16 CHROMOSOME_I 133 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ####################################ACCAA38C>@C>@ABCCCCCCCCDCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.26803411 16 CHROMOSOME_I 133 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ############AA@@31BDB?>@B@A?>8B@BBD;BBBBB>B@@BBACBCCA@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29004521 16 CHROMOSOME_I 133 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ###################A>??=?BBD>BBADCABBBD?DABBBDBADDCACDDACBCCCCCCCCACCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.32891184 16 CHROMOSOME_I 133 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #########@@:@@?A;?@??@@@BBBBC?@@@BB>>BCCACC=A==;00000.0000/0+00@=A@################################################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:73C26 NM:i:1 -SRR065390.19147644 16 CHROMOSOME_I 134 1 100M * 0 0 CCTAAGCCCACGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ####################?>?@BB0B?<@B=@BDDBABCCBCDCCDBACDCDACCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:8T1A89 NM:i:2 -SRR065390.24348183 16 CHROMOSOME_I 134 1 100M * 0 0 CCAACGCCTAGGCCTGAGCCTAACCCTAGGCCTAAGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #################################################################AA@AAAAA?AAA:?A@7@2@:@A@:>>B9>A0?A0 AS:i:-14 XS:i:-14 XN:i:0 XM:i:7 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2T1A5A4A7G4A9T61 NM:i:7 -SRR065390.26237014 16 CHROMOSOME_I 134 1 100M * 0 0 CCGAAGCCGAAGCCCAAGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ###################################?CA8B@CCC=BCCCC?DCCCCCCCBCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBDCCC AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2T5T5T5T79 NM:i:4 -SRR065390.26715609 16 CHROMOSOME_I 134 1 100M * 0 0 CCCACGCCTAAGCCCAAGCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #########################@4/>BB@A?BBC@B@B@CD@ACCCCCCCCCCCCCCCCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2T1A9T8G76 NM:i:4 -SRR065390.29763377 16 CHROMOSOME_I 134 1 100M * 0 0 CCTGAGCGTAAGCCTACGCCTATGCCTAAGCCTAAGCCTACGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA ###################################################################?A9?A?BB>><>;AAAAA>>;><>8>8>??B?: AS:i:-10 XS:i:-10 XN:i:0 XM:i:5 XO:i:0 XG:i:0 YT:Z:UU MD:Z:3A3C8A5A17A59 NM:i:5 -SRR065390.5592165 0 CHROMOSOME_I 135 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCBCCADCCCCBABDD@DAB=DABB@@@B5>@==B>=B:=>9>A@?><(@/8<8@6:96 AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5867686 0 CHROMOSOME_I 135 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCCCCACCCCCCCDCCC@;CCCCCABCACC>DDBBBBB?BADAB>BBB>C;?>>?>B8;??5;@.;>8@## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10729660 0 CHROMOSOME_I 135 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBBBD>B@BCCCCCBCADCB?BABBBB:;B@BB>BADBBC;BBB:B0?@??B>CB>>A>BAA6=>? AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12631494 0 CHROMOSOME_I 135 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCBCC@CC?@BB@CDAABBABAA1?>A?=AA=A;9@?A@*?/B# AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14201144 0 CHROMOSOME_I 135 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCC@C;C>ACC?C=CCCB6BCCB5BA@@C##################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16211946 0 CHROMOSOME_I 135 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCADCCCCCDDBBCCABA@CDBDB5DBBD@279;9B>@=@B@@?<@@ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16765976 0 CHROMOSOME_I 135 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCBACBCABCD@ABB>AD<=<:87?<=?98=8?########## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16773580 0 CHROMOSOME_I 135 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAATCCTAACACTAAGCCTAAACATAAGCCTCAACGTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC6BABB<@3>?=1==;D?6D########### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.28919583 0 CHROMOSOME_I 135 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCACCCCCCCAACBAB@=BBBBB=B@B8:<@=D??;?7@8<19=992@6@################# AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.33072912 0 CHROMOSOME_I 135 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCACCCCC@BBABAADBD@<6B?3?A@A::<:9 AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4862525 0 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCDBADCCD@BBDBBDDDDD>A>==?;?BB??B::995>.@@@############ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5774599 0 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCBDDBBD@@ADBBD@BAABB?D>;?B?>D?D:A2?6=79;9 AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13990332 0 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCCCCACCCCADCDBCCBABACCBBBBABBB??C?;B97;=3>=>>=5-;37=<8=< AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17419760 0 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCACDCCAABCDDD@?B@C@BDDBB>>ACBB6DB########################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.21031614 0 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDBCCDCADCDBBB>DBAB?:BB?@?>BB>@3DABB?ACAC>????D@########## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29523788 0 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCADBDBBBCD@CA@BBBABBDABBDBABABBA############### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29752320 0 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCDCCCCCCCCDCCDCDDCDCBBBDBB>ABDBB@ABABBBD;AACBAAAAACCAABAAACC@@:;9@############## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.32757960 0 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCDCCABABBCA@CCB@@BDD@@B@BBB@BBB>B@;@B8@87B;;;>5@<@?=62A##### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.1606697 16 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###############BBBB>?4@?BABCB>CC8B@BAACCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.8349937 16 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG =43?@B6>:???:D?B>B>D?BBB?DABDDBBADCD;CBBCDACABCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9584086 16 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG #######################??>A?AA>=9=5>A>AA>AA1@>@D@>6B??:?>:?B>??>?B:@?>BBBBBBDD>8?AA??>8@BB>=ABCDDACC@CCABCCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.15429543 16 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ######################A=:B6ACAAB?CACABBCCCCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16332923 0 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCDCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCCCC?CCCC?CCCCCCCCCA@?BCCBA@@CB=?:5B>BCCACCAC@CCCCCCCCCCCBCBCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19757045 0 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCC@?CCCAAACCCCA;>?>?>CA@BA>AA<<BBD>@D@CADCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23337581 16 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG #############################################?7<1:8?CCCCCBCCCCCCBCCCAAA??::<<<<<< AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.25202138 16 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###############A@>::>BBB>@@?BB@>@=BDAA@DCCCB@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.28056173 16 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG #########@@8'55<@3=@A:?=BADDBCDDDADCDCACCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.28190925 16 CHROMOSOME_I 136 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG #########################@8???30235=*??@CBBB>;CC@CA@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13943605 0 CHROMOSOME_I 139 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGCCTAAGACT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCACCCCC9@BB>A87=>@?################################# AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:85C11C2 NM:i:2 -SRR065390.323629 16 CHROMOSOME_I 139 1 100M * 0 0 GCCTAAGCCTAAGCAGAAGCCTACGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ##########################ABBA@@@==0===A8@?>>@@;CC=@@7@C8C8CCCC@CCAC>@C=C>CCABBCCCACCCCCBACCCCCCCCCC AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:14C0T7A76 NM:i:3 -SRR065390.14693556 16 CHROMOSOME_I 139 1 100M * 0 0 GCCAGCCCCGACGCCTCAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ##############################A=@:;==AA===7=>?BBCCC@@CACCDC@DCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-14 XS:i:-14 XN:i:0 XM:i:7 XO:i:0 XG:i:0 YT:Z:UU MD:Z:3T0A0A0G2T1A4A83 NM:i:7 -SRR065390.30350798 16 CHROMOSOME_I 139 0 100M * 0 0 CCCTACTGCTCCGCCCATCCCTACTCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #########################A@=;:=@?:=:>CC@<;@CCBA5DCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-22 XS:i:-22 XN:i:0 XM:i:11 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0G4A0G0C2A0A3T1A0G4A0G75 NM:i:11 -SRR065390.4780763 0 CHROMOSOME_I 140 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACCCTA CCCCCCCCCCCACCCCCCCCCCCCCCCCCCCCCCCDCCDCCBCCBDBADC@BB;CC@=A;CA>=@BACB>@ABB@A>AAB#################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:95G4 NM:i:1 -SRR065390.10506396 0 CHROMOSOME_I 140 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCA CCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCC?CCCCCCDCAA9ABB@1C@@@A@@A.B@A==(77;73:?6==/@6>@##### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:35G64 NM:i:1 -SRR065390.17927737 0 CHROMOSOME_I 140 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTA CCCCCCCCCCCACCCCCCCBCCCCCCCCCACC?CCCCCACCBB@BBDAABA?B=?########## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:92T7 NM:i:1 -SRR065390.27209146 0 CHROMOSOME_I 140 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA CCACBCBCBC@@@AA,CCCCCCC=CCC?CCCCCCCCCCCCCB@CBC>9=8.;=:=789.177042357??################## AS:i:-3 XS:i:-3 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:54C45 NM:i:1 -SRR065390.8223160 0 CHROMOSOME_I 142 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCAAAGCCTAAGCCCAAGCCAAAGCCAAAGCCTAAACCTAAGCCGAAG CCCCCCCCBCCCCCCCC?CCB>BB::??3?ABA>B>ABAAB@B@B@BBB################################################### AS:i:-12 XS:i:-12 XN:i:0 XM:i:6 XO:i:0 XG:i:0 YT:Z:UU MD:Z:54T11T5T5T8G8T3 NM:i:6 -SRR065390.28374598 0 CHROMOSOME_I 142 0 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTAAGACAAAGCATACGCGACAGCCCAAGACAAACCACATG <9;;;=A?=>CCACACCCACCCCCCCBCCC=ACAC=CCCBAC@A@?@.>@################################################## AS:i:-30 XS:i:-30 XN:i:0 XM:i:15 XO:i:0 XG:i:0 YT:Z:UU MD:Z:56A7C1T4C2A2C0T0A4T3C1T2G1C0T1A1 NM:i:15 -SRR065390.2772417 16 CHROMOSOME_I 142 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ;7/77:0=1>=7==7@@BBB?4@BBB>DBB@CBDCDDC@DCCACABCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5292931 16 CHROMOSOME_I 142 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###############@>9471*=886:?DB>:DB@AAC>BBDB>@DBDDBBDBDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5356550 16 CHROMOSOME_I 142 1 100M * 0 0 TAAGCCTAAGCCTGAGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG #####################################?=AC@AA@CC=D@BB?B@@DADD@BDDD@?DC@CDBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12004249 16 CHROMOSOME_I 142 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ##########@*?:@??>B?B;ABBA;BADB=A@BDDAABBDD?DABADCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17100183 16 CHROMOSOME_I 142 1 100M * 0 0 TACGCCTAAGCCCACGCGTAGGCCTGAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###########################################BA00*0+=C=7@>8C@ACCC5@@CACC@AAC@C>ACC@?;>@;ACA?CC?CA=ABAB AS:i:-12 XS:i:-12 XN:i:0 XM:i:6 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2A9T1A2C2A4A74 NM:i:6 -SRR065390.19067238 16 CHROMOSOME_I 142 1 100M * 0 0 CAACCCCACGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ##########################BD;CB>BBCCB@B@AC0@BABCBCCCCCCCCCCC?CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0T2G2T1A91 NM:i:4 -SRR065390.30164492 16 CHROMOSOME_I 142 1 100M * 0 0 GAACCCCAAGCGTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ##################################B>;<>:=B@?>B>CBCDC@CCDCDDCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0T2G2T4C88 NM:i:4 -SRR065390.30379033 16 CHROMOSOME_I 142 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###################################A>BABBBDB@?DCADBACCCBBCC?DCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.31408372 16 CHROMOSOME_I 142 1 100M * 0 0 TAAGCCTAAGCCTGAGCCTAAGGCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ##########################################BBB=?BC@@A=@C=C@BC@>C:C@ACCCCCC?@CCCC?CCCCCCCCA@CCCABBCCBC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:13A8C77 NM:i:2 -SRR065390.24902099 0 CHROMOSOME_I 144 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CCCDC>BDBBA@;CAB>ABB>A?B=:2:=:7=(77@@:<>@=@?# AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.26130664 0 CHROMOSOME_I 144 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDBDDBDBDBB=ABABB>BB@AA0=A=???@<<>@3@@=+>A7(==7@>8:=(;7749>3@3@######### AS:i:-3 XS:i:-3 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:67C32 NM:i:1 -SRR065390.10040702 16 CHROMOSOME_I 145 1 100M * 0 0 CCCTAAGCCTGAGCCTACGCCTAAGCCTATGCCTACGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #################################################################B;BAAABBBBA??AA?@CACCCCC@CCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCCCC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:4A7G87 NM:i:2 -SRR065390.76906 0 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACC?CCABCCCC0BBAB@.@?BB?:=?1?########### AS:i:-3 XS:i:-3 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:87A12 NM:i:1 -SRR065390.22155458 0 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCA@BCBDDDD@DBBD>@A?AAB0AB>??########################## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98A1 NM:i:1 -SRR065390.407652 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA =944;@<9>7:?@=?9@@B4B@B@ABADBDCDAABCCACCCCC>ACCCCCCCCCCCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.688364 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ?>>?>@D>6@?:=:=7@7>==@A??;22;0B@=;B?BA@@DBDA@@C@C@DBCCCCBACCDBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.2431093 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA A>@>A==94=:7A8@?=B4?@=@B?@B@=BDBCBCCBCDCCBA=CACCCCDC;ACCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5178538 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ############################@?>2=8>>@?@B6BDBADBBB@ADAACDCDCCCCCDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5776200 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #################?@>>ACBAACB>BB>BB>BD?A@@DDDDDCBDCCCCCBDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6963092 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############?=??B@?BDD?B:>@BBB>@BBBBD@DBAD@BDDBBBCCDCCCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.7246095 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ################@?A@?;A;?>;BBBB;?@?@@B@@BACBBBBBCBBCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.11988452 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ######A>=BC1BBBDD>BABB=BBC@B?AACCCCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12087571 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ########################BAA4ABBBBBB>6B?@?@=>>)69:===?<=B?=8@## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:83C16 NM:i:1 -SRR065390.12944530 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##########@B@?>:?@????@A@@B@@AA@B@@BCB@@CCACCAACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16589531 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ############?A0@ABBDCBB@BBCBDDDDCDCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18782999 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##############################B9B??AB6BBBBBCBBDDBBBBBDDDDBDCCDCDDBCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.20251224 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##########################@<3?>?>BADA>BDDBDABADDBBDADCABCCCCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22643473 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##################@@9??DD>>?>ABB?;BBB?6;BDDAAB@D?BADBDCCBCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCACCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.25014137 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ??@???BABB=A>BAB>@BBBBCBBBDDADBBDDDDBDDCBDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.31537660 16 CHROMOSOME_I 147 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ############A=9;C>BBD>A;BADDAA@CCCD=CCCCCCACACCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4975670 0 CHROMOSOME_I 148 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCDCCBCCCCABBCDBBBADBDBBABBAA=B1<@=A=@>B>DB?########## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98A1 NM:i:1 -SRR065390.10980220 0 CHROMOSOME_I 148 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCDCDDBD@B;B?=@############################## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98A1 NM:i:1 -SRR065390.16205013 0 CHROMOSOME_I 148 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCBCCCCCCCA?CCCCC>C9?CC@?CCC?6CB7>9/6ACA@@0@;@= AS:i:-3 XS:i:-3 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:88C11 NM:i:1 -SRR065390.19247267 0 CHROMOSOME_I 148 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCAAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDCCDCBABCDDA################################ AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:90T9 NM:i:1 -SRR065390.27744200 0 CHROMOSOME_I 148 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACG CCCACCCCCCCCCCC?CCCCCACCCCA@CCBCC?BBBCB>BD>BA@C@?@44A=9=76:?>><><=>=?########################## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98A1 NM:i:1 -SRR065390.48058 16 CHROMOSOME_I 148 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###########@=<<>9:6:;AB>>>===:.9>>:>ABDD;BA@DDA2:<<::06=:A:=>B6B@BBB>B@>>@@@?CCB@DCDCCDCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.3911401 0 CHROMOSOME_I 148 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCC<@CCB=CA@CBCCB;CB@BB@CAABA>?0?><=@9:?/57.3B:B6;:;4B########### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:93G6 NM:i:1 -SRR065390.11019398 16 CHROMOSOME_I 148 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ###########################A@=?BBC?CCCA@ACCAAB@CC9CC?CC?CCCCCACCCCCCCCCCCCCCCCCCBCCCCDCCCCCDCCDCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17181327 16 CHROMOSOME_I 148 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ##########A@@@@A@BC?CBDBBBBADDBBBBAB?>B>?CB@DACDC>D?@>;B@=BBABC>ACDD?6D######################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98A1 NM:i:1 -SRR065390.30860653 16 CHROMOSOME_I 148 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG ############################@@B?>BA;?A=B8C<=@ACCAB58=8<> AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.428236 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CC@CCCCCCACCCC@C@CCCC8ACCCB>@@CC4CBC>A66??@?8>=78@>,@< AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4115644 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCBCCCCDC@ACCBCBBCCBDAACCACBBBDB=BBABC>>?BBB;@=BBB>>8A=>0A:A=AA>A################ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.8373173 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCBCCCCCC@CCCCCCCC@B?CDAACCCACCDBBBB;B@C;8BB@A@0D45>737=>=+>@9A?########### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9273601 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCBDCCDDADBDDB@AB>BBBB9@@@@8=::877519=8=99?:>A# AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9667751 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCACCCDCC@@C@BA@@C??8=<;@@:94==759=>=A############################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10356164 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CCBC=>C@DCABBBBBAD?BBB1B><:7.7>A>:5=@=?@ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10582969 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC=>=>>>@CCCCACCCBBBADDCACBBDBA>DABBABBABB<>B>BDB:>BCA=AA??AA?##### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.11554773 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCDC?CDCCCCCBCCBB@BBBBDBD3774;33005=A############# AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.11799834 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCD@BCDDD@BDDDB@ABBBC>D?B@C>8CCA>:A?AD?####### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.12271991 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCBDBABDCDACDC@BBA@A@BBB?>AA>>BD???6@::= AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13100135 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCA@CCACC@CAC@@=;8><8B??A?=@=<>:==?;AA=@@B?AAC>5A#################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.13252530 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@ADCCD@BDCBB;ADD=B@DBBB@;@@?@=2=?################ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14011507 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCC;CCACA8CC@CC@AC@C@?AC8A8=B?5?:DB?;B=@AA?@@.B8=<@=>@@:;?900;10>17> AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14302244 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCDCCDCCCCCCCCBCCCCC@BCCC>@CCACCCCCCCCC=CCC@AACBC=B@@A8:>=B@@?8B=@B;=:>:?BB<@B;>B>BA>A?;:==.>.5555966@= AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.15822909 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCCC@DAAB;C@=BBAB==BB@;@@BB@@4887=:0>9:@###### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.16263688 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBBCCDDD@CCDDBADDBB;>BAABB9B###################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18384187 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@DCDBC@BBBBC;BBB>A>DB@=B3@?@>B6>>:9=0;=2::<> AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18577103 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCBCCDCCBBDDADBBB>>DBCCA>AC?AC?AAAA################ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19188617 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCBCDBCDBB=B@>AB?6>=2>A>>?;6D?;B@??AA>:AAAAA6<@6@ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.19522689 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCACCCDCDDBDDD@@ABBDB>;BBBBBBCAB>:>>?@9:@@?@96:<@@########################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22784325 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?BCCD@CDCDD@BBABBC8@@AAC@?BBBBBB;>C?@3=@@?=<6=9>83@=@D###### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23133897 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCBB:?BA9AA################ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23202943 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBBBCACDCDDDDDD>BADB@ABBBCABB>AB>=>=@@A??AAAA>A################ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.25064051 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCBCCCCCCCCCCCCCCCCCC@CCCCCCCCCCDACDCDDABBCB?A@<@ABB@BBD?@AAB>0BB:<=8>A.>:>>/==;AB@::=@########## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29443750 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDABCCBDDB=B@@BB@B>BBB>B?DDA@?ADB:>D?DD<9;-@############ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.29935780 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCAACCC@CCCCCCCDCDADDDDDBDCBDDBAABBBABB>B;AABAAAAD################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.1999503 16 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ####################B>@>=4BB@BBB;AADB@BDBBA8CCD@C=DCCCDABCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.2979717 16 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #####################@3@A:?@;=D;???A@;BADBB@BB=?B=CDC@D@CC?@CCCCCCCCCCCCCCCCCCCCCBCCCCCBCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.3631589 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCBCCCDBAC@A.=BBBA@?@@BB>?@=@@7?@?A############ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.3971739 16 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ########B:=/5=7:>;4>@=?:7;===2B@BBBBB=BBB5BBBC?@DCCCCCDCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4002088 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@DDCBCABCDCCBACBDB@;BBBBB>?=B@@>@>@<;@############################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4609375 16 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #########A:3>59@?:=@<=>==6BB@?ACAABA@A@BB;BABBCDDBBDC@DCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCD AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5221796 16 CHROMOSOME_I 149 1 100M * 0 0 AATACTAGACCTAGGCGTAAGCCTAAGCCTACGCCTAAGCCTAATCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #############################################################C1CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-16 XS:i:-16 XN:i:0 XM:i:8 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2G0C3A0G4A2C14A12G55 NM:i:8 -SRR065390.5504153 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCDDBDBD>@ADB;=B7A>>=A>BA>>A>@?CAA;ACA6C?@>B<<@<=>?>?;:B?D<9.7@/B74@########### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6311425 16 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #######@9@@::A::;<.?@BB>8A>BDBBBBDDB=DBDBBADABDDACDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6572328 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCC6CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@ACCACCADCBCBDDAAD>BBBAD@@DB4=3===BBB;CC>AA=CAAAA AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6809356 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCACDBCACBDBABBBACCBB;BBBB@;??D@B>AAAAB>@>>?############## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.7213562 16 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ###############BB:>DAABC=ADBBB?A?BBB8?B@>B@DCADDDDDDCCBDBBCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17029406 16 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC @9'8@:6:,B>9==;6?@:BABBABBBBDAABBDBDAADDDBBDDBCCBCDDCACCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.17428924 16 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #A9>AA68=>981==A@>??AA==::@AA0@;B@@B;ABAB=B=CBBAB;CC@AB@CDCCCCCCCCCCCCCCCCC@CCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18015619 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CCCCC@CCCCAACCDB=C@DBB@DBDD6A?=>?>ABBBCBBBABBABDDBDBBBBDDCDCCADCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.20608417 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCABCBBCADBBA>BABBBB>B>>BBBDB@?BA6><=><=D<>B?############################ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.31976147 16 CHROMOSOME_I 149 1 100M * 0 0 AAGCATAAGACTAAGCCTAAGACTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ####################################A==A=A8:>@@@BB?C??CA@@CCC@BBC>AA=?BACCCCCCCCCC@BCCCAACCCACCCCCCC AS:i:-11 XS:i:-11 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:4C4C11C34G43 NM:i:4 -SRR065390.33177643 16 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ########@@@A66A@@@=:B;B@@;BBBB@?DBDA@BBDCAAACCCCDACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.33572049 0 CHROMOSOME_I 149 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ?>?B@8;88?>>B9>B@97>@>>980000.*0000838?8:;56722/-/;734@BA4?############################################# AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:93T0A3C0T0 NM:i:4 -SRR065390.824436 16 CHROMOSOME_I 151 0 9M3I88M * 0 0 AATTAAAACAGATAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG B;?8B?BBBD6:5:>3=BBBCBABBBC8@CC@ABACCAC;?CCCCCCCCCCCCCCCCCACCCCCBCCCCCCCCCCCCCCCBCCCCCCDCCCCC AS:i:-38 XS:i:-38 XN:i:0 XM:i:5 XO:i:1 XG:i:3 YT:Z:UU MD:Z:0G0C0C3G0C89 NM:i:8 -SRR065390.8852076 16 CHROMOSOME_I 151 1 100M * 0 0 GCCTAACCCGAAGCCTGAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #####################################C@B8C;?CCCCCCC?CCCCB?CCCCBC?CCCCCCA=>CCBACCCACCCCCBA AS:i:-11 XS:i:-11 XN:i:0 XM:i:5 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0G3A0A5A38C49 NM:i:5 -SRR065390.24657688 16 CHROMOSOME_I 151 1 100M * 0 0 GCGTAAGGCTACCCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ########################################@4;A?@@+CAAB@=CCC?CDACCCC@?CCCCCCACCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2C4C3A0G87 NM:i:4 -SRR065390.32343734 16 CHROMOSOME_I 151 1 100M * 0 0 GCCTACGCCCACGCCTAAGCCAACGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ####################################?BCB=BDBA@DACCCCC@DCCCC==@?(@############################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:80T19 NM:i:1 -SRR065390.11017273 0 CHROMOSOME_I 152 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACCCTAAGCCTA CCCCDCCCCCCBCCCCCABCCCCCCCCCCCCCCBCCBCBCCCCCCCCACCBC?ACC=:=?########################### AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:90C8A0 NM:i:2 -SRR065390.23405592 16 CHROMOSOME_I 153 0 4M5I91M * 0 0 CGAAAATTTTCGAAAACCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG @??B?B@BAB<:@BBABABB@@CCCCCDCCCD@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-44 XS:i:-44 XN:i:0 XM:i:5 XO:i:1 XG:i:5 YT:Z:UU MD:Z:1T2G1C0T2G84 NM:i:10 -SRR065390.30873804 16 CHROMOSOME_I 153 1 100M * 0 0 CCAACCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #####################?:A@6==97B?DDBABBDB?AB@@<>;B>B?DB?=@@?@: AS:i:-8 XS:i:-8 XN:i:0 XM:i:0 XO:i:1 XG:i:1 YT:Z:UU MD:Z:5^T95 NM:i:1 -SRR065390.19270079 0 CHROMOSOME_I 155 6 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTGAGCCTCAGCCTAAGA CCCCCCCCCCCCCCCCCCCCCCCCC@CCBCCCABDCCDCBADBAAB=BBBBB6B@B>ADDDB>.?################################### AS:i:-8 XS:i:-10 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:79A4A5A8C0 NM:i:4 -SRR065390.30567090 0 CHROMOSOME_I 155 6 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTAAGCCTACGCCTCAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCDDCCDCDDDCADBDDDDBBBBBB;CCACAABA>D?##################################### AS:i:-6 XS:i:-12 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:79A11A4A3 NM:i:3 -SRR065390.7022394 16 CHROMOSOME_I 155 0 100M * 0 0 ACGGCTTCGCCTACGCCTATGCCTCAGCCCAACCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #############################################DCBBBCCCCC=BCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCCCCCC AS:i:-20 XS:i:-20 XN:i:0 XM:i:10 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1A1C2A0A5A5A4A4T2G5G61 NM:i:10 -SRR065390.17996680 16 CHROMOSOME_I 155 1 100M * 0 0 AACCCCAACCCGAATCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ######################################?A0.00/0000.;8<5:C?C>CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-10 XS:i:-10 XN:i:0 XM:i:5 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2G2T2G2T2G85 NM:i:5 -SRR065390.21693823 16 CHROMOSOME_I 155 1 100M * 0 0 ACGCCCAACCCTAAGCCTCAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ##################################@=B0>@<@7?A@CCCCCC@@C@@CC@CCCCCC@C@BCCCBCCCCCCBACCCCCCCB@@??==BB@= AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:1A3T2G9A81 NM:i:4 -SRR065390.27653002 16 CHROMOSOME_I 155 0 100M * 0 0 GAACCAAAACCCAAGCCGAAACCCAAACCTGAGCCCAAGCCCAAGCCCAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ################################################?<8BA??C?ACACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCBC AS:i:-26 XS:i:-26 XN:i:0 XM:i:13 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0A1G2T2G2T5T2G2T2G3A4T5T5T52 NM:i:13 -SRR065390.31159665 16 CHROMOSOME_I 155 0 100M * 0 0 GAACCGCTCTTCCGATCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #####################################BBCA9>5=BCC@@ACBCCC@@CCC@CCCCCCBCB?@B?@CBCCBCCBCBCCBC?;<><>??@? AS:i:-26 XS:i:-26 XN:i:0 XM:i:13 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0A1G2T0A0A0G0C0C0T0A0A0G0C84 NM:i:13 -SRR065390.11329514 0 CHROMOSOME_I 156 1 100M * 0 0 AGCATAAGCATAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCA CCCCCCCCCCCCCCCCCCCCCBA0==?:?BB>=D############### AS:i:-12 XS:i:-12 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:3C5C89C0 NM:i:3 -SRR065390.29072565 16 CHROMOSOME_I 156 1 100M * 0 0 AGCCCAGGCGTAAGCCTACGCCTAAGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC #######################################################C@.B>@CCCD=CCCCCCCCCA@?<>AACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0G10A88 NM:i:2 -SRR065390.31653691 16 CHROMOSOME_I 157 1 100M * 0 0 CCCCAAGCCCAAGCCGAAGCCGAAGCCGAAGCCTAAGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #######################################################??5AACCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-14 XS:i:-14 XN:i:0 XM:i:7 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0G2T5T5T5T5T11T60 NM:i:7 -SRR065390.24940664 0 CHROMOSOME_I 158 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAAGCCAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCACCCBA@DBDBBBA=??><; AS:i:-16 XS:i:-16 XN:i:0 XM:i:8 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2T5T0A4T2G2T5T5T67 NM:i:8 -SRR065390.10545162 0 CHROMOSOME_I 159 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCA CBCCBCCCCCB=??BBBBBBBBBBBBBB:BBBAA@34*2/;?>>>BBBA?882)';8748>B9>B+131@############################## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98A1 NM:i:1 -SRR065390.12800438 0 CHROMOSOME_I 159 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCD@CBBAABDDDBDA*AAA?>>BD@AB+40395=21>*2(22/@@+@<55@## AS:i:-3 XS:i:-3 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:74A25 NM:i:1 -SRR065390.21037219 0 CHROMOSOME_I 159 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCCCDCA@@>B@@@A>@=@?@?A@05/85;0;8@############### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:99A0 NM:i:1 -SRR065390.27810825 0 CHROMOSOME_I 159 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTAAGCCTAAGCCTAAGCCTAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDBCD<>CBDDBDADBCDDDBCCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCACCC AS:i:-20 XS:i:-20 XN:i:0 XM:i:10 XO:i:0 XG:i:0 YT:Z:UU MD:Z:3A16A0A0G0C4G2T1A6G2T56 NM:i:10 -SRR065390.8173376 0 CHROMOSOME_I 160 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAG CCCCCCCCC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBDCCD@BDDDBB=A@@??8BB;D9?DD;BAAAA=AA### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98A1 NM:i:1 -SRR065390.24971098 0 CHROMOSOME_I 160 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAG CCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCBBCCCCCCACDCA@@AAC6BABB=D@>@B>?>@1==377.5055(52049467 AS:i:-3 XS:i:-3 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:97A2 NM:i:1 -SRR065390.29229469 0 CHROMOSOME_I 160 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCGAAGCCTAAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCACCCCCCCBB?CCCABCA@C:=B@BC?=B==@==?@@A################# AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:90T9 NM:i:1 -SRR065390.15931715 0 CHROMOSOME_I 162 1 100M * 0 0 NGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC !++++22222AAA8AAAAAAAAAAAAAAAAAAAAA8:0:8AAAAAAAAAAAAAAA78AA7:89996664:AAA########################### AS:i:-1 XS:i:-1 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0A99 NM:i:1 -SRR065390.16420564 0 CHROMOSOME_I 163 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCCCCCCCCCC@CBC>@AA:A>?CA?@AB=A=@BBA@BADB=BBABCCAAA)A AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23326095 0 CHROMOSOME_I 163 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCACCBBABAB>DBBB=>B@@?B?B>BB6BBD<>4?==@@A@9@=7AB;B;BAD;@DACD=DCDDCC?CCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4460513 16 CHROMOSOME_I 163 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ####################BD@:BBBABABBABDABDDDC=CCCDCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4608863 16 CHROMOSOME_I 163 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT A;A2::::=.@.<@@=A>BDDADCCBCB@CCCCBCCCDCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.10096102 16 CHROMOSOME_I 163 1 100M * 0 0 GCCGAAGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT #########################@3;B@79;99>=BBA?@A;@=>>D::99=4=@*:BB>AB@@@BDDBDDDDCDACACCCCCACCCCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.27063479 16 CHROMOSOME_I 163 1 100M * 0 0 GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT ##########################################@BB@B;ACA@B=CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4604929 0 CHROMOSOME_I 164 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDBDCDDDDBDDDBD@DDA?B>?*:B8@@8=@??A?>B?A## AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:81A18 NM:i:1 -SRR065390.21767995 0 CHROMOSOME_I 164 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAAGCCTAAGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC>D@AA@=?@####################################################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:75A24 NM:i:1 -SRR065390.24370235 0 CHROMOSOME_I 164 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCCA CCCC3CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCCCCCCCCD=A>DBB@;@BBB;=?=6A:=A################################ AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:92T5T1 NM:i:2 -SRR065390.33289921 0 CHROMOSOME_I 164 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTAAGCCTA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCCAACBBCCCC@BCCB>B@@B@B9B?B?:0>==D?:>?############### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:88A11 NM:i:1 -SRR065390.33450079 0 CHROMOSOME_I 164 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCCA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC@CDBCCDDDB@DBDDBBA?B@>@BABB6>=>>94@<==@#################### AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:92T5T1 NM:i:2 -SRR065390.9104074 16 CHROMOSOME_I 164 1 100M * 0 0 CCTAAGCCTAGGCCTAAGCCTAAGGCTAAGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #################################?777?:5@B=B?B?;BDB@ABBA18BBACCCC####################################################### AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:96T1A1 NM:i:2 -SRR065390.6217548 0 CHROMOSOME_I 166 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAGG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCADDCACB?@@?@B@BBD=:=;7ABAAB@:?BD############################## AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:96T1A1 NM:i:2 -SRR065390.22416659 0 CHROMOSOME_I 166 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGACTAAGCCTAAGCACAAGCGTAAGCCTAAGCCTAAG ?A=8?@AA@?CCCCCBBBBB:8:?:78307>@#################################################################### AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:64C12C0T4C16 NM:i:4 -SRR065390.29369023 0 CHROMOSOME_I 166 1 100M * 0 0 TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTCAG CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDBBDDCBBDBDDBDBCABA>BCACC>CAAAAA?A?>:=CA@9;787;8A48;8@######################## AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:86G1C11 NM:i:2 -SRR065390.19225398 0 CHROMOSOME_I 167 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGCCTAAGCCCAAACCCAAGC ?<:<<>AA@>CCCCCB@B@=58;;?<>@BA>B@BB<@B9BBBBBBA>@############################################## AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:79A9T2G2T4 NM:i:4 -SRR065390.21123303 0 CHROMOSOME_I 167 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGACTCAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC######################################################## AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:72A2C2A21 NM:i:3 -SRR065390.29022479 0 CHROMOSOME_I 167 0 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACCCTAAGCCTAATCCTATGCATAAACCTAAACAGAATCAAAAGAAAAATCCAATCT CCCCCCCCCACCCCCBCCCC?CCCCCCCD;?D?D################################ AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:94C0T0A3 NM:i:3 -SRR065390.23298396 16 CHROMOSOME_I 167 1 100M * 0 0 AAGCCTCGGCCTACGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC #####################A@><>B==BC@CCBB?BA'@>>;>>DADDDBDBADB?B6@7=;;7DBD?B<8=AA:4-9<@@1:@A################################ AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:98C1 NM:i:1 -SRR065390.23263331 0 CHROMOSOME_I 168 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCCCDCCDCDDDBBDA=B@BB@B>B>AB?@?BB>;;ACC>CAA@;9<5@############## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.1428659 16 CHROMOSOME_I 168 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC #######?DB@;>BBB::>:D=>D?BDDBBBBCCAC@DCCBDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9270489 16 CHROMOSOME_I 168 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC ##########?4=>@BAA>BB>AA@====3BBBBB;B?@C==CCC?@CCC?CCC?ACCCCCBCCCBCCCCBCCCCCCCCCCCCCC=BCCCCCACCCDCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.9538669 16 CHROMOSOME_I 168 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC ##########@=?6??@B;BA@@@?.@?@@;D>A;DB@DBBBD>@DDDBADCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.15525407 16 CHROMOSOME_I 168 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC ####################@37:0BC@@C@ACCAB?@CCACCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18387934 16 CHROMOSOME_I 168 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC ##########################@@A@4BDDBB@ACABB@8BCACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.27778447 16 CHROMOSOME_I 168 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC ###############@@B=;>89<>/8?<8@>=ABDCCDCC@CCACB@@C@9ACCCC;CCCC@CCAAB@@CCCCCBCCCCCCCBCCCCCCCCCCCCCCCC AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.4767844 0 CHROMOSOME_I 170 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTAAGCCTAACCCCA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCCCCCCDCC=CCBA=BCCACCBCC<@@@A@>A?D<5/772AA####################### AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:80T14G2T1 NM:i:3 -SRR065390.6036148 0 CHROMOSOME_I 170 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCTCAGACCA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCCBCCC=C########################################## AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:86T6A2C1T1 NM:i:4 -SRR065390.7523697 0 CHROMOSOME_I 170 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTATACCTATGCATA 8773399<;8BBB>BAA<A################################### AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:84C3A4A5A0 NM:i:4 -SRR065390.21777229 0 CHROMOSOME_I 170 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAAGCCCAAGACCAAGCCAAGACCCC CCCCCCCCCCCCCCCCCCCCCCCCCCC@CCCCCCCCCCCCCCCCCBDABAA@48@############################################# AS:i:-18 XS:i:-18 XN:i:0 XM:i:9 XO:i:0 XG:i:0 YT:Z:UU MD:Z:74T5T3C1T5T1A0G2T0A0 NM:i:9 -SRR065390.22082412 0 CHROMOSOME_I 170 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTTGGCCGCAGCCTCAGCCTGAACAGA CCCCACACCCCCCCC??:??@CCCC@9A>9?AA@AC>@CA@B-73>8=53@=:=A?><=>49778?################ AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:88A5A5 NM:i:2 -SRR065390.32243033 0 CHROMOSOME_I 170 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTACGACTA CCCCCCCCCCCACC@CCACCCCCCCCCCCCCCCCC@CADCCBBD@BB>=?A@9C@?C>A88?>8A?:@CCCCCCCCC:?>;:CCC?BCCCCACCCCCCCCCC AS:i:-39 XS:i:-39 XN:i:0 XM:i:18 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0C0T0A0A2C0T2G1C0T0A0A0G0C1T0A1G1C64C10 NM:i:18 -SRR065390.28296401 16 CHROMOSOME_I 171 1 100M * 0 0 CTAAGCCTAAGCCTAAGGCTAAGCCTAAACCCACGCCTAGGCCGAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##################################################BAADDDBBDDCCDCCCCCACDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-12 XS:i:-12 XN:i:0 XM:i:6 XO:i:0 XG:i:0 YT:Z:UU MD:Z:17C10G2T1A5A3T56 NM:i:6 -SRR065390.1242089 0 CHROMOSOME_I 173 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC A=@@?=?=8A3BB>>B@B>BAB@B@B77//8<;>5:@@@B6ABA@BA<@BB5):5;*83736?;;;@@=;6B>??##################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.3872193 0 CHROMOSOME_I 173 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCBCCCC@DCACD=ABCB@BCDDA@BA=BBB@C??@;:0A>?>B>?)?#################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.14566073 0 CHROMOSOME_I 173 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCBCCCCCCCCCCCCCCCCCCCCCCCCACCCCCCCCCCAB=?CCCA6?AACABCCAC=1B@A@;B<@A@@;>?@>8BB?B#################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18391952 0 CHROMOSOME_I 173 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCDCCCAADCCB?CBABD=A>?BB5:??:B;>?@AA?>3?;@(8>=>>/(5500;+@@6 AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.18719419 0 CHROMOSOME_I 173 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCAC@@C@@B@DBBDBB################################ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23668023 0 CHROMOSOME_I 173 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCC@@ABDB@@BBB>DBABB@D@BDBAABAB>B>AA@??9:8>>A:255@###### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.23826980 0 CHROMOSOME_I 173 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCDCDBCDDBDDDABBBBDDBBBBBBB>D?#################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.28024258 0 CHROMOSOME_I 173 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCCBACDDBC>DDBDB>BBBBB;?@BBB3@???=0<=>@@:@################ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.30039772 0 CHROMOSOME_I 173 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCDACDBBDDDDDBBBDBBD>BBAADAABAAC??B??######################### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.5345749 16 CHROMOSOME_I 173 1 100M * 0 0 GACCCAGACCCCGCGCCTAAGCCCAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ##########################################@BA=>AAA@;AAAA@AA9AAAA@BAA@:=@@@4A=?A@AAAAA:B@@BBBBB@>>>>> AS:i:-18 XS:i:-18 XN:i:0 XM:i:9 XO:i:0 XG:i:0 YT:Z:UU MD:Z:0A1G2T0A1G2T0A0A9T76 NM:i:9 -SRR065390.16932911 16 CHROMOSOME_I 173 1 100M * 0 0 AACCCTAAACCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC ###############B?BAA;;9>0A1BAAA@=CA*@CCCCACCCC@@?CAAB>AC=C?CCCCBCCBBCBCCCABCCBCA@CCCCCCBCCCCC?BCCCCC AS:i:-6 XS:i:-6 XN:i:0 XM:i:3 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2G5G5G85 NM:i:3 -SRR065390.17106354 0 CHROMOSOME_I 173 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCACCACC?CCADCCAC@BB@CBB@C?@A@@A>=B?BAABBABB6A>BBB:BBA=?DD??;D/<71; AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.22716808 0 CHROMOSOME_I 174 1 100M * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCGAAGCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCABBBBB?################################### AS:i:-2 XS:i:-2 XN:i:0 XM:i:1 XO:i:0 XG:i:0 YT:Z:UU MD:Z:94T5 NM:i:1 -SRR065390.12986460 0 CHROMOSOME_I 176 1 100M * 0 0 CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCATAATCGTAAGACTAAGAGCAAGCCTCAGCATA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCA?CCA############################### AS:i:-4 XS:i:-4 XN:i:0 XM:i:2 XO:i:0 XG:i:0 YT:Z:UU MD:Z:92T2G4 NM:i:2 -SRR065390.14729559 16 CHROMOSOME_I 176 1 100M * 0 0 CCTACGCCCAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA #########################?(4<=B@;BBBBCB?>BCCA?DCCACCCCCC@C;BBB??B<;9=C@BCAACBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AS:i:-8 XS:i:-8 XN:i:0 XM:i:4 XO:i:0 XG:i:0 YT:Z:UU MD:Z:2T0A0A6G88 NM:i:4 -SRR065390.26023345 0 CHROMOSOME_I 177 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCGAA CCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCA?CDADABDBDDBDDBAB>>BBBB@;>@BBB?A>CBBB<>>B@@4@?>>?0ABD@@###### AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6149508 0 CHROMOSOME_I 179 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCDDCCBD=CCDB@@DABAB=ABB??>>@BB=BCBAB>>D;A?><>AA>?A==+@A AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.6618950 0 CHROMOSOME_I 179 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCCDCCCCCDCCBCAACBBCBB@DADABBDAB?CBB@B;?BB=B>>>?:? AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.7246333 0 CHROMOSOME_I 179 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCACCCDCCCCCCCCCCCDCCBCD@CBBDCADADADBDABBDBDABDBCBBA>BAB>>AC9A################## AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 -SRR065390.8266146 0 CHROMOSOME_I 179 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACCCTCAGCCGAGGCCTACGC CDCCCCCCCCCCCCCCCCCBCCCCCCDCCCCCCACDCCCCCDACBDCABCB@A=ABBB@BBD@DB?B################################# AS:i:-10 XS:i:-10 XN:i:0 XM:i:5 XO:i:0 XG:i:0 YT:Z:UU MD:Z:80G3A4T1A5A2 NM:i:5 -SRR065390.8986893 0 CHROMOSOME_I 179 1 100M * 0 0 AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC CCCCCCCCCCCCCCCCCCCCCCCCCCCC@CCCCCCCCCCA@CCCCD=CCCDAABBDB>BDDBDB;BB@@B=@BDB:.A>>BB:@################ AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 YT:Z:UU MD:Z:100 NM:i:0 diff --git a/htslib/test/ce#2.sam b/htslib/test/ce#2.sam deleted file mode 100644 index 8a4eead..0000000 --- a/htslib/test/ce#2.sam +++ /dev/null @@ -1,3 +0,0 @@ -@SQ SN:CHROMOSOME_I LN:1009800 -SRR065390.14978392 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU -SRR065390.921023 16 CHROMOSOME_I 3 12 100M * 0 0 CTAAGCCTAAATCTAAGCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############################################???88:;98768700000<>:BBA?BBAB?BBBBBBBB>B>BB::;?:00000 XG:i:0 XM:i:3 XN:i:0 XO:i:0 AS:i:-6 XS:i:-13 YT:Z:UU diff --git a/htslib/test/ce#5.sam b/htslib/test/ce#5.sam deleted file mode 100644 index 0535065..0000000 --- a/htslib/test/ce#5.sam +++ /dev/null @@ -1,11 +0,0 @@ -@SQ SN:CHROMOSOME_I LN:1009800 -@SQ SN:CHROMOSOME_II LN:5000 -@SQ SN:CHROMOSOME_III LN:5000 -@SQ SN:CHROMOSOME_IV LN:5000 -@SQ SN:CHROMOSOME_V LN:5000 -I 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU -II.14978392 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU -III 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU -IV 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU -V 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU -VI 2048 CHROMOSOME_I 2 1 27M100000D73M * 0 0 ACTAAGCCTAAGCCTAAGCCTAAGCCAATTATCGATTTCTGAAAAAATTATCGAATTTTCTAGAAATTTTGCAAATTTTTTCATAAAATTATCGATTTTA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC diff --git a/htslib/test/ce#5b.sam b/htslib/test/ce#5b.sam deleted file mode 100644 index f778394..0000000 --- a/htslib/test/ce#5b.sam +++ /dev/null @@ -1,12 +0,0 @@ -@SQ SN:CHROMOSOME_I LN:1009800 -@SQ SN:CHROMOSOME_II LN:5000 -@SQ SN:CHROMOSOME_III LN:5000 -@SQ SN:CHROMOSOME_IV LN:5000 -@SQ SN:CHROMOSOME_V LN:5000 -I 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU -II.14978392 16 CHROMOSOME_II 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU -III 16 CHROMOSOME_III 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU -IV 16 CHROMOSOME_IV 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU -V 16 CHROMOSOME_V 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 XS:i:-18 AS:i:-18 YT:Z:UU -VI 0 CHROMOSOME_V 10 1 7S20M1D23M10I30M10S * 0 0 AGCCTAAGCCTAAGCCTAAGCCTAAGCTAAGCCTAAGCCTAAGCCTAAGCTTTTTTTTTTCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA * -VI 256 CHROMOSOME_V 10 1 7S20M1D23M10I30M10S * 0 0 * * diff --git a/htslib/test/ce#5b_java.cram b/htslib/test/ce#5b_java.cram deleted file mode 100644 index 97e58eb2c714896e255f3d8754cc49217e5a3dd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6784 zcmeI0dvFuS9mjX?RLyqhiQ`n4I~|sW|ZH` zGPcKr{?P=A)79PHK7RY#UG3gS+OIF3xkg zZPG@`WLc*sEgOgwo7B*#-`zM89UlR8b*z+^Vd z()z9qor+mXB+OmX14)y4oypu{GKWlEO0p|yiA!CQMOLa+$z%>pE-P#XlQ}r0d=(vC zHSI#*EY#3vei(E+K>y|#?=g&RoBuzj<2SJNdH?5kQ8X|LMsWj9Z$DBMeF|Ze?n(D7 z)r17>ZN{Mx7MmK%8p_JT{!-)>L>5|#KH7eT4@T4Mhv*0S(GxAk8o1~z#?ws` z(!zvva6(!fPs40UF(!1@qw%3%z41fDptLrv%`cIz2w{dL8fuZB{R~GUGh?85k5m20 z`z`x-b=O*JS`Ue@^WbR`=0k5k6bu1 z^w03(=8^VP(TM3U8sqm%&h%V;34bxt`g7?0@7#i+t2NRPWuC ze%@`{bY;Yqd!#Ik3_RMofE?<3S`>zl)` z5rUI(+y=Qg+=%JVRc6ov_=!Udv!k;-^(ZQ>*pWl?OZ#&bn-MA}CV?KUi>_m zkv5&dgek%0+jO*J2$u*tI*U1rA-VePp)4WnJOVZXgtN31A}5}g~1t^cSF>l({!Wr8H6;n@H~wW+lZJYd$10= zBPAn<{Pl&CCrEyG*$7?&?Fn@P^Jgja)TMjVy^~lWQ&?Pw6`xIEMX`qNYmJ7`-F-u8VT6}|3N4oX*R%kz z-FRC33kMe!Xpvu}DYUrv_4dPtmjlKvwt>e(d-o=$J1t&4w)hjEMM=r2e~f(4wQ1z= zD{EI?jiP7y?Z5qB;YYb~0zWRl&D#gx+uQz3k1nAPA|FpDfXvar8HZ6=l6nhHGp`K)-Mp6)WPf`9q|?m9iTT2H zPBZD*^faSq(QRqK5km!&g8TtTnj*r&i3Scd2I3c^Yd{Ra%vT_RXc-g-G384{5F>~! z7)AnNvJ9eQm$j~j5ilTy7zjOa5eC9lK?K|uL9;KBM06m-80ZW^76D642S9}pkWX$r zUaj7$_p#HV-s3GkAF@Y&|) zc2+TI)17+sbi*9e?f5@l2hP0_8;l-kT{<_>y0l~~%^a`Vy&_*Un!R{%eM*N$ufc9) zVhY!is@(xJRxw(AGSoe z;Vn<1dLJkc0!mwi?I%#!+cW4(eWD(Tp?FXuMPmn$I(fhgcvA3Vqwq2$(F_;#rW>(%I+boU5u2$T7_96l(2WU?:@~{}%7C%0A1234567890-=[]'%3B#,./\ -* 768 CHROMOSOME_I 101 255 1M * 0 0 * * CT:Z:+;STOP diff --git a/htslib/test/ce#tag_padded.sam b/htslib/test/ce#tag_padded.sam deleted file mode 100644 index 47a57c2..0000000 --- a/htslib/test/ce#tag_padded.sam +++ /dev/null @@ -1,11 +0,0 @@ -@HD VN:1.4 SO:coordinate -@RG ID:UNKNOWN SM:unknown LB:UNKNOWN -@SQ SN:CHROMOSOME_I LN:1009800 -I 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC PT:Z:27;29;+;STOP;Note=tag1 -II.14978392 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC PT:Z:27;27;+;PRIM;Note=tag2|29;29;+;OLIG;Note=tag3 -III 0 CHROMOSOME_I 2 1 101M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTCAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###########################"##@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC PT:Z:1;1;+;COMM|101;101;+;COMM -IV 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -V 0 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -* 768 CHROMOSOME_I 2 255 1M * 0 0 * * CT:Z:+;STOP -* 768 CHROMOSOME_I 28 255 3M * 0 0 * * CT:Z:+;COMM;Note=consensus%0Amulti%09line%0Atag%0A!"#$%25^&*()_+<>?:@~{}%7C%0A1234567890-=[]'%3B#,./\ -* 768 CHROMOSOME_I 102 255 1M * 0 0 * * CT:Z:+;STOP diff --git a/htslib/test/ce#unmap.sam b/htslib/test/ce#unmap.sam deleted file mode 100644 index fec218c..0000000 --- a/htslib/test/ce#unmap.sam +++ /dev/null @@ -1,6 +0,0 @@ -I 4 * 0 1 * * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -II 4 * 0 1 * * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -III 4 * 0 1 * * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -IV 4 * 0 1 * * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -V 4 * 0 1 * * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -VI 4 * 0 1 * * 0 0 ACTAAGCCTAAGCCTAAGCCTAAGCCAATTATCGATTTCTGAAAAAATTATCGAATTTTCTAGAAATTTTGCAAATTTTTTCATAAAATTATCGATTTTA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC diff --git a/htslib/test/ce#unmap1.sam b/htslib/test/ce#unmap1.sam deleted file mode 100644 index e1e464e..0000000 --- a/htslib/test/ce#unmap1.sam +++ /dev/null @@ -1,20 +0,0 @@ -@HD VN:1.0 SO:unsorted -@SQ SN:CHROMOSOME_I LN:1009800 -@SQ SN:CHROMOSOME_II LN:5000 -@SQ SN:CHROMOSOME_III LN:5000 -@SQ SN:CHROMOSOME_IV LN:5000 -@SQ SN:CHROMOSOME_V LN:5000 -@SQ SN:CHROMOSOME_X LN:5000 -@SQ SN:CHROMOSOME_MtDNA LN:5000 -@RG ID:UNKNOWN SM:UNKNOWN -@PG ID:bowtie2 PN:bowtie2 VN:2.0.0-beta5 -SRR065390.33808391 4 * 0 0 * * 0 0 GATCGCACTGAAAATCTGGATATAGAACGTGTGCAAATGATTGTCTCTACCGTTCCGTAAAAATTATTGCTAATTAGCAATGATTTTAAGCTAATTAGTT CCCCCCCCCCCCCCCCCCCACCCCCACCCCCCCCCCCCB;CCCAACCCCCCCCCCCCCD=B9BCABCBCB>BBBC@B<<@BA;BCC?B>A<<@(?:4==4 YT:Z:UU -SRR065390.33808433 4 * 0 0 * * 0 0 NCATCTTCTGCAGGCGCGGTCGGCACCGTGTATTCGTTACGTTCCACGCCGATGATATTAGACACCAGCACGGTGTGATGCGCAGTCACCGCACGACCCG !################################################################################################### YT:Z:UU -SRR065390.33808462 4 * 0 0 * * 0 0 NGTTTGAGCGCAATGACTTGACGATGACCGGTGATTACAGTAACCAGCATATTGTGCCGATGAAGCAGGCTGTCGCTCCGCAATTTGAAGAGGGACACGA !################################################################################################### YT:Z:UU -SRR065390.33808468 4 * 0 0 * * 0 0 NGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTTTATTTTACTCTCTGTGGCTTTATCGATTATTTTTTTCTCCTTGGCTTTCCTCTTTATTTTT !))))))''&585555AAAAA6AA############################################################################ YT:Z:UU -SRR065390.33808471 4 * 0 0 * * 0 0 NCGTCTTCTGCGGTTTCTATGATAGAGCAATTCTGTGGCGGATATTAAGATAACGGGTATCTGTTCTTTAATGATGCCGCAAAAAATGGAAAGTTAAGAA !################################################################################################### YT:Z:UU -SRR065390.33808489 4 * 0 0 * * 0 0 NGGAAATTCTGCGGTATCGAGAGATATTTGCCTTTAATTACCCCATAGCCGATTAACATCCCGGCACTATTAATCATTTCAATATTATCAATCACAAAGT !################################################################################################### YT:Z:UU -SRR065390.33808504 4 * 0 0 * * 0 0 NTGGAACACCATGCCCACTTTCGCACGCAGCAGGGCGATATCCTGAGAGTTGGTCAGGATGTTGTCGCCATCAAGCAGAATTTCACCTTCCGCACGCTGC !################################################################################################### YT:Z:UU -SRR065390.33808511 4 * 0 0 * * 0 0 NCAGAAATATATTGAACTTTTGAAACATGTCCCAACTTTTTTTTTTTTTAGAACACGTTGGCTGGTTTTTCAAGTTTTGAATACTTTTTAGGTTTTTTTG !***()(+++AAAAAAAAAA:78:8318::AAAAAAAAAAAA########################################################## YT:Z:UU -SRR065390.33808521 4 * 0 0 * * 0 0 NTGTCAATACATTGTAAGGATTTCCCATTATGTCAATACATAGATCGGAAGAGCGGTTCAGCAGGAATGCCGAGACCGATTTCGTATGTCGTGTTTCTTT !################################################################################################### YT:Z:UU -SRR065390.33808523 4 * 0 0 * * 0 0 NTACTTCTTACAAGATTTTTATCGCTACTTGAAAAAAATTCATCAACATAATCGCCATGACTATCTGCACCGTGAGTATGATAAGCAGCAACTCTATCTG !***+--,')AAAA778577A72AA50888AAAAAAA72A88858AAAA77AAAAAA7AAAAAAAAA8AA############################## YT:Z:UU diff --git a/htslib/test/ce#unmap2.sam b/htslib/test/ce#unmap2.sam deleted file mode 100644 index d002a34..0000000 --- a/htslib/test/ce#unmap2.sam +++ /dev/null @@ -1,29 +0,0 @@ -@HD VN:1.0 SO:unsorted -@SQ SN:CHROMOSOME_I LN:1009800 -@SQ SN:CHROMOSOME_II LN:5000 -@SQ SN:CHROMOSOME_III LN:5000 -@SQ SN:CHROMOSOME_IV LN:5000 -@SQ SN:CHROMOSOME_V LN:5000 -@SQ SN:CHROMOSOME_X LN:5000 -@SQ SN:CHROMOSOME_MtDNA LN:5000 -@RG ID:UNKNOWN SM:UNKNOWN -@PG ID:bowtie2 PN:bowtie2 VN:2.0.0-beta5 -SRR065390.14978392 16 CHROMOSOME_I 2 1 27M1D73M * 0 0 CCTAGCCCTAACCCTAACCCTAACCCTAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA #############################@B?8B?BA@@DDBCDDCBC@CDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:1 XM:i:5 XN:i:0 XO:i:1 AS:i:-18 XS:i:-18 YT:Z:UU -SRR065390.921023 16 CHROMOSOME_I 3 12 100M * 0 0 CTAAGCCTAAATCTAAGCCTAACCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############################################???88:;98768700000<>:BBA?BBAB?BBBBBBBB>B>BB::;?:00000 XG:i:0 XM:i:3 XN:i:0 XO:i:0 AS:i:-6 XS:i:-13 YT:Z:UU -SRR065390.1871511 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA 0:BB@>B<=B@???@=8@B>BB@CA@DACDCBBCCCA@CCCCACCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:0 XM:i:0 XN:i:0 XO:i:0 AS:i:0 XS:i:0 YT:Z:UU -SRR065390.3743423 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ##################?6@:7<=@3=@ABAAB>BDBBABADABDDDBDDBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:0 XM:i:0 XN:i:0 XO:i:0 AS:i:0 XS:i:0 YT:Z:UU -SRR065390.4251890 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###########@BB=BCBBC?B>B;>B@@ADBBB@DBBBBDCCBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:0 XM:i:0 XN:i:0 XO:i:0 AS:i:0 XS:i:0 YT:Z:UU -SRR065390.5238868 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA @,=@@D8D;?BBB>;?BBB==BB@D;>D>BBB>BBDDBA@@BCCB@=BACBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XG:i:0 XM:i:0 XN:i:0 XO:i:0 AS:i:0 XS:i:0 YT:Z:UU -SRR065390.8289592 16 CHROMOSOME_I 3 1 100M * 0 0 CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA ###############################A?@C9@@BC=AABDD@A@DC@CB=@BA?6@CCAAC@+CCCCCCCCCCCCCCC@CCCCCCCCCCCCCCCC XG:i:0 XM:i:0 XN:i:0 XO:i:0 AS:i:0 XS:i:0 YT:Z:UU -SRR065390.33808391 4 * 0 0 * * 0 0 GATCGCACTGAAAATCTGGATATAGAACGTGTGCAAATGATTGTCTCTACCGTTCCGTAAAAATTATTGCTAATTAGCAATGATTTTAAGCTAATTAGTT CCCCCCCCCCCCCCCCCCCACCCCCACCCCCCCCCCCCB;CCCAACCCCCCCCCCCCCD=B9BCABCBCB>BBBC@B<<@BA;BCC?B>A<<@(?:4==4 YT:Z:UU -SRR065390.33808433 4 * 0 0 * * 0 0 NCATCTTCTGCAGGCGCGGTCGGCACCGTGTATTCGTTACGTTCCACGCCGATGATATTAGACACCAGCACGGTGTGATGCGCAGTCACCGCACGACCCG !################################################################################################### YT:Z:UU -SRR065390.33808462 4 * 0 0 * * 0 0 NGTTTGAGCGCAATGACTTGACGATGACCGGTGATTACAGTAACCAGCATATTGTGCCGATGAAGCAGGCTGTCGCTCCGCAATTTGAAGAGGGACACGA !################################################################################################### YT:Z:UU -SRR065390.33808468 4 * 0 0 * * 0 0 NGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTTTATTTTACTCTCTGTGGCTTTATCGATTATTTTTTTCTCCTTGGCTTTCCTCTTTATTTTT !))))))''&585555AAAAA6AA############################################################################ YT:Z:UU -SRR065390.33808471 4 * 0 0 * * 0 0 NCGTCTTCTGCGGTTTCTATGATAGAGCAATTCTGTGGCGGATATTAAGATAACGGGTATCTGTTCTTTAATGATGCCGCAAAAAATGGAAAGTTAAGAA !################################################################################################### YT:Z:UU -SRR065390.33808489 4 * 0 0 * * 0 0 NGGAAATTCTGCGGTATCGAGAGATATTTGCCTTTAATTACCCCATAGCCGATTAACATCCCGGCACTATTAATCATTTCAATATTATCAATCACAAAGT !################################################################################################### YT:Z:UU -SRR065390.33808504 4 * 0 0 * * 0 0 NTGGAACACCATGCCCACTTTCGCACGCAGCAGGGCGATATCCTGAGAGTTGGTCAGGATGTTGTCGCCATCAAGCAGAATTTCACCTTCCGCACGCTGC !################################################################################################### YT:Z:UU -SRR065390.33808511 4 * 0 0 * * 0 0 NCAGAAATATATTGAACTTTTGAAACATGTCCCAACTTTTTTTTTTTTTAGAACACGTTGGCTGGTTTTTCAAGTTTTGAATACTTTTTAGGTTTTTTTG !***()(+++AAAAAAAAAA:78:8318::AAAAAAAAAAAA########################################################## YT:Z:UU -SRR065390.33808521 4 * 0 0 * * 0 0 NTGTCAATACATTGTAAGGATTTCCCATTATGTCAATACATAGATCGGAAGAGCGGTTCAGCAGGAATGCCGAGACCGATTTCGTATGTCGTGTTTCTTT !################################################################################################### YT:Z:UU diff --git a/htslib/test/ce.fa b/htslib/test/ce.fa deleted file mode 100644 index ac19897..0000000 --- a/htslib/test/ce.fa +++ /dev/null @@ -1,20803 +0,0 @@ ->CHROMOSOME_I -GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC -CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT -AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA -GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC -CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT -AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA -GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC -CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT -AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAAAAATTGAGATAAGAAAA -CATTTTACTTTTTCAAAATTGTTTTCATGCTAAATTCAAAACGTTTTTTT -TTTAGTGAAGCTTCTAGATATTTGGCGGGTACCTCTAATTTTGCCTGCCT -GCCAACCTATATGCTCCTGTGTTTAGGCCTAATACTAAGCCTAAGCCTAA -GCCTAATACTAAGCCTAAGCCTAAGACTAAGCCTAATACTAAGCCTAAGC -CTAAGACTAAGCCTAAGACTAAGCCTAAGACTAAGCCTAATACTAAGCCT -AAGCCTAAGACTAAGCCTAAGCCTAATACTAAGCCTAAGCCTAAGACTAA -GCCTAATACTAAGCCTAAGCCTAAGACTAAGCCTAAGACTAAGCCTAAGA -CTAAGCCTAATACTAAGCCTAAGCCTAAGACTAAGCCTAAGCCTAAAAGA -ATATGGTAGCTACAGAAACGGTAGTACACTCTTCTGAAAATACAAAAAAT -TTGCAATTTTTATAGCTAGGGCACTTTTTGTCTGCCCAAATATAGGCAAC -CAAAAATAATTGCCAAGTTTTTAATGATTTGTTGCATATTGAAAAAAACA -TTTTTCGGGTTTTTTGAAATGAATATCGTAGCTACAGAAACGGTTGTGCA -CTCATCTGAAAGTTTGTTTTTCTTGTTTTCTTGCACTTTGTGCAGAATTC -TTGATTCTTGATTCTTGCAGAAATTTGCAAGAAAATTCGCAAGAAATTTG -TATTAAAAACTGTTCAAAATTTTTGGAAATTAGTTTAAAAATCTCACATT -TTTTTTAGAAAAATTATTTTTAAGAATTTTTCATTTTAGGAATATTGTTA -TTTCAGAAAATAGCTAAATGTGATTTCTGTAATTTTGCCTGCCAAATTCG -TGAAATGCAATAAAAATCTAATATCCCTCATCAGTGCGATTTCCGAATCA -GTATATTTTTACGTAATAGCTTCTTTGACATCAATAAGTATTTGCCTATA -TGACTTTAGACTTGAAATTGGCTATTAATGCCAATTTCATGATATCTAGC -CACTTTAGTATAATTGTTTTTAGTTTTTGGCAAAACTATTGTCTAAACAG -ATATTCGTGTTTTCAAGAAATTTTTCATGGTTTTTCTTGGTCTTTTCTTG -GTATTTTTTTGACAAAAATTTTTGTTTCTTGATTCTTGCAAAAATTTTTC -CGTTTGACGGCCTTGATGTGCACTACCTTCGCTTAAATACTACATTTTCT -GAAAATGTTATAATAGTGTTCATTGTTTCATACAAATACTTATTTAATAG -TATTTCTGGTTATATAATTTGTATAAAAAGTGGTTGACATAACAAGGCTG -ACGAAACTTTGTGATGGCTGAAAATATTTTCCTAGCTTTATTGATTTTTA -TTTATACGTGTTTGAATAACTTGGCCAAATCGCCGAGAAGGAATAGAATA -CTGGACGACATTGTACATATTTTCCAAAAAATCAGAAAGTAGATGACGGG -ACCAATTCTTTCTGTCAGGTTTTACAACCGCCCAGTGCGTCTACGTCACA -TGTTGTATAAATGGTTGTAAACAATATGCGGAAACAATCAAATGCATTCC -CATAAGGCATAATATAGAGGCTACAGGCAATGAGTATCGCTCTTTGCTTT -GTTTAAAGGGGGAGTAGAGTTTGTGGGGAAATATATGTTTCTGACTCTAA -TTTTGCCCCTGATACCGAATATCGATGTGAAAAAATTTAAAAAAATTTCC -CTGATTTTATATTAATTTTTAAAATCCGAAAATCCATTGGATGCCTATAT -GTGAGTTTTTAAACGCAAAATTTTCCCGGCAGAGACGCCCCGCCCACGAA -ACCGTGCCGCACGTGTGGGTTTACGAGCTGAATATTTTCCTTCTATTTTT -ATTTGATTTTATACCGATTTTCGTCGATTTTTCTCATTTTTTCTCTTTTT -TTTGGTGTTTTTTATTGAAAATTTTGTGATTTTCGTAAATTTATTCCTAT -TTATTAATAAAAACAAAAACAATTCCATTAAATATCCCATTTTCAGCGCA -AAATCGACTGGAGACTAGGAAAATCGTCTGGAGATAGAACGGATCAACAA -GATTATTATTATATCATTAATAATATTTATCAATTTTCTTCTGAGAGTCT -CATTGAGACTCTTATTTACGCCAAGAAATAAATTTAACATTAAAATTGTT -CATTTTTGAAAAAAAAATAATTAAAAAAACACATTTTTTGGAAAAAAAAA -TAAATAAAAAAAATTGTCCTCGAGGATCCTCCGGAGCGCGTCGAATCAAT -GTTTCCGGAACTCTGAAAATTAAATGTTTGTATGATTGTAGAACCCTTTC -GCTATTGAGATTTGATAACTTTTAAGTAATAAAATTTTCGCAGTAAGACA -TTAAAACATTTCACAATTAAGCTGGTTCTGAACTGTGTGAAGTATATTGA -AAAAAACTAACTGATACAAAAATATAATTTTATGATAGTTTTCTGGATGT -CCCAATATAAACGATGTCAATTCTGCGACATGCTACAGTCATCCACGAAA -GTAACCCGAATACCGACAAAAGAAGAGGAACGCCAACTTTGGATAGACGC -TCTAGGGGCTGATTTTGGTCGGAAAATAGTCGGGAAAAAATAGAGGACAT -TACAGATGAGGATGAGGATGAAGATAGAAATTTGCCGACAACTTCGTCAT -GCCGCTGATTTTTTTGATGTTCTACGCTTAAATTTTCAGCGAACGAACTA -TTTTTTATATTTTGATTGTTTTTAAATAATATTTGCCATAAGAAATTCTC -ACTTTTCCAGGAAACGTCGTTTCGCCGCGATTTTCCTCGTCTCCAGTCGA -TTTTGCGCTGAAAATGGGATATTTAATGGAATTGTTTTTGTTTTTATTAA -TAAATAGGAATAAATTTACGAAAATCACAAAATTTTCAATAAAAAACACC -AAAAAAAAAGAGAAAAAATGAGAAAAATCGACGAAAATCGGTATAAAATC -AAATAAAAATAGAAGGAAAATATTCAGCTCGTAAACCCGCAAGTGCGGCA -CGGTTTCGTGGGCGGGGCGTCTCTGGCGGGAAAATTTTGCGTTTGAAAAC -TCACATATAGGCATCCAATGGATTTTCGGATTTTCAAAATTAATATAAAA -TCAGGGAAATTTTTTTAAATTTTGTCACATCGATATTCGGTATCAGGGGC -AAAATTAGAGTCAGAAACATATATTTCCCCACAAACTCTACTCCCCCTTT -AACAACCACCCGAGGATATATTCGACAAACGATCTATCTACTAGGAATAA -CTCGATTATTGACATATTATAGACTTCTTTTAGTATTTGTAAAATAGAGG -ATCAGACCCAAAATTCAGCCCGCGAAGGCATGACGTCAGCGCGAGGCAGT -AGTTTCCAGAAGAACTCTGTCGTCTACCTTAATGCCTCAAATGCGAACCC -GCTTCGGCCATCCTTCTCGCTCAGAGAATGGATTAGAGTTCTCATCAACT -CCTCTGTCTAATTTTCAACTGCGGCGGTTGGCGACCGGTATTACCGCGGC -GACCGACACCTCCCGGGTTCCGTCGATCGCTGTCTGTTGTGTGCGCCGCG -ACTCCGCCCACCGGTGGTAACTTTTTGTGGGGGAATCTTTGTTTTTGGTC -ATTTTTCAGCGCTTTTCAGCGATTATTGACCAATTTTGAATAAAATTTTC -AACAGAATATCATCTAAAATATTGCTTAACATTTATTTAACAGAAATAAC -GTGAGCACGCATGTAAAACATGAAATTTTCGGGAAAATTGCAATTAAACG -AATAAAAATCGATATTTAAATCAATTATTGGTGAATCCGGTGTGTTGAGG -CTTCAATGCATACATTTTTACTGGATAAATCTCCTTTGGGAATCCGGTTT -GCAGTGCTTTCGAGACCATGTCCAGTTGAGAATCGGCGAACGCTTTAAGA -AGCTCGGGCTGAATAATGAATTGTTTTAAAAAATGTTTAGTAAAAAATTG -TTTTCGTGCAAATTGTCTTCGATATTATCCAAACGTGACGTTTTGCGATT -TTCGCGCTAAAATTACAGTAAGTGGGGTCTCGACACGACAATTTTTGTGA -AATACAAACGGGCGTGTGTCTTTAAGAAGTACTGTAGTTTAAAAACTTCA -TTTCTGTGGAATTTTCATATATTTTTCATAGTTTTTCTCTTTAAATAAAT -CACTTTTCAACAAAAAACTATGAGACAATAGTTTGAAATTACAGTATTCT -TTAAAGGTGCACGCCTGCTCGAATTTCGCAAAAACGTGTCGTGTCGAGAC -CCCAATTACAGTATTTTTGACCCGAATATCGCGAAATTTCGAGTCTGGGT -GAAAACATTGAAATTTTTGGCAAAATAAAAGAAATATGTCCTTTTTCAGA -ATATATTTTCTAAATTTCGAGACGAAACAACAATTTTAAATGAATTTTAA -TTTTAAATATTAAATATTTCGGAATTTGGCGTTTTTTATGCATGTCGATT -CACTAACGATTTTGTACTACACGTGGGCAAGTTTATACAGTTTTTGGCTA -AAATTTGTGAATTTGAACCGTTTTTCGGCGAATATTTGAAAAATTGGCAA -AACTGGTTCAAAAACAAAAATTTTTTAAACTGTACAAACTGTCCAAAAAT -TCGTCGTAAATCGACACACCCTTCTCATTTTTTCAAAATTTTAATTGTTT -TCGAATGTTTTTTTTGCAGAATAATTTGTAAAATGAGCCTTTTGTGAATT -TTTTTTAATTTCAAAGTTTTTATTATTTTTTCTCAAACCAGCACCTCTGT -TCTCGTCCAACTATGATCATCATCGTCGAATAACCGTTTCTCGTGATTTG -TCACATTATCCTTGAGCACAATACATCCACCAGGTTTCAGTCCTTTCTGA -AAATGAAAATTAATTTTAAAAAAATTGAATTATTTTAAATGAAACAGTTT -TCAGAGATTTCTCAACTTTTGAGTCCACCACCAGGCCTGCACGTTTTTCG -GGTTTTATCTTTTAAAAAACTGAAAAATCGAAAAATTTCAATTTCTGTTT -TGTGGTCAAAATTGTAATTACAGGTAAGCAAATAGTTTAATTTTAAAATT -GAAAATTAGGGAAATGACCGGACATAAGTTTAAAAACCCGATTTTTTCAA -TAAAAAGGAAAATTGAAAATTTAATAAAACAGGTTGTAAATCAAGGAGAT -CGTATTGATTGAAAAAAAATCCGAATGTTCCGGATTTTTCAGTGGTTTTT -TTTGAAAGAAAATCGAAAAAGTAAATGTTTTTAATTTTTAAATTTAAATT -TTTAATCGGAAAAAATGTACGAAATTGACTTTTTAATGTGAAAAATTGTT -GTTTTAAAAAAAAATTTTAACCGATACAGATTTTCTAGACTCAGTTTTTT -CGGTTGAATATTGTTTTTTACTATTTTTTCATTACAGAAAGAATCCAATT -TTATTTCGCTTAAAAAATAACCGGAGCATCGAAAATATTTTTTTTTCTGT -TTTACTCAAAGCATTTCAATTACCTAGAATTTTGTTTAAAAACTACATGC -TTTATTTATGAACGTAATAAATAAGACCCCCTCTTATTTATAAACTTTCA -ACATATTTTCAGTTTTCAGTGCTATCTAGTGCTTACCGCACATCTTTTAA -AGAAATCAACCAAATCCTCATCAACCAAATGCCCTGAAACCCATTGAATC -CATATCAAATCATAACGTCGTTCGGGCGGTGCAAACGTCTGCAGTCCTTC -GACGAATTTATCTCCAATTCGTGGATGTTTTCCAATATATTGATCACTTT -TCGTGATCAACTCCTCGACGACGTCTTCCATATCAACTTTCGAGAAGAAT -GGCATTAAGAGATGCTTTGTAACACGTCCGATACCCGCTCCGCAGTCCAG -TGCATAGTCAAAGTAGCCGAATAGATTCTGGAAAATATTTATAAAATTCA -AAGTTGGCCCAGGGGTGACCGGCAATTTCAAGCAAATCGGCAAATTGTCA -ATTTTCTGAATTTGCCGAAAATTTGACAAAAACGACAATTTGCCGGTTCG -CCGAATTTACCTTTTTTAAATTTAATTTTCAATTCAGGCAAACTGACGAT -TTTCCGTTTGCCGGATATCAATTTGCAGGAATTTCTCAAAGGAATTTTTA -TTAAGACGGAAACACAGTGCTTTTTTGAATTTTTTTTCCCGTTTTCTTCA -GATATTTTTATAGAATTTACTGACTTTTCAGAATAGATGTAGGACAATTT -TGTTGTTTTAAAAATTGAAATTCTGAAATTTCCAACAAAAAAACATGTGC -AAACCCACAAGTTGGCAAAAATATTTTGCATTTGCCGTTTTTCCCGTTTG -CCGAAAAGTCTAATTTCGGTAATTGGGCCATTTTTCGAAATTTTGAGCCA -CATAAAAAACTTTGAACCATTTTTGAGAAGTATTATTACGACATTCGTTT -ATTTGAGCACAATTTGGGCCTATACTTTCAAAATCGGGGTTTGAAAACCC -CTATATGTTCGACCGAATGTTAATCTCATAAAAATTTGATGAAAATAAAA -TTTTCTACGGCTCATAAACGTATAGCCCCCGTCAGTCTCAAAATTTATAC -GATAGACACTTTTTGGCGTTTATCGCCTATATTCCGTCAAAAACCATTAT -TCATCATTCTTTCAATGTTGTTTTTTTTAAGGCTAAAAAACTTTCATGCA -AATTTGTTAGCCGTGTCGTGGTTTATACGAAAATTTCAGAATTTATAAAA -TAAAGGAAAACGAAAATGTTTCTATATACCCTATTTATGTTCTCTGATTC -CGAATACCAATGTGAAAAATTCAAAAAAAATTCCCTGATTTTATATAAAT -TTTTGTAAGCGACAAAAATTGTCGTTTGAATTTCACACTTGGTTACAAAA -ATTTATGAAAATGAGGAAAATTTGTTTTAATTTTTTCACATTGATATTCG -GAATCAGGAAAATAAATAGGGTCTATAGAAAAATTCCGAACCTTCACTCC -TTCTCTGAGTATAATAAATTTAAAATAAATACAGAAAATTTCAGTTCAGA -CCTCATTAAATTTGGGTATATTTCTAGGATCCGAGTTTTTACACCAGATT -TACAAACTTTTAGCCTTTCACCGCCTTTTTATGCGCATTTCCCATCAGTC -AACTCCAAAAAAATCGCAACTTTTGCCTCATATTTCAAGAATATTCCCCT -TTCTCTCCCCATTGAAAGTCATTTTCGAAACAAGCGGAAGATTCGTCATA -TGTGGTAATGTGTGGCGTGCGTTGGCAAACAACAAGAAAGAATCATTCTC -TGAAAACAAAAAGCGTTTTGGGTGCCAAAGTAATATTGAAAATCTGCCGT -GTTTTCTCATTTTCCATCAAAAGAAAATGAGAAAAAAGTTTCGGCGTTTT -ATTTGATTTCCGGGAAAGAAGACTCGGAAAAAGATTTAATTGAATTTTTC -ATAGCAAACCTATATTGCAACAACTTTCTAAAAGGTCAGAAATTGCCGCG -TAGCCTAGAAAATTGGAAAACTCTTCCAGCTGGTATTATTTCAGACATGG -TGCATCGAAAATTCGAAAATTACAGAAATTAACATTTTGGAGCATCTGCC -AGAAAATTGAGATTACAGTACCCCACTTCTGCCGAGAAATTCGAGGTGGA -AGAGGTCTTACAAAATTTTCGGTCACGTGAAAATGGGAAGCGTTCAGGCT -CCACACGACGGAATTCACCTAGTTTTCAGGTGAGAAGATATCGTACGAGG -AGAATTGACCTCCAAATCCTGATCGTGACTACAGGTCGTCGTTCGGAGCT -GTGGAAGAGTTTTGAAAATCTTCGACCATGAGAGAAATAGACAGGACGAC -CAAACATTTTCAGTGGAAGAGCTTTTCCTAGGCCATCAGGATGCTATTTC -GACAGAGCTGAGTTATCCTCAAGTCGTTACGAGGTGTGGAAAAGTTTTCC -AAAATCCCCGACCAGGTAGAAAATGAGCACACCGATTAAGTTTCTCCAGT -GGTAGAGTTTTTTCTAGGCCATCATTATGCTATCTAGAAAAAAGCTTCGG -CCATGGGGTTTTTAGGCCGTCTATTTATTTCTCATAACTTTCTCAGAAAT -TCGTCTATTTCTCAGAACCCCCCAATGATAAGTTTTTTGCAAAAAAAGTT -CTGCTTTGCTCATCAGCCGTAATCAGGTGACCTCATTAGGCCTACCCAAA -CACAGATTTGTCATTATTTTTCAGACAAAAAACACGAAAAAAATCTTCAC -GCATGGGGTGATAACCTGATTTTAAATCTTACTGTGCCGGCTGGCGCGGC -GAGCTTCGATCACTGAGCCGAAAGATTATGAAAACTATGGGAATGACGGC -GTAGCCTAGAAATCGTCCAGGCAGAGATTCTGTCTAATTTTCGAGCATAT -ATCTCCCAGTTTTGTTATTAATTTAAGTAAACTCAAACCTAGAAACAAGT -AAAACGGGAGGGGGGGGGGGAATATCAGAAAATTAAATCTTGCGACACTT -TTCCATTGATACTTTCAAGGTAATGCCCAGAGGTGTGCGGCAAATTTTGA -AACTTGCGCATGCCGCCTTTTTTTTTTTCTAGAAAACAGTCAGAATTTTT -TGTCGAATTTGTTGAAAATTCGCTAATATACTGTGAGTTTAGAAAAAATA -ACGAAAAAACTCGGAAAAGGAGGAAGAGATCTGAAATATGTAGATTTTTT -TAGAAAAGACCAGAAATTACTGAAAAATTGGCATTTTTCGTCGAAACCCC -AATATACTAAATTATTCGGATTTTTAGAAAATTTTCAAATTCACCATACA -GTGCATTTTTTCCTACTTCTACGACTTTAAAGGGGGGAGCATTTATGCGG -AAGGGTCTTGCCGCGCATTTAGTCATCATTTTTAGCAGTTTCTGTGTAAA -ATTCGCGTAGATCACATGAAGATCACAAAATATTTATCCCATATTTCGTA -TTTCTGTTGCTTTTTCACAAATTAATTGTGATCTACGCGTGATCTCCGCG -AATTTTGAGCAGACTTTGTTAAAAATGATGACTATGTGCACGGCAAGACC -CTTCCGCATAAATGCGCCCCCCTTTAAAGTCGTAGAAGTGGAAAAAAAAT -GCACTGTAGCAAAAAATCGAACATTTCTGTTCGATTTTTGAATTTCTCGA -AATTTTTTAAAATAATTTTTAAAATAACATTTTTATTTTATTTCGAAAAC -TACCGATTTTAGAAAAATTCTAAAATTTCGATTTTTTTTGTTGATTTTTC -GATTTTTAAAATAAAATTTCATAATTTTTTAAACCGATCTTTCTTGCTTT -TCCTGAAAAATCGATGATTTCTATACCTTTTTCTTCAGTCCTTCAATAAA -TCGTTTCGACGCCGATATGTCGGGCGCGTGAAGCGCTTCGAATCCGCCGA -GCATTCCGTTGACGTCCTGGCTCGCGCGGCTCCAGTATTCCTCCGCCTGA -AAGAGAATAGTTGAAAACATTGTTTTGAGACTTAAAAATTTTTTTTTTAG -TTTTTTTCAAAAATTCTTACATGTTATAGAGTTTTTTTTTCAAATTTTCA -GCTTTTTTCAGAAAAACTTAGTATTTTCGATAATTTTAAATAAAAAAGTT -TTTTTTCAAAAAATGTTTCGGTTTTTTTTTTAATTTTTGGTCTAAAATTC -TCCGCAAAAGATTTGCGTGCTGGCCGAACTTTTTGATTTTGTACCTTTTC -ATAAACATCTTCACCATTGTGAATTCTAGAAGATGATGAAGAGCTCATTT -TTGATGTTGTGACAGCTGCTCCGAGCAATCTGGAGACTTTTGTGACGAAA -AGACGAGAGGTCACGGATATGATGATGATACTGGAAATGAGATATTTATA -TTTACTAGTTCATCGGGAAAATTATTACGAGAAAGATAAACAGACATGTG -CGTTTTTTTAATGGAAGAGAAACACAAGAAAAATCTGGAAAACTAGGCCA -CGGCTATCAGTGTCGATTTACGGCATACGGTCTCGACACGACTATTTTTG -TTAAATGTGAAGGTATGCACCTTTAAAGAGTACTGTAGTTTGTAACTCTC -ATTGCTGCAACATATTTGACGCTCAGCGAAAACTACAGCAATTCTTCAAA -AGACTACTGTAGCCTTTGTGTTGACTTACGGGCTCGATTCTCGAAACGAA -TTTCTGCTCGAATTGTGACAGCCATATTCAATTTGGTATAGTCTTTTCGT -ATTTTTTGCCATTTTTCTGTTTTCTTCTAATATTTAATCTATTATTAAAT -TATGTCCGTAACTCCCTCCAAAATTAGAACTGCGACCGAACAGAGATTCG -TTCCGCCCCATATTCCGGCCAATCAGATCGAGTAGGCGGAGTTCGAAGTC -GCTGATTGGTTTGAAAAGTCGCGGAAATTTGCAAGTTTTAAGGTAGCGAA -AACTGATGACTATTGTAGCGCGCTTGTGTCGATTTACGGAATCTCGATTT -TCAGGAATGAATTTTTAATTACATTTTTTCGCTCAATTAATATTCTAAAT -AAATAAATAAATGATTTGAATTAATTTAATTTCATTCGAGCCCGTAGATC -GACACATGTGCTACAGTAATCATTAGTTTTCGCTACGAGATATTTTGCGC -GTAAAATATTTTCCCGTAATAACTCTACTCCGACAAACATTACGACCTCC -ATGGAGGCCTCCAGGTATAGGTGAGACTCTTGTATTTCCAATTCAGAGAC -AATGCGTCACTGGAAGAGAAAACGAAGCGGAAAAAAAAACACGGAAACCC -AAAAATAGTGTTTGCCCCGCTCTATTCTTCTCCAATAATTTCTGTGTCTA -ATTTTGAAAGACTCCACCTGTGTATGCCTTCTCGACATAAACCCCCCCCC -CCCCCCCTATCTTACATGGTACTGATAACACTTTCAGTCTTTCACACTTT -TGGCGCGCAACGCCGCTCTTTTTTCGCGGCGAGCTGATGACGTCATCAAT -TTTTCATCGCTTTTGATTATCTTCAATGTTCTAGAAGGGCACATAGGTCA -TCCTTATTTTTTCCTTCTCTTTCTCGTGACGGCCCTTGTTGCGCATGCCC -GCCCCCTAGAGCAGGGCGTGGCCTGAACGGCGGCTCCGAGAGCTACTCAT -TCTTGCCGCGTCACCCTCCAGCGCCACCCAAACTTCTTCGGTTCTAGAGA -TCGAGAAGAACGTATGATTTTTTAAAATTATAATTGTTTCTTTCGAAAAA -AAAAATTTCATTTACAGTAAGCCAAACATACACAATCAACATGAAACTCG -TAATTCTGCTATCTTTTGTTGCGACAGTTGCGGTTTTTGGTGAGTTTATG -CTTTAGATAATACTTTTCCGCCAAAAATACAGTTGCCGGTCTCGGTATGG -CAATATTTTTGTTAAATTCGAAAAGCAGTGAGTAATGTAGTTTCGAATTT -TCGTTTCTGCTTAATTTTCATCAATTCATCGTTTTTCTCACGACTTCTTC -TTTATGAAAAATCAATGAAAATTCTGACTAGGTCAGCTTAGGGGTGAGGT -ACCTAGAGACGCCACATATGCCAAACGGAAGCTGAGATCATTGGCTACAA -GAATATGCTTTCAAATTCTGCAACGGACCTCTGGGAGTCTGGAAATTCTT -GTCTGAAATTATGCTTTTGAATGCTCGAAAGTGGTAAGAATTTAGAATTT -ATTACAGAAAAACGTTTAATTAATAAAATTAGTTTTATACTTGAAACAAG -TACTGTATGCACTGTATCAAAACACATTTTCATCTTTTCTAGGTATTCAA -CTTCACGTTTTTCTGTAATAAATTCTAAATTCTTACCACTTTCGAGCATT -CAAAAGCATAATTTCAGACAAGAATTTCCAGACTCCCAGAGGTCCGTTGC -AGAATTTGAAAGCATATTCTTGTAGCCAATGATCTCAGCTTCCGTTTGGC -ATATGTGGCGTCTCTAGGTACCTCACCCCTAAGCTGACCATTCCCTAGTG -AGCAAACAAAATTTTGAAATTACAGTACTATTTAAAGGCACATTGATTTT -TTGGGTCAAGCAAAAATTTGTCGTGTCGAGACCGGCTACGGTATTTTCGC -GAAAAATCGCAAAATCTTGCGGCTGGGATATACTTGTGCGAAATACTTTT -TGCATTAATTTTGAGCAAAATTATTTTTTTTAGACTTTTTGAAATCCAAA -TTTTTTGGATTGCGAAAAAAACCTGTGTCCGGTTGTTTCATTAGGCCAAC -AAAGTTCCTGGAACACTGATGAAAACCATGATAGAGGCGGAGCATAATAT -CGATTTTTCGTACTTTCCTGTATTTCTTCTTCTATATGGCCGAGTAGAAC -AGGATTAGGGGTAAAGTCAAAATTTTTCTCATATGGATATCATATGGATA -TCAAAATTTTTCTCATATGGATATGGAGAAAATTTTTCTCATATGGACTT -TGAAAGTTGAATCACTTGACATCTGGGAAATTAGTATTCCAGGCGTAAGT -CGGATCTGTTAGAAACGGAATACTTATAGGCTTCGTGAATTAGGTAGACT -TTCAATTAATCTGATCCATGGGAGTCAGACGCGGTTTCCAGGCCTGACGC -CTGCCTCCAACTTGCCCGCCTCACGCCGGTCTCTCGCCTCATTTCTGCAC -TGTGACGAGACAGACGAAGGTCGCCTTCTGGCGCCCGCATGGAAATCCTA -CGAATATGTCAGCTTCTGATGGGACTCCGTAAATCGACACACAGGGGTAC -CTCAGACATTTCCCTCCCCCTTACAAATTGTTAGGACAAGGAGGGGGAAT -TCATCTCCACTCGAGACACACATATGTTGTCGTCAGTGAAGTGTAAAGAT -CTAAACGATTGCGTGTATGAAAAAGCACTCTATGATCACCTTTTTCATCT -TCCTACACCCTTTTTAGGTGTGGTGCCCATCGAGCACTCACGCCAGGCAG -GGAGAGCACCGGTCCCTGACTAATGGGATTCGAATGTTTTAGACCGGAAA -TAGGAGCGATGAAAGAGCATAGAAATGATCATTTGGAAATCACGTTTAAT -TAGGTTACGGCGAAAATTTGCAAAAAAGAGCAGGAAACTTGGCTCAAATC -CTTCGAAATATAACAACTAGGACTTCCATGTAGGCGTTAAAGCGCCCTGT -CTCTCACCCCAATCCGTACCTTAAGCTGAAACAAACGTGAACTTTTTTCA -TTTCTTAAAGGAGTATCGTCAATGGGAAAATTGTTTTAAAATGTAGTATT -TGTACTTCAACTTCCAATTATTGCAAAAGAAAAACGGAAAAAATCCGTTA -ACATTCAGCATTTTAAGTCGAAGAAATCTTTAAAATTTAACTAGAGAAAT -CCTAGGCCACGACGCTCATTCGAATTTTAATTTGTTTTGATATTGTATTT -TGAAAAAAAAACTTAATACAATTCCTTCTTCCCAGTTTTCTATAACTTTT -TGAGAAAAAAACGAATTAAATTCCGAAAAAACTACATTTAAATCAATATT -TTGTTTACGAATATGGCCTAGAAATCGCGTGGTGGCCTAGGATTCATTTG -CGCGCGAAATTCAAATTCCGTCACTTTCGTCGATTTCAACGGCTAAATGC -TGAATGTCAACGGATTTTTCCCGTTTTTCTTTTGCAATAATTAGAAGTTT -GAGTACAAATACTACATTTTAAAACAATTTTATTTTTGGTATTTTGACGA -AAAATTGATTTATTGGTTTTTTTGGTTGTTTGGGACCAAAAAATCCAAAA -AAAATGTTTGGCGTGTCTAGTTTCGACTCGAGACTATTCTGTATTAAAAA -TACATTAAAACATGTATTTTAACACAGTTGTGACGTCATAAATGTATTTT -GATACATTTTGCAACATTACTTAAATAACCCCATTAAAAATTAACCTAAG -CATCAAAAATTTTTTGGTTTTTTTGGTTTTTCGAAAATTTCAATTTTTTT -TGTTTTTTGGTTTTTTTTGGTTTTTCAAAAACTTCAATTTTTTGTTTTTT -GGTCCAACATTTTTTTTTGGTCTCAGCTCTGCTGCCTACCCTAGAAGAAC -TAATAGCGCTTCAAAAACTGATGAAAACGTTCAAATTTGTCGAAATATTA -CGAAAATTTGAAAAGTTGGCTCAAATCTAGATTGAATCGGCCGATTTTCC -ACAAGTTTCCAAGTTTCCACAAGTCGCCACATATCCCGAGAAAAATCGAT -TCAAATTGTTTGAAAATTGGAATACTGCGAATTTTGAACCAAATTTCCCT -GGCTTCTCTGTTGAAATACTTGAAAATACCGCGAAGCAAACAAAAAATCT -AATTATTACGTGAACACAAAATTCTGAAAATGCGTATATATTGCGCAACA -TATTTGACGCGCAAAATATCTCGTAGCGAAAACTACATTAATTCTTTAAA -TGACACGCTGTATGTGGTGATTTACGGGCTCAAAAAATTATTTTCGAAAA -TCAAGCCCGTAAATCCACACGTAGTAATTATATAAAGAATTACTGTAGTT -TTCGCTACGAGATATTTTGCGCGCCAAGTATGTTGCGCAATACGCAACCC -CATATGTTGATATATACTGATGTGAGGATAAAAAACAACACAACTTTCAG -CGGCTCCATCGGCTCCGGCAGGTCTCGAGGAGAAGCTGCGTGCTCTTCAG -GAGCAACTGTACAGTCTGGAGAAAGAGAACGGAGTTGATGTGAAGCAAAA -GGAGCAACCAGCAGCAGCCGACACATTCCTTGGATTTGTTCCACAGAAGA -GAATGGTCGCGTGGCAGCCGATGAAGCGGTCGATGATCAATGAGGATTCT -AGAGCTCCATGTAAGTTAGTGGTGGTGGCCGGAAAAGAGAAAACTCGGCC -AAGCTGCTCGGAGTTTTTGAATTTTTGATAATCCGAAATAAAAATTGATT -GCTCGAAAAGGAACAATCTTTTGGAAAAAAACGAATTTTGTCATTTTTTT -CAGCAAAAATTGATTTTCGAATTTTTCCAATAAAAAATCGATAATTTCTC -CCCGTGCAGTGGAAAACAAACAATATTTTTTTGTTGATCGTTCTCTTCCA -AACCCGGAATAGGTACACACATTCCTGCGTCATCCCATTCTCTTATCACA -CTTTTTTTTCGAAAATAAAAGTGTAGAGACGGAAAAGTGAGAAAGGAGTC -AATTTTATGCGAAATTTTGCATGATAATACACTCAAATTAAAAAAACTGC -GTGGCGTGCACTGCAGAAAACCTCATATTTAGGCCCCGCCTTTTTCTCGT -CCACTCACGGAGAAAAGGCAAAAATTTGGGGACCAACCAATATCAGGCCG -CCGACATCCTACGGGTTCCGCGCGCCGCTATGTTTAACTCGCTGTGGGTG -TGGCGAGCTGTCTCCGCCCGCTGCGAGTTAAACATAGCGGCGCGCGGAAC -CCGTAGGAAGTCGGCGGCCTGATATTGTTGGTCCCCAAATTTTTTCCTTT -TCTCCGTGAGTGGACGAGAAAAAGGCGGGGCCTAATTATGAGGTTTTCTG -CAGTACACGCCACGCAGTTTTTTTATTTTGAGTGTATAGGTCTCGATTCT -CGAAAGTATGACAGTTATTTAAATGATGAACTCGTGATGACTGTTAAATT -TTTGGAAATTTCGGGGGAATTATATCGATTTTTCGATAAATTTACAGGAA -AAAAGTCCAAAATCTAGGTATTCCATGGTAGGCAGGCGCGATTTCTTGAC -GCCTGCCTGGAATCTGTCCGCCTCACACCAAAAAATGTCAATCATTTTGC -TGAAAACCAAATTAAGAAATGAAAAAGTGCACTTAGAGATGATGACGGAG -GTCGCCTTAAGGTCAGACAGGTTAAAAAACCGATTTTAGTTGAGTTTTCC -CGAAATTTTCTGAACAACCGAATTAGAAATATGCTGCTTGTCATTTTTGA -GTAAAAATTAACGAAAACTTCGACCAAAACCACGAAAAAAATGAAGAAAA -TAAAGATTTTTCGAGAAAATAACAACAAAATCCAGCAAATAGTGAAAAAT -AGTTTTATCCGAGAAAAAGTAGTTTAGACGCTATGAACTCTCGAAAATCA -GATTTTTTCAATCTAAAAGCCATAAAATTATCGATTTTTTAAAAATTCTC -ACTGAAAACCGGCGAATTTCAGTGCTCCACGCAATCGAAGCCCGCTTGGC -CGAAGTGTTGAGAGCCGGAGAACGCCTCGGAGTCAACCCGGAGGAAGTTT -TGGCGGATCTTCGTGCTCGTAATCAATTCCAATAAATATTCTTTGCCCTA -AATACTTTAAATTATCCATCTGACAACTAAAATTTCGGTTCTTCTTGGCT -TCTTCTATTTGTGAAATGGTTTATTTTCCCCCGAACTCTCAAAAGGTTTA -AATATTGTTCGATTACCCCTTTTTATCAATTATTTTCTTCAATTTCTTAT -TTATCATTATTTTTCTAAACGAAGACGGATGTGATTTTAAATTATGTTAA -TGGACTATTTTACAAACTGAATAAATTCAGCATGTTGGCAGGTTTTTTCA -GTAGTTTTTGAGTGAAAATAGAGGTAAAAAGACAGAAAATCAATAAAAAA -TGAAAACAAAACTATGAAAAATGGTTGAAAATCGAGCAAAAATCGTTCAA -AAAAAAATAAATTCAAAAAATAATTGCGTCGAGAAACGCGTCAGTAGCCG -CTCTCTGCGTCTCTCACCCTTCAGCACGCGGAGAGAGCCACGAGAAATGC -GCAAAGGCTAAATTCGGCGCGGAAAATCATTTTTCAAAATAAATTCGACG -AGAAAATCAATACTTAAGTAATTATCGATTTTCAGCTCGTTCAAAAAATT -TTCAGAAACGTTTTAGTCGTTTAAAGGTTTTTTTAAAATTAAAATCGTCG -GAAGTAAAAAAATAGCGCGGATGGAAATCTACGGAGTGCGGAGCGAACAA -ACGCGCGGTAATTCAAATGGGTAGAATAGTCAAAATTGAAAATTAGCCAG -CATCGACCGATTTTTTTAAAACTTAATGGATTTTTTCGTTTTTCTTTTGT -GGTATTTCGGCATTTAGGATTAGATAGCACATTTTAAAGTAAAATTCCCA -TCCAAGCTACTCCACCTTCTCCAGACTGTACAGTTAAACCAATTTGAAAA -GTGTATTGTATCCCGTTTTTTTTTCTGAACAATTTTGAAAATTTTTCGTT -TATCCAGGATACGATAATCATGATTCAAATTCGTTAACAAAAAATGAATA -TATGAGAGCGATTAAAGCATTTGTGTCGGAAAATATGGGTTAAATGGGGA -GAAGGGGGCGGACATTTGGATGGGGTACAAAAAAATATGCAAAAAATGGG -CTAAAAACAATATTTTCAAATTATGCCCGACAAAGGTTCAAAAGTCAATA -TATAGAAATGAGAACATGAGTATTATGCCACGTGGCGGGAAAAATATGTG -GAATGTAATACGATGAGATCCTTGTGAATACAAAGCTTGTGACGACGTGG -CCGAGAAGAACTTTTTAAGCCAACGAGAAAAAAGGGGTTCAAGGCCGAAA -TTTTTTTTGGGCCACCTATTAAGTTAAATTGAAAATTTAAAAAAAACACA -GCGGATCCAATTATTTGCCGAGTTTTGACTTGAGCTCGGCGCGATACGTG -TCGATTGACTGAAAATATTGTTTTTTTTTATTTCCGAATAAAAAATGGTG -AGTACCTCCAAAATTAGCTTTTCATTGTCCATATAGAACTTTTTGATTTG -TTCCACAGTTTTTGTGGCCATCAACTCGGCGATCAACTCGAAATTGTCCT -TGTACCAGTGGAAACCTGAAGGAATTTCGGATGTTTTTGCTTAATCATAA -TCATAATAATCTTAATCATAAGACTTGGAAAATGCGAAATTTTTCGAGAA -TATTCAATTTATCTTCAGATTTTATTGCAACAAATCGATTTTCAACATAA -AATTAATTTTTCCAACTTTTTTTCCCAATTTATGAGAGTTTAAAGATTGT -TTTAAAGCAAACCGCCAACTTTACATAAAAAATTAAAATATTGTGAAAAA -AATGATGAAATTTAGCAGATTTTCTGATAAAAAATTGAATTTTTTTGGAT -TCGCGCTTCAATTTCACATTGTTCTTTTAGAAAAGTCGAAATTTTATATT -TCCAATTTTCAGATTTAAAAAAATTTAAAAAGGAATGAACTTTTCCAAAG -AAAAACTGAATATAACCAGAAATTGTGATTTTTCAGCATTTTTTTTTAGG -TTTGAATTTTTTTTTCATGATTAATCACGTGAAAAGTCAATTTTACCGCA -AAACATTTAAAAAATCAAGATTTTTCAATTTTCTCTGAATTCCTGCAGAT -TTTTCGATGAAAAATTGAATTTTCCTTGGAATTTATATTTTTCGGGTATT -TAAAGTTTCGGATATTAAAAAAAATTTTCAATTTTCTCTGAAGTTATCGA -TAAAAATTATTTTCTGCAAAAAATCTACTTTTTTTCGTTGAATATTCCGG -AAAAAAAATCAGAATTTCAAGGCACATTTCCTTTTCTAATCTAATTCGAA -TAATTCAATATTCTTTTAAAAATTCGGGGTAGAAAAGGAATTGTACCAAT -TTTTATTTTTAAAAGTTAATTTTTCTAATTTTCAAAATTTTCTTGAATTT -TCGAATTACAGATTTTCAAAAAAATTTTTTTTGTTTTTTTTTCTCGAAAA -TTTGAAATCCATACATCTAATAGCATTCTTCTTTTCCTCAGGACTCCAAC -CATAATTTATCCTGACTTTTCCAGATCGATTGCCATTTGTTGCAGTAGTA -TCTAGTTCAGGAGTAAATCTCTCGAATCTTCCCTTCAACGCCATCATATC -TTTCTTCCAATTTGCAATTTCTCCTTTTGGTACACGGCTGTATGTCATTG -TTGCACGGAACATTTGTTGACGGGCTTCTTCATTCAGAATTCTGGAAAAA -TTGATGTTGTGCGATTTTTTTTGGTTAAAAAAAACAATTTTCGTAAGTTT -AATTAACTAATATTTTAAAAAATCTCTCATTTTCTGAGGCACCACGGATT -CAAGATCTGGTGGGATTCCGGATCTGGCACCGTGCCAACGCATTAAATGC -AATTTTTCTGAAAAAAGGGCAACGAAGATCCGATTTAAAAAAATTTTTCA -ATTATTTTTCAAAATTTTCACTAACTATAAGAAATTAGAGATTTTTCACA -AAAATTCCAGTTTTCTGTTAGAATTTGAAAAAAAAATTGAATTTTTCCTA -AAAAATTTGTAATTTTCCGATATTTCAAGCTGTCAAAACCTAAAATCTGA -AAACTGAATTTTTAAAGGAAAAATTTTGAGCATTCTTATCAAAAAATTGT -TTCAACTTTTTCTCAAAATGTTTCAACCTTTTTCTTTCTAAATTCTGAAA -AGCATATCTCAGCTTTTGCTAAACTATTTTTTTCCTCAATTTTTGAGAAA -ATTAAAATATAATATATAATATAGTAAATATTGCTTATTTTCTAATAATT -TTTGGTATTTCTATTCTTTCGTTTTTTTTTTCAAAAATTCCAAATAGTTT -TAAATGTTCATATTATTTTTTTTGACGAAAATAAATTTTAATTTTAAACC -GGAAAATTGTTTCGTAACTTTTTTTTTCAAAAAATTTGAATTTTCGACAT -GAAAGATGTAAAGTGTAATTTAAAAATAATAGTGCAGGTATTTTCAGTTT -ACAGCAAAAGTCAGTTTAAAAAATTTCGACTGGTTTTCAAAATGAGTTTC -CTTATTTTTTACACGTAGAACTTTTTTTATTTTCCGATTTTTTTTGTTGC -GCAGAAATTTTTTTTCCGCAAAATCAGGAAAAATTCAGAAAAAGACAGTC -AAAAAATTGTAGATACAATTTTTTGACTGTCTTTTTCTGAATTTTTCCTG -ATTTTGCGGAAAAAAAAATTTATTTTTTCATGAATAAAAATCGAATACCC -ATCCAATTCCACAAACTTACTCGTTCTCCTCCATACATTTCGTTTGTTTA -ACTCTCCAAACAAGTGGAACACACATATGATGTTTTCTCTTGATATTATC -AATTAATGCCAGTGCAGCCGGTGTATCGAAGCACCGTGTCATTCTGCACG -TATTCTCATCGATTGGATCAGCTTCAATCGATTGCTCCACAATGTAGGGG -CCTGATGGTTTACGGAGAAGGCAGTCGTCTGGAGAAAAATAGAATAGAAT -AATGATTTTTAGGTTATTTTACGTTTAAAAATCTAATTTTTAAGACGCGT -AAACGTTGAGCTCATTTATAAAAATTCGGCAAACCGGCAATTTGCCGAAA -AATTTCGGAAAATTGTCGGTTTGCACATTTTTTCTTGAAATTTCAGAACT -TCGATTTCAAACGGCAAAATTGTATACATCCTATCAAAACATCAATCTTG -AAAAGCCAGTAAACTCTATGAAAATGTCTAAAGAAAAGAAAACGGTAAAA -AAATACAGTTTTAAATGTTTCCGTCTTATTAATAACAAAATTCGACAATT -TGCCGGAATTGAAATTTTTTTTTCTCCAATTTCCGAAAAAAACCCACCGA -CCACCATAATATCATCGTCTTCTTCTTTTTCTTTTCCAATTCCAAGCCGT -TTGATCGCTTTTCCGTTGGCTGGCTCCATGAGCTCAAGATATCCGTATAC -ATAAATTTTCATGTCTGAAAGAAAATTCAAATTTCTTCTGGAATCAGTTA -TTCGAAACTAACATTCTGGACATAAAACTCGTTGCCGTCGTTTTGTCAGT -GCACGGAGGCTTGCCGGACGTGGAACACGCATCAAACGGAAATAAAGGAT -ACACGGTTTACATTCGTGACGCGACATTACACGATTTAGCTTAAAATTGT -GAAATTAATTTTTTTTAATAGCTCTTTATTTTTTTGAAAATTTCTCCCAT -GCTTTTTCCATTTTTTCAACGAGTTTCCTTATTTTTTGTCCATTTACTGT -AAGTTTTTTTTGAGAATTTTTTTTTGTTAATTTAACATTTTATTAGCTCA -AAACATTTATTAGCAAAAATTTTATTAGCAAAAAAATTTTTTAATTTTTT -TAAATTAGCTCAAAATTCTCGAAATTTTAAATTTTTAGGGTAAACAATAT -AAAACTTAGGGAGTTTTGAGCTATAAAATGATAAATTGATTTTAAAAAGG -ATGAAAAACTTATTTTAAAAAACCGACAAAAATCGACAAAAATGAAGGGA -ACAGGCAGCAGCTTAGCCCCATGCTTAGCCAGCAGCCCCGTAGCAACCCA -GTATCAATAATATCCCGTGCCAATTTTCATAAAACTGAATATAAATTGGG -TTGATGTTGCTAAAGGGCTGCGAAAAACTGACCTGGGATGAAGCTGGGCT -GCAAGGGGCTGCGAAGTGCTGCGAGGGCAAAGCGCTACAGTGCTAAAAGG -GGGCTGAGCCCAGACCCTCAGGAAAAAACTCATACTCGCAGCCCTTCGCA -GCCCACATTTGCGCTCTGATCGCGTGCTATCCGCGCGCACAGAATTTCGA -AAGTATTTTCCAAATTCGGAATGCGCGCGGAGCAGACGCAATTAGAGCGC -GGATCTGGCACGTAAGGAAGAAGTGTGACTGGAGCACGAACCAGTAATCT -AGTCGCGCCCCGTCCGCGCTCCAGGAGGAGCGATTTGCCGAGCAGTTCAG -CCCTTCGCAGCCCTTTAGCAACAACCAAATTTATACAGTTTTATGAAAAT -TGGAACGGGATATTATTGATACGCCTAAGCAGCCCTATTAAATAGTGATG -AGGGCGTAAATGAAATTCGCCATTTCCAGCTAAAATATAAATTTTTTGAA -TTTTTTAACATTGATATTCGGAATGGATTCAGCAGAAAATTTGAAGTCAT -TTGAAAATATTTTCCAGATTTCGGTACTCCACTTTTAAAATTGAATAAAA -CTGTAGTCTTTATTCAATGTTTCTTCAAAATTTAAAAAGTAGAATATAAC -TGTGAGAAAATTTCCAAAATTGTCAAAATTTCAAATAGCTGAAATATTTC -ACGGCCCGGCGGGGGGTACATGGATGAGAATTCTCTACCGTATTCCAATT -TGGCTGACTGCGTGCTCAACGTTGAATACTCAGTGTAAACTTTCGTACAC -CGTTGCGTACTGCACAGCGCGCATTTTAATTGACGACATTTAGCAAAAAT -TGAACATAAGATTTTTCGGAATTATGAAGCTCAATTTTCACAAAAATAAT -GAGTTTTTTGTAGAATTTATGAAAAAACGTGAATATATAGATTTTTTGTT -CATGATATTCAAGAAAAAGCGATTTTTAGTTCTTCACAGAGGAATCCTCT -CGCATTTCACTTGCTCATGATGTTTTTTGCTCCACTTTAGGACGATAAAA -ATGCGAATTGTTGATAAAATGAATGAATAATATAAAAAGTGCAAATATGA -CTTCAGCAAGTGTTAAATCCCAAATTTTTCCTGCGATTTTCTGCTAGATT -CCTGGTTTTGAGTAAACAGTCTGATATATTCATGATTATAATGATAACAA -TAACGAACATAATAATAAAAATGGAGAGCACAGAGAAACAACAAATTGCA -AAAACAGCAACTGATATCAGAATTAACGACGACCACGGAAACCGCCTCGG -TCTCCACCTCGCCCACCACGGAAGCCACCACCTCTGTCGCGTCCTCTGAA -TCCTCCTCGATCTCCACCGAATCCACCTCTAAATCCTCCATCGCGGTCTT -CTGATCTACCACGGAAGCCTCCACCTCCACCAGGATCTGTTGAAAGTCCT -CTGAAGCCTCCTCGATCGCCACCTCCACGGAAGCCACCACGATCCGCGGA -TTTTCCTCTATAGCCTTCGAGGCTTCAGTTGTACCCCATTCTTCGTTGGC -ACGCTTCAGATCTCTACAAAAAAAACAAATTAGAAGCATTCAATTATCGA -AATGTGTACCTATCCCGATTTATCGCAATCTGTCTATTCTTCTCCTTCTG -ATTCTCAACTTCTTTAACTTGTCCAGTAGCGGCAGCTTGCTTACGAGCAG -CATTTTCCCGAATCGCCTTCACCTCTGCCTCCTCAGCATCCTGTTGCTCC -TTGACAATCGTAAGTCTTCGAATGACACGTTGCTCACTCTCCTGCTCACG -ACGCTTTTTCATCTGCTTCTTCTTGTTTATAGTCACCGCATTATGCTTGT -GATAGAGAACCTCTCCCTCATCGATTTCTTCTTCAATTTTGACGAGTTCC -AGGGTCAGTCGGGTCCGATCTCACGAAGACGGACGTTGCTATTCTGGCCA -ATTCCGCAGTCACGTCCTTCATAAATGTCTTGTGGAAGTTCTTCTTGCTG -AGGGGGCTGCTGAAACCAATGTCGGCATGATGAGAGTTCCGGTCTTCTGA -ATCCATTTCCTGCGTGGGCTGTGGCGACGAGCTGCACGTCTGAAAATCAA -GTTTTTGTAATTTTTGGGCGCATGATATGGAGCTGAATCATTCGATTTTA -GAATCAGCATGCTTTTATTCATATTTTAGGATCTTTTTAAAAAATCTGGA -CCAACAGTTTTCGAAAAAATTTAATTTTTGTTCAGAAATGTGAATATTCA -CTAAATCGAAAAAAATAATTGCAAAATCCGTCAGCTGAACATTCAAAACT -TATCAATTTGAAATCAGCATATTTCAGTGTATAATTAAAAAAGTTTCAAA -AATTCTGAGACCAATTTTTATTGAGAAAAATAATTTTTCGCTCGAATTAT -TGAATTTTCACTAAATGCAAAAAACAGTAAACTTGGGCCCATGCTACAAG -CCTGAATCTTTCAAATTAAGAACCAGCATGATTTTTTCAATATTCTAGGA -CGTTTAAAAAAAATCTGGACCAACAGTTTTTGAGGAACGTAATTTTTTAT -ACAAAAATGTTCTGATTTTTCACTAAACTCAAAAAAATAGTCAAGTTGGG -CCCATGCTGTACACCTAAATCATTAAAATTCAGAACCGCCATGTATTTTT -TCTTACCAAAGGCTCTTTAAAAAAAATCTGGACCAACAGTTTTTGAGATA -TTTAGAAAAACAACTCACTTTTCGACGTTTTTCGCCTTTTCGTGGCTCAC -CCGGTTGATTTTTGCGGCGATTTGTGGTCTTTCGCTGAAAATATTATTTT -TATTTCAATTATTAACGAAGAAAACAAGAAAAAACGACGAGAAAACATCA -AAAAAACGCGAAAAAACATCGAAAAACCACCGCAACCTCATGAACAAAAA -AAAAGCATTGCAGCCGCGGGACTAGTTTTCGCAACTTTCTAGGCCATGTC -CCGTTCGCCGTGCCGTGTATTTGTTTAATTCCCTTTTTGGAAAAAGTCAA -CATATTTTTCTAACAAATCGTTTTTCTATTAATTTTTTTCTAAAACTCAC -AATCAACAGATCACTTTTTGCATTGCAATTCTCACAATATCCCGACGGAA -CCCTCTCCAAATGATTGACCTCTTTGAATAGTTCATCATAAGTGTCGGTT -TCATTCAAATGCACATTAATCATTGTTTTATAGTTTTGCACTTTTTTCGT -GTTGTAATAGTATTGGATAATGGAAGAAAGCGAGCGTTGGGGCATCTGCA -AAAAATAATGAAATTTATTTTCTTTTTATGATTAAATTAAATTTTCAAAA -ATTCCCTTTTTTTGACATATGCACTTACAGCCGCATGAATCTTCTTGAAC -CGTTTTCCGAAATGAAAGAAGCAAGTGGAGAAAAGACTAATTTCTTCTGC -CGTCCAATCATCATGAATTTCTTTTCTTCTCATCGCTTGAACCATCGCAG -CGTCGAAATCATTTGACTGTTTGTTCAGAATGAACAGAGCCTGTAAAAGC -AGTTAGTTTTTTTTTCAAATTCAAAGTACATTTCCGAAAAATAAAAAAAA -GGCTTGATTTTTTAAAATCTCGAATTTTTATTATGGTCAATTGTTATTTT -TTCCAGAGAAAAACTCATTTTCTCCCAATTTTCAGACGTTTCTCTCTAAA -TTTGGTGTTTTTCCAATCGTACCCTATCTATAGGTAATTGATATCGTCCA -GTAGCTTCTGAAATGTATTCTGTAAGCCGATTCTCGTTCATTTCGTCTGG -AAACGCCCAAATTTGTTGATCTCTGCACGGTTCTTTTTCCAATTGCTCTG -CAGTTGGCTGTATAATCGCCTGATATTCGGTTCCCACGTGGATTAGATTG -TCGACGTTGGAAAGTGGATTTGCTGGAAGAAATTGGGAATTTTTCAAGGT -TTTAAGTGGATTTTCAAGCTATTTATAAAAGCATGAAAAAGCTCAGAAAT -GACTATAAAACCTTTTTTTACGTCGTATTTTTTTCAATGAAATTACCTAC -TTTTAATTAATTGTTCGGCTTAAAACCAGAAAATTGTTTCATATCGATTT -TCCCGGTGAAAATCGAAGGAATCGTCGCATTCTCAAAGTTTTTTCACCGA -TTTGTTTCAATTTTAGCACAACTAAATGGAAAAATCACAAAAATTCCATT -ACAGCCGATTTTCGTGAATTTTCCTACATTTCGAACTAAAAATTGTCCTT -TCTTCTGTTTAAACCGGAAATTCTCTTTTGAAAAACCAATGAAAATTTGA -ATTTTCTGGGCTTTTCTTCGGAAAATTATTCTCGAAATTTATCAATCGAT -CCTTGGGCTTTTTTTGTTCCGCAGAGGCTGGCGGAGTTTACAAGCGTACG -AAGTGGTTCAACTTTTATATAAAGCTTTATAAATGGGACATAGATGAATA -TTTCGAATGCTAAATGCAAAAAGAATCAGTAAAAAAGCGCGCAGCCCCGT -CCTTCTCTGACGAAAAACGCCGTTTAAGGATCGATTGCTAAATTTTGGCA -GTAGTTAGAAGTGTCAAAATTTCTGCCGGAGAGTCGTCAAATTTCACTGA -AACGTAACCCGGTAATTTCCACAATTAATGGTCGATTTTTCGCAAAAAGT -GGTATGTTTGTCAGGATTTATTAGAAATTGTGGCTGTCCAGATTTTAAAG -AGTATTTTTGGGCAAAAATGTCGAATTTTCTCTGAAAAAGTTCGATTTTT -ATCGAAAATTCAGATTTTTTAGATAGTTTTCATCGATTTTCCCAGTTTTC -AGCCTGAGAACTTTACTAACAGAAAGATGTGTCATGAGCACCACTTTCAT -GATGCTCACGAGCTTCAGCTTCTTCATCTTCGTCCTCTTCATCCTCCAAA -TCTTCATCCTCATCGCCCATTGATTCCCCAGACGTTGTTTCGCGTTTTCT -CATGGATCTTATAGGACGAGCCATCTGAAGTTTCAATTTTAGCTTTTAAA -TTCAATTTTACCGCTTAAAAATCGATAATTCTCCCGTACTCTGCTGGTTT -CTTCTTCTTGTTCCGCCTGCTCCTCTGGATCATCTTCCTCCATTGGCTCC -GGCGATGCATTCAACATATTCAAGCCTTCGTCTGAAATATCTGGCCAATT -TATAGAAAAACCGACAAAATAATAAGCCTCACTTTCTTTTCGAGAGGCGT -CTTCGTCAGATGACGTGTACGAATCCATTTTCTGGAATTTGAGGATTTTT -GAATGTTTTTAAACAAACTTTATAGAGAAAACATTCGAAACACTAGAAGT -TATGTTGAAACACGAGAAAATTTTTTAAAAATCCATGAGAAAAACAGTTT -TGAAAAATCTGTTTTTGGAGGCTCTCCGGATTTTGAGGAATCGTCACCCC -GGAGACGCAGATTCTCCGGTAATTTTTCATTCATATTTGAGTTTAAGAAC -AAAACAGTTTAAAAAAATGTTTTTAGTATTTGAATGAAACTTATAATGTA -TTTTTTCTTCCATTAAAACTTAAAAAAAACTACAAAATTATTATGAATCA -AATTTGAAACCGTGAATCAATCTCCGCGGAAGGGCGAGTCTATACTGCTG -CAAGCGCACTCTATCGCAAATGTACAATTGGCGGTTTTTCAAACAGGAAT -TAATCGGATTCTCGTAGTTTATTTTGGATTTCTTTTTTCGGGAACATATT -GGTGTTTTTGCGTTCAATATTCAAATTTAGAGGAAAACTGCTTCAAATAT -TTAGGTAAACTCTTGAAACCGCTGAAAATAGGCAAAAATAATTATTTTTG -TATTTTTTAGGCTACTTTCTATACTTTTGCGTAAATACTATAGTTTTTCT -ATAAAACACCCATTAAAATTATTTTTATAAAATGATTTTTCCAATAAAAA -TAAAATGCGCAAAATGATTCTTTTCCAGAATCCTATATGCGCCTTTAAAA -TCTCTCGGATTACTGTAGTTTCAAAGAAATTATCCTTTATATTTTTAATT -TTAAATTTTTTCCTGAATGTCAAATATTAGGGGAAAAATTATAATAATAT -GTGCTTTATTCATATGAGTGTAGAATTAGTGAAAAAGAAAAAAAACATGT -ATGGACTGTAAAATTGGAATTTTAGCGAGAAAATAAAAATAATATGCAGA -AAAAATTAAAATTTTCAGGAAAAAAGTCAGTAAAGCCATCAAAAACTACT -CGATTTTGAAGGAAATCAGCAAGAAAAATTAGAAAAAAGTATTTTTAAGT -TGGAAAACCCCTGCTTGAATTTGTACACTAAATTGGGCATAAAAGCGTAC -AAATTCGCAAAAACCGGTAAAAATCTGGGGATCGTGATGGATGGAGTGTT -TTGTGAAAAAATGCAGCGAAAAATTGAGTAGACAATTTCAAAAATGTCGA -TTTTTGAAATTTGTGACGAAAAAATTGAACAAAAACTGTTTTTTTTTGGA -ATTTTCAACAAGAAGTTTTATAAATTTTTTTGTTTAAAATTTTGAATATT -ATATGAGTTTGGTTTCACTTAACAGAACAATTCGAACAAAAGTATTCTAG -AAAGGAAATGTGCGCTCCAGCACACTATTTGCCCGTGGAGCGCACTTGTG -TGCACGAACGCTAGCGAGAATGTGTGGTAGAAAGGGAGGGAATAGGAAAT -ATTAACAAAATTGGGCAAAATATGTAAGATTCGGAGAAAGAATTGGAGAA -AAATATGTATTTCGAGCTCCGCGAGCTGATCAATCCAAAGGCTTTCTCCA -TCCTTTTTTCGAGAGGCACATTGCATTATAGTTACACACAGCACGTGTAT -AATGGAACATTGAAGCCTGGAAACGAGCCATCGCTACCATCATTACCACG -TGGATCTGAAAAAATTAAAGTTTGATGATTCGAAAATTTTCTGGAAAAGT -TATGATTGTGAGATAAATTGAATTCTTTGAAAAATCAAAATTCAAAAGCT -TGTAGAAAATTTTATATATTTTTTTAAGCGTATTTTTTCCGTATACATTT -CCAAATTTTTTTGTTACCCAATTTTAAAGATTTTCTTGAATTTTAAAATT -TCTTTCAGTAAAAACTTTTTTTCAACTTTTTGATTTTTTTTCCGCATTTT -TTAAAATTTTATTCAGAATTATTAGATTCTTTTGAATTTAACGAATTTTT -TTCGCTAAAAAATTGTTCGATTTTTCCCGAATTAAGAAAAATATTATTTG -GTTTTTGAATTATTTTCCTGATTTTTTTCGATTAATAAATTTGTAAAAAC -AATTTTTTTTCTAATTTTTGGTTTTGATGATTGTGTTTTTTTTCTGAACT -TTACAGTTTTCAAAGTTTACACCGAACTTCCACATTAAAAAATTCTGATA -CAAAAAAGTATTCACATGATTTTTAAAATTTAAATATTTTTCAAAAAAAA -TAATATTTAAACTGTGTTTTTTTCGGAATTTTTTTTCGATTTTTTCCGAG -TTTTTTTTGGAATTTTTTCCTTTCTGCTCCAAAAATATTCAAATTCAATG -TTGTGTAGAAATTTTATTCAAAAAAAGTGTTCAACTTCTGAGTCTAAACC -TTTTCCGAATCCTTAAATCCTGGCAGAGCTCTCGTGAATTCAGTTGTCAA -TTTATGTGGATAGCAAGCTGCCAGTTTAATGAAAGTTTTAGTTCCTTTGT -CAAGTACTCGATTAATTTTCGAATAATCATAATCATCGACTCGAACACCA -TATAATCCTTGAGTATAGTTCCAAATTGCTTCACGGAATGCAGCAGTGTC -AATTTCATTCTGATTCACGGCGGCTGGTGGTTCTCCGTCTCCAGATGCAT -GGGATGAGCCGGATGGCCTGAAAAATTAATTTTTTGGAATTATTATATTT -TTCTGTTTTTGAAATTTCATGCATCTCGAATATTTTAACAAAATTACCAA -ATTCAACTAGATTTCTTACAACTTTCACTGTGTCGATTTACGGGTTCGTT -ATACGAATTGAATTTGTTTATCGATAGAATATTAAAATTTAGCTAAAATT -GAGAAGAATATAAGAAGAAATTAATTTTTTTAATTTCAAAAATCGAGCCA -GTAAATCGACACGAGCGATCGACACAGTAGTCATTTAAAGACCAGTTTCC -GCCACGAAATATTTCGCGCTTCAAACATGTTGCGTAGTACGTATTCTCAA -AATTGTGCGTTCACGTATAATATTTATGCGAATTTTTGGTCTACTTTGTT -AGAGAAATCATCACTAACATATTGCCAGTAAGAGTCCGAATATGATCGAA -CATTCGATCAAGCCGTGACGTCAGTGTATCCGTATACTCATTCATCGTAT -TATAAACATGATCCCATCCAAATTCTTCAACTCGGAATGGCGGAATATCC -TTTTCAGGTCGCTTTCTAAAATCAATATATCCAAATGTTCGATGATGCGA -GTAAATTGGATAATTACACGGCGGCTCTTTTTCCATAATATCTTCTCCAT -TTTCATCGATATTTGCAAGAAGAAGTACAGGCGAGTAGTTTTTCCGATTG -GAACTATATGTTGCTGCAGGAGCACTAATTAATGATTCAATAGTTTCAGT -AGTCATTGCACACATCTTCGCTGGTGGCCTAGTTTGTCCTTTTTCCGTCT -TTTTCAGCTCACTGATCAAATATTCGACTTCAGTTGGCCGACGATCTGGG -ACTTTTCGGAAATAGGCCGACATTCTCGCCTCCCAATAGTCGAGATCATC -GATATTAAGGAAATCAATCTCATCTTGTGTCAAATCAACACGACGTTCCA -ATCCAATACAGCATATAACTGTGCACATTGCGTGAGTCATTGACATTATT -CCGACGGCGTGGTGGAGAGAGCAAACCGAGAAAAACGCAGGACCACCGTC -TGGCGTGCGGCGAGCGAAGAGCACCTGGAAATTTTCAAATTCTTGAGAAA -AACCTAACATCGTTGTTATACGTTCGTTCTCTTGGCATTGGAGTTGGCAG -AATTTGTTTTGAAAAAACGTTGTTTTTTTTTTGAAAGAACATTTTTTTAT -TACGGGACCATGAGATCATGAGAATTCCTATTTACTGGCGCGAAAATATT -GGCAGGCCACGGCAACGAGAGAGCATATGGCAAAGAGAGACGCATCTTAT -TTTGTCTTGTAATTTTTTTTTAAAATAATTTACAATCCCTTTTCAACTAT -CGTGATTGTAAAATATTACAAATTTCAGAATTTCGCTACCAAATTATTAC -TGGAAAACTAAACTCTGAGAATGCGCATTGAGCAACATATTTGACGCGCA -AAGCATCTCGTAGCGAAAACTACAGTTATTCTTTAAATGACTACTGTAGC -GCTTGTGTCGATTTACGGGTTCGGTTTTTGAAATAATTTTCTTTTCGAGA -AGTGACAGTGATATTCCATTTTCCTTCTTTTCTTCCTATTATTTTATCAT -TATTTGCTTAATTTTAATATTCAATTCATAACTAAATTACTTTAATTCAT -TTCGAGTAGACATTCAAAGAATTCCGGTAGTTTTCGCTTCGAGATATTTT -GCGCGTGAAATATGTTGTGAAATACGCATTCTTAGAATATGGTGTTCCCG -TAATATTCAGAAAAGAAAAGATTTCCAAGAACTTTCTGAAGATTTCAATA -TTTGCAAAATCAGAAACCAGTTCTGAATATTCTTTATTTTTAGAAATTTT -TCAAGGTTTTCTAAATAACTTTTCTAAATAACCTACCGTATTTCTTCTAT -TAATATGGCTGCAATACTATTTTTCGATGGTCTTCCCGCTTGCAATACTA -TTAGGGAGTGCAAGTCTAATAGGGAGTGCCATACTATTCTTCAGAAAATT -TTTCTGTGTTGGGGCTTACTAGATTCTACTTGAAAAAACTCCAATTTTAT -TTGGAAGTATAGAAAATTTGATTGAAATTGCAACAAAAAGGTACAATAAC -TTCAATCTCTAAAAATTTTGTTATAAACTGTTGCAAAATAGGCAAAAAAT -GTTATTAAAATTTTAAAATTAGTAAGGAGTGTTTGCAACAAAAAAAAGTA -GGTGCAAGACTATTAGGGAGTGCAACACTAATAGGGAGTGCAATACTAAT -TTTCGGAAGGTCTCCGAGGGGCAATACTAATAGGGAGTGCAAATCTAATA -GGGAGGCCATATTAATAGAAGATATACGGTATATATAGCTTTGAAAAATC -GGAAAATGCCTAATTTTTACTTTTTGAGGTTTGAAAATCTCTAAAAATTC -AATAAAATTTCAAATTACCGCTAGATTTTTCCAATGAATCATCCATGGTC -TATGACAGAGCATTCGATTCAAATAATCCAATTTTCGAAATTTCATGTAT -GACCAATCAATGCCCAACAACCACATTTGTTGTCCACCCTTTTCCAGAAA -TTTGCGACGATGATGATCCATAAGTGATAGGCATCTGTGACGTGATGCAG -CCATTAGTGCAAGATAATGACGAGCCGAAGCTGGTAGATCACTTATATCA -ACGAACATATGGCCATAACTTCCTGTCATATGAACATGTAGAGTTGGGTG -TTTACATGTGAAACGGAATAATCTGGAAACGTGAGGGAAATTAGTTCGAG -ACGGGGAGGGGCAGGTTGGCGGTGCCAACCGACAGCCGAACATTGGGGTT -TCTCAGCTGGTAGCGCCAGCCGACAGTCTACTGCAGTACTGCAGATAAAT -TTTCGTCGGCTGTCGGCTGGTGAAAATTTTCATGAAAATCAATAATTTTA -AAGAAATTGTTGCAAATTTTTCCCAAACTTGACCAAATTTGTTGGCTGGC -TGTACCAGCCGACACCCGAAATTTAGAACATTGATTAGAGGCTGCTTGGC -AGAAATAATTTTAAATTCAGAAATTCAATTCGTTTTCAAAAAATATTTTT -TAAAACTTTACCGATCAACTTCTGGAATCGGATCAAAATTGAGCCAATCC -ATGGCTTTTCGTCTTTTAGTTGTAGTGTGCATTGTGTAGATCTTTTTATA -TTGCTGCGAGGTGAGTAAATGAAGAATTTTCGCGACCCGTTTCTGAAAAA -ACTCAGTTTTCTAAGGAAATTTTGAAAATAAATTCGAGAAAAAGAAACTG -AGTCAGCAAAAGAAAATTGGAAATGTCTGTCTGGAAATATTCGAATATTA -TATTCAAAAGTTTTCAAAAAAACAACGAAATTACAAGCAATTGTGATCAG -AAACCGCGGAAGGAACTGGACGAAAAAAATTATCTTTGAGACGAATCTCT -TTGCATCTTTGTGATCTAAAAGATTAATAAAGGTTGTCATCACATTTTTC -GAGATTTGGGAATGTGATAAGGGTGAAAAATGGAGATTAATTGTGGTAAA -ATGAGGAAAAACCTAATTTTTGGTGAGAAAATTGTGGAAAAACTATAAAA -GAATCTTTATGGAGTTTAAAACTCAAGTTTTTCACGCTTTTCCGCACTGT -GCGGAACGTTTTTTGAGAGAATTTGGCCGAATTCGGTGATTAAAAAAATA -ATTTCAAAACTTTGCGCCTCAATTGTGATGTATTACCGTACTCTGTTGCC -ATTCCACCAAAATTTCCTTCATTGTTTTGCCATTTTTCTGCATAATAACT -GTTCTGGGTTTTTTTGCTTCATGTGCCCAAATGTACGAATTTCCCTAAAA -ATTATACCTATTTTTTCAAAATTTTTAATCGCTAGAATTTTTTTTTCTGC -ATTTTCTTTAAAAAAAGAGATTTCTCGCAAGTAGAAGGAGAAAAAATGTG -TGGCTATACTTCTTCTTAAAGAATGCACGACTAGCCATAGCTCAAGCCCC -CTCTGGAACGTTCCATCTTCCTCCCATTTTCCCACGTTCAAGAATCATCA -GCTTCTTCTCCCTCAGCTTCTCTTCTTCTAAAACCACAACTAGACAAATG -TTCTTGTTTTCCACCCTATTTTTCACATAAAACCGCCGAGAAACCCGCTA -TCACAGACTCAATGCGCACCGGAGGGGCTCTTTGTGTGTGTGTACTGATC -TCTGCGTTATATTCGAACACCGGCGCACACTCGGATTGAACCAGAGGGGG -GGGGGGAGGGGGGGGGGGGGGTGAAAAAAGAGAAATACTCTGAAATTCCA -TAAAATCTAGAAGAAGAAAGAAAACAAAGGAAAAATTGGACATTCCGAAG -TCAGGCTAAAAAATCTCATAAAACAAAATCTATTCGATTTGTGACCATTT -TCATCTATCTCTCTCAAAACCCGAATAAACAAAGCCTCCCGTCCCCAAAG -TGTGCTCTCATGCTCTTCTGGAGCCTTCTAGACTGTCTGTAGAGCCTAGA -GACAGCGGAATTGCACTGAAGTGATGGAGAGACGTAGAGAAAACGCCTGA -AGAAAAAAACGAACACTTTGGTGGAGGAGGAGATGGCTTCCCTCCAAATA -AACAACAATTTCTATCGTTTCTCTGTGATTGTGTTCTCTTCTATGTATAC -TGTTACGATATTGAACAGGAAATTAAATTGAGCACTCTGAATACATAATA -CACAATAAATAAATACAAAAACTATAGTTTCAGCACAAAAAATTCGAAAA -AAAAACGATTTTTTTTGTCCGAGAGGAGTATATGGCCTAGAAAAAGAAAA -CTCGGCCACTCTGATGCAATAAATTTAAAAAATTATGGCCGAATTTTAGA -TTTCTCAGGCCAATTTGATACGTTTCTCGAAAAGCCATAAATTAGTCGGT -TTTTCACGGGCTTCTTGCCTTCCTCATTGCATTTTTCGCGCTCCATTGGC -AATCTCCTGCTGGACAACGCGTGGGAAATCGTGTGCCCCACACGGGCAAA -TACATTTTGTTTTACAAAGAAAACCGTGCCGCGACGCGACACGCAACGAG -CCGTAAATCTACCCCAGATATGGCCGAGCTCAAATGGCCTAACCTGTCAA -AATCTTCCACTTCAAAATATGAGGGAAGCCAGAAGCGCGTGTTGTTTCTG -AAAAAAAAACCCGCCTAAAGTTGATTTAAATTATCGTTTTTTTGGAAATA -ATAAAATCGATGAATTTGTAGATTTTGATAAATTTCCGATAAAAAAAAAA -TTTTAAAAGAGGAAAAAAAATGTTTCTTCGCCCTTTAGTACCAAAAATAC -GCCCAACTAACCAAATCGTTCTTTCAATCTTTTTTAAATGTTTGTGCGTC -TATAATTGTCGCTTCAGAAAACTACACAAAACACACACACACACAAGGAG -AAGAAAAGAAAAAACGTGTTCCATGACCTGCCACTGGGATCGATCTGTAA -AAGAATTGGGGAAAATTGAGGTAAACTGGTTTTTTATCGGGAAGATTTTT -TCGGAAGGATTGAGATGAAAGTTCGAAAGGTAATTGGCAAAGTTGAAAAT -TGAAAAATTCGAAAAAAATCTCAATTCTCTGCTGTAACCCCCAATTTTGC -GTCATGGCCTAGAGTATGCAGCGTGGCCTAGAAATTCCTAACGTGGCCTA -AAAGATCACGGCGGTACCTATGATTTTCTAGCGTGACCTAGAATATACCA -GACCTAGAATTTGATAGCGTAGAATTTCCCAGTATATCCTAGCAGTCTTA -AGTGACAGTTTCTCAGTACGTCCAAGAATTCGTCAGCATGACCTAGGATG -TTAAAGCGTGGCCTACAAATTTTCAGAGTCTTCTAGGATATTCCAGTCTA -AAAATTTTCAGTGAGGCCTGAAATCATCGCGTGTCCTAGAATGTCTAATA -ATTGCAAAAAAAAGATTTGAAAACTAGTATTTACCCTAAAATTGCATTTT -GAGCATTATTTTTAATCTAGTTTTAAGGAAAAAATCAGAAAAAATAAACA -TTTTTTGATTAAATCTTCCGATCTACAGATAGAAAGTGTGCAAGAAAGAA -TGCAACATTGTGCTCGGTGGAGCAAGAAGATAAAAGAAAGAGAAAGAAGG -TCCCCCACCCCTCCAGTGGTCGAAACAATGATAAATTGGACAAACGGAGG -ACCAAGGGGCCGGGCAGACACAAGAGAGAGAGTACGTGAACTGAGGAGGG -TGTGCAGGGAAAAATGGGATGGGGGCAAATCTAGTTCAAAGATGAGACAC -TTTTCAGGATCTTTGATTCTGAGAAAAATTTTGAACAAAAAGAATACTTC -AATAATTTAATGGCACATAGAAATATTTTCAGATTGTTCTTCAAAAGAAA -AATATTTTTATGCCCGGAAAATTTATTTATTGCATTTCTTCCAAAACAGT -GGCCGGTCTCGACACGACAAATTTTTGTTAAATGCGAAGAGGTGTGCGCC -TTTAAAGAGTACTGTAATTTCAAACTTTCGTTTTAATATTTACTTGTGGG -AAAACATTAATGCTTAACGAAAAATTACAGTACTCTTTAAAAGCGCACAT -CTTTTCGCATGTGACAAACATTTTCGCGTCTCGGTGACAACTTTTAAGTT -AAAGGCACATAGAACTTTTCTGAAGAATTTTATTTATTTTTCTGAAAGTT -AATTGCTACAGTATCCTTTTTCAAGTCGCACCGAGAGCCAAACTGTAGCA -AATCATCAAAAAAAAGTCGACAAAACGTGCCGAAATCAGTAAACTTGAGA -GCTTTAAAACTCTATTATCAGTTCTTCGCCAACAAAAAAAAAGAGTACCG -TATCAAAAACGAACTTCGACTTTTTTGGCTCTCCTGCATACGGACATGAT -TCTGATTGACAGTTTTCATGTTTTTTTTTGGGAGTTTTATTTATTGTGCA -TTTAAAAAATCGTATAGTTTGATGCGTGGCCTAGAATTTGCCAGTGTGAG -CATTAACTCTCCACGGTAGCCAAGAAATTTTCTACGGTGGCCTAAAAACT -GCCAGTGTAGCCTAAAATATTTTATTGTGGCCTAAATTTTCCAATGGTCT -GTTTTTTTTATAGTTGCCTAGAATTTCTTTTCGTGACCTAGAAGCGTACA -GAGTGGTGGCCTAGAAAACGATTCATGGCAGAGTTTTGAAAAAAAAACGA -AATTTCGAGAAACAAGCGAACAAAAATCGTCTGTCGAAAGAGTATTTCGA -ATGCTGGGGATGCAAATCAGCAAATCATTCAAAAAAAACTTTTGTGATAA -GAAATCAAACTGATAAGCCAGTGTCAAAGTCTCGAGGATTAAAAATAGCA -TTTCAGGTCGGGGTACGGTAGGGTTTTTGTAGAAATTAATGCAAAATTTC -AGTGGGAAACGAGTTCGTGGCCTAGAAAAATCATGTCTGAAAAATTGCAA -ATGCGCTCCCCCGAAATGGTTAAAAATTTTCAATTGATAGCCTATTTGAA -GTGGCGGCCTAGAATATCAAATAATGGCCTAGAACTCAAATTGGCGGCCT -AGAAATCAAACTAATGACCTAGATTAGGGCATCTTGTAGGCAGCTTAGAT -CACCTATTATAGGCAGGTGTAGGTAAAATTGTAGACAAATGTAAGTTTCT -TTGAAGATAGGCGTAGGTTCCTTTGCAGGCATACATAGATCATTTATTAG -GCAGATGTAGGCCTGATTGTAGGTACAGTGCCGGCCAAAAATATATCCTA -TTTTTGACTTTTGATAAATTTACAAATTTTCCAAACGAGCACAACTTTAA -AACTAGAAATGTTATCGAAAAAAGTTCAACTCATGTATGTATTGCCCATA -ATTACGTCTACTCGTATTCAATTGTTTGTTGTTTACTAGTGTCACGACAA -CAAATACAGCGGCCGACATCTCGTAAGCCCGTTTTTGACAACGTTTACTG -ATTCGGCCGTATCTCGAAAACTAATTTTTTTCTGAAAATGTTGTTAAAGT -GAAATAGTTTTCATGTTATTTGTTATCATTTGTGTTTATTCACTTTGTTC -TGAAAAATCCAGTAAAAAAGTTATGGGAGTGCAAACTTGTCGCTCACTGC -CACTCACCCGCTACAATCAAAAATCAGGTTACTTATAGTTAGTTCTAATT -TTTTTTTTGTAGAGCATTTTTTAGAAATAACACATGTAAAATCACAATGA -AGCTATATTCAAACACGATATCAAGATTCAGGAAAAAATTCATTGTTTGC -GAGAAATGTTCAAGGCGTGGCCAAACACTATTCAAGTTTAATCTCTCATA -ACTCTTTTTCTGGATTTTTCAGAACAAAGTGAATAGACATAAATGATGAC -AAGTAGTATGAAAACTATTTCACTTTAACAACACCTCGAAAAAAAAATCG -CTCTCGAGATACGGCCGAATCAGTAAACGTTGTCAAAAACGGGCTCACGA -GATGTCGGCCGCTGTATTTTTTGTCGTGGCACTGGTAAAAAACTTAAAAA -ATTGAATACAAGTAGACGCAATTATGGGCAATACTTCATCAGTTAAACTT -TTTTCGATAACATTTCTAGTTTTAAAGTTTTGCTCGTTTGGAAAAGTTGT -AAAGTTATCAAAAATCGAAAATGGCATATGTTTTTGGCCGGCCCTGTAGG -TTAAATATTTTCGTTATCAGGTGTAGGCATGAATCGCCATGTAGGCGGGC -GTAGGTATCTTCTAGGTAGGCGTAGGTTACCTGAGTCAAATTATAGGCAG -ACGTAAGTAATCATAAAAATTGACACTTTGTGGGCAGGCGTAGGTCACCT -TTTAGACAATCATAGTTAGCTTTCTAAGTAGGGTTAGGACACCTATTATA -GGCAGGTTTAATTCCTCTTATATGTGTGCGTAGAACACGTTATAGTCAGG -TGTAGGTCACTTTGTAGGCAAGTCTAGGTTCTTCTTTCGGCAGGCGAAGG -TCATCTTCTGAGCAAGTTAAGGTTCGCCTTGTAGGTCGGTGTAGGTTGCC -TCGTAGGCAGACTAAGTTACCTTCTGGGCATGCCTAGATTGACTAGTAGG -CAGGTGTTGGCACCAAGGGTGTCAGTGTCCCGTAAAAATTACAAAAACGG -GACAACGGGATGTCCCGTTCCCGTGAAAATTTTAAAAACGGGACAACGGG -ACGTCCCGTTCCCACGAAAACACCCAAAAAACGGGACAACGGGACATCCC -GTTCCCGTGAAAACGCTCAAAAACGGGACAAAAGACGTCCCGTTCCCGTA -AAAATGACAAAAACGGGACACCGGGACGTCCCGTTCCCGTGATAATTTTG -AAAACGGGACAACGGGACGTCCCGTTCCCGTGAAAACACCCAAAAAACAC -CCAAAAAAACGGGACAACGGGACAAACGGGACACGGGACTTGACACCCTT -GGTTGGCACCACTGAAGAATGCTGAAACCGACTTTTTTTTCAAAAATGTC -CTGCTCAACGAGCCGAATGCATTTTGGTCGGATTATATTGGCACACCTTT -TTGCCCCCGAGAGAATCATTGAACAAAATCTCATGCACTTTCAATTTCAT -TTTTCATTTCATCAAATAAAAAGATTCGGGAGGATTTGATATATATTGGA -AAAATAAATGAATGGGGGATTTGTATGGTGGGGGAAAAGTGCACACCCGG -AAATGAGCAGTAGGATTTTGAGCAGGAAATTGAAGGAGCTGGAGCAGGAG -AGCAGCTACAGTAACCACCCCTTCACAGCAAAACACATGGCTCATAAAAT -TGAATATTTGAAGTGAACTACTAGTGATAAGCGGTGAAACGGGGTATGTG -GCACTAATTTTTTTTTCTTCAAAAAACCCATTTCTTATCACTTGTGTGCA -GAAGCATTATGGAGACAGGCAGGAGGCAAGTGGTGGTCTAAAAATTAGAA -AAGTTCGGCCACAGCTTGCCCGATAGGAGCACACGGGCATACTGTTTCAA -CAAAAATTCGAAAAAATTGGAAAATCCCGGAATTTTGATTCCGCGGAATC -CGACGATTAAAGAAATTCTCGCGTTTCTGATTTCACGGAAATCGGTATTC -TCGAAATTTGGTTTCTGCGGTGTCTATTGTTTTGGAAATGTTGTGTTCAT -GTTTTATGAAGAACAATATAATATTATGTATAATAGATATTATATATTAT -ATATAATAGAATAATTTTAGTAAAAACCCCACAAAACTTCGAAAATAGAA -GAAATTCTCGCGTGTCTCCAAAATTACAAAAAAATCAGTTTTTTTCCTTT -ATTTTATATTACACAGGATATTTATATCAATTCAGCAAAAAAACGGGCGG -GACAGAAAATTAAGAAATTTGCGAATATTCGTTCCCACGGAAGTAAATTT -CCCCGAATTAGAAAAAATTCGAATTTTTACTGGATTTGTCTCAAGCTTTT -GAATCTAGAAACATTTTCTAGTAAAATCTCTTTAAAAAATTTTTTACACC -AAAAAACTTTTTAGGCCCTGAATTCTGCGAATTAAAAAATTCCGCAAGAG -ACCACACAAAATCGAGAGACTTAGTTAGACAAGTAGAGGGAAAAATAAGA -GGCAACAAATCATCGAAAGTTTTTTTCTGCAGAGAGAATGGGGGAGAAGT -TGCGGCGCTGAAAGAGAGAGAAAGAGAGAGAGAGACAGAGAGGGTGAGAG -ATATAACAGAAAACCAGGATAGTGCGGAGGAAGAGAAGAAAAAAGTGTTA -GAAATATTTGTCCGTCGACGCCTTCTTCGTCTTCTTCGTCGCCTTCATAA -ATGAAACTATGCATTTTCCTCAGATATTGCCTTACTATTAAATGGGGCCC -GGGCTAAAGGGTGTGGCCGGCCGATCCAAAACGGTGGCCTAGAAAAATAT -CGGCGGTGGCCGATATCAAATAAAAAAAACATCGATAGTTATGAGACCAT -AATTTTTAGTTTTTCAGATTTTGAGTCACTTTTCTGATTTTTATCCCAAA -AATAGAGCTCTTTGCTGTTTTTCTGCAGAATCAGCAGGTGGCAACTTGGT -TTTCGGAATTTGTGCTATTCTTAGAAATTCCCGACACAGCATCGAGTTTT -ACTGGAGAACACGTAGCGAGCACAGAAAAAGGAAGGAAAGACAAGAATTG -GCTCGGCGAGCAACCAGAAAAGCAGCAAGAAAAAACTGACCGAGCAAAGA -ACAGCGCGATGGGGCTCATATATATCTAAAAATGGATGGATGGAGAGATG -AGAGACAGCAGCAGTATTCGGTCAAATGAAGACAAGCCAATTTCGAAGCT -TATTTGGTATTCATGCGTGTCTTTTTTTTTCTTGCAAGAAAAACTGATCA -TTAGCAGAAAATTCAAAAAATATTGGTTGTCCGAGAGGAGTACAGAAATT -AAAAAAAATCGTCCGAAAGGAGTACAAAATTCAAAATGTCTATTATCCAA -GAGAAGTACAAAATTCAAAAGTGTATATTGTCCGAGAGGAGTACAAGATC -CAAAATATGAATTGTCCGAGAGGAGTAAAAATTCAAACCACAAAAATCCG -AATTTGCCAAGAAAGGGGCGGAGCCTGATTCGAGTGGAGTGTCGTTGCAA -AACGCAAAACTTCAAAAACATACGGTTTTCAAAATCTACCTCGCCGACCT -ACCGTAACCCTCTAAAATTTCTAGGATCAAATATCATCGCAAGAAAAGTG -TTCGTTCGAAACGAAAAATATTTCTGACGCCTCATCAATCATCATATCAG -TAACAAAAACCTGAGAGAGACGGAAACAAAGAAATATATTTTGAACCGAA -CAGGGATCCTGCAACAAATCACGTAATGGACAAAATGCGCCCTATTGCTA -AATATGCAGCAAGACGCAATTGCATTCTTCTGCCAGAATATCGATTTTTA -TACGTACTTATAGTGATAAAAAAAATGCTGAATTATCGATTTTTAATTCC -CCGGAAAAATGTGCGACAGAGCGTGTTTGCATTTTTTTTTTCGAATTTTC -GTGCAGAAAAACCCGTAAGCATCGATTTTTCTCAGTAAAAATTTCTCGCG -CCAAAATTGTTTCTATTTTTTTCGGGAAAAATCGAAAATCTCCAAAACTT -CGGTGGAGCGCACTTTCTGGACCACAATTTTTGAAGGGAAACATCACTTT -CTGCGGTTTTCAATAAACGAACAAACATCAACAAGAAACGAGAGAGAGTT -TTTGTTGACTTTCAAGAAAAAAATGGATATCGAATTTCTGTGCTCCATTT -CCCTCTCCGGGAAATGGCGCGGGGAACGTGCAAACAATGCGAGTATGTCT -AATGGCTCTCACGTAGATCGAGAAAGTGGAAAATTTGCTAGTATAGACAG -TTTAAGGAGGCTCTTTTATTCTATTGGGGAACCGATTTGTTTATGTCTTG -CCGTGGAGCGTAGTTACTGTAATTTTTTTGCAAACGTGCTCCATCGAACA -GTAAAAAAATCAGTATGCATACTAGTATGTACCTTTAAATAGCTGTAACA -CGAATTGCCTGTGAAAATAAAAATCTCGGCAAGTTCTCTCCATCGGATCA -ATGTAGGGAATTTTGCTGTTTATAATGCAAACTCGCTCTAATAAACTACA -ATTTTCGATCGGTATTTCATGCATTTCGACTGATTTTCGTTATTTTTTAT -GTACGCTCTCTATTGAAACACGGGGCCCGAGAAAATATCCAAAATCTAGA -GAGGTTGTATTGCTTAGGCTTAGCCGAAAACCTGTAAAGATTTTTTAAAA -ATTGTTCAGCCTGCGATGGACGACTTTTTGTAAAACTTGGCCACCAACTT -TTTTACGGTGCGGCTACATCGCATTTGGGTGACCTTTAATGTGTTCAGGG -TGTCTAAACATGCACCCAAAAGAGAGTGTCATTTTTAACGCGAAACAGCA -TCAATCCAAACGGGGCGACAAAAAATGAGAGAGAGAGAGAGAGCGGGCGC -AATCTAATGTTTTATCAAGTGTCTCTTCTTCTCCTCCGACCTCGTTTGCA -TCCCCCTAATTCATCATTCGTCGGTTTGTAATACAGAGAGAGGGACATAG -TGAGTGAGAGGGAAAATTGAGGAGATTCAGAGAGTTAGAAAGAGAGAGTG -AGAGGGAACTTCAACTTTTTTTTTCAAAAGTTTTGGTCGATGATTTTGAC -ATTTGATAAAACTGAATGAGAGATGATGCTTAGATAAATGAAAATTGATG -AGATGATATTTATAAATGCACTTGCGATGTTGTTTTACGTGCAAATTGCT -GATTAGTCGAGAAGTTGTGATTTTCGTGTCGGGAATATTTCACTAGGAAC -GCCCTTGCGCCTTTAAAATGTAAAGTAGCATAATTTATTTTCAGAAAATT -TAAGCGTTGGAAAAATAAGTAGTGCGCAACATATTTGACTCCCAAAATGT -TTTGTAGCGAAAACTACAGTAACTCTTTAAACGAATACTGTGGTTCTGGT -GTCGAGTTACGGGCTGCCAAAATTCGAAAGTAAATTCATTTATAATCGAA -CCCGTAAATCGACACAAGCGCTGCAGAAGTCATTCGAAGAATTACTGTTG -TTTTCGCTACTAGATATTTTGCGCGTCAAACATGTTGCGCAGTACACATT -CTCAGAATTTTGTGTTCCCGTGATATAACAATTCATTTTTCTGTCTATAA -CCTCTTTCAATTATAAGAAACCATTTGCAGCGAAACACAAAAAATTTAGC -CGATTTCTATTTCACCTATAAAATTCGCGTCAAATGGCCCGCGCTGTCAA -GACAGTCATAAAACCAAATGTTATGCAAATGGCGTAAAATTCAACAGTGC -CCGCCCGCATGGTCATTGATCGTTTAAGAAGAATGGAGGAGGGTGCGGGG -AGCATCATTTCCTGAAATGAGCCCAGAAGCGAGAGATTAGAGAATTAGAG -AAATGAGAGATCAATGAGGAGAGGGTGAAAGGTATGAACAATGAATAAGA -AAGGGATGGAAATGATCACAGATGGAAATAGATGGAATAATGAAGTGCAT -CGATGCACCATTTCAGATTTTTCGGGCTTTTCGCAGATAATTGAGGAATT -ACATTTTTCGGGCTCCATCGATAATACCCTGCCGGACAACGCGTTGGAAA -GTGTGTGTACTCCACACGGGCAAATACCTTTAGTTTTACAATGAAACCCG -AGCCGCGACCCGACACGCAACGCGCCGTAAATCGACCCCAGCCGTGGCCG -AACCAAAATGGCCTAATTCGTCAAACTTTTACATTCCAAAATATCAGGGA -AACCAGAAGTGCGCGTTTCCTGTTGTCCGAAAAAAGATTACAACAAAAAA -GAAGAAATGGAGCATTTGCGCTCCATCACACTCTCAGACAATTTCATTTT -CCACATCCTATATATATTTTGGTTTTTCTGTCGTATTTTGTTTTAATTTA -TTGGTATTTCGTTCAAAAATAATTATTTTGACTGTATTTTTGGTTGCATA -CATGTAGAACTGCTGTTTTTTAAGATATTCTGCCCATTCAAGTTTTTCAG -TGTAAAATTGATATATTTCATTCCAACTGAAAATGAGATCGAAACGATGG -AAAACCTCGGATATTACTGATTATGGAAAGAAGAGAAAAGAATCGGAAAG -TTGTGGATCAAGTTCACCGATTCTCGAAACACAGTCATCTGGCGGTGCGG -AACTTGACGAAGTTACTGAGGATGAATATTCTAGTAATTCGAGCAGTAAT -GAAACTAGCGACGAAGAGGAAAACTCAGAAGTACCAAATGTCTTATCTAT -AACAGAAAGAGGTAAGAATTGCGTCTTCTAGTGATCATACTTTTCGCCAG -ATTCCCTAATGTAATATATTTTGTTGTAGAGAAAAGTTGGCAAAAGTTAA -CGGAAAACGATTTGGGACGAATTCGTTTCATCTTGAAGTACACTAGCAAT -ACTAAAAAATGCGTGAACGAGTATTTTCAATATAATCATGGGCAAAACAA -TGAAATTATGAAAAGTCTATTATTGGATACCGATGGAACTATGACTGCAA -AGGCTTGTTCGGAATGTGCCTACGATTTGAATCAGTAAGTTACTCTCTCG -ATTTATTCCCAAAATTAATATGTGCTTCAGGTGCCACTGCAAAAAACCGC -TTCGCTTCATCAATGCTCCGTGTGGTTGGTTTGCTATTCAAAACTATAAA -TAGTTCACTGTTTCCGTTCAGAGGTCATCAACCAAGTTCTTCATGTTGAA -AATGCGGAGCCCACCAGGATCAACCATGTAATCGCAACACTCTTCCGGAA -TCACATTGGCGAGATTTTGTTGGTCCACTCTATTTCTGTGCGAGAACTGT -GATAAAACTAGTATTTTCAGCACAAAGGCTCGAACTGCGGAAGCTCGCGC -ATCTGAAGAAGCTCAAATCAGGATTCAAATCCAAGACAACTCGAACGCAT -TCCAAAGATCGTATCATAACGATCCACAACCTTCATCAGCCGAAGAACAT -GAGGAAGATATCGTGGTGGATGGCTGAGTACGGAGCTCAAATGCCTTAAG -GCGAAACAATTGGTTTTTTAATTTGCTGGTTATCATGTTAGATTTTGAAC -GTGTTAGGTCTTTCAATTGTTTTTTTTTTTCGAAATGTTGTTGTTCTAAT -AAATTTGTTTTATTTAATCAAACGTTTTTTAGTCTACTACGGGCGTGAAG -CCAGATATCAGTGGTATCTTCTTATCAGAAGCTGAATCATTTCCGGTTGA -CAATGTTTGAAGGACATAAGAAAGGCTGTGTTACTGATTTCGACCATTGA -TTTGTTTATATATGGATATGTTCCACTGCCTTTTGGAAAGGCAGTATTCC -CGGTATATATGGGCCTAATACGGAATCTAAAATAACCTGACACAAACCTG -ACGTTGACCTGTTGCCGGCCCGCGGCGGCTTAGTGTCAACTTGACAGCGG -GTCGCGATTTCACCTGCCAGTTGTTCTCCATTCAGCAGCCAGCGACCTGC -TGGCAGGTTGCCACTAACCTGACGCGGTTTACCTGTGTTATCGGCGCGTG -CATAGCTTAGTGGTTTCAGGAAATGATGCTAGTAATCAGAAGATCGGGGT -TCGGGAAACGGCAGGGGCTTGAAGGTTAGGTTCTATGAAGCAGGGCGAAG -GGTTGACAAGGAGAGGCAATAAGCAAGTAGTAGGGGTTCTCTAGAAAACA -TTTTTGTCTTTAATATGCGTTTCCTACTGATTTATTATTGATATTTGGAT -CCCCTTTTCTAGAAAAAAAAATCAGAATCAGCAGAAAAATTTGAGAAAAA -GTCATAGCAAATCAGAGTTGGTCAGAGTAAATCAGAGCTAGTCATAGTAA -ATCATAGCTAGTCAGAGAATATCAGAGTTAATCAGGGTAATAAGTAGACC -TAGTCATAGTAAATCAGAGCTAGGCATAGTAAAGCGTGGTTACTCCGAGT -AAAACCACACTTGCACCGAACTGCGGTTAGTGTGCTTTACCATTATGTAA -CTCCGCTTTTTACTCTGAGTTAGTATGATATGGTTTGTCTGAGCTGTGGT -TGGGCTTCGCGGGAAACTTGAATAATTCGAGACAAAATCTAATTTTAGCG -AATTTTCTTTAATTTCTTTGAGGTTTCTACGACAGAACTCGAAAAATTTC -GGGTTTTAATGTTTACACATTTTATTTAAAATTGAATAATCAACTGCGGG -ACTCCTCGAAAATCACATGCTCATTTAAATTTTGAAGTTCAAACCTCAAA -AAACGCGCAAAAACCAAATTCAGCTAGGATATCAAATTTATGATTGAAAT -CTATATTTTGATGCGGTGTTTCTGAAGTTTTCGCGATAAAATCCGAATAA -TAATTCCACGTACCGTATATTCTCTATCTAATTTCCAGGTCATTTTTTAA -TGCAGCACTATTAGAGACTGTCGTACTACTGGAGACTGCAGCATTAATTT -TCGAACGGCTACTGTCAATTATAGATCACTAGTATTTAGTCACAAAAGCT -AATTTTTTAAGCAGAAATTCATAAAAATGTTTTCAATATTGCGAACTTTT -GTAACAAAAAGACCCAGTAATTCAATTACTTTCGTAAATTATCAAAAAAT -CATCAAAAATATACAAAAAAATACCAAAAAATATTGAAACTTTCAAGTGA -CTCTTTCAATAGAAAATGGGGTGCAGCACTAATAGAGACTGCTGCACTAT -TTTTCGGACCCTTTTTGAATGCAGCACTATTAGAGACTGCAGTATTTACT -ACTGGAGATGCAGCACTAATAGAGAATATACGGTATATACGTAATATATT -CTTGCAGAAAAAAGTACGATTATCAATGAAAAATAGCTGATAAGAGGCTT -TTGTTTGAACTAACAGACGGAACGACTCCGGTTTAGTTCAAAAAATTCTA -AAAACACGTTGTGTCAGGCTGTCTCATTGCGGTTTGATCTACGAAAAATG -CGGGAATATTTTTCCAGAAAAATTGTGACGTCAGCACGCTCTTAACCATG -CGAAACGAGATGAGATGTCTGCGTCTCTTTTCCCGCATTTTTCGAAGATC -AAAACGAATGGGACTTTCTGACTCCACGTGTAAAAAGGGGTTACGACGGA -CCCTGGCCTAGAAATTAGGCGTGAAAATTCTCGGGCACTGGATGTAGTGA -ACGCCCGCGATGAAAAATTGGGGGAAAATTAGGCTTTCTTTGCGAGAAAG -ATTAATTAAAAATGTTTTCCTTTGTCGAAAATAATTTTTAAAAAACACAC -CACGTGTATTCAGCTCGACCAACGCCTCGAAAATTTTCAAAAAAGGCGGG -AAAAATTAGTTGAATTCGCCAAGAGGAATTTCACCGCAGCGCGTGCAAAA -ATTTCAGCATTTGCGCGTGACGGTGTTTGCACAAATTACACCGAATGGTC -GAGCTGAAAACACGTGCACACTTTTAAATAAAACTAGAAAATAAATCCCA -GGCCTGCAAATATTGCACACAAAACCGTAATCCCCTTCGCGCTAAACAAC -ACGCGCAACGATGCTCCGCTTGGGGACAAGGAAAAATTAATTTAACTCGG -GATTTTCATTAAAAAATTAGGTTTTTAGTTAATTTTTCGATGTTTTCACT -GCGAAAAAGTGTTAAAATAACGATTTTTCAACCTATTTTCAATTAATCCG -TGCAAAAAATCGTGTATTTCTCGAGTTTTGAAAGAAATTTATGAAAATCG -GCATTTTTAATAATGGTTTTTCAAATAAAAATATAATTTTTCGGTGCAGA -AAAGTCGTTGCTCGTACAGTTTTTTTAAAGCATTTTCACATCAAAATCCT -CCATTTTTCCAGTAAATCGATATGGAGTGCGACGAGACAAAGCTGAGCGA -CGGCGCAAGCGGCTGGGTGCCGAGTATCCCGACAGATATCGATTCAAAAG -ACACACCGTTGCTCGATATATCTTCTCAGGCGATTTGGGCGCTTTCCAGT -TGTAAAAGCGGTAAATTTTCCGACTTTCAAGGGAGAAAAGTGTAGAAAAA -TCGAAATTACTTCTTAAAAATCTCGTAAAAATCGAATTCTTTCAGGATTC -GGCATCGACGAGCTCCTATCCGACAGTGTTGAGAAATATTGGCAAAGCGA -TGGCCCGCAGCCGCACACGATTCTTCTAGAATTCCAGAAAAAGACCGACG -TGGCTATGATGATGTTCTATTTGGATTTTAAAAACGACGAGTCTTATACA -CCGTCAAAGTTAGCATTTTTGGCTTTTTCAAACGAAAAAATACAATGAAA -CACTGAATATCTAGTTTTTTTCTCAATTTTTGCCTAAAAAACGGCGATTT -TTCACTAGCTTTTCAATTAAAATTTGAACAAAAAGTTTTTTAAAGGAAAA -ACATGAATTTCTAGCTTTTTCAGAGGTTTTCTATTAAAAAATAGAGATTT -TTGTGATATCTGACTGAAAAATTACCAAACTGTCGATTTTTTTAAACTAT -TTTTCACTTAAAATCTGCAATTTTTTTTTTCGAGGAAACATGTGAATTTC -AAGCTTTTTCAGAGATTTTCTATGAAAAAGGTTCGTGCCGAGACCCATGT -GCTTTTAAACTTCAGAATTTTCCCAATTTTGAAATTAAAAAGAGAATGAA -AATTGATTTTCATGGAAAAATGCGTTTTTGGCCCAAAACCTCCAAAAAGT -ACAAATATAGGTCGACTTTCAACTGTTTTAGATCAATTTTTTTGCAGAAT -TCAAGTAAAAATGGGTTCATCTCACCAGGATATATTTTTCCGTCAAACAC -AAACATTCAACGAGCCCCAGGGATGGACATTTATCGATTTACGCGACAAA -AATGGGAAACCGAATCGCGTTTTTTGGCTTCAAGTACAAGTTATTCAGAA -TCATCAAAATGGGAGAGATACTCATATAAGGTAGAGGAATTGAGAATTTC -AGAACGAAAATTGCCGAAAAAATGAAATTTTAGCGAATTTGAGTCGGAAA -TTTCGAAATTTGATTGATTTTAAGCAAATTTCCAACTAAAATCTTGAAAA -TTTGATCTTTTTAGATAAATTTTTTTTTAATTTTGTGCTTTTCAAAAAAC -CTCAAAAAACAATTAAAAATTGAAGTAAAATTAATTTTTCAACAATTTTT -GAAAGGCCGAATTTTTGATTGAAAATTTTCACAATTTGTCCATTTTGTGG -TGGGGCTTATTCCGAAAAATCGTTGTTTTTTTTTTCAAAAAAGTTATAAA -AACTTTAAAATTGCCATGTAAAATATGTTTATTCTCAGACCTCGTAGGCA -CGAAGCAGGCGTAGGTCGCCTCGCAATAAATTTGAAAATCTCAAGAAAAA -TCAATAAATTTGTGATTAATCAAAAAAATTTAATTTCCTGGTCCCAGCAC -GAATGCTATTTTTCGAAAAAAAAAAAGAGGCGAGCCTAATATAGACCACG -CCCACAAAATGGGCAAAAGTTTGATTTTTCAAAAAATCGAAACAAAAATT -TTTCCAATTTTGTGAGATTTTAAAATTTCCGGTTTTTGGAAAATCGAAAA -AAAATTTCTCGTTTTTTAATTTTCAAAAAAAATTGTGCCTAAAATTCAAA -AAAAAAATCAATACTTTCTCAAAATTTCCAGAAAACAGTCCATTTTCCAG -GCACGTTCGAGTCCTTGGACCCCAGCGATCTCGTGTCTCCACAACGAATC -GAATATTCACCGGAGAACCACACGGACCGATTCCCGATAAAAATATCACT -AATTTCGACGACGAGGATTTTGCCAATTTTATCGATCACTCACTTGTTCA -CTTATCACTTCGTTAAATTTACCTCCAGTGATTCCAGATAATGAGCCAGT -TTTGCATTGAAATTTAGTGCCAAAATATAGAAAATCGCATGATTTAACAT -AAAATAGCGTTTCGAATTGAAACAATGGAAAAAAAGTGCTATGATGATTT -TTTAACACTTTTAATTGTTCCAATTTGAAGTAAAATCTATTTTCAGATAA -ATCAACTGATTTTCTATATTCTGCCACTAAAGCTTAAAAACTTGCCCTGC -TGTCCTAACCTTCAAATTGTTCCCTGCAAATTTTATTATTCTTGTTTCAT -ATTTTTGCGATTGCTTCGCGAGACCCAAACTCACACATTTACCTGTAAAA -TATAATCGAATAATTATTTATATATTTTCTGTAAATTTCCTTAGTATACT -ATAAATTTTCTGATCTCTCTTCAAAAATCGCTAGAAAAAATAAACAAATG -TCGGTTTAAAAATTCCTGGTAATTTACCTTCTATAGAAAATTTTTCGAAA -AAAAAACCGAAGAAATTCAGATGGAAATTCCCGATCCCGAACTGCCGGGA -ATACCGATTGATCCGCAAGATTTGGAGATTCTAGACACGCCCACACGGTT -TTACGAGAAGCTTTTAGTGCGTTTTTCGTGTCGGGACCCGGAAATTTGAC -ATTTTTGGCGCGCGGCTTGTTAGACTCCAAACCTTTTCAAAGATTTTTTT -TTCGAATTAAATAACATTCGTGCTTGGGCCCGGAAATTGAATTTTTGATT -TGAAAACAATTTTTTTTGAGTCCAAAATTTTCAAAGTTTGTCCATTTTTG -GCGCGTGGCCTAGTAGGATCCGCCCCTTCTAAATTTTTTTTGAGCAAGTT -TTCTGAAGCATTGATTTCAAAAATTTTTTTTGGAAATTTCTGGTTTATTT -TTCCGGTTTTTTTCCGAGTTGCTGTTTAAGTTTGGAGAAATTCCAGAATT -TGTCAATTTTTGGGGCGTGGCTTTTTCAGTAAGCACAGTTTTTTTTTTTT -GAAAAATTGAAATTTTCGCGGTGCGGTTCAAGAAAAACCACAAAAACTCA -ATGATTTTTTAACGAAAATTTCAAATTTCTTGCAAGACCTACTGCAATTT -CGATTTTTAGAAACTTTTTGAAAAAAATCCGAATTTTCTGATTTAGCCCC -GCCCCAAAAATGGAAAGATTTCCGAAAATTCGAACCAAAAGTTCGCAAAA -ACTTGAATTTCTCTCACACAGATTGACGCGCTAATTTGAATTTTTCCAAA -AATAAGCCCCGCCCCAAAAATGGACAAATTTTAAAAATTTTGAACCAAAT -AAATTCAATTTTTTTTCGCTTTTTTCCGTTTTCGAACAAAAAATTCTAAA -AATATATGGTTCTAGGCGGGGCTCAGGCACCCATCTACCTACTTAAAAAT -GCGTTAAATTTCAGGAATTAACTGCATCAACCGAACGGCGTCTCGCATTG -TGTAGTCTGTATTTGGGCGAAGGAGATCTCGAAAAAAATCTGATCGCTGC -GATCCGAGAAAGATCCGAAAAATCCGAGATTGAAGTGACGATTCTGTTGG -ATTTTTTGCGCGGAACACGGACCAATTCAAGCGGCGAAAGTAGTGTAACA -GTGCTGAAACCTATTTCGGAAAAGTCAAAAGTTGGTTTTTTTTGCAAAAA -AAAATCGATAAATCGATAAAAACCGACAATTTTGAGAATTTTCATTTCAA -ATTTGAGTCCCACATGCGCCTTTAAATATGGTGTACTGTAGTTTTAGCTC -GAATGTTGAATTTCAAAAATTGAGAATAAAGAAATGTCGTGACGAGACCC -ACAAATGTTTTGAAAAAAATTTTCAATTTCAAAAAAATGTAAAAAATTGG -GAATTTCCCTCCAAAAGTTAAATTGGTTTAGTCACAAACTTTGAAATTTT -GAAATAAAATTTTTTTCGGCTAAAAATAAGTATTTTTTAAAAACTATTTT -GAAGAAAAAAAGTTAGGTCTCGCCACGATGTATCTTGTATATGTGTATCT -AAATTGCCATGTCGTGACGAGACCCTCTCATATTTTACACTGCAACTTTT -TCCTCACGAGGGACGAGGAAAAGTGGTTTCTAGGCCATGGCCGAGGGGCC -GACAAGTTTCATCGGCCATTTATCTTGCTTTGTTTTCCGCCTGTTTTCTT -TCGTTTTTCACAGCTTTTTCCCATTTTTTCTTATTAAAACTGATAAATAA -ATATTTTTGCAGATGCCAAAACGATTTTCAAGTAAAAAAATCATGTATTC -AGTGGGCAAGCAGCGGTGAAAGTGGGCATTGTAATATGATGGATTACGGG -AATACAAAACCTAAACTTTTTCTGAAACATGATACATATGATGCTTAAAT -GCTGAGACTACCTGATTTTCATAACGAGACCGCTGAAAAAGTTTTGAGGT -TTTCAAAATTCAACTTTTTGTGCGAAAATCTCGACTTTTTCACCGAAAAA -GTTGAATTTTGGAAACCTCAAAACTTTTTCAGCGGTCTTGATATGAAAAT -CAGGTAGCTTCAGCATCTAAGCAGCATATGTATCATGTTAAAGAAAAAGT -TTAGGTTTTGTATTCCTGTAATCCATCATATTACATTGCCCACTTTCACC -GCTGCTTGCCCACTGAATACATAATTTTTTCACTTGGAAATTGTTTTAGC -ATCTGCAAAAAATATTTATTTATCAGTTTTATTAAGAAAAAACGAAAAAA -ATCAGTGAAAAACGAAAGAAGACAGGCGGAAAACAATACAAGATAAATGG -CCGCTGAAACTTATCGGCCCCTCGGCCATGGCCTAGAAATCACTTTTCCT -CGTCCCTCGTGAGGAAAAAGTTGCAGTGATTTTGCTCAAATAAAAAAATC -CCCCAAAAACCGATAATTTCACCATTTATCAGATATATCTCTTCCACACA -CCGGAGCTTAGTGGCTTAGTAAAACGAGTTCTTCCACAGCGAGCCGACGA -GATTATCGGTCTCCAGCACATGAAATTATACATTTTTGATGACAATGTAT -TGATTAGTGGGTTAGTTTTTTGTTTGCATGGGTCAGACTACAAACTACAA -AAAGCCTAATTTCAGAGCAAATTTGTCGGATTCTTATTTTACTAATCGAA -CGGATCGATATTTTCTATTCAGAAATTGCAAACCATTGGCAGATTTCTTC -CACGAAATTATCAATGTTGTTGGTGAGTTGGCGATTGCGCTCCACCGCAC -ACACTGTTCAATGGGGCTCGCTTGAACTGATAATTTTTTCTAAAAAATTA -CAAAAATTGTTTTAATTTGCCTTCAAAAAACCATCAGTTAATTAAAATTT -TCTAAGCAAAAAATTATATACTTTCTAAAAAAATTGAATTTCCCGCGAAA -ATAATTTTTTCTGAGAAAATTTGAATTTTTCACCAAAATATTTTTTTCAA -CATTTTTTACCACAAAATGAGGCGGGGCCTCGGTATACACGCTCAAAAAA -TCAAAAAATACTTGTAAATTTGACTACCAGCTATTTTTTTTTCGAAAAAA -AAATCGAAAAGTAGGCCAGTTTTCGAAAAATTCTCGACAAAAATTCCGAA -AAATGGGGCGGAGACCTGTGCGGTATTCGGCATTCGGCATATGCCGATGC -CGGTTTTTGGAGCCCGTCATATGCCGTTATGCCGATTTGAAAATTCACGG -CATATGCCGAAAATGCCGTTATGCCGAAAAATCCCGAATGCCGCACAAGT -CTGGGCGGGACTTCAAAAACCACGCCCACAACAGAGAACAAAAATTTGGA -GTGATGGTTTGCAATTCCCTCGCGCACTTTTTCTTGTTTTTTTTCAAAAA -GATGAAAAAGCGCTCTACTGTACACGTTTTTTTTCGAATATTTTCATTAA -AAATCCAATTTTCAGCCGACTCGAGCTTCATTGTCGAAAATGAGCAACTG -GTGCCGAGCCCAAAATGTGATGTGCACCCATATTTAGGTAATCTGAAAGG -ATGGGTAACCTGAAATTTTTCCAAAAAAATTTTTTTTAAGGCTCCGCTCA -TCTCTACCGAGAAATGCTCAAAACACGTGTGAATCGAGTTATCGAAAAAT -ACAAAGAATCGCGAAAAACGTCGTCGAATTGCATGTCTGCTGACACGTGG -ATTTACCCCGTTTTACAAATGGGGCTTTTGGGAATTCATCAGGAGTTTGA -ATTTTTGCAAAAACTTTTCTCACTGAAAAATCCGGAGCTCAAAATGACGA -TGGCTTCGGGATATTTCAATTTTATTCGAGATTATGAGGAATCGATTCTG -AAAGAAGGAGATTATCATTTGGATATTCTTACAGCTTCTCCTTTTGTAAG -ATTTTTTTTGAGGGAAAAATATCTGAAATAAGTTCAAAAATTTCAAAATT -GAATTTTTTCGAAATTTTTGTAGGAAATTTTGGTTAAAAAAAGTTTTCTC -GAGAAATTTGAATTTCCCGCCAAATTTTTTCTGTGAAAATTTGATTTTCC -CCTCAAACATGTTTTCTCATAAAATTTGAATTTCCCGTCAAAATGTTTCT -GAGGAAGTTTGATTTTCTCATCAAAATTTTTCAAAATTTCCAGGCGAACG -GATTCTTCGAATCAAATGGCTTCTCGAAATATATTCCACCACTATATTCC -AACATTTCTGATCAATTTCTTCGAAAACGAGAAATCAACGGCCGATTGAA -TGTAAAAATGTTCGAATATCGAAGAGAAGAATGGACATTTCATGCAAAAG -GTCTTTGGGCAGAACATAATAATCAATTAATGACATTAATTGGCTCATCA -AATTACGGTTATCGATCGGTTCATCGAGATCTTGAAGCTCAAGTGATGGT -TGTTACAAGAAATCCGACACTTATCGATCGATTGAAAGATGAGAAAAATC -TATTATTCGAATATTCATCGATACTTGACATGGCTGCACTTCAACAACCG -GAACATCATATTCCACCATTAGTTCGAGTTATTTCACGTCTTATTCGGAG -TTTTTTGTAGACGTTTTCCAATTTTTTATAGCGGAATAATAAGGTTTTTG -ACTTTAATAAATCTTTGTAGATTTCAGTTTTTTTGAAATGCAACATTTTG -CCGAATTAGGCCATTTGACAATTTTTGGTCGTGTCACGGCGCGGTTTGCA -GTAGAAAACTAAATGTATTTTGATTTGTTTTTTCGAAATATCCGAAAAAC -AACAAAAAAATCTGTTTTTTGTTGAAAAAAATGTTGCGAATTTCAGAAAA -CGGCACTTTTCCGATTTCTGCCCCCTAGGGCTGTTATGAGGGACGTCCCC -TATTGGGGGGCGGGGACGATCATTTGTCCCCCCATGGGGGACGGGGGCTC -GTCCCCGTCCCCACGTCGGGGGACGGGGAGCGCCCCTTGTCCCCGATGGA -ACGAAAAGTCGTCCCCTTTTAATTTTTGATTTATTTTAGATTTTCACTTC -ATTTATTACCGGTACAGAGAGTGTAGATAGTTAGAGAGTGCCAGACATCC -GGGACCCAATGGAGCGGGGCGCGCGGAAGAGACGATTAGTGTCGATTTAC -GAAATTTTCCTCGTTGTCATCATTTCGTAAATCGACACAAATCGTCTCTT -CCGCTTGGGTCCCGGATGTCTGGCACTCTAACTATCTACACTCTCTGTAC -CGATAATAAAATATTTTTACGTGAATCTCGTTTCCACTAAGATGTGCGGG -TGGATACCGTGGATATTCCACACAAAAAACGTGTCGCTTTAATAATTATG -AAGCAAAATACAAACGCACATTCTTCACATTGGGTAAAGGGGGCGCGCTC -CCCCTTTACCCGGGCGCCCCTTTTCGGGGGGGGGGGGGGGGCGTATTACG -GGAGGTTTTTTGAAAAATAATTTTTGAAATTTGTCAACTGTCGACAGCTG -TCGTTCAATTAATGTTTTTTTTTCAAATCTCCATACAAAAATGTTCATAG -TAAATTCTTTATCAATATTGGGGTCCCTCACAAAGTTCAAGTTTTCTTCT -CACTCTTCACGGCCGCCTTCGATTTTTTCTTAAGACCTTCATTTGCATCA -AAATACATTCGACAAATTTGAGTCACATAAGCATCATCATGTGCGTTTGC -CTGCAAATGTTAACAAAGTACCAGGCGGATGCCAAGCTTTCACGTCTTCA -TGTCTACGTAGAAAATGCAGTCATGAAGTAGGCACGCAGACAGACAGGCA -AGTACATAATCAGGCAATAAATGGGCAAGTAGGCAAAGCAGGCATGAAAT -AGGCGCTTAGGCACGTGGGTAGGCAGGTATGAGACATAGGCAAACATGCA -GGCAGGTATGAAAAGCGAGAAAAGGCAGGTGAGCATGATGAAGGCACATA -GGCAGGTAGGCAAGGAAGCTCCTAGACAGGTACAAAATAGATGTGCGCAA -AGTAGGCATGTGCAAAGAAACTAAGCTCGTCGCCAGGCATGAGGTAAGCG -CATAGGCTTGCAAGTAGGCGAGTAAACACGCGGGCATCGAATAGGCAATT -AGGCAGGTATTTTTGTGCTCCATTTGGAAACACACTTACTGGATAGAAAA -GAGTGAGAGTCGTGTAAAATGCAAATGCCAAATAAATTGGATCCGGTGCA -GCACATTTTCTCTTTGATCTCGTTTGTTCAATCAGACTCCGATAATTGAT -TTCTCCAGTTTCACTTGTATTGATCGCTTGGAAGAGGCTCTCGATGACTG -AAAAATGCTCAGAAATTTCGGATATGTTCTCGATTTTCAGTGAATTTTTC -CTGAGAAAAAGCTAAAAACTCACGAACAAACGCTGCCGATCGTCCACCAC -CAGTATTGCATACGACAAAAACCGGTCTCTCGCTGTCTGTCACTAGTTTC -AACAAATACCTAATCTCCTCGGCATCTTTCGGTCCCATATGCTCCGGCCA -TCCGGTATACTGGTAATGAGTCACCTCTTGAGTACGCTTCTTTCTGGAAA -AAAGTTTGTTGCAGGCTACCTTTTATGCCTGCATGGAAAAAAATAGTAGG -CGGACAGGCGTGAGGAAGGTTAGAATATTGATGAGAAAAATTGAAAACAA -TCATTTCAAAAAGCAAAGAATTGACCGGTTATTATTAAAAAATAAAAATT -TTTATCCGGACAATCCGATGCAGATGTGAGTGCCTGCCTACCGGCGTGCC -ACCGCGCCTATTTCATGCCTGCGTGCCTATACTTACCCAAATGTTAGCAA -CAATTGTCTAGTCTTCAACAAAGGCTTCGAGATACTCTTCGTGCAAGTGA -TTGTTAAGTCCGCCAAAATTAGTTTTTCGTCGAGTTCAGTGGGAAAGTAC -CTATCACAGTTCACCTTATTAGCTCCAATAAAGTGATCTGAAAAATAAAT -GGATTAAAAACGGAGGGTGGCTTGATAGACAGGCAGGCAGGACTACTGCC -CTGTGTAGGCCGTCTTGTAGACAAGCAGACAGGAGTGGGTCACCATGTAG -GCAGACGGGAGGGTGTAGGTTGTCTAGTGGGCAGGCAGGCGTAGGCTGCT -GCCAAGCAGATATAGGCTCACCTATTTCCGCGAAATCGCACAACATCACA -ATTGTGCTTGGTTTATTCAGCTTCACTGACTCCCAAAATGCGGCAATCGC -CAAAATATCGGAGCTTTTCTTATCAACAGGCAACTGCGGAGCAGGCATCA -ACACAAACTTCAAGCCGTTATCCAATTCAACAACATGTGATGATTCTCCC -TGGCTGAAAATGAAGATTTTTTGGTAGGTACCCATAATTTTGCCTACCTG -TCTACCTATGTGCGCTTGAGTTAAAGGTTAAACCTAAGCCTATGCCTAAA -CCTGAGCCTAAGCTGAAGCCTAAGCTTAAGGTTAAGTGTAAGCGTAAGCG -TAAACCTAAGCAATATGTAGAGGCGAAAGGTAGGCAGGCAGGCGTAACAG -TCTTACCCATTCTTTTTCGAAGACTCATATGACACCGGATCACATTGACA -GTGATTACCTCCCTGTAAGCCGCAAAACTGGGCAAAATCGTCTCCCGTAA -TTTCTAGGTTATTTGGAACATTCTCAAATACTGAAGTACAATTTCTTTTT -CTAGTAACGAAATCCGAAATTTGCGTGTTGAATGTCTTGAGGAAGTTTGA -AAAACGTGTCTCATTCACATCCACACGACTGATCATCTGATTTGGCGGGT -ACAGTTTCTCTTTTTCTTCCGAGTCGAGTATTTTGTAGCCGTTCGGGGTT -AAGCAAAAGTAAGCAATTATTGCACAAATTATGACAATGACGATCAGAGC -CAAAATTACATATTGTCCGTGTGTTCTGGGATTTTGGAAATTTTTAGTGA -AGCTTCTAGGCTTTAGCTTATGCTTAGGCATAGGCTTAGGCTTCGGCTTA -GGATTAGGCCTAAACACAGGAGCATATAGGTTGGCAGGCAGGCAAAATTA -GAGGTACCCGCCAAATATCTAGAAGCTTCACTAAAAAAAAAACGTTTTGA -ATTTAGCATGAAAACAATTTTGAAAAAGTAAAATGTTTTCTTATCTCAAT -TTTTTCCTTGATTTTATATTGTAATTAAAAATAATAATTTGAATTTTCAG -CTCGATTTAGATAGAGTTGTGCTAGATTTCAAGAAGAAATTGAGAATTTT -CGTAAAAAATATTTTTAACGCGAAAAAATTTTTAAAGCTTTAATCCAAAT -TGTTCAAAAAAGTTTGGAGTAAAAAATTTGGAATTTTTTTGATTTTCACC -CGAAAACCTTTCTTTAGAATGTCTGCCTCTTGCCTCCATCCGCGCCTTAT -GCTCAATCCGCGCCTTATGATTTTTCTCCGGGAACTTGAGACGATTTGGT -TGTTGGGAGAAGAAGTGCGGAATGTGGAGCGTTTGTTGAGAAAAGATAAA -ATTTGGAATTTTTTTGATTTTCACCCGAAAACCTTTCTTTAGAATGTCTG -CCTCTTGCCTCAATCCGCCTTATGATTTTTCTCCGGGAACTTGAGACGAT -TTGGTTGTTGGGAGAAGAAGTGCGGAATGTGGAGCGTTTGTTGAGAAAAG -ATAGATTTTCTACTATTTCTCAATTATTCAATACTATCGAACGACTTGAT -GTCCAGTCTTTGAATGTTCTTGTCGAGGAGGCGAAGGTTATTGGTAAGTG -TATGCGTGGCTTTCCGATGAATTACCAACGGCACGGAAAGCCTGAGTGTA -CCCTTTCGATTTCATCTTCGGAAAGTGTGCTAAGCGTAGGCGCGTTAAGC -TAATTTTTCCTGGTAAATCCGCAATTCTTGAAGATCGAACCAATAGGGAA -CACTGTGGCACCACGTGCAACTTCAGGGGTAGGCGGCAAACACAACGGAA -ATTTATCGATTTGCCCAATTTGCCAGAAATTTCGGTTTCCGAAATTTTGT -CGATGCATTAAGGGTTTGATAATAAAATCGAGTTTGGGAATTAGCGTTTT -TCAAAAATTGTCGAATACCTTCAGAATTTTGGTTTCCGAAAGTTTGTCTA -AAAATGCAGGGGTAGGCGGCAACTGCCGTTTGGCATATTTATTTTTGGCG -AATTCACCAAATTCCCGTGAAACATGCGTGAACTTTCTTCTCGTTTCTTA -ATTAGTTTTTCATCAAATTGATAAAAATGAGAAAATTATAAATTTGTAAA -TTCACTTCAAAATGCAGGCGGGCAGGTTTCAGTCAAGCCCTGAAACCGCG -CCTGTCTACCATGGAAGCCCTACTTTCAAATAAGATCAACTCACTGTGGT -GGTGGACCATTCTTTTCAGAATTTCCAAGATCTGGCGGTGGGAGAATTGC -AGTCGGCAGAGGCTTGAATAAATTTGAAAAAAACAAGTCAAGAGCAGCAA -GAGCCTTTTTCGGTTCATCAAGTCTGTTTTGAAAACTTGAAAACTCCAGT -CCACCATCATCCAAGCTCTTCAGAGCATCCTGAACTTCACCGAGCGACTT -CTTATTGCCAACATCCTTCACAAGTTCTACCAGTTTTTCCAACGATTTTT -CCAAGCCCATAAGACCACCAAGATTAGCCCAATCAACCTTCTTAGCTTCC -GTGAAAACATAACCATAGTCTACAAATTTTGTGGAATCAGACTTTTTAAT -TCCACTCTTCCATGCATCTAGCTGAACAAACATCACATCCAAAGATGCTC -CAAGCGCCACCAGCTTCTCCAGATTATCCTTATCGTCCTGTGCCAAAGTG -GCTCCACTCGCTGCCAACTCTCGTTGCACAATTTGTGCATGGTTCTTGAT -AATATCCACATTTGCTCTTTCTCGGAGCACGTCCTCCAGTCGAGCAATTT -CTTGTGCCGCTGGGCCAATGGAATTAGTGTGTTCAGCGGCGTTTGGAAAC -TGGGATGTTTTATCCGAAGCAAATTTGCGGCGCTTGCTAAAGTACAGCGC -CAGAGATTTCAGACCACTATTGAGGCTTGAAACTGAGATCAGAGCATCTT -CGACGGCAGTGACTATCGGCGGGAATTTTTGATCTGCTCGGAACGAATTC -AAATCTGACAGGTTCTTTTGAATTTTGTCCAATTCTTTGTTGGATTGAAG -ACAGCTCAGTACGTCGAGAAATTGAGCAATATCAGATCGAGAGTCATTGA -TTTTTTCAATAGCACGTTTTTCTAGTGTTTTCAAAAGATTCGGATTCAAG -AAAGTAGCGTTTGCCGTCATTCTACTCATGGTCAGCGACAAGCCGGTCAT -TTTTTTCACTCCATTAAAGCATGGCTCAGCGGTTGTCCAATTGCTATTGT -TCATATCCTTGCAAACAGTGAGCACTTCTGCGTGTCCTGATTTGCTTTCA -ACAAGTTGATTCATCACACTTTTCAATATCGATTTCGATTGTTCCAATTC -GGTGTCAATGTTCGATGCAATTTTAGATAGTTCCTCCAGATTCGTGAAGT -CGGGGGCGGTAGTTAGAGTAGATTTGGCGCATTGGGCTGAAAGTTTATTT -TTATTTTCGTTTTTTTGAGTTTGAACTTTTGTGGACAACCGACAGATTGG -CTCAAACTAAAAGGACTCTAAAATATACAAATTTTGGAACTCAAATCAAT -TTCGCAAATATTACTTTTTTCTACGGAGCTTTGATCAGGGTGGGGTGGCA -AACGATTTTTTTCCAGCAAACGGTAAATCGGCAAACCGGCATTTTGCCGA -TTTTCCAAAATGGCCGAAAATTTTTGAATCCCTCCCTCTAAACACTTCCG -GCAAATTGTTATCCAGCAAACTACAATTCGGCAAATTGCCTGAATTAAAA -ATTTCCGCCCAATCGGCAAATTGCAGTAACTGCAAATTTCCGATAAATTT -GGAGAAACCGGCAAATCGCCGAAAATTTTTGGTAACTGGAAAAAATTTCA -AAAGGCACTGTACCCGTGCTTCCGTTTTTTAAAAAATGCTTCTAAACAGT -TCCGGCATATTGATATCCGGCAAACGGCAAATCAGCAGTTTGGCTAAAAT -AAAAATATCCGGCGAATCAGCAAATTGCTGGAATTAAAAAGTTCCTCCAA -ATCGGCAAAACCGGGAATTTGGTGAATTCGCCAAAAATAAATATGCCAAA -CGGCAGTTGCCGCCTACCCCTGCATTTTTAGACAAACTTTCGGAAACCAA -AATTCTGAAGGTATTCGACAATTTTTGAAAAACGCTAATTCCCAAACTCG -ATTTTATTATCAAACACTTAATGCATCGACAAAATTTCGGAAACCGAAAT -TTCTGGCAAATTGGGCAAATCGATAAATTTCCGTTGTGTTTGCCGCCTAC -CCCTGAAGTTGCACGTGGTGCCACAGTGTTCCCTATTGGTTCGATCTTCA -AGAATTGCGGATTTACCAGGAAAAATTAGCTTAACGCGCCTACGCTTAGC -ACACTTTCCGAAGATGAAATCGAAAGGGTACACTCAGGCTTTCCGTGCCG -TTGGTAATTCATCGGAAAGCCACGCATACACTTACCAATAACCTTCGCCT -CATCGACAAGAACATTCAAAGACTGGATATCAAGTCGTTCGATAGTATTG -AATAATTGAGAAATAGTAGAAAATCTATCTTTTCTCAACAAACGCTCCAC -ATTCCGCACTTCTTCTCCCAACAACCAAATCGTCTCAAGTTCCCGGAGAA -AAATCATGTGATCAGTAGTTTCTCGGGCCCAAGCGTCGGTTGCCAATTGA -GAGTTTAGTGCTCCAATATCAATTGCTCCATTCGGTAGACCAACTGTGTA -CTTCTTGGTTCGCAGGGACTGCCCGATGGATTCGATGGTTTGAAGATGGA -TCTTCGATTCTTGATTTGGAAATGCATTCCGGATAGATGCCATGTGTTCT -TCTAGCTTTCTTAGTCCCCGATTGATGTCTACAATCTTGAAGGATGAAAT -AAAGTTCATCACATCACGAACTTTTGGCCATAATACAAAGAAAGAAGCAG -CAGAATTATTGTTTTTGAAGCCATGCAACGTAATCTTCGGATTCTCCACT -ATGTTCAAAAAATCTTGGGATTTTTTCAACAAATCGTTTAACGCAGAATG -GGATTTGGGAATATCGGTGAAACTAGTGAACGCTTCAATCTCTGTGTACG -AGTTGCTCCATACTGATAGCTTTTCGGAAAGGGTTGTAACTGATGAAAAA -CTGTCTGTAATGTCTTTCATGTCTGCCTTGAAATTAGTCTCGTCTGGCCA -CTTCTTGAGATCTCCAATATCATGAGCCACGTGGACAACACTTTTGACAG -TTGTGAAGAATTGATCTGCCTCAACATCGTCGCCGATATTCGATTGTAGT -TCTATAAAGGTATAGTTTTTGGGGGCAAAAAACGAAAGTGGTTCAAAATT -TTGGAACAAAATGCCTATTTTTAGATAGCTAAAATCTAAAATTTTGCAAT -GCTGACAAGTTGTGAAAATTTGAAATTTTAACAGAAAATAGGCTTTTTCC -TAAACTTTGAATCACCTTACTTTTTTTTTGAAATTTTCGAAACTTTTCGG -TTATTTCCAAAAAAAAGCCGCAAATACTCTATCAGGGGTAGGCGGGAATT -GCAGTTCGGCAAATGTATTTTCTGCAAATTCGGCAAATCGGGATGTGTAC -AATTTTGTCGTCTCTGGCAGTTTACCGACTTGCCCATTTACCGAAAATTT -TAATTCCGGCAAATTGTCCATACTCTATTACTACCATAGGCCCTTATATA -ATCTTTTTCCGCCCACCCCTGTACTCTATTACCACCTAATCTGTTACTAC -AGTGGATTTTTTGAAACCAAAATTTCAGCTTTTGAATTTTATATTCGTAG -TGAAAAGATATTCGTAGTGAAAAGTTGAAACCTGGAAAACATAGTTGCAT -AATTGCATCGTAATATGTAAAAATAGGTCTTCCATGGTAGATAGGCGCGG -TTTCAGGGCCTGCCTGGAACCTGCCTGCCCTATGTGAACGAGTAGACTGT -AGTTTTAAAAAACAAAAAAAGGTATTTGCCTAACAAAAAACATACTCAAA -TATTTGAATGTTTGCAACCAAACCTTTAAGCGCTATCAGTTTAGATTCCA -GCGAACTGTAGTCAATTGCATTCAGTTGATCCATTGAGAAATCGTATTTG -AACAAATCCAAAGTTAAATTCATTGATGGAATGGTTCCTTTTGTCAATTC -TTGTTGTAGGTACATTGCATTGATCAATCGTGAGGCGAATTGTAATCGCT -CAACGGCAGTTATCAAGTTGTCATCTGCAACTTTTATGAATGATTTTTTT -AAAAAGTTATTTGTTGTCATTTTTCTTTTATTAATTATTACGTATATTAT -ACGTATCATGCGAGTTTAGCTTTCCAACCCCCCGCGAACTCTTTTTACTT -TTTTTTTTTTTAACTTTTGTCTTTTTTGTCCTTTCTTGGCTATTTTTTTT -ATGAGAATTGACCCGAATTTGACTTTTTTCGGATTTTTAGGAATTTCTAG -GAATTTTTCTTTTTTGTCAAAGCGAGCTAACGCTCGCCACTGACGCCAAG -CCTAACATAAGACTTAACCTAAGTCTTAGCCTAAGCCTTACAAGGAAAGT -CTTTGAAGGGGCCTGTAGATTTGGGTTTCTCATGTTGATATTCCGATAGA -AGAGTGTTAGTTTTGATCTCTCCAAAAAATTTAGCTGCCCAAGCCAAGTT -TCAGCAAAGTAATGACATTTTGAAATTTCAGTTAAAAACACCATTGAAAT -ACACTGTCTTACAGTGCTATCCACACAAATATCAGCTTGCGTGAACACCG -AAAATGTGACGCCCACCACAATAGGCTGAAGACAGTGGATTTCAATGGTG -TTTTTAACTGAAATTTCAAAATGTCATAACTTTGCTGAAACTTGACTTGG -GCAGCTAAATTGTTTGGAGAGATCAAAACTAACACTCTTCTATCGGAATA -TCAACATGAGAACCCCAAATCTACGGGCCGCTTTAAAGACTTCCCTTGTT -AGCCTAAGCCTATGCAAGACACGCAAAATATACATTAACATATATATACA -ACAAATACAACGTAAAAATTGTTTTTCTGTAATTCGACTGACAAACCTTT -AGCTTCACGTTTGGAACGTGGATCTAATGACATCACATTAAAGAAACTGG -ATTCTTCTGGAACAAAATATATTGAAATTAAAGCTCTGAAACAGTCAAGA -AACCTTCGAAAGTATCCGAATTGACAACACGATTAACCGTTATAATTATC -AAAACGATTATTATTTTGATTCCTGGAAGACAGAAGAAATTCGGAACGAA -AATAAAAATCAACCTACTCATTGCAAAGTATTATGAAACTTCCCTTTGAT -CGACGGTTTTTGAATCAATTAATGATTGGAAGTGTGAATTCTGAGAGAAG -GAGTGTTGGAATTTTTATTTATTTTATAACGAAAAGGTCACGGTTTCTGT -AATTTTAATTTCTATGAAAGTTTTAGGGACTCACAGAATGTCAAACACTA -GATGGCCGAAGAAAATTTGACATAAGCAGCGAAATTTGACCTTTCAAAAA -AAAATTAATATTACGTGAAATCTTTTTTTTTCCAATGGAATTGAATTTTT -GGCTGATACATGAGGGAATGTGTTTCAAGCTGTAATTTCAGTAAAACTGT -ACAAGAAAAAACGTTCAATATTTTTACCTTTGCTTATAACTCCTCTACAA -AATTTTTTCGGACAAAAAAATAAAACAAGCATGGAGATTACAGGTGAATT -TCGAATCCTCATCTTCATTTTTCAGACTGAAAATCCAAGAAAAGTAGCCC -GAACTTTTTTCTGAAAAAGTTCCTATATACTCATCAAACATTCATAAACA -GTATTTAAACAAAAAATCCCGAGATAACACTTTTGTCTTCAAGATATTCA -GGTTGAAAACTAATGTCCTGAAACTTGGATTTTGGGTCCTTAAGAAGATA -AAACAGATAATTAGCTTTTACGTTAATACCCGCAATCATTTGCAAATTAG -AGCAAAATTAAATTGAAACTTTTTTTTGGATTTAAACATTTTTTGGAGCC -GAAATACAAGTTTCAGGACACTAGTTTTCAACCTGAATATCTTGAAGACA -AAAGTGTTATCTTGGGATTTTTTGTTTAAATACTGTTTATGAATGTTTGA -TGAGTATTTAGGAACTTTTTCAGAAAAAAGTTCGGGCTACTTTTCTCGGA -ATTTCAGTCTGAAAATGTATGATTTTTTAATTCAAAATTTGAGGGAATGT -CGTTCATTGTGGCTCGAGGTCAATGGATAAATGGCTAAGACTAAAACATC -ATTGATCGAAGAATGATTTTTTATTCATAAAAACTATATATTTGACCTGA -AATCATTGTTTTTTGTCACTATAACCCATTGGAATGAGCTGTAGAAATTA -ATTAAATTTAGAAATGATTTTACCGATACGTGGCAATGTTTAATACATTA -GTTTTCTGGCCGAAGATTTGTATGTTTTCCCGAGAAAGTGAAGCGACAGC -TTAAAAGCGCATCGCCTTTAGTGAGAGGCAGGTCTCGACGCGACGACATC -TTTCCTCGCGCGCAGCGGCGAGATTTCGTCATTCTACGTGTTGGTAAAGA -AAAAGGACGTGATTTTATCGATTTGCATCGATTTTTTTTGGATTTTTCTT -TGTTTTTATTGTATTTTTATCGAATTTTTAGTAGTTTTAAGGTTTTTTAT -CGATTTTCCTTGATTCCGTTGCGTTTTTAAGCGTTTTTCTCGTTCGTAAT -GATAAAAAGGGGGTTATTTCTCCGTTTTCCAAGAGTTATCTGCGCGTATG -CCAGATTTTGCAGGAGGAATCATCAAAATTCTCAGTTTTTGGCATGTAAT -CCTTACGAAGAGTACTTTCTGAGGCTCAATGGCTTTTTCCCCCGCTGTTA -GGTGCTTCAGTAAGTGTTCTACTCCTTTCAGGGGTTCCTTCTCTCGTCTA -GGAGATTAAATATGTTCGCATTTGTTTCTTCCCTCTCTCTTACGCGCTCT -TTCCAGCATTGTTAGTTTATCCACGCTCTTTTCCTCTGTAATTTTTCGTT -TATCACTTTCTCTAATTTTTCGGTTTCCGGTTCGTGCACTCGCGCACCCT -CTCCCTATTTTACTCTATCTCTCACTATCTCTCACATCTATCTCTATCTC -TCACAAGCTATTTTGGTATTTTGCGCGTTAAGAAGTCATGTTTTGATGGA -CCGTGTCCAAAGGAAGAATATTTTCGTCGAGTGAAAGGTATGTAACTTCG -TGTGAAGTCGACTCCATGAGTCTTGTGAATATTCCGATAACGTTTTATCG -AGATGTATTATCGGGCGGCCCGAATTTTATGTATGTTTTTCATTGTGGTT -ACCATGTAACGGGAGTTCACATCGCAGAAAGAGCAATTCTTTATCGCGAA -AGTACGATTTCAGGCCCCGGAAGGCTTTCTTATCAGTTTAATGCGACATC -TTTCGTCGGGTGAGATATATTGTCTTGCGTTTCTATCGCATTTCATTGGA -CCGGTCGAGCCAGGTCTGAGTGTTTATGAGTACGAGTCGACTCCGTGAGT -CTCAATGATTTTCCGTTTTCAGGCGGTTTTCAAGGTTTCCCGTTCTTGGT -TTCTGCTTCATCTTCTACTACCGTTTTAAGTAGGATTGGCTCAAGTCTAC -GGAAGAGTAGAGCAAGCCTACGAAGAAGGTCTTCGAAAGAGTAGCGCAAG -TTTACGGAGGATTCACGCAGGTCTACGGAAGAGTGGAGCAGGTATACGTT -AGAGTGGCACTAGACCATACTGGGAGTCCGATTTCCAATTGGATTCTCGA -AAAACCTTGTACCTGCACAAATAACCAGACGAGCCGATATATCTACCTTA -CCGAGCTCCGGGTTAATCGTCGTCAAGTATTTCAGGATGAAGCGTATAAG -GCGATGATTTTCTTTAGCTATGCCGCGCGTTTTGCAATTGCATAGCTGTG -TATTCCGTGTAGACTTTATCGCTCACTTGTTCGATTTTCAGGACATCCGG -TTCGACCTTTTTTCTTTCTCCCGCTATCGACGACGCAGATCACGTATGAG -TTGCTTTTATATACGGCGATCGATTGGTCCGGTATACGTAAAATTAGCTC -TATATTTTATCGCTTTCGTTGCTCACGCGATTCCCAGGTATTTTAATGTC -GAATCATATTCCGTCACCTACCACTACGTAGGAGATATGCAGGGCTATGT -GAGAATAACTCAGGTTTCGTAAGAGTTTCTCAAGACTAGGGAGGATATTC -GCAGGTTGTTGAGTAATTTGTTTTTCCAATTAGCTATTCTCCTTGTCAGG -ACTTATTCAGGTGTGAGTCGAAGTAGCCCGAGACGTTTGGCCCTAGTATG -GATACTTCACGACAGTTTCAGACAGATTGTGGTCCGCCTTTAATGGGAAT -TATTTCTACTGCACAGGTTCATAGCTGACTTAGCCGAATGAGCCCCTTCG -ACGTCGCAATTTGGCGGTTAGCACACTTCCAGGAAGACATAGACGAATCA -CAGTTTCAGAATTCCTATACACTTCAGTAACTACGGAGTAAGGCGATCAG -TTCCTTGCCGCATTTATATGTTCATCTTAACTTTATTTTATATTAGCTCA -CGGCTTTCATTGGAAACTACAGATAACTGAGCCAAATGCTTCGCCTTTTT -GTCACTTTTTCCCAGTTCACTCAAGCCCAGAGTAGATGTAGTTTGAGGTT -ATCTACTTCTCGTTTCCATGTGCGGATACTAGCAGAGTTTCTCCTGTTAT -AACTGAGAGTCATTTCACACACAATACGGTTTATCTGTCGGCAGTTTCTT -CTCACAAGGTTTTCGCTATAGATGAATATCTGGTATAGGGGTGAAGAATC -TGTAATTATTAAACGCCTCAAGCTTATAGCCGTGACTGACAGTTATAGCC -CCCGGCTTTGCTGGTTCTACCCTATACCACACAAAACCCAAACCAATAAA -CCCATAATACTATATAATTCGTGTTGTCTTATTAGAGCGTAACTTGATCA -GGGAAAACGAATTCTCGGGGAGCGAAGCGATCCGAGAATTGTATGTTTTC -CCGAGAAAGTGAAGCGACAGCTTAAAGGCGCATCGCCTTTAGTGAGAGGC -AGGTCTCGACGCGACGACATCTTTCCTCGCGCGCAGCGGCGAGATTTCGT -CATTCTACGTGTTGGTTTCCCCCCTCCCGCCCCACACACATATTATTCCA -AAGTGCGAGACACATATGCTATGATTTCCCTTCCGGAGAAAAATCGAATT -ATTATGAAAATATTAAGTTTAAACCGTAAGTCGTTTATTTTCAGGAGGTG -AGTTTTATTTTTCCTTCATTGTCGCCTGAGTGGGCAGTCGGTGTCTATCT -GCAACATTCGCAGCTCGACCCTTGTGCTTGTTTTGGCGGTAGCAGGAAAC -TTATGGGTTTTTTCACAGTTTCGGGAGAGATATTTACAGGCTCTGGTTCA -GGGAACCAGATTCAGAGTTTAATAATGATATATCTTTACAGGAAAATTGT -GGTTAGAGTTTCATGGCAGCTTCAGATCCCCTGATGATCAACAGTTCAAT -CCACGGAAACACGGACGAAATGAGTGGTCCACCGAGCAACAATGTGGAAC -GAGACGATTCCAGGTTTTCCATGCCCCCTAACATCGATGATGGTCTTATG -GTAAAGTTCTTCCAATCAAGCGGTGTTCGTGTTTTGGATAAACTTCTTCG -ATAAGTAATACTTGACTAAAAAATATCGAGAATTAAAGTCACAATTAAAA -TTTACAAAATATTTTGTTCCAGATTATGAATTTTCGAAGATTAGACTATT -CACGGCCACGTAGCGTTTGACATGTTGTGGGACTGAATTTCTACAAAAAC -GTGAACTCACGTAGACTGTCTCTTGAATAATTTGAATGAAACAGATGTGA -GCTCCGGAATAGGCTTAGGCTTAGGCTTAGGCGGGGCTGGGAGGAGAAAA -AAATTGCGGAATTTGCCGTTTGAAGAGCTCGGCGAGTTTGCCGAGTTTGG -CAAATTTTAAATTTTGCCGTACACACTACAAATTGGACAAAAAATCGAAA -TATCAAAAATAACAAATTGTTCTGAGTTTGATCAGTTCGGTAAGAAAATT -TTGAAAAAAGTGATTTGCAGAATTTGCCAAGCTCGCCTTTGTCTTTGGTC -AATTTAGCACCATATGAGTGATTATTATCAATTTTCCCACTGTCGCTACT -TCACATTTAAAAAGTAGTCATCAATTGCCGAAACAACTTCCTTCCAGCTT -AAACTTTTTTCTTAGCCTCATCGGGACCCTTTCCTAATCCCTTCTTAACC -TCATTCTTCCCATCTTCCAAAATTTCCATCCTTCTTCTTCTTCTTCTTCC -CACTACGACCATCTTTGTCGTATAGCACCTTTCTCGCGAGAGTGTGTGGA -AACAATTTGCGAAAAACGGCTCCCGATCCCCCCATTCGTTTTGGCGAAAT -CAATAGACACAAAAATGTTCAAACAAATCTCCCCTTCTCGTTTATCCCCC -TGTTGCACAATATCCTTTTCTCACAAAAAAACCTTTGCTCTTCAATTTTC -GGAATCATCTTTTTGCGCTTTGTCGTGTTACTGTGAAAGGCGGAGTACTG -AAATATGGAAAATATTTTTAAATGACTCCCTGATTCCGAATATCTATGTG -AGAAAGTTCAAAAAATTTTCCCTCATTTTATATTTCAGCTTGAAATCGTG -ACTTTCATTGTGCACTAATGAGATTTCGATTTCGAAGTTTTTTTGAAATG -TGTTTTCAAGGTCAATTTTCAAGGTCAATTTATTATTTTACTATCGAAAA -ACTAAAAAAATTTCAATGAGTAAAGTAAGTAAGTAAGCATTTCGTAAATA -TACAAAAATCTCGTAAATCGACACATAGCGTCTCTGGCGCGAAAATTCGA -AATCTCATGGGTGCACAAATGAAATGCGAGATTTCAAACTCAAATGTAAA -ATAAGGGAAATTTTTTTGAATTTTGTCACATAGATATTCGGAATCAGGGG -CAAATTTGAAGTCAATTAAAAATATTTTTCAGATTTCGTGGTACTCTAGT -CTAAAACTAAAACTAAAACTAAACTAAAGTTAAATTAATATTAAATTACC -ATGAATCTAATTTTTGTTTTTTAAAGTTTCCTGCAAAAATTCCAAGATCT -CAGTTTGCCGAAGTCTAAATAACGACAACTCTGAACTTTTGTCCCGAAAG -AAATCGAACACCGGTGTATACTAATAAGATCCCTCGAAGCTCGGTATACA -AAAGGATCATGAAAAAGGGGTGTCTCACCTTGCGCATAATACCTTCTGTC -TTTCCCCCTTCACCAGAAAGATTTCCTTCTTATATTTGTTCGTTTCGTTC -CTGCACACTCTCCATCTCTTCTAACCCCCTCCTCATTCAGAATACTCTCT -CATCTCACAACGCTTCTGTCTACCTGCCTGCGTCTCCTCGGTACCATATA -CTATCTTGTAGCTGCCACTTACCAACAGACTTGCCTCTTGGAGGTCTCTC -TCTCTTTTCCACCAAATCACCTTGTTCTTCCGACTTGTTCTCTCTTATCG -AACTGACTTTTCGTGTCTGCGGGCCTTTCACATTATTTTCCAATTTTATT -CGAATTTTATGTGCCCACTGCTTGCTAGGTTTATTGAGTGCCGCATTAAT -TTTATTGATTAAAAAAAAAGCCACTTGTAACAATTTTTATGAAATTTGTT -TGCATATTTATTTAACAGTAGCGAAATTGTTTTAAAATTCGTACTGTGTG -AGAAATTTGCACTTTCGAAGTGTTTAAAACATTCTATTACGGGATCACAA -GATTATGAGAATGCTTATTGCGCAACATTTTTGACGCGCAAAATATCTAG -TAGCGAAAACTACAGTAATTCTTCAAATGACTACTGTAGCGCTTGTGTCG -ATACTGGCTCGATTTTTTAAATGATTTTTTTTCGAATAGTGACGTCGATA -TTCCATTTTGCTTTCTTTTTCGTATTATAATTTTATTCATTTCGAGAATC -GAGCCCATAAATCGACACAAACACTACAGTAGTCATTTAAAGAATTACTG -TTATTTTCGCTACGAGATATTTAGCGCGTCAAGATTTTTCCTTACGGAAA -TACAAACTTCTTGGCGAAAATTTCACGAAAATTCAAATTTCCCGCTTAGA -ATTTCCCGAATTTTTCGAATTTCCTGCCAAATAAAAACTAGTTTAAATAT -TTAAAAAAAAGCTTAGAATTCTTAGAATGCGTATTGCGCAGCATATTTGA -CGCCCAAAGTATCTCATAGCGAAAACACAGTAATTCTTGAAATGACTACT -GTAGCGCTTTTGTCGATTTACGGGCTCGATTTTTGAAATAAATTTTTTAA -AATCTTTTCGAATCAAGCCCGTGAATCGACACAAGCTCTACAGTAGTTAT -TCAAAAAGTAGTTTTGGCTTCGATCGAGATATTTTGTGTGTCAAATATAT -TCCCGTAAAACAAAATACCGTCTAAAGATATAAAATTTAACGCCTATTAC -ACCCCAAAACCCGCCGGAAAATCCAGAAAAATTATATAAATTCGCAGTCA -CTTCTCAAAAATAACCTGAATAGTTGACCGCGTAATTCGACCCGTTTCCC -TACGACTGACCACACCCCGATTCTCTCGAATTACCCGCGACAAGCTTAAG -CATCTTTCTTCATTCCCACACTTTTCGTAAACTTCTGAGAGACAAAACAA -TAATATTTCTTTCTCAAATCAATAATGCCTATATTCTCCGCATCCCGTAG -CCGATCCCATCACCGTAATTCTAGAAATCCCACGAAATTTTCCAATTTCT -CTATTGAAAAGGTCTCTCTTTTATATTACCCAGGCGCAAAATTTCGTGCA -AAAATACAATCGACGGTCTCGACGCGATAATTTTTGCTAAATTCCAAAAA -TGTGTGCGCCTTTAAAGATTATTGTAAATAGCTTCAAACTTTCACCGATA -TTTTTAAAAATTGATTTTTCTATGTTTTCCGTTTAATATATATTTATTTA -TTTAAAAATTAAGTTGAAATTGAGAAATCGATGAAAATCGAAAATTACAT -TACTCTTTAAAGGCGTACATGTCGTTTCGAGACCGGGTACAGTATTTTCG -ACTGCGATTTTGGTTTTTAAAAAAACCTAACCAATAGAATTTCCAGCGCT -CACACTCATTGGGTGGAAGCAGCAGCAGTCCGACGAGCTCTTTTTCGTCA -AACGACGAATTCGACGATCGTCAGAACAAAAAGTGAGTCATCAGTTTTGT -TTGAACAGCAGGTGTGAAATTTATTGTGAAATTTAAAATGGGAAATCCGA -AAAAACACACCTTGTGTGATCTAAGATCCAAAAAAAATAGAACAATCGAT -AATTTTCGGGTAATTTTAAAGTTATTTTTAGCGAAATAAACAATGCATTT -TTGAGGGATTGGTTTTCAGTCATTTTCGATTAAAAAATTCAATGTTGAGC -TGAAAATATCGATTTTTACCAGAAAATTGATAATTTTCGAGCTCAATACC -ACAATTTTAATGTTTAAATCGCTTTGAAACCTCATAAAATCTCCCGCACC -TCCAGTTTTTGTAGTTTTCCGCCTAAAATGTCGGAAATTCAACAGAATAC -TCATTTTCCTAGCGAAATCTATTAGTTTATAATAAATTTGATCGTTTTCT -GCTTAAAATTCCCTGAAACTTCTGAAAAAAAACCGATTAATCAGCTGAAA -TTCGCTTAAAACTAATTTCGTGCCGGGACCACGGCCTTTTAAATCGGTAT -GCGCTTTTAGTTTTGTACCGTATCTATTTTAGTTTTTAAAGTAAAAAATG -AAATTTTCAGCAAGTTTTGGCGTCAAAGAAATGTATCGAACGCAGAAATT -GAACGAATAATCGAGGATTTCATAGCGAATGGTATTTTAAGTGAGTTTTA -TTCGATAAAATCGACGAAAAACCAGAAATAAACAGTTAATTTCCAGAAAT -GAGCAACGGGAACAGCTACAATCACCATCACCAATTCCCGATGAGCATTC -CAATATCGTGCTCGTCACACTCAATTCAATCACAATCACGAATGAACACT -CTGAACGCGAATAGGGATCTCCTGTCTCCCGGCAACGACGTAATTGTCAC -CAGAACCGTGTCACCGTCGTTTTATTCGCATGGAATGCCGGCCCGGGATA -ATGTTTTTCGAAAAGACGATCATGTCAGGATATTGGGGAATACAACGGTA -TGAAAATCTGCTTTTCATCGAAAAAAATTGGAATTTTCAGGACCCAGCGT -GGTATCGAGCCCGTAATGCGAATCAGGAGGAGGGTCTGGTTCATGCAGAT -TGTGTAGTGAGAATAAAGTTGGTTTTTCTGATCAATTTCTGTGAATAACC -CCGATTCCCATGAAAATAGGATTTTCAGCAGAAACTCCAGGCAAATTGAG -TTTTTGATGCGAATAATGGATTAAAAAAGATAAAAATCCATGAAAATTTA -ATTTTTTACATCAAAAATCCATAAAAATCGGATTTTTGAGCGGATTAGAT -TACTTTGCCGAAAATTCATTTAGAAAAAAACAATTCTTGCGCGCAATTGC -GCAAAAAATTCAGAAAAATGAAACATAAAAGTTAAAAAAATTATTTTTAA -ATATTTTTGAGCTGAAAATAAAAGAAAATTCGGATTTTGTGGCCAAAAAT -TCAAGAATATTCCATGAAAATTAGTTTTTGTTTGCAAAAATCCGAACAAA -AATTAATTCTTTTTTTCGCTAAAAATTGAGAAAATGGTTTTAACACAAAA -ATCCACAAAAAATTGATTTTTAGGCCACAAAATCTATGAAAATTCTGATT -TTCTGGAAAAAAATTAAGAAAATTCAAATTTTTTGTTCAAAAACTTTTTT -CAAAAGCATTTCAAGAAAATTTGATTTTTCATCAAAAAAATTAATAAATT -TTAGCGGGCAAGCCTACGACAATGGAATTGTAAGAATGAGAGCTAGCGGA -TGTGACGTGGCTCCGGGAGCAGCTTCAACAACCTCCAGCACATCATCACA -TCATTCAACTGCAGCAAACCATCAGCCATGGTTTCATTCAATGATTAGCA -GAGAAAATACTGAAAAGTAATATTGAAAATGTTGGAAAAATCTGGAAAAA -TGCGTCATTATCTCGGTTTTCAGTCGGTTTCCAGTTTTATGAAAAAAACG -TCACTAAAAACGACATATTTCTTTAAAAACGTAAACATCGGAAATTGTTT -GCATGAAAAATGTCGCGATTTTCTAGAAAATTTTAAAATTTAAAGAAAAA -TGTTGAAAATAGATTTTTTCTGAATTTTTTGAATTTTATTAGAAAATAGA -GAAAACATCATGTTTTTCAACGTTTTTCGCCTGAAACGCTGGAAAATGCA -GAAAATGGTTTTTTTAGTGGAAAATAAAAATATTTTTTAAAAAAACGAGA -ATTTTTTTTTCGTCGAAAGTTCCAACAAAAATTACATGTTTTACAAAACA -TGTAATTTTTGTTGGAACGTCTTTTTTTTCTGAATTTTTCTTTGATTTTG -TTAACTTTCTGAATTTCAATTCAAATCGGCAAAATTGTACGCGTCTTTTG -AATGTTCCCACATCTATTTTGTAACGAATACGGGAAAAAATATTTCAAAA -AGGCACATTTTTCAAGTGTTTCCGCCTTATAAAAAATTGCCACTTCCGGC -AAATTGATATCCGACATACGGCAAATCGGCGAACTGACAAATTGCCGGAA -TCGAAAGATTCCGGCAAACCGACAACCCTCCGATTTGCCGGTGTCAGAAA -ATTGAAAAGTGTAGAAAAATGACGTCACAACTAAATTATAATACATGTCA -TTTCTTAATGTATTTTAATACAGTTTTGACGTCATTTTTCTCCACTTTTC -ATTTTTCCGGCACTACTTGAATAACCCTGTATACCACTTTTAAAAATCAT -GTTTTACAAATTTGTAAACTCCAGATTACTCCGCGGCAAACCGGACGGAA -CCTTCCTAGTACGTGAATCCACAAATTTCCCCGGCGACTTCACACTATGT -ATGTCGTTTCACGGAAAAGTCGAACACTATCGCATCGAACAGACGTCCGG -CGGACAGCTGACCTGTGACAAGGAAGAATACTTTTCCAATTTGACACAGT -TGGTCTCGGTGAGTCATTTCGGGGCTGTAGAGACAGGAAAAGGGGGAGGA -ATGGGTAATGAACCGGTATTCGTTAGAATGAGACAGGTGAAGATAACAGT -TATGATTTTATATTGTGAAGAGTTGTATTATAAAAAAGGTTGGTAGAGAT -TTGAATATTTGGGAGAAAGAGAAAATGAGGGGAAAATTGTTAAAATTCGG -ATTTAAGTTTGAAAAGTCACAAAAATGTTATATAAATATTTATATTTATT -GGATATAACTAATTAAGATTTTATATAGCAATACTTTAAATAATATGAAT -ATTGTTAAATATTGATATAATATCATATCAATCTTCATTTAATGGCTAAT -TGTAATTTCCAATTTTCCAGCACTACAAACGTGACGCGGACGGTCTCTGC -CATCGCCTGGTAACTCCGATTATTTGTGAAACAGCGACATTTTCATCAAA -CGGATCATCGTCATTTGGTTCATCGTCGACAGTTGATTTGGAAGATCGAA -CATCAGTATTTCGACACGCGGGTCTAGTTATTTCATCGAACGATATTGAT -GTTGGTGATACAATTGGACACGGAGAATTTGGAGATGTTCGATTGGGAAC -TTATAAGAATCGAAAAGTCGCGTTAAAAGTGTCGAAAAGGCATGGAAATG -GAATGTTGGACTCATTGCTGGATGAAGCCAAGTTTATGGTGTAAGTTATC -AAATTATTGAGAAGAAAATAATTTTGGCAAAGCCCAAAACAATGCGTGTT -GAACAAAGTCATATTAAAAATATATTTATGTTTCAAAAATGTTATAATTC -AATTTATTTTTAATTTCGAAAATCTATAATAACAACTTTTCCAAGTTTTT -AGTTATGAGTACCCCGAAATCTGAAAAATATTTTCAATTGACTCCAAATT -TGCCCCTGATTCCGAAAATCTAAGTGAAAAATTCGAAACCTGATGGGCGC -ACAAATTATTTGTACAATTTAAACACTTTTTAATTAAGATTAAAAATTTC -CCCAATTTTTTTGAAAATATTCATTAATTTCTATTTTATGTTAATAATTG -TTTCAGTTTATAACGCTTAGTTTCAAAATTTTCAATTTTCCTGATTGATG -ACTGATAACTAATGGCAGCAAATAAATCTGAAAAATTCCGAATTTTGCAG -AGGTCTCTCGCATCCAAATCTAGTGACACTTGTCGGTGTTGTACTGGATG -ATGTGAATGTCTACATGATAACTGAATATATGGCAAATGGTAATTTAATC -GATTTACTCCGATCTCGAGGAAGGCATGCGTTGGAGAGGAGGCAGTTGAT -GATGTTTGCGATGTAAGAAAAAGTTGACAAATAAAAAAATTGGAATTTAA -CATTCAAATTAGATTGTTCAAAAATTGTTGACATTTCTGCATTTTTATAA -CCGAAAAATCGAAATTTCATTTTTTCCGCCTGAGTAATAGTAACTCACCA -CGAAAAGGGTTACTGTAGCAGTGCTTTTAGCTGTCTCTGGTTTAGAAATT -TACGATTTGCCGGTCTGTCTGAAACCCGATTTTTTCTAGATTTTAAACAA -TTTTCTAGTATCCTGTTGAATTAATTCCAAAAACATTTTTTGCTAAATTT -TTGTTCTCCGTTTGTCAAAAAGCCGACTTTTTAAAAACACTGCAAAATTT -CTCTCTAAGTTTTTTAAAAAATGTTTGCCCTTGAAATCAATGCAGTTTTT -TTTTTAAATTTTATTTTGGAGTTTTTTCGAACAAAAATTTATTTCTTCGT -CTATTCGTACCGAAACACCAAAAAATCCACTTTTTTTCGAAATTTTTTTT -TTCAAACAACAACCCTGATTTCAAGGGTAAACATTTTTTAAAAAATTTGA -AAAAAATATTGTAAAATCGGTTTTAGTTTTTAAAAAAAGTCGTTTAAATT -TGTTGCACAATTAAAAAAAAATTTAGAGAAAAATCTTGCAATGCTTCAGG -CACACAGCTGAAAATGCTAATACAGTACTGCTTTTCGTGGTTGGACCCAG -CCGTGGTTACTGTACCTCCGGCAAAGTGGAAAATTCGATTTTTTTTTGTT -AGAAAATTTGAAAATGTCAAAGATCTGATTTGAATGTTTCAATTTTTTGT -GACAGCTGTTCTTGAAATCCAAATTTTCAACTTTTTTTCCATTTTCAGGG -ATATTTGCCAAGGAATGTGTTATCTGGAATCAAAACAGATTGTTCATCGA -GACTTGGCCGCTCGAAATGTCCTACTCGACGATGATTTAGTAGCGAAAGT -TTCGGATTTTGGATTAGCGAAAAAAGCAAACAGCCAGTCACATGATTCGG -CTTCTGGCAAATTTCCGATTAAATGGACGGCACCTGAAGCGCTTAGACAT -AGTGTAAGTTTGGTTGAAAAATTGAAAAAAATTGAGAAATTTTTACAGAA -TTTATTCTTTCAAAATTAATTTCATAAAAAGAAACAAAATCATTTCAATT -TAAATTGGAATTTCGTATTCTTAAATTTTTAATTTAAAAAAATCGATATT -TTTTAAATTTAACAAAATTTGAAAAAAGAAATCCGAAAATCCGCCGGAAA -ATGCCTCAAAAATCTGCACTTTTTTTGAATTTTTGCCCAAATTTCTAGAA -TTTTCCCTTACTTCATTTTCTTTCATAGCTTGAATATCAAAAATGGGAAA -ATCTTGAAAAAAAATCCCAAAAAAATAAAAAACGAAAAAATCGATTTTCA -AAAGTTTATTTTTTAAAAATTTTTGTGATTTTTTTCTGATAAAAATAGTT -TGAAACTAGAATTTTTAGAAAATATCCAAATTTTCTAATAGTTCGCTGAA -AAATGACTCAAAAATCACCAAAAAATATTGAATTTTCGCATAAATTTTTC -AAAAATGGAATTTTTTTCATTAAAAATTAAGAATTTTTGCAATTTTCCCA -AATTTTTTTTAGCAATTCACCACAAAATCCGATGTTTGGTCATTCGGCAT -TCTTCTTTGGGAAATTTTTTCATTCGGACGAGTACCGTACCCAAGAATTG -TGAGTTTTCAGACAACATTTTTTTAATTAAAAAAATTTCTCGTGTTTTTT -CATATTATTCCTCGCTAGCTGTTGTTTTTATTTCTTGGTTGGGATCATTT -CTTTTAAGGCTCCACGGAAAGGGAATCTGCGCGAGAATGAGATCTACGAA -AATGAGCGACGATGCTAGGATGAAACGCGCGTTGTTTAGCATGTTTTTGA -GACTTTTCAAAAATAGAGTTTTTAACCTTTTTCGTAGATCCTCTTCTCGT -AGATTCCTTTTTCGTGGGTCCTCTTCCTATATTTTCGGCTTGGCCGAGTT -TTCTCCCGGCCACGATCATCACTATTTTATTGATTTTTGTCATGATTTTC -AGGGAGCCGATGGTCGTTCGGTATGTGTATATTGCATTTTTTCGTTAGGT -TCTATTTTTTTCAAATTCTATCCACTTCTATTATACAATACATCTCACTA -TCTTTTCCCCTGCCTGAAATTTTTGAAAAAAAATGAAGAAATTTTAATTT -TAAACTTTTTCCAAAATTTTCCAAAAAAAAAAGTTTTTTATCAATTTTTT -CAATAGCTCGAATTCTGAAAATGAAAAATGATGATAGAAATTGTTTTAAA -AAAATGATTTTTTTTGTTGCAAAATTTAATTTTTAAATCGAAATACAACG -TTTTTTTCAAAAAAAAAACACCTTATTCGAGACAAAAATAAGTTTCTTTT -TTTTTCAAAATTGAACATTTGGATTTTCTGGAAAATTGAATAATTAAAAA -AGATTAAATGTTCGAAAAAAAGAGAAATATATATTTATTGGCTTATTTGG -AAAAATCAAAAAATAGTAAGAAAAAAATCAAAATTGTTCGATTTTTTATT -TTTGTTTTGTTTCCGAAGATGTCCTTGTGGTATATAGTATTTTGGGTCCC -ACCACGAAAATCGCCGTGCGCCTTTAAATTCGGCCGACCACGTCTCGCCT -AAGTCCAGTCCCCCACTAATGTCAAAAAAAATTTTTTTTCGCAAAACCTG -AATTTTGAAATCTTTTTTCCAAAAAAAAAAACGTTTTTTATTTAATTTTA -AAAGAAAAAATTGGAAAAAAGTATTATTTTTTCTAATTTTGAACTTTTTA -AAAAAATTATTACACATTATCTGGATTTTCAAAATTTTCCATATTCGATG -TTAAAAATTATAAACATTTTTCAGAAAGGAACACCGAAATTTTTTTTAGA -AAAAAGTCAAATTTGGAGCGAAAATTATGTTTTTCAACAATTTTTCAACA -ATAATTTTGTTCAATTTTTTTTTTGGATCCAAAAAAATCTGTGTGTTTTT -GTGTGATTTCCGGCACCCAACTCCCCAGAATTTCCCTCAAAAACTCTATT -TTTTTCTCTGCTACCTCTTCTCAATCTTCTAATTAATTCTATGTTTTTTC -ACTATTTTTTATTATTTTTTCACCCCTTTCAGAGCTCATTTAGAGCCCAA -AAATAACCATCAGAAACACAAAAAAAACAACTTTTTTTTTCTTTTTGAAT -TAATTTTTTCAGCCTATCCAAGACGTTGTGAGATATATTGAGAAGGGATA -TCGAATGGAAGCACCTGAAGGATGTCCACCGGAAATTTTCAAGGTTATGA -ATGAAACATGGGCTCTATCGGCACAAGATCGACCGTCTTTTGGACAGGTA -GATTTTTTAAGGGAAATTTTTTAGAATTTTAAGACGAAAATCTGAAAAAA -AAACCTACAATTATGGCAATTTTTGTGATGAAAATCTACAAAATTGAATT -TTTTTTCGAAAACCTGATAGAAAAAAGAATAAAAATTAATTTGAAAAATG -CCGTAAATTGACCAAAAATATGGAATTTTTACCAAAATTTCAGGGGTTTT -TCAGATTTTACCAGAGTTTCTGCCTTATAAATTAAAAATTTCAAAGAGAA -ATATCTTTTTAAAATCAGCATTTTTAGCAATTTTTGTGATGAAAATTGTT -TAAAAATTGCCAAAAATGGGAATGTTTGAAGAAAATTCAGAAAAATCTAA -ATTTTGGGCAATTTTTGCAATAAAATTGAAAGATTCGGAAAATAATAAAT -TTTTCGAAATCCTGAAAAAATTTCACAATTTTTGCGAAAAGAATTGTAGA -AAATTCGAAATTTTATTATTAAAAATATTGAAAAAAACAAAAAATTTCAA -AAATCCGCCGAAAATGGCTTAAAAATCTAAAAGAAAAGATTTTTTGCATT -AAATTTTATTGCATTAGTATTTGCGAAAAACAAACCCGAAAATTCACTCT -AAAATTACAAAAATTTCAATTTTCTGAAGCTGCGTCCACAAAATGGCTTT -AAAAATCATTTTCATGTACAATGTCAAAATTTTAAAAAAAGTGAAATTTT -GTTCAGAAGTTACTATAATAAAGGTTTTTTGCTTTCCGGTCATTTTTTTG -AATTTTGGAACATTAACCGAAAAAAAAATTCCGCATTTTTACCCTGAAAA -ATGCGAAAATGTTTGAATTTTTTGAAAATTCCACTTAAATTTTTTATATT -TTCAGGTCTTGCAACGATTGACAACCATCCGAAATACAGTATGACATCGG -CGCACATCTCGAAACTTCCAGAAATCCATCGAATTTTCTAGTCCATATGA -TGTTTCTGTTTTTTTTTCGCTGTTTTTTACACAAATTTTGTCATATTTTA -TTGTAATTTCCCCCACACATTTTTAGGCATCGTTATTATATATTTTCTAA -TCCGCTGCCGCGCATTTCGGGAGATCCTGGAATTTAAAGGCACAGCGGTG -TTTTTGGATGGGTCCCACCGCGAAAATTATTATGCGCCTTTGAAATTTTT -TTTTCGATATTCCTAAAAATCACAAAAAACATTTTTTTTTCTAAATTAGA -GAAGTTTTAGCCTTTCTTTCGAAAAGTCGATTTTTTTGGTTTAAATTTTT -CTCGATTTGAAAAAAATTTCAATTTTTAGTGAAATCAAAGAAAAAACATC -AAGAAACTTCTATTCGAAAGAATTTTTTAAAATTGTATTTTCCGAAATAA -TTTTCTCTGTTGGGTCTCACCACGAAAATCGTCATGCACCTTTAAATTTC -CTTGCCCACACCTCTCCGAACGGCCGATACCCAATCTACGGTTTCTTCAA -TTTTCCTCTGCATTTTTCATCGATTTTTAAAAATTTTTATCGAATATTTT -CACGTTTAAAATTATTAATTTGCAACGAATTTCCCTCAACAAAAAATGCT -CAAAACTCCGCCCCTTTATTGGCATAATTTTTGCCGCCACGGAAAATGCA -ATAAATTTTATATTACTTTTCACCGATTTTTTAAGATTATTTTTAGAACT -TTTAGTTTTTGTATGTGTGTGTGCTCGTAGTTTATCGGCAAGAAATTATT -GTTTTTTTTTCTTAATTTTTAATAAGGGAACATTTTTTAAAGAGATTTTC -AGAAAATCGGTAAAGATTTAAGATGCTCTGAATATGTCCAACTTCACAAG -CTTCGTAGATTACGCGGAAAAGGTGATTTTGAATGTTGAATGTGCAAGTG -CGCCCTATGGATAAATGGAGCAGCGTGGCAATTCGAAAAAATTTAAATAA -AAACGTATTACTCGAAAGTTCACAGAGTTTTTCACCAAAAAATTGAAAAT -TCGCTGAAAAAGTCGCGGGACATTCCATTTTTATTTTTCGGGAAGAAATT -CGAGAATTGACTGAAAAAAGCGCGTCTTTATTCCAGAAATTTTAGCGGAA -AATTCCAGATTTTTTTATTTAAAAAGACTCAAAACATGAAAAAAATATTC -TGGAGAAATCAAAAATTGATTGAAAAGTTTCAGTTTTAGGCTAAAATTTT -TTTGCGAAAAATTCATTTAGTTTTTGTTGGTAAAGTTCCGATTTTTCTGC -AAAATTTGAATTTCTTTCTGAAAAAGTGCGTTTTTTTTTTCAAAAAATTC -TTAAAATCGGAAATTTTTCGCCCCGAAACTGAACCGAAAAATTCGAAAAA -TGAAGCGCGGTCAATTTTTGAATTTTGGCATTGAAAATATTCTGAAAAAT -TCAAAAATTGACGGAAAAGCTCAAAGTTTTTCACAATATAATCGATATTT -TCTCATTTTTCAATGTAAAAATCGATAGTTTCAGCCGCACGTCGCAGCAA -CAAGCCAGACACCAATACCGCCGTCACCGTTGAACGAAAAACGGCCAATT -CCACTGTTTCCAAGTGAATTTATCGATTTTTCTGTAGAAAAATCTGAAAA -TTTCTGAATTTTCAGACGAAATCAGCAGCTCTTCGTGCGATGACGTCTCG -TTTTCCATGCAATTCGGAGAATCTGAGCAGGGACATGTTATATGTACAAA -AGTTCGACTTCGATTCTATCCTGCCGTGGTGAAAGAGGTTCGAAATTCAA -AAAAAAAAGAAAACAATATTACTATACATTCGTAAAAATTAAATTTCAGT -TTAAAGGCGCATCTCACATTTAAATATGCATTATTATTCATTAGTGTCGA -CCCAGATTGAAAGCGCATGCAAATTTTGAACTTTAAAACTGGAAAAAAAA -TTTTATTACACATTCGTGTAACATGAATATTCAGTTTAAAGGCGCGTGCT -AGTTTTAAACTTCAAAAATTAAAAAAATATATATATATTCGTGAAAAAAT -GTTCTTTTTAAAAGCTCTTTAAAAGTTTAAAAATGATTATTATACGTTTC -TCAAAATTTTCAAAAATCAGGTCAAATGCACTTAGAATATTGGAAAATAT -GAAGAAAAATCTTTATACATTCCTGAAAAAATACGCATGGTCCAAAAGTC -GACAAATCGTGGCCCAATATTTTCTATTTTTTCAGAGAAATCTTCCGCAA -AGGTCGAAATTTTTCGACGATTTCTACGATGTTCCGCTCACTGCGATCGC -CAGAATTGAGGTGGCCATTGTGAAAGGTGAAAAATATTTTTACTTCAAAA -AATTATTATATTAAATTTACACATACACATTCGTGAAAAAATTTTGCCGG -TAAAAATAATGAAAAATATATACAGAAAAATACGGAAAATTTGGATGAAA -AATATTTTTTGGTGACAATTAGAATATTACCCGCAAACAAAATTCAAATG -AATTTTTTCAGTTTTTGAAAATCTAAACAAATTTCAAAATGTTATTATAG -ATTCGTGAAAAATTAAAACTCAGTTTAAAGGCGCATTTCATATTCAAATG -AGAATTATTAAACATCTTAAAGACATAAACAAAAAAAATGAAATCTGAAG -AAGAAAAATTATACATTCGTGAAAGTTGGGAACAAAATTTTGTAATTTGA -GTGCTTGACATCAGTTTAATAAAAAATTTTGAAACCAAGAATTTTCGAAA -AAAAATCACGTATACCTAAAAACTTGTAGTTTTTTAAAGTTAGTAAACTA -TTTTCTCTCAAAAATTCAAAAATATTCCAGGTAACAGTAAAGGAAAAGCG -GACAAATTTCAACGCCTCGAGACAAGCCTATCAACAATGGAAACAGTATC -AATAATTCGTCTAATATTAAAAGATGTCAGAGTTGTTACAATTGACTTGA -GAAGATCTCAAAATGCAAATATATTGGCTAATCAAATACTCTACTTCTCG -AAAAGTGGACCAATCGAAAAAATGACTCAAGTTGGAGCTGCTATGGAGGA -GCGCGGTGTGAAGGCGAAAAGTAGGCATTGGATAATTAGTATTGGGGGTT -GGGAGGGGAGGGAGGAAAGTTCGAGAAAATCGGAATATCTTATAAATATT -AGGCCGTTTGATTAATAAATCGACACATCAAGTAAATAAATTTTGAAACA -AATTAAAAATTTTAAACGTTTCGATTGATATATGTGTATCAATTTTTTAA -AAGATGTATATTAGTAACAAACAAGAAATTTTTTATTCAATAAAAATATA -CTACGGGAGCACTAAATTTTTAGAATGCGTATTGCACAACATATTGGACC -AGATATCTCGTAGCGAAAACTACAGTAATTCTTTAAATGACTGGTGTCGA -TTTACGGGCTCTTTTTTCATTTCTCCGTATTATTTTCTCTTTTTTGCTTA -ATTTTAATATTCTATCTATAACTAAAAAATTAATTCATTTCGAAAATCTA -GCCCGTAAATCGACACAAGCGCTACAGTAGTCATTTAAAGGATTACTGTA -ATTTCGCTACGCGATACTTTGTGCGTCAAATATATTGTGCATTACGCATT -TTCAGAATTTTGTATTCTCGTAAAATTTTCGAAAAAGTAAATCTTTTAAA -AAACTTTTTATTAAATGAATAAAAACGCATTTTTTGGAGAATCGGATAAA -AATAATTTATTTAAGTTTTGAAATTTTAATATTTTGAAAAAAAAACATTT -TAATTGGAAAAAAATATGAAACTTTCTTTTGTAAATATGGTTTTTACAAA -ATTCCCGAATGTCCAATATACAAACTTATCATTTTCCAGCAGCATTCAAT -AGCTACGAAGCATGGCGTTCGGAACTCCAAAGGTGCCAGCAGAAGACGGA -TTCAACGTCTGTCTGGAAAATTGTAGCACTTAACAAAGAAGGCTTCAACT -ATGCGGCTCAGGGGTGCGATTTTTGGAAAAAAAAACTGGATTTCCGATTA -AAAATATGTATAGTGTATGTATTTTTCAAATTTCCAGCTACCCTGTGTAC -GTAGTAGTGAGCAACTTCTTGGATCGTGTGGACATTGAACGACAACTACA -ACACTACAAACAAGGACGATTTCCGATTTGGGTGTGGTCTCGGGCGAACG -GACACTCGGCGTTATTCGTTTCGGCGGATCACGAGAACAATATCGCGATG -CCGGCGATTTTGGCGAAGTTAGTACATTATATTTTAAATTTGTAAAATGT -TATTTTCTTCCAGAATGCAAGAAAGTATCACCCGTTGCCATCCGAATAAC -GAGAAGCCGCATGTTATAAAATTGGACGTCGATTTTGTGTCGAATGTTGG -AAAAGCTTTTGATAATCTTCTATCGCTTTGTGCAATTGGTGAGGGAGAGC -ATTTCATATTTAAAAAAAAAATTATTCGCCGTATTTTCAGCTGTTTTATT -TTCCATTATTTTCCATATAATATGCATTTTCCCAGACTCCTACGAGCAAT -ACGTTACACTGCAAAACGGTTGGAATACGAAACTCTCGAGAACCGGATGG -CTTCATCTCGTCAAGCTGTGCCTTCAGACTACCTATCAGACGATTCAATG -GATTGTTGATAGAGATCGATCGGTTATTTTACAGGGTACTATCAATTTAG -GTTTTATTCAGAGAGAGAGAGATAGCAATTTTCAAAATATTTACAAACGA -GTTAGTCATTTACATCCACAATCGACTGATCAGAATCTGATTCGTGGCCG -TTTTCCTCCGCCAGAACTTTAGGAACTTGCACCGAACTACTTGCTGCTTG -ATCCTCCCCCTCCAGAGGATCTTCTCCAGATGGGATACAACTTTTGATGA -AGCTGATCATCGGATCCTCCTCTCCATCATCCGAACTAGTTTGTCTGAGA -AGAATATCAACCAGTGTCTGCATTAAATCACCGGGTTCCGTTCTTGCTCG -TCGAGTACTCAAATTGTGTCGGCACATGAATTTGTCCAACCATCCGCGGG -ATGCCTGAATGATAAAGGTGGAGTAGCGTCGAATAGTTATTTTTTATGTT -TTTCATATACTCGTTTGCATTAAAGTAACGGCTCTCCTACCTTGAAATCC -GAGTTCTGACTGATTTTCTTTGCCGTTTCACCGATGATTCTTCTGGTGAC -TCGTTGTTTCTCCTTACGCTGATCGTGAACCCATTTAATCAATTCCTTAT -CAACGTCGTCATACTTTAAAGGTCTTCCACCTCCCGAAAGTCGCTTTGTT -GCAGTTGAGCCGTTGTCTTCTCTGAAAGTGTTATTTGCCAAAAGGCAGCA -AGTCGAAAATTTTTCAAAAAGAAAATTTGAAATCGAACAGAGAATTTATG -TTATGCCCGTATTTCAAAATATAGGAATAGTTGAAATGACTTCTTTTGAT -AGGATTAATTATAAGCCTAGAAAAAATCATAGTATTTGGAATAAAAGGTC -CATAAAAGGTTCTCAATTGATAGGGCTTGCATGTAGGCGTTAAACCCTGC -CTTTAAGGCGACCTCCGCTTGCCTCTCGGTTACGCCTTACGTTGTGCTAA -AACATAATCAATCTTTTTTTTTTTAATTTCTATTTTGATTTTCATCAAAT -TGAGAGAAATGAGAAAATTAGAAATTTGTAAATTCACATAGGCGGGTTTC -AAGCAGGACCCTGACACCGCGCATGCCTAACATGAAAGTCCTAGCCCTGG -ACTATTTTTTTGAACACAAAAATATGTCCGAAGTGGCAAAACTTACAACT -GCTTCTCGATTTCAGCTTTCTGGGCGATCCACTGTTGAATGTTTTGCCTA -TTCACATTCAAATCCTTTGCTGCTTTCGATATATTCTTATGTTCAAGGGC -ATAATTTATGGCATGCAGTTTGAACTTCAAGTCATACGTTCTTTTTCGAG -TTTTTACAGGCACTTCTGTAGGGATTTCGCTCATTGGTTTTCTCTGAAAA -ATAAGTATATAACAAGCAAAGTCTTAACTAGTCAGCAAGTTATTGGAAAT -AAAACATGTGAGAAAAGCGAACGAAGGGGCAAGACTAATGGAGACAGCAA -ATTGGCACACACGCAGAGAGACATGGCTAATAGAGTGTGCAAGACTATTA -GAGGGTAGAGGCAGTGAGACGAATTTCCGACTGGTCAGAATGTAAAGGGG -GTGCAAGGCTAATAGGAGGAGACAAGACAAATAGAAAAACTACATTATTA -TATGAAAAGAGAGTAAGACTGAATACGTGTATGGGCACCCCACATATTTG -TATGTAAGTAGTTATGTAAATGACTTTTTGGAATTGAAAAGAAAATACCA -AGAAATGGAAAAAACCTCCGGTCAATCGTAAAAAAATTATGAAAGAAGTT -CGATCTACTCGGCTACGATTTACAGTTTCCCTTACTGATTTCTACTAAAA -TGCATTAATCTTGAGTTTATCTCTAACAAATTGATGGTACTTTTGAATGG -TTATAACACCGGATATTTTGCAGAAGACGAAGGATCAGATATGTCGATTA -TTGTGGCCAGCCTCACGCAAATGTGCTGTGATCCATTTTACAGAACAACT -ACGGGTGAGTTTATTAAATGTTTTTTCTGTACTAAAAATGGGGTTTAAAA -AACTAATTTTAATTTAGTTCTCTCCTTGTATTAATTTCCAAAATTTTCCG -AAATTTTTTTTTCAATTTAAAAATCAATTTCAGGTCTTCAACAACTCATC -GAAAAAATGTGGATTGCCCTTGGCCACCCATTTGGTGAACGGCTACTCGG -AAGAACCGACGATGATCCATCGAGACGTGGAAAACCACAGAATAAAATGA -GAACTGACGTCATGCCGACGTGGTTGCTCTTCTTGGATTGTGTTTCACAG -CTACATCGAATATATACATTTGAGTAGGTTTGGTAAAAAAAATGTTTTCC -CCCGCAAAAAAATGTTTTCCTCAAAAAATTTGAATTTCCCACCCAAAATT -TTTCTCAAAAATTTTTTTAAAAATTAATTTTAAAATTGTTTTCTCAAAAA -ATTTGAATCTCCCGGATTTAAAAATTCCAAAAATTCGTCTATCAATAAAT -TTTATATTGTTTTCGAATTTCGAATCATAAAAATTAGTTTCAAGTTAACA -CACCTTTTTTTTCAAATAATTTTTTTAAAAAATAATTTTAAAAACAATTA -ATTTTTTTCCTATTTCCAGATTCACATTCTCTCCACACGTTCTCATTGCA -CTATGGGATCTTTCATTAACTGGAATGGTTCCATCAATGGCTTGTAATAA -TCTGGAAGAGCAATTACTCGCAAAAGTCGGCGGTGGACCATTCCCATTGG -ATCGATATTTTGAGAAAAGCTACTCGAAATTATTTGGAAATATTTGGCAC -GACGCAGTGCTTTTTATGGAATCTATTAAGAAAAGTTGGTGCTTTTTAAG -AAAAAAATTTTATATCGATTGTTCTTTTCTTTTTGATTTCAGCTACTTTT -TCACCTCGGTCAGCAACATTTTTTTGCAACATTTTGGACGTGGCCGCGAA -AAAAAAATTGGTGGCCGAGTTTTCTTTTTTTTCACTGCCATTAATTTCCG -AGAGGAAAATCTAGGAATTAAAATTTTTTCGAAAGTATACAATGTTGACC -GAGAAAAAATCGGTGGCCGAATTTTCTCTTTCTTCTCTGCCACGTTATTT -TAGTAAAAAATTAGAAAAAAAAACACAAAATGTTGTTCAAATTTTGGAAA -AAGTCTGTAAAAACAACAAAAAATTGATGGCCGAGTTTTTTTTCCATTTT -CGCGGCCACGTGACAAGCAGTGATTTCTCAAATGTTTTCAGGAAAAAAAA -ACAGGCGGAATTCAGATAATTCTACGAAAACTATTTTTGTTTCTGGAAAA -AAGTCAAAACTTGAAAATCGGTGGTCGAGTGTTCTCTTTTTTTGCGGCCT -TATCTCGATTTTTCCAGATCAACCAGTGTGTGCTCACTCGAAATTCCTTC -AATGTGAATTTATTCGGCCACCGACGTCGTTTTGCGATATTCAACTGTGG -TCCGAGTGCTATCTTCGATGGATTCCTCCGGCAAACGGGAAAAATTCGGG -AAAACTCGGCGAAGAACTCTCGCTGGACGAGAAAATGATCGAAATGGCCA -AAAAATGGAACAGTTCCGAGTGGAAAATGCATTTGGACCTACCGGAAGAG -GTGACCAAACTTTTCGGATTTATAGGCTCTAAACATATTTTTACTTTCAA -TTCTTAAATTTTTAGTATTCATCTGCATATCCTTACTCGATTCCGGAGAT -TTCCCGCCCAATAATGGATTTAAATGATTTTGATATGATCCGGCCGGATG -ATTTCGACGCAATGTCCATGAATTCATCCATCAACTCATATTCGTTCGTT -AATACGGTAGGGATACTTATTAGCTCGGAAAATAAATTACGACATATTTT -GTCTCGAATTTTTTATAGGTGACTTATAATAGACATTTAGTGTCTAGGCA -CACATAAAAGTTAGATCTTTTTCAGCTATCGTTTCGATACTTTCACACAA -AAGTAGGTTTTTTTTCGCAACTTTGTAAATTGAAAAATCAATAGGTCGGC -AAATAATTGTTGGCGTATTTTGTCAATTCACGATATTTATCAAAAATTTT -ATATGTGACTTCTGGTAGAAATTTATTATGGTTGGCAATAAGTACTGAGT -CAAAATTCATATAACTTGTTTTGTTGCTTATCGATTTTTTTTAATTGCCG -GAGTTCATGTTATTAACTATGGGCTTTCATCTGAAAGTAGTCACAAAACA -TTTTAAAAACTCGAAGTGATCCAAGTCGAAACAACTTTTTCAAGGTTTAC -GCCCTCTTATTTTTTCTCTTATTTTCAGCATTGATATGAGTTTATGTACG -GATCAAGAGTGTCGGTTTTTCGATTTTTGTATAAAATCGAAATTTTTTTT -TTGATTTTTCGATTTTCCCTGAAAAACACACAATTGAAAAATGTCACTCT -TGGTACGGATATTGCTAAATCTATTATACAATGTGAGAATCCAATAAAAG -TTTTATATTTTATTTTTGCAGCCAGTTCGTAACAACACGACAACAGAATC -AATATTCGATCATTCGACACTTGAGAAACGAAATCGTCGAGCAGCTGCCA -CAATTGGCTCCGAATCGCCAGTTATTCAAATGAGACCAAAAGAGCAAATT -GTCGGATATTCGAAATATGCATTTGATGATTCATTATCACCAAGACCACA -TTCCCGAACTGTTGAGACGCCTATTTTAAAGAATGTACGGGATTTTTGGA -AAATTTAAAATTTGGAAAATGAAAAATTCAAACAAAACAATTTTTTCGCT -TTCAAATTTCATAAAAATTTATGTTAAAAATAGTTTTTAATTGAATTTTT -AAAAAATTCTTACTGAAAACTTTCGAAATAATTAAAAAAAAAAACCAAAC -TATATTTGTTTTTTTATTATTGAAAAAGTTAAAAAAAATGTTTTTTTTTG -ATAATTTTACACTGCTCGCCTTCAAAATTTGATGAAAATCTTAATACTAG -ATTTTTTTAATTTTTCATTTAAGACTTTTCGAAAAATTCGAAAGTTCAAA -AAAAAAAATCCAAAAAAAATTTCACTCAAATCAATCGCCTTCAAAATTTG -ATAAAAACTCGATGAAAATTTTGTGGAATTAAAATGTTTAATTTATCATT -CTGAGGCACCACGTTTTCAAGATCTGGTGGGATTCCGGATCTACATTCTT -CATTTCAGCGCAAAATCCCTAAATCCGGAATTCCACCGAATCTTGAAACC -GTGGTGCCTCATCATTCTACCTTTAAAAACTCGAAATTATAAAAAATTCT -GCAAAACTCTAAAAAAATTTGATTTTCGATTTTCGAAAATTTATCTTTTT -TTGTATTTAACATTCAATAAAATATTGATGAAAAAATTTCTAGAATCATA -TTTTTAAATTTTGCTTTACAAAATTTTTTAAAAATCTACAATCGTTCACT -TTCTTGCCTTCAAAATTTGAATGAAGAAAAAATTTCAAAAACTTTAAGAA -TTAAATTTAAAATGTGCTCAAAAAATTCTTTAAAAATATGCGTTTCCCTA -ATAATTTCCATGTTTCAGTCCCCATCGCCCTCCTACACCCCATTTCACCC -GACGCCCGTTCACCGGAGCAACACCGTCCGTGCCGACAATCGCCCAATTC -CCCCGCCCCGGCCGCAGGGCCTAGGAACACTGACCCCATCACGCCCCGAG -ATAAGAGCTCATCGAGATGATATAGAGAGCCCTACTATTCGGGTCACAAG -ATTTTGAAGAAAAAGTTATACTTTTATTTTAATTTCCGCTCAAAATCGGA -ATTTTCTATAAATATGCCCCTTTAAATTGAGCTACAGTAGTCACGTCGAA -AAATTTTCAATTTTTTTGAATTTTTTGAATTTTTTCATCCAGTTATAAAA -AAAAGCTTGCCCCTCAGCTCTACCCCATTTTTCTTTCATTTGTCACCTAC -TTCCTTCATATATGCCCGGTTAATTATGTATTTTTTGATGCTTTTTTAGT -CCCGCCACGGTTTTTTTCATTTCGAAAAGTCGATCGATTATCGATTTTTT -CGAAAATTTGGAAAATTTGGAGAAAATCTAAATATTATCGATTTTAAGCT -AAAATTTTAAGATTTTATTTTTTCAAATAAAATTTTGGAAATGTTTTTTT -GAAAAAAAAAGTGCAAAAAACACTCAAGGGAAAATTTTTAAAAAATTGGA -AAAAATCTTGAAAGTTTGTCGATTTTTCAGTGTGCATTTTGGAGTTATCG -GTTTTCTTTCCGAATTTTCATCAAATTTATTTTTGATCTACCAAAAAATC -TCTAAAACCCCGTGGCGGGAACCTACTTCACTTTTATTCTGCATAATTAG -ACAAAAATGTGATTATTTTCTCATTTCAAAACTTGTTACATATTTTGTGT -TGTGATACATATGTCTAAATTTTTACGGACTGAAAAAATACTTTTTTCTT -AATGTTTTTGAAATTTTCATTATTGGTGGCGTCATCCATGTCTATTTGAT -TTTCCAGACCCCCCCCCCCCCCTCTAAAATGAAAAGAACAAGACGATTGA -CAGCTAGCATGTGCGACGATCAAAGTACCGATTTGATTCAGTTGAAGGGA -CACGAGAACGCGAAAAAGTCGGAAGCCCATCTGAAAGTGCTGGAATACAT -TGGCAAACGCTATGAAATTCGAATGACCGACGGGCGGTACATACGTGGCA -CGATGATCGCCACTGACAAGGACGCTAATATGGTTTTCAACAAGGTAAAA -ATTTGATGAAAATTTGGTCCAAAAGCTCATAGTTTCAAATATTTTTCCTT -AAAATTATGCGCCGCAGGCAAAACAACATTCCGCCTTTTTCTATTGCTGG -CTTAGTTTTCGCAATTTTCTCGGCTACCAGGCTACTGCAAAAATGATCGA -TCCGTGAATTGTGCAAACATCTGAGTTACACAGAGAGTGGGGCGGAGCGG -AACATCGCAACACTGCCGCATGGTTTTTCCACAACTTTTTTTTTCAAGAA -AGTTTCGATTGTACTTGTTTTTTCTCTTTTTTGTATAAAAATGGTATTCA -TTCTAAATAATTCACATATGCTAAATTGCATATAAAAACATGGAATATCC -TCTCAAATTAAGAGTCTTAATCTTATTAGAATTAAATTGGATATCATTTT -CATTCGAAAAGAAAGAGAAAGAAACAAGTAAAATCGAAACTTTTTTGAAA -AAAATGCTTGATTTTATTTCATTTTCGTTGTTTTTTTTTCAGTATTTAAC -TTTTGAACGATCGATTATTTATAAGGTTTGCGGTTAAAAACGATGAATTT -CGTGTTTTTCTTTTCTGGATTCAAATGACAAGTTTTAACCAATTCGAATG -TCAAACACGGAAAAATAAGCGAAAATAACAAAAAATCGTGTATTGTAACC -AAAAAGTTCTCCACGAGTAGTACACTAGAGCCGACGCGCCGCAGGTTTGC -AAAACAACGCCCACCCCGTTTTCTGCGCGGCACTACACAATTTTCTATCT -CACGAATAAATATTTCAGAAAAGGCAGGATTTTGTCTGAAAATCATGAAA -AATCAAGTTTTTTTCAGGTTTCCAACGCTGAAATGGTTGGAATTAGGGTT -TGTTACCAAAAATCGTATAATATTAAAATCCCAGTGCTTCTCTGTCTTTC -AGCAATTTCTTTTAATTTCCAGGCAGACGAGCGATGGGACAAAGATCCAC -AATTGAAAGGAGTCCGATTTCTAGGGCAAGCGATGATCTCGAAAAAGCAC -GTGGAATCGATGCACGCGTTGCCGGACCCTAAAGAAACTGAAATTTGATC -CAGTTTTCTTATTTTCTCTAATTTATCCCATCCTTTTCTTGTCAAGATTA -ATATAAATTAATTTTTATCGAAGCGATTTTTGTTCATCTCATCCAAATAT -GAAAAAACATTCGAAAAAAAATCGCAGGCTTCACTTGGAACCGCGCGCCA -TCAGTTGAAAATGCTGAATATGTACAAAGACTGGAAAATATTAAATTTTT -ATGTTTAAAATTTCACGTTTTTCGTGTTTTCCACAAAAAAGCAATGCATT -GTCGTTTTTCAAAAAACACTCATGGTAAACGAAGTCCCCGTGGAGTACAC -GACAATGTCGCATCGAGACCCAAACTGGGAAACGCCTGCGCCTTTAATTT -TAGGAGTTTAATTTTCGAATTTCGAGTTATTTTTTTCTCAAGTCTTTTTG -CGACTTTTTTTTGAATATTTTATTACTTGTAGCGCTGAAATATGACAGTT -ATTATAGCGTCACACTGGGGACCTCAATCAAAACAGGTATTTTTCAAAAT -TTCGCCGTAAAATCTAATAACCAATTTTGAGATGTTGCCACCCGAGCCCC -CACGGATAATTCTGAGAGAAGTTCCGGTCCAGAATAACCAGAAAGAGCAT -CCACCGGTTCAGGAGATCAAAACCGTGTCCAGCAAGTCGAAGGAACATCG -CGTCAGTTCGAGCCGGAAAATTCCGGATCACTTCGACGTGGGCCCACGGT -TCTACATGAATGTCCCCGCAGATGGCTCAGAAGTGTTCGAGGACGACGAA -AAAGACGTCGAGAACGAGTGTTGGGCGGTGATCGAAAGAATAGGAAGCGA -GGATGACAAGTTCGAGGCCTCTGAGCTTGTCGAGTACCGCGATCACGATT -GGTACATCGCTTTGGCGATTAATAAGGAGAAAACGCCGGATAAGGCGAAT -TATCAAGTAGGAATTACGAAAAAAATTTTGATTTTCAATCTCATTTTTTA -AATTTCAGCACCTACTCTACAGCTATCGAGGCGGAATCCAACGCATAATT -CTCACGCCTCAACAGACGGATTCGATCGACAAAACGCCGCTAGTGAAGTA -CAAAATCATCGGAGACGGTCTGTACGAAGTGCTTCCGATTCACTCGTCCC -TTCCTCAAACTGGTCTAATCAGTCCCAAATATCGTTACAACAAAGGCGTC -GAGCTTCGGATTTTCGGGATAGTGAATTGGATTGATTTTGTGTTGGACGA -CGATCATCAGACGCACAGGACGATGGTTTGGACAGATGCGGTCGGACCGA -TCTATCTGAGTGCCGCGGATCGAGCCAATATTCGACGGAAGCTGCTGCTG -ACCGAGATGCAGATTTTCGCGCCGTTGCGAATGTGCCATATTACTGTCAA -GGCGGAATTTAACTTGTTAGTTAAAAAAAACGCGTAAAAAGAATAATAGT -TCCAAATTTTCAGCTCGATTCCCGATGGTTCCCCGATTCAATGGACCATA -TCATCGTTCCAGCCACTCATCGAAGAATCAGAGAAGGATCCGAATATTGG -GCGCAATTTATGGCCAGCGAGAGTGCTCAGATTCGATGATTTAGTCGTTA -CAAAGAAGGTGCTTAATCATTTTAATATTAAATTTTAACAGCATTTATAA -TTATTTATCTATTTCCAGACACCGAACGGCTACTGGCTGAAGTCTCAAAG -ATTGGAGGGTCACGTTAATGTGTTCGCCGGTGCAAATCAAATCGGAATCA -TTGAGTCGGCGGGTGAAAAATACGCGACGAAGGGAAGCATGATGGCGTTC -GTGGTTCCGTGCTATCAGAACAGCACGTTTGCATATTTCGAAGCACTTAT -CGCCGGACCCCCGCGAGTCGTGATGATTATTACCGAAGGACGCTTTCTGA -ATTATTGCCCGAAGACGTGGCCACCGTCTGTTCGGAAAATGCGTGATCAG -TATCAGAAAGAGCACGTTGTAAGCACAATTTTCCAGAGAAAAAGGCTTTC -GATAAATTTTCTTATTTTCAGCTGAAATCCGAAGTCCGAAGTTCACCAAT -CTGCATGAAACAGCCGGATTATTGCCTCAAATCACTACGAGGATTCAGCG -AGTGCCCATTTTGATCACTCAAAGTTTTATATATTTCTGTATTTCTTCTG -CCTTATTTTAAAAAGTATTTTCCCGTTTTTTTTCTTTTGTTCAATTTTCC -CTTTTTCTTTACTTGTTATGTCCTATGTTTCATGCTAAATTAACGTATAT -TTTTAATTAGCAATTAAAAAACTTTCTGATTAACTGCCAGTTTTTGAGAA -GAACCAGAAGATGGAACGCAGGCGAGTTTCTGAAACGGAAAGGGTTTGAA -ATTTTTATCAATCAAACAAACTCGCAATTTTATCAAAAACCATGCCGTCG -TTGCAAGTTTGAAAAAACCACATATATTTGCAACATTGATAGAATATCAT -TGGATCGTATGGATCCGCCATGGCCAGACCATCATATTGACATGTACCGT -TTAATGGGTTCGGTACCGCTGAAAAGTTGTTGGTCTCGCAGCGAAGTACT -ACAGTAATCGGGAAAAAGCGCTGTTTATTATCGATTTTTCAATTAAAAAT -CAATAAACTCGCCGCGAGATCCAAACCTCAACTTACGATAGCTTTTTGTA -GGAGTCGATTGTCCATCGACAAGGAAGCCAGCAACTAGGAAAATTTTGAT -AGGGAGAAGCATTGAAATTTAATTGTTTTTGGGGGTTTCGTTTGGTTTTT -ATAGGAATTTTTGAGCTGTAAGAAAACAAAGCAACATTTATTTCAATTAA -AACCGGAAAATATGAGTCATTATGGGGGGTTTTCAACCGTACGGAATTTG -ACAAATTTGAAACTACCATAAAATGGTTAGTTTTGTAGTTAGAGAACTCA -AAATTGATTTTCTAAGACAAAAAAATTGCCCTTTTTCAGAATATAGTAGG -TTTGTATAATTTCCAAAAAATTATTTTTCTTGCCCAAAAAAAAAAGGACA -GTCATTAGATGGCTGAAAAAAAAGTGGGCAAAAATAAAAAGTGTCTAATT -TTGTTGAAAACGGGTAATTAATATATGCAGAATTCAGAAAATCTAGGTTT -AACCCATCAAAAACCATTAAAAAGTGGCAAAATTTGGCAATTTTTGCAAA -AACTCACAATTTTGAAACTCCTCTAAATTGGTTCAATTTGTAGCTAGAGA -ACTTAAAATTGGTCTCCAAGCCCTAAAAAATTGTCCTTTTTCAAAATATA -ATAGTTTTAAACGTTTTTAGAAAATTTATTTTTCTTGCCCAAAAAAAAGG -ACAGTCATTAGATGGCTGAAAAAAATTGGGCAAAAATAAAAACTTGTCTA -ATTTTGTTGAAAACGGGTAATTCATATATGCAGAATTCAGAAAATCTAGG -TTTAACCCATCAAAAACCATTAAAAATCTAAAATGATTAATTTTCTAGTT -AAAGGATTCAAAATTGATCTTCGAACACTAAAAAGTTGTCAAGTATCCAA -AAAAAGTGGTTCAATTTAAAAAAAATTGGTCAGGGAAAATTATCGATTTT -TTCGCCGCTTCGCAACTTGGACGAATTTTTCTTTCGCTGCACAAAAATCA -ATAATTATTGATTTTTTTTCTAAAACAGAAAAATAGATATTTGCACTTTT -CTGAAAAATCGATATTAAACGGAAATTCGCAAAAATCGATGGTCACTAAT -TTTTTTGCAAAACCCCAGTAAAAAATCGCTTTTTTCGCCGCATTTCCTAA -CTTTTTCTATGCCACCACTATTGATTTTTTTTCCAGAAATCTTGGAGCTT -CCCAAACCCGCTCATCAGCCCGCGTGCTTCATCAATCATTCCGTTGAGAA -CTATGAATTTTTCGAATGAAAATTAAAAAGAGGGGGATTTATTAGACTGA -AAAAGTGTTTTTGTGCCACGTGGCGGCGGCCGAATTCTCCTGGACGGGAA -TTTCTAGGCCATGCTTGGGGGAGATGAGGAGATGGGGGTCAACTTCAAAT -GTGTGTAACAAAATAGAAAAAAAACTATAAAAGGTAAGAGGAGATCAAAG -GTCACGCCACTAGGGCTTGAAAAATGAATGCCTGCCTACAAATAGACATG -TAGGAATGTAGGCAGGCAGACAAAAAGTGGGTGAACAACGAGAAAAGGCA -CGTAAAAAGGGGTAAAGGTTAGAGAAAAAGAAAAAAAAAGCTCACAGAGC -ACATTAAAAATGGAAAAAAACGAGATCATTGGATATTCTGCTGCCGTTGA -TCATCGTCATCATGAATGATCAGCTGATTGGGGTCGACTATCACATCATC -TGGGTTCACGAGAGCATCTTCTTCGAGCAGCTCATGCGGAGGATGATCGT -CGTGATGATTTGGCTCTTCCACAACCACTTGTTCGAGGACATCTGGAATT -TATAGAATTAAAAAATACATTTTTTAGACAAGAAATCGACAAATTTCTGT -GTTTATTTCTATTTTTCAGATAATTCCACACAATTAGATAGTTATTGAGT -TTTCTTTCTATAAATTTCAAAAAAAAAAACGATAATTATTGATTTTTTTT -TAAATCAAAAACTTCACAAAACTCAATAATTATATATTTTTCGTCCTCAT -TCTCTTTCGGTTTTGTGTGTGTGTGAGTTTTTTTGAAAAACGCAAAATTT -TCTGTGATATTTCTATTTTTTAACCTGACATGGGCAGTTTTTGAAAAAAT -TTTGCAATATTTTCGGTGTTCTTTCTCAGAAAAACTCGAAAAATTGCAAA -ATAAATGTAAAATTTATCAAAAATTACACATTTTCGGTCAACCTTTTGCT -CAGAGAAACTAGAAAAAAAATTTCAATTTTTTTGGAAACCTGCCAAAAAA -TGAAGTTTCAGTGAAACATTTTTTTTATCTTTTTTCGAAAATTTAATACA -TTTTTTTGCAATTTTTTAATATCAATCCGTTCTCACATTTTTTGGTAAAA -ATATGAGGAAAATGAATACATTTTGGATTTTTTCAGAAAATCTGTTTACC -ATTAATCTGCTTCTCCCCAGTATAAACTTTAGGCTCATTCTCGTGCACTT -CTTCTTCCAAATTAACATCATCACCAACTGTCCCAATAACTTCTTCCTCG -ACAATTTCCTCAACAATTGCTCCATCAGGAGCCATATGCAAATGCATTTC -TCCATTATCCATTTCTTCTCCAGCCATTATTTCGACTCCAAACGTGTGAT -TCACTATTTGCAAGAGACGATGTTCGCTTTTTTCGAAGAGCATTTTGAAG -AGCAAATCGAATGTCTCGTTGTCGGTTGCTGAGCCAAATGAGTTCTTGGC -AATACGGAAGAGAGCCTCGTTTCGACTTGTTCCACGCGCCATTCCAGATT -GTGATAGAGGCTGGAAATATTACTATTTCAGATTTTTAGATTAAATGTGG -AGCTGGGAAATTCGAGTTTTCGACGAAAAAATAGCCTTTCAAAAGATTAT -TTTCAGATATGTTTAAAAAAATTCCGTTGAAAACGACGAAATTAGATAAA -AATTGGATTTTCAGCACATACACGGGCGTTTGATTACGTGGCCGTGAAAA -CGGAGAAACTCGGCCACGTAGAAACAAAACCGAAAATTGCAGAAAATCCA -GGAATTTTTTTTAATGACTCCGAAATTTCCCCGATTCCGAATAATATATA -TGAATGAATATATACTTCTGAAAAATTTCAAAACCTTTGCTCACCAAGCC -ACTACTCTGCTGCCCAAAATTTTTAGGCTCCTGATATTTCGCCTTTCTAT -ACGGCAGCTGAATCTGTTGCTGGGATGATGATGGTTGCTGAATCTCTTCG -GTATGTGAAACCTGAAGCTCTCGCTCGTCGAGCATCTCCTCAAGATGCAC -ATTTTTCTTTCTGGATCCTCCTTCTGAAGCTTCTGCTGAAGCTCCAGCCG -TGTCAGTCGTCCAATCATCCACAAAATCACCCGCCGCCGCCGAAACAATC -ATCTCATTCTTCAACTCGTACGGATCATGATCATCTTCAGCATCCCGAAT -ACCATCAGTCGCCGCCATAATCTCACGACGTCGTACATAATAGAGCATCT -TCGTGTTCACCTGAATCCCATACTTCTCCAAAATCACTTTAGCCACCTCG -GCAGGTGTCATTCTCGCGAGCAGCCGGAGCACATCCTCCCGAATGTGTGG -TGGAAGACGTTGAAGTGAGTATTCTTGAGCGGAGCTCATCGTGCTCACGT -TAACCGGAGCCGGCATCTCGCCGGGCTCAGTGTACCAGTAAATGATCATT -GCGTTGCCGATTTGATGGCCATTCTTCAACACGTACGTCACCTTCTTGCG -AAGACGTGGACAACGTGGAAGGGTGGCTGTGTAGACGTGAAGCTGGAATT -CGATGAGATCCGAACGATGGGATGATGGTGTCTTCCAGATGCGTAGTTGA -CCTTCTCGATTCAGTGCGAGCGCTTGTTTCGCAGATTTTGGACGTTTTGT -GATGCCGTCTGAAAAACAGAAAAAAAATTAAGTTTGGAGCATCTTGAATT -TGCCTTTTTTACTTTCGGAACGTCCCACTTTTGCTGATTTTTCGTGTTTT -TTTTTCTGGAATTTTGGAATTACAGGGAATATCTCTCCAAACCAATTACA -GGGAATATCTCTCCAAACTGGCCGTCGCAGGAAGACTTCACTTTTAAATT -GTTTTACCTGTAGGCACAAAAGCAAAAGAGGAGAGCCTACATCTTTGTAT -CTTCGATAAATTCGTTAAAAGTTCTTTTGTCTTTATTCATTTTTCAAATT -ATTTTCCAATGTTTTAAAAACATTTTTTCTAAACTTTACAGTAATTTGGG -CTATTTTCACTATTTTTCAACTTTTTGACGCGTTTTTAATTCTTCATTTC -AACCTCATTTTGTCCAAACTTTCTCAAATTTCCACATAATATGGCCGATT -TTCATGAAATTTTCATAATTTACACCAATATATTCAATTTTTAACCTCAT -TTTTTTCACAGAAATTCCCAACATTTTCACATATTTTTCATGACAAATTT -GAATTATTTCAATGTTTTCCAAACTTACGAGGATTGGTGCTAGTATTCTC -TGACCACGGAACCAGTCCATCACACGTCAAATTTCTTGCATCAACCTCGA -GCCCATCAATAAAGAAAACGAATGCGGCTTTGCCAGTTGTGGCTGGCGGA -AGGGCCGGTACTCGATTGTTGAGGCATCCGAGGGACTCACTGCAAAAAAA -TCATCGTTTTTTCTAGAAATGGATCGATGTTTGTGTAACTTTATCGATTT -GCTAGAATATTATCGATTATTCCGAAAAAAAATTTTAAAACAACAACTGT -ATTTCTATTTTTATTTTTTTAAAGATAGACTTCCAGATCATATTTTTTTT -GAAAATTTATTTAAAAAATTATCGATTTCTCTAGGAAAAATATCGGCTAT -TCTCGAAACTTGTGGATTTCCCTAGAGATTTATCGATTTCTGAAAAAATT -ATCGAATTTTCTAGAAATTTTGCAAATTTTTTCATAAAATTATCGATTTT -TCTGAAATATATCGACTTTTCGCCCAAAAAGTACGTACATCAATGAAGGC -TTATTGACAAGAAAGTGTAATTGTCGATTCCTATCATTCCAGAACTCCAT -ATCCAACAGCTGAAGATACAAACTACCATCATCGGCGGCTTGTGCTGGCA -CAGCAAACGGGCATTCTTTCTCGCATTCCGACATATCCGACACATCATTA -TCGATATCATGTATCTGCGTTGGCTGGAAAAATGGATCCTACACGCGTTG -AGCACACACTTTGTGAGCTCTGCGAGAGCTCAATGAGAACCTACCGGTCG -TTTTGTGGCTCGTTTCGCGAATCGTTTCAAATATCCGCCATGCATTCGTG -GTAGCTCGCCTTCCTGATTATAGTCGTACATGATGAGCGCATGGCTCACC -ACGAGCCGTGATTCGGTTTCCATCATGTAATAGATTTTTTTGCGTAGTCG -TGGCTCGCGTGGATTGATGGAATACAGGAATACCAAGTGGAATGGGCACG -TTTTGTAGTCCATGTTGTCTTTGGTCTGTGAGGGGTTTTGGATATTATTA -CGGGAGGCATAAAATTCTGAGAATGCGTATTGCACAGCATATAGACCAGA -TCCGTAAATCAACACAAGCCCTACAGTAGTTATTTAATAAATTACTGTAG -TTTTTGCTGCGAGATATTTTGCGCGTCAAATGTGTTGCGAAATACGAATT -CTCAGAATTTTTTGTTCCTAAGAACAGCTCGTCAATTTTTTTTTCAGTTT -TTCAGGGTTATTCAAAAAAAACCTGTTTTTAAAGCTTCTAGGTCTCATAT -TTAAAAAGTTTTGAGAATTTAATACATTTTTTTTAATAGAAATTTGGCAA -TTTTTTCATCACCTCATCGTCGATTATTCTTTTTGAAAAATTTTCGATTT -TTATGGGAATATATTTATTTTCCAAGAAGATTAACTTTTTTTCAAGAAAT -CTGAAAATTTATCAATTTTTCAAAAGAAATTAATGAATTTTATCAAAAAA -AGAATAACTTTTCCAGAAAATATTTTTTTTTCTTAAAAATTAAAAAAAAA -TTGTTAAATCGCTTTTTGTGTCAATTTTTCAAAAAAAAAAAAGAGGCATC -GAGAATATCCCATTTTTTTCGAAAAAAATTTTTTGGTTATTTTTCTTTTT -TTAGATAAAATGTATATACTTTTTTAAAAATGTTTTTTCACCAACAAATT -TTGATATTAAAAAGTTGGAATTTTATGACTAAATTATGGAAAACTTTTTC -GATTTTTAGAAAATCGGAAAATTTTGAAAGTGGGCGTCGTCAAAAAATTT -AATTTTTTAAGAAATTATAGAAAATATGCTGATTTTGGTATTTTTGGAGA -GCGTCGATTTCCATCGGATTTTTTTGGTTGTTTTCCCTGGGATCCATGTA -ACACCTGAAACTGTGATCCCAGCTCATCACAAATCACTCCGACTTTGCGA -ACTTTCGTCCGATAGCACGTCGGATTCTGTGCATTTCCATTATGAGACCA -TGGCGAGAAGTCGTCACGATTGATGTCGTGTGGAAAGATGGCTGTCCCGG -CGACGAAGAATGCGTACGCACGAGAATTACGAACAATTGGTGGGTGTCCC -GGCTTCGCGTAGTTCAGCAGACCACGTTCTTCGCTGGAAAAATGATGATT -ATATCGAAACATTCGAGGAAAATGGATAGAAAAAACGAAAAATTCAATTT -TTATCAAAGTTCGTTTATGTTGATGAAAACATTATTACGGGAACACAAAA -TTCTGAGAATGCGTATTGTGCAAAGTATCTCGTAGCGAAAACTACAGTTA -TTCTTCAAATGACTACTGTACCTATTGTGTCGATTTACGGAAATAATTTA -TAAATCGATAAAACAGTAGTTATTTTTAGAATTACTGTAGTCCTCGCCAC -GAGATATTTTGCGCGTCAAATATGATGCACAATACGCATTCTCCAAATTT -TGTGTTCCGTAATAAAAAATAAAGTTGTTAGATGAATATTCAGGGTCTCA -ACAAAATTTAATCTGTGTTTTCAGTTTTCATGTTTTTAGAGTGGAAAACG -TTTTTTTTTCAGAAAACAGTCAGAAATGTAGATTTTGTTCCATATTTCAA -AAAATCATTTAAAAAATATAGAACATTTTTTTGAAAAATCAAATTTCTCC -AGAGTGTAGTACGCCATTAAAGGTCTCGTCACGATTTTGTTTGTTTTCAA -TTTTTAAGTTTTTGAAGTAGAAAATTATTTTTTTTAGGAAAATTTTTCGT -CGATTTCGTTGAAAATTCGCTAATAAACGGGGATTAAAAAAAACGAAATT -TTCCAATTTTTCGAAAAAAAAAATCGAAAAATTCCTCCCAAACTTACACA -ACATTGGTATTAGCAATCCACTCCAACACGGCCTCAAACGTGCTGGCGAC -CCTCTTATGTCGAACAGTCAAGTAGATATGTCCCGTTTCCAATTGCCGGG -GATTCTCAAAATAGGGCGCCGGGTTCTCCTGCTGAGTAAGCGGATCATCG -TCAAACTCCAAATCGTAGCCATTGTTGAGCACATCCTCTTGAGACATATC -CAACAAATCATCGTCTAGCAGATGTCCCTGAGCGTCTTGAGCAATCGAAA -CATCTTGCATTAGCTGATGTTGCTGCTGCTGGTGCTGATCGTGTTGAAGC -TGGATCTGATCTAGGGAATCATTGTGATGTCCGATGACTTCTTCTTCCAC -AACTTCCAAATCTTCTACATCTATAAATTGTTCTTCATCATTCGGTGCAG -CAGATGATGTAGATGGATCTTGTGATGTATCAATCTTCTTCTGATCGTCG -ATCCATTTCGATCCTCCAACACCTCGTCCAGGTGTTCCAGGTGGTTTAAC -ATACGGACACGGAACCGGACCATCTCTCACATATTCATAGATATAACACA -CATTTCCGATCGTAATCGTATTGTTGCGTTGAATATAAATGAGACGCTTC -CGAAGACGGGGACATCTCGCCAGGACGGACATTGTTTCGACGAGACACAA -CTGTGACGAGTGCCAGCCGCCAGCCGTGTCTTTTGCCATTTGGAACTGGC -CGTTGTCGTCTTGGACGATGGCTCGGCGAGTTGAGCGGACGCGGGGTGAC -GGACCTTCCGAGGCAGCTGAAATTAATGAAACTACGGCACTCTGTACATC -TCCGGAGGCACCACGTTTTCAAGATCTACCAAAACAAGATCTACTATTTG -GAGATCTACGAAAACAAAATCTACGTTTTCAAGAAATGGTACCATGCTAA -TTGCAGTTTTCGCAGTTTTCTCGAAGAACAACAAATCAACAATGTTGACC -GCCCAGTGTGCTCCGATGTCGCGTGTTGTTTAGCGTTTAGAAAAATCTTT -TTTGAAAGAAAAACTTCAGGAGAACGATAAACAACGCACGATGAGTAATA -TGGAAGAATTTTTGTTTCGTTTTTCTTTGAGAAAACTGCGAAAAAGTGCT -AGATCCTGAAAACGTATATCTTGTTTTGGTAGATCTTATTTTCGTAGATC -TTGTTTTTGAACAGATCTCGAAAACGTGATGCCTCAATCTTCTGCAGTTG -CCGAATTTTCACATTTTTAAACCTTAAAACATATTTTTTCTAAAACTTTT -CCAAAAATCGATTTCTTCGTTTTCACGATTTTTTTCAGAGAAAATATAGA -AAATCGAAAATTTGTAAATTTTCGATTGAAAAAATGGAAAAATTACAGGA -AATTATTGAAGATTTAAACTTGTTTCTAAACAATCGAAAATTATCGTTTT -TTTTCTTTTGGAAATTTTTTTTTGGATTTTTCCCAAAATGGTGGTTTTTG -AAATCAAAAAGCGTTAAAAACAAATTTCTTTTAAAATTACCGGAAATTAT -TTTAGAAAATTTCCGAAAAGTCAATAAATTAAAAAATCGAACAAGAGAAA -GAGTTATTAAATTAAACAAAAACAATTTCACAAAAGTCGATAACTATTGA -TTTTTCATCAGAATTTCCTAAAAGTCGATATTTTTAAACCTTCTGATAAA -TTCTTTTTTTGTTAAAAAAAACTTTCGATTGATTAGAAACACGTTTAAAT -CTTTAATAACTTCCTGTAATTTTTCCTTTTTTTAATCGAAAATTTACAAT -TTTAATTTATTCTTTTAAAAAAATCAAAAAACGAAGAAATTGTTCGTTTT -TTCTGGAAAAATTAATTCTTCGGCTCGAAATTTCGATGATTTCTTTTTAG -AAAAAAATATATGTAAAAAATTATACAATTTCAAATAAAACACTGTTTTT -TTTCTTTTGATATTGAAAATAGTAGAAATTTTTCAATAAAAATTCCAATT -GTTCACTCAAAATTTCAAATTTTCGACAAAAAAACTTACGATTAACAGTC -CACGGTGACAGTCCATCGCCAGTATGATTAATCTGATTTGCAACAAAATT -CGCCGGCACAAAGTACACAAAAACGCCGGTTGTCGGAATAAGTGGCGGTA -GGTACGGTGTTCGGCGATTCAAACAATTCGATTGGCTCAGCAGCTCGGGC -TCATTCACCAAATATCGGAGGAGAAGCTTCTTGTTGTGTGCCCAACCGAG -TTTTGCAAGTTTTACGCGAAGAAACATTCCACCACGTGGTCCTTCCACTA -TCTCGTCTTCGAACTGGGAATTTTTTTTTGATGAATTTGAGAAAAATAGT -TTAAATCTTTATATTTCAGTTTGAAATCGCCGAATTTCAGTTGTGCACCT -TCGTGTATATTTACGATATGTTTAATCTTTTTCGGATGCTGATTTCCGAT -CTTTAACGGTTTTCCTTCATTTTCGTCGGTTTTTTTTGGATATGTGTTTT -TGAGGTCAATTAATGAACCATTTTATTATCAGAAAACTAGCAAAATGTTC -AATACTCGACAGAAAATCCATATGCTATATGCTTTTCTCGACTGAAAACC -GGAAATGTTGCTAGTTTTTGATAATAAAATGTTAAATTAACACATTTTCA -AAAAAAAAACACTTCTACAAAAACCGACGAAAATTAAAGAAAATCGTTGA -AAAAACGAAAATCAACACCCGATAAAGATTAAGCATTTCGTAAATATACA -CGAATTTGGTAAATCGACACATGGCATCTCTAGCGCGAAAATTCGAAATT -CGTAATTTCCAGCTGAAATATTAAATCAGGGAATTTTTCTGAATATTTCA -CTTAGATATTCGGAATCAGGGAAAAATTTGGAGTTCTTATAAAAAAATTT -ACTAAGCAAAGTTTTAGCAATTTAGGTTCTAATAGGCTTTACAAATATCA -AAAAGTCCCGATTTTTCAAGGATCTATATATATTTTTAGAACCACAGATT -TTTTGCTGTTTTTCAGCATTCTCGGAAGACCATACCGGTGTGGATCCGGG -ATCATCCAGATCTAACGAGACGTGCGGATCAGTTGGATCGACCATCGCAT -GTCTTAAATAGTCGTTTCCGTGCGGAAGATTTACGATTGGTGGAATTTCA -CCGGGACACGTGTAGTCGTAGAGAATGAGCACGTTTCCATAGATTTGGCC -ATCGCGGGAGAGGTAGAAAATCTGGAAAAAATTTTTTGAATAGATTTTTT -CGCCTTTTCTGAAGGATTTTTTTTGAAATTTGAAGGAAGACGGGTTTTTG -CTTGCATAGACTCAAAATAAACCCTTTAGAAAATTTTTACGTTGGCTCAA -AATATCGAGAATAAAAACCAATTTTTTTCTAAAATTTCGAAAAAATGGGC -ATAACGGCGGAAAATGTATTTTTATTTGATTATTGTACCTTTTTCAGTTC -ATTTTGGAGCATTTTTGGCCCATAGGCTTAAAATTAACCTTAAACATTTA -AAAAACGTGAAATAAGATATCAAAAAGCCATTATGGCCACTATGACCTAA -AAAAAATATTTAAAAAAAAACAACTTTTTTTTGAATATTCAAATTTTCTG -AAACTGATAATAAACCTTTTTTCTCAATCTTAACAGTCTCGGCAGCCACG -CGCTGTACTCGGTGAGATGAAGTTCGGCGATACGTGGATCTCCTTTGACC -GATTGGAGCCGTCCGTTGAGACGAGCAACCGGATGACGTCGGACATTCGG -TTTGATGACTGGATCGTTGAAGTGTTGCTCGCCGCCAGTAGAGCTCCATG -GCTTCAGATCGTCATTCGAGACGTCTTTTATCGACATGATTTTGGAGCCG -TCCACGTAGAATGCGAAACAGGCTTTGTGTGGAACAAGTGGTGGGAGACG -GGGTGGTTTGTCGAGAAGCCAACCTCCTTCGCGACTAAAAATGGGGACCG -TTGATTTTTGTTTTTTTTTTCTGACCGATTTTTCGGACAATAGCTTGAAA -TTTTGACAATTTTCTTTATTTTTAGAAGATATTTTTTTCTTATATTTTTT -TTTCTCTAAAAACTATAGTAAAAAATAGTTCAATTTTTTGTGGTTCTGGC -GAAAAATGTATTTTTTCGAAAAAAATTTTTTTTTTTCAAAACAAGATATT -TAGATTTATCACTGAAAATTGCTAATTTCCAGTGCGAAAAATGACTTTTT -CTGGCTATTTCTGCCTGATTTTTGATATAAATTCCAATTTTCACAATAAA -ATTGCTGAAATTTTCTCCTTTTTTCACTGTCTCCGTACATCATTGCAATT -TCGGTCTCGTTGGTGAGCAGCTCAATTATTCGTTCCTTTCTGAGAAGGTA -GGCCAGGCAGCCTGATATCACTGTGGCGTAGCAATCACCGTTTTCCGTCA -TTTCAACTTCATCTTCGAACTGCAAAAATTATAGAATTGAAAAAAAAAAA -CGATAAAATCCGACTTTCTCGATGATTTTTATGATTTTTAACTGAAAAAT -TGATTTTTCGGCATTTTCTGAAGGATTTTGATTAAAATTTGAAGGTTTTT -TTTTCTCCCGTAGGCTCAAAAAACGCCCTTTTTATGGCGGCTCAAAGGCA -AATTTTAAGTAATAATCGAATAAAAAATCATAAATTTACGACCCCTACGG -CACGGGAAATTGGAGACTTCAGCTAAAACTAACCGTTGATTTTGAATATT -TTGAGCCAAATTTGGCCAAATAGGCATTAAATGCACTCCAGATGACTAAA -AACACGTGAAAAAAGCTATTAAAATTAGGTAAATAAGACAAAAACAGAAA -AAAAAGAACTTGAAGCGAAACTGGAGCCCATTTTTGGAGACAATTCTCAT -TACAAAATTGGTTTTTTGGGCACATTTTTTAGTCTTTCTAGTTATTTCGA -ACATTTTCCGAAGAATTCCCATAAAACTTTGAAGCTTTTCCATGTAAGCC -CCTACCAATTTCACGTGGTACTGCCTTTCAGCAAGAGCTTTACTGATAAC -TCGTTCTCCTTGAACTCGGAACATTTTCGACGGTGTCGCCGCCGCCGGAT -TTATAATTTTCATCGCCTTCTTCTCCTTATCCCCATCGTCGATAGACCCA -TCGGTATCCATTGGCTTGCGTGTTCGGACACGTCGCTGTTTGCTGGGCCT -GGAAAATTTCGATTTTAAAGATTTTTTAAATAAAAAATCCCCCACAAATT -CATTTCCAAATCCGGTGGTTGCCCATCCATAAACCCGTCGTCCTCCTCCT -CATCATCACCGAACGGGTCCATTTGTATGCGATCCTCGTCTCGATATCGG -GAAAGGTTCAGAATTGGCGGCTCATCCTCTACGATGACCTCCGTCTCTGC -GTGGAGCATCGAGTCGTCGCCGGCGAAGATGGGCTCTCCGAGCTCTCCGG -CGGTGAGCTCCTCCAAATGTGGCGCTGGCTTTCTCTTTTTCGCGTTTCGA -ACCGTACTTTCCTCCGTCCTGGAGCGTTTTGGAGCTGCGATCGAGCTTGT -TGATGCAGAGGCGAGCGCTTCTTCCTTTGGGATGCCCAACTCGTAGTCTT -CATTGTTGTAGAGCACGGATTTCCGAGCATTTCGACGTGGACGAGATTTT -GTGGCTGGATCCTGGGGCTCTGCGGCAGGCTCTGGATTTTGCTGGGGCTC -TTCGGCCGGCTCTGGATTTTGCTGGGGCTCTGTTGGATTTTGCACAAGCT -CTTGATCAACTTCTTCCTGATTTTCTGCCAATTCTCCCGAATTTTCAGGA -TTCTCGGACATTTTTCTGCAATTTAATAATTGAAAATAAGAATAATTAAC -GGGGTGGAAAATTAAAAATTAAACAAGCATTAAAATAAATTTGAAAAAGT -CCTGATTTGTAGTCCGCAACGCACGCACGCAAGCATACACCAGAACAACT -AAGAGAGACGGGAGGAGAGATGGAGAATTTGAAAGAGACGGCGAGGCGAC -GAGAGAGCCGGAGGATTGAGGAAGGACAAACACACAGATGTGGGGTCTTG -CAGCGCTTTCTCTGCGTCTCTTTTTTCGACATTTTTCAATGGGAAATTTT -TTTTTGGAGTTTTTCTTTTTTTTTATCGGAAAACTTCAAAAAATTCAAAT -GGAAACGCTGTACGGACAATGCATAGAATAACACGCAAAAATGCACATTT -TTAGGCCTTAGGTTACTGTAGTGGTCTCGGCGCGAAAATGCGGATTTTCA -TTTTGAATTCAAAATAAAAAAACTGGACGTGATTTGGTACAAGCGTTTAG -TGAAAATGTTTCACAAAATAGGAGATCAATTAGATATATTTATTTATTCA -TGGAAAATGACTATTTGGAAAAAAATTGCGAAATAAATAAAACTCGATTA -AAAACAATGTGCATATGTCTTCGTTGCTTTCTTGGCGAGGGTTTCTCGGT -ATCGAGTTCTACAAGAGACACACATTACGAATAACCAAAATAGTTTAGGT -AATATACACATTGGGTGGGGGTGGGCCAGAATAATATTGAATAAGGGTGA -AGAAAAAATATTCAAAATACGTCGCTGAAGTTGGCATACAATCTTGAGTC -GGATAAATGGTAAGAAAGCAGCACCACTCAACTCAGATCACAATCTTCTG -AAGAAAAAGGGACGAATGTATAGGTTCGGAGGGGGGGGAGGGGGAAGGGG -TGGGGATGGAGGCAATTACAAATAAATCTGAAAGAAAGTTACAAATACTA -CACACCAAAACGGTGAAGACTTGCAAACGCAGTGCTTGCAAGAATTCGAT -AAAACTCGCGGATGTTAAGAGCGAATCATTTGGATTTCGGGGGCAGTAAA -TTAAATGGACAAGGCATTTCGAAAAATACACACGTTAGACTGAAAAAAAA -AAACACGATGTGATTTATGGGATGCAACACTGCTTCTTTGGTGGGTCGGA -CGCTGGCGAAGGAATGATTGTACCACTGCCACCGCCATATCCTTGTCTGT -CAGTTCCTACATGCTTGTTGGATACTGATTTGTAGATTTCCGTCAGGATA -TTAGTGAAAGCTGCTTCAACGTTGGTGCTGTCGAGGGCAGATGTTTCTGA -AAAAAAAAAATATATAAACGCAATAGATTAGTTTAACTTACCAATAAACG -ACAATTGATTTCTTTCGGCGTAGATCTTGGCCTCGTCTGTTGGAACTGCA -CGCAAATGGCGCAAGTCGCTCTTGTTTCCGACCAACATAATCACAATGTT -CTGATCGGCGTGATCACGAAGCTCCTTCAACCATCGCTCAACATTCTCGT -ACGTCACATGCTTAGCGATGTCGTAGACTAGGAGAGCTCCGACAGCCCCA -CGATAGTAAGCGGATGTGATGGCACGGTAACGTTCCTGTCCAGCAGTATC -CCAAATTTGAGCCTTCACTGTCTTGCCTTCTACCTACAAAAATAATAATT -TGAATCATAAGTGTATTCTAATGAAGTTCCTCACCGAGATGCTTCTCGTG -GCAAACTCGACTCCGATTGTTGATTTTGATTCCAAGTTGAACTCATTTCT -TGTGAAACGAGACAGGAGATTCGACTTTCCGACGCCTGAGTCTCCAATCA -GAACAACTGAAACAATTTTTCGTTTGGGAATTGAAAAATGAAAAACAAAA -TTACCCTTGAACAAGTAGTCGTATTCATCGTCACGAGAGCCCATCTTTAC -TGCTGAGCTGTAAAATGATAAAGCTTGTTTGAAAGTTGTGTATATATTGG -GACGATTGTAAAAAAGAAAAAGGGCATTGGTCACATGATTCATCAGCCGG -GCGCAATGTTTTGTTGTAAAATCGATATTAAAAGAACGAGACACTGTTTT -ATCGGCGGAGAATATTTTTATGTTCTGTTCCCGACACAAACGCGGAGTCA -GGAACCGGTTGTCTATCTCGACGGGGATTGAAAAAATATAAGTGAACTTG -ATTTAAGAATGATTCAAAGTATATGGAGTTGGGAGTTTTATATTGAATTT -TATCAATATATGAGGGTGGTTAGTCAGAAGAAAAATGTGAAAATGTATAT -AGAAGTGTGTTATGAAAGAGTATTTGAGGCTTATCATACCCGAAAAAGGG -AAGGTGAGCGGCCGAACTTTGTTTGTCGACACGATTTCGAAATAGTTGAA -CAGGATATTTTTAACAAGGGAAAGCTTTCTCTGGGTGTTCTTTTTTGATA -ATTTCAGCTAAAAATTGAAAAAAATAATTAGTTTTATGGCTGTGAACATC -CAGAATAAGCTTTTCCGAACGCGAAATGCGTGTGAAACCCATAAAATCGA -ACGTAAAACAGGTCAGGCGCACCGGCGCAGCCACGTCGGTCTGAGGGTAC -GCGACGCTAGCCGCAGCGCAAGCCTCCTCGGGTCTCGGCACGACAACTAC -CGTACCCCTTTCGCAGCGGCGCAACGGAATCTCAATTTTACATTTTTTTC -TTTTTGGCCTAACGAATTTTTCCGTTTTTTCAGAGCATTTTTCATTGATT -TTCTTAAATTTTCATCAGAATAAATTTTAGAACTAATTTCCCGTAATTCT -GATACGCGTTTTTTATAGTTTTCGTGAAGAAAATGCTGAACATTCGAAAA -ATACTGAAATAATTTAGTTTTGAAAACTTGCTCCTCTGTTTCAATATCTT -ATAATTTTCTTTTCTGATTAATATTTTGATTTTCCAGGTAATCAATCGCC -TATAATGGCTCCAACGTAAGTTTTCTTTATAAATTTATATTAGATTGAAA -TTTACTTTTAGGCCTGACTTTCAAATACTTCAATTTTGATATTAATTCTT -GGTTTTTCAGAAAGAAAGTGCCACAGGTTCCAGAAACTGTGCTCAAGCGC -AGAAAGCAGAGAGCCGATGCCCGCACCAAGGCTGCTCAACACAAGGTGAC -CGTCGCCGCTGTAAGTTTATTTAACTGTCAGAAAACAGAAAATGCTCTTC -AAAAGCACTGGTTTTAGGATCCACTATTATCCAAGCCAGCCGTCAAAACT -GAGCTATAAGAATTATCTTGTTTTTGGGTGAGGTGTATTCAATTCAGAAT -GCGTCTCAATAACACGATGACAATTCGAAATTTTAAAGTTTAAATTTTCT -TTTAGGTGTTTGAAAATTAATTTGAACTAATCCTGCATTAAAAATAAAAT -TTTTTACAGAAGAACAAGGAGAAGAAGACCCAATACTTCAAGCGTGCTGA -GAAATACGTCCAGGAGTACAGAAACGCCCAAAAGGAAGGACTCAGACTCA -AGCGCGAGGCTGAGGCCAAGGGAGACTTCTACGTTCCAGCTGAGCACAAG -GTCGCCTTCGTCGTCAGAATTCGCGGTATCAACCAGCTTCATCCAAAGCC -AAGAAAGGTGAAATTGTGTTAATGAGTTTTTTAATAACCATTCTTTGTTT -TCAGGCTCTCCAGATCCTCCGTCTTCGTCAGATCAACAACGGAGTGTTCG -TCAAGCTGAACAAGGCTACTCTTCCACTTCTCCGTATCATCGAGCCATAC -GTAGCTTGGGGTTATCCAAACAACAAGACCATCCACGATCTCCTCTACAA -GCGCGGATACGCCAAGGTTGACGGAAACCGTGTCCCAATCACCGACAACA -CCATCGTCGAGCAGAGCCTCGGTAATTTGAAAACTTATGCTTTTTAATTC -TTATTTAATTGTTTTCAGGAAAGTTCAACATCATCTGTCTTGAGGATTTG -GCCCACGAGATCGCCACCGTCGGACCACACTTCAAGGAGGCCACCAACTT -CTTGTGGCCCTTCAAGCTCAACAACCCAACTGGAGGATGGACCAAGAAGA -CCAACCACTTCGTTGAAGGAGGAGACTTCGGAAACAGAGAAGATCAAATC -AACAACCTTCTCCGAAAAATGGTCTAACTTGTTTGTTGTTCATACCTTCC -TTCCGGATAAATCGTTATTGTTTGACGTTGTTTAATTATGTGCATAAATA -ATCATGAAACGTGATCGTCTTGGCTCGACTCATCTCGCATTTCATGAAGC -GTCTCATCATTCAGATGAATCGTAAAACCGCTTTGCTGACTACTCTCCCG -AGAACAGTCACTGTTCCCTACTATGCTCCATCCTGTTTATTTCTAGAAAC -TTTTCTTCGGAGCAAGCTAATTCCCTATGAAGTGAGAGCATTTAGGTTAA -TAAACATAGTCCAGATTTAAATCCAGACAACGCAATGTTCTCTCTACAAT -GTACTCCCTCGTGAGCACCTATACCCATTGATTGATGTCGATGGGTATTT -CTTCAAAAATTTGATGGAAGGACTTGATTATCTGCTCGCCAAATATGGAA -AAGTTGGCTTAAAACTAGAATTTTAGAAAAAGCTTAAATATTCTTCCAGT -CTCTGGACTCGGGCCTGACTCCAAAAGAGCGAGCACAGGCTCTCGCATTG -AGCGCTTTGCTCGACGAGCTTACTTGGATGCTCGCCTACTCGCGAGGCCA -AGATTTCACGTGGCTCCGCGATGATCGTAAGATTATCGAAGACTTCGGGC -TTGTTCAGCTCTATTTTTGGAGGAATTGGATTGTACCGCAGATGCAGAAA -CGGGTAGATTATTGATATTTTATGGAAAAATCGATAAAATATTGATTTTT -TACTGAAAAAATTGATCAAAAATCGATTTTTTTTTCCTCGGAAAATCTGT -AAATTAGTAGTTTTTTGTTGAAACAATCGATAAAATTCTGGTTTTTCAGA -AGCAAAATCGATATATTAGGCCAAAATCACCAAAAATTATCAATTTTCCT -ATAAAATTTACCATTTTTGGCTAGATTATCGATTTTTAAGGCAAGAAAGT -CGATATTTCACAATTTTTTATTGATTTTTTTGGCTTTCCAGCGCGCAAAC -TGTGCCAAGATCTAAATTTTCCGAAATTTTCATTTCAGACACGCCGCCGA -GTGCGAGGCTACGGAATATCCGGAAAATCGGCGAGAAAGGAGGTCGCCTG -CCGAACTGAAGCAATGTTGGAGGCATTGGCCTCACTTTTGGCCTCGAATA -AATACTTTTTCGATGTCAATGAACCGTCTTGGGTAGGTGGCAGCCAAAAA -ACTCGGCCAAAACTCGGCCTTTCAGCTCGACTGCAAGGCGTTCGCCGTGC -TGGCTCAATTCAAATATACACCACTGCAGAACGAGGCCCGCGTAAAACAA -TTCATGAAGGACCGAACTCCAAATTTGGTGGGTGGCCTTGAGTTTTCTAG -GCCACGAGATTTGAAAAATTCTATAATTAGGGCATGTGGTTTCAGATGAC -ATTTGTGACGCGCATGAAAGAGGAATTCTGGTCGGATTGGTGCACCACGT -CGGAGGATTGAATTTCGTGGAAAATGCTAATTTGTTTAATGTAATATGAT -TTTGCTTCGTAGATTTTAACCTATGCTCGAATAAAATTTATATTCTAATT -TTAAAAAAATTTCAAAACAAAAAATTTCTTACGTGACAATTAAAGGGTAT -TACAATATGGGCATAAAAAATGTATTCCCTAATTTTCGAACTTGTTCAGT -CTTGGTTGCCCAGGTAATTTTTTTGCAGTTCTTGTTTGGGACTCGGAGCG -ATTTTGCGCAGATGCATCATATTTGACGCGCAGAGTTTTAATTGAGGTTT -GAGCTTGAATTGAGTTTGAATTGAATTTTAATTAAATAAAGCGAATTCTA -GAATAAAATGATGTGTTTATTGCGAAATAGATCGTGAACCTACAAAACAA -CAGACTTTACGCGCAAATTTCCGAAATTTTCCAGAAAAACCAGTCAGAAT -TTCAAATGATACTTGTTCCTCTTCTATTTCTTCTCCCAATTTTGTTGTGC -GGTGGGAAAAAGAAAAAAGCGAACAAAAATGTGAAAGAGGCGTCGAAAGT -GAACTCACTGGTTCCACCGTCGACCTCTACGGACCCGCTGAAGACTAAAG -AGAAGGAGATGAAAAAAGAAGAAGCTCCGGGAGCACCAGACGCCCCGACT -AAGCCGAAAAGTCCTCCGAAACCAGTGGTCCAGGACACGAAACTTGCTGA -AGTGCTGCCTGAAAGTGAGAAGGAAGACGAAATGAAGAATGGTATTCAGT -TGCCGAATCCGCCGAAAAATTTGGTGGGTCTCACGGCGATTTGAGTGTTT -TATCGATTTTCTATGAAATAATTGATTTTTTCTAAAATTATTGAGATCTA -GATTTGCGAGTTTTCTGAATTTTCTAATATATCGATTTTTCAGAAATGCG -AAAGTGAAATTGCTCCAAAGGAAAAGCCGGCGGCTGACGAAAAGAAGGAC -GAGAAAAAAGATGAAAGCAAGAAGGATAAGAAGGAAGAGAAAAAGGAGGA -GAAAAAAAAGGAAAATGACGAAATTATGTGAAAAATTCGATAAATTGGTT -CTTGAAGATTATTGATTTTTCATTGTCGATTTTTCAGAATTCCTCGAAAT -TTATTTGCGCGTCATATATGGTGCATTGAGTCCATAGAGACTTCAAAGTT -CACGCGCAAATGCAGACATTTTTGCACGCGCTGCGGTGAAATTCCTCTTG -GCGAATTCAAATATTTTTTCCCGCCTTTTTTGAAAATTTTCGAGGCGTTG -GTCGAGCTGAATACACGTGAAGTTTAGACTGAATGTCAAATCACAAATAC -ATCACATTTGACGCGCAAAAAATTCGTTTTGAAAATTTGCGCGTCAAATA -GGGTGCATTGAGTACGCGGAGCCAATACATCACACTTGCTTTTCGTGGAA -AATGGAGCGAAATTTGATTTTTTGATTTAAATATTACGGGAACAGAAAAT -TCTGAGAATGCGTATTGTGCAACATAATTGACGCGCAAAATATCTCGTAG -CGAAAACTACAGTAATTCTTTAAATGACTACAGTAGCGCTTGTGTCGATT -TACGGGCTTGATTTTTTTTCCATTTTCTTCAGTTTTTCTGACATTATTGT -GTTTTATTTTAATATTTTTACCGATTAATAAATGATTTCCGTAAATCGAC -ACAAACGCTACAGTAGTCATTTAAAGAATTACTGTAGTTTTCGCTGCGAG -ATATTTTGCGCGTCAAATATGTTGTGCAATACGCATTCTCAGAATTTTGT -GGCCACGTAATATTTGCGTTAAATAAAAATCAAAAAATTAAAAAAAAAAA -AACATTTCAGAAATTTTCAAAAATTTTTTGAAAAATTGACGCACAAAGTC -TCCTGTTTCCCTTTTCCCCAAAGTTTTAAACTAATAAAACTTTTTTAATT -GTCGAATCCGACCAGTTATTTAATACGAGACAAAACGGAAACAAAGATTC -CAATTTCCGATTACGGTCAGCTCAACACTTTCGCTCAAGGAATTCTCTAC -GCTTAGATTTTGATCTTAATGGAAAACTGGTAGAACTTGGTATAAAACTA -TCCAAAAAACTGGCAGAAAGAGTAGTCTTTCCGAAGAAATGAAGTCCCTA -ATCGAGGAAGATGACTTGGAAGTCGGCAGATTCCGCCGCAACGCGTTTTC -CGCCGTCGCCCTCTCCACCTCCTGTATTCTGGCGATTGTGGTGTTAACAC -CAATTGCCTATCAGGCAATTCAGAGAATTCACTCAAATTTGCTTAACGAT -GCCCATTTTTGTCAGGTAATTTTTTTAAAAAATTTAGAAATTTTGATTTG -GAAATATTCAAATAAAAAAAAAGTTTTTCGAAATTTATTTTCAATCGTTT -GAGATTTTGACATACATTCCAAAAATTCCTACTCTTCGCAATTTTTTAGT -CAACTCAAACTCAAAACCTTAAAAAAAAACCGCAAACCTGTCATGGCGCA -TCGATGTTATCCCTACGCTAAATGTTCTGTTTTCGAAGGTTACTTTTTTC -CAATTTTTATCACCAAGGAAAATGTATACACAAAAATATATAGAATTTGA -CGTGCAAATTGGCAAAAAACTAAACTTGCGCGTAAAATCACTGCATTGCC -TCTGCGGACTCAACACACCAGATTTGAAATTTCAGGAACTTATCGATTTT -TGTAAAATTTTGCAGCATGGCGCATCGATTAAATATTAAAAAAAAATTGA -AAATTATCGATTTTTTTGAACACGAACAATTTGTGGAAAATATGAAATAA -AAAAAAACATGGTGCATCGAAAAACTTACAGGCTCGAAACCGTGACCTCT -GGACAGAAACAATGAAGATGGCTCGGAGCCGCGGCCGGGACGAGGAGCTC -GTGGCCCGAACCAAGCGAGCGGTTAAAGGCACATGGCTCTTCGGACAGTA -TATTCCAGACCGATCAAGCAGAAATCGACGACAGCAATACGCCGAGGCCG -CTGGCGGAGGCGGTGGAGCACCACATGCCGAGTGTAGACGGGGTCCACCG -GGACCACCGGGTGATGGTAGGTTTTTAGATTTGCGAGGCAATTGTGGTGT -ATTGGTTTAATTTTACAGACGGGGTCGACGGAACGGACGGAAAAGACGGT -GCACCTGGAACCGATGGAAAAGACGGTCAGGTACCACAAGGACCAGCCGA -CGGAGGTTATCAAGAGGGACCATCTGATGCAGTTGAAGCATGCACACGTG -AATGCCCACCAGGACCGCCTGGACCAACTGGAGCGCCCGGAGACAAAGGA -TCTCGAGGCTACCCTGGAGAATCTGGAGAGCCAGGCACCCCGGGAAGCGC -CGGACCGAAAGGAAATGCTGGACCGTAAGTGGAACTAAAGAATCGATAGT -TTTCGGTAAAAAATCAATCATTTTAGGAAAAAAATCGATAATTTTCATTT -TCATTTTTCTCCATTAAATTATGTTAACTTTCTAGAGCTGGACCACCAGG -ACCACCCGGATATCCAGGACGTCCTGGAGAAACCGGAGATCACGGAAAGA -CGATCGCCGGAGAGGCGCCACCTGGACCACCAGGACGACAAGGAGAAATG -GGTCCACAAGGACCACCGGGACCACCAGGGCCACGTGGAAAGGACGGAGC -CGGTGGAGAGAAGGGTGCTCCGGGAGATCAAGGTAATCCGGGACCATATG -GAAAACCTGGGCAACCGGGAGCTCCAGGACCCGATGGCTCTGCTGGTGAG -AAGGGAGGATGCGATCATTGCCCACCGCCAAGAACTCCACCTGGTTATTA -AAGATTCTTCGATTGATATTTTATTTTATTTTCATGACGTTATTCATTTT -GTCATTCGGTTTTCTTTTGTTGCAATATGATAATAAATCAGATTCTCTTG -CCAGTAGTTCCAAGTGCCCCAACATATTTTTGAGTCCTTTATGTAGATCC -CTCTCCTCGAAAGCTGGATGATTTAATAAATCTTTCAGAAAAATCGAAAA -TTTTAGAAAAAAAAACATCAAAATTTTTGACAAACTGCATAATCAGTCAA -TATTCTAAAAAAAAATACGATCGCACAAAAATAAACAACGACGCAACGAC -ACTCCGCGGTTACTAAGCTCCGCCCACGATTTCATTTGCACTGCGTTGAG -TCGGCCGTATTGTTATTCAAACATGAATGAATATACTGGTGAAGTTTAAA -AAATTGGGTGTTTAGTTTTGAAGAAAATAATTTTTTTGGAATTTTGAATA -AAGCACAATTGGCAGCTGAAACTGGACTTTCAGACAAATTTTGAACGGTG -GTTGTTGATGCTTTGAGTTTATATTGTTATTCAAACATGTATGAACTTGT -AAAGTGCTTGTAAAACTTGTAAGTTGCTTGTTCGCTCATTCTGAAATAAA -ATTTAAATTAAATAAAAGTTCACGTGATACAAAAAAGCCAACTTATTGAT -TGAAATCGATAAAATCGATAAGAAATTCATTCATTTAATAGTTTTTAACA -AACAACAAATGCGATCAAAAAGTTCGGAAGGTGATTTACAACCAGAGGAC -ACCCAATCCAGAGAAGATAAAGAGACGACTGCTACGTATAGTGAGGATAC -AAAGCCAGGTAAATACAGTAGTCCTACCTTAAAATTACAGTAACCCAGCT -GACTAAATATCATAATAAAACTTGCAAAAAAATGATGTAAAATCTTAGTT -TTTAGTCTTTTGAACTGGTAGAAACTGTGTTAGCGCCACTTTTTGACTCT -AAATAGAAAAATTTCCCATTTTAAAAGAGTTGTATTATGATACACTGCGT -GGCGTGTAAAATACCAAAAAATAAGCGCGGTTTTTTTTTTCGTAAAATCA -CAGGGAAAAATCCGAAATCGGAACTCCAATCAGCCGCCAACATCCCACGG -GCCCAATAACTTCTGGGTTTTGTTTCAACAATCTCATTTACTCCAATTCC -AGAAACCCAAAAGGAGAGAAACGCGGCACTGGACAATCTTGCCAAGACCC -CAATCCAGTTAGTCGTCCAACCAACTCCTCTCACACCAGCCATCACGCCA -TGCGAAGCACCACCACCACCACCTCCACCAAAACCCTCTAGCGATAATAA -CAACTCGAAACGATTGAAAGTGAAAGATCAACTGATTGAAGTGCCCAGCG -ATGAAGTAGGCCGAGTTGAGAATAATATAGACAATTTCCCGTTCTATCAT -GGATTCATGGGAAGGAACGAGTGTGAGGCGATGTTGAGCAATCATGGAGA -CTTTTTGATTCGAATGACGGAAATTGGGAAGAGGGTCGCCTATGTGATTA -GTATCAAGTGGAAGTATCAAAATATTCATGTTCTAGTGAAACGGACCAAG -ACGGTGAGAGTTGTTTGGTATTATCATTTAGTTTCGTTTCAAATCAGACC -GAGATACATACAAATATTGAAGTTCAAATTTAGAACATGTTGCATCGCAA -TGTGTTCATTGTGCTCCCTGAAGCATTATGCGGACATCACGAATTACATA -AATTATTTTAACCAATGGTGGGCGGCAAATTGACAAATTGCCGATTTGCC -GAATTTGCCAAAAATTTTCGGAAAATTGTATTTTTGCACATTTTTTTTAA -ATTTCAAAATTTCAAATTTTATCGGCAAAATTGTATGCATCCTATGAATA -TTTCTACATCTGTTTCGAAAAGTAAGCAAATTATATGAAAATATCTAAAG -AAAAGGGGAAAAAATTCGAAAAGGCACAGTTTTCAGTGTTTCCGTCTTAC -AAAAAAAACCTCGAAAAACTTTCGGCAAATAAGCAAACCGGCAAATTGCC -GGAAATTATAGTTTCAGGCAAATCGGCAAACCGGCTATTTGCCGAATTTG -CCGAACGGCAGTAGCCTCTCACCCCTGATTTGAACATGGTGCATTGCATC -ACCGCTCCTCGACTTGGAAAGTTTATATCGGTAGATATTTGCAGCAGATG -TAATTTACTGATATTTTCAGAAAAAGCTCTACTGGACCAAAAAGTACGCC -TTCAAATCCATCTGTGAGCTTATTGCCTATCACAAGCGAAATCACAAGCC -GATTTATGAGGGCATGACGTTGATCTGTGGCCTGGCACGACATGGATGGC -AGCTGAACAACGAGCAGGTCACATTGAATAAGAAGTTGGGAGAGGGACAG -TTTGGAGAAGTGCACAAAGGATCGCTGAAGACATCTGTATTTGCAGCCCC -GGTCACTGTTGCCGTGAAGACCTTGCACCAGAACCATCTATCCGCCAATG -AGAAGATCTTGTTCCTAAGAGAGGCCAATGTGATGCTCACCCTGTCTCAT -GTAAGCTACCTGTTTCAAGTTGAACTAAACTAAAATTAATTTCAGCCAAA -TGTGATAAAATTCTACGGAGTATGCACCATGAAGGAGCCCATCATGATTG -TCATGGAGTTTTGCGACGGGAAATCCCTGGAGGACGCTCTACTCTCCAAG -GAAGAAAAAGTGTCAGCTGAGGACAAGATTCTCTACCTTTTCCACGCCGC -CTGCGGTATTGATTATTTGCACGGAAAGCAGGTTATTCACAGGGATATTG -CGGCGAGAAATTGTTTGTTGAATTCCAAAAAGATCGTGAGTTTGTTTTTC -AAAAATTTCTGAATCTATGTGAATGAAAAAATAAATTTCAGCTGAAAATC -TCCGACTTTGGATTGTCGGTCAAAGGAGTTGCTATAAAGGAGCGAAAGGG -AGGATGTCTGCCGGTCAAGTACATGGCTCCGGAGACATTGAAGAAGGGGT -TGTACAGTACTGCCTCTGATATTTATAGGTGAGCCTACGAGCATACATAG -ACATTGGTAGTGGCGTCAGCGGTGGCCTAGAAACCTTATCCGCGTCTGAA -GGTTAATCAACCTCACACAAGTCTCTATGATTTCCAGCTACGGCGCTCTA -ATGTACGAAGTCTACACGGACGGAAAGACGCCATTCGAAACGTGCGGGCT -ACGTGGAAATGAGCTCCGAAAAGCGATCATCGGGAAGAGAATCAGCTTGG -CCGTTGAGGTAGAGCTACCAGTGTTCATTGCCAACATTTTCGAGCAAAGC -AGGCAGTACGAGACCGAAGATCGCATAAGCTCCAAGCAAATTATTCAGAT -TTTTAAGGAGGTTTGTGAAGCATTTTATCGGTTTTTTGTTCAAAAAATTA -GTAATTTTCCAGGAAGTCGGATTCCATGAAATTGAGACAAGTGGGATACT -GCATAAGCTTGTCAATTCTCTTCCGAGAATTCACAATAAGGAAAGAAAAC -CCGCGGCGGTGGCAGTGTAATAAATATCTGAAAATCCCCCCACCCCTGAA -AATATTTGACTGTATTTTTTAAATCAAACACACAACGCACACAAACAGAC -AGACAGAAAGCCTAAGTACACAGAGAAAATGTTTGAGGTGAGGTGCGAAA -GGGAGGAGGCTAGAACACCTACTTTACGCCAACAAGTTATGACTTTTTGG -AATTCAAAATGTCGTTTTTTGCTAGTTCACTGCTTACCTACAAACCTTCC -TACCTTGTCTGCCTACCTTCCTTCCTATTCTCTTATTGCAAGATCTTTTG -AATTTTTCTGAAACGTCTGTCTACTTCTGCGTCATTTGCAAACAGGCTGT -TCTCAGTTTTAGGGGGTGGCAGCACCCACAAAAAAACATTGGAACAGAAA -TCAGTCGGAGTGATCTACTAGATTAGATAAACATTAGATATCAGTTTGGA -AAAGTTAAACATTATTAACTCACAATGGATTTTCTTATTGTGTTTCTTGA -TATAAAGCGTTGAGCGGTATTGATACCATTACAATGCACTAAGCTAAAGG -CTGTCAGAGCCGAATGAAAAACATGATACATCGAGCATGCGGCAATTGGC -GTTCGGAAAATCGGCAAATTAAGATTTGCCGGAAATGTTTTGAGGGATTT -TTTATAAGATTTAAATGTGCCTTTTTGAAATTGTGTCCCGTTTTCTTTAG -ATATTTTTATAGGATTCGCTCACTTTTCAAAATAGACGTAGGAGAATTCA -TAGGATGCATACACTTTTGCCGATTGAAATTTAAATTCTGAAATTTCCAA -TAAAAGTGCATCACCACAATTTGCCGACTTTTGGCAATTGCCGTTTCTCC -GGCAAATTCGACAAACCGGCAATTTGCCGATTTGTCGATTTGCCAGAAAT -TTTCAATTCCGGCAATTTTTCGATTTGCCAATTTGCCGAGAATTTCAATT -CCGTCAATTTGCCATATTGCCGGAAAAAATCGTTTGCCGCCCATCCCTGG -TTCGAACTCCTAGAATGGTAGAATATGAGTATACTAAAAATAATTTGAAC -AGAACTGGAACTGGAAGAAAAATTTTTTACCGACGTCTTCTGAGAAAATT -TCGTGAAAATTGAGTTTTTATCACTTTCTGACTCACAATAAAAAAAATTT -CCAAAATTTTTTGAATAGTTCTCGATCGTTTCCAAACTGGTCTTCCGACA -TTCAGGTGCGTGATTGGTAAATATGAGGGAACTGCCATAATCAAATGAAA -AACACGGTGTATCGTCTGAGAAAACCTTAAACTGTTCCGTTTTAGTAATT -GGACAAGGATCTGCTGAATCTCGCTACTATAGCAACCGACATCTTGCGGG -TCCAAAAAAGATTGATCTTGAAAATTTGATCCAAGTTTATTTAATCGCCG -CCACACACACACTCACAAAAAAATCAATCAAATCACCCATATCAGTTGCG -CGATTTCTAGTTTCTAGGCGCGAAAATCAAAAGGAGGAGAAGAAGCATTT -CCGCATTACTCGTGTGTGTGCCGTTTCCGTTTATTTGTCCCTCAGGCTCC -CCTCTCTGTTTTTTTTGTTTGCGAAAACTGTCTCTCTCTCTCTCTCTCCA -TCACTTTTCTGTTGCGGAATAGAGGGAGAGAGAGAGAATTTCGGAGGGAA -AAATACCTGAAATGTGATCCTCTCTCTGTATGTCATTGACTGTTGCGCGA -GAGCCTTTTCCCGCGCGCGCGAGCCTCCCACCTACCCGTCGACGAGCCTA -TTTTCTTGTCGGCGGTGCCATTCGGCAATACACGTCCCTCTCTCTTCTTG -CTCTAGAAACATTCGGATTTTGATTTTTTGATTTTTCATGGTGGATCTGT -AGGCTTTTTTAGGCCATCTTGGACTTTGTGGTGGCCTAATATATGGTGTA -TTTTCCAATTTATCATATTTGCTTTAGTATTGTCCGACTTGTAGGCAAAT -TGCACCATTTTAAGCCAAGTAATAAAGCTTTGAAGTTTGGCTGCCTAGGT -TTTTCTAGCCACCAAACAATTTTTTTGTTTTCACAGCACACTTTTTTAAA -GACTGTCATAAGTTTTCAAAATTCTTTGAAAAATTTTACACCGAATTTTG -AGATCTTTAAGTTTGGTGGCCTAAATTTTTCAAAATTTTCTATGCCACCA -GACTGAAACGTCCTAACTCTATTTGAATTATCTTTGAAACTATGAAAACT -ACAAGTTCGACTAAATATGGCTTATCCAATTAAACTCGATTGGTGGCCTA -GAAAACCAATTTCGATTTATTTCATTTTCTAGGCCACCAATAATCTTGTT -CGAAAATTACTTTTATTTAATTACAGTGGAGTTTGGAATACTTACTGCCA -TGGGCTGTAAGATGTTGCTCGCCTAACTTTTTCTATGCCAGCAACCAAAA -AGTGGTGTTGGTGGCCGACAAACCCAAACTTGGACAATTGCATTTTCTAG -GCCATCATTTTTTTTAAACTAATCGTTGTTGGTTTAGTCTACTGTAAAAA -ATCAAATCGATAAGAACATTGGGAGCCAAGCTTTGGAGTTGGTGGCCTAG -ATTTTTCTAGGTCACTAACTTGAAATGTCTGTAACTCTAAAAAATAATTT -AGAGATATATAACAGAATTAGTAGGCTAATTTTAGGATGAGAAACTATTT -AAACAATTGGTGGACTAGAAACTGAATTTTGAAATTTCTAGGCCACCAAT -TCCAAATAAGCCTATTTCACTCCTGAATTGAGATAAAACGCTGAAATTTT -GGACATATTAGAATACGCTATATTTGAAAAAATGGAATTGGTGACCTAGA -AAATATTTTTTTGAAATTTCTGCTCCACCAATTTCAATTATAGCATAACT -CATTTCATAGTTGTAGGACGGTGATTGAAATTTAGGATAGACAGATTTTA -AACCAAAACAGATTGATGGCCCTTGAAATTTCTAGGCCACCTCTCCAGAA -AAAAATCTGAAAATTGTTTTTATTTCTAATTCATTTTCTTCGTCCGTTTT -TCATCTCTCGAGGATCTTATCCCCTTGTCTTACGTCTCCCACCCGCTGCT -ATTTGGGCGACCTTCATAACTGTGAAAATTCTCACCATTCTCCCTCTCTC -GTTTTTGCCCCCCCCCCCCGGTCTCCTATCATTGTTCAAGTACACCTGTT -GTCCCATAACATCTGCCAACCAATTTTTTCCAATTTTGCCACAATTTTTA -TTCAAAAAAGTGCATTGCAGCGGCAGGCATGCCTCACTCGTACACACACT -TGAGCATACAGGAAAAGCGAAAAAATCAGTGATTGTTTGGATTCCTGGCT -CTTTCTAGGAAAAAAACTCTTCCATTTTTGTAGTGCACATCAAAATGATC -AAGCTGGTTAATTTTCAAGTGACTCCCAAAAAAATAACTGAGAAAGTTGC -GTTTTAAAGTTTCTAGGCCATTGTGGGATTTCTAGGTAGGTTTTTGAAAA -TAGAAGACAGTCTTGCACTAAAGTTTTGATTAGGCTGTTAAATGATTTTT -GTCAGTACGTTTTTTGGAACTTCGATTTTTGCCAAAAATTCCTTTTTTAG -TTTTTGTTTCAGTTTTTTGCAAATTTTTATTTCTTCCATATCTTACAACA -TTTAGAAGGTCTCAAAGTCTCTGATAGCCAAGAATTGACTCTAATGACGT -TATGAGCTCCGAGACTATTTTAACCTTTTTCCCTTTTAAGCATAAAATAT -ATAAATATCAAAAATTTAATACAAAAACTTCTCGTTTCGAAACGTTTCGA -AATCCTCCAGTTAAAAAAAAATTAGATTACGGCATCGGAAAAATTGCGAA -ACTTTTGAATCTGAGGGATTTTCAATAGAGGGTCCCGCCAGGAATTTGAG -TTTTTAACAGTACCCTTTCCATCGTCCTTCCCGAAGCCCATTACATCATC -ATTAATTTTGCGACCTTTCTAAAAGCGGTCATGGGGGGGGGGACATGTGT -TTGTTGCATATACAGGGACCCCCCGCCACAACCACCGCAACTAGAGATAA -AGATCTGCTGCACACAGACAGCTGGCACATGGATGGACAGAATGTCTCCT -TAATTTTACCGCCTATTTCATAATAATAAAAGTAGAACGGGGGGCAGAAA -AGAGAATGATTGCGAAACCACCTGCTTGGCTGTCAGCGCATAAACTTTTC -GGAAATTTTGGGTCCCACCACGCTTTTTTCGGTAACAAATTTTGAGATTT -CTCGATACACCATGATGTCTTTTGGTGGAATTTTGGGTTATCATGGCTAA -TACAAAGCTTTAACGTGCCTTGAACTTTCGCAATTTGAACTTTTGGCCTT -TACTTAAAAATTTCGATGGGGCTCTATAAGCCATGTGGTTTCGAACTTTT -CCTGAAAATTTAGATTTTTGTTCATGCACCATGTTGTTTTTTTTTTGGAA -TAATTGAGGAATTCCTTACTTTTAAAGTAAAAAGTTTGGTGAGATCCATG -TGTTTTCATATTATTCAGTTGGTAAATTATACAGATTATTGACTGAAGGT -TAATTTTTTGTTGGGAAAATAAAAATCGCCAAAATCAATAAAATCGTATT -TAGAAGTAGGGTTTCCATATAGGCGGTAAAAGGCTTGTCTGCCTGACAAT -AAGACGACCGCCGCTCGCCTCAATCCGCGGCGGAGGCAGGCAGGGTTCAG -GTAGGCACTGAAACCGCGCCTGCTTACCATGATGTTCCGTTCTTGTCGAT -GCACCATGATAATTTTGGGTTACATTTTGAGCCTTTTCGAAAAATTAATG -GTGGAAAATTTCAAGCTGAATTTTAATATTTATTTTTTTAACCGTATTGT -GGGACATGCAAATGTCTTTCATTTTGTGTCCCTTCACTCTAACGTCTTCA -GAATTTTCGAACTTCTCGATGCACCATAATGCTGTTTGGCGATAACTTTA -GAGTAAGAATGGTAGCGATTTTTGCGATGCACCATGACGTTTTTATCGAT -TTTCAGAAAAAAAATCACTCCGAGACCCAAATAGTTTCATTCTCGACGCA -CTATAACGTTTTCGAAGTAAATTTCAAAATTGCTTCTCGGAAAAGTTTTT -TGAGACCTACATGCACCTTTAATCTTCTTTGGAAACTTTGGAATTTCCGC -CGAATACTCTCATTTCAGTTGTTCTCGATGCACCATGATGGTATTTTTTT -CAAATTACTTTTTTTTGATTTTTCCATGAGAGGACCAATATCTGTCTTTA -TAACGGCGCATTCTGTAACCAAATTTTGAAATTCCACGACATTCTGCTCT -CATCGATTCAACATGATAATTTTAAAATGAAATTTAGCGATTTTTCGGGA -AAAAAACAGTTTCGAGATTTTCTAGTTATTGGACACTCTGCACCTTGCTT -ATTTGGAAATTACATTTTAAACCGACAACCCTTCAAAAACTGCTTTTCGT -CGATGCACTATGAGTGCATAATTTTGTGTAAATCGTGGTGGGCCTCTAAA -AAAACCGAAAAAAAAAACGTATAAAACGCAAACAAATTGTTTTTGTTGTA -ATGTTGACACCAACAGATTCGGCGTGGAATATACGGAAGATCGGATTTCC -AAAAAAACAACCGCTCTCCTGTTTTCGACGTTCCGCCGCTTTTTATGGGA -GAAGTAGTATGTACCTTTAAGGGTACTGTAGCCCCTTGAATATTGGCCTA -AAAGTGAAACTAGTGTTGCCAAAAAAAAACGAGATGACCAGTTTCAATAT -GTCATTTACATCTACACATTTCTAAAATCTCATTTTAAATTCCATTGTTT -TCTCGTTTCTTCTGTCCCAAAGTACCGTATCCTCATCCTTCTACCACCTT -AATTTGCATTTCTTCTTCCTTATTCACTCTTCTTCCCCTGGACGAAAAAT -GTTGCACGACAACAACAAAAGAGACCCGCCCCCCACCATCGGTTTCTCTG -AACCTCTAACTGTCCCCGCCCCCTTTTGGGAGCCCACTGTCTTTTCTTTT -TTTCTTTGGTCGCTGATTATGACGGATCGTTTTTGTCGTTTTTGTATTAC -AGGAATACAAATTTCCCAAAACGCGTATTGCACAACATATTTGACGTGCA -AAATATCTAGTAGCGAAAACTATAGTAACTCTTTAAATGACTTTTGTAGC -ACTGATGCCGATTTAATTAAATTATTTATTAACAGATAAAATATTAAAAG -AAAACACGACAATTCAAAAAAATTCATTTCGTAAATCGAGCCCGTAAATC -GACACAAGCGCTACAGTAGTCATTTAAAGAATTACTGTTTTTTCGCTACG -AGATATTTTGTGCGTCAAATATGTTGCGCAATACGCATTCTTATAATTTT -GTGTACCCGTAGTATATTTTTGTCTCTCTGATTTCCATTGCAATTTTTTA -ATTCCATATTTTTTTGGTGACAAATTTCTCCGCTTATCAATTTTTTTTTC -AACCACATAATTATTAACCCCAAAACATCGCAGATTTTCAGGTAAAATGC -CAGTCGTGAGCGTTAGACCTTTTTCTATGAGAAATGGTGAGCAATTTTTT -TGAAGTTTTTTTTTGAAATTTTTAATTTTTCCAGAAGGCTTCTCAAACGG -GCATAACACGTGGAACGACGCCGAATTTTGGAAACCGTGAGTTTTCGGCA -AATAAGCTAACAGTCTAAGAAACACGAAAAAAAATCCAATTTTCTTTTCA -AAATTCGTGATTTTCGGATGATTTTTGAACTTTTTGATTAATGTTCCCAC -TGAAAATCCTCCAAATCTCTAAAAATCCGCTTCTAAAAAAGCCTCAAATG -GCCTTGCGAGAATAGACGGAATGTTCAAGGATGACTGGTATAAAATCGGC -AAACGTGTTGCCATTCAAACAGAATATCTCGAAATTTCGCCTTCCTTTTT -TTTAAGTGGGTCGGATATTTAACATACAGAAGAGAATAGGGAGAGAAAAG -AGGGAAAAGAGGGGAAAAGTCTTCTTGGAAACAACCTCGAACCGCAATTA -AGTTTTTGCCTCACCCTTCAATTTTCGTGAGAAAGTTAAAAATCCAAATT -TTTTTCTCCTTTTTTAAAAAAAGATTTCCTCCTCAAAAATTCAAAGGATC -GAATTTTTTGTTACACGCCTGCCTCCTTTTTATTACCCTTGTTCTTGATC -GCAACCTCTTTTCTAGATTACTTGAAAAAATGCGCTATTTTTTTTCCTTT -TTCAACAGAGTCAATTTCAAAGGTGCTGTGGAAAAAGTTTCGGTTTTTTT -TTGCAAAAATAATCGAAATTTGTTCGTTTATACTGCTTAAAAAATGACCA -AAATTTCAAGTAATTCATTCGAAAAATCGATTTTTTTGAAATATACAAAA -ATTTTCAATTTTTCATATCTGAAAACACAATTTTTTCGATTTTTCATTTT -TCTTGGAAAAAACACAAAAAAAAACTGTATTTAATTTCCCACTTAATACT -ACGATATCCAAGCCCCGCCTCCGCGTATTGTACGTGAACACGGCGGCCCA -AAATTACACACTATCTCACACACGTTAAATGAGTGATACCGTACTCTCTC -TGTTTTTTCTTTCATTTTTTCGGCGCCGAAAATTTTCAATTTTTGGTGGT -TCTTTTGGCGGGATTTTTCGGATTTTTGTCGCGTTCACACACACACACCA -GTTGGTGTTGCCTGTCGTCACCCACCCGCCCCACTCTTTGTCCGTGTACT -GCTTTGCCATTTGTGCGCGCGTACCGCTGCCCGTCTGTCTTTCTCATCAT -ATGCGCCTCGTTTTGTCGCTTTTTCTCCATTTGCCCTTCCTACATGGGTA -CCTGCGGTTTTCATCGAAAATATCCTTAAAAATTCCGAAAAACCTCTATT -TTTCGATTTTTGAATCGATTTTCGCCCAAACATAACCATTTTTCAGAATG -AAGGAAGAACAAATCGCCTATAAATTGCCAGGGGCTTGGTATTACGAGGA -GGACACTGCCTCGTGCTCTCCAGTCAGCGATCCGGAGGATATTGCGCAGT -TTCTCAACTACAGAACGTCGATAGGCGTGCAAAATGTCACAGAGTCCGTG -GAAGTTCCGACGTCGGAGCATGTCGCCGAGATTGTTGGTCGTCAAGGTAA -AAATTGCCTTTTTAGTCAAATCTACAGTTTCCACAAATTTTCAGGCTGCA -AAATTAAGGCACTGCGCGCCAAGACCAACACCTACATCAAGACACCGGTT -CGCGGAGAAGATCCAATTTTCGTGGTCACCGGACGCCTGGAGGACGTGAA -CGAGGCGAAACGAGAGATCGACTGCGCCGCCGAGCACTTCACACAGATCC -GTGCGTCGAGAAGACATACACAAGGTAGGTGACCGTAGGCAGCCGGTTCC -TGAGCGCCTTGTTCAGTTGTTCCAGGAGCCCATGCACCTGGACAGATCAC -GAGCTATGTCAGAGTTCCGTTAAGAGTTGTCGGACTCGTCGTCGGACCGA -AAGGAGCGACTATCAAGCGAATTCAACAGGACACCCACACGTACATCATT -ACGCCGAGCCGAGAAAGGGAGCCCGTTTTTGAGGTAATTTTGTTGGAGAG -CATAGAGTTTTGGAGCAAAATTCTCAGCAATTTCATGCTTTTTAACAAAA -ACAGAGAAGTTTCTAGTTTCGGCTTAGAAAATACTGAAAATCGGCTTTTC -CATGGCATATATCGTGCTGAAAATCTACTTTTGACTGAAAAATTCAAGTT -TATGACTAAGAAAAGTTAGATAATTAGACCATGCTATTATTTCATAATAT -TGGTCCAATTTTTGTTGCTTTGCTGAAAATTAACAAAATTTAAAAATCGG -CGGGGTTTCTGAAATATTTCTGTATAAAAACCGATTTCAACTCCAATTTT -CCTCGATTTTTACATATAAGTAATCTAGAAAAATTGTAAAATGGGGAGAA -TTCATAAGAAAATCGGCTGTTTTGTAGCAAAGTTTGTAAATATATCATTC -TGAAAGTCTCAGCGATAACCGTGATTCTAGAAAACCTCATCAGGATTTGA -TTTCTGCGACACACTTCTCTCGAGTTTTACATAGAAGTTGTTCATTACAA -ATTTCTATTTTTAAGGTCCCCATTACCATTGTCAATCTTTCATTCCGATT -ATTTGTTTTTCCTCGTCACTGCAAGAAGGGGAGCCTAATGCCTAGACAGA -GACAGAAAACACATGTGTGTTTGTAAGTGTCTGGTGTGATATACCCAATT -CTTTTCGGCCGTCTCTTGTTTTCTTCCTGACACCGAGTTTCGAGCGATTT -TCGAGGTCGTACAGTTGTGAATTGGCTGCCACTGCTGTGGCAAACAAACA -AAAACAATCAAACTTGTGCGGAATTGATATTCTAAAGAGAATAAAGAGCA -ACCATGGGCGCCGAAACGAGCAGCGGAAGGGCTTGTGACCTCTTGGTGTG -AATTTTAAACGGTTTCCTTCCATCCGAAATGCTAAAAATTCCTCGGGAGC -CGTTTAGGGTCTTCACTGAGAGATGATGATTAGAATCTTTTAATTTGGTA -GAATTCCCCCCGCGGGACCGATTAATGTTGCATGTCGTCTTCTTCTTCTT -GGCAGCAAAATATCATTGTTGATGAGATATCTCAGTTTGATGCTCAATGA -CGCCTTGAGAAACATCCAGCACACAGTAGATTAGTCGAATTACCGATGGA -TGGGGCCGCCCGGGTTTTTGGAGCCAAGAGTCACGCGATGGGGAGTCCAC -ATACACACGCACCAACTCTTTCATTCCATCTAACAGGGTAGTAGGGTGAA -GAAAAGGGGGGGGATCGCGATGACAAAGAGACTCAATTAATTAAATGACC -GGGGCGGGCGCCAAATTGCACATATGCTTGGTTTTATTGCACCGTTGGCT -CAGGGAGAGCAACATTTTGTGGCAGCACCAGGGGTACTTCAAAATGACGA -ACAAAGGTCGTTGTTGTTTCTATAGGAAGGCTTCCGAACTTTTGAACAGT -AATCAGATCATATTAGGGTTATGTAATTGACGGTTTTGACCGTATGTGTC -TATAGATGCGTGTGTGTGTGTGTGTGTGGCGACATAAATTACCGTATCCG -CATGGCCTTTTTCCTCCTTCCTCACAATGGTAATTATCATCCCCCACTAC -TCTGGGTCGCCGGACGAACTGTGAATGTGTTGACAGTGCGGGCCCACTAG -TACATGACATCTTGCCCCGGTGCGGTGCGCTCATCGTTATTCCTCCCAAT -TTAGTTGTCCGTTTGACACAAATGCCTCCGGTACCCTGGACGAGACAAGG -AGGTGATGGATTTGCCAGGCGGGGAAGGAATTACATGATGTTTGGGAGAA -TATGAGGGAAAGGTACAGAAGCTTCACCTCGGATATTATATGCGTTCTAA -AAAGACCAATTGTCGTTTTTGTTCGTGGCTCAAATGAATAATTGGTATGG -AAATATAGAAAAATGTCCGACTAGTTTGGTAATAGAATTGTTTCGTTTTG -AACATTTCAAAAATACCTCAAATAGTGCACTTGAGATCTTTGTTGAATTT -TCAAAGGTTTTATTTTCAGATAAATTGAGCATTTTCCATACTTATAAAAT -CAATTTTTGGTTCAAAAACTTCTAATTTTCTCACCGAAAAAGTTCTCACA -AGACAGTGACAGAGGTCGCGTGTCGTTTTGATATCCATCTCGATAATCAG -AGATTGTGATCTATGCCTCAATGACACAGTTCCGCGAAGGAGTCCGAGAA -AAACGTACAAAATTGGGGAAAAATATTGGAAATAACATTTATTGAAAAAT -TAAAAAAAAAACATAAACTATTTAAATTCACAAAAATTCGGAAGCATATT -TCCTATAATGAAAACAAAAAATTCTGAAAATGTGTACTGCACAACATATT -TGACGCGCATAATCTCTTGTAGCAAAAACTACAGTAATTCATAAAATTGA -CTACTGTAGCGCTTGTTTTGAGTTACGTGCTCTACGAAATGAATTTAAAT -AATTTATCGATGGAAAAATAATTTTAAGCAGAAAATGAGAAAATAATATG -AAGAAACAAAAAGAAATTCGAGTTACGTGCTCTAAGAAATGAATTTAAAA -AATTTATCGATGGAAAAATATTTTTAAGAAGAAAATGAGAAAATAATATG -AAGAAACGAAAAGAAATTCATTCGAAAATCGAGCGCGTAAATCCAGAGCT -ACAGTAATCAGTGAAAGAATTACTGTAGTTTTCGCTACTAGATATTTAGT -GCGTCAAATATGTTGCGCAATACACATTTCTGGAATTTTGTGTTTCCGTA -ATAAAATAAGTTTTTTGCGAGAACTACAAAAATATAACTATTTCTATTCC -AGGTGACCGGCCTCCCACATAACGTCGAGGCTGCCCGCAAGGAGATCGAG -ACGCACATCTTCCAGCGAACCGGAAATCTTCCAGAAACCGACAATGACTT -TGCCGGACAGTTGGCCGGTGTCTCGTTGATGGTGCAGAAGCAGCAACAGG -CTCAACAACAAATGCAGGAGGCTCAGCAACAATCGATGTTCTATCGAAGA -GCATTCGGCAACAGTAATCCGTTCAATCAGAAGGAGATGTCGTCGTCGCC -ATTCGGAATGGAGAGCTCGTTGGGATTGGACGCGTTGCTCCGCAGTTTCC -CATCGATGCGTAGTTCGTTGACTCCGGAATCTCTTTCCGGTACTGGACTG -TCTTCTCGTCCATCGTTGGGAGGAGGACAATCGGCGAAACAAGATCTGCC -AACCTACGACTACTGGGGAACCAACAACTCGCTTAATGATATTATGGAGA -ACGGTAAGCTTTTTTTGCGAATTTTAATAAGAATTTTAAATGACAAATAA -GGATTTTTCAGAAATTCTCAGCCGCAAGTACGATGCCCTGTCCGCATGGT -CGTCGATGGGATTGGAGAAACGCGAGGAATCCCCAACCAATGGGTATATA -TTTTTGAAGGAATTTTATAAATTTTTGAAATAAAACTAAAAATTGCAATT -TTCCTTCAAAGTTCTAAATTTTTGAAAGAAAATTTGATTTTCCGCTAAAA -AATTTAAAAAAAAAACAAGTTTTCGTGTTTTCCACTCGGAACCTGACGGC -TTCTTATCAATTTTTTAAATAAAAAATAACGTTTCTAAAACTCAGAATGT -TTAAAAAATTTCACATTAAAAAATTATTTTTCCGAAATCTTGAACCTATC -CGTTTTTGAAAATAAAAAAGAGTAAAATCGTAGTTTTCTCTATAAAAATT -ATAATTTTCATTTGAAATTCAAAAATTTTTAAATAAAATTGGATTTTGTC -CGTCAGAAATCTATAAAAAGAAAATTTTTTTTGAACAATAAAAGAAAAAT -TGTAATTTTCTTTTGAACTTCAAAAAAATATGTTTTTTTTCACATGCAAA -AAATTGATTTTTTCAAAACCTCGTTTTTGAGAGAAAAAGGTGAAATTCCA -ATTTTAAGAGGTAAAGTTAAATTTATTTATTTTATGAGAAAAACTTGAAA -TTTAAAGGAAAATTACTGAAATTTACAATTTATCATACATATTTTTTAAT -TTCGACATATCTCGAAATATCAAGTCGTAAATTTTTTCCACAAAAGTGTG -ATATTCTCTTTAAAAACTAGAAAATTTCAATTGTAAATTTATGAAAAATC -AAATTTTTTGCAGGCTCATGTCCTCCCTCAAAGGAACATCCGCCGGCTTC -GGTCTTCTCAGCACAATCTGGTCTGGCGGAAACATGAATCTGAGCCCAGG -ATCGTTGGCTTCAGCATCTGCCTCGCCGACTTCATCGACCTGCGATCACA -ACGATCATACTCTCGTGCCGATCAATGGATAAGCTGTGGATCCATTCATC -ATTCCATTACTATCGTGTAGACTCTCATCTAGCAAAAACCCATCCTCAAC -GAGTTCCAAATTCATCTTTCCATTCTTTAAAAGACTCTTTTTCCCATTTT -CTACTTTGTTCATCGGTGTACGAGTCCCTCCATTCCCATTTTCTCACCTC -TTTACTACATTACTAGAACACACAAAAATCACCATCATTCTCACCCCAAA -ATCCTAGACAAAAAAAACGAAAAAAATCACATATATTTATATATAACTAT -TATTATTTGTTATTCATATTTTTGAAATATCTATATTATATATATTTATA -TATGTAACCCATGCAGTCCCCCAATATATATTCCTACAGTAGGTTTTTTT -GGAAAATCTGTAACTTTCTCTATTATTCTTTTTTGCATTATGATAGGACG -ACCAACTCATGTTTTAAACAAAAATTATATATATTATAAGGATTTCCTCT -TTTCTCTCTATCTCTCACCTAGTGTTTAACTCCCAATTTTCCCCCTCTCT -ACTACGCACAACTAACGGAGAATTGAGAGGCCTTTTATATTTATAGCACC -TCTTTATAATTAAAAACTCGAGTGATCCCCACCTCACCCATCAAATTTAT -CGTATTTTGTAAAAGTTCTGATATATTCCACAGATTTTGGTGTATGTGAA -TGAAGCGATTCGTGTCGTCTCTCCATATTCTGGTATCCATAGCAACTCCC -CGAGCTTTTGGCTCACTCGCGCACGCCCTATACTATACCTTTACTATTAT -TAAATGCACTCAACAAATCCTATCCTGCGTCAATTGGCCGATCAATTGTC -CGAATTGCCACAATATGCACCATTGCGGGTAATAATAGCACAATAGTTGA -ATATATTAATAATTCAAAAATATTTATTATATTTTGAGGTGTCCCATTGT -TTCAGACATATATCCGCGCGACGATAAGTGCCACGTTGGGGGAAACGCCA -AAGAAAACGAGTAGGGATTTGACGTATAGAGGTGAAATTTTTAGAAAATT -TGAAATTTTCTGAAAAAAAAAGGATTTTTCTTTTATGAAAAATGCTCTTT -TCGCCAAAAAAATCACAATTTTCGACTTAAAAACTTCAAAATTTTTTCAG -GAACACACAATTCAAAATACAAAATATCTCGTAGCAAAAACTACAGTAAT -TCTTTAAATGACTACTGTAGAGCTTGTGTCGATTTACGGGCTCAATTTTA -AAATTAGATAAAAATGAGAAAATAAAGACACGAAGAAACGAATGAAAGTG -TAATATCGAAAATATTCGAAAATAAATAAATTTCAAAAATCGAGTCCGTA -AATCGACACAAGAGCTACAGTAGTCATTTAAAGAATTACTGTAGTTTTCG -TTACAAGATATTTTGCGCGTCAAATATATTGTGCAATATGCATTTTCAGA -ATTTTGTGTTTCCGTAATAGGTAAAATGTCAGAAAATCAAGGATTCAGTG -CAACCCCGCGTTCTACGGGTATTTTGGCCACGGCCACTTTTTGCAAAACT -GCAAAATAGGCGTTGTTATTTCATTTTCTGAAAAAAACATTGAAAATTAT -TATCGAGAAAGTACGATCTGACAAATTTCTCATAATTTATTTTTGATCTA -CCTGTTGAACTTTACTCCGCCCCCAATCTTGTTGCCGTTGTTATTTTGTT -GTAGCTGTCTTGTCGAAGGACGGGGAGGAGCCTAGTCAACAAGGTAGATA -AAAAATATATTATGAGAAATTTGTGCGATCGTATTTTTTCGATTATATAT -ATATATATATCTTCATGTAATTCTCATGAAATCTTGAAAAAAAACGCGAC -ACATGGTATTACCACGCCCACTTTTTATAATTTGAGCGCGTGCAATTTTT -TGTCGATAACATAGTTTCTATTTAAACAAAAAACATCGTGCGCCCACATT -GAAGAAAATCCTATAATTGGGCGTGGCCTTAACTCTGAAAATTTACAGAA -CGTGTCACCCATAGCATGATTGCCGATTGGCTCGAGCAGAATGGATATCC -AATATCATCTCAAGTCTTGAAAACAGAAATGTCTGGAAACTACATGGAGA -GTGCAGAAAAACACGTGGAAAATGGGGAAAAAATCGATAATCTATTGCGA -AGTCAGCTGAAAATCGATATTCGCGATGGCACCGGTGACGATTTTGAACG -AAAATCGATAAAATCGATTGGCGCCGGCCGCCCGTTTGCAAAAATTAATA -TGGTCGATAAACAGCGAGCACCGTTGAAAATTACACCGCTTAGTGATGAG -GAATTTCGAAAAACGATGCGGAAACGGATGGAAATGGAGAGGGAACGAGT -GAGTTGCGTTAAATAATTTTTTTTTGAAATATTTAACAAAAGTCGACAAG -GCGATTTTTTAAAATCGATGTTTCGCGACTTTTATTCAAAAGAAAAATTT -CAATGCCCTAAATCACTCAAATGATGATTAAAAAAGTATTTGCGCGCGCG -CGTAAAATTTAGTGCCAGCGTATGACACTATGTGGTGCAAACTTCACTCC -GGGTCCGACACTTTTTGGATTTTGCGCATCGCTATAAAGATTTCAGATCG -CGGCGTGAGAGCGGCGTTTGCGGCGCCGACATGAGAGTCCTACTTTCCTA -CTTTTCTTGGCAAAAAAATCGATCGATTTTTCAGCTCGCACGTCTATCCA -ACCAGGCAGAAGACGATTCCGACGATTCATCGTCCTCCTCCGACTCTTCC -ACGTCATCCGCGTCGTCATCTTCCGAGGAGAAGTTGACTTTTTCGGATAT -CTTGGGGAAACCCACAGCAGCTGGCGCGGAGAAAATGATCGAACTAAGCC -AAATTCCCAACGCATGGGGTCCGTCAAAATCCGCGTTAGTCACTGATGAC -GTGGCAAGCACTTCTGACCCACTTCCGGCGATTTTCAACGCACATCTTCC -GCCGCTCTCCATGGGACGACCACCGCTGACAAAAAGCGCGAAAAGTCGGG -AAATCGACGCCATTTTCGGCTCGGATAACGTGGATTATGATTTAGAGGAT -TTCGAGCAGGATGGCGTGGCGAAGAAAAAGTCTATACTGCCTATGGAGAA -AAAGAAGGAGGAAGCGAAACCAAAGGAACAGGAGCTAGTGGAGCCGTTGG -TCTTGTCAGAAGGTAACTTTGAACTTGCACCATGCAAAAATTTCGAAAAA -TTATGCACGTGGTCACTGGCTGTCCTTTTGCATAAGCTTGAAGCAAACGC -GCCTCATTGAGAATTCACGTTTGCGCCAACTCTCGCTATCCATTGGGCGT -GAGAGACGCAGATACTACTTTTTTCTCTGAACGTGAAAAACGCAAAGAAT -AACCGTTTTGCCGTCTGCATCTCTTCTTTCACACGCTATTTTGGCTGTGG -ACGAGGAATTCTCCTCTTCCAGGATTTTCTAGGCCATTTTCTCATATTTC -TCAAGTTTTCTCGTCCGCGAGAAAACGTGAATTTTGAGACAGCCAGCGAG -CACGTGATTATGCAACTCTCCTAAAAATCGATCATTGTTCCTGTAGCTTA -TAATTTTAAAGGCGCATATTCCGCTTGCGGAGCAAAAGTAAAAAAAAAAC -ATGCCTCTACATACAAATCGATGAATTTCCTGAAAAATCAATAATAAAAA -ATTTTCAGGAGAATCAATCGACGAGCTTGAAGATTTCGACACCGGTCTAC -TATCTTCCGGAGGATCCGATTATTCTTTTTAAAATTTTCTTCTTTTAAAA -AATTTCTTTTGAAATAAATAAATTCTCACCTAGGAATTTCAACAATTCAA -CTTGAAAAAAGTTCGCGCAAACTACGAACAAATGTGTGTCGAGCGGGCGG -AGCCACTGAGAAAGAGGAGCAAAATGTACACAAAACCATATTTGAGTGTA -ATTTTTCAAAGTTTGGCGCCGATTTTCTGTGAGAGATGAGTTTTCTCAAT -TTATATTTGGTTATTTTTATTTTAGTTCTTACTGGTAAATTTCTGGGTAA -GTCCTGATGACTTTGAAAACGAAAAAAACTCTTTCATTGATGCTAGTGCG -ATTGCTAGGAAAGCAACTTTTCAGTTACCAAGAAAAAGTCCAAGGCCATA -GGGATTAGCTGCGTGGCATAACAACTCATCCATCCTCGCAGATGCAAATC -CGCTCTATTGGCAAATAACATGGAAGAGTATAAACATTTTCTCTTCCACA -CGGAAACCTAGTCCCCTTGGGGAGCGGTAGTGCCCACAACCCCGCATGTT -TACCAAACTACACAGACAGCGCTATTGTCTGCAAGTGGCAAAAAATGGCC -GCCGAAAATTTTTACAATGTAAATAATTTTCAAAGTGTTACTATTTGCAC -CTTTTTGGCAAAAATTCCATAAGTAAGAAATTTGATGGAAGAGATGCGAG -GTGCGGGGAGTCTGAAAATGGCTGCATGGCCTGTATGTGACCTGTGTATG -TGGCCTAAAGGTCTAGTTACCCCTAGAAATCAAAGTTCAGTTCAGCAAAG -AGACTTTATTTTCAGCACTCCAACAAGAGGCAGAAACTCAACGGTACGAC -GGATGGTACAACAACCTGGCGAACAGTGAATGGGGTTCTGCTGGTAGGTT -TTTTTGGAAGAGAAATGACGTCACACTGACCTACTCCTTCAGGAAGTCGG -CTGCATAGAGATGCACGTTCCTACTACTCAGACGGTGTATATTCAGTGAA -TAACTCACTTCCGTCCGCCCGTGAACTCTCCGATATACTATTTAAAGGAG -AGTCCGGTATTCCTAATACAAGAGGATGCACCACTTTATTGGCATTTTTC -AGTTTGTATTTTTTTAATACTTATAGTAGCCAATGTTTGTAGGTCAAGTA -GTTGCTTATGAAATAATGCAATCAAATGGAGTATCCTGTCCACTAGAGAC -ACTTAAAATTCAAGTACCCCTATGTGATAATGTATTTGATAACGAATGCG -AGGGGAAAACTACAATCCCATTTTACCGTGCAAAATACGACAAAGCAACT -GGAAATGGTCTTAACTCGCCTCGAGAACAAATCAATGAACGGACTTCATG -GATTGATGGATCATTCATCTATGGTACCACCCAGCCATGGGTGTCCGCAT -TAAGATCTTTTAAACAAGGACGGTTAGCTGAAGGTGTACCTGGATATCCA -CCACTTAACAACCCACATATTCCATTGAATAACCCCGCTCCGCCACAAGT -ACATCGATTGATGAGTCCAGATAGATTATTTAGTGAGTTCATTGTTCTAT -AGAAAAGTATAAATATTTAAAATTGAAGTGTTGGGAGACTCGCGTGTGAA -TGAGAATCCTGGTCTTCTTTCATTTGGTCTGATCCTCTTCCGTTGGCATA -ACTACAATGCAAATCAAATCTATCGAGAACATCCTGACTGGACAGACGAG -CAAATCTTCCAGGCAGCACGTCGTTTGGTGATTGCATCTATGCAGAAGAT -TATTGCATATGACTTTGTTCCAGGACTTCTAGGTTACTCAACTATCATTT -AATAGCTTAAACTCAGTGTTTCTTTTAAGGTGAAGACGTTCGTTTGTCAA -ACTACACCAAATACATGCCACATGTTCCACCTGGAATCTCGCATGCTTTT -GGAGCAGCCGCCTTCAGGTTCCCTCACTCAATTGTGCCACCAGCAATGCT -TCTGAGAAAACGAGGAAATAAATGTGAATTCCGGACGGAAGTTGGTGGAT -ATCCTGCATTGAGATTGTGCCAGAATTGGTGGAATGCACAGGATATTGTG -AAGGAGTACAGTGTGGATGAGATTATTCTTGGTTAGTTCATACTTGAGTG -GTTATATAATAAAGATTGTAATTTCAGGAATGGCAAGCCAGATAGCTGAA -CGAGATGATAACATAGTAGTCGAAGATCTTCGTGATTACATCTTCGGACC -AATGCATTTCTCTCGTTTGGATGTTGTTGCTTCATCAATAATGAGAGGAA -GGGACAATGGAGTACCACCGTATAATGAATTGAGAAGAACATTCGGACTT -GCACCAAAGACATGGGAGACAATGAATGAAGATTTCTACAAGAAGCATAC -TGCAAAAGTGGAAAAGTTGAAAGAGTTGTATGGAGGCAATATTTTATATC -TGGATGCTTATGTTGGAGGGTAAGCGTTTTTTATAAATTAAGTTAGAGAT -CCTCCAATATACCCTCATAACATATTGTATCAGTTTACTTCATCAATAAT -TCAGCTTGAACCATTTAGAATGCTGGAAGGAGGTGAAAATGGGCCTGGAG -AGATGTTCAAAGAAATCATAAAGGATCAGTTCACCCGTATTCGAGATGGA -GATCGATTCTGGTTTGAGAATAAACTAAATAGATTATTCACTGATGAAGA -AGTTCAAATGATTCATAGTATTACACTTCGTGATATTATCAAAGCAACAA -CCGATATCGATGAGACGATGCTTCAGAAGGATGTGAGTTTATTGTAAACA -CCCGTTGGTGATGATCGAGTAAGTTAATAGCATGTTTCATTCCAGTCATT -GATTGATATTTTGTCATGAATTGTTATATAACAATATATGTATGTATTAT -ATTACTCATGTCTCAATATTGCATTTAATTTCCAGGTATTTTTCTTCAAA -GAAGGTGATCCATGCCCCCAGCCGTTCCAAGTGAATACCATTGGACTTGA -GCCTTGTGCTCCACTTATTCAATCCACCTACTGGGATGATAACGATACTA -CTTATATCTACACTCTAATTGGTTTGGCGTGTATTCCTTTAAGTCAGTCT -TTATTTCAATCTAAATGACTACCGATAGAGACTCAGCGATTATAGAGTTG -ATCAAGCTAAGAACTTTCAGTTTGCTATAGTATCGGTCATTATATGGTTG -AACGACGTATCCGAATAGGTCATAACAGTGCTTGTGACAGCTTGACTACT -GACTTTTCAACAGAAAGTCCCAAAGTTAATGTCTACAAAGTGAATGGTTC -GTTATTTTTTCATACTTGATTTTTATTTAAATTATACGGTGAATCTGTTA -CAGCTTTGGAATGGCTTCAAGAAGAGTACATACGGCAAGTTCGGATAGAA -ATAGAGAATACCACGTTGACAGTGAAGAAGCCACGTGGTGGAATCCTTCG -AAAAATTCGTTTTGAAACTGGACAGAAGATTGAGGTATTCCACTCTATAC -CGAATCCATCAGCAATGCACGGACCATTTGTACTTTTGTCTCAAAAGAAT -AATCATCATTTGGTGATAAGATTGTCGTCTGATAGAGATTTATCTAAATT -TTTGGATCAAATTAGACAGGCGGCTAGTGGAATCAATGCAGAGGTTATCA -TAAAGGATGAGGAGAATTCTGTGAGTTTACTTCAAGAAATACGTCGAATC -TGGAAATTATTTCAGATTCTCTTGTCCCAAGCAATCACAAAAGAACGCCG -TCAAGACCGACTGGACCTGTTCTTCCGTGAAGCCTACGCAAAAGCATTCA -ATGATAGTGAACTTCAAGATTCGGAAACTTCATTTGACTCATCGAATGAT -GATATATTAAATGAGACAATATCTCGTGAGGAATTGGCAAGTGCAATGGG -AATGAAAGCTAATAATGAGTTTGTGAAGAGAATGTTCGCGATGACTGCAA -AACATAATGAGGATTCGCTCAGTTTCAATGAGTTTTTGACAGTATTGAGG -GAGTTTGTTAATGGTGAGTATGATTTACTAAAGTTCTGATCACAAAAACT -ACACGTGAATGAATGTTCCAGTCCGTTTTACACTAGGTTCGGTAAATATG -TATAATGTTATAGTGACTGTTACATGTTGAAGCAGTAGTCTTCTTTTCTT -TGAATGGCAACAAAAAGGCTCCCTCATTATTTAAGCTGTATTTCACTGCG -AATAACGGCTTAATGTGCTATTTAAACATTCGGGTCTATTAGTCTTTTAG -TATATTGTCGCGCATACTAAGGCTCGCTTTAATAATCAGTTTGAAACGCG -AATTTGATGGTGTTAAATACGATTTTAATTTGGGAATTGTTCACAATTAG -ATGCTATCTTGACTAATAATAATTAAATACAGAAACAAAAAACTTTTAAT -GGACAAAAATCACTCCGAAACTACCCAAATCGGCATTAGGTTAATGTCTT -TGATTACTCACCTTCTTTCCTAATTTCCAGCTCCTCAAAAGCAAAAACTG -CAAACTCTATTCAAAATGTGTGATTTGGAGGGAAAGAACAAGGTACTCCG -AAAGGATCTCGCAGAACTCGTCAAGTCCCTCAATCAAACCGCCGGAGTTC -ACATTACCGAAAGTGTGCAGCTTCGATTATTCAATGACGTGCTGCACAAG -TCTGGTATACATCCCTGTTTAGTATGCCAAGTATTATAAGAAGTTTCAGG -AGTAAGTGACGATGCGGAGTACTTGACTTGTAATAATTTCGACGCATTGT -TCTCGGAGATCTCTGACGTCCAGCCGATCGGTCTGCCATTTAATAGGAAG -AATTATAACTCACATATCAAGGAGTATGTTGTTGAATTCAAATCCGCAAG -TAAATACAAACTTCAGGCCATCATGCCACACCTCATTCCCAATAGTGGAC -CACTCTACTCCTGCTCCACTTTCTCTGATTCAGAGAATTTGTGCATTCCT -GGAAACCTATCGCCAACACGTCTTCATCATCTTCTGCTTTGTCGCCATTA -ACATTGTCCTTTTTTTCGAACTTTTCTGGCGTAAGTTTACTGTTTAGTTC -GGTTTTCAAAAGCAATATTCAATTAAGATTCCCGCTACCTAAACGAAGAT -CGAGACCTCCGTCGGGTGATGGGTGCCGGGATCGCTATCACTCTCTCTTC -TGCGGGAGCCTTGTCATTTTGCATGGCGTTGATATTGCTCACAGTTTGTA -GAAATATTATAACACTGCTTCGAGAGACAGTTATTGCGCAGTATATTCCA -TTTGACTCGGCTATCGCGTTCCATAAGGTAAGAGCCTCTCTCTTGGCCTA -GCGCTGTAAATAAAACTGCCAAATTTTTAAACTCCATCAATTTCAGATCG -TCGCATTATTCACCCTATTCTGGTCTACCCTTCACACCATCGGCCATTGT -GTTAACTTTTATCACGTTGGAACTCAAAGCGACCGTGGACTTGCTTGTCT -CTTCCAGGAAACATTTTTCGGGTAAGCCCCACCTACTCGGTAGATCTCTC -AGTAGATTGAACGTTGGCTTGCTTTCAGATCTGACGTCGTGCCTACCCTA -AGCTATTGGTTCTATGGAACAATTACTGGGTTGACGGGAATTGGATTAGT -TATTGTTATGAGTATCATTTATGTGTTCGCATTGCCAAAGTTCACTAGAA -GAGCATATCACGCGTTCCGGCTGACTCATCTTTTGAATATTGGGTTTTAT -GCACTCACTATTCTTCACGGACTTCCTTCACTTTTTGGGGTAAGGCTTAA -TTTAATTTGATTCATTTACGCTCTTTTTACGCTCTTGACGTCAATATTTG -TTACAGTCTCCCAAATTTGGCTACTACGTTGTTGGACCCATTGTCCTTTT -TGTAATCGATCGTATAATTGGGTTGATGCAATATTACAAGTCGTTGGATA -TTGCCCATGCAGAAATCCTTCCATCAGATATTATATACATCGAGTACCGT -CGTCCAAGAGAATTTGAATATAAATCAGGACAATGGATTACTGTATCATC -ACCATCTATATCATGTACCTTTAATGAATCTCACGCATTCTCGATTGCCT -CAAGTCCACAGGATGAGAATATGAAGTTGTATATAAAAGCAGTTGGACCA -TGGACATGGAAGTTGAGAAGTGAATTGATAAGATCATTGAATACAGGGTC -ACCATTCCCATTAATTCATATGAAAGGACCATATGGTGATGGTAATCAGG -AATGGATGAATTATGAAGTTGCAATAATGGTTGGAGCAGGAATCGGAGTG -ACTCCATATGCATCCACGCTTGTTGATCTTGTACAAAAAACATCAAGTGA -CTCGTTTCATAGAGTTCGATGTCGTAAAGTATATTTCCTATGGGTGTGTT -CGAGTCACAAGAACTTTGAATGGTTTGTGGATATGCTGAAAAATGTTGAA -AATCAAGCAAAGCCGGGAATCCTGGAGACACACATATTCGTCACTCAGAT -GTTCCATAAGTTTGATTTAAGAACTACTATGCTTGTGAGTTTTTTATGCG -TTTTTGGTTTTTTAGTGGTATAACTCTAAAACTAAATGTTTGGAGAAAAA -GGCTTAACTAATAAAATGTTGCTCATAACTTTTTCTATGCAATAAAATAT -GTTTCAAAATTTCATCCGAGATCTCACAAGTCCAAATTTGATTATTTTTC -TTAAAACGAGTATATTTCAAGACCGAAAAGTTTTCTTGAAAAAATGGTAT -ATTTTTTGCACATAATCATTTTTTCATAAAGTGCTCTGCAAATCAGAAAT -TAAAGTTCGAACAGTCTTATAGTTAGTACCGTGACATTTATTGTAACTTA -AAAAAAAAAATTACGCGACATAGAAACGCTCGATTATCTGAAAAACCAAA -TTGGATTTTGATTCTAGTTAATTTATTTTCAAAAATAAACATATTTTGTG -ATAATTGTAAACTAAAAACTATACCTGAATATTTTTATAAATTTTATGTG -GTTTTTGGTTTCAGGATTAAAACAATGGTAAAATACTACCCTAACGGCTT -ACCCAAGGCTCAGAAAATTGTAGTTAGTCTCAACAAATTAATACATATCA -TTTCTTATTTGCAGTACATTTGCGAGAAGCACTTCCGTGCCACCAACTCA -GGCATATCAATGTTCACTGGCCTACACGCTAAGAATCATTTCGGACGGCC -CAACTTCAAAGCTTTCTTCCAATTTATTCAGAGTGAACATAAGGAGGTTA -GTTTCATGGTTTTAACCTCTAAATAAAGCAAATTTGCAGCAATCCGAAAT -TGGAGTGTTCAGTTGTGGACCTGTAAACTTAAATGAAAGTATAGCTGAAG -GATGTGCAGATGCCAATCGACAACGAGATGCTCCGTCATTTGCACACCGC -TTTGAAACTTTCTAATCTTTCTACTGTTACTTACTATGAAAATCATAAAA -ATTAAGACGCTTCATGAATAAAACATTGAGAAAAAAAACCTGAAATAAAG -AATTTTCACATTTGTCCAGGTAGTATATATCCCCAATACAAACATTTTGA -GACGCGAACCTTCCCAAATAATCATCAGACATTGTTCTGTAATTAGGCAA -AAAACCAGCCCCCTAGCCTCCTCCCTCACCACAAATAAAACCAATTCCCC -CATTTCCCCCCAGTTCATTCACCAACAATGAGTTTGTTCAAAGTATACAC -CTCGTTTTCTTTGTTTTTCTCCGTTCTATTCCTTCTCGTCGCTTTTATTG -TGATCTATGACATTTTCGATGAAATTCGCGAATTTCAAGAAGTAATCGAA -AAAGATGCCAGGAAGTTTGAGGTAAGGCAATATGTGGTGCAGCAATAATT -TCCGCATTTTTCGTAGATCATACCGTTATGGGACAGTCTGACACCACGTG -ATAAAATAGTATACTAAGTATTACAAGCAAGGTTGAAACGAAAATGAAAT -TTCGTTTTCGAAAACGAAAACGAGAATTTTCGTTTTAAACGCGAAAAACG -AAAACGAAAACGAAAATATCAGTTTTGTCCAATTTAATTGGTAAAATATA -GATTTCATGAAATATTAGGTCCATTTTCGAATCAATAATAAACAAACAAT -AGTTTTATTACAAAAAAAACAATAAAAATTAAATAAAGCAAAAGAACAAT -AACAATAACACTTGCTGAACAACTATTCCATTAATCTAAACCAATTTTAA -AGCCTAAAACTTTTTGATTTTGCTGTAAGAACACAGACTTGCTCAACGAC -TTTGTAGACATCTTTCTTCTCAGCTTTGTAGAAACGCGGCCAGCTCCTGA -AAAAACTCGTTCCGATTCAGCAGATGAAGCTGGAGTTGTCAGATATCTGT -TCGCTATTTGAGAAAGCAATGGAAACTTAGATCGATTGAGCGGATTTTGC -CAAAAAACAGCGGGGTCTGATTTTCTATTGTTATCGGTATCGTAGAAAAC -TTCAACTTCTGCACTAGCACAGAGCATGGAATCTACAGGCGCTTTGTCTT -TTCTTTTTCTGATCTTGGAATGCTTTTTCTCGTAAGCTTCAAACAGGTCG -TCTATTCCCTCAAGAGTTTCATTTTCTGGCTCATCGACTGCTTCTTCCTC -TTCTTTTGATAATCCTTGAGCTAAGCTCAAAACAAGCTCTTTTCCGTCAC -AATATTTTCTTTTGTATCGTGGGTCAATGTTTGATGCAACAATCAGTTTG -AATGTCACCAGTCGGTGCCCGCGCCGTAGGTGCGGTCAACGGCTGGTATG -TATATAAAATATATTAGATTGAAAATATAACATTGAAAAAAAAAAACAAA -CATTGAAACACAATAAAAATCAAAATATAGACGCTCTTTATTCTTGAATA -AAAATAAGAATTACGAATTGTTCACTGGGAGTCAGCTTATTTCTTGTACA -AAATAATGATTTTGACCAGTGTCAGCTCAAAAAAAATACGTTGACAGAGA -GAGGTGGCATTTTCGTTTTTTCGAAAATTTTCGAAAACGAAAACGAAAAA -ATCATTTTCGCCAAAAACCCGAAAATAACGAAAAAACGAAAATTCGAAAA -CGAAAAAGTGACAAGCCTGATTACAAGGTCGGTATTTCATAATATGAATA -TTGTAGAGAAAGGTTACTAGCGATGATTCCAAAAAAATTTAGATTCATCA -GAGATGTACACCCAAATACCCAAGGCATAGGCCCTAATTATTGATTAGTC -ACAACTTCTTACTTCCAACAAGCTTTTCCTATTTTTCCAGTTCTACTCCA -CCGCCGCCTCACGTTCAATTGCCGGTCTCGACAAGCGGAGCCTATTCGGA -GGAGCTGTTTCTTTTTAGTTGTATATACATCTATTCAAAATTAAAAGTCA -TTGTTGTTGTTACCCATAAAACAGTGAATGAAAAAAAATGAAGTCTAGAC -AGAAAATGTAAAGCTGGCACAGAATACTCAAAGAAGCATAAAATATGTAT -AATAATGATGATATAGGGAAGGTTAGAACGTTTCAAAGCGATGTGCAAAT -GAAGGAGCATCTCGTTGTCGGTTGGCATCTGCACATCCTTCAGCTATACT -TTCATTCAAGTTTACAGGTCCACAACTGAACACTCCGATTTTGGATTGCT -GCAAATTTGCTTTATTTAGAGGTTAAAAAGCATTTAACTAACCTCCTTAT -GTTCACTCTGAATAAATTGGAAGAAAGCTTTGAAGTTGGGCCGTCCGAAA -TGGTTCTTAGCGTGGAGACCAGTAAACATTGAAATTCCTGAGTTGGTGGC -ACGGAAGTGCTTCTCGCAAATGTACTGCAAATAAGATGTTAAAGTTTAAA -AGCTTCAGACCTTAAGATGCCACTGCGTTTAAATGCGTCCGCTTTAATCA -GTTTATAACCAAACCTGACGTTTGATTTTGAAAATTATCTTCAATAAACT -CACAAGCATAGTAGTTCTCAAATCAAACTTGTGGAACGTCTGAGTGACAA -AGATATGTGTCTCCAAAATTCCCGACCTTGCTTGGTCTTCCACGTTCTTG -AGCACATCCACAAACCATTCATAGTTCTTGTGAGTTGAGCACACCCATAG -GAAATATACTTTACGGCAACGAACTCTGTGAAATGAGTCACTTGATGTTC -GTTGTACAAGATCAACAAGTGTCGATGCATATGGAGTCACTCCGATTCCT -GCTCCAACCATTATTGCAACTTCATAATCCATCCATTCTTGGTTACCATC -ACCATATGGTCCTTTCATATGGATTAATGGAAATGGCGATCCTGTATTCA -ATGATCTTATCAATTCGCTTCTCAACTTCCATGTCCATGGTCCAACTGCT -TTTATATACAACTTCATATTCTCATCCTGTGGACTTGAGGCAATCGAGAA -TGCGTGAGATTCATTAAAGGTACATGATATTGATGGTGATGATACAGTAA -CCCATTGTCCTGATTTATATTTAAACTCTCTTGGACGACGGTACTCGATG -TATATAATATCTGATGGAAGGATTTCTGCGTTTACAATTTCTAATTTTTT -GTAATATTGCATCAAACCAATTATGCGATCAATTACAAATAACACGATGG -GACCAACAACGTAGTAGCCAAATTTGGGAGACTGTAACAAATATTGAAGA -AACTTCTTGAACCGAACAGTGGCAAAAACTCACATCCAACAACTTTGGAA -GCCCATGAAGAAGAGTAAGTGCGTAAAAGGCAATATTGAGAAGATGTGTG -AGCCGGAATGCGTGATAAGCTCTCTTAATGAAACATGGTAACGCGAAAAC -ATAAATGATGCACATGACAGCGACCAATGCAATTCCTGTCAGACCTGTAA -TTGTGCTGAAGAACCAGTAACTGATTGAAGGAAGGAAGTTGGATCTGAAA -GTTATTTGATGAAAGTTGTTGACAGTCTTGAGGGAGTTTGTTAATGGTGC -GTATTCTAGTAAGATTGAATGCAAAAATGAATTCAAGTAAAGTATTACCC -AAAGAATGCTTCCTGAAAGAGACAAGCAAGACCTTCTTGACTTTGAGTTC -CAACGTGATAGAAATTGACACAATGTCCAACGGTGTGAAGAGTGGCCCAG -AAAGCCGCAAAGAGCGCAACGATCTAGAAATGTTCAGTTATTATAGAGTT -TTTGATACTGGCGGTCATAATAAACAATACTTTGTCCGAAATATTAGTTT -TCCCATTGTTTATCATAGTTTATTTTTTTATTCAAAAATCTGCCCTCTCT -ACAGAACACTTATATGTAAAGTAGACTTAAAAACATCTGAGTTTTTTGAG -CAACAAGAGACCCACACTCGTTCTAAAAAGAAATATATCTGGAGCACAGG -AAAATCTAAACTTAGGAGACACTTTTTTGTCAACAGAACACTACACACAA -TGAAGCAACACTGATCTAATGTTACCTTATCCTCACTTCTATTCATCATT -TATTCTTGCCTTTTATACATCGATATTTGTGTTTTTTGCTTCTTCTCCAA -TGTAGCCATTATTTTTTTTCTCATCTCTTTTTATTTTTGTTCCATTTTTA -TTTATGTAACCACTTGTGATGGTTTGTATCTATTAATGTGTGTTTTTTTT -CTACCTCACGATATCTTACTATCGTAATAAATTTAAAAAAATTAAACACT -TACAAGTTTAGGATAACATCGCTATATCATAAGTTCACATCTGGCTGAGA -AACACCATGTTCGATGCAAAGATCTTTCCTTTCATGCTTGTATTCTATTT -TAAAAAATCTTTTCAAAACATTGGGTATGCACAGTACAGTTATCCTACTT -GCATTAAACCTCCGCATTACTGTACAGATAATAAAATAACAAGTTTTCCC -TTATATCTGAACATGCTAAATATTTTTAAAAACAACTGATTTGACAAAAT -TTACTAATGCAATAATAATATTTAAAAAATGTGTTACACGCTGCCCTAAC -GTTTCTCACCTTGTGGAACGCAATAGCCGAGTCAAATGGAATATACTGCG -CAATGACTGTCTCTCGAAGAAGTGTGATTATGTTTCTACAAACTGTCAGC -AATATCAACGCCATGCAAAATGACAAGGCTCCCGCGGCACCACGAGTAAT -AGCGATTCCAGCTCCCATTACTCGTCGGAGATCCCTGTTTTCCGCCATGT -AACGATAATCTGAAAACTAAATTAACATGAGCTCCCAATTATATGAACTT -ACGCCAAAACCGTTCGAAGAAAAGAACAAGATTGATGGCAACAAAGCAGA -AGACAATGAAAACGTGTTGGCGATAGGTCTCCAAGAACGCTGAAACTTTG -TGGATCAAAGTTAGCGGTGCTGAACTGTTGATGGATCGATCCACGACGGC -AAATGAGTTCAGAGAAGATGTTCTAAAAGTTATAATTGTTATACAGTCAG -AGTCCTCCTGAATACTCACTCTCCAATACTTGGCTGATAGTTCTTTCGAT -TGAACGGCAGTCCAACTGGTTGCTTGTCAGGTATATCCGAGAACAGAGCA -TTGAAATCGTCGTAAGTCAGGTACTTGGCATCATTGCTCACTCCTGCATA -GTGCAACACTTCATTGAATAATCGAAGCTGCACACTTTCAGTAATGTGAA -CTCCAGCGGTTTGATTGAGGGACTTGACGAGTTCCGCGAGATCCTTTCGG -AGTACCTTGTTCTTTCCCTCCAAATCACACATTTTGAATAGAGTTTGCAG -TTTTTGCTTTTGAGGAGCTGGAAATTAAAGTAGGTGGTGCATAACATTTT -TTAAAGGCAGTGTTGGTTTTTCTACTGTTCAGTAAAAGAAAATCTACAAT -TGACTAAATTCTCAATACTTTGATGCCATATTAGTTGTGACCTCCCTGTC -ACACGAGAACTTTCTACAGTGCTCGCAAATTCTATAGGACTCCCCCGAAT -AAATTCAGATTCAGAATAAATAACCTTTAGAACTTTTACTATCTCGAAAT -ATTGCCGACCATAGGACACCGAGTTTCACCTCACGGCTAATGAACCTACA -AAATGTTAATCGGTCGCTAATCCCGGCCTAGTTTAAATTCAGATCAGAAG -AAATAAATTTCTTTTCGCAGGAGACTTCGGCTCTCTTGAACCAAAACCTT -TTATATGTAGTTTTGTACGTACAAAATCAAAGACAGTTCAAAACAACTTT -ACCGCTACTGCTGTTACACGTAATTAAGCTGCATTAAGAAATTATATTTA -TTCAATTAGAACTTATGTTAATGGGAAACACGCCGGAACATTCTAGAACG -TAGTCTTTGTATCACAACAAATTTATGCTGAAATACTCACCATTAACAAA -CTCTCTCAAGACTGTCAAAAACTCATTGAAACTGAGCGAATCCTCATTAT -GTTTTGCAGTCATCGCGAACATTCTCTTCACAAACTCATTATTCGCTTTC -ATTCCCATTGCACTTGCCAGTTCCTCACGAGATATTGTCTCATTTAATAT -ATCATCATTTGATGAGTCAAATGAAGTTTCCGAATCTTGAAGTTCACTAT -CATTGAATGCTTTTGCGTAGGCTTCACGGAAGAACAGGTCCAGTCGGTCT -TGACGGCGTTCTTTTGTGATTGCTTGGGATAAGAGAATCTGAAATAATTT -CCAGATTCAACGTATTTCTTGAAGTAAACTCACAGAATTCTCCTCATCCT -TTATGATAACCTCTGCATTGATTCCACTAGCCGCCTGTCTAATTTGATCC -AAAAATTTAGATAAATCTCTATCAGACGACAATCTTATCACCAAATGATG -ATTATTCTTTTGAGACAGAAGTACAAATGGTCCGTGCATTGCTGATGGAT -TCGGCATAGAGTGGAATAACTCAATCTTCTGTCCAGTTTCAAAACGAATT -TTTCGAAGGATTCCACCGCGTGGCTTCTTTACTGCCAACGTGGTGTTTTC -TATTTCTATCCTGACCTGTCGTATGTACTCTTCTTGAAGCCATTCCAAAG -CATTTACACCATAAATATCTCCCTTCGCGCCACAATCATCATTTGCAAAG -TCAGTAGTTAGGCTGTCACAAGCACTGTTGTGGCCAATAGCAATGCGACG -ATTAACCAAGTATCGGCCAATTCCATAGCAAACTGAAAGCATTTTGGTTT -GTATGGAACTAGATGCAATAGCTCACTTAATGGCACACATGCTAATCCAA -TTAGGGTGAAAACATAAGTGGTGTCATTATCAGTCCAATAAGTTGATTGC -ATAAATGGAACACATGGTTCAAGTCCAGTTGTGTTCACTTGGAATGGTTG -CGGGCACGGGTCACCTTCCTTGAAGAAGAATACCTGGAGTGATAAATACA -TTGCAATGCGGAATTCAAAAGAACATAATAATAAACCATTAAATTTGGAA -AGTAACTTACATCCTTCTGAAGCATTGTCTCATCGATATCGGTGGTTGCT -TTGATAATATCTCGAAGTGTAATACTATGAATCATTTGAACTTCTTCATC -AGTGAATAATCCATTCAATTTATTCTCAAACCAGAATCTATCTCCATCAC -GAATACGGGTGAATTGATCCTTTATGATTTCTTTGAACAACTCTCCAGGC -CCATTTTCACCTCCTTCCAGCATTCTAAAATAATAACGTTTGATTAACGT -AATCCAATATATGTGCACTGAGAAAGAAACAAGTATGCGTAATTTATTCT -GCCTAGATTTGCAAAAAAAACTACCTTGCATGGGTAACGTTTGAAATACC -GAAGGAATTGCACTATAAAACTGAGGTGACATACAACTTCCAGAGTTTAT -GCCTGCTACAAATTTTAGAGTTTGACCAAAAGAAGCCGTTAGAAGTTTAC -TCGTGAGAACTTTTTAACCCTTGAGAAGATTTAGTGAATATTCAAAATTC -CACACTTCTTAAACCAATCAGTTATGTTAAAACGAATTGATTTTCATTGT -TTTTGCTTGAAACTCTTCGAATTCACCGCATTTTAAGTTAAGCATTCCAC -TTTAAACCCAAAACTAACCCTCCTACATAAGCATCCAAATATAAAATATT -GCCTCCATACAACTCTTTCAACTTCTCCACCTTTGCAGTATGCTTCTTGT -AAAAGTCTTCATTCATTGTCTCCCATGTCTTTGGCGCAAGTCCGAATGTT -CTTCTCAATTCATTATACGGTGGTACTCCATTGTCCCTTCCTCTCATTAT -TGATGAAGCAACAACATCCAAACGAGAGAAATGCATTGGTCCGAAGATGT -AATCACGAAGATCTTCAACTACTATGTTATCATCTCGTTCAGCTATCTGG -CTTGCCATTCCTGAAATTACAACCTTTATTATATAACCACTCAAGCATGA -ACTAACCAAGAATAATCTCATCCACACTGTACTCCTTTACAATATCCTGC -GCATTCCACCAATTCTGGCACAATCTCAATGCAGGATATCCACCAACTTC -CGTCCGGAATTCACATTTATTTCCTCGTTTTCTCAGAAGCATTGCTGGTG -GCACAATTGAGTGAGGGAACCTGAAGGCGGCTGCTCCAAAAGCATGCGAG -ATTCCAGGTGGAACATGTGGCATGTATTTGGTGTAGTTTGACAAACGAAC -GTCTTCACCTTAAAAGAAACACTGAGTTTAAGGTATTATAATATAGTTGA -TTAACCTAACAGCCCTGGAACAAAGTCATATGCAATAATCTTCTGCATAG -ATGCAATCACCAAACGACGTGCTGCCTGGAAGATTTGTTCGTCTGTCCAG -TCAGGATGTTCTCGATGGATTTGATTTGCATTGTAGTTATGCCAACGGAA -GAGGATCAGACCAAATGAGAGAAGACCTGGATTCTCATTCACACGCGAGT -CTCCCAACACTTCAAGTTTAAATATTTATACTTTTCTATAAAACTATGAA -CTCACTAAATAATCTATCTGGACTCATCAATCGATGTACTTGTGGCGGAG -CGGGGTTATTCAATGGAATATGTGGGTTGTTAAGTGGTGGATATCCAGGT -ACACCTTCAGCCAACCGCCCTTGTTTGAAAGATCTTAATGAGGACACCCA -TGGCTGGGTGGTACCATAGATGAATGATCCATCAATCCATGAAGTCCGTT -CATTGATTTGTTCTCGAGGTGAGTTGAGCCCATTTCCAGTTGCTTTATCG -TATTTGGCACGTGTAAATGGGATTTCTGTCTTTCCCTCACATTCTTTATC -AAATACATTATCACATAGGGGTACTTGAATTTTAAGTGTCTCTAGTGGAC -AGGATACTCCATTTGATTGCATTATTTCATAAGCAACTACTTGACCTATA -ATTATTATTACTAATTTTTGAGGTAGAGGGCAATAAAAACGAACTGAAAA -ATGCCAATAAAGTCGTGCATCCTCTTGTATTAGGTATACCGGACTCTCCT -TTGAATAGTATATCGGAGAGTTCACGGGCGGACGGAAGTGAGTTATTCAC -TGAATATACACCGTCTGAGTAGTAGGAACGTGCATCTCTATGCAGCCGAC -TTCCTGAAGGAGTAGGTCAATGTAACGTCATTTCTCTTCCGAAAAAACCT -ACCAGCAGAACCCCATTCACTATTCGCCAGATTGTTGTACCATCCGTCGT -ATCTTTGAAATTCCTCATTTTGTTGGATTCCTGAAAAGATAAATGTTACG -AGTTTTTGATTTCCAGGCCACCAAAATCTATATGATGGCCTAGGTTCCTT -ATTGAAATTTCTAGGTCACACATGCTCCCTTCACTACATTTTCACACCGA -TTCGTGCATTTTCTCACTGAACGCGCAAATTTCCGGTCAGTAGCGGAGCA -GAGCAAACATTTGCCCCGCCACCCGAAACAATTATTTTCGTATCATTTTC -GCACCTATATTTATTCTGTTTGTTTGCCTATTTTTTGTACATTTTATCCT -TTTTCTTGTATTGGGCGACGATGGCAAGGTCAGTAAAACAGGAAATTGTT -CCTGATAACTCGGGAATTTCAGGAATTTTTCCAAAATTGGTTGGGAAACC -ACCACTTTGTTGAAATTCGAAAGATACACATTTTGTTATTTAGGTGTAAA -CATGAACACTTTCTTAGGTAAACTATGTGATTTTTATGAAAAAGAACACA -GACACCGGGTGGCACACAGAGCTTATCAGTAAACAGCTATCAGTGATTTT -GAAATTTTGGAGGGGCAGAAATGTTGCGGACAAGGAAAATTTTTGTTTGG -AATTTGAAGTTTTGAAATACGCAATTTGAGAATTTTTGAACATTTTTTTG -TAATTTTTATCCCATTCATTTTTAACCTAACATTTTGAAAATCTAGCACA -GAAAATAGTACAGACACGTTCAATTGAGCTATTCCAAAAATTATCAATAT -AGCGCACTTGGTGTCCATCTTCCTTAACTGTTTGCAATTAGTCTCTCTTT -ACAAGAAATCAGCTACTATTTGAACAGATCTTGAACACATTTTCAAAGAT -CGGCTCAAGATCAAAAGCCTCTTAAACATTTAAGATAGCAGGTCCGCTCT -GTTGACAAATTTTCCACCCGGTCCTCCGAAAGGAATTTTTTTGGTCATCC -AACAACCTAGACCATGACGGCACCGATCATGCAATTTGCCTGCTTATAAA -AAACGATATTTCTAGGCCACCCATTTTTAAATATTTTTTTGCCTAGTCTT -AGCTATGTGGAATAAATTCTAGGTCAGGAGGTTTTCTAGGCCACGTAATT -CCACTCACCTTTCCCTCCAAAAATTGAACTGAACAGTATAGCTATGTACA -GCACATGTTTTGAGCGCATTGCTCGTGCGCCTTAGAGTTTTAGTTGACCT -GAAAATATTTGAATATTTAGAAATTGAAATTTTGAAACGCAATGATTAAA -ACGGTCAAAAAAGATGTTATTTATACATACGCAACATTTCAAAATTGATA -ACAAATATTTACAGGAACACTTTTTTCCAATAATACGGTGACTAAGGGGG -AGTTTACTGATAGTAACAAATTGGAACGGTACAGGAAGAAAATTTAAAAC -CGGCTCTACCCATTTTAGTGCTACCAGCCGACAACCAAAAAAATCAATCA -GCCGCACACCCTGCTTGGAATGTGACAATCACAGAGTTTTGGAATTTTCC -TAATTTCTAAAATTTAATTTTCTAAAAACTGGGGATTTTTTCTGTAATTT -TTTTTTAATTTTAAATTATTTTTTAGGAACATTTTTTTGAAAATAACTTT -TGTTTGAAAAATTGTTCGCTAAAAGAGTATAAATAAGATCAGGCTTCCGA -AAATGTTTCAAAAAATATTTTTTCACGATTCTTGCAACAAAAAAAAACAA -ATACTGAAAAAAAAATTGTAAGAAATTTATTTTGTTGAACTTTTCAAATC -TACATTTACAACAAAAACAGTTCTTTATAATATTTTAAAATCCAAATAGA -TTCCCAGTAGATTTTGTTTAAATATTCGGAAAACGACCAAACTTTCATTT -TTTGAGTTCTTAAATTAAAAAAAAAATTTTAAATTAAAATTTTTGATTTT -CAGTCTAAAAATTTCAAAAAAGAGCTTTTAGTTCTGTAACTTTTGGAATA -AAAATTCAAAAAAAAATTGGGGGAGCCAAAAACTAACGCCTGCTTGAAAC -CTGCCCGCGAGAACTTGCAAATATTCAATTTTCTCATTTTTATTAATTTG -ATGAGAAAAATTTAGAAATAAAAAAAAATTTGCATAAGGCATCGATTGAG -GCGAAAGGCAGGCGGAGGTAATTTTAAGGCCAGGCTGGCGTTTTAACTTA -GGCTTCCATAGACCTAATATTTTCATACTTGTTGAAATTTCAGAGGTTTG -AAAATTGAACAATTTAGGCCCAAAACCTTTGTTCCTACAGTACTACAAAA -ATTCTTTGAAAAATTCCGGTAATAATAATTGGAGGAGGAGGAAAAATATA -AAATGATTCTTCGTCAGACAGAAATAAATTGGTGAAGAGAAAAAAATGAA -TTGAGAGAAAAAGAGAAAGAAAGACGGAGAGCGTCTTCGAAAGAAGGAAT -CCTCCTGCGCGGGATCGAAAAAATAAGCAGCAGCCGGGAGTGAGAGAGTA -CACTGCACTAGAAAAGATGCAGAGAGATTCACAGAAAATCGGGAGAGACC -CCCCGTATGTCGGTCGAGACTGAACACCTAAGACCTACTTCATATTTCGA -ACCGGTTCATTTTCATTGGCATTCGTATTATTATTAGTTTTGACAGGGGC -AGTCGTCGTAGATGCTATTGTTGTCAGTTTGACGTGATGGCCGTGTCATG -GGAAAAATTCGGCCATCAAAAATCGGGGGGTTCCTGCCACCCTTTGTCTT -CTATGGTCGGAGAGGCGTTTTCTAGGCTACTTATTTTGGTAGAGTAGCTG -TTAATTAAAAATTTCATCAATTTGGTAATAATGTGGCTGCAAATCATATT -TAAATTTTCTATACAGTCAGTGCCACCCAATTAAAAATTTTCTGGCAGTG -CCACCCAGAAAAAAAAAATATCCTAGGCCACCAATTTTTAAGATCATTAA -TTTTTTGGCTATCAAATTAAGTAGACCACTAAAATGTTTCGTCATTAAAA -TTTTCTAGGCCACCAATTTTGCTTGACTACTAACCTTCTTGGCCATCACA -ATTTCTAGGCCACTAATTTTTTTTCTAGGCCACTAATTTTCTAGGCCACT -AACAAACTGTTCAGGCCATAAAGTTTTCTAGGTCCCTATTTTTAGGTCTT -CAATTTTTTCAGGCCACCAAAATTCTATTCCAACATTTCTCCGTCACCAA -AGTTTCTAAGGCCTTTAATTTTATAGACGACTTCTTAATTGTAAGTCAAA -TTGTTTCAAAACGATTATTTTCAATACATATCAAAAACCCAAAATTTTTC -AAAAACTTAGTAAACTAAACTAAATTTCCAATACGTGCTTCATTTTTATA -TGTAGGCGTTTAGACACCCCAGTGGGCAGCAGTAATTGTTAATTCTTATG -ATTATCTCATTGGTACACTTTTCTTGTTCAACTTTAATTATTTATTTTTG -AAAAGGATTATCATTGGCATTGGCAAATAAATAAAATTGTTAGTGACGTG -GTGATATTGGACATTTTTTGATTTTAGTTTGCTTTTTGAAATTTCAATTT -TCGGCACTTTGAAATGTTCAAAATGTTCATTTGTATAGCAAATTATTTTA -TTAAAATTTTTTTCAAATTTATTACATTTTCAGTGAAAATTGCACAATTT -TTTAAAACTTTCTAAAAACTGCAAAAAAATAATTAGGTTTAAATAATCAA -ATCAATAATTTTTTAAAGGATTAAAATAAAATTATAGTTATTACAAATTA -TTTAAAAGATGTATACTTAAAAACTACTATTTATGTTTTGATTTTTACTC -GAAAATCCAGAAATTTTAAGTTTTCGAGAAAACTTTTTAAATTTGTTTTT -AAAAGAGGTTTATATAAATATAATGAACCCAAACTTGAAAGTGCGAAAAT -GTACTTAAAAGAGTCCAAAATAAGCAAATATCATCACGAAAAGCTCCGAA -CGTTTTTAAGTTTTTCGAAATGTTCAGTTATAGTTTTGGTAAACTGCCAA -CTTTACGAAAAATTCGGGTTTAATTTTCAATGTTTTTATACAAATATTTA -AAACAGAGTAATAGTATAAAATTTGTAAAAAAAAATTTTTTGGTCGGTAT -TTAAAAATGGTGATAGGTGATAGGGCCATTTTTGACAGTAAAAAAAACTT -TTATAATTGTTTTACATTTTACCAACATAGGAGCTGCCTTAAAAAATATC -TAAAGGCTTGGGGTTTTGCCCTACAGTCCCAAACTACCAAATATAAATGT -AAAATTTTTATAAAAATGTTCAAAATTTTTAATGATTAAAAAAATTTGCG -AAACTTAATCAAAATGCCGAATAATTGTTTCATTCCCGCGATTTTTTAAT -AATAATTTTTTTGTATAATTTTTGCATTTAGTGGCGTCATTTGTTTACAT -GTTGTGTTTTTCGGCAATATTAATAGAGGTTTTCAGAGATTTTCTAGTTT -TTGAAGCACATTTTGCCTTGTTCCCGTAAAGAAAACTTGATAATTGGAAA -GAAATTTGGCAAAACGGCGAAATTGACCAAATTGACCAAAAAAGTTAACA -AACTGTATTTAAAAATAAATTATTAAGCAAAGTAAAAACAAAGAAAACCC -ACATAAATGTCAAAAATGACGTCACTCATTTGAGCTGAAATTCAAAAAAG -AATTCGGTCCTTCTTTTTTTTTTTCAAAACAAATTTTTCTTAAATCATAA -AAAACATATTATAATTTTATGACTTTTCTGACAGTTATATTTGGAATAGT -GGGACATTTACAAGGGAAGTCGAAAAACTGAACTCCGGACTTTGACATGC -TATAGTTATTTTTCGATAAAAGAGTGAAAATAATGATCCCTCCAAAAAAT -TTTGCTGCCGCGGACCAGGTTCAGCAAAGTTATGACGTTTTGAAAGTGCC -GAAAAAAATTCCTTGACCAACCCAAGCAAAAAAAAACTTTCAAATTTTCA -AAAAAAAAATTCTGAAAGTTGATAAAAACTATTGTAACTTATTCAAAAAT -GTGAAAAACGTATATCATGCACGTTTTTTCTCCCCACGGACAAAAAACCA -CATTGCTTGATCAAAATATCTTGAGCAAAATTCTAAAAATTACTTTTTCT -TGTAGATTCATTTATTGGTTTTCTTCAGAGTTATGAGCTAAAACTTGCAT -GGCATATGTTTTTCACTGTTTTGAATAATTTACAAATATTTTTTCCTCTT -TTCAGAATTTTTTTTTTGAAATTTTTGAAATTTTTTAAAAGGGTGTTTCA -GCCACTTTCAAAACGTCATAACTTTGCTGAAGCTGGCCCGCGGCAGCTAA -ATTTTTTTGGAGAGATCGTTATTTTCACTCTTTTATTGAAAAATTACTAT -GACATGTCAAAGTCCGGAGTTCAGTTTTTCGACTTCCCTTGTTAGGGCAA -AAAATACCCACAGACGGTACTCCGCCTAAAATCAAAAAAGTTCCAGCAAC -TCGAGATCACTTTTTTACCATCTCAAATCGTTCGGTTTGTTGGGGGGGGG -GGGGGGGGGGCTTAAAGAAAAACGAAAAAATGAGACACTTGTTAATTTGA -TGGTAACAAGTGAAATGGAGAGAGAAAGAGAGTGTAAATACAAGAAGGGA -ACAAACACTTGAAAATCAAAATTGTCGGAAGGAACTAGGGGGAGGATAAA -ATATTGGAAATTAGGTTTAATAGGATATGTATCTAATCCCGAAGAATATT -ATTAAAATAATCGGTTCAAAGAATCTGAAAAAATCGATAAATGCGTTGTG -TTGTCCTACTTCCGTCCTCTACACAACGTCGTCTTCTTCTTCAGGGCGCA -TTCTTTTGTGTAACAGTGCCCCTTTTCTCTCTTGATGCCACAAAACACTT -TGGCAGTTACGCAATCGAAAGGCGAGGAAAGCAAAACGGGTATCAGATGA -TGATTAAGTGAAACTGGAACTGATAAGTGAGATGGATTGAAATACAGATA -GCCGTAAACTTTTAATAACCTAGAATTTTAGTTATTAAAGGTGTTATGTA -TGTTTCGAAATTTGAAAAGATTTTCTCAATTTTTGAATGAATTATGTTTG -AAGTAATTTAAAATGCCGAATGAAGGGTTTCAATTTTTGTTTTTTTAAAA -AGATTTTTCGTCCGGCCGATTTTTCGCAAAATGTTTTTTAAAATTTGGGT -TTATGTTCTTCTCTTTTTTCATGCCTAAGCCTAAGCTAGGCTTAGGTTTA -GGCTTACTAATCCTAATCCGAAGCATAAGCTTAATCCTAAGCCTAAACCT -CTCCTACTCTTTTAAGCTTAATGAATGCCCTAGCTTCATTTTTTTCATTT -TTCGCAGGTTTTTTTCTCAAAAACTCAAAAGCGATGCTACGAACACCAAA -AATTGGTGGTTCAAAATGTGTGTTTCTATTTTTTTCAAAATTTATTTGAC -TATACAAACCAGCTGACAATTTTCTTCAAAATTCCGTTTTTCTTATCAAA -AATAGTCAATTTTTCATCTAGAAACTTCAAAAAACCGTTACCGTTTCCCT -AAGTTTTGCTATCAGTTCCGTAAATCTTGTACCTTATGTCACATGGCATT -AGAAATATTTCAATTGAACCAATCTTGTTCGCGTGGAGTACAAGTTAAAC -ATTTATGATATGTGGATGGGTGCAATTGCGCTCTATTGAACAAACTATGT -ATCAACAGAACGCGTTAACATTATTTGTACAGGTGGGGAAAAACAGGAAA -AACGACTAGGCAAAACAAAAAGTATATAAGTTTTCTTCTACACGTCTCAT -AAAGGAAATTCAAATTTTTTAGAAAAAGAGCGGGGGGGCGCGATTGCAAA -GGTTTAGACGGCGTTAAGATCTTTGTCGACGAGTGGTTCAGCCGCTGAGA -ATGTGATTGCCGCCGGAATATTGTCCTTCTCGTTGATTGAGTCTTTCGAG -AAGAGCGCCAGAATGACGGGCAGAATGAAGAGACCGTGGAGGAGACCTGG -GAGAATTTTAAAATTTTTGAGTTTCTAGGCCACGAGTGACGTCACTATTA -TGTCCAAGAAGATATTCTAAGGACAAATTTGATGATTGTTCACTACTTTT -TCACTAAAAATCAGCTTGAATCGTAGAAAACAAAGAACTTTCAGAAAATT -TCAGCGCTCACCAATAGCAACGACCAAAAAAACGGTCTTAGCAAAGCACA -CGATTGCATAAGTTGGCACAAAAATCAACGGAAGCATGCATAGGAATGTC -GACAGTCCGGCTTCACACATTGGCATTGCCATTTCTGCCAGACTACTGTA -GACACGTTCTTGTGGAGTGCCACGTGCACGAAAAAAGTTGTAGGCCACGT -GAGCGGTGTAGTCGACCGAGAATCCCGTGGCGAGAAGGACGTCCACTTGG -ATTACCGGGTCCAGGTCGGCACCCCAAAGGGAGAGACCACCGACGAGAAC -TGTAAAAACGATTTTAAAAAAAAGTAACTTTTTCAGATTAAATCCAAGAA -AAAAACATAATTAAAATTTGTTTCAATGGTTTTTTAAAGTGACAATTACT -CATTTTCAGGTTTTAAAAACTTTAACTTGAAAAAAAAAAACATTTTGAGC -TACTTTTGAAAAAGGTTCTATTTTGAATTTCCCATCCAAACTTTTTGAAA -AAATACAAATGATAAAAATAATTGCTTTCTTAAAAAAAAATTGTTAGCAA -CCCTACCGTTCGCTAAAGATCGTTGTCGTTTTTTCTCAGAAAATTTAAAT -ATCCCGCCATATATATTTTCGGAGAATTTCAATTTCTCGAAAAATTGTTT -TCTCTGAAAATTTGAATTTTCCGCCAATAATTTTTCTCAGAAAATTTGAA -AAAAAGGATTAAAAACATGAATTTTCCGCAAAAAATGTTTTCTCAGAGAA -TATGAATGTCCCGCCAAATATATTTTCAGATAATTTTAAAGTCTCGCCAA -AACGTTTTCTTCGAACATTTTAGGATTATGTGTTGAATTTGTAGAATTTT -GATCTTGATTTAAATTTTTTCAGTTTTCAATTGAAAAAAAACTAACCATA -ACAGATACTTGCAATAACAGATGTAATCACAGCAACTGCATTAAAATTTG -CAATAAACACAAAACAAACGATTGCCATACAGACTACCGTAACCGCAATC -GATCCAATTAAGTCAGTGCCAACAGTCAGGATGATACTGAGAATTGCAGA -GTCACAGTCAAAGAGTGTAGCGTTGAATTGACTTTCTTCATGAAGAATTG -TTCGGATATGTTGCATTGCACGTGCTCTTTCTGCCCATTCAGACATTCCT -TTACCGAGAAGTGTCAGACGGAACGCTGTGACAATTGTTCTGAAAATTTG -GAAATTATTCGGATTGAAATTGAAAAGTGTATAGGAATTAAGTTTGAACT -ATTTGAGAAGTTTGTATTTTAAATTTTGCGCTAAGTTGCCTGAAAAAAAA -CTAATTTCGAACTATATACCTACAAATATTTTTCAAAGAGCTCAATATTT -GAATTTCGCGCCTAAAATATTTCGAAAACTTAAAATTTGCGACAAAACTA -TTTAAACTATTTGAGAAATTTGAACTTTTAATTAACATTTGAACTTTGCG -CCAATTTTTTTTTGGAAAATATTAAACTTTTGAAATTCTAGTTGAAAGGA -AATTCAGAAAAATTGAGGATGTAATTTTTTTATATGAAAAACTTTTAGAT -TCGATTTCGCGTCGAAAATTTTTGAATTGTCAAAATTTAAATTTTGACTT -TTGCAAAAAAATGGCGGGAAAGTGAAGTTTCATTAGGAAATTCAAATTTG -ATAGGCGTTTGACTAACTTATTATCATCTCCCATGTGATATTTTACAAGT -GGAGGGTTCCCGATCGCATCCATCCACGTCGGAAGATTATCATAAGATGG -GCGGTATTTTTCTCCAACCAGAGTGGATAAAATATTCATCGTCTTATCAA -AATTCACATATTGCGGAAGAAAAATCAGACTTCGATTGTCTCCACGAATA -CCTGGCACGTGCTCGAGCCGATCCATCATATTGTTGAAAGAGTCGTACTG -AAAATTGAATGGCCTAGTAAGTAAAAATTAGATCATGAACTTACCTCTGC -TTTGATCTCGATATTTGGAGGGTTGTTCACTATTACTGTAATAGGAAAGT -AACGGTTGAAGACTGGCCTGAAAAATGATAAATGCTCAAAAAATACAACT -TTTTTCTTTTAATAACGTAAAAAGTTTTTTAAATCGATAAAATCAATAAA -TCGGCATTTCAACTGTAAACCAAAAATAACAATTATTGATTTTTCTTACA -AAGACCTTAAAAATAAAAAAAAATCAATAAAAATAGCGATTATCTTTCCA -AAAATCTGAAAATCAATTCAAATAATTTTCTTGATCTTTTATGTTAACCT -ATAAATACCAATTATTGATTGTCTGGAAAATCAGTAAAGATTATTGATTT -TTTTGAGAACCTAAAAATCAATAAAACCCAATAAAAAAGTAATGTTTTTT -CAAACGCTTTTTCAAACAAATTCTTGATTTTACTTTCAAAAAACCAACTT -AATATTCGACAACGAATCCACCAGCTTCGAATTTGATGGGAATGCCTTTG -CAGGTTCAAAGGTCGTTTTCATGGTGACTACTCCATAAGTTGTCAACGCA -TACATCCCAAGGAGCACCATAATGCACGCTACACGCCCCTTCACGGAGCA -CACGAAGCTCGAGTACTTGGAGAGCCACGTGTCGGCTCGGGAAATTTTTG -GCTCCGTCTCATTGGCGATGGATTTGTAATCTGGGTCGTTGCAGAGGAAT -ACAATTGGAGCTAGGATCGTATAGGTGAAGATGTAGTCGAGGAGCAAGGC -GAGCGAGGCAGTTAGGCAGAACAAGGACATCTGGAAGAAGAGTTTTATTC -AAGCTAGCCCACGTTTTCAAAAACTGGGCTACGTGCCAAAAAAGGTTACC -TGAGGCGTTGGCGTCAAGAATCCGATTCCAAAAGCAATAATATTGGTAAG -TGAGGTGATTGTAATCGATGGTCCAACATCGACAATCACTTGTTCCAAAC -GGCGAGGTCTGAAAATTGCAATTTCACGATGCTTTTACAATACCCCTACA -GTACTTTTGCAGTTTCTCTACAGCACCCCTGTACAACTACGGTACTTTTA -TTTATTTATATATTTGTTCATCAGGCAACAATCATAATGATACAATTACA -ACAAGGCAGTGAACTTTTACAATACAATGCCCCACCCTCTTTTTCCGTGA -AAACTTACGTGTCAGTAATTGCAATATGATGTTTCCATCTGTGAAGTAGA -ATAAAAGCATCATCAACTCCAATTCCAAGTACCAAAAACGGCGTAACACA -TTGAATAGAGAACGACGGGAAGCCCATCCAACAAATTGCTCCAAACGAGG -CGACAGTTGCAGCCATCGGAGTGAGCAATGATGTGGCAACCAGATAGAAT -GCCATTTTGACAGATGACAGGCGGACAATGACAATGATGACCTGAGTCAG -AAGTAGGAAGAATCCGATTGTCATTAGAGTGGTAGCTTCAATGGCTCCTC -GAATCATTTCACGATTTGCTACTTGGTCACTGAAGATGGTGAACTGAACG -TGCTCGAAGGCAGAGGAGTTTTTGGAAAGTTGGAAGAGCTCGTCGATTGC -GTCCTGGGAAAAGTATAATTAGGAAATGCCGAGTGCTTGCCAGTTTTTTT -TATTATGTAAATTTGCTTCCCAGAATCGCGAAAATTTGATTTCCCGCAGA -AAAGACTGAAATTTAAATTTCTACTAAAAATTGTTCAGATGTTTGTTTTT -AGAAATTTTCTTTAAAGACAAAGATTTGAATTTCCTATTGAAAATAGGTG -AAAATTCAAATTTACTACAAAAAAATTGAGTTTTGTTAAAAACACACTGA -AAAATTGAACTTCCTGATTAAAATTGATTGAAAAATTAGAGGCTCCTAAA -AAATATTGAAAACTCGAAATGTAAATTCAAATTTCCCGTCCAAAAATTGA -CAAAAATATTTGAACTTTCTGCCAGAAACAAGTTAAAAAATCAAAGGTTC -CTCTAATAGTAAAACTGACTCAAAATTAATTGAAAATTGATCAAAAAGCC -GTATGAGTCTTCTAGGCTATTCTCACCTTAAACGCCAATTTTCCTTCTGG -AGTATCAGACCTCGAAAAATACCACAGCACCAAGGATTTGGAGCTGATCC -TCTCGGTCGGTGGTTCTGAAAGTTTCAATATTTTTTCACATTTTTCCAGA -ACTTTTTATAGTTAAAAAAATGAAATTTTAACTGGAAAGTGGCTAAATCA -TAAAAACTATTTTTCAACTTTTCATTTAACATTTCAAAAAAAATCTTACC -AAAATCCGCATTACTCAAGTGAAGTCCCAGGAAAATATCCAGTCCGCTAT -ATGGCATATCCGGATAGGTGAATACACTTGTGGTACCATTGTTTCTCCGC -GTCAAATTCTGAAAATTGCCATGTGGTCGTTGAAGAGTTTTCTAGTCCAC -CACCACCACCACCAAGGGTTTCGGTTTTTCGACTTTTTAGAAAATCGAAA -AATCGAACAATTTTTGAGAAAAACTTACAAAAAGCTGATAATGTTTTTAT -TTTAACTTTTTTCTCCATCATTCATTTTAAGAATATAGATAAATGGGATA -AGACCGTCCAGGTTTCTGTTCAGTTTTCCCTGTTGTTAAATTCATTAAGA -TGTTTGGTCCCCAAAAAACAATGTTTCTTTCATTTTTCGATTTTCAATTT -TTAGATTTTTCGATTTTCACTAAAAACATCGAATAATTGAAAAAATCGAA -AAATGACACCCTAGACCACCACCTACCGCTAACAAGTGAAAGGGGCTGTT -CAAGTCGCAGAGTGGATCGCAATTTTTTCGTCCATCCCCATCTTGGTAGC -CAACTGCCGCCGATAGTCGATTGTCCACAGTATAAATCTGAAATTTTTTA -AATTCCCGCCAGAAAAGTGGGCGTGACGGAGAATCAACTTACGTCTGCCA -GTGCGCCTTCCTGGAGAATACTGGAATTTTCGCGCTTGGCGGTAAAAATA -CAGAATGCTCGTTCCGGATAGATGTCGAGTCCGTAGTATTCCAGCCAGAC -ACGGGTTTCACTGAAAAATGTAAAAAAATTTATAGAAATTTCCGCAAAAA -GCATATATTTAAAATAGGAGTTTTAAAAAAATTAACAAAATAGTTACGAA -CGAAATTTTCATTTGCTTTAAAGTTTTCTTTTTTTTCTTATTTATTTTTG -ATCAAATATTTATTTTGGGTTTTTTAACTTCAAGTGGAATTCCAAAAAAA -TTCAATTTTCTTCCCAGTCAACCAAACATTGACCAAATCACAATAAGAAA -GGGAGAAAGGGAAATCGAATTAGAAAAAGAAAAACATTGCGAAAAAACGT -GTTATTTCTGACTGGTGGAGGAAGGAGGCTTCAAGGTCAGTAGTCACTTA -CTATCCAGCATCTGAATCATCCGGTGAAAAGGCTTTGCGAATATCTGGCT -CTAAACGAATGTGCACAAGTCCTGAACTGAGAACTAGGATGGATAAGATG -CTCACTGAAAATTGTCCAACTTGAAAAATTTCGATTTTTTATGTTTATTA -AATTTTTTCTGGTGTAAAATAGCAGAAAATGCCAAAAAAAAATGTATCAG -ACACAACTTTTTTTCAATTTTTCAAACTTTTCGTTGCAAGACCAAACATA -CAATAACAATTGTCGTTCGAGCGCGTTTTGCCCATGCACCCTTAACGGAG -ATTTTCATCGACTACTCTATAGAGCGCGTTGGTGATTTTGAAAATGAATT -TTTCTTGGAAATTTAAAACTTTTAGAAAGGGATTTTTCTATTTTTTCCAA -AAAATTATATTGAAAAATCAATAAATTAATTATTGATTTTTCAAAACTAT -AGTGATTCTGATTTGAAAAATGAAAAACATTGCTTTTAAAATTATCTGAA -CTCAGTTTTCACGAAAAATCAATAAATCGGTAATCGAAAAACATTCATTT -TTCTATTTTTCTCAATTTTTCGATGTATTTTCCAAGAAAATCGATTAATT -TATCGATTTTTTTTCCAGAATATCTGATCGATTTTTTTATTCATCGGAAA -AGTTCAATTATTTTATTTTTAGGAAATTGTTTTCCAAACTTATATTGGTG -GCCAAGTTTTCCCATTTCGACGACCATAAAGTTACAAAAAACTCACAAAG -TATCGAATAAACCGGATAGGCGGCTAACAGCCGTGCCACGACGGCACTAA -TCACATCCCATCCCATGTGCTGAAAAACTTCGAAATTTTTTTAATATTTC -AGAATTTAAAGCAGCATGCAAACGCGCTCCAACAAAGAAAAATGTTTTTA -AAAAATTGAAATTCAAAACACAAGCACGTGAAGCAGAGAATGCAGAAAAC -AAGACCACTGTCACAAAATTGTAGAAGTGAGGGAGGGAGGGCTATTGCAG -AGGTGACCAACGGGTTTCGGTTTCCAATTTTTCGGACACGGCGCAGAGGA -TTTGAGTCATTATTATTGTGTTTAGAGAGTGTAAGAGAATTAGAGAATTA -GGGATAGATGGGAAACTGTACGTACTTCTGCGAAATGGTGCACTTTTAGG -ATCGGCGGCCTAGAAATTTACATGGTGCTCTAGAAGTCTAATAGATAGCC -TAGATCTTTTTAAGTCCAGAAAATTACTTGGTGGTCTAGAAGTTTTTTTT -GTGACCTAGAAATGCAGTTGGTGGACTATAAATTCACTTGGTGGCCTAGA -AATTCATTTGGTAGCCTAGAAATGTACTTGGTGGCCTAGAAATTAACCTT -GAAGCTTAGAAGTTTGTTTGAAAGCCCAGAAATTCACTTGATTGCCTATG -AATTCACTTGGTGGTCGAGAAATGTTCGTGAAAGCCCAGATATTTACTTG -GTGGTCTAAAACATTTTTCAGTTCAGAAATACATTGGAAAAAATTTCGAT -TGAGAATTATGGCGTGGGATTTCAAGTGGTGACCTAGAAATTTGTCAAGG -GACTGAGGAATTCATTTGGCGTCTGGAAATTTTTTTGGTGACCTAGAAAT -TTATTTGGTGACCTGAAAATTCATTTCATGACCAGTGAATTTACTTGGTG -GTCTAAAAAGTCTCATGGTGCCGGTCTTAAAGTCTCATGTGTTGCAAAAA -TTATACTACAATATTTAACTTTGAAATAAAAATTCAGCGGGTCTAGATTT -GCAAGAAAAATCTGTATTTTCTCAATTTTTTTCAGGTTTTTGATTAGTTA -AAAAAAATCGAAATGATTGTTTAGAACTGCAGAGAAAAAACAATTTTGTA -TCTCCGGAATGCGCTATTCTGGGGAGTCAGATTTACTGGATTTTACTTTT -TTTCCTGCAATTCCAATGCAAAATAAGGTAAAAAAATGAGAAAACTGGCG -GAACACGGCGGTACACACAGGGGCAACTTGAATGTAAGGCAGGTGTTTAG -TAAGTGGACCGAGGGGACGGCAAAAGCTGGTATTTTTCCTGTGTCGATGG -GGGACAGTAGTAGCACACAAGAAACAAGTATTTTGATGATAATACGAATA -AGAAAAAGAAAAAGGCAGCAAAAAAGTGTGTGGCAGACCACCACCGTCCA -TCGGATTAGGGAGCGGAGGCAAACTCGCTCTACCGAACAGAGGGGTGTCC -GTTTCCCCCAAAATCCTCTGAATGTGACGTCATTGTTGGGGCGGCGGGGC -GGCGTCCAAAAATTAGTGATTTTTTTTTTGGTATTTTGGAAAAAAAGGAA -AAAATCGAGAAACATTTTTTTGTGTTTTTGGGGAGTTTGTCATGTGAAAT -TTGAAAATGTTGGGTACAATCAAAAAATTGTTTTGGTTTTTATAATTTTA -ATAGGAATTTTTAAAAATCTGAATCGTTTTTCTTTGAAAAATCAAAAAAC -AACAAAACATCCGCTTTTTTTAAAAATTGTTTGTTAAAAAAATAGAAATC -GGAAAACAAAATTTTCCGATCTTCTCGAAATTCACAAACTCATAAAAAAA -TCGAAATCCCCTTGTACCCCACCCTAGTTCACTGAAGCGCGTTTGCTTTC -TGGCCAAAGGCATGGAGGGAGGCGGGCACCTCCCTTTTGCAAAATTGACC -TAAATAAAGGTGATATGCCAGTGATAAGGAACGGTTTAATGATCCGAAAC -CGCCAAAAGTGCATAGTTTCTGCGTTAAAAAAAGTGACAACTGACATCAC -ACGGAGGCTACAAAAGGGGACTCACAAGTTTGCCGGAGAGGAATGAAAAT -TGGAAATTTGTACGGGTAAGGGGATCAATGTTCAGTGGTGGTCGCGAGGG -AGGACGGAGGGAAAAAGTGGAATTAGAATTGAATGGGAAATTGGTGGCAA -AACGGTAAACACTTCTTATTATCCAAATGCATGAGGGATGGAGAAAACTG -GAAACCTTTGCAGAATTTTGGAGGGGGTGATGAAAAGTATTGGCAACACC -TTGGTGGCCGAGAATTTTAAATTGATGATCTGGACTAAAAATTCAGATGA -TGGCCGAGTTTTTCATATTCGCACCAATACAAATGATGGCCTAGAAAGTT -TGGAGCGACCTAATTTTTCAAATTTACAAATAGATCTTTAATGTTTCATC -GACAAGGGATGTGAACTAGAAATTAAGATGGTGGCCTAGAATTATATTTA -TGGTTCGTCAAGAGGTGGCCTAACTCTTCAAATTCACGAAATATTCTAAA -GTTTAAATTTCCTTTAATTAGTATTGTGGACTAAAAGTCGAGATAATGAC -CGAACTTTTCATAAGCTCTCCACATCAATTGGTGGCCTTGAAATTCCGAC -ATGGCCGAATTTTCGTAAGTCGACCCCAGTGGTGGCCGAGCCAAAAAACA -TAATTCCGCAAACTCTTACATTTTAATATATGAGGGAAGCCAGAAGTGCG -TGCCACATTATTTTTACATTTTTGACTATCGTGCCAAAATTCCAAAATCC -TCAAAAATTTGAATTTCGCGGCACAATTTCGGGTTTTGAATATCTTTTTT -TTAGTGTGATGTAGGGCGTACTTTCCAATTTGCATAAAATAAAAAATCAA -CAAAAAGCCATACATAATGTCAAATGGTCAGTTGCAAAGAAAACAAACCT -GCGGTCAGGATGGCCGAACCAGAAAAATCAATTCAAGCTTTCGATTTCGC -CCGAAAAAAATGAGGATCAGAATAAGAAGGTGTCGCCTATTAGAGATTGG -AGGATGTTGAGAAAAAGAGAATAGTGGAGGAAAATGATGAGGTAGAACGG -AATTGAACATGCAAATAAAATGAATGTATTGGGTAGGAGAGGGAAGGTAA -CACTGTGTGTTCTGTGTTTGGAAAAGGATTGAAGTGGTGGACAAAAGGAC -TCTTGGTTTAATACTACTTGCCTGTTCTGATCAGGTTCAGAGGTATTTCA -GCAATAGCTTTTGTATTTTGCATTTTGTCTTTTTAAGTACTATTATTTAT -CAAATCCTTTTTTGTAACTTTGAATCTGATGTCAAACTTGTGGAAAGTTT -GAACTCGAAGAAATTGCTCAAAAAGTAAAATTTGCGCCCAATTTTTCGAA -TTTTTTTCGTTGTTTCTTTTTAATTTCAAAACACAAATCTTCGCCAAAAC -ATTGTTACAAAATTAACATTTTAATTTTTAAACAGCTGCTAAAGCACTAC -AAATGTGAAATTGATGCCTAAAATTGGAGAAAAATGGAGTTTTTCAAAAA -AAATTGAAATAAGAAAGTTTGGAAACTAAATGTCTATATATGGGGAAAAT -GCTATTTCGAATCTCGCGTTTTTTTAAGTTGGGCATCTCCAAAATATGAA -AAAAATACAAAAAAAAACTCCAAAAGATAATGTTGAATTTTTTCAAAACC -CTCACCAAGAAGTATGTTTTAATAAACAAAAATTTGAATTTCTTTTCGAA -TTTTTTTCAAAATTCGTAATATAAGATACCTGTCACACTTATTTTCAAGC -TAACAGGAAAAAATAAATGTTGAACTTTATTTAATGATAAAAATAGTTTG -TAGAAAATTCGTAAATTTAAAAAAATTCAAATTCTACCAAAATATATTAG -TTTTTCACCTGGAACTAAAAACATTTGAAGAATTTTTTTTAGCTTATATA -ACACTACAACCGCAACACATTTTTGTGAGAACATGTCTAGCCTCTGTCAA -ACAGTTTTCCGGTATCTTCGTGTGTGTGTTTGCTAGTGTTCAATAGATCT -TCCTGTAAAAAATCGAAAATTTCCGATTATATGCTTTTTATGTGTTTGAT -TCTATAAGCGTTTAGATTGTTATCAGATGATTTGACATTATTCGCAACAA -TTTTTTTAAATCCGAATGTTTTTCGAATTTCTATTTTTTATAATTTTCCA -GACAGTTTAAGAGCAAAGTTGAAGTTATTTTTTCCTATCAAAAAATGCAG -GAATAAATACTACCTCAATTTTTGCAAGAAAAAAAATTTACAGTAGTTTT -TTTGCTGGAAACTAAATTCCGCAGAATTTGAAAAATACTGAAAGGGTTTT -TTTCCTTTTTTAATTTGTACTCCCTACAGTACCCCTTATTTTTGAATTAC -AATTTGATGTTCGTACCTAAAATTGACACTTTTTCTCTAGTATATTTCCG -AATTCAATTCATAATTATCAGTTGAAACTAGACCCCACCAAAATCACAAA -TTGATAAGAAAACGTAGAAAGGGGAAAGCACGTGTAGCCTACAACAATAT -TAACTGTTTTCAATTTATTATTTTTATTTTCCAAGGGTTTTATTCTTAAT -TCTATTCACAATTTTTCGAAAAATATTCAGCAAAAAAGTATGCTTTCTGA -CTATATTATCAGTATAAAGTGAGTTTTTTGTGAGCATTAAAAAAATCAAT -TTTTTGTGGCCTAGCTTTGCATTTAGTGGCCTAAAAAATTAAATGCATTT -CTTCCACGTTTTCCGTAAAAAAGACAGTGGAAGAGTTTTTATCCGTACTT -GGGCAGGCTTAATATTTTGTGGCCAAATTTTTCGCGTGGTGCCTAGAAAC -TTTTTTTACGTTTTTTCTCGGAAACTTATTTTTTTCCATGGCCGTGAACG -AGTTTTGTTTAAATTTCAGGTCGCTTTCAATATTTTGATGACTAGTTTTT -TAAAAAATATTTTCCTGCTTTTAGTAATGCTTGGCCAAACGTCTTCACGT -GGTCGAGCTTTTCATTTGATGCCCTAGGATTTTTAACCTGTCGTTCTCTA -GACAATAACTACCGTGGACTCGAAAGTTCTACGCCACGTTTTAAATATTT -GTAGCCTAGAAATCAAAGTCACTTCCCGAGTGGCCTACGTTTCCCTGAGC -ATAACTAGTCCTCGAGAAGTCCAGTCGACCGTTACTGTCTACAAGATTAT -CGGCAAGATAATCCGTTTCGATTTCGATGTCCACTCATTCACTAGTCGTT -TTGTCGTCGTTGCAACAATGTGGAAATTACTAAATTTTGGCATTTTTAAA -GATTTTTAAACACATTTTTTCTGTCGGAAACTGAGAACCGCAGTTTGTAG -AGAAAAAAATTGCATTTACTTTCCTGATTGAAAAATCTTTGTTAGCGTTC -TTCCCCGCTGATTTATGTACCGTTTAAGTTTCAGCTGAGAGACAGCGTGG -GATTGGGGGAGACGCAGACAGCGAGTGAGTTTGCGTCTCCCTCTCCCTCC -CACTCTCTCATTTGCAAGTTTTGAGTTTTCATAACTCGGAGAGTGGAGCT -ATCGAAAAATTCAAAAAAAAAAACAAAAAATTAAAATAAAAAAATTCTAC -AAATTTTTAGTTGCTAATTTTTTGATAGCGCTGCTAGGTTTTGAGATAAT -GACGTTTTTAACTCTACCTCGACTTTTTGTGTGTTACCAAGTTAGTATTC -CTCTGACAAACCGCATGACCTCACCTCATTGTAGCCTCTTTCGAAATCTG -TAAACTTTACAACTCATGTTTCCTAGTGATATCCGCCTCCATCTCAGCTG -TTCTCTTTCCATCTTCTCCTAACTGTTTTCGTCTATTTTAAAAATGAGAT -TATTCGGATTTCTTACTAGTTCCGCTCAAAAACCAATAAATTTATTTTGT -AGAGCGAAAAATTCTACACATTTTTGTAGTCAACAAGTTTTTCAATGCAC -CTCTCCTCGCTGAGTTTTTAAGATCTATAATTTGATAGTAAAAATATTTT -TGACAGTAGCTTTTGTTTTAGAGATAATCAGGATTTCGCAAGCCACGGAC -TTCAGTCTAGCCTCATTTCGAAAGTTGTGAACTCTGCAAGTCATGTTGAC -TAATAGTATCCCTCTCCAGCTGTTCTTTCTCCTCCTTCACTCAAGTGGTG -ATCGTTTTCTCACTTCTCTCGCTTTTTCGCCCCTCTCTGTAGTGTCCAGA -GAGTATCAGTTATGTCTCCAGGACGCCGTGTGACGTCATCGCTGACAAGC -CGTAGCCTACAGCGCCCGGCAGAAGACCTGTTTTGACATGCCATTCGTGA -AAAATTTAGATTAGCCCTCTCACACTCTACATGTCTCCATGTTTTTTCAC -ACAAACTATTTTTTTGAAGAAATATCTTTAAAACTTTGCTTTGTCTATAA -TTGATAGCATAAAAGGTCCAATTTTTTCCGTAGCTCAGCAAATGGCGTAA -CTAAATGGTGTGAAATGTTTGATAGGGGACCGGTTTTTGGCTGAAATCTC -AGAAAAAATGGAGCCCTGCCTGCATAGAGACCCCTTTCGACTGATGACGT -CACAGAGTAAGGTGTCACATCACACCATTCTTATTTCTCTATTTGAGGTC -CAATTAGACTAGGGGGTCAGCGTGCTCTCGATTCCTAGCCGATGACGTCA -CATATTTGCCATTCACAACTTTCTAAACTTCAAACATTTTTTAATTTTTC -CCAAATTTCAGCCGATTCCTAATGGGAGGATTCCTCTCCAAACATCACCA -CCTCACTGCAGTCCACGATGCCACGTGTGGCCCAATAAAAGGTGTCGGAT -ATGAGCAAGTAGGTCATAAATTGAGCTCTCACTAAGTTAAGATGAAAGAA -AATTATTTAGGAAGACGGTTCAGTGGTGGAGGGGTTCCTTGGAATCCCGT -ACGCCGAGCCACCAATTGGAGCCTTGCGCTTTAAGAAGCCAGTTGCTCAT -CGGAAATGGACGGAGCCGCTGGATTGTGTTAGGTTCGGGCCAAGGAGTCC -GCAAAATGATGAGCTACTAGGGCAGGTGAGGCGCCTAAATCAGAGCAAAA -CTCTGTCATTTTTATAATGTTCAGTTTGTGAACACAGTCGGGAAAAGTGA -GGAGCACTGTCTCAGCCTGAACGTATTCACTCCAAAGTGGGAGTCAAATG -AATGGCCCGACGGCTTCCCAGTGATGGTCTTCATCCATGGCGGAGGCTTC -GCTGTTCACTCATCCAGCAACTACGGCTGCGCTTCCATCGCACGAAACCT -TTGCACCAAGGACGTCGTCGTCGTGACCATTAACTACCGCCTCGGCGTCC -TTGGATTCTTCACCACCGGCGACGAAGTGTGCCGTGGAAACCTTGGACTT -TGGGATCAGACTGCCGCACTCGAGTGGGTTCAGGAGAACATTCAAAGCTT -CCGAGGCGACCCTGATAATGTTACAATCTTTGGCCAAAGTGCAGGTGGAG -CATCTGTGGATCTGCTTTGCCTATCGCCGCACTCGAGGGGATTGTTCAAT -CGGGCGATTCCGATGGCAGGGAATGGAGAATGTGATTTTGCGATGCGGAC -TAGTGAGCAGCAGGCTCAGTTGTCGAGGGAGTTTGCGAGATACCTTGGAT -GGGAAGGAGATGGTAAGTGATTGAAATGTCGCTTAGTCGTAAGATGTTAG -AAATTGCATTGTCATCAGAGTTGGATTGAGTTTGTTTAAGCGTAATTTTT -ACTAAAGCCCATCGAAGCAGTTCCGTTGGCTACTTGGCCTACCACACTCA -GCCTGGGAGCCCGTCATAGCAAGGCTCAAGACATTTCCTATGTAGTTATT -TCTATTGCAAATTTAATACGGTGAATTTTCCAAAAATCTTGACGTATCCG -AATGAAAAACCAGTGCAAACTTGTTGAGTAATATCCCTAATTACTTCATT -CCAGACAACGACAGTGAAGACCTTCTCCAATTCATCGACCAGCAACCCCT -TTACAAGATCGAGATGGGCATAAACCCGAAAAGAGGATTCAAGCATTCCC -AGGCTGGAAGCTTGTATTTTGTGCCAAACTTTGACGGCGACTTCTTCCCG -AAACCACTTAACCAGCTTAGAAAAGAAGCTCCAAAGATGCAAATAATGAC -AGGAACCACCAAGTACGAGGGTCTATTTTTCAGTGAGTTTAAACTTCTGA -AAATTTTCTGAAAATTTTCTATTATAGTCGCCCTCGGTGCCTTATCGAAA -AATCCGGAAGGAATTAAAAAGTTCATGGGAAGAATCTTTAAAGAATGCGA -CTATGGAGAGCGTGCTGACGATGTGCTGCAGATGGTCTACGACTTTTATT -TCAAGGGGGTACATCCCAAGGATCATGAGAAGAATATGCATCAGATTGTG -AAGGTAGGTGGCATAGAGCCTACAGGGCCATCAGCCAGTGTTTCAGTTCA -TTGGAGACTATTCTATCAACTATGGTACATACCGTCTGGCTAACATTATG -ACGGATCTTCAACACGATGTATACTTCTATCAGTTTGACTATCATAACTC -TGCAGGATTCGGAGTGTTCCGGTGGCTTCTTCCGTTTTTGGGTGAGTTTA -GGCAGGATGGGTCAGATTTTCTAAGCTCTGGGCCACATGCTTTTTGGTAG -ATCAGTTTTAGAAATTCTAAGCTAGAAATGTATGAGTATGGTAAAACTTT -TAAATCAGATTGAAAAGAAATTTTCCAAATTATAGGACTTTGTAAAAACT -CCGATTGCTTAGGCTACTTCATCCGTACGACCGTAACCTGTCACTAACGA -TTCTAATAGTGTACCTTATCTGAACAGTATTGCCGAACTAATTGAAATTA -ATCCTGAGACTCCGAGATTACCTAGCGGTCCCTATCGCTGTGGCCCAGTG -CCCATTTGGCTCAATATCCAATTTTCAGGCTCCACACATTGCACGGAAAT -GAGATATGTGCTCGGCAAAGGAATAATCTCGAAATTCCGACCAAATGATA -ATGATAAGAAGATGCTTCACGTTATGACAACTTATTTTACAAATTTTGCA -AAATATGGGTACTTTTTTTGTGAACACTTTCGAAAAAAATTAAGCTGCTT -TCAGAAACCCTAATGGAGAAAACCAGGAGACTGGAGAATGGCAAAAGCAC -GACTCGGCACACCCGTTCCGCCATTTCAAGATTGATCTGGACGATTCTGA -AATGGTTGAGGACTATCAGGAACGGAGAGCCGAGCTATGGGATAAACTGA -GAGCATTAAATGTTAGCAGGGCTCAGATGTGAAATTGCTGTTATTTTTAC -TTGATTGATTTTACGGGTTTATAAATATTTTTGATTTGTTATATATTTAT -TTTTTCTGAGTTACATACATACATCAAGAAACATTTCAATATCTTGCAAT -CTAACTGAATTTTATTTTATAATCAGTTATTTTTATTAATCCTGTACTAT -GCCAAAAAATCTAACTTGTTTGAATCAATAACTCAACTACCAATCCTTAA -CACAAAAACCAACACGGTTCTACCCAAACGATGTATAAGCTGGCACCATT -ATAAATTATCCGCATACTTTTTCAAACAAAGGAAAAAGTCGGAAGCTTTC -CATACATTCAACTCTATTATACTTTCCCCTTTCCATGGATGTGCTTTTTG -TGTGAAACCAAAACTTAACCGCCAGAAAGCTTTTTACATAATCTATAACA -GAGGTGGGCGGCAATTGCCGTTCGGCGAACATTCTGATTTTTTGGAAATT -TTCATTTTTGGCAAATTGCCGATCTGCCGTTTGCCGGATATCAATTTGCC -GGAAGTGTTTAGAGGGTTCTTTTTACGACGGAAACACTTAAAACTGTGCC -TTTTTGAAAATATTTAATTTTTATTCTTTTTTTCGGCAAATTTGCCGGTT -TGCCCAATTTGGCAATTCGCCGGAAATTTCAATTTCGGCAGTCTGCCAAT -TTGCCAATTTTCAGAAAAAAAATTTCGACGCCCATCCCTGATGCATACCG -TTTTTGACTCAATTTAAATAGTACACAACCTTCCACATTAATGTAGTAAC -GGTAAGGTTGCCTAATTTGTTTGAACTTTGAAAGCCGCGCACAGCACCTA -CAGTAATCAATCTCCTTAAAGAGTGTTTTCGCAATACCAAACATAGGAGT -TTGTAGAAACATGAAACCGAAGGACAACACATTTTGAAACAGGTGTCACA -TTTATGTATCTGCACTTGATAGCTATGCAGTCAATGAAGCATAACGAGAG -ACATGTGTTCATTCCCGAATGGAGTCAATGAGTCATAAGGTTCTTCGTTC -TCATTTTATTATTACAGGCTTGGGTCCCACATTGATTCATATTATACTTA -CTTTTCAATTCATTGTTTTTTTGTGATTTTTTTTCATTAGAATAGTATTA -TAATAATATTCTTCTAATAATGACAATCGAAATAGTTGCAAGTAGAATAA -CGATTTGTACAGTGATGCCCATAATTGTGCATGTTTATAATGTTCTAATA -TTTCAACGCAATCATGACACAAGCTCTATAGCATCTCGTGAGTTCATTTT -TGGTGAGGTTTCAAAAAAAAAATCCTCTTGCTCAAGAGCCATACGTTTTC -AGTTAAAAATTTCTTTAATAAAATATAATGCTCATTTCTCGAACGTTACC -TGTTAATGTTAACTGCGCCTACCATGTCCGTTCAATCCCACTAGTCAGTT -ATTCTTTGCAATTAAATGATAAACTTTAATGTCTAAATCTCTTCATGGAT -ATCTCCATCTCAACCATCCATCGTTTTTTATCAACCATCATCATTCTCGT -GTTCTCGTTCTCGGGGTCGCCTCCGCTTCTTCATCATCATCACCACGACC -ATTCAAATCGTTCATCTTCCTAATCGACATATTCCCGCATTAAATTTCTC -TGTTGGGTATCAATGACTACCCAAAAACGGTCGCATTTTCTGAAAAAATG -GGAAAATTGATTCCTAATTTATTGGTTTTGACCGGTTGTAACTAACCCCC -ACACACTGTTTTTTGATACTACCTACGTCTATTTTCGGCTAATTTTAAGA -AGTCAATGATTCCTAATTGTCTTTTTTGTTATTTTCTGTGAAGTGAAGTA -TCAAGATAAAATCAGTTTGCGTCTCGCTTCGATTTTCTCATTTTTCGAAT -GCTATTCCCCCGTAGCAATATGGTTTTGTTATTACACATTTGCACTTTTT -TGCTACCCTCCCAATTCTGACTCACACTTGCATTCCGGAGACTGCCTGAG -AGTTAAAACTAAACATAATTGTTATATAATAAATGTCAAAGTTTTTCGCA -AGCTGAAAATTTTTGCCAGCTGAATTATTCCTCCTTCAAAGGAGCATAAG -TCTAAAAATGCTAGAGTTATTGGAAAGTTGCTAATTACAAGTTATAGAGT -TTAAAATTTTGAGTAGTTTCTCGATTTACAATTTTTGAAGCTTTATTCCT -TGCTCAAACTCGAGCAATGAGAGGCAGTGGGGACTCCCCCACTGGGGAGG -GGAGAACCTTGTCAACCCACTAGGGAGGGGAGAACCTTGTCAACTTTAAA -GCCACGTCCCTCTGCAGGGAAAAGATCTATCAAAAGGTTATCAACTAACA -AAATGTGCAAAATTATACGCTCTACATTTTTGTAGTTAACCGTTTTCTGT -TATCACAGTTAGTTTTTGTGAAACCATCAAATCTGTAGTTTCTCCATTAT -TATTATCACCTAACAGTATTATTATCAGCTGATAAGTATCCTTTCTTTTT -GGATAATCCCCTTGTAAAGGAATATACCATTGTCTTCATCTCCTTTTTCT -GTGTCTACCCTTATCTTTGGGTCGCCATCTGCCTCTCCTCCCCGCATATC -CCCTCTTATATCTTCAGAAATTCAGGTTCCAAGGAATATTCCGAAAAATT -TTGTTTGGAAGGTGACATGTCCGATCAATCGCTGGTCCAGAAGGTTCCAC -TACTTGGCTCGTGTTCTCAGGTGAGTATGCGCCTTTAAACATTGAGGGTA -CTGTATGCACCATAACGCAAAATTGCAGATTTTATAGTGGGGCAGGTTTG -TTCTACAGATAACCGTAAAATTTTTATGTCCCTTTAAAAGAAACTCGTCC -GAAAAATTGATAATTTACGAGGAAAACAACTTTTAAAAATGTTTTTTTAC -TTCAAACGATGCTCTATTGTGCCGAATCGCTTGTTGTTTAGCGGCGTTTC -TAAATATTTATTTACTTATCGAAAATCTTTTTTTTCATATTTATAACTGT -TTAAACAAAATCGATAATATTTATTTTTTCTGAAACTATTCTGAAAATTT -TGAATTTCCCGCCAAAAAAATTTCGGAAAATTTTGATTTTTTTTGGCATA -TTATTTTCTGATAGAATTTGAATTTTTGGCCAAAGAAATTCTGAAAGTTT -TGAATTTCCCGCAAAAATTGTATTTCTGAGAGAATTTGAATTTCTTGCAA -TTTTTCTGTGAAAAAACAATTGAAAATAAACGTGGTCGCCAATACGAGAA -AACTCGGCCACCGATTTTTTTTTCGCAAATTTTGCATTCGTTGCTGCATG -ACTGCCAAAAATTGGCGGCCGAGTTTTTTTATTCTACAGGGTTAAATTTC -ACAGATGGCCGAGTTTTCTCAGTTTCACGGTCACAGGCTTCTAGTTTATT -ATATTCATCTCCGCGGCGCGCGCACCGTACTTTCTCCTTCTCTACTCTCT -CGTTGTTCAATCCCTCTCTCGGATCCAACCAACGCCCTCTGCGATTGTGT -CATCATCGATTTGTTATCTCAAATTCCGTTTGGCTTTTCAATAACCGTGC -CTTATTGTCTCAGGAATTTCAAATTTCCGGTCAACAATTCGGATTATTAA -CCATTTCGAAAAAAATCCTTTAAATTATTTTTATTATAATGAAAAACGTG -CGATTTTTTCTCGCTGGTGGGTCCTGGCACGACTGAAACTTTTCAGCTAC -TGTACCCAGCATTGCTTTAGAATTTAAATTTTTGCCGGCAAATTAGAACT -GCAAGATTTTTTTGTTAGTTTTTAATTATAATTGTTTGGGAAAAATTACA -AACTTTAAAAAAACCTACCGTACTCCCAAGTACTGCAGCCAAGAAATAAT -TTGTTTCGTGCCAAGACCCATTTTTCCTTTAAGAACTAGAAACCTCCCTT -GTTTACAACTGTACTTAAAATCGAATTAGTTTGTTCGCTAAACATGTTTT -TCGCGCGAAATTTCGCTTTACTTTCGAAAAATGTTTTTCTTCATTTTCGT -CGGCATGCGCCTTTAAACTACTGTTTTTGAAACTTTCGAATGATAGAAAA -AATTAGAAAATATTTTTAATTTTCGCTTTCGCCGGAATATTCGAAAATTC -GAAAAAAAAACTAAATTTCATGGATTCTCAGTTAAAATTCACGGAAATTA -AAACTTGCGTAGCGAGACCTCAACGATCACATTACCTATGCGCCTTTAAA -GCTACCGTAACCCTATTTTTAATTAAAAAAAAAAGAATTTCCTTTTAAAA -TCGCCGGATTTTCTCCGTCTCTTTTCCCATCTTTTTTCATCTTCGGTACC -AATCATATGTAGGTGAGAATATCTCTGCACCCTCCAACGAACCCAACACT -ATATCGCTGCGCACCGTCCTTCAACGATGTCATCTTCCTCCTACTTCGAC -CCCCTCAATTTATTTCCGATTTCCTCTGATTTATTGATCTTTTTTCCTCT -TTTTCATCATTTCTACGTTCTATAAAGCGAGGTTTATAGCCAAATGGACT -CATTCAAACGATTACAATCCAAAGTTTTCACGTCAGTGAGCTCACTGCGA -AAATCTGAAGAGAATGTGAGTAAAAAGCGGCGGAAGACGTAAAACATCTG -AAATATTTTTAAAAAAATTTGTTAAAAGCCCCACATTTTCGAGATAAATC -TAAATTTTCAAGTTTGTAGCAGCAAATTAAGCAAAGATATATATTTCAGG -CCGACGAGCAGACATACAACACAAAACGATGCTTCATCCACGTCAATCAC -TTATCGATCGCGATCGCCGTCGTCGAGCTCTCGATTTTAATTTATCAGGT -AATTTGTTTGCCTGCAACTCAGACCAACGCTTAGTCGTCTAATTAGATTT -CAACCATATTTGATTAGAAACTGAGCAAATATAATGGGGACATAATTAAT -AGGCTTATGGATTTTATTTGATTTGACAATATGGATTTTCTAACCAAATA -TGGTTAAAATCTAATCCAATATGGAGCAAATCTAATCAAATATGGCTGAG -ATCGTGCCATATTGGATTAGATTTCGACCATATTGGATTAGATTTGTTTT -CTAATGAAATATGGAGAAAATCTAATCTAACATGGATTTCTAATCTAATA -TGGAGCAAATATAATGCAATATGGATTTTCTAAAAAATATGGTTGAAATC -TCGTTGAATATGGTTGAAATCTAATTAGACGACTAAGCGTTTATCTGAGA -AACTGGAAAAACCTAAAAAAAATCTGAAAATTTTCAGTTTTGTGTGGAAA -AAATCAATGAAAAACTCAATCCTACAGTAATTTAAAAATTCTTTTTCACT -AAAAAAATCAGTTCCCATTGAAAAAACAAACTGAAAATCAATTATTTCAG -CTCTCAAATGGCAGTTGGGGCAATTCGGAGCACTCGACCGTCTTCACAAT -CGCCGCCTTGCTCTTTCTGCTCGTCATTTTTCTGCTTTTCGTCGCGATTT -TCTACCAAATCGGAAATCTTCTCATCCCGCACATCGTCATGCAGATTCTG -CTCGTTTTGTGCTTCCTGGGACTCACATGTGCGACGCTTTATGCGCTTTT -CCACGGTGCCACGTTTCAGTTGCTCGTCGTGGTTACAAATCCGCAAATCG -CCGCTGATTCCATGGTAAGTGTGGTAAAAAATGAAATTTGTTTCCTTGGG -AAATTCCTTCTTTTTCCTCAATTTTTCCTCATTTTTTTGCTTCCAAAAAA -AAGACCCATTTTGCGAAAAAAATTTTTTTTTTTCATTAATATATGTATTT -TAAATTTTCCAGACAATTCTCCCGGCGCCAATGATCACAACAAACGTGGT -TTCCGGATTCCTAGTGGGCCTTCTCGTCATTTTCGCAGTCTCCTACTTGC -TCATCGCTGTGCTGAATGTGAGCTTTTCCCATGGCGAGACCCATGTAACT -TTAATTTTTGCAGACCTGGTGCATGTACGTCGTCATCGATAGTTACCAGC -TTTTGAAGAGCCAGAAACTTCAATCTCGTACTCCGTCGGTCGAGGAGTAT -TGTGCGCCGAAGACGATTCAACTCTCACTATACCCCAATCAAATCGTTCA -GGCCACCGATTTTTAGTCTATATTTTAGACCATTTGTTGAATTTTTCTCG -AAAAAATCCGGTAAATTTTTGTGTATATATGTCCCGAAATTCTTCACTTT -TATCACATGTGTCAGGCTTTAATTTTTTCATACTTTATTTTCGAATTCTG -TACAAAAATCTTTGATATATTCTATTTATTCTTCTCAATTAATAATCACA -CGATCCATCTTTCCACCCGTCTCGCCACCTTTGCATCACATCTCGACACT -CGAACTTTGGTTTTCCGGTTTTTTCGTTGACTTTATTGTGTAGCTGGCAC -ATCCATAGCGCAAACGCCTCGCGGCTTTCCACTTTTGGCGGCGATTCTTT -CAGATCTTTTCGGAGATCTTTGGCGCAGAAATCGCAGGGATATGTCTGAA -AAATTTAGGCGTTTTTGTGGGAATCTTGAGCTTATTAGCTAACTTTTCCT -AGAATAGACATGAAACTTCTGGCTCGATCCTTATCCTCGTCGGTAGGCTT -TTCCGGGTAGTAAACCGACATTGTGTGTAGCAAATTCCACGTGGATCTGC -CTGAAATTTGAAATTTTTGGTGGAAATTTGAATTAAAAGCGAACCGAGCT -CATCCTTGTCTACTGGACATCCGTGCAACTTCGCTCCTGTGCTCGTGCTC -GGCGTCGTCTCGGATTCTGCAAAGAACTAAAATAATTGAGATTTTTTGCT -CTGGAAATCTAGGGAAATCACCTTTTTTCTTTATTTTTTCAGCCATTTCT -CTGCCTTTTTTCATCATATCCTCTACACTGACGCATGCACGACACGGCTT -TCCATCTGGACCGATTTCCATTCTGAAATTAATTTTTAAACTTGGTTTTC -GTTTCGTCAGTTTTAGAAGCCGTTTTAGGGCGTAAACTTATGAAACTATA -CATAGTCTACGACAAATCTATAGAAATGCATTAAAAATAGGTCAAAAATG -TGAGAAATTGCGCAAAAAATGATGCAAAAACGAAAAAAAATTAACTAAAA -ACAAGAAATGCAAGTGCGCTCCACTGACACGCGTTAGAGAGCGTAGACGC -AGAGAAATCTCGAGATGAGGGAAATCGTGGCGCGCGGGAATCAAGCTTTT -TTGAATTGTCTTGATTTTTAAAGCCCAAAAAATAGATTTTTGGCGGATTT -TTGGTGGATTTTCTTGCTTTGCAATGTAAAAATTAATTATTTGTTGCATC -TAATCACTTTTAACAGAGATTTACAATTTTTTTAGTGGTCTGAACCTGGG -AAAATCCTTCAAAAATCAATTTTCCCTACAAAAATTCGTTATTTACCGCA -TTTTCCGCCCAGCTGATCAAAAATTCTTCTATTTTCTCAATTTATTGATA -ACACTCGCCCACCTCAAGCATTTTATCACCTGAAACTCGTCACACTTTAC -AATTTGTTTGCAGAAATATGCGAAAATGAGCGTTACTCAGCTAAAAAATC -TGAAACACGCGATAGCTCAGCTTCTGGAGTGGGATGGAACGAAAACGGCG -AGAAAGGCAAGTTTTTGGTGGAATTTATCGAAAAAACCTGATTTGTTTTT -TTGCAGAAAATCGTCGACGAGGTGGTTCTTCTCTATCACGCTCTGGGAGC -GGAGGCATTAAGTGAGGATAACCAGGAGATATATGATTTGTATGATTTAT -CTGCACGTATATTCAACTTAGCTAAGAAAGTTAGTTTTTTTTTTGTTAAA -AAGTCGTAAACAACAAGTAAATTTAAAAATAAGCATTAAAAAATATTGAG -GCTTATGAGAGCAAAAAATTCCAGGAAATCGAAGAAGCCAACCAACAATT -CGAAAAAGAACGAAAAAAGGGCACAAGACGAAGCGAAAAACCAGTCCCAA -CTCCACTTTTCGAGCTATCAATACAACATTTAAAACGTTGCTGTCAGCAG -GGAATCGATCACAATCAGGTGCCATGGATAGCATATTGTCTGAAACTACT -GGAATTTCCAATCACAATCACCGAAAAATCGATCGAAAACGAGATTTCCA -ACGTGCTCCTATTGAGCTCCAACGCCTCACAGCTCCATTGGGCCGAGCAT -GCTCATTTGAGCAGCTTATGGAAATGGATTTGGAGCCGTGTCGAGACCGC -CGATATTGGGGCACTCGCCATGAGAAATTATATGGAATTGGCGGCGAACT -TGCTGGAAAACGTGGATTACGTGGTTTTCGAGAAGTCGCCTATTGACCTG -ATGGCGAAAGTGATGGGAACACTGAAGAAAAGTGTGGAAATGGGAAATCC -CAAAGAATAGTGCGTGGAAAACGAGTTCTTGAAATAATGTTCAAAAAATT -CAAATTGGCTTGGACTTAGGCTTAAGCTTAAGCTTAGATTTAGGCTTAGG -CATAGGCTTACAAGGGAAGTATTTCAACTTATTCCCGGACTTCAGAATGA -AACCTATGTCATTTCGAAGAAGACTCTTTAAGTAGGTCCCTACAAAAAAT -TTAGCGGCAGAGGAGCACTTTGACCTGGAAAAAAGTCGCTCTGAAAACTT -TTCAGTGCATTTTTTCACGGCTTTCAAGGCCCGTAAAATGGCTCCAAATG -CGAATTTTTGTAGATTTTTGAAGATTTCTAGGATGCTCAGGGGCCGGAGA -GCACTCGGAATTTTTTTTGGAATTTTTTAAAATTTTCGAAAAAATCTGAA -ATTTTTTGAATAAGTCCATGGCAAAATTTTTCAGTGAATATATATATATA -TTTTTTTTAAATTTCAGAAAAGTTGTCAGTTATTTAAGATCAAAATTGGG -TGTTTTTACACAATGAAAATTTTTTTGAGATTTTTCGGAACTGCAAAAAC -CAATTTTGGAAAAAAATCGGCACCCGGAGTCGAACCCCAGTCTTAAAAAA -TATTAATCAAACTCGCTAACCACTCGGTCATTCAACGACAATTTTTCTTG -TAAATGAAATGGATGACAAAAAAACGTGACTCTTTGATATCTACTTAAAT -ATATAGGGACGTGAGAAATAGCTTTGGAAAAGGAGAGGACGCAGAGAAAA -ATTTTCAGAGCGACTTTTTTCCAGTTCAAAGTGCTCCTCTGCCGCTAAAT -TTTTTTGTAGGGGCCTACTTAAAGGGTCTTCTTCGAAATGACATAGGTTT -CATTCAGAAATCCGGGATTAAGTTGAAATACTTCCCTTGTTAGGCTCACT -AGGGAATGACCAGAATAAATGGAGCGATATTCAAAAAAAATATATTGTAT -CGGAAAGCTGGCATTCTCTACTATAAGAATATGACTGAAATTTTTGCCCG -TTCGGGCTGGAAATCTGAAATTTTTACGTCTGAAATTCTACACTGAAATC -AGTGCATTTCCTATGGTTAACAGTGGATTTTTGTCTCTGGCGCCAACAGA -AGTCTCACCACAATGGTGGAAGGGCGAAAACATCGGTTCGGTGGTCGAGT -GGTGAACGCGTTCGCCTCTTGAGCAGAAGTTTGTGGGTTCGGTTCCCATA -CATGGTTTAACTTTTGGCCTTTTTTATACAAAATTTTCAGAACGGGAAAC -AAGTATTTAGAACATTTTTTTGAGGGTTTTACATAATTTTTTTGCTTTTT -AATTGAACCATAATTACCCTGGAAACTTTTCAGAAATTTTAATTTTTTTC -GAAAATTGTCACTTTTTTCTCCACCAAACCCATGAGAAAATTTGATCGAA -AAATTTTTTTTTGAAATTTTTTTAAAAATGCATGAAATATTTTAGAGTGT -CACAAATAACCTATTTTTCATTATTTTCAATGACCGAATCATTGATTCTG -ATGCCTTATCAAGACGTTTTACCAAATCGATATTGGCAAAACATCTTGTT -TTTGAGGCTCCATATCTCTGCAGGAAAAAATCGCACTAAAAAGTGATCAA -CTAGAAACTTGTTAAACACAATGTGATCTAAAACATTTCAGTTGAACACT -TTTTTGTAAAAAATTTCGTTGCCGAGTTGGAACCAATTGATTTGAGCTTC -ATTATTTTTGAATATTCTAAATAGTTAAAGATCTATATCTTGGCAACGAA -ATTTTTTACAAAAAAGTGTTCAACTGAAAAGTTTCAGATTACATTGTGTT -TAACAAGTTTTCAGTTAATCACTTTTTAGTGCGATTTTTTCCTGCAGAGA -TATGGAGCCTCAAAAACAAGATGTTTTGCCAATATCGATTTGGTAAAACT -TTATTTTAATTTTTTTTTTTCATATTATTGTTTTTATATTGGGTCAAAAC -GTATTTGCTCTGCTAAATAGTTAGCTGGCGCTAATTTTTAATTTTATTAT -TTTCGTATTTTGATAAATTTCACTGAAATTGTCACTTTAATAGTTTACAT -TCTATTGGTTTTCTTTTATTCAATGTCTTTTGATATCGGAAACGTGATGT -TTGCCTTGCATCGTCATTTTCCCAATCCCCTCCCATCAAATCCCTCGATT -TCGAGACATGAGCAGAAGGTGGCAGATCATTTGGCAAGCATTATAAAGGA -ATCTTATTATGGAGATACCAGTGTGGAAGAATCCGAATATTTGGTTCAAG -AAGAATATGGCGATTGGGAGCCAGAAGTTTTTGAGGTATGTTGGTTTCGA -CACTATTAATTGTCATTTAAAAAACCTTTCAGCCGTATGACTGTGTGTTG -CCGGATCAAGATGATGTATTGTTCGGTGAGAAAGCTGTATCAAGGGAAGA -GTTGGATAAAGCGATCACCTTCTACCGTAGCGGAAAAATTGGAAGTAGGC -CGATAACGACTATGCACCATAGTTATCGCTGGATACGAACCGATGCTCAT -ATGAACAAACTGCGCAAGTACGAGAAAGATAAAAAAGCGTTCCAAGAAAG -CGTGCGGGTTCGTTTGGCACAGCTTACACAACGGCTTTATGAGGAGGTCA -AGGAGAAACTTGATAATGGTAACGAACATTAATATAACAAGTTTTAATAT -AAATATTTCAGGAGTCAATTTGCATGATTCTGATTTGATGGCTATGGCAC -TGGAAATCAACACCCGCGAAATGAAGTTGCAAAAACAAAACGAAATGAAG -TTGCAAAAAGCGTCACAATCCTGGATAACCCGATGGAAGCAAAGCCACAG -GTATGTAATAAATTGCGGAGTATGTTAGATATATATATATATATATATAT -AATTTCAGAATCGTGAGTCGGAGAGTCACCAAGTTTGTCACACGGAAGTG -CCTGATCAATAAAGACGCTATCAAAAAAAACGCGGATGATTTTGTCAAGA -ATGCCAGAACAGAGATCTCCAACTATCACCCGTCGATGGTCTTCAATTGT -GACCAAACCGGAATTCAAAAGGAGCTGTATCCAGCCCGGTCTTTAGCCTT -TATGGGCGAAAAAACAGTCGAGAGGTTGGCGCAATCGAAATCGTCGCTGA -CCCACTCGTTTACGTTTCTCCCGATGATTTTCCTCGATGGCTCAATGGGA -CCCAAGGCGTTTATGGTAATCGCTGAACCAAAAGGCCAGTTTCCTCCGTC -TCGTCCAATTCCAAACTGCCCAAATTTGGAAGTGCGGGCTGGATACAAGA -CACACATCATGACGAAGCAATTGATGTGCGATTTTTTCGAAAGTTGTGTC -TTCATTCCGTCTGTACCGAAAAAACTGTACATCATGCTGGACAGTTGGCC -AGCGTTCAAGGACCATACAACGATCAAGAACTTGGTTCCCAATGGTCATG -ATGTCGTCATTCGCAACATTCCAGAGCACACAACTGGAATGATCCAACCG -TTGGATGTCTATTGGAATGCGCCATGGAAGGTATGAATTTAAATCTTTAT -AACTTTTTGATAGTATTTTCCAGAGCTTGATCAAGAAGTTCACAGCATAT -GCCCTTCGAACCCAGACGGATTACGTCATCGCACAGAGGAACAACGCAAT -TTGCATGGTATCTGTGTTGTATCACCAGATCTCGGCAGAGCACTTCCGAC -CGTTTTTACAGCATTGTTGGAAGAAAGCTGGATACGTGGGTGCTGCGAAT -ACTTCATCAACACCATTTTTGACTCCAGCTCAATATTGCATTGATCATGG -TGACACAGTGATTTGCTATCACACTGGATGTAACCATCTCGGATTCATCC -GATGCGCAAGATGCAAGATGTTTGTTTGTTTTAATCATTTTGTTGTGTCA -AAACAACATCTTTGTTCATCTCCTTGAATAATTAATAAATTCATGATTGC -ATTACATTCAAGTTTCGCTATGAATAAAATTGTTTATATGAGGGGATCCA -TGGTTGTAGTGGTCCATGGTTAAGTTTAAATTTTAGGGGAAAAGATGTTG -AATGAATCATTATGGTGTTGGTCGACACATTGATCATGCTGATATCGATC -AGAAAAATTAAAATTTGGGCTTTTATATAGTTTCGAAAAAACACGTTTAA -ATTTTTGAAAAACTTTACGTTAGGGTGGAATTGAACCCCAGAGTCCCACC -ATGCTTGTCATCCACTCTATCCACTCGGCCATCTCGCTGTTGCAGGCAGT -ACTAATTGGGGATGGTGATAAGTAAAGCACGTCAAAACGAATAATTTCAG -ACGTAAAAATTTCAGATTTCCAGCCCGAACGGGCAAAAATTTCAGTCATA -TTCTTATAGTAGAGAATGTCAGCTTTCCGATACAATATTTTTTTTTTGAA -TATCGCTCCATTTATTCTGGTCATTCCCTAGTCAGGATCAGCCTCAGGCC -TAGGCTAAGCTTAGGATTAAGGGTAGGCTTTGGCTTAGGCTTATGCTCAC -GCTTAGGCTTCGGCTTGAGCTCAATCATACATCTTGCTTAAGCACGCAGC -TTAACAGCAAAGCTTAAGCACACAGATTGGGCTTAGGCTCAGGCTCAGGC -TTAGAAAAAGTCGAAAAGTTAACTAAGTCAAAAAATTTTATTGTTAAAAA -ATTGTTTAAAAAGTATTATGATTTTAATAGAAAATTGGAAAAAAACCGAA -AAAAAATGAACATAAATCAAAAAAAAAATTTTTTTTTAAAGAAAACTTCT -TTTTTTTGAAAAAAATGCAATTTTAAGGTTTTTCTGAAAAAAACTGGAAA -ATACTTTGATTTTACTGTAAAGAGAATTTTTTCTGTTTTTTTCCAAGATT -TCAACTTATTTCTGCGAGTTTTTTTTTTCAAATTTCCTCTTATTACAGTT -GGTGTCATTACCGAAAATTCTCGGTCGTCCACATTCTCTCATATATCGTA -CATCGTTGGGGTCTCGAAGCGAGAGATTTCATTCTTCGTGAGATTTTCGA -GCTCACTGGTAGTTTGTCCAACTTGATATCAGTGGCTCATAAGGATGGAG -AACAGTCCAAGGTTTGAGTTTTTTTTTCTGAGTTTGCAAACGCGCCCTAA -TTATAAAAATTTGGAAAATTCCACGTGGAAAATAGTTTGGCGAAAGTTTT -TATACAAATTTTTCGTGGAAATTAATTTTTTTTCGAAATTCTCTTTTAAA -AAATTTAAAAATGTTTTATTGGCGTATTATTTTTCTAAATTTCAGTTTTT -CGCAGATTTCACCAATAAAATATTTTTTTGAAAAATATCGCTTCGAGACC -CAAAAAAATAATTATGATTTCAATGAAAAATTGAAAAAAGCCAATGAAAT -CGAGAAATTATCGAAAATAATTCGAAAATTGGAACTTTTTAAAAATTTTA -AATTTTTTTCAAAACAAAAATAGTTTCTCAACTTTTTGCTAAACAAGAAA -TATATTTCGTGGCGAGACCCATTTCTACTAATTTTCTTTTTCAGAAATGC -ATAATGCGTTTGATTGATGATCTCGTGAAGCTCGCCATGATCGAAACCGT -ACACGGCCACCGTACCATGAACGAAGTGACACGTGGAAATATTCAAAAAC -TCGTGAAAACCGGAATCCAAGAGTCTCTGAAATCGGCGCACCGAAATTTC -TCAAGGAGTTCGACATTTTCGATTTCCGAAGAATGCGTGAGATATCTGAC -GAGATGGTTGTTGGCCGAACGAAGACTTGAACAGCCGTCTGCGGCTATGA -ATGAATCGTTTGAATTGACCGGTGATAGCAGTAGTAAGAAGAAGGACGAT -GCCACGTTTGATAGTGCGTAAATGGAATTCTACCAAAAGGAGATCTACAA -AAAGAAAATCTACGAAAATAGGATTTGGCACGGTGCCAGATCGATCTTTT -TTCGGCTCAAAATTGGAAAAACCTGCAATTTTTATACATTTTTGGCTTCG -AAAATCAGGGAACTCTGCAATTTTTGGCATTTTTCGCTAAAAAATTGGAA -AAATCTGCAATTTTTATACATTTTTGGCTCACAAACTGGAAAAACTTCCA -ATTTTCATCTCAAAAAATCGGGAATATCCGCAATTTTCCTCACATTTTTA -GCTTAAATAATTGAAAAAATCTGCAATATTTTACATTTTTGGCTCAAAAA -ATCGGGGAATTTTGCAATTTTTTACATTTTAAGTTTAAAAGTGGAAAATT -GCAAAAATCGGCATAATTTTGAACGTTTTCTTTTTTCCGGTTTTCCGTTT -TGTTACGATTTTCGTTTTGCATGGAAAATGCTTCGATTGATACCCTTCTT -TCGGAAACGAGTTTCTCCTGAAATAGGCGTAGTCTCAAACCATTTTATGG -GCGTGGTCTTTCTCTTATCTTGTTTTTATAAATGTTGTTCATTAAAACAT -TTTCAGGCCTTATCGATCTCTCCTTTGGCTCGACGATTTCCGGAAAACAT -AAATTGAACGCGTGGAATGGTGTAATGCAAATCCTGAATGAGCTCCTAAA -AAGTCGACGACTCGAACTTCAAGTCACTGAAAAAATCGTGACAATCCTCT -GGGAAAAGCGAAAATCCTACACAACGGAGCCACTCCGTACTGTGTTCTGC -TCCATTCTCTCCACAGTCGTCTGCCAGGCCGATGTTCGATTCGGTCATCG -GAAAGTGCCGACAATCGACTCGATTCTCAAATATTCGCTGTCTCTAATGC -CAAATGTCGCATCTCTTCCCAGTGCCGCTGCGTTGACCGAAACGATTGTC -AGATTCAGGACAGTATCACGAGAGGGTCTCCGTAACACGTGGGATACCGT -ATCCCGAACTAGCTCCGGCTCATTTGAAGTTGTTCGGCTGATTTCGGCGT -TGATCTCCGTTACGGAATTTGATGAGAATTCGAGATTCGCCAACGATGAG -AGAGTTCGGAGTTGGAGGTAAGTCACTATGCCACGTGGATGGATTTCCTT -TAAAAAGAGTTTTTGGAAAACAAATCAGATTTTGTATATCACTTCACCTT -TAAAGCGAAATTCTTGTTTTTTTGCAGTTTTCGAAAAGACATAATCGAAT -GGGTATTGCTGGATCCGAATGCACATAGTCACAAATTACTCTATCAGTTG -TGCCAGTATCATCCAACGTATTGTTATGAATCAGAAGCTTCTTCTAGTGG -TTAGTTTATTCCGTAGGGCTTCCATGGTAGGCAGGCGCGATTTCAGGGCC -TGACGCCTGCCTGAAACCTGCTGACCTTTCGCCTCTTTTCTCTCATTGCT -ATCAATTTGTTGAAAATCAAATTAAGAAATTAAAAAAAAAGTTCACGTAT -GTTTTGTCGTGGATTGAGGCGAGGGGCAGGTGGTGGTGGTCTTAAGGTCA -GGTAGGCAGGTGTTTTCACGCCTACATTGAAGCCATAGTACCCCATATGC -CGAAAACGCTGAAGTTTTCTCATTTTTCCAGACGACTCCCTGCTTCAAAC -TCTGAAACTATGTAAATTAGCTTGCTCTCCAGCTCCCCCATCGGCTCCAA -AAGCCCTCCGACCACTCGAAGCTTCAATTGAAGAGATTGTGAGATATGTG -CATGATAAGCTCAAGAGCATTCTCGGTGAGCATCGGCTGTCGTTTTTTTG -ATTTTTGAATTTTTAAAAACATTTTCAGCGACTGAAATCACTCTGCCTGC -ATTTGTGCTCTGCCACGAATTTGCTCTGAAGTATCCGGATAGATCTTATG -AGTTTAATGTTGGTTTTTTTTTCTAATTTTCGAAAAATTTAAGAAATTTT -AGGATATAAATAGAAATTGAAGAGAATTTGAATTTTTAAAAAATTTCGAA -TTTATGGAAATTCAGTAAAGTTTGTCGGAGTTTTTAAACGAATTTTCAGA -ATTTGTAATAAAAACTAAATTTTCTAATTTTTTTTCCACAATTTACAACA -TCTAAAAAACTTTTTAGAAATGAATTGTTAGAAGTTAGAATTCCTGGAAA -TTAAAAAAAAATTTGGATTTTTTTAGAATTCTTAAAAGTTTGATATTTTC -AAATGATATGAAGTTAACACATTTTTTAAAATATTCAAAATAAGAACATT -TTAATTTTTTTGAAGAAATGTTCAAAAAATTAACATTTTTTGGGACTTTC -AGAAGTTTCTTCTTTTTTTTTGCGTCTTTCAAGATTTTTTGCAATTTGCG -TAATTTTTATTAAGGGGACAGAAAATTCTGAGAATGCGGATTGCACAACA -TATTTGACGCGCAAAATATCTCGGAGCGAAAACTACAGTAATTCTTTAAA -TGACTACTGCTAAAATTGAGCATAAAAATAAAAATATATCGATGTATCTT -GGATCCCGTAAATCGACACTAGCGCGCTACAGTAGTCTTTTGAAGAATTA -CTGTAGTTTTCGCTACGAGATATTTTGCTCGTAAAGTGTGCACGAATTCT -TATAATATTTTGTTCTCACAAAAGTTGGTCAATTTATGGGATTCTCAAAT -TTTCGATGTTTTTTTTTTTGAAATTTAAGATTTTTAAAACATTTTTCAAA -AAACTGATTTTTCTCTTAAATTGAAAAGGTTTTTTTTTCAGAAAATGTAC -AAAAAGCTCTACCAAATCATGGAAGATCAAGAAGAAGACGAGTTTCTCCA -ATCAGCTCGCCATTTCTCAAAATGGCCTCAAAATCTGACACTACCAATAC -AAAAACAGACAATAAATTGCATGGCTGTCTTTTTCGAAGCGAATCTTGAC -AATCAGCTCGTCGATCTCTGTCAGTGGAGTGACCGACGAAAAGTGCTTGT -CGAGATGCTCGCCGAGCTGGCCGCCACAAGATCTGAAATTCGAGATAAAC -TTCAAAAATCGATGCCGTTCAACAAATTCGTCAAGGAGTGTATAATGGAG -AATCGCGGTGATTTGTATGAAATGACAAAGAGATTTGAGAAATATTCGTT -TTTGCTCTCGATTCGGAATTTAATTGTTACTAGGATGATTATAACGTGAG -TGTTTGTTTTGGGGATTGCCACGAAAAACTGGAAAAACGTTTCGAAAATT -CAAAAAATATTTCTTCAACATTAGAAAGAATTTCCATTTTTTATATAATT -TTGGAAAGTTTTTAGATTATTTTAGATAAAAAATCATTTCGAATTTACAA -AAAAAAATTATGAAATTTTAAAAACAAGTTTGAAAATGTATTTTTAAAAA -ATTTAAATATTAATAAAAAATCTTGTTTGAATTATTTAAATGTTTGCTAT -TGTGTTTTAAAAAAGCTTAAATTAAAAATTTTTTTCAACAAATGACTAAA -TTAACAATATATAACAAAAATTCAAAAAAAATTGTTTTCGAGAAAATTTT -TTGCTTTTTTTAAAAATAAAATTATAAAAAGAAACAGAATAAAAATCGAA -AAAAAAACAATTATTTTGAAATTTTCAAAAAAACTAGAAAAATGTAAAAA -TTTTGAGGAAAAAAATTCAAACATCCCAATTTTTGCAGAAACGAAGCCGC -CCGACTCCTAGGAGATGGTGAAACAATCAGTGAAACCGATATCTTCATAA -TCGAAAAGCGTACTCTTTCCACGTGTATTCGTAATGTGTCCGAAGGAAAA -GAGTTGAGCGGCTACACACTGGACCCCTATACGGTAGCTGCCAACGTGCA -CAATGTGCATTTCGATCACATAAACGTCGAAATCTATCTGGAATTGCTGA -AAAAGTCGCCATTTTTCGCTCAGAACATTGTACGCCACTTGTTACGGCAG -AATGGAAAAGAAGCAGAAGAAGAGACGTGGCACTTGCATGCCACTGTGCT -GAAAATTGTGATGAAAGATGAAAAGTTGCTGGCGGTAAGGAATTTTTTTG -GAAAAACTTGAAAAAAAAGAATTTCATCGTATTTTTAAATAATTTTTTGA -ATGAAAAATTCGGTACTTTTCCTTTTCTACCCCGCATTAAAAAAATATTC -AAACTATTGACTTATTCGAATTTAATTCTCACGTGAATGTTTGTATTAAT -ACTATTTTCATTTTTAGGCTTAGAAAACAACAGTACTAAGCCTTGAAATA -CAGAAAAAGAAAAAGAGTTCACGTTTTTATCAATGAAAATATTCCTGAAA -AAATGCGGGGTAAAAAAGGAAAAGTACCAAAAATCAAACTTTCAAAGTTA -ACAATACGCAAGTTTTCAAGTTAATTTTAATAATGGATTGTTTAAATCCG -GAATTAAAAAAGTGGTTCAAATTTTATTTTATTTGACTCTATTGTGGCGA -TTTTCATGACAATTGAAACGATTTTTGAAACTTGTATTTATTGAAAAAAA -AGTTGAAGCAGGTCGTAATTTTAATTTGAATATTTAAAAAAAACTTATAT -GGGTGCTTCAATTTTGCAAAACATTGCAATTAAAAAAAAAATTTTCAAAA -TGTGGTCGGCAAATCAGAGTGTTTGAAAAAAATCCTTCTAATTGTGTTTC -CGGAATTTTTGGGATTTTTTCTTCGAAAATAGGAATGGTTTAAATTGAGT -TAGAAATTTTTGCAAATAAAAATCGGTTTTTTAAAATCAATTTCTTGCAA -TCAAAAAATTGAAATTTTCAGCAAAATAATAAAGTTTTCTCTAATTTTTC -AATTTTCAGGTATGCGTGGCCACAATTCCAAATATGGTTCGATATCTCAA -AGTCTATCAGATTCATTTCAGTCCGAAATCCAACGCGGCGAAGTTCTTGT -AGGTTTTGTAACTGCGAATTTCAAAATTTTGCTCGTCTAATTTGACGCCT -GCTCTGTTTTTTTTTACGCGCAAATCTTAGAAATCGGTGACTTTTTCGTT -TAAAAACACCATTTTTCAGTAAAATCTGAGCAATTTTCGGTTTTTGCGCG -TCAAATATGACTAATTGAGTCAAACTTGACGCGCAAAATTTTCAAAAAAA -AAATTCAATATTTTTCCAGACACCTCGACATGGAATCGATTTCCCACTGC -CAATCATATTTGCGAAAACCAACAAAATCATCCAATCTGATCACGGCCGC -CAACTTTTTGACACTTTTCGGATGTGAAAAGCGCACGTGGAAGCGCCCGA -TTCTCAGATTTTGGAGCATTTTCAAGCAGCAACCGGCTATGTGTTGCGAG -AAATTGCTCATTTTTGTAAGCAATGATTTTTTGATAAGAAATTTCCCAAA -AATTTTGAATTTTTGAATTATTTTTGTTAACTTCTTATTTTTAACTCAGT -ATTTTTGCAAACTGAAAATTTCCAATTTTTGGGCTTAAAAAATCTCCATT -TTTCAGGCTGAAGAATGTGTCGAACTTGGCCTGAACCACCGAATCGCTTG -TCTTTTACGCGCACTGACAACCAGTGAATTCTGCCGAAAAGCTCTATGTG -ATGAATATCTGAAAATCGCGTTTCAGCTGACTTATCGATCGATTTTTCTG -ATTTTAAGCAAAAATGAGTGCAGGTTGGTGGAGAAGGATATGTGGAAAAA -CAATATTTGAAAAATAAAAAAAAAACTAATTGATTTGAATTTTCAAAAAT -TCCAAAAAAATAAAGAATTGTATTCCAATTTTCATGAAAATGGCAACAAA -AAACTCAAAGTTTCATTGGAAAATTTTTGAAATTACAAAAAAATTAATTT -TTGAGTTTCAATAAAGTTTCAAAAGTTTAGTTTGAGTAGTGTTGTCAACA -AAAATTGAATGCCTATTAGAAATAGTTGAAAAAATTGGAATTTACAAAAA -AAAACAATTTTTAAACTAATTTCTCGAATTTCAAAAAAAAAATCTTCTAA -TTTTTGAAATTGAACAATTTGGAAATTTTTTGAATTTTCAAGAAAAATTT -TCAATTTTTCGAATATTCAACAGTTCCAAAAAAAAATTTGTTGGATTTTT -TTCCAATTTTAAACAAAAAATTTTCAAATTTCCACAGATTTTTTTTTAAT -TTTTTAAATTTCAGAAAAAAATTAATTTTCATAAAAAATTGAAAATTTCC -ATTCTTCAAAAATAAGTTTTCACATTTTTCAGACCAGAAATTGTGGAGCT -CTGCGATGACATGAATCTTCGGTACGATCTTCTCCAGCACCAGATCAAAC -ATGTCGCGGCTCACCATTTGGAGCACTTTGAGCGTTTCGAAACGAAAATC -GCATTTTCTGTTGAGAAATTTCTGAAATCTGGAATTGATGGAATCGATTT -TGAAGATTTAGGATTAGTCGAGTTTTATAAGCAGTTGAACGAAAATTTGA -CAGAAGACGCGATCAGGAGCAATGAGGCGAGAAGTAAGGCCGTGGAATAT -AAATTGGTGGCCGAGTTTTTTGTAAACTATGCCACCAAACTTGGTTTCTC -CGTTCGTGGCCACAAAAATTTTGAATTTTTTGAGCTTCTCTTATAATGTT -TAAAAGTGATTTCCTGGCAAAAATTCATTTCTTTAATTAGAAAATTCCAA -AAAATTTGAAAAAAAAATGTAAACTCAATAAAAAGTCTAATTGTTTCAGA -TTTATTCTGGTTTTTATTGAATTTTCAGATTTTTTCTTCAATTTTCAGTT -TTTTTCGACTTTTCTAATTAAAAAAAACCAATTTTTGCCAGAACAAAAAC -CATTAAAAATCGACAGTAGTCATCCCATTGGAGTACAAAAATTTTAATGT -CCAAATTTTCATGACGAACGAAGAAACCTAGTTTGGTGGCCTAGTTTCCG -AAAAAACTCTGTCACCAATTTCTTTCAAAATTCAACAAAATTTTAGTAAA -TTCCAAAAAAACGAACATATTCGGCGAAAATTATTTCAAAAGCTTCCGAA -CAAAATCTAAAAACGTTCAGAAAGTTCTGGGTAATTTTTTAAATATTAAA -AAAATTCAACAAAAAAAGGGGGGCAGATAGCTCAGTCGGTAGTGGTGGCC -GCTAGCAGTCTGGAGGTCACGAGTTCAAGTCCGGCCTCACCCCCTAGGTT -CACCCAGCCTCTATTGGGAAGTGGAGCAATCCACGACTGGATTATCGGCC -ACAGTCCCCGGCTAGGACGTGGCTTAAATTACAGCCCAGAGGGATCACCA -CCAGGCAGTGTACCTGAATCCCAGATCCGCAGTGCATAGCACTTGAAGAA -CGGATCGTCCTTTAATTCTTTCAAAACTAATTTTTTACTAAAAAAAATTT -CCAGACATCTACATCGTCGACATTCTCTCAACAATTTGGCTCCAGCTCCC -CTCAATTCGTCCTCAAATTCTACCGATTCTCGCCCGCTTCAAGCACATTT -CCCCAGCGTGGACTAATTTCCCACAGCCGCCTCATATTTCGACAAACGAG -AAATCATTTCTTCAACATCTACGATTTCATCTTTATCTAAAAATGATGAA -TATCTCGAAATCCATGACGCAAGGCGAGTATGCCACGTGTATTATGATGC -TCCTGACGAGCTACGACTCGAGCCATTTCGTTGCGGATTTGATAGAGAAA -AAGCAGCTGGGAAAGCTGAAATTGCAGCAGAGAAGGAATGTTTTGTGCAT -TTTGAGCCGACTTTTGAAAGATCAAGCTGTGATGGGTGATGAAGATGAGA -CGATTATCGATCCGATTCTTTTTAAGGCAATCACCAAAGCTTCCGCCGTT -TTTGTACGTTTTTATACGACGGAAATCACTGAATTTCATGTTTCTATGCC -GAAAAATTATGAGCAATTAAATATACATCACAAGAAAGAAAATAGTTGCC -GGTTTTTGAATTTTTCTGTCATATCGGCAATTTTGGCAACTGCCACTTTT -TGAAGTTTTTAAAAATTTGGTAAATTTGGCAATTGCCAAAATTATCTCTG -TTTCGATTTTTTTCATCAGAATCATAATATTTTAAATTTCGCGCTAATTT -TTTTAGCAAATGATCTTCGAAAATTTAATGTCTCGCAGTTAAAAATACAT -CTTTGCAGGAAGACACCGCCGCGTGCATCGTACCATTTTTGTTCAAAATT -TGTGTGGATTTCAAGGGAAAATACGATAAATGTGTGATAAATTTGCTGGG -ATGTCTTAAGGGAGTTAATGCAGGTATGATTTTTCGTCAGAAATGACTGG -AACGAGTTTTTCGCATCAATTCAAATTTAATGTAATGGCATTTGGCATAT -GACATCGAATGTCGAATGCTGGGAATGCCGAATAATATATTTTGGTCGAG -TAGGAGAATAAACTAGACAAAGTTCAAATATATTCCCAACAGGGATGGCT -TCACCCGTGACCCGTTTCACCCGTTCACCCATTTTTACAAGGGAAGGTTC -TGAACTCGTTATCGGACTTCGTTACGCCACTATATACATTCGATAGAGAA -TGGTTACAGATGATCACTCCAAAAAATTTAGCTGCTTCAGAGCAGGTTCG -ACCAAGTTACGACACTTTGAAGATGCCGAAAAAAAAAATCATTGATGCAC -CCCCTTTGAAAAAAATTGAAAATTTTCACTGAAAATTTTTTTTTTCTGAA -AGTTGATAAAAATAGTTGTAATCGATTTAAATAGTAAAAAACATATATTA -TACAAGTTTTAGCCCATCACTCTCAAAAAAACCCTTAAATTAATGTACAT -ATCTTGAGAAAAATTCCAAAAAGTAGATGTTCATGTAGATCAATTTAAGG -GAGAATTATGAACTGAAACTTGTATGGTATGATTTTTCCATCATTTGCAA -CTATTTGAAAACATTTTATATCAACTTTTAGAAAAAAAATTTTTTTTTGA -ATTTTTTGGAATTTTTAAAAAGGGGTATTTTGGCACTTTCAAAATGTCGT -AACTTGGTCGAACCTGCTCTGAAGCAGCTAAATTTTTTGGAGTGATCATC -TGTAACTAATCTCTAACGAATGTATATAGTGGCGTAACGAAGTCCGATAA -CGAGTTCAGGGCCTTCCCTTGTTAGGCGTTTTTACGGGTGACGGGTGACC -CGCTCGCCCGTTTTTTTTTTCGTTTTAGTTGTTTTCACGGGTGACGGGTG -GCTCGCTCACCTGTTTTTCACCCGTTTTTGGAAGTTTTCACGGGTTATGG -GTGATCCTTGGTTCCCAAGAGGCAGCCAGTTTAGGTCAATAGGTCGTAAA -TATCGTTTTGGGCCACGTTTACAACTGGGCTGTGTGCAACTAGAGGTGCA -CTTGGGTCGAAAAGGGTCGACCCGCTCCAACTTTAGGTAGCATTTGTAGC -GACCCCGATAAATAAAATGTCGACCCCGAATGAAAATTTTAGCAAGGAGG -CCATGCTCGTTTAATTTCCATTTTCAAAATTATGATCGGACTATTGGTTG -AGCTACTGTGAAATAAGCGGGTCGACCCTGCTCGACCCATGAGCACCCCT -AGTGGCAACCATGATTTTCGGCAACTGGCAATTGCCAGAGTTGCCGAACC -CAATAAGTTTCGGCAACCGGCAATTGCCGAAGTTGCCGAACTCTAAAAAG -TGCAACCGGCAACTTTTGCGCAGCCCTGGTTTACAACTACCTAACGACTT -TTGGTAGACTAGAAATAACACATGTATTCGAATTCGACATATGCCGAATG -CCGAAAAAAGTATTGAACGACATTAGGCACAGGGATGGGCGGATACCTTT -TCGGATAACTTCACTAAATCAATTTATCAATAAGTATTGATTTAGTTATT -CTGGAGATACTATACTAGAATAAAGAGTACCTATTGAGCAACATTTTCAT -ATGACAAAAACTTTTAAAATTGTACGCATTTTCCTCGACAAGACCCTGAA -ACTCGTTATCCGATCAAAATCGGCTAACAGATAACGGACTTGCATACTTT -TTATACGGGAAACGTGTAGAATTTTAAAAAGTTTTGTGCCATGAAAATGT -TGCTCACCAGTTTCAATTTTGTTCTGATGCACTTTTTCCAGAATTACTAC -ATCAGCACGTATTGATAACTTGATTTAATGAAGTTACCCGAAAAAGTATC -CACACCCCATAATCAGCATATTTCATATGTCAAATATCAAATTTCCTGAA -TTCCGCACACCTCTGCTCTCCATACTCCAACTAATTTTAATTGCAGAAGA -CGAAATAGTAGTCCGCTGCCTTGCCGAATGCGTCGACTCCATTGGACTCA -ACGTGATTGCTCGTTACGAACGCCTGAACATTGAGACTCATTCGGAATTC -GGTGTGAAATGGTTCTTCAAATTATCCCGTCTCTTTCTGAAACATGGATT -TACTACGCATTCCTTCGCGATTGCGAATATATTATTTGACCGACTTTCGG -CGAGAAAACGAAATACAATGATGATAGATCGTACGAGTTTAGACCGAATT -GACAGATCACAGGAACTTATCAATCTTTTGGTGGAGATCTATGTGGCCGA -GGGTAACTCGGTAGCGTTGTCCTCTCTGCCACCTGCGGTACAAAATAGAC -CGGATGTTCGGCAGGTTATGAATAAGAGTTCAAAGGAATGGTTGAAATTG -CTGTCTTCGAATCAAATGGACTCGTGGGAGTTGACTATTGTGCAGTGGAT -GTGGTAATTGTTTATTTTGAAATTTTTCATTAGAATAGAAAGCAGTTTTC -TGGAAATTTTCAGGAAAACGCATTAATTTTTTACCTATTCTGCATTTCTA -GGTTCTTCAATTTTTTGAGAAAATATATATTCCTTCGAAAAAATCACTAA -CTTCTTTTCGGAAATTTAAAAAAGTTACAGTCGACGACTTTAAAAAATTC -AGTTAATAAAATTAGATTTCAAAAACAAATCGAATTTTTTAATTTGTACC -GAAATCTGGAAAATATTTTTAAATGACTCCAAATTTTTCCCTGATTCCAA -ATATCTATGAGATAAAATTCAAAAAATAATCCCTTTTTGATCTTGAAATC -GCCGAATTTCATTTGTGCACTCATGAGATTTCGAAGTTTCGCGCCAGAGA -CCCCATGTGTTGATTTACGAGATTTGTGTATATTTACGAACCCCTTAACC -TTTATCGGTTGCTGATTTCCGTTTTTCAACGAGTTTTCTTCAGTTTCGTC -GGTTTTTGTTAAAGTTTTTGTTTAAAACATTTTCAAAAAAACTTTGACAA -AAATGAAGGGAACTCGTTGAAAAACGGCAATCAGCATCCGATAAAGGTTA -AGGGGTTCGTAAATATACACAAATCTCGTAAATCGACACATGGAGTCTCT -GGCGCCAAAATTCGAAATCTCATGAGTGCACAAATGAAATTCGCGATTTT -AAGCTGAAATAAAGAACCAGGGAAAAACATTTTTTCACATAGATGTTCGG -AATCAGGGTCAAATTTAGAGTGAAAAACTTTTAAATTTTTAAATTTTTTC -AGTGGCATCCAATTCAATGCAATCACCGGCGATAAATACCTGAATTCAAT -TCTTCGTTGCAATTTCAACGAGTACACCAAAAAAATCGATTCCCCATTAA -AATTCGTCTATTTTCAACTATTCCATCTTTCGACGAGCACTCTGGAAATC -GAAGAAGCCATTTCTAGCATGCCGTTGGCTCCAACAATCGATCAAATGCG -GCTTATGATTATAGCCAACGCGACGGCAAGCTTCGAGCCACAATCCGTTG -AAGAGCACGTTGTTCGAGCTGTTCGAGAGCTCCGAGAGACGTCAAATCGG -CGAAAATCCGGTGGAAATGTGAAGGGAATTAATGAAAAAACAACGAGAAT -GGTGAAACTGGCCGAGATGCTCACCGAGAATAAAGCATACGATGTACGGA -GCAAAAAATAATGGAAAATTTGAATTTATTCAATTGTCAAAAAAAAGGAA -ATTTCCTTAATTTTTCGGTTTTTTTTTTCGGAAAAATCTGAATTTTTTCT -ATTTTGAGCAAAAAATTTAATTGAAAATCCGGAGAAAATCGTATACTTTT -TCTGCGAACCATTTTGTGGGCGGAGCCTAACTAGTAACACTTTTCAATTT -CCAAACAGAAAAGTGAGAAAAAATTCCTCTTTTTCTCAAAAATCTAAAAG -AAAAAAAAATCGGAAATTTTTGAATTTTTCGGTTTTTTCTGAATTTTTCA -ATTTTCATTCAAAGAAGGTCGAAAACTTTTCGATTTTCCGGTTTCCTTTT -TGAAAAAAAATATTTTAAAAATGTGTAGTTTGTAGTTTGTAGTTTTTGTA -GTTAATGTCTTCCACATTTTTAGGCGGCAATAAACCTGCTCGACACGTGG -GAGCACGAGTGTCTCCAATGGACATCTGTCGCTGCCGAATCAATCGATAT -CGATTTAATTCGAATCTGCAAACAACACGTGACGTGTCGGTCGGGAGATC -CAAGAATGGCGGACATAAATCTACGAACAATGCATCCACGTGTCCCGGTG -ATGAGTGACCTGGCGATTGCCGAATGGTCACTCGCGTTGAGCAAGATTAC -AATTGAATATCGGAATGATATGGAAGAGGGTATTCGGATTTTGGAATTTG -GATGCAAACATTTACAGAATAAGGATTCTGTAGAGACGAGGTTAAAGGTA -CATGCGGTCGGGTCTTGCAGCGAAATAATGCATTTTTAAAAATTCGAGAA -AAAAATTGTGAATTTTGCGCGTAAAACGTGATTCAATCTCGAATTGTTCT -ATAGATTTTTCCGACAATTCGGAAAAATGCCGGAATTGAAAATTTCCGGC -AAATCAGCAATTTGCCGTAATTCAAAATTTCCGGTAAATCGGCACATAGC -CAAAAATTAAAAATTTCGGCAAGTCGGCAAATTGCCGGAATTCAAAATTT -CCGGCAAATCGCCAAATTGTCGAAATTCAAAATTTCCCGAAAATCGGCTA -ATTGCCGGAAGTGAAAGTTTTATTGATAGAGATAAATTTAGAACTATCAC -TAGAATTTAAATGTAAAACAACTAGGAGTTATCATGTAAAACTTGTCATT -TGAATTTAACACTAGGAGTCCAATAGATTTTCAGATTTTAAAAAATTAAT -ATAAATTCAGGAAATTTTTTTTGAATTTATCCACATTAATATTCGGTATC -AGGAGCATAAATAGGATCTATTGAGATATTTTAACAAATTTCCGAACAAA -GTTTCAAATATTTTTTTCCAATTGATAGAATGTTCCATGAAACATTACAA -AAAAATTATTCATCAGGTTCTCCTAAAACTCCATTCCGTCTGTATTGGCC -AACTGTCGAAACTCGAAGAATATCGCGAAACGCGTACCTACCGTATGAAG -CAGCAGGCGGTCACCGCATTCGAACAACAAATTCAAAATTCGTGTCGAAC -CAGTCTGGCACGTGGCAATTCGGGTGACGAATGGACGAAAAAAACGGTGC -AACGGGTGAGAAAAGAGCATCAGTTTGAGAAGAATGATTTGGAAAAAGTG -GATAATTCGTTGAATTCGGCGGCCCGGAAAGCTGTATCGTCGGGTTTTGA -TGCACTTTGTGAGCAATTTTTGAAGTTTTTATTGAAAATTCAAAACTTGC -ACAAAAGGATTTTAAATTCGATTTTTCGCGATGTTTTAGCAATAAAATTT -TGAAAAATGACAAATTTTTGAAATAATTTCAGAAAGAGTGTAAAGTTTCA -GAAAAAAAAATTAAAATTAAAATTTATTTTAAAACTTAAAAAAACCGACT -TTTAGCGAATTTTTTTACGAAAAACAAAGTATTTAATTTCATAAATTAAT -TCAAAAAAAATATCTAAAATTTTTGTGAAAAACTGTTTTATACAGTTTCA -GAAAAATTTAAGAAAAAATTTTTTTTCAGAAAAAACCGGATTTTCTGTTA -ATTTGAAATTATGGAAAAAAAAACCCCAAAGGGTATTACGGAACTACAAA -ATTCTGAGAATGCGTACCGCGCAAAATTTCTCGTGGCGAAAACTACAGTA -ATTCTTTAAATGACTACTGTAGTGTTGGTGTCGATTTACGGGCTCGATTT -TAAAATTGAGCAAAAAATTATCACATAATACGAAGAAACGAAGGAAAATG -AAACTAAGTTATAAAAAAATTCGAAAATCGAGATCCCGTAAATCGACACG -AGCGCTACAGTAGTCAAAAATTAAATTAAAATTAAAGGATTACTGTAGTT -TTCGCTACGAAATATTTTGCGCGTCAAATGTGTTGCGCAATACGCAGAGA -TCTCAAAATTCTATGCTCCCGTAATAGATTTAGAAAAATTTTCCGAAAAT -TTACGTCTCGAAAAAGAAAAAAAAACTGGTGTAAAAAATTACACCAGTTT -TAATATTTACTGAAAAAAATTGGTAAAATCTAAAAATTAATCAGCTGAAA -TTGATATGTTTTGGGATAAAAAATTTTGGCGGGAAACTCAAGTTAAAAAA -AAAAATTTCAGTATGCATCAGCCAACTGGAAGACGACGACGAAGCGATCC -GCGCTTCATCTCTCATAATATTTCCATTAATCGATGTGATCTACAAATAC -GAAACGGACGTCGGAGTGATCGCCTTGCTCAAAGAGCACACCAAATCGAA -GCTCCCGTCGAAGCTGTGGATAAGTGCCACCTCACACATTGCCTCTAAGT -GCTTCTCCATCGAAAAATCGCAAATCACGAGACACTTATCACAGATTCTG -TGTCATCTCATCTATGACTACCCGTATCACGTTTTGCACACAATTTTGAT -GTATGATGACGAGAAGAACGCTTCCAAGGTGAAAGGCTTCTTGAAAACGA -TATTTGACGCGCGAGCTGACCAACGGGATTCGTCGAAGCTTAAGGAGATT -GTGATTACTATTCGTGAGGCTCACCAGGCTTATAGGTACATACGGCGGCT -AAATTTTTTTTGAAATTTCGAAAAAGACGAGAAATTCGATTTCTTATCAA -GTTTACAAAAATCTTCGCTTTTTTCTGACAATTTTAGTGTCGTGGTATCC -AATCAACGAAAAAAATTAGGTTCTTCTGGTTATTTTTGAGCATATTCAAT -AATTTAAGCAAATACTCTTTTACTTCTAAACTTTCATCGGCGATACGTGA -ACAATTTCCAAAATTATATATTATCTAACGCTACAGCATATAATTTTTAC -CAATTTTCATTCATTTTGATGGAAAAAAGCATCTAGAACATGTAATATGT -TCAATTGTTCGATTTCAATAAAAACCGACGGCATCCTTGGTTTGAATCGA -AAGTTTAGAACAGTTTTTTTCAGAGAAATTGCAATGCTTGACGTGAGAGG -AAACGTTCGGATACAACGTGTTGAAATAAACGGAAAAACGATGTACCGAT -GGCCACATGATTTGAAGATTTTCAAGTGCAAATTGCGTCAATTGCCGATT -CCCACCATTTCGCAAAAGGTTTGTTTTTATTTTATTAAAATAATTTAATG -AATATGTATTTGATCATACAAAAAAAAAATGTTTTCTTCTAAATTCCAGA -TTGGTTGCCCGGGTGACTACTCGACGACTGACCTAATCACGTGGAAACGA -TGGAAAGATGTATTCACAATTGCCGACGGAATTTCCACTCCAAAAATCTG -GGAAATTGAGGGTAGCGATGGAAAATGGTATAAAACTGTGTGGAAGAAGG -ACGACGTACGACAGGATGTGCTTGTTGAGCAAATGTTTGATGTTACGAAT -AATATGTTGGAGAAGGCGATGCTTCGGACGTATAATGTTGTCCCGTTAGA -CACTGAATGTGGAGTTATAGAGTTTTGTGGTGGAACTGTTAGCTTAAGTT -CGTTTTTTTTTCGTTTTTGAAAAAAACCAAAATAGTATTACGATAACACA -ATATGCTGAGAATGCGTATTGTACAACATATTTGACGAGCAAAATATCTC -ATAGCGAAAACTACAGTAATTTTTTAAATTACTACCGTAGCGCTTGTGTC -GATTTACGGGCTCGATTGTCGAATATTACGGGGCCATGAGATCATGAGTA -TGCCTATTTACTGGCGCGAAAATATTGGCAGGCCGCGGCAGCGAGAGAGC -GTGTGGCGAAGAGAGACGCAGGTCCCTTCGCTACGAGATATTTCCCGCCA -GAAAAGTAGCATTCTCATGATCTCATGGTCCCGTAATAGTGACAGCGATA -TTCCATTTATTTCACTTCAAAAATCGAGATGCCGTAAATCAACACAAGCG -CTACTGTCATTTAAAGAATTACTTTAGTTTTCGCTACGAGATATTTTTCC -CGTCAAATATGTTGTGCAATACGCATTCTCAGAAGAAAAAAGAGGGGGGC -AGATAGCTCAGTCGGTAGTGGTGGCCGCTAGCAGTCTGGAGGTCACGAGT -TCAAGTCCGGCCTCACCCCCTAGGTTCACCCAGCCTCTATTGGGAAGTGG -AGCAATCCACGACTGGATTATCGGCCACAGTCCCCGGCTAGGACGTGGCT -TAAATTACAGCCCAGAGGGATCACCACCAGGCAGTGTACCTGAATCCCAG -ATCCGCAGTGCATAGCACTTGAAGAACGGATCGTCCTTTAATCCTTTAAT -CCTTTAAAAATGTAAAAAAATTTCATTGCAAAAATATCAAACTATGAGAT -TTTTTCTATTATTTTTCAGAAGAAGTTATGTGTGGTGTGACACGAGAAGG -CGGTCTCCACCGGGAGTTCAATTCAGAAGAAGTTTCGGCGAGTAAAGTGT -CGTCAATGATGAGACAAGTACAGACAGAGTCCACAGAGACACGACGACAA -GTTTTTGTGGAGATTTGTCAGCAGTATTCTCCAGTTTTTAGGTAATTTTT -CTGAAAGTTGTCGAAGTTTTTTTTTTTGAAATTCAAAAAAATTCCCAAAC -AATTGGCCTTTTTTCAAATTTTTCCAAAAAATAAAATTACAGACACTTCT -TCTACACCAACTTTTCGACGGCGCAGATTTGGCGGCAAAAAATCATAAAT -TACAGGCAGAGCTTGGCCACGTGGAGTATTGGTAGGTTTCGAACTAAAAA -TGCTAAAAAATTTTCGAAGAATTCGAACATCTCAGATTTTTTCCGAAAAA -TAATAAAAACGTTATTTTCCAATTTTCTGAAAATAAGAATTTATTAGTTT -CTTGCGAAATGAAGAGTCTCAAAAAATCATATTTTTTTTAAAAATCAGAT -TTTTAAATTCTTTTTTTAAAAGTTTTATCGTGAAATTGAACGTTTATGAA -AAATGGCGAGAAAAACTTTTTTTTCGCTTTTTCAAATAATTCTCAAAATA -AAAATTCCAGTGTGCTACATCGTTGGCCTCGGCGATCGACACGCGTCGAA -TATTCTATTCGATCAGAAATTGTGCACATTTGTGCATATCGATTTGGGAA -TGATTTTGGAGTATAGTAAACGAACGTTGCCAGTTCCCGAACAAGTTCCA -TTCCGTATAACTCGAGATGTGCTCGACCCGATTCTGATTGAAGGAATCGA -GAATGGACAGTTGGCTGAGGAATGTACGCAGATTATGGAGAAATTGAAGG -AAAATGGAAAGGTACGGCGGTCTGGGGAAATTTATACGAAAAGAAAATTT -TGGACTGACAAAATTTTGGACTTGTAAAGCTATTTAAAAAATTCAAATTT -CCCGCCAAAAATATTTTTTCAAAGAATTTGAATTTTAGCTAAATTTTTAA -ACAAAATCTGAAGTTACCGCCAAAAGTTTTCCAAAAAAAATCGAATTTCC -CGCCTAAAATGTTTTTCAATAAATTCAAATTCCCGCCAATTTTTTTTACA -CAAAATTTGAATTTCGCGTCAAAAATTTTCCAAAAAATATTCAAAATTCC -CTGAATAGTTCAATTTCCCACCAAATATCAATTTTTCTGAATAAAATTTT -AGAATTTCTCGCCAAATTTCTTTTTCAATTTTTTCAATTTCCAAAATTTC -CAGGTAATCCTCGGTGTCGCCTCTGCTCTACTCCGCGAAACGATGACAAA -TTTCCGAGAAGCCGAACAGGCTGCCGGCCGCCCGTCCTACATTTCTGAAA -TGGCCATCGGACGGCTTCGAGAAAAGCTACGGGGCACCGATGACGGTGTG -ACGGCCCAATCGTCGAATCTTCAAATTCGGCGACTTTTACGAGAAGCTAC -GAGTGCTGACAATTTATCGCGAATGTTCTGCGGATGGATGCCGTTTTTGT -AGAGAAATCAGAGAAAATTTTTCTCGAAAATTAAAATTTTTACTGTATTA -TTGTTTTCTCGTATCAATTTTTCAGAATTTGCTTTGTTATTTTATTTTAC -GCGCAAAATAATCTTTCTAATTTAGAAATTTTAAAATTATGGAAACTTTC -TGAAATTTCTGCAAAATTCTAGAAAATCAAAAAATTTAGTTTTCCATCCT -AATTTTTTTTTTCGTTGATTTTCCCCAGAAAATTCAAACTTTTACTGTAT -TATTATTTTTTCATATCATGTAATGTTTTTTGTTCAACATTTACATGTTT -TTCCTACCTCTTCTATGATTTCCCCTTCCCCCAGGTCTCATTTTTCTTCA -CAATTTTTAAAATTGATTCACTGTTGAATGTGTTGTCTTTTTTCTATGCG -AATTTTATTAATTTTATGAAAAAAATTTGTAATATTTTTGTGTAAATTTT -GAGTCTTCTTACACTACAAAGTTAACCATTTCAGAGGAGTTTCAAAATAA -ATAGTGAATTTTTACAAAAATTAGATTTTCTGATTTCAGCGTACATGAAT -TGCCCGTTTTCAACAAAATAAGACAACTTTTTATTTTTGCCCAATTTTTT -TTCAGCCATCTAATGACTGTCCTTTTTTTTTGGGCAAAAATAATAAATTT -TCTAAAAGCGTTTAAAACTATTATATTTTGAAAAAAGACCATTTTTTAGG -GCTTGGCAATTTTAAGTTCTCTAGCTACAAATTGAACCAATTTAGAGGTT -TCAAAATTGTGAGTTTTTGCAAAAATTGCCAAATTTTGCCACTTTTTAAT -GGTTTTTGATGGGTTAAACCTAGATTTTCTGAATTCTGCATATATGAATT -ACCCGTTTTTAACAAAATTAGACAACTTTTTATTTTTGCCCAATTTTTTT -TCAATGACTGTCCTTTTTTTTTGGGCAAGAAAAATAATTTTTTGGAATTT -TTTTCTGAAAATGTTCGAAATTTTTGAAGTTTCTCTTGAAGCACTCCGAA -AAACCAAACGACCAGCACTACTTGCAAAGTCCGAAAATTTAAGTTTAGAA -AAATTTTGAAGTTTTAAAAGCTCCCAAACCAGAAACTCACGATATAGAAA -TTATTTCCAAACATTTCCGAAAATTCCAAAAAATGAAAAATCAGAACAAT -TTCGAAATTTTTTTCAAAACACTTCTGAAAAAAACCGAAACTGCAAAAAT -TTGAAAATGTGCTAAACTCCAAACTGTACGATTTTCCACATTTCAGAAAT -TCCAAAATTCGTAAATCTGCCAAATCCCTTCGGCGCAATAATCCCCCGGG -GTACCCCCCCCCCCCGCCCTAAAACCTTTTGCCTCTATTGTCTCTGGCGC -AGAAAATTGAAATTAAAAAATGAATCGATATTTTAAACTGTTATTCGTAG -CCATCTTCTCCGGATGTATAATCGCCTACACGAATCTATTCAATCGATCG -TTTTTCAACGGGTACTGTAGTAATAATGCTACGTGGCAACAGTCACAAGG -CGAAAGCGACAGTCACGTGGCAAATTCGTTGGATTTGTGTCGTGGCGATG -GTGTGAAGCAGTGTATTCCGCCGTTGATGAGGTTCAAACAGTTGTATCGG -GTGAGAAAGATTATCGATTTTTAACACCCGTCTCGCCAATTTTTTTCTCA -GAAATTGGAATTCCCGTCACAAAACTTTTACAGAATGTGAATTTTCGAAG -AAATTGGAATGACACCCAAAAATTTTCTCAGAAATCTAAATTCTCGGCAA -AAGTTTTCTCAGAAATTTGAATTCTCGTCAAAAATTTTCTCAGAAATTTG -AATTCCCGCCAAAATTTAAATCAGAAATTTGAGTTACCACCCTTCTCTTC -AAGTAACAGTATTCAACAATATACAATTAAATAGCTTTTCAAATTCCTAA -AAAGTTTGCTGGAGTTATCAATTTTTGATTCAAAACTCGCTAAACCACTT -GCCCATGTAGAATACATAATCAATTCTGAATAGAACGCTATTTTATCCTA -TTTTCAGACATCAAAACCGAATAGCCTAATCGCATGTGTCATTGAAAAAT -CATTTTCGACATTTCTTACTGCTATTATGTGCTTTTTACACGATCCACAA -ACATTTAAAGACAGCAATCGAACACTGGATTCTGATATTTTTGGAGACAG -GTTTGCGGCAAACGAACTCCGCTGCCGACTCTCGAATTATCAATTTTGCA -GGCTTTGTAAGGATAAAAACGAATTTACCGAGTTGAAGAAGATCGGAAGC -TGGCAGAAAATGTCGATTTTCACTGTGGTTCGGAATCCGATCGATCGGTT -TGTATCAGGCTTCACGGATAAATGTTTAAGAGAAAATGTCTGGAAAAAGT -TCAAAAATCGATGCGCCGGATGTAAGACTGTGCGTTTTATTTGCTAAAAT -CTTTTACTTAAACAATTTTTTTGGAATCTTTTATTTTCGGGAGTTTCGAA -AGTATATTGGAGTTTTTTAGAGAAAAAAATATCAATTGAAAAAGGTTTTT -TGAAAGGGGGTAACATTTTTCTAGGCCACTAGGCTTTGTAAGGTGGCCTA -GAAAATAATGTAAAAATCTAGGCCATAAGGGTTTATTGCGTGATGGCCTA -TGAAAAAGCTAGGTCGCCATAACTTTTATCAGGGTTTAGGAAAGTTAAAA -CTTCGGGCAGCAAGTTTCGCATAATGACCTAAAACTTTCTGGAGAACTAG -GCTATAAAAATGTTCATGATGGTTTCAAAAAGCGGAACATTCGGTGACCA -TAATCTTCTAGAATTTTTAGGAAAACTAGGCCATTAAGGTTTCTTCCGTG -GTCTAGAAATTCTGGAATACTAGGCTGCCAGGGTTTCTAGGCCACATAAG -AAAGGCCTAGATACAAAAATTTCAGAACGGTCTAGAAAAGTGGATAACTA -GGCCACCAATTTTCTCTTCGGAGTTTCAAAAATATATGATTCATGATTTA -CTTTTTTAAGAGTTTTTTTTTTCAAAAATTCTAAACTTTTGACACTAAAA -TGCTTCTGAATTTTTGAAAACTTTGAAAATTAAATGTTTAAAAATAATTT -TTTGAAAATCTCTCAATTTTTTTTCTTCGAAAAGCTCAAAAAAACGATAA -ATTTCCACATTTTGGCCAGAATTTAACATGTTTCGTCGATAAAATGTACG -ATCGGATGCATAGATTCGCGCGGAATCCGTATAAAGGAATCGATTTCGAC -GACAGTCACTTTTTCCCACAATCTTGGTATCGGTAAACGCGCTCTATAGA -TAAAGTCTCAATGGAGCGCATTTGCATTTTGAAATTTGATATATTTGTCG -TTTCAGGAGATGCGAGTTCTCGTCTCATCTTGTCAAATACCAAATTTTTC -AATTAGACGGTGCAAATTTCACAAATCAACTTCTTGGACTGCTGTCCGAG -CGGGGAGTTGATGAGAATGGAATTAACTTTATTAGTGAGTCTTAATCAAG -TTTGGGTCTCACCGCGAAAACCGTAATTGATTGGGGACAATGGGACCCAA -GAGAGCCCAATGGAGCGGAATTGCAACTCCTATGAATTTTCCAGACGGAA -GTCTCCATCACCGGACCCCACACAGCACAATGGATTCCGTGGAACGGGCG -GCCGTCGAGGAAACTGTTCTGAGCAGTCCGTATTTGTTGCGAAAAATAAT -TCAAATGTATTATTTTGACTTTTTGCTATTCGGGTATAAGCTTCCTGATA -TTCCAGTTGGAAATTAGGAAAGTTCTTTATATGTATTTAATTGTTGTTAA -ATAGTAAAAATCGATAAATTGCTTGAATTTTGATAAATTACGGCCACGTC -AATTTTTAGATAATTAACGGGCAAAAAAAATCTAAAATTCTTACAAATTG -AAAAAAAAAATTTCACAAAAAATAATAACATTTAGTCTAAATGTGTTATA -GCTTAGGCTGAGGTTTAGGCTTGGGCAGGTTATTTTTTAATTTTCAAGGT -TTCTCATTACATACTTTATTTCCGAAATACAAAAAAGAAGTCTCACAACG -AGTCATCAGTGCGTGTTGGTGGGTGGGGTGGGAGATTCTGGTGGCGACCT -ACAACTCACAAACAAAGATGACAACAGGGAAAATGTACACGTGGCAATAT -GGTGAAGCTATATGTATATATAATGAATAATGATATGTAAATTTGCATAA -TACAGGAACAGTACGTGATTGCTGGGGCGAGTAGAAATGTGGGTTATTAT -CTATCGATTACCATTACACATGAATTACGCTGGATTACGGTTAGAATTTT -GTGAAAAAAAATGAGTAAAACGCTGGGGCTATAAATCTATAATTGTCGAA -GATGCTCAACGAGCCAGGAACGAGGGGAACATTGCGTCAAACTGGGCGGT -CAATTCCATTAATGATGGTGCAGCTTGTGCATTGATTGCTGCAGCAGTAG -GGACTCCATGCCTCATCACCGAATCGATAATCTTCTTTCCAGATGAGAAA -CGCTCGAGACGGGAGGCGTGTTGGAGCACACGCTGCTTCATTTTCTCGTA -CCATCCAGAGTAGAGAAGCAGAATAGCTGGTGGAAGTTGACGTTCTCTGG -AAAAAAACAAGATTTTCTCTAGTTGCCTTAACACTTGGATTTACAGAATT -AGTGAATATTTAAATCAGGGTGGGCGGCAATTTTTTTTCCGGCAAATTCA -GCAAATTGCCGATTTGCCGGAAGTTTTTAAAAGGATTTTTAAAAGACGGA -AACACTTAAAACTGTGCCTTTTTGAAATTTTCTCCCGATTTCTTTACATA -TTTTCATAGATTTTACTGACTTTTCAAAATAAATGTAGGAACATTTATAG -GATGCGTACAATTTTGCCGATTAAAATTGAAACTGTGAAATTTTCAGAAA -AAATGTGCCGAATCACAATTTGCCGAAAATTTTAGTTCCGACAATTTGCC -GTTTGCCGGAAAAAACCGTTTTCCAAGCCACGTGGATCATTTTTTGAAGA -AAAAAATACGGCAAATTTACAGAAACTTTAGTACCATGTGGATTTTTTAA -GAACTATTGCCAAAGTACGTGGAATGTTCAGAAATTTTTTTGCCTTTGTG -AAATTTTGGATTTTTCTGGATTTTCGGAAAAAAATTCAAATTTTTCTATG -AAGACGAATTTCTGATTTTTTTAAAAATTTTTCACGAACTCAAATAATAC -TCAGACGCGAAATTTTACGTTTTCCGATCAAAACACGGTACCCGGGGTCT -CGAATCGACATGCAGTATTTTTCTCGCTTTGTCATAGTTTCTCGATAAAA -ATGGATTTTTTTGAATTCAAAATCCTTAAGTTTCTACCCAGGGGAGAAAA -AGAAGACTATAAAAATTTGAAGTTAAAGTACTCTTTAAAGGCGCCCTTTT -TTCGAACTTAACCAAAAATTGTCGTGTCGAGGCCTGGTACCGTATTGTGG -TGCGAAAATCATTTAAAAAATTGCGTCGATTTTTGGTTTTTTGTTATTTT -AAAAAATGTTCAATTTTTCAAAAATAGCTTTTAGATAAAAATAATAGGTT -TTTCCTTCTTTTTTTCCGGCTAAATAATTTTAAGAATCCATTTGCCACGT -TTCATCACAGAAAAAAAACTAACTCTGTGCCAATCAAAGCGGCGGTGCAA -ATCGAAATCATTTGCTGAACGACATAGTTGCCATACTGGTGGAACAGAAG -AATATCCAACGCATCACGATTCGACTCGACATCCTTCACATATCCACTGA -AAATCTCCTCCATCATCTCGTGAAGCAACGCGGGCGGTGCAAACAAGAAC -GCTCCCTCGATGACGTGCGACGCATACTTGTCCTGTGACATTGAGAGCAA -GTTACGGAGCAGGCATTTATCGATGATAGTGTCTCTGTACATTTCCATGA -TACCCGACGATTTGATGACGTATTGGATGACGTAGTTGGCGAACTCGTTG -GAAGACAGCCGGTAGCAATTACGGACGATACACGTCATCAGAGAATGCAA -CAATTGAATACGGAATTTGAAACACGGGAGCTTGGGATTCTCGGCGAGTC -TATCGATGACCTGTTGCACGAGACGACATCCATACTTGTCCTGGCACACG -GCCATCAGTGAATCTCCTGACGAGAGGAAATGCACGAAAAAGGTCCACAT -GTCGACTGGAAGTTGCTTGACGACACGTTGAATCACGTGGATCGAGATTT -GATCATCCAAGAGCTCAGCACATTGCCGCCAGGTCGAATGTGCTGAGCTC -TTGGATGAGCTGGAAGACGTTGGAATGGTCGAATTTCTGAAATTAACAAA -TTATTGATTTATTACACCTGGAAAGGCCTAAAAAGACCAAAAATAGCCCT -AAAAATTTCGAAGAAATGGATTAATTTTTAGCTAAAACGTAATTTTTTGC -CAACTTTTCTGTGTCGCGATTTTTTTAAACCAAAATCGAAAAATTTCGTT -TTTCGATATTTTGAACAAATTTCAATTTTTTCGGGAGAATATCTTAAAAC -TTAATTATTTTCCTCTAGGAGCCATTTTGTATGTTTTTTTCATCGACAAA -AAATTTTCGTTAATGTGTGCACCTTTAAGTAGTACTGTAACTTTAAACTT -TCATTGCTGCGGAATTTTTTAAAATTGATTTTCAATGTTTTTCTACAGTT -GTCGTCCAATTTCATGCAATTTAGAAAAAAACAGAAGGAAAAAGTGAAAC -ATCGATTTTAAAAAAATTCCGGAGCAATGAAAGTTCGGAGTTACAGTACT -CTTTGAAGGCGCACACCTTTTTTGTTTTAACAAAAATTTGTCGTGATGAG -ACTGGGGACAGTTTTTCGGCGGAAAAATCGCAAAATTTCGGCTAATATCG -AAGAAAAATCAATTTCCGACCGCTGCGACACTTTAGCAAAAAATTGTGAT -TTTAGCCAAAATTCAGTTATTTTTCGGAATTCCCGTGGCGAGACGTATTT -CTCCCACCTGCAGAGCCAACTGCACAACTCGACATGCGAATTTATCCTTG -CACATGGCCAAAAGCCCTCCGTCGATCATTTGACGAAGCAATTCCCGCTG -CTCGGCCGGTGTTGCGAGCTCGACGAGCTTCTGAACGATGAAATTGCCAC -TTCGACTGTGGCAGAGCCCCACGAAGAGCGTCGTGGATTCGGTGAGCTTC -TCGAAGACGGCTTTACGAATCTGATCTTCGGAATCCAGTGGGTAGTTGGC -CTCCAAGAACTTTACGCCCGATGGATCGATTGCGAAATCGATGAGCTGCC -CGTTGAACAGCACATCTTCGAGCGAAATGAAAATCGGAGCAACTGGTGGT -GGGGTCTCATCGTCGGAAGATCCCGATCCACTGTTGAAGATGTAGCTGTC -CGAGTCGGAGGAGGTGGTGTTGCTTCCGTGGCGGTAGGGAAGAAGCTTGA -CCGGCGGCTTTGGATTCTGGAAATTCGAATTTTAAATTTTTATTATATTT -TCTATTTAAATTAGAAGTTTTTATGCAATATTCTACCTTGTTCTTGTGAG -TTTTGTTCGACAAAAGCGAGAAATCCGGGTCGAAATCGAACGACGCGCCG -AGCATGTTGTACGAGTCTGTGCTTCTACGATTCGGGGTCATTTAGACAGA -AATGAATGAATACAGGTTAGTAGACGCTGAAAAATTTTGGGAATTAGGAT -TTTCAACGGAAAAAAGAGTGAAAATGAGAGGAAAACATGTAAATTTCAAC -GAAAATCGCGAAATTACCGCGCATCAAAATTCAAAATTGAATTTTTCGCG -GTGGCCCGGGTTACGGTGATTTTTAAAGGCGCATGGTTGTTTTGAGTAAG -GTCTTGACGCGAAATTTAAAATTATTGAACATTTTTATTTTATTTTTACA -TTTTTAAAGAAAAAAATGATTAAAATTCGATTTTTTAGGAGAAATTAAAC -ATTTTCACAAAAATTGCAAGAAATCGCTCGCCAAAATTCGAAAATGAAGA -GTTTGGCGGTGCTCATGGATTACGGTGGATTTAAAGGCACATGGCTTTTT -TGTATTAGGTTTCACCACGAAACTTGGAGTTTTGATAGTTTGCTTCCCAT -TTTGGGATTTATTTTTTTAATTTTCGCTCGATTTTCACACATTTTCACTC -ATTTGCACTCAATTTTTTTGCAGAAAAATGTCAATGGATATTGTTATGAA -GTCAGATGAGCAGCCGTTCATCTCTGCGCCTGTATGCTTTAAGTAAGCTC -CAATTTTTGTTATTCTGGCCTAAAATTATTTTTTTGATTTCCAGAACGTT -CGCATTTTTCGCCAAAGCATCCGCAGAGGAATGCAAACTTCTCTTCGGGC -TCCAACGCTCGAGAAAGTTTCCAGCAGGCCACGGGGCTCTCGGAGAAGAT -CACGGAAGACATTTACCGCCAAATTGAGTAGGTTTTTCGATTTTTTTACC -CTTAAAAACTACTATTTTTCTATTTTCCAGCGTCTCCCACATTTCGTCGA -TGGTCTTCAACAGAGAAATGGACGGTGGCATCGAGAGAAATCGGCTCGGC -TCGCAAGCGATTCTGCTCGACGAGAACTCCAGGCGCCGCAATCCACAGTT -CAAATCGATCGCGCTCCGCTCTCCGCTACGATCACATCGATCATAGAGCG -TTGGCAAGGAAATCGCCTCATCTGATGCCTCCGACTTTTATCAAAGAGGA -AATTATGGATGATGAGCTCGACGAGGTGAAGGAAGAAGTGGTTTCCGTTG -GAGAAGCCGCCTTGCCCACGCCAAAAGTCGAACTGAACATGGACCATCCG -GAAAAGGACCTGATCATCAGCATTTCCGTGTATCTCGGCTACACCCGTAC -CCTTCAATACCACGAGATTCGCCTCGGACGTTTGATGAAGATCACGGATC -GGCTCGAGCTCACCGGAGATCACACGCTTCGCGATCTGAAAAACGCGTTC -TCGTGCCCCATCGATTTCTCGTTTTCCGACGATTTTAGCGAGAAAAAGCC -GTCGTTCAAGGATATGGCGAAAAATAAGTGGCCGTCGACGATGTTCTTCA -TTCATGACACGTTTTATATATAACTGGAAATAATTTAATATTTTTCGAAC -AAATTTGAAAACTATAAAACCATCTTATTTTGATAAAACTCCGCCGCTGC -TCTCTGAAGCAATGAACTGCAATCAGACATCGAAGGGATCAGCCGATCAC -GGAACCAACCTGCCATTGAGCTTCTGAAAATTAATATATTTGATTCAATT -TATTGTACGAAATCGTTTTTACCCATATCTGTGAGCTAGCAAGCTAGCTA -ATCGTGATTAATTGTTGGGTATTCCTTCGCGTTCTTCAGCTTCTCCACAA -GCAAAATTCTTGTCTGCTCATCACAAATGATGTCATCAGCATCGCTCTGA -TCTTGAAAATCCTGAAATTATAACATTCTAGAGGGTTTCTGATGAGAATA -GTTACCTTACAACCAACACCAAATACGTTCTTCATTATGGCATCCGGCAG -CTTTCCATAATCGCAGAAGAAGTGCTCGGCATCACGATCGGATGCTCTAT -TTGGGAAACGACCGATGTAGACACGAACCATGTTGAGTGGCCGAGAGAGG -GATCATCTGAAACATTTAAATGTTAACTAAACAGGAGTTTAGAAACTTTA -AAACAACCTAACCTCCGTGATAACGTAGTTAGCTTCTCGAGTGAGCTTCT -TCTTCAAAATAAAACAGAATGAAACAAGAATCAAGTGGGTAAAATTGTAA -AATGAAGTATTTCAGACATTTTCGCTAATTTTGGCAGTAAAAACCTATAA -TTTTGGTAAAAATCGCTTGTATTCTGAAAAAAGAACTCAATATTTAATTT -TTTATAACTGATTTTAAAGAGAAACAAACGAAATATATGAAAAAATCGAA -AAAATCCCTGAAAAAGGCCTCCGCAATATTGATTGTTAAAGGGACACCGA -CTGTTCATCGAATGGGTCCCGCCGCGATTGTCCATTTCGAGCGCTTTTCG -CGATTTTTTACTACTGTAAAAAAGTGTAGGAAAATGTCGAAAAATGTCGA -AAAATGACGTCACAAATGTATTTAAATACATGTTTTTATTGTTACTTGAA -TAAGGCAAAATATGTATTTAAATACACTTTAATTTTCCGACATTACTTGA -ATAACCCCATAAAAAACCCCGAAAAAATTTTTTTTTTGTGAAAATAACCA -GAAAAATACATGTTAAAACAATTTTGTGAACAAAAAACTAAAAAATATTT -TTTTTGCAGAGATGAATCCCACGTGAACGTCGAATTTCCACGCCGCCTCG -TCGAACGGAATTTCAGAAGAATCGCATGTGACACGTGCAAGGAGGCGTCG -GCTCAGTGAGTACAGAAAAATCCATGGGGATTTTTTAGAAATTCGGAATT -GATTCGATTCAATAAAATCGATTTTTATATTAAAAAAAAGGATTTTATTG -GTTTTTAAAAAATTTAAGAAAAAATTACAAAAAATCTATAAAATCGATTT -TTTATTTAAAAAATTGAAACTCAATAAAAGTTCTTTCTAATTTTAGAAAA -ATCGATTAAAAAATAATGTTTTAAAAATCAGTAAGAATCGATTAAAAATT -CAATTTCATCGATTTTATTTATTTTAAAAAAACTTAATTTTTATGAAAAT -CGATCATATCGGAGTCCAAAAAATAATTGGGAAAAAACTAAATTTTCAAG -AAAATAATCGAAAAATTTTAATTTTGTTCAAATAATTGATAAAAACTCAT -TTTTTAGGTTTTTTTTCAAAAAAAATTTGAACAAAAAACACATATTTCTC -GAGCTTTTTTTCACAAATTGACCCGATTTAAATTAAAAATTCATAAGCTA -AAAACCTTCTTTTTTTAACCAAAAAAAAAACGAAATTCCCAAAAATCATC -AATTAAATCCAATTTTTTCAGCTGGATGATCGTCGACCACGACAATCTGC -TTCCCAACTCGCCAGGCTATCTGTGCTCTTCGTGCTACAAGGAATTCTGT -TTCGACGTGAACGGCAACAAAGTGTGCCAGTTTAAGGCCGTACCGTATTG -CGATCGAAAGGACATTGGCGACGGACGCCAATTCTTCACCGAGCTCGATC -TTTAGAGAGCGAAATTTAAAATTCTGTATCATTTTTTGTTGTTTTTTTTT -ATGTTTTTCGATTTGATTGTTTAATTATCAATTTTTGGCCTGTAACTGTG -TATTTGTTGAAATTCCAAATTTCGTTTTTTTTTTAAATAAAATTTCTGTG -TGCAAAAAAATTTATCCAATAAATAAACGGAATATATCGATGATATGGCA -AGTAGGGGGAAACGGACGGGAAAATGATTATTTACAGAAAGGGCGCGCAC -CAGAGGTTTCTCGGGGGAGCCCCGAGGCGGGTGGCGGAGCTTGGCTCAAA -ATCTGTCGGAAAAATGGGTGAAATGAGAGAAGAGGTAACCTAGAAAATGA -GATGAGAAATTCGGAAGTTTTGGGAAAAAAAAATCAACTTTTGAACAATT -CAATTGAAAAATCGATAATATTGATTTTTTTAAAATTCTCTAAGATCGAT -AAATCTGGTTTGGAAAAATCAATAAAATCGAATCTTAAATATCTTTTTAA -AAAACTATTTTCAAAAATCAATAATATCGATTTTTGAACAATTTGAAAAA -TCGATAATGTTGATTTTTAAAATTAAATTTTATTGATTTTTTGAAAATCG -ATTATATTGTTGATTATTGATTTAAAAATCACCAGAATCGATAAATCTGA -TTTGGAAAAACCAATAAAATTGATTTTTACAAAAATCAGCCAATAAAATA -GATTTTTTATAATCAAAAAAATCTATTTTTAAAACCGAAAAAATCGATAT -TTCAAAAATTGAAAAAAATCGATAAATCAATAAATCAATACATAGGTGAG -CTCGTCTCGTCGATTTGTGTTTTTGTGATTGGTCCCGGCTGCTTTTGAGA -TGGCCTAGGCGTTGTTCCGTATGACATTCTGGAATTTTTTTTTGTTGGGA -ATTTGGCACGCCCACAAAATGGACGGTGGCGGAAATTTAATTATTTTAAA -TACCTTTCTGGATAAAAAAAATCGATTTTTCCACTTTTTCGAGTGAATCG -AAAATTAAAAAAAACATTCAAAATTGTTTAGGGTCTCGCCACGAAAAACT -CACAAATGCACGTTATGCGGAGTGTCGTCGGATTCCGGTGTGTTGCTACG -GATCGTGTCGTCCATGCTCAGCTTCATCGTCGATTGACGTCGCCGTTTTG -TGGTGATCTGAGCGAGATTTATTGATTTTTAAAGGCGCATGGCCTAGAAA -ACACAACACTTCGGCCACGGACTTTGGCGGCCGAGTTTTCTAGGCCATGC -TGCGGCATTTAAAGGCACATACCATGATAATGAAGATCGCCAATCCGAAA -ATGATGACCAATGCGAAAGTGATAATTACAATCATCGATGATAAGGAATA -TGATGAAGTTTGCGTGGAAATCGAATCGATGTACGCTTGTGACGTCATTC -CTGGAAATTATTGATTTTTTTTTGGAAAAAAATTAATAATTACTTACCGT -CAACAGTAACACTCAACGAGTCAATTTTGTAATCCGAAATCATAGAGTTA -TTGCGTGAAAATGCGGCTTCCAACCTGAATGTTAAAAAAAAATCTATAAT -ATCGATTTTTTGAAAGTTTTTCGAAAAATTGATAAAATTGACGATTGATT -GTTTGCCCATAGAAACAGATAAAAATCGATATAACTTAATATCGATTTTT -TTTTGTGCACCTTTAAAGAGTACTGTAACTTCAAACTTTCATTGCTGCGG -AATTTTTTTATCGGTTTTTACAATTTTTTGTACAGTTTCCGTCCAATTTT -ACAGAATTGAACAACAACAGAAGGAAAAGTGAAAAATCGTAAAAAATGTC -CGCAGCAATGAAAGTTTGAAGTTACAGTACTCTTTAAAGGCGCACACCTT -TTTTGTTTTAACAAAAATTTGTCGTGGTAAGACTGGGGACCGTTTTTTCG -GCGGAGAAGTCGCAAAATTTCGGCTAATATCGAAGAAAAATCAATTTCCA -ACAGCAGCGACACATAAAAATTAGCAAAAAATTGTGATTTTAGCCAAAAT -TCAGTTATTTTTCGGAATTCCCGTGGCGAGACCCATTTCTCCCACCTGTA -GAGCCAACTGCACAACTCGACATGCGAGTTTATCCTTGCAGATGGCCAAA -AGCCCTCCGTCGATCATTTGACGAAGCAATTCCCGCTGCTCGGCCGGTGT -TGCGAGCTCGACGAGCTTCTGAACGATGAAATTGCCATTTCGACTGTGGC -AGAGCCCACGAAGAGCGTCGTGGATTCGGTGAGCTTCTCGAAGACGGCTT -TACGAATCTGATCTTCGGAATCCAGTGGGTAGTTGGCCTCCAAGAACTTT -ACGCCCGATGGATCGATTGCGAAATCGATGAGCTGCCCGTTGAGCAGCAC -ATCTTGGAGCGAGATGGTGATCGGAGCCACTGGTGGTGCAGTCTCATCGT -CGGAAGATCCAGATCCGAAGGTGTAGCTGTCAGAGTCGGAGGAGGTGGTG -TTGCTCCCGTGGCGGTAGGGAAGAAGCTTGACCGGCGGCTTTGGGTTCTG -GAAATTCTATATTTGAATTTGAAAATCAACAAAATTCAATATTTTACCCT -GCTCTTGTGAGTTTTGTTCGACAAAAGCGAAAAATCCGGGTCGAAATCGA -ATGAAACGCCGAACATGGGGGCCATTTGGACAGAAATGAATGAATACAGG -TTAGTAGACGCTGAAAAATTGGGAATTTCAATTAATTTAGGATTTTTTAA -CGGAAAAATAAGTGAAAATGAGAGGCAAACATGCAAATTAAAATCGCGAA -ATTACCGCGCTTTGAAAGGGACTCCACCGATCGGAGAGACGAGGGAAGTG -GAGAGACGCAAATCGAAGAGACGCCTTTTCAGACATTTTTTCGTGATAAT -TTTGCATGAATTGGCAAGTAGAGCTTACACGTGATGCGAATCATTGATAA -AAACATCAATTGTTGTTTTTAGTGTACTGAAATTCCGGCACAATAGCTCT -CGTAAATCGACACAAAAGTCACTCCGTGGAAAAGTGGAATTTGGATAATT -TTGTTCTTTTTTTTAAATATGATTAACGTTTTTGAAGGCTTTTGTCTCAT -AATTCATCAAATTCAAAACCGGAATTATCCAAATTCCACTTTTCCACGGA -GTGACTTTTGTGTCGATTTACGAGAGCTATTGTGCTGGAATTTCAGTACA -GTAGAAACAGAAAATGTTGTTTTTATCAACGATTCGCATCATGTGTAAGC -TCTACTTGCCAATTCATGCAAAATTATCACGAAAAATGTCTGAAAAGGCG -TCTCTCCGATTCGCGTCTCTCCACTTCCCTCGTCTCTCCGATCGGTGGAG -TCTCTTTTGAAATTCGAAAATAAAAAGTTTCGCAGTGCGCCCGGGTTACG -GTGAATTTTAAAAGCGCATCACGGTTTTGAGTGAGGTCTCGACGCGAAAT -TAGCCGTTTTTGAAGATTTGTCGTTTATTTTGGCATTTTTGAAGGAAACA -TAAGTGAAAATAAACAATTTTAATCTTAATTGAGAGAAACTTGAACATTT -TTACAAAAATTGCAAGAAATTGCGCGTTAAAATTCAAAAATTAGAAGTAT -CGCGGCGCTCAAGCCGTTGATAACAAGCCGTTATAAACTTATATAACTAT -ATAATGTAACTCGATGATTTGTTGATGTGATCTTTAAAAAGGTTGAAACT -GCCCCAGTCGATGTCCGCGCCAGAGGCGCTGTCAGCGGCTGGTTACTTAT -ATATAAAAAATATCGGGAAAAACGCACTTCCGTTCCATTTGTTTCTTTGT -TTTTGTGACGTCACTGAGAATTATGGGCGGGCCCGTCTGCCTTCGTGGTA -AGACCCATCGTGGCGAGACATATCGTGGTGATATCCTTCGTGGCGAGACC -CATCGTGGTGAGACCCATCGTGGCGAGACCCATCGTGGTGAGACCCATCG -TGGTAAGACCCATCGTGGCGAGACCTTTCGAAAATTTGGTGGGAATTCAA -ATTTTCTTAGAAACATTTTTTGGTGGGAATTCAAAATTTTCAAAGAAAAA -CTTTGGCGGGAATTCAATTTTTCAATAAATAATTTTGGCGGGAATTCAAA -TTTTCTAAGAATAATTTTGACGGGAAATTCAAATTTGTTGAGAAACTCGA -GTAAATGCTGGAATGTTCTAGAACCTTCCTGGAGATTGGGGAAAATTTTA -GTATGTTCTAGAACCATCGGCGAACTTAAGAAAATTCTGGAAAGTTCTAA -AACCTTCTAGAAAATTCGTGAAAATTCTGGATTGTTCTAGAAATTTCTAG -AAAATTCGAGAAAACTCTGGAACGTTCTATAGAACCTTCTAGAAAATTCG -GGAAAATTCTGGAATGTTCTAGAAAATCTTGTTTGCCAAAAGCTCTCGGA -AGGAACCGGAAAAGTTTCTTATGATTTGAAGAACGTCTAGAAACGTTCAA -GAAATTTAGAAGTAGTTCCAGGAAACCTGGTATTTTTAAGTTGTAACTCT -TGAAAACTTAGTTATATAATATTCATGTTGCGTTAAAAACTTCTGGAAAA -CTGAGAAAAACGTTCCAAGGCTTAGAAATTTTAGAATTTCATCTTAATTT -CGAGTACGCCAGTCGGAGCACGCGCATTGTGCGAACGGCTGGTATACAAA -CAATAGTCAGTCAATCCCATGGATCAAATTTTGAATTTTTCTAAGACTGA -ACTGTTCCTTTGATATGCAAAATTTTATAAAATTGTCTGTTATTGAAAGA -CATGAAACAAACTTGAATTACAGTAATTCTGTAAATTCTGAACTTACTAT -TAGAATCCTTAGTGAGCACACTTGAAAACGAATGAAATAAGGTATGTGAG -AATACCGTATCAATCAGATACGTCTGACACTTCCCCAAAAAAAACTATCA -GAATATGAGTACGATATGTTATTACTAGTGTGCATCTTTCCGCGCGACCA -TCATGGCTCAGCAGGTAAGACTTCGGCGACGCCTCGAGACGACGAGGTAG -TTGACGACTTTTTTCATTTTTTAGGCAGCGCCCAACTCTTGTCCGAGGTC -TACAGGCTACATGGTTTGGACGGACAGAGTATTTGCTTTATTAGTAGTAA -CAGAAATACACATAAAATCAATTAATAAGATCCATGAAATGCAATAAAAA -TCCAGTTTTCACCCATCTACTATGTCTCTCATTGAAGAACTTTTTCAGAT -AGCTTTTGGTATAGAATATATTAAAATTCATTCTTCGATTTTCTGTGGAA -TTTCTTATTTGAAAGCTTTTTCCATACCAGACAGTCACTTCTCCAAATCC -ATCCTTGAAATTTTCTTTGGGGATATTTAAAATATCATCGAGATACCAAC -AATCTACTGGTTTTTCACCTACAAGACGTGCTCTTGAATTGAAAATGTCT -GGGATATCCTCTGGAATATGTTTTTCTCCTTTGTCATGCTGATAGTATAA -GTTGAATGTGACACTTCCATTTCTCTGGCTGTTTTGTTCAGTCAATCGGA -TTAGCTTTGCTGTGACTCTGTCCATATTGTCCGGAGTAATGAGGAGATAC -GTTTTAGGAAGTAGAACAGTCATACTCTTGGCTGGGAAGTTTCGTTGAAC -ATTTGCAATCACATTGTCCATTGGTGAATAATAGTCGTTTTCCAGTTGTT -CGTTCATTTCGAGTAACATATCCTCAGAGTATTGTAAATCGATCTCCACT -TTTTCCAGAAGAACCCTCGAAACGGGTTGGGTGTTGAATGGTACATTGAA -TACGGCATTTGAAAAGTCTTTAGACGTTTCCAAAATGAAATCCATATTTG -AACTAAACATAGTATTAAAATGACCACTGTAAGCTTCGAACCGGAACTCC -AGTCTGAAATCCTTAACATTCCACTTTGAAATAAGCTGGTATAAAAAGTC -TCTTGGGATTGAAAGGAACTCTTTTCCCAGTATTAAAACGGTGAATGTGT -GGCATGTTACCAATGAATTGAGGAAATAATTTGCTCGAGCACCAACTACG -TACCGCCCTAGTTGCTTTTCGTATATGGTCCGATAAAACAACCTGTAAAA -TGTAATCTTTATAATGTTCCTGAGCATATCATGTCAAGAGTGTCTGAGTT -TTTCATCAACAAAAACAAAATTTGATTTTTTTGTTAATTTTCTAAACAAT -CCGATTTTTGGTTTTCCGGAAAATTGAAACATCGAAATTTTCCGTTTTTC -AATATCCAATTATTCGATTTTCCGATTTCCTCTCAGAAGAACGAAAAAAA -CGAGAATAAAGTTTCCATGACATTGATCGCAGTGGGCTGTTTGTTTTTGG -GATAACTTTAAGTGAAGGAATGGAGAGACTATCTAAGTATGAAAAACACG -AGAATTCACTCTTTTGAGAACCTGTTACAATACGTGTACTGTTATAATAG -AAAAACTAAAGCAGTGATTCAAACATCTGTTCGACGGTGTTCATTACAAA -TGTATCAATTTACACTCACCAGTCTTTCATTTCCAGCGCTTTGTAATGAC -GTGGAGATATCCTGATTTGATTTATGATTTCTATTATTTTTAATTCTCCA -AATAGCTCTTCTCCCAATATTCGCAACTCATCAATTCCAAAATTGCTCAA -TCGAAGATATGCGAATTTCCCGAATAGTTCGTTTAATCTGTCCATAAATC -GATCATGCTCATCAACTCCAAAATTTTCCAACATCAAATTCAAAAACTGC -TGCGGTATCGAATTTCCACCAAAATATTGAAGTTGAATACTATGAACTAT -ACAGTTTTTATTTCTATGAATGTCTCGACATATTTGACAACCACAGCAAA -AATCATTTTTATATTCTTCAACGAGTCCATCTAAAAATCATGAATGTCAA -ATCAGTAGTTCAAAAGCCATATATTTTACTCAGAATTCTGAAAAACAGGC -GCTCATGTCAAAAATTGACTTACAATCTACTCCAATCAAGCAATCGTGTA -TGAGATCATTGAGTATAATTCGAGCATCCACTCCGCACGAAATTTCGTTT -TTCTTAATCGGTTCGACATAAAGCTTGTAGACTTTCACATTTACCGTATT -TTTTAAAAATCTGAAAATAATGTTACAGCTGAGTACAAAACATTAAAAAT -TGGTTTAATTGATTGAAATTTTCACCACTTCTCATATTGTTTCCACGATC -ACAAAAAAGCATAAAAAACTTCAACAGACTCAGAAAACACTTTTTAAAGG -CAAGTTTTGAACCACCTATTTTGATGAAAAATTGTCTGAAACACTTCTCA -GATCGACTTTTCCCTAGCTCAAAGTGATCCTCTGCCGCTAGCTCTTTTTT -AGAGTGGTCATTCGAAAGTCCGGGTTTAAGTTGAAATATTTCCCTTACCG -GTCAAAATTCTATCAACATCAAAATAAAATTGAATTTTTTGGTAGTTAAC -AGAGGAAGCGGCGAGCAAAAAAACCAGGTTTTGAACAATTGATTTCAACT -TACACGAATAAGTGTTTCACCTTGTTTTTGTTTATCTCCAGTGCATTTAT -AAGAAACGAGCAAGTGCATCGACGAAGCTGTTTTAGCGGAAGTTCAGGAT -CTACTTGATTGTTAATGAATATTGATCTTTTTCTTCAATTTTTACAAGTT -TTGAAACTGTGAATTTGTATTTTTCGATGCTCATTTCGAATTTTGTGCAA -AACTTCTTCGCTGAACAATTTATTTATCAGCTGAAAAAAGAGCGAATTAA -AGTAAAATTGAACACAATTTTGATACCTGTCTATAATTAGGGATATCAGT -CCGCTGTATTGATTTTTTTGTTTGAAAAACTGAGTTTTTGTTTATTTGCA -GCGGCAAATTTTTATTAATTTTTTTTGATAAAAGTTCATCAATGCCATCA -GTGTTGTGGCACCACGGAGTGGCGGAAGACCGAACCCTTTAAGCCTCAAG -AGGAACCGAGCAACGAAGACTATGTCAGAGGTGCAGCATGGCATCGTCTA -TTTGTATATGTATTGGAAAGAACAGAACACAGTTTCAATAAATATGTTTA -TTACTCCAAAGGGGAGATAATCAACAGAGGGGGAGTGGGTCGTACACAAG -AGAGAGGGAATTGTCTGGTGTGAGAATATCACGTCCTGCCACGCGGGTCT -TTAGTCTGAAAAGGTCGAGTGTATGAATAGTCGGGGTCTTTGCAGACTCG -TAGAATAATGTCTTTGGTCAACTACACTTTCCAAATAAAGGGAGGGAAAG -GTAGGAAACGTCGGCAATTAGTCTGACTGGGAGCTGTCAATAACGGGGGG -GGGGGGGAAGAGACCAGCAAAACCGAACCAAGAGTGGGGAGGAGAGTTCC -TTTCCTGGTGCCACCGACGCTGCAGCTCGCTCCGTATCGTCGCTCATTGA -GTCGCCGCGCAGCCAATCGTTGCTACGGGGCGCGAGTGTAACTCTCGTTA -GAGAGCGTGTGGGAGCAAGAGACGCAGAAATACAGTAAACTTCTGCGACT -CCTAACTGTATGGTAAGCTTAAGAGCTGGTCTTAAAAGGTCGAATTGAAT -GTACCCCTCGCTCGGAGAACTGCTGAAGCAGTCGAGAGCGAGACATTGTG -AAATGGGCGATACAGCAGAGCCCAGTTCACAACTCTCCGGGGGGCGGGAC -TTGTAGGCTGGTTCACGTAGTGAACTTAAGGTTTGAAGCCTTCCTTTGCC -TTTCTTGGAAGAGATTGGCGGAGTGGAAGGTCGTCTGAGCTCCTGGCTTC -TTTTCGTGAGCGTTCAGCTTCTTTTGAAGATCTAGTATTAGGTGAGCTCG -GAGCTTCTTTTCTAAATCTTGCTTCGTCTGAGCTTAAAGCTTCTTTCCTG -GATTTAATAAATTTTAAAGATGGAAGCATAGGTAGTGAGGGTTCAGGAAA -GTCGGAGTCCGTCTCTTCGTCTTTTTGTGGAATTTTGTCTTTATTGTCTA -TGTCTTCCGCTGTAACCTCAAGAGGATACAGTTGATTTAGTGATCGTTCC -AACGTGGAGTTATTGAAACGAACTCGTGCCGATTCAATGTTTCCTTCTTT -ACTCGGAATGAGCTCCACAATTTTGCCCAGAGGCCATGTGTGTCTTGGCA -ACATTTCTTGTCCGACGAGAACAATGTCTCCTTGTTTAGGATCTCGAGGA -GCATCCCTTGTATTAGTCTTTTGTCTTTCTCTCAGAAACAGGAGATATGA -TGTCGACCAGATTTGCCACAACTTTGCAACTGTTGTTTCAACTCTGGCTA -AGTGTCTTCTCGTGATTTGCTCTGTTGATCGAGCTGTCTTTGGAGAATAT -TCCATCGGTTCGTCTAGATCAACTTCATTCGGTGCATCTAGCTGAACTTT -TGGTAGTAGAAAGTCGATTGGGCGGAGAGCCGTCAGATCATTGGGATCTG -TGTTGTCTGGTGTAAGTGGACGGTTGTTAATCATCCCTTGCACCTGTCTT -AACGTGCTGGACAGCTCGAAGAAGGTTAACTTTTTTTTGCCAATAGTCTT -GCGAAGTTGGTGCTTCGCAATTCCAACAATCCTCTCGTACACTCCACCTT -GCCAAGGGGCGAATGGAGTGATGTTGTGTACCTGAATTTCGTATTTGGCT -AAAAAGCAAATCATTGAGTTGCTTGGTGCGTAAAGTCTGATGTCTTGGTT -GACCATTTGGTGGCCGAGTGTAAATGTTGGTGCATTGTCACAGTAGATAT -GGGGCGGAACACCACATGCACTGGAGATTGCTCTGAGTGCGAGCAAGTAG -TTGGCTGTAGTAGCGTCTGGAATGAGTTCTAGAATGGTAGCTCTAGTCTT -CAGACAAGTGTAGATAAGAGCATAGGCTTTACCTAGCTTGTCATCGTCTG -TCTTGTATTGTATTGGACCCAAATAGTCGAGTCCTACATGGTCGAATGGT -GCAGAAGGTACAGTTCTGCAGTTTGGTAGTCGTGTGTCGTAATTGTATTT -AAAGGGTCGTGCTTTCACCTTTTTACAGTTCACGCACTGAGCAATTGTAG -TTCTTGCAATTTTGCGATCATTTCTGATCCAAAAGTGCAGTCTTACCGTA -GTTGCCAAATAGTGTAATGGTAAGTGGGTATTTCGTCTGTGGACATCTTC -CACAATTAGACACAATCAGATGTGGAACCGGATTGGGTCCCACTATCCAA -TGATGTTTGTTTCCGTCCTCGTCTACTGGGTTACGCAATGTGTCTTGCAA -AGTGATTAAGTAACCGTCTGTAACAACTGGAGAAGTTGTGTCAAAAAATG -TCTGAATCAGTATGATTTTGTCTCTGTCTTTGAATTCGAGAATTCGTATT -GTCTTGCATTGACTGAGCATAAGAACAGTTTCCTGTTATATGACTCGGTG -ACGAGCAAATCGTGCATCTACCATTGTTGATGCAGAAGCGTTTGACTTCA -ATCGCACCCATTGTGCACGTTTGAAGTGGATGGTCTTTTTTGCAGGGAGG -GCACGGATCTCCATCGAGAAATTCTTGCCAATTCTCCACGAGTCTGGAGG -TAGTATTACCCGTCTTTTGTTGAATATGCAGGTTCAGGAGGTTTTCCTTT -AGTTTTCTGTCCCGTTGGACATCAACCAAAGTACGTCGCCAATCTTCCGC -GCAGTTGTCTTCAAGATGTTTTTTGAGGCTTACGATTGGATCGTCAGCCC -GTCTGGGTCGTATAAAGTTACGCGGAGTCAGCTCGGTATAGTCAGCTTGA -TAGTCTTGCATATAGTCTTTGAGATCTTTAATTATCATGTCTTTGGATTT -AATCGTTGAAGGTTTCTGTTTAACAGTTTCCAACAAGTCTTTAATCGTCG -ATAGTCTATGTCTCAAGTCACCAGAAATAACAATCATTTTCTGTCTGGCC -AGATTAGTCGTGGATCGTATGATATCTGTTAAATTCAAAATTGGCGTACC -TGTATCCTTTGCCTTCTCGGCGACGTCCTTGAACATCTCCTCGATGATAT -CCGGCAATGAATTGGCTTCGACCAAGTATTGAGTCAGGTCTTTGTACCAT -TTGTGAAGATCCTTGATGTAGTCCATATGCTGCTGCTTGTCACAATCGAT -ATTGGCGTTAAGCCAGTCGGATGAAGACTTATCTTTGTGCTTCAAGTCTT -CAGTCTTAAGTGCGATACGCGTCAGCAACAATGCTATGGATGATGAAGTG -GAGAATGGGGTCCTGGATTCCCTTCCCAAGCTGCCACCACCGGAGTCGGG -ATCAAGACTTCCACCTCCAAGATGAAAAGTCATTCTTCTTTGAAAACCGA -GAAACTTGTTATCTAAAATCAATAATTGGTTAAGAAGAAAGACAAAATGT -TTTGAGATTAAGTAAAAGACTTAATAAGAGATTAGGAAAGAAAGATGGGG -ATGAAGACTCAATTTGAGTGATAAGAAAAAAAGGTATTTTAATATAAGAT -TCTACAATAGGGATTGGGAAAGGTGTGCCGTGGCCTAATATAGGTTTGGT -GGTACAATAAATAGGGGAAGTAATGACCCAATATGGGTGGGGGGATTATT -AAATGTTACCTAATATGGGTGAATTATTAATTATTCCTTTGGCAGAGGAA -TGTCGGTGAGGGCTAAGAGTTCCCTGTATTGTAGGTTGATTAGTCATGTA -GGGGACTGGTGTAGAGTAATTTGGTGTAGAGTAATTTGGTGTAGAGTAGG -TATTTGGTGTAGAGTAGGTTTTGGTGTAGAGTAGGTTTTGGTGTAGAGTA -ATTTGGTGTAGAGTAATTGGTGTAGAGTAGGGATGGAGGGAATTCAACAC -CGACTGGTCGTGAATCAGATCGGCCCTGAATTGGGGTAGGGGACAATAGA -AAGAAACTACCGTGTGGCCAACTGCCCCCAGCAGGGACCTAGTTGGGATT -GTTTTCACTTGAACACGAAAACAATGGGGGTTGGGAAAGTTAATAGGGAC -AAAGGAGCAAAACGAAACGTCCATTCCCGCATCGAATTGCCTCATAGGCA -CCGCACCCAAACTCTCCTGCCGCTGCAGCAGTCAGGGAATCCGACGCTCC -ACGCTCTCCATCGCGACTGGAGACCAAGTTCTTCTTTCTTCTTATAGTCT -TTTTTTTCTAGTGGCGCCGGTTAATTACTCCATTGCCAACTAGCTGTCGG -GAAGTCAGAAGTCAAATGTCCTTGCGGACGTGGAATATAACATGTTTGAA -ATTAGGGTGGTTTAAGTTTTTTGTGAGATCCCTATGGATAAATTTTGGTT -AATTTTTAAATTTGAAAGGTTTTAAAAGATGTACAAATAATTTTTAATGA -TGTATAATTTTTGGAGAAGGTACTAGTTGAAAGATATAAAGAATTTTTAA -ATTGAAAGTTAAATTAAAATTTTGAGGGGAATTGGTGTAGAAAATTAGTT -AAAATATATTTTTGGAATTTTTGAAATTTTATAATTTTTAAGGATTTTTT -AAATTTTTTAGGAAGTTATAAAAGGGGGTAAATAAACTAACTGTTCGATC -GCCGCGTCCTCCAACGAGCAAATCCTCCATCCATCCAGAGTTCTTGTCTA -CCCGTCTTGTCGTCTATTCCTCCTTTTCTTCTTGTCTCTAGCACACAGGA -GACTGTGCACTATTGTCTTTCCGTTGCAGTCAGCGAGCTGCCAGCAACTA -GTCGCATCGTTAATGGCACCTTTGCCACTGTATTGAATGCTGTGAGCTGT -TTTAAGTGCTATTACACTATAGTCTGTAGAAAACAAGAAATTTTGTAATC -GTCTTTCGTCTTTCGTCTTGAACCATATTAACAGCCGAGATTTATTAAAT -CAAGGAACAAATAACAGCTTCAACAATGTGGTATCAGATACCGGTGAGGA -GTGGTGAGGGGGGAATTTCAAAAAATTTAAAAGATAAAAATTTAGTGATC -GAATATCGAGATATTCGATGGGGATTGTCCTCGTGCCAATTTCTTGGCGA -TCCTTGGTTGGTATCGGCGTCTGACCGGCTGGTGTTGTTGCTGCTGTTGC -TGGAGTTGTGGTGGCGGTGGTCCAAATAGTTGTGGAGCAGGAACGCGAAG -TGGTGGTGGGAACTCCTGTGCGGCTGGTACGAGTTGTGGTGGAGGTTGCT -CTTCGGATGGTGGTGGCGTGTGAGCATTGAATCCTCCAGAGACTTCCATC -GCGAGGGAGATCCTGTTGATCGCTGCGTGCACCACATCTATCTTGTCGTA -CAGAACGACGTGATCCGCGGATTGGATCCACACTTCCTGGGAGCCAGAGC -CTTGTGGAGCCGTCGCAGTCGTCGGGCCATTTGGGTCGCGGCCGGTCTGG -GGGGCTGGGCCCGTACTTCCTGGGAAGTTGAGAAACCAGTCTTCGAAGAA -CTCGGATGGAGATGTGTCGTCGGTGAGCGTCGGGTCGAACGGTCTGAGAA -GATTTTAGAAAATTAATAATAGTATATGGAAAAATTGGATAAATTTTTAG -AATTTTGAAAGAATTGATTGAAAATGTGTATAAATTGAATTTTTTAGAGA -AAAATGATAAAATTTTTTAGAGAAAATAATAATTTTTAGATAATTTTTAA -ATAAAATCGAAACTTCCTTTAGTCTGGCGCTTCGTGGATGGGTAGGCTCC -ACTCAGCTGTCAACTTACGTACTACCAATGAAGAATTGCAGGATAATGTG -CATATTAGATGCAAAACGACGAGAAATAGCGAATAATAAGTCGGGGAAAG -TCGAAATTGTGCTCTGGGAGCATGAGTTTGCCAAACTCACGTCCCTCGGC -GTCTGTGGGCTCGCGAGCCGCCCTTGTGTACGATTTTAGGGGTTTTTTAA -TTTTGAATTTTTAGAATTTTAATTATTTTTAAAGAAAGTTTGGTAGAATA -AAGGGACGGGGGATGTTTAAATAGATGTGTACCTGTCGTCTATCAAGTCT -TCGACTATCGAAAACGTCGAGTCGTCGAAGTTCATATTGAATCGTCTCTT -CACGGCCCGGCGGGGGGTACATGGACGAGAATTCTCTACCGTATTCCAAT -TTGGCTGACTGCGTGCTCAACGTTGAATACTCAGTTTAAAGTTTCGTACA -CCGTTGCGTACTGCACAGCGCGCATTTTAATTGACGAAATTTCGCGAAAA -TTAACAGAAGATTTTTTTCGGAATTATAGAGCTGAAATTGAAAAAAAAAC -TATCAAATTTTCATCGAATTTGTGAAAAATCGTAAGTATGAAGATCTTTT -CTTCACTATATTCAAGGAAAATCGATATTTCGCTTTTCACAGACGAATGA -TGTCTCATTTTACTCGATGAAAGTTTCTGATGAGCTGTTTTTATCGATTT -TTGAGCGATAAAAATGCGATTTGTTGATAAAATGGATCAATTATATAAAG -AAACAACATATATTGCTCTGAGATTACTTTTTGAGAATCAATTCTTTATT -TTTCGGTCATTTTAAATTAAGCATTAAAATAAAAATATTAGAAATCATAA -TAAAAAAAACAGAAAATCGATATATTACTTTTTCTTCGGAATTTCACGAC -TTTTTTGGACGAATTTTATTCTGTAAACTTTCTTCTTCGAATTTGTGTCC -ACGTGGCTTTCAGTCGAAGAAGATTCTGCAGCACTCCTTCTTGCTTGCCC -ACAACTTACTCGAATTTTCTAAAATTTTTAACTTATTGAAATTGTCATTT -CACCTTTACACTCACTTCAGCTAAACTATTACTGCATTTCGGAAGTTGAT -AGGATACTGGTGGAGCAACAAGTGGATGGCTTCTAGTGATTGGCTGGCTT -GTCGAGCAAGTTTGTGTGATTGCCTGAAATAATTTTTGATTTCAATTTTG -AGTTGATTTAAAGCAGTGAACCTACCACCGGGTTCGGACGAGAAAGAGCA -TTACTCGGTAGACCACGGAATCCAATTTTCGTTGAATTGCCTCCAAATGC -AATAGAAGTTTGTACGTTTTGTGAGAAGTCGGGCTGAAAATTTTCAAAAT -TTGAAACTTTTCGAGAAAAATAAAAATCTCACCACAGCATTTCGAGATTT -TGTCGATTGTGGAAGCCTTTTCCTGGAGCGAAAATTGATTTTTTTTTTCG -CTAAATTTTTTCTTTTTTGGGCAGCCGTGACGTCCCGAATAACTGCTTTT -GGGTCCCGAAGATCATTTTGCGAAGAAATTGGCAGAACTGTTGCATCTTT -TGGTACGATGGAAAGACCGGGAATGGACGTGTTCTGAAATAGTTGTGTTT -TTAAGAATGCAGAAATGTTTTTCTGTACCAAAATTACCATAGTCATGTCA -TTCATGATGTTACGACACATGAGCTCTCTCAGAACATGGATGTAACGCCT -TTTCTTGTCCCGGTAATTGCAAAATCTCCTCTCAAGTGCATTGAAAATCG -CGTGGACAGATTCAACTCCTTGTTCTGTGATCCTTCCAATGTTTCTCACA -TCTTTTGCCATTTGTGGTGCATGGTAGACCAACAAGTGCAGCTTTAAAAT -AATTGTTTCTTCGGGAACCGCTACTTTCAAATCCTCCACAAATCCGCGAA -TCGAATTTTGAAGTATTAAGACGTCGGAATCATTTAAAAACTTGTTTCCC -GAAAGTGACATAATAGTTGAAAGCTTTCCCATTGCTGATTTCAATCCGAG -CAACATTGGGCATAAATTTGGGCCAAAAATGTTGAAAGTCTCCTCTACAA -CAGCCGGCGTTAGCAGCAATTTCAAATGGTTTCCGCAAAATGATTGGAAC -CAAGCCTGCTTGTCCGCTCCAAACTTAGCCCAACACTGTCCCATTTTTTC -AAGTGTTCCTTCGGGAGTACCATTCACAATTGTATCGAGCAACAATTTTT -CCGATTGAAGTGCTTTCAGTTCAGCATGCGACTCCAATTTCATCTTTCCG -GTGGCTCCTTGATACTTTTCTTCCGCACTTTTAATTAGGTTAACAGCGTT -TTTTAGAGTTGCTTTTCGTGTTTTCAGGATAGGAAAAGAAGTAGTGTTAT -CCAAAGTATCAGAATATTTCCAGAGGGGATTGAAGATATATTTGTCAAAA -ATACCCATGATAATGTGCAGAAGAGGAATCAAATAGAACATGATCGCAAC -GTGTGGCAGAAGTGGAGTACATCCTTTGCGAACACCCAAGTCGCCATTTT -CACAACAAGCTTTGTAAAGATCGATTGTTCGTGGGTGGAATGTTTCATCA -ACATTCATATCCTTGATTTTCATCCTCTCTTCAGCTCCCCGTGGATTCTG -TGCAAAACATTTGAAGCAGAAATTGTGGGATGAATGTCCTTGGTGTCCAA -GAATATCAGATTGAAACTTGCAATCTCCAGTTGCAATTTGCACAATTTTT -GCGGTTTTTTGAACTCCTTTGTCCAAATATCAAATTTTCGTTAGCTTGCC -AAGCTGCTCAAGAACGTCCGGAATGAATTTTTTCAGAGACGAATAATTGT -CGGATCCGTCATATACTGCAATTACCATAACGTGTCTCGAAGAATTCGGT -CGAGATACGTTTCCGATTACCAATGCCAACTTTGTGCTTCCACCTCCAGC -GTCACCAACGACTCCAATCTTGATTACTCCTTTCGTGTATCCGTCGTCCA -CAAATTGATTTGAATTGCATAGAAGCTCTATTCGATAGGCTAAAACTTCT -GCAATTTTCATGCACTGCACAATGGTAATCACTTTTCCTTTATTGTCGAA -CGAAGTGGAAACTTTGAAACTGGAGATCATTGATAACTGGATTGACAAAT -CTCTTGTGTTCTTTACCGATGGAAGCAAATCATAGCCAATGGCATTAGTC -AAATAGTTTTTGATTTTTTCCATCTGACTTAGAGATAATCCGCATTTTGA -TAAAAAGTCAACGGCCTCAAAGTTTGAAAGCTTGTTTTTGTAGCTTTGAT -TCTCTTCTGAATTCAGGAATTTTGTGAATTTTCGAATAAATTGTCCGACG -TCATCCTCGAGGCAGATTTCGTGTTGAAGCAAGTGAAGAGCTTTGCGAAA -TCGATTTTTGATACAACTTTTGCTTCTTAGATTCGAAATATTAACTTTAA -AAGCTGATTTTTTAAGGTTTTCAACTTCTTCGGCGTGTCTTTGTAGACTC -AGAACCATAGCTTTGCCACTTTTCTTCACATCTGCACAGCTTCTCACCAA -TCGACCTTCTATACCACTGACGATCGTTCGTATATTGCATACTTCCATTT -GCAGCGAAGAATTAGATGCTCTTATAGTGATATTTTCATGGCGGACTATT -TGCATTTCTTCCGAAAACACCGCAAACTCATCAATCCGCTTTTGTATTTC -TTCTGATATTTCATTTTTTTCATTTTTCAGTCGTTCGATCGTTAGTCGGA -GCATTTTGATCTGCGGAATTTGCTCAACATTGGAGATTATTCGAACCCTC -GGTGTACTGAACGAGTTTCGTAAAGGTGTCGGTGGAAATACGGGATTGGA -GAATCTCAGCAAAATCATATAATATTAGTTTTGAAATATTGAAAAAAATT -ACATTGTGAGAAAAAGTCGGAATTTCGTCACTAAAATCCATTTCCACGTC -TCTCGTCAGAATTCCTTCATCCATATTGAAACAATTTGACGACCTGCATG -TAGTTGCGGAGCTACTGGAAGCAATGTCGGGATGGTGGGAGTTTCGATCT -TCTGAACTGATTTCCTGATTAGCCTGTGGCGACGAGCTGCACGTCTGAAA -ATCACGTTTTTGAAGTTAGAACAAACTACTCCAACTTAATTAAAGTTGAC -AAAATTGAGCTGAACGAACCTCCACTTTCGAATTGTTCAGTTCTTCCTCT -TCAGTTTGATCTTTTGAAACTCCATTAGCACTGTTCCTTGCTCTCTGGGC -ATTTGCTAAAAGAAGGCCTGCACAAGATTTTTCTTTTCTTTTTTGTTTGA -AGTATACTTTTGTCATCTGGAAATATTGCATGAATATTATAAGGGAAACA -ATTTTTAAATATCGATTTTCACGAAATTTGAAAAAATCAATAATTTGGGC -GCATGATATTGAGCTGAATGTTTCGAATTTAGAATCAGCATGCTTTTATT -CATATTTTAGGATCTTTTTAAAAAATCTGGACCAACAGTTTTTGAAAAAA -AAATACTTTTCGTTCAGAAATGTACTGATTTTCCACTGATTTTCACGAAA -TTTGAAAAAATCAATAATTTAGGCGCATGATATTGAGCTGAATGTTTTGA -ATTTAGAATCAGCATGCTTTTATTCATATTTTAGGATCTTTTTAAAAAAT -CTGGACCAACAGTTTTCGAAAAAATTCAATTTTTGTTCAGAAATGTGAAT -ATTCACTAAATCGAAAAAAATAATTGCAAAATCCGTCGGCTGAACATTCA -AAACTTATCAATTTGAAATCAGCATATTTCAGTGTATAATTAAAAAAGGT -TTCAAAAATTCTGAGACCAATTTTTGTTGAGAAAAATAATTTTTCGTTCG -AATTATCGATTTTTCACGAAATGCCAAAAACAGTAAACTTGGGCCCATGC -TAAAAGCCTGAATCTTTCAAATTAAAAACCAGCATGATTTTTTCTATATT -CTAAGACGTTTAAAAAAAATCTGGACCAACAGTTCTTGAGGAAAGTAATT -TTTTATACAAAAATGTGCTGATTTTTCACTAAATTCAAAAAAATAATCAA -GTTGGGCCCATGCTATACACCTAAATCATTAAAATTCAGAACCGCCATGT -ATGTATTTTTTCATACCATAGGCTCTTTAAAAAAAATCTGGACCAACAGT -TTTTGAGATATGTCAAAAAAAACAACTCACTTTTTGACGTTTTTCGCCTT -TTCGCGGATGATGCGGTCGATTTTTGCGGCGATTTGTGGTCTTTCGCTGA -AAATATTATTTTTATTTCAATTTTTAACGAAGAAAACAAGAAAAAACGAC -GAGAAAACATCAAAAAACACGAAAAAAACGTCGAAAAACTCCCGCAACCT -CATGAAAAAAAATAAAGCACTGCAGCCGCGGGACTAGTTTTCGCAACTTT -CTAGGCCATGTCCCGTTCGCCGTGCCGTGTCTTGTCGTGGTGGTGTGAAG -TGTGTTGGTGTGAAGCGTGTGAGTACGGTAGGCTGCTGCAGATGTGGTGT -GAGCTGTAAAAAATCGAAATAATTCAAGAATTACGACGATTTTCGTATTT -TGAGAAGAAGAAAATTTTAAATCACGAAAATTCGAGAGAAAAAATGATCA -AATTCAGTCTCAGAAGCGAAAAATGAACTTCTTTGTCTGGAAAACAGCGG -TTGCTCGTGAGAAAAAATGTTTAAAATTGAAGAAGATCAACAAAAACAAA -AAAAGACACGTAAATGCAACTTGTTTTTAAAGGTCGTGGCCGCGTCGCGG -TCGCGCCGCGTGCGCACTTTTGTAGAAGACTCCGCCCCCTTTTTTCTTGG -CGCCGTGCCAATTTTTAGAAGGAAGAGCGTTTTTGGTTGAAATAATCGAT -TTTCGACGAGAAAATAGACTAAATCAAGTATGGTGAATCTGATTAAAGGC -ATATTAACTTTGTAAACTGCACAATTAACTAGAAATCGTACTATAACCGA -ATATAGTCAAAGGGTCGCTCAGTTCCCCCGGTCTAGAGTCCCAGGTTCAT -CTTTCGAGCTGTTTCCTGAGAAATTGTACAGGATTTGTCTGAGTCGTGAA -CTGAACACGCTTTTCAGGTAAACGTCGTCTGGATGTCCTGGAAATCAAAT -GTTAGTCTTTGTATCGATGGAAAACATGGTTTTCTCAAGGAAATAGTCGG -AAAGTCGGTCGATGCACCATGTTGTGGCACCACGGAGTGGCGGAAGACCG -AACCCTTTAAGCCTCAAGAGGAACCGAGCAACGAAGACTATGTCAGAGGT -GCAGCATGGCATCGTCTATTTGTATATGTATTGGAAAGAACAGAACACAG -TTTTAATAAATATGTTTATTACTCCAAAGGGGAGATAATCAACAGAGGGG -AGTGGGTCGTACACAAGAGAGAGGGAATTGTCTGGTGTGAGAATATCACG -TCCTGCCACGCGGGTCTTTAGTCTGAAAAGGTCGAGTGTATGAATAGTCG -GGGTCTTTGCAGACTCGTAGAATAATGTCTTTGGTCAACTACACTTTCCA -AATAAAGGGAGGGAAAGGTAGGAAACGTCGGCAATTAGTCTGACTGGGAG -CTGTCAATAACGGGGGGGGGGGGGGGGGGGGAAGAGACCAGCAAAACCGA -ACCAAGAGTGGGGAGGAGAGTTCCTTTCCTGGTGCCACCGACGCTGCAGC -TCGCTCCGTATCGTCGCTCATTGAGTCGCCGCGCAGCCAATCGTTGCTAC -GGGGCGCGAGTGTAACTCTCGTTAGAGAGCGTGTGGGAGCAAGAGACGCA -GAAATACAGTAAACTTCTCCTAACTGTATGGTAAGCTTAAGAGCTGGTCT -TAAAAGGTCGAATTGAATGTACCCCTCGCTCGGAGAACTGCTGAAGCAGT -CGAGAGCGAGACATTGTGAAATGGGCGATACAGCAGAGCCCAGTTCACAA -CAATCAGACTAACTGGCACTTACGTATAAATAATATTATGGGTTTCGTCG -CTCCCCCTCCAAATGTTTTAAAAACGATTTAAAACATAATTTATACTGTT -TTTTTTTACTACTGACCAATGAAAGTTCATGGTTGATAACATAAATCCCC -ACATTTTCAGAAAAATGGATAAGCAGAAAAAAAGTTATTAATGAACTCAT -AATTTTCATCGAAATTAGCCAGCTTTAGTTTCGGTGTATTACCAGAAAAC -AAATTTAAGTGATCTTACTCTCAACTCCAACAGAGTATCTAATTGATTAG -ACACATTTTTTACAATCTTGCTGACAATTGTGCGATTTTTGAAGATTTTG -TCAATAAGCACGTGATCCTGAAAATAAAAAAGTGAGTAATTTTACGCTCG -CGAAATTGTGAGCCAGTGGCTGCCTAGATTTTCAATTTGTTACATTATTT -TGCAGCCATACGTGGACCATAATTCTGGCGACCACTTTACGGCATTATAA -TTTTTTGAACTGCAAACAAAACATGTAAATATACATATATGTATACTAGG -AATTCGCACTAAAGTAAATTATTGAAATTCGTCAACTTTTATTTTCATTT -CTTATATTTTGTCTAATTTTCAACGAATTATTGAAAATGAAAATTTTTAA -TTCACGTCAAAATTAGTGAACGCGGTGAACGGCGACGGCGAAGGCGGGCC -GGCGTGAGGCCGGCGTGAGGCCCGCGTTTCGCGCCTCACTTAGCTGGAAA -CCCTAAGTTTCTCCAATTAAATTACAGGTGATATACATTTTTCCTCTTTA -GGATAAGAAAAGATCATTTCCTAAGCCTGACAATACAAAAATGTGGTTCA -CGTTTTTATTTTTCATAACTTAAAAAAATACTATTAAAATGAGGGCATGT -AATACACAAATACCGGCAAACGGTGTTTCAAATCAAATATTGAAGAAAAA -ACAAACAAAATATGATGAATTCTCTTTGTTCTTACCAAAATCGAAACCAT -CATTTAAAATTTAGCAATTTTTTACAGTTATATTTGGTAATTACGGCCCA -TTTTCTATAATATAAAGAAACAATTGAAACTGATCCACCCTGTCCGCCGA -CTATTGGGCATCGACAGATGGTGTTCTCAAAATACCAAAAATGGGTGGAA -CTCTCTCACGAGCGCTCTGCAGGTGTCGTTTTCCTTTGCAAAGGACTGCC -CTTCCATTCATTTGTGTCTCTATACAACATCTCATCTGTCATGCAAACCG -ACATTCCCAACATACTCGAAATCCCAATTGATGTAAGTTCTTGTTTCTTA -AACTAAAATTAGCCAACTATTTTCTAGAAATATCAATCTAGACCGAAATA -CCTTTTACTCTTGAATGATATCAAAAGTTTAAAAATGTTTTATCTGGTAA -ATATATTATTCAGTCAATAATAACAGAGCAATAATTTCCTATTTGTAAGA -CGGTTTGCCAGCCCTACTGATGTAAGCTAAAGGTCCTACAAAAAATCCCT -GAATTTTGGGTCTCCTTTGCTAACTACAAATGGTAGGCAAAAGAACATAT -TTGTGTACAAAAAAGTATGCAAGCAAAAGAGACAGCGTAGGCAGGCAAAA -GATTCATAAAAGAGAGATAGCCCCCGCGGTCAAATCATTCTACTAGTGGC -TTGAAGCCTCTGTTGATGTGATAAAAGTAACATTTTATATAGCATTGTGT -TCGATTTTTCTAACAAATAAAATGCATATCATTACTTATACAGTGCGTGC -ATGTTCTTTATGCCACCCCCAAAGTTTTTAATCATGGCAGTTTCTGTGTA -ATTTGGTGAGCAAAAAGTATTGAAAACCTATTCACAATGAAAAACCTAAA -CTCAAGAAATGTTGTGATTATATCTCGAAAATTGTGAAAAATAAGACAAT -AAATCAAAAATTGGCCGTGCAACTTCTATATGCCACCTCGGATTTTTTTA -TGATTTCTTATGATTTTAGACTATTAACTTATTATTCAAATAAAATTCGA -TTCAATTCGTATACATTTCAGTGCTAAATAACTATTCCTGTAACTTCTCC -CAAAGACGATACGATGATCAAAATATGGGGATATGTTCTAGATACTAATT -AAACATAGTATGTGAATATTGGTTCACATTGGTGGATTTTTAGCGTCGCC -AGAGGGACATATTTGGTGTCCCCAGCCGTTTTTGGTGAAAACACTATTTC -TCTTTTTTTTCTCGGTGCCAATCAAGTTGAGAAATTTCAGGCATGCTCTC -GAACCTTCAGGAAAGATCGAATACTGCAGAAAACCTGTAGACTAGGAAAA -CAACTTGGAAGTTTCTTAAAAGTTTGGAATTTTACTAGAATTTTCTGAAA -AATTTCAGAAAAAAAGAGACTTTCAAGAAACTTCTGAAAACTTCGAGAAA -GTTCTGGAATGTTCCAGATTTTTCTAAAAAGTAACAAATTCCGTTCAGAA -CAATGTTTTGAATATATGCCAGAATCTTACTCAAGTAAAATAATTTTTTT -TAAATTCTGATACTCCAAAAATATTATGAAATTTCAAAAAAAATTAAATT -TAATAGACGTTTGCAATACTATTGAAGACCTGAAAAAATGTTAGAAATTT -AGAAATTGTTCATTTTGAAGTATTCGAAATACTGTTCGATTATTCATGAG -ACTGATAATGTTATCAGTTTTTTTTATTTGAAAGCTTTCTAAGAATTTCA -TATGATTAGAACATCGAAATAGTTTTACTTTAAAGAAAAAATTGCTCCTG -GAAAATTTTAACTGCTGAAAACTTGGTTACAGAAATTTTATGATGCTCAA -ACACTTCCTGGAAACTGAAAAAAAAAAACGTTTCATCTGCAAAGAAAAAC -TTAGAACAAATTTCAATAATTTACTTTAGTGCAAATTCCTAGTATACATA -TATGTATATTTACATGTTTTGTTTGCAGTTCAAAAAATTATAATGCCGTA -AAATGGTCGCCAGAATTATGGTCCACGTATGGCTGCAAAATAATGTAAAA -AATTGAAAATCTAGGCAGCCACTGGCTCACAATTTCGCGAGCGTAAAATT -ACTCACTTTTTTATTTTCAGGATCACGTGCTTATTGACAAAATCTTCAAA -AATCGCACAATTGTCAGCAAGATTGTAAAAAATGTGTCTAATCAATTAAA -TACTCTGTTGGAGTTGAGAGTAAGATCACTTAAATTTGTTTTCTGGTAAT -ACACCGAAACTAAAGCTGGCTAATTTCGATGAAAATTATGAGTTCATTAA -TAACTTTTTTTCTGCTTATCCATTTTTCTGAAAATGTGGGGATTTATGTT -ATCAACCATGAACTTTCATTGGTCAGTAGTAAAAAAAACAGTATAAATTA -TGTTTTAAATCGTTTTTAAAACATTTGGAGGGGGAGCGACGAAACCCATA -ATATTATTTATACGTAAGTGCCAGTTAGTCTGATGGCATTGATGAACTTT -TATCAAAAAAAATTAATAAAAATTTGCCGCTGCAAATAAACAAAAACTTA -GTTTTTCAAACAAAAAAAATCAATACAGCGGACTGATATCCCTAATTATA -GACAGGTATCAAAATTGTGTTCAATTTTACTTTAATTCGCTCTTTTTTCA -GCTGATAAATAAATTGTTCAGCGAAGAAGTTTTGCACAAAATTCGAAATG -AGCATCGAAAAATACAAATTCACAGTTTCAAGACTTGTAAAAATTGAAGA -AAAAGATCAATATTCATTAACAATCAAGTAGATCCTGAACTTCCGCTAAA -ACAGCCTCGTCGATGCACTTGCTCGTTTCTTATAAATGCACTGGAGATAA -ACAAGAACAAGGTGAAACACTTATTCGTGTAAGTTGAAATCAATTGTTCA -AAACCTGGTTTTTTTGCTCGCCGCTTCCTCTGTTAACTACCAAAAAATTC -AATTTTATTTTGATGTTGATAGAATTTTGACCGGTAAGGGAAATATTTCA -ACTTAAACCCGGACTTTCGAATGACCACTCTAAAAAAGAGCTAGCGGCAG -AGGATCAATTTGAGCTAGGGAAAAGTCGATCTGAGAAGTGTTTCAGACAA -TTTTTCATCAAAATAGGTGGTTCAGAACTTGCCTTTAAAAAGTGTTTTCT -GAGTCTGTTGAAGTTTTTTATGCTTTTTTGTGATCGTGGAAACAATATGA -GAAGTGGTGAAAATTTCAATCAATTAAACCAATTTTTAATGTTTTGTACT -CAGCTGTAACATTATTTTCAGATTTTTAAAAAATACGGTAAATGTGAAAG -TCTACAAGCTTTATGTCGAACCGATTAAGAAAAACGAAATTTCGTGCGGA -GTGGATGCTCGAATTATACTCAATGATCTCATACACGATTGCTTGATTGG -AGTAGATTGTAAGTCAATTTTTGACATGAGCGCCTGTTTTTCAGAATTCT -GAGTAAAATATATGGCTTTTGAACTACTGATTTGACATTCATGATTTTTA -GATGGACTCGTTGAAGAATATAAAAATGATTTTTGCTGTGGTTGTCAAAT -ATGTCGAGACATTCATAGAAATAAAAACTGTATAGTTCATAGTATTCAAC -TTCAATATTTTGGTGGAAATTCGATACCGCAGCAGTTTTTGAATTTGATG -TTGGAAAATTTTGGAGTTGATGAGCATGATCGATTTATGGACAGATTAAA -CGAACTATTCGGGAAATTCGCATATCTTCGATTGAGCAATTTTGGAATTG -ATGAGTTGCGAATATCGGGAGAAGAGCTATTTGGAGAATTAAAAATAATA -GAAATCATAAATCAAATCAGGATATCTCCACATCATTACAAAGCGCTGGA -AATGAAAGACTGGTGAGTGTAAATTGATACATTTGTAATGAACACCGTCG -AACAGATGTTTGAATCACTGCTTTAGTTTTTCTATTATAACAGTACACGT -ATTGTAACAGGTTCTCAAAAGAGTGAATTCTCGTGTTTTTCATACTTAGA -TAGTCTCTCCATTCCTTCACTTAAAGTTATCCCAAAAACAAACAGCCCAC -TGCGATCAATGTCATGGAAACTTTATTCTCGTTTTTTTCGTTCTTCTGAG -AGGAAATCGGAAAATCGAATAATTGGATATTGAAAAACGGAAAATTTCGG -TGTTTCAATTTTCCGGAAAACCAAAAATCGGATTGTTTAGAAAATTAACA -AAAAAATCAAATTTTGTTTTTGTTGATGAAAAACTCAGACACTCTTGACA -TGATATGCTCAGGAACATTATAAAGATTACATTTTACAGGTTGTTTTATC -GGACCATATACGAAAAGCAACTAGGGCGGTACGTAGTTGGTGCTCGAGCA -AATTATTTCCTCAATTCATTGGTAACATGCCACACATTCACCGTTTTAAT -ACTGGGAAAAGAGTTCCTTTCAATCCCAAGAGACTTTTTATACCAGCTTA -TTTCAAAGTGGAATGTTAAGGATTTCAGACTGGAGTTCCGGTTCGAAGCT -TACAGTGGTCATTTTAATACTATGTTTAGTTCAAATATGGATTTCATTTT -GGAAACGTCTAAAGACTTTTCAAATGCCGTATTCAATGTACCATTCAACA -CCCAACCCGTTTCGAGGGTTCTTCTGGAAAAAGTGGAGATCGATTTACAA -TACTCTGAGGATATGTTACTCGAAATGAACGAACAACTGGAAAACGACTA -TTATTCACCAATGGACAATGTGATTGCAAATGTTCAACGAAACTTCCCAG -CCAAGAGTATGACTGTTCTACTTCCTAAAACGTATCTCCTCATTACTCCG -GACAATATGGACAGAGTCACAGCAAAGCTAATCCGATTGACTGAACAAAA -CAGCCAGAGAAATGGAAGTGTCACATTCAACTTATACTATCAGCATGACA -AAGGAGAAAAACATATTCCAGAGGATATCCCAGACATTTTCAATTCAAGA -GCACGTCTTGTAGGTGAAAAACCAGTAGATTGTTGGTATCTCGATGATAT -TTTAAATATCCCCAAAGAAAATTTCAAGGATGGATTTGGAGAAGTGACTG -TCTGGTATGGAAAAAGCTTTCAAATAAGAAATTCCACAGAAAATCGAAGA -ATGAATTTTAATATATTCTATACCAAAAGCTATCTGAAAAAGTTCTTCAA -TGAGAGACATAGTAGATGGGTGAAAACTGGATTTTTATTGCATTTCATGG -ATCTTATTAATTGATTTTATGTGTATTTCTGTTACTACTAATAAAGCAAA -TACTCTGTCCGTCCAAACCATGTAGCCTGTAGACCTCGGACAAGAGTTGG -GCGCTGCCTAAAAAATGAAAAAAGTCGTCAACTACCTCGTCGTCTCGAGG -CGTCGCCGAAGTCTTACCTGCTGAGCCATGATGGTCGCGCGGAAAGATGC -ACACTAGTAATAACATATCGTACTCATATTCTGATAGTTTTTTTTGGGGA -AGTGTCAGACGTATCTGATTGATACGGTATTCTCACATACCTTATTTCAT -TCGTTTTCAAGTGTGCTCACTAAGGATTCTAATAGTAAGTTCAGAATTTA -CAGAATTACTGTAATTCAAGTTTGTTTCATGTCTTTCAATAACAGACAAT -TTTATAAAATTTTGCATTTCAAAGGAACAGTTCAGTCTTAGAAAAATTCA -AAATTTGATCCATGGGATTGACTGACTATTGTTTGTATACCAGCCGTTCG -CACAATGCGAGTGCTCCGACTGGCGTACTCGAAATTAAGATGAAATTCTA -AAATTTCTAAGCCTTGGAACGTTTTTCTCAGTCTTCCAGAAGTTTTTAAA -GCAACATGAATATTATATAACTAAGTTTTCAAAAGTTACAGATGTTTTCG -GCCGAAATTAGACTATTTTGCAATATTTTGCGACTTTTTGCTGAAAAATG -GTACCCATCAGAGATGTGCGGCATGTGCCGAACGGCATGTGCCGATGTGC -CGAAAATTATTCCACTCGGCACATCGGCATGTGCCGACCTTTTTTGTCGG -CACATTTCGGCACATTTCGGCATATTCGGCACTGTCTGGAATATGTACCA -AAATTTATTTTTTAATTTTAAAAATGCAAAGAAACTTCAAAAAATTGATT -AAAATTTTCGGAATTTATCATTTCAACTTATAGTTTACTAACTTCAATAT -TAAGACAAATGCACTGCATTTTTTATGGGGTTATCCAACTGAATGTTCCC -GCTTTTTCCTCCTGTTTCCCCCCTCTAGTCGCGATCCAACTGGGAGGAAA -AATGCATTTTCCCCTCGTTTTCGCATTTTTTAGCTGCGAAATTTCAGAAC -TGAGCTTAGGGTGGGCATTTATAGACTTTTTTTAATTTTTTTTGACCAGA -AAAAGTTAAATTTTTATAGTTATTTTACCAATTGGACCTTAAATTTGAGC -TATGATATCTTTGTGGTAAGCCAGAGTCATGGTGAGTGATCAACTACAGA -GTTGTAGCAAATTTTCTGTTTAAAATTTTGTTAGTTGATCAATTCTTGGT -ATCATAGATTTTCACAGACTAACATAGCTGTGAAACTGGACAATTTCTTA -ATGTAAATTGCGTACACGAGATTTCTCTATTTTCCGCGTGGAGTACTAAT -ACCAAAAATTGATCAACTAACAAAATTTTAAACAGAAACCTTGCTACAAC -TCTGTAGTTGATCACTTACCATGACTGTGGCTCACCACAAAGATATCATA -GCTCAAAGTTAAGGTCCAATTCATTTTAAAAAAAACTATAAAAATTTAAC -TATTTCTGGTCAAAGAAAGCTGGAACCGCATTAAAAATTATGTTATTTTA -GTATTTCAACAAATGTCTAACTGTGAAAATTAAAAGTAAGTTTGAAAAAA -TTTCTTTAAAACATTTTTTGATAATTTTTTCATGTCCTGTGCAGATTTCA -AATTTTGAAACAATACTTTTAATTCTCATATATCTCCGTTGAAAAATTTT -TTATGACAAAGTGATCAATTACAAAGTTGTACTTTGGATTAAGAAAAAAA -AACTTTGTAGTTGATCACTTTGTCATATAAATTTTTTCCACGGAGATATA -CGCATCCGAAGTGAATGAGTTTTCACTATCAATTCTACTAAACCCTATGT -TTTTGTCTGAAATCGTGTTCAGAACATCCAAACTGAAAAAAACAACAAAC -ATTGCAAGTAATTTTTTGTTATTTATTTAAATTGATGAACTTTTTGTTTT -TTTTAAGAAGCTATATAGTATCTTTGCAAATGTGCCGAATGTGCCGATTT -TTTTAGGTTCGGCATGTACCGAGTGCCGAGAAAAAATTAATTCGGCACAT -CGGCATGTGCCGATGTGCCGAAATTTCAACAAGTGCCGCACATCTCTGGT -ACCCATCGTCTCGTCACGACAAATTTTTGTTAAATTCGAGTATGTGTGCG -CCTTTAAAGAGTACTGTAATTTGAAACTTTCGTTCCTATGGAATTTTCTT -TGACTTTTCACTTTTTCCTCTGGTTTTTATCCAATATTCATAGAAAAAAA -GAGAAAATTTTTCTAAAAATCGAAAGTTTGAAGTTACAGTACTCCTTAAA -GGCGCATAACGTTTCGGAATAAACAAAAATTTGTCGTGGCGAGACCTGAG -TATTATTACAGGAACGCAAAATTCGGAGAATGCGTTTTACACAACATATT -TGACGCGCAAAATATCTCGTAGCGAAAACTACAGTCATTTTTTAAATGAC -TACTGTAGCACTGGTGTCGATTTACGGGCTAGATTTTTATTAATTTCTGA -AAATTGAGCACCCGTAAATCGACACTACTGTAGTTATTTGAACAGGATTA -CTGTAGTTTTTCGCTACGAGATAATTTGCGCGTCAGATATTTTGTGCAAT -ACGCATTATAAGGGACAAGTTCTCCAGTGAATTCTTCCAATTACATTGAA -ATCCTTCTATTTTGAATACAAATTACTCAAAAGACAAAGTGTCGATTTAG -CCTAAACATTGCGCATGCGTAATTTCTGAATCTTGTTCGTTCTTTACATC -TGCACACTTGGGTAAGAAGTTGGGCAGCCTATGTTTTAGAGGGAAGTCAA -CAATGTTATTTTCGCACTTGTGGCAACAGAGTTGAAACTACGGTACTGTA -TATGGGTACACCTTTTAAAATTTTAAACAAAAATTTGTCTTGTTGAGACC -GGAGCACATAGATATTCTCAGTGTGTATTTGTCTAAAAACCTGCCAATAT -TTGAAAATCTTTCAAAACTTCAATATTTTGCTCCAAAAATTAAATTTTTC -AAATAATCTACAAAAAGAATCCAATTTGACTGAAAACCTGCTAATATTTA -AAAATCTTTCAAATGTATAATTTTTTTGCTCCAAAAACTGATTTTTTTCA -AATAATCACAATTTCAATTTTAATTTCGATAAAGATACACAAAAAAAAAG -AATAGCATTTAAGGATTTCCTTGTTAAGCTTCAACAGCGTAAGGGAAGGC -CTCGTTGGCAATCATCATGCGTGTAAGTTCGGCGGCGCTGAAAATAAATT -TTTGATGTTTAGCTTGCATGGTATGTATTACTGATCCCTCAACTCCGCCA -TGGTCCGACCCTGACGAAGTGGTATCTCTCCAGCATGGTGAACTCTGACG -TGATTCCAGTGCACAAGCCTTGTTGCAGTATACGACAGCCCACAGATACC -GCAGTAATACGGATAGGGAAGGGTATGCAGATGGTAGACGTGGCGAGCCC -TGAATGTTGAAACTGACTTTTTGAAATGACTGGAAAAATAATTACAAGTC -AACTTGCTGTCCGAAATTCATCATTACAAATGGAGCATTGGAATTGTTGA -GCATCAGGAGATTCCGAATTCCGATGGGTATCTTGAGGCTCTTCCATTTC -CTGAAAATTGTAATTTTAGACTTTTTAGATAATATTCACAAAATCTGTTT -AGGAAAAATTAACTACTAAAGTTACAGTAAGAATTTTGCTCTGAATTTGC -TCATAAAGGAAATTTTTTTAAGCTTGCACCCTGATTTGTTTAAATTCTTC -AATCTTTGGATTCCTCGCAAAAAATTCAATTCAGTCTCCTGGGCGTCGAA -TTGCGATGGAGCGCGCTTGCCGTGCGTTGGCGCAGCCACGGTGGTTCAGT -TGTAAGATGGGTGCAAACGCGCTCCACAGAGTTTTCGATCCCCAGGAGAC -TGTGTCCAAGTAAACTGAGTGGTAGCTTTTTTGTTCAAAAAATGTGCCCC -GCCCATTGGAAAAGCATGACCTTGTAATCGAAAATCCTTCAAATACGATT -TCTATTCAAATTTACGAAACTGAAAAAAAATTAATTTTACGAACACTTTG -ACGTCCATTCGGTGAGATTCTTTCAGGTGTGAATCGTTTTCTCTTGTTAC -GAGCATCATTTGGCTCCGGCACCGCCATCTGACCGGCCTAAAATAAGAAT -GTTTAAAAAAATATGCATTTAGGAAGTTTAATATTCAAAACAGAAGAGAC -ACATTCCATATGAAAACAACTTACATTCTGAACGTTTCCAACGTCCGCCG -ATTCCTTTACACCGTATCGATCGATTAAAAAATCGATCAGCTGACCGTTG -AGCAGTACATCCTGGAGCGAGATGGTGATCGGAGCCACCGGTGGTGCAGT -CTCATCGTCTGAAGATCCAGATCCGAAGGCATAGCTGTCCGAGTGGATGG -TGTTGGAGTGGTCGAATTTCTGAAAATTGACCAATTTTTGATTTTTTAGA -CTTGAAAAGGCCTAAAAAGGACAAAACGAGCCCCAAAAATTTGAACAAAA -GGGTTGAAATTTCATATTTTGTTAATTTTTCTGTGTCACAATTTTGATTT -TCAATCTATCGATATTTTGAATAAATTTCAATTTTTTCGGGAAAATATTG -CAAAATTTAGTCATTTTTCCTCAAAATAAACCAAAATTTGATTTTAAAAG -TTTGGAGAATGAATTGTTGAACTTGGAAACACCAAAATTAGCTCTAAAAT -TTCGAAAAAATGGGTAATTTCAACTTTCCGTATCTTTTCAGTTTGTCGGA -ATTTTTAAAAAATTTTATTACAGAAAACCACCAATAATTAAAATCTTGAC -TTTTTTTTTAACCCTAAAAGATTTTTTTCGAGAAAATATCTTAAAATTTA -GTCATTTTTCTTCTTTTTAGGAGCTATTTTTATGTTTTTTACTTTTTGTT -CCGTCAAAAACAATTTTAATTGTAAAGGTTTTTTTACGATTTTTCCAGAA -AAACCGGTAAATGACACTATTACGGGAACAAAAAATTTGGAAAATGCGTA -CTGCACAACATATCTGACGCACAAAATATCTTGTAGCGAAAACTACAGTA -ATCCTTTTCAAATGGCTACTGTAGTGTCGAATTACGGGGCTCGATGTTCA -GAAATTAATTTTTTAATCGAGCCCCGTAAATCGACACTACAGTAGCCATT -TGAAAAGTATTACTGTAGTTTTCGCTACGAGACCCTATTTTGCGCGTCGA -ATATGTTGTACAGTACGCATTTTCAGAATTTTGTGTTCCTGTAATAATAC -TAAGATCTCGCCACGACAAAGCGAAAAATTTTTATCGATTTTTCAGCAAT -TTTTCTCTTGTTTTCATAAAAATTGGGCAAAAACCGGAGGAAAAAAGTGA -CGAATTAATAAAAATTCCATGGCAACGAAAGTTTGAAGCTACAGTACTCT -TTAAAGAAGTGCACCTTTTTGGATTAACAAAATTTTGTCGTGACGAGACC -CTGGATACCATTTTTCCGGCGGAAAAGTCGCAAAATTAGCGATTTTGGGA -ATTTTTCGCGGCGAGACAACTGCACAACTCGACATGCGAGTTTATCCTTG -CAGATGGCCAAAAGCCCTCCGTCGATCATTTGACGAAGCAATTCCCTGGT -GTTGCGAGCTCGACGAGCTTCTGAACGATGAAATTGCCATTTCGACTGTG -GCAGAGCCCCACGAAGAGCGTCGTGGATTTGGTGAGCTTCTCGAACACGG -CTTTACGAATCTGATCTTCGGAATTTAGTGGATAGTTGGCCTCCAAGAAC -CTTACCCCCGATGGATAGATTGCGAAATCGATGAGCTGCCCGTTGAGCAG -CACATCTTCGAGCGAAATGAAAATCGGAGCCACTGGTGGTGGGGTCTCAT -CGTCGGATGATCCCGATCCACTGTTGAGGATAAAGCTGTCCGAGTCGGAG -GAGGTGGTGTTGCTTCCGTGGCGGTAGGGGAGAAGCTTGACCGGCGGCTT -TGGATTCTGGAAATTCGAATTTTAAACTTTTATTATATTTTTATTTAAAT -TAGAAATTTTTATGCAATATTTTACCTTGTTCTTGTGAGTTTTTTTCGAC -AAAAGCGAGAAATCCGGGTCGAAATCGAACGACGCGCCGAGCATGTTGTA -CGAATCCGTGCTTTTACGATTCGGAGTCATTTAGACAGAAAAATGAATGA -ATATAGGTTAGTAGACGCTGAAAAATTGGGAATTTTGGATTTTTTAACGG -AAAAACGAGTGAAAATGAGAGAAAAACATGTAAATTTCAACGAAAATCGC -GAAATTACCGCGCATCGAAATTCAAAATTGAATTTTTCGCGGTGGCCCGG -GTTACGGTGATTTTTAAAGGCGCATGGTTGTTTTGAGTGAGGTATTGACG -CGAAATTTAAAATTATTGAATATTTTTTTCTTATTTTTACATTTTTGAAG -AAAAAAATGATTAAAATTCGATTTTTTAGGGAAAATTAAACATTTTCACA -AAAATTGCAGGAAATCACTCGCCAAAATTCAAAAATGAAGAGTTTCGTGG -TGCGCCGGGTTACGGTGGATTTTAAAGGCGCATGGCTGTTTTGTATTAGG -TCTCACCACGAAACTTGGAGTTTTTGATAGTTTACTTCCTATTAGGGATT -TATTTTTTTAATTTTCGCTCGATTTTCACACATTTTCACTCATATTCACT -CAATTTTTTGCAGAAAAAATGTCAATGGACATTGTTATGAAGTCAGATGA -GCAGCCGTTCATCTCTGCGCCTGTATGCTTTAAGTAAGCTCCAATTTTTG -TTATTCTGGCCTAAAATTATTTTTTTGATTTCCAGAACGTTCGCATTTTT -CGCCAAAGCATCCGCAGAGGAATGCAAACTTCTAGCTTCGGGCTCCAACG -CTCGAGAAAGTTTCCAGCAGGCCACGGGGCTATCGGAGAAGATCACGGAA -GACATTTACCGCCAAATTGAGTAGGTTTTTCGATTTTTTTACCCTTAAAA -ACTACTATTTTTCTATTTTCCAGCGTCTCCCACATTTCATCGATGGTCTT -CAACAGAGAAATGGACGGTGGCATCGAGAGAAATCGGCTCGGCTCGCAAG -CGATTCTGCTCGACGAGAACTCCAGGCGCCGCAATCCACAGTTCAAATCG -ATCGCGCTCCGCTCTCTCCGCTACGATCACATCGATCATAGAGCGTTGGC -AAGGAAATCGCCTCATCTGATGCCTCCGACTTATATCAAAGAGGAAATTA -TGGATGATGAGCTCGACGAGGTGAAGGAAGAAGTGGTTTCCGTTGGAGAA -GCCGCCTTGCCCACGCCAAAAGTTGAACTGAACATGGACCATCCGGAAAA -GGACCTGATCATCAGCATTTCCGTGTATCTCGGCTACACCCGTACCCTTC -AATACCACGAGATTCGTCTCGGACGTTTGATGAAGGTCACGGATCGGCTC -GAGCTCACCGGAGATCACACGCTTCGCGATCTGAAAAACGCGTTCTCGTG -CCCCATCGATTTCTCGTTTTCCGACGATTTTAGCGAGAAAAAGCCGTCGT -TCAAGGATATGGCGAAAAATAAGTGGCCGTCGTCGATGTTCTTCATTCAT -GACACGTTTTATATCGACTCGAACACTGGCGACAAGTTTGTGGATCCGTC -GATGTGAGCAAGGGTGCCGGCTAAAAGTTTTTCAGTGTTTTTTGAGCGAA -AAGGAACAATTTTTTTCTGAAAATTATTGATTTTTCGTTAGTCTTCAGAA -AAAATGATTTTTTACGCCGCAAAATCGGGAAAAAACAAAAGAAAACTGAA -AATTAAGACATTTTCGTTGATAAAAACGAATTTTTTGGTTTTTTTTTTCA -GAAATATATTATTTTTTGCTTTATTTCAACAAAAAAAACCCAAATTTTCA -GCACAATCCGAAGTTGGGCCAAAAAGTTCGACTACATCGGTCCGATGCAC -GTGAAACAGATGTCGGAGACGAGGATCGGGGATCTCATTTGTCGGCTCGG -TCAGCCATACGTCTACATTCATCAAGGCGTCTGCGAGCACCTCATCGTCT -TCAATGACTTGTGCCTGAGGTACGGAAATTCTGGAAAAATCGAAAATTTT -GATTTAAAAAAACTCAAATATTTATGTGTTCTTTTTTTTACTAAAAATTT -TTTTCAAATTGTTTATGAAAAAAACACTAAAAAATAAGTTTTTATCAATT -ATTTAAACAAAATTTATATTTTCCGATTATCAAAATTGTTTTTTTTTTTC -AAATAAAATACCCCGAAAAATATATATTTTTTAATTTTTTTTTTCTATTT -TTTGCAGAGATGAATCCCACACAAACGTCGAATTTCCACGCCGCCTCGTC -GAACGGAATTTCAGAAGAATTGCATGTGACACGTGCAAGGAGGCGTCGGC -GCAGTGAGTAGTAGCATTTAGAAATTCGGAATTTTTTGTGAAACCCCCGA -AAAATATAGTTTTTATCGGAGTTCGAATTTTCGAAAAAAAAATCCAAAGA -GAATCGATTAAGGCAAAAATCATCAATTGAATCCAATTTTTTCAGCTGGA -TGATCGTCGACCACGACAATCTGCTTCCCAACTCGCCAGGCTATCTGTGC -TCTTCGTGCTACAAGGAGTTCTGTTTCGACGTGAACGGCAAAAAAGTGTG -CCAGTTTAAGGCCGTACCGTATTGCGATCGAAAGGACATTGGCGACGGAC -GCCAGTTCTTCACCGAGCTCGATCTTTAGAGAACGAGATTTAAAAGTCTG -TATCATTTTTTGTTGTTTTTTTTTAAATGTTTTTCGATTTGATTGTTTAA -TTACCGATTTTTGGCCTGTAACTATATTTGTTGAAATTTCAAATTTCTTT -TTTTTTAAATAAAATTTTTGTTTGCAAAAAAATTTATCCAATAAATAAAC -GGAATATATCGATGATATGGCAAGTAGGGGGAAACGGACGGGAAAATGAT -TATTTACAGAAAGGGCGCGCACCAGAGGTTTCTCGGGGGAGCCCCGAGGC -GGGTGGCGGAGCTTGGCTCAAAATCTGTCGGAAAAATGGGTTAAATGAGA -GAAGAGGTAACCTAGAAAATGAGATGAGAAATTCGGAAGAATTTTGAACA -ATTTGAAAAATCGATAATGTTGAATTTTAAAATTAAATTTTATTGATTTT -TTGAAAATCGATTATATTGTTGATTATTGATTAAAAATCACTAGAATCAA -TAAATCTGATTTGGAAAAATCAAAAAAATCGATTTTTTATAATCATAAAA -ATCAATTTTTAAAATCCAAAAAAATCGATATTTAAGAAATTGAAAAAAAA -TCGATAAATCAATACATAGGTGAGCTCGTCTCGTCGATTTGTGTTTTTGT -GATTGGTCCCGGCTGCTTTTGAGATGGTCTAGGCGTTGTTCCGTATGACA -TTCTGGAAATTTTTTTGTGAGGCAATGACACGCCCACAAAATGGACGGTG -GCAGAAATTTAATAATTTTAAATAATTTTCTGGATAAAAAAATCGATTTT -TCCACTTTTTCGAGTGAATCGAAAATTTAAAAAAAACATTCAAAATTGTT -CAGGGTCTCGCCACGAAAAACTCACAAATGCACGTTATGCGGAGCGTCGT -CGGATTCCGGTGTGTTGCTACGGATCGTGTCGTCCATGCTCAGCTTCATC -GTCGATTGACGTCGCCGTTTTGTGGTGATCTGAGCGAGATTTATTGATTT -TTAAAGACGCATGGCCTAGAAAACACAACACTTCGGCCACGGACTTTGGC -GGCCGAGTTTTCTAGGCCATGCTGCGGCATTTAAAGGCACATACCATGAT -AATGAAGATCGCCAATCCGAAAATGATGACCAATGCGAAAGTGATGATTA -CAATCATCAGCGATGATAAGGAATATGATGAAGTTTGCGTGGAAATAGAA -TCGATGTACGCTTGTGACGTCATTCCTGGAAATTATTGATTTTTTTGGAA -AAAATCAATAATTACTTACCGTCAACAGTAACACTCAACGAATCAATCTT -GTAATCCGAAATCATAGAGTTATTGCGTGAAAATGCGGCTTCGAACCTGA -AATGTTAAAAAAATCAATTATCGATTTTTTTGAAAGTTTTTGAAAGTTTT -TGAAAAATTGATACAATTAACTTGATATTCCCCCGGAAAACCTATAAATC -AATGAAAAAGTTAATATCTAAATTTTTTCCAAAAATTGAACTAAAGTCGA -TTATCGATTATCGATTTTACTAATCATTTTTCAAAAATCTATCATATAGA -CGATTCCTACGGAAACCCCGAACAAATCAAAAATCGATAAAATTGACTAT -CGATATTTTTTTCTAAATTTTACTTTTTTCGATAAAAGTCGATAGCGTTG -ATAATCGATTTTTTAGAGTTTTCCTCAAAAAATGGTAATAAAATATTTCT -AATCGGTAAGAACTCACAAATTAACAGCCATTTGAGCATCACCAAGTGAT -TTTTTGGTGAGCACGTCGGCTCCGACAACCACTGATCCTTTGGTCAGTGA -CTTGATTTCAACATTCACAAAATTGTCGTCTCCCGAAATGGAATTGATGA -ATTCTCCGATCTGGAAAAAAATCAATAATTGTTTAAAATTGATTTTTTTC -AGATCATTTTTAAAATAACTAGTCTAAATCTATATTGAAGTCTAACTCAA -AATTTTCCACAAAGGCTTACTATTAGGCTTAGGCTTAGGCTTAGGCTTAA -GCTCAGGCTTAGGCTTAGGCCACGCGAGATGAAAACAAAAGAGAAAATTT -AGTGAAAACAAGAAAAATTTCTTTTAAAAAAAAGAAAAAAAAAAAAAAAA -AAGAGCAACAGCCATGCAATTCTTAAATATAACAGGTTCAACTACTATCT -TCAAAAATCAGTTTAATATCGATTTTTCCCAAATGTCAATAATCCATTAT -CCATTTTTGACTCACCGCTGGCACCAAATCTTTCGCTAATCTCTTCGCAG -GGCCACTCTGAATATCGTTGAATTCCTCTACAAATTCCAGTGAAATAATA -CGAAAAACTATTGGTGTTCGAATGGATTTAGCCGGAAGGAATACTTTCGA -TGAGTTTTGAAGTGCCACCGGCACAGTTGAAATATCTTCAAAAGTCGTGG -ATTCCTCTGATGAGGTGGAGGTGGTCTCTTCGGAGGAGGTAGTGACGTCA -GTGGAGAGGGTTGATGGCTCGGTTTCGGCCATGGTTGTGTCCATTGTGGT -TTCCATAGTTTTTGTAGTTTCCATTGTTGAAGAGGATTTCATTCTGAAAA -TTTTGAAGTTTTGAATTTTTTCCTGCAATATATGAACACTTCCGAACCAG -CAAAACTCACTAGGTAGTGTTTTAACTATACGGTGCGATCGAGTAAAAGT -GTCATGCGATAGCTGGCATCTTAGGCTTTCAGAATCTGTAATTTGTTCCG -GCGGAAGACCTCTGTGAGTCTGGAAATTTTCATCTGAAAATTTAGTACTG -AAATCTGCATTTCCTATGGTTAACAGTGGATTTTTGTCTCTGGCGCCAAC -AGAAGTCTCACCACAATGGTGGAAGGGCGAAAACATCGCTTCGAAGCTGT -TAACCATAGGAAATGCACTGATTTCAGTACTAAATTTTCAGATGAAAATT -TCCAGACTCACAGAGGTCTTCCGCCGGAACAAATTACAGATTCTGAAAGC -CTAAGATGCCAGCTATCGCATGACACGTTTACTTTTACTCGATCGCACCG -TATAGTTAAAACACTCCCTAGTCAGATATGTGCTCTACACTTTTAAATTT -TGCAATCAAAATACTTGAATATAAAATTAAGAGATTTTTGAATTTACTAG -GCCACCTCGAAAATTTCTAGGCCACGGCAGGTTGGTAGGGTGAAGCTGCA -GACCCCATAAAGCTGTGAGAACGGTTTTTTTGCAAATTTTTTAAAACAAA -CATTTGTGAAGAATCTGAATATTATCAGAACAAAAAATAATTTCGACAAA -AAATAATAAATTTTTTTATCAATATTCAAAATTTTTAACTTCCGAAAAAA -CTCAAAAAAAAACTCACCCAGTCGTAGTGCTCTCGACCATCTGCTTCGTA -GTTTTCGGGATATTCGACAAAATCTTTGGCTCTTCCTCAGACATTTTCAG -AATTGGGAATGCGGGGCTCTGATCTGTGCTCAATGAGCTATCAATAACAC -TTCCATCCTGCTCAAAAAGTCCTTCCAGTGCACTTTGATCAAATGGTGTT -TCTCCGTCATCTCCAGCTTCTGATGGGTCACTTACTGCGACGGTGGATTG -GGTTGTGGTCACTGTAAAATTGGAAATTTGGAAGAGAAAAACCTCGGCCA -TTGGTGACGTCATACTTTTCGCCACTTCTTCGACCAGCTATAATGCCACG -CTTTTAGCAAGTTTTATTTTTGGTAAACCAAAGAGCAACCAATTTTAAAA -CTGTGTCTCCAGGTTTACCGCCAACTTAAGGGCGTGTCCGTACAGGGTTT -GCCCGTTTTATGGGCGTCGCTTAATAAATCATTTTTCAAGTTTTCAGTTT -CGTGGAAAATTAGCATCCGGGAAATTGAGTCATAAGTATGACGTCAGCAG -CCGCGCGGCTTCCCATGACGTCACTCCATGCGCTCCCCCGACGTCCCTCT -AAGACGTCACCACCTCTCACCTGGTTTAGTGGGTCGTGTCATCTCCTTCT -CTTTCAAAACTCGTCTATCAGCGACCTCGTCAACCTCAATCGGAAGGGAG -CTGAACGTAATCACCTCCAAGGGAGTGGTTGGCATCATTTCAGTCGTATT -TTCAGCGGCGAGAGTTGTTTTCTCAGTGGATTCATCCTGATCCTCCATAC -TATCATCTTCGATTGTTGCCTGGGAGAAGTTGAACATACCGCCGTCAAGC -GGAGTTATTGGGGAGAAGACGGACGTTTTCTGGATTGGGTTCACTTCTAG -GGAGGTGTCGTTCGGCGAGAGTTCGATCATTTCTGTACTTGTCTCGAAGG -TATCTGATCTGAAAGTTATGACATTTTTTTGGTGGTGGCCTGGGAGAAAA -CTAGGCCTCCTGGCCTAGAAATCTCAAACCTCGGCCTCCAGCTCTCACTA -GCTGACCTAGGTTTACTAAACATCGGCAAGACCTCTTTTCGACTACTCCC -TTACAAATTTTTAACAGTTTTTCATCACACAATTTTCCGATTCTTACCCC -TCATTCATCATTTCTTCTTTCGGAACAGCCATCATCGGCATATCATCATT -ATCAGGCATTACGGGTGTCGTTGTGTCTTTTGCCAGCGGTTTGTCGAACA -CATCTTCAGAATTTTCGTCTTGCGCGAAGGAAACTGAAAAAGTTAAATTA -CATTTTTTCTAGGCCACCAGGTTTTGCATTTTGGCCTAGAAAATGAAATG -AGAAGCTAGACCATGTGGGTTTATTGCGAGGAAAAGCTATCCCACGAAAA -CTTTTATAAGCGTCTAGAAAAGTAGAAACCTCGGCCACCAAGTTTTGCAC -TGTGACCTAAACAATTTTGGTAAAATAGGCCAGCAAAATTTCCATGATGG -CCTCAGGAAAACTAGGCCATTAAGGTTTCTTCCGTTACCTAGAAATTTTG -TAAACCTAGGTCACCAGGGTTTCTAGGCCACACAAGAAAAGCTAAAAACC -AACATTTCAGATCGGTCTGGAAAAGTGCAAAATTAAGCCACCAGGATTTG -CATGGTGGTAAAAAATTGGTAAACGTGAACTAGAAGTTTATCGGTCATCA -ACTTACGTGTCGTTGAAAATGCAATGAATAGAATAAAACCAAATGGTATG -CGCATCGCTGAAAAATTGCAAAAATTAATTTATGTTTTGGAAAATCAGAA -ATCGGAGTGTTCATTTTTTATGGGACAAGATAAAAAGAGATGGAGAAAAT -TTATATGATATATCAGGTCAAAATGACCTTCGGAAATTGGGAATGAAAAA -TCAAAATTAATTCGCGTGGAACTGGTTAAGATGATCGAAGATTGAAAAAT -TTGACAGAAATTGCAACAATACTAATGCAAAAAGTTGGTAAAATATTTTT -TTCAGTTTTCAGAAAAATCGATAGCAAAAGTCTTTTTTTTTAAATAAAAA -TTTCTGAAATATTTTCGCTGCGAGACCTAAGGTGACAAATTGGATTAAAA -ATTTTATGTGCCCATTAAGAGTTTTTCTGGAAACTGAAGAGAAAGTCGAA -AAATTAATATACCCTACTTAAATTTAAAGGCGCACGGATGAATTTCCAGA -AAACTAAAAAAAAACATCACAAAATTTGATACTCCAAGTTTAAAGATGCA -TGGGTAATCTTTGAATGAGAATTTTGTTTTAAATTTTTGAACTGCCATTT -CAGATATTATGAGAACACAAAATTCTAATAATGCGTATTGCGCAACATAT -TTTGCGCTCAAAATATCTCGTAGCGAAAACTACAGTAATTCTTTAAATAA -CTACTGTAACGCTTGTGTCGATTTACGCGCATCAAAATGAATTAAGATCA -TACATTTACCGACAAAATATTAAAATTAGGCAAAAAATAATACGAATAAT -GCATTTCGTAAATCGAGCACGTAAATCGACACAAGCGCTACAGTAGTCAT -CAAGAAAAATTACTGTACTTCTCGTTACGAGATATTTTGCGCATAAAATA -TGCTGCGCATTACGCATTCTCAGAATTTTGTGCGCCCGTAATAACCATTT -GTTAAATGCTTAAAAAATTCAGATTTTATTGAAAAAAATTTTTGAGCAAA -ATTTTTCGAAAAATAAATTTCGGCAATAAAATATTATTTTTCCATCGAAA -AAGTATCGTATGGTGTGCTTGACATAATCTTGGTAAAAAGTGGCATATTT -TGAAAACAAAAGGGGTTACCCCCTTCCTTCAGCCCGCCCGCCCGGGAAGC -CTGGGCATGCGCGCAAGTGATTGTTTTGTCTGTTGTTGCTTATGTATATG -CTTATTATTTACACATTTGTGTGTGTGTGAGTGACTACACTGCACACCTC -TTGAAACGGATTATCCGGCCGTGGTCGAGGAGGGCCGCCGAATTATGCAC -ATTCCTATGCTATGTATTGTGAATACTTCATTTCAATAACTTTATATATA -TACAGTTAGCACATACGATTTTTGAAAATTGGGGTTGTGGAAGAGTTTTC -ACACAAGTGGCCTAAAGTTTTTGAGTTTACTTTAATACTTCTAAATCACG -TGGTGTCAGGCGGTCTCAATACAATTTGATCTACAAAAAATGCCGGCATT -TTTTCCCAGAAAAATTGTGACGTCCGCACGCTCTCAACCATAAAAAATCA -GATGAGATCTGCGTCTCAACTCCCGCATTTTTTGAAGATCAAAGCGAAAT -GGGACTTTCTGACTCCACGTGCTAAATGAAATGTACGTTAAAAAATTATC -TCTGGAAATTTGGAATTGCTCGGTGGAGCGCGTTTGCCGCTTAGTAGCTG -AACCGTGATAGCTGCGCCGTGAAGAGAAGGGAAAAGTAAGGAAGTTATCA -AAACCAACGACGCACTAATGAAAAGGAACACAAGAAAAAGTGAAAGTGTT -TTTTTTTGGGTTTTTGTGATTTAGTTCGTGTGTGATAAAAGTTCAAATGG -TTCGGCAGGACAATAGGAAGGAAACTGGAATTTTATATTTCATCTCTTGT -TAAATTTACTTTTGTAGGTGTATGATTAGGTAGTGTTAATAGAAATCGGG -ACTCGTGGCCTATCATTTTTTTGTGGCCGAGTAAAAAAATCTTCCACATT -CGTCAACCATACGTGTGAATTTAAAGGTAATCTATAGGATATGATATTGG -TAAACTTTCACAGAAATCCTAAAGCTAGGTTTTGAACTATGGAGCTTTGA -AGTTTCTAGGCCCCTTTGGGAAACATAGGCCACCAACCTGAGAAAGGTAA -GGGGAGGGCAGGGTACATAAAATACAACTTTTTCTCTGAAGTTTTTTTTA -ATTAAGCGAAAAAGCCGACATAAATGTTTCAGTCATGGCCTAACTTGACA -TTGGTGGCCGATTTTTTCGAAAAACTCTTCCACGATTTAGAACATGAACT -TGGCAAAACTTCAAACAAATCCTAGAGATAGTTTTTGAATTATGAAGCTT -TGAAACTTCTAGACACGTTGAAAAAGTTAGACCTCTTCCACTGTCATAAA -CTTATAAATTCACAATTCAAAAATTATAGATTTCTTTCATATGTAGAATT -AGCCCAATTTTTAAATCCATTGCACGGCTAGATTTGAAATCATAGCAATT -TGAAAATTCTAGGCCACGCAAAAGAAAATTCTAGTTCATGGGAGTTGAAA -GAGAGTCTCGGAAGCTAATTTTAAAAGCACAAGATAGAGGAAAACCAAAA -ATTTATAAATTCATAAAAATCCAGTTTTTTAGCAGCTATGTGAAAAGGAT -TAGAATTTCAACACGGCCACCACCGCCGGAGATACAATCATTTTGGGAAT -ATATGTCGTTTTCGCGTATTTCTCACCAAAAAAAGATTCAAATCTTTTAA -TACGAAAAAAAGTTGGAAAAGAATTAGAAAAATGCTGAGAAATTTTTTTT -ATGAAAGCTTAGGCTTACAATTAGGCTTAGGCTTAGGCTTAGTTATTTTT -TCAGTGTTTTCCAAGTGCAGAAAGGAAGAAACCGACGCTTCCTGACTTTC -TATCACACACTGAGGGGAATTTCACCCAACCCCCCCCCCCCCCTCACTTC -CCGCTACTACTTTTACTGTACACTTTCACCGAAAAGTTATTGTGTCATCA -CGTCATTCGCCAAAAACGAATCGAACAAGGAGAAAAAATTGATGAGAAAA -CGCAAGTGTTTCTTCCTACACTACATAGTGTTCAACACCCCTTCATGATA -TGGCCGCGTGAAAACTCTTCCACGACCATAAAAGAAATTTACGGAACAAT -CTAGCAAATTTTCATAAAAATCGGTTGGAAACTATAAAAGTTACAGGGGT -TTGAATTTTCTAGGTCATGCGGAAAAAAACTCGGCCACGCAGGTTTTTAG -GGTTAGGGAGGCGGTGTCTTCAAAAAAAAAGAAACCTCGCACCTAATGAT -CCATGAATCTTCAAACAGAAAATGAGGTATAATCTTAGGTGGCCGAACTT -TTGTTTCTGAAGAAAACTCGGCCAAGACCACGAAAAACGTATTTTTTTGT -ATCGTTAATTGAAAAACTGAAAACAAGAAGTTTCTAGGCCATGTTGATAA -ACCTTCAGTAAAAATTTTTCCTAAGCCATTAAATTACTACTGAACTGAAA -ACCTAGGCCACGGCTTCAAAACATAGGCCACCAAAAACTGAAAGGGGGTC -GTAGGACCGGAACCTGCTATTATGAAGCAAAGTTTTGTGCAATAAAAGTT -TCAGAATTTCCAAGTTTTTAAACTATTTTTTGTCTGGAAATTATAAACCT -GAAATTTCGGGTGCGAGACAAGATGGTCAAAGAAAAATAACGAGAATTCG -GAGGGCAAAAAAATGAGAAGAATTTCCAGGAAAACAAGTGAAAGTGAGTA -TGACTTTGACCTATACGCGTATTGTCTTTTTTGTTTTCTTCTTCTCGAGA -AAAGAGAAACTGTCACAGCAGTAGTAGTTCTTCGATCACCTAATTACCTT -ATTGCCCCCTTCCAGGAAGTCACAGTTTTTTTTAGGAAATGTGTGAAAAA -TACACATTCCGCTAGGAAAAATTGAAATTGCGGTTATTGAGTTCCCTTGC -CACGACAACGTGGCCTAGGATACCGCCATGCTCTAGAAATCCCGCTTGTA -GCCTAGAATTTCCCATTGTGGCCTGGAGAAGTTTAGCGGGGCCTAAGACT -TTTAATTGTGATCTGAGAGTTTTTTCACATGGCCTAAAATGCTATACGTG -GTCTAAAATTCCTCATTGTTGAAATTTTTAGCGCGGCTTAGGATTTTCTA -TTATGGCACTGGATTCTCGCCGTGACCTAGAATTTCGTAATGTGGCCTGA -AAAGTTTAAGCGTGAAAAGTTTAAGTATTTTCAATCATAGCCTGGAGATT -TTTTACAAGAATTCCTCATTGTGGCCTTGAATTTTCTATTATGGCCTAGA -ATTTCGCATCGTGGCCTAGAAGAAATTTGCAGAGTGGTTTTGAAATTCGG -TTTGTGACCTAGGGTGCTATATTGTGGCCTAAATTCTTCCATCATAACGT -ATGATTTCACATTTTGACCTGAAAATTCTTTGCGTGGTCTAAGATTTCTC -ATTATATTCTCGAATTTAACTTCGACACGTGAGAACAATTTTGATGGCCT -AGAAATTGCTCCCGTGACCTAGGAAGTTTCAAATTTTTAAAGTTCAAATA -AATTTCACCAGAAATTCATCAAAATTTACAATTACGGAAAAAGAATCATA -TTAACCACTGCAACTTTTTTCGAACGAAGGACGAGGCAAAAAGGTTTCTA -GGCCATGGCCGAGTCCCCGACAAATTTCAGCGGCCATTTATTTTGCTTTG -TTTTTTGCGTGTTTTCTTTCGTTTTTCACCGATTTTTTCCGTTTTTTCTT -ATCAAAACTAATAAATAAATATTTTTTGCAGATGCTAAAACAATTTCCAA -GTGAAAAAATTGTGAATTCAGTCGGCAAGTAGCGGTAAAAGTGGTCAATG -TAATATGATGGATTACGGGAATAAAAAACCCAAACTTTTTCCCAAACATG -ATACATATGCTGTTTAGAAACACGGGAAAAATCGGTGAAAAACACAAGAA -AACAAAGCAAGTACAAAATGTCGTAAAATGCGGTGTATTGTGTGCAAACA -CCGATTTTTCGCATTTTTTCTCGGCCCTCGTTCGAAAAAAGTTGCAGTGT -TAACGGCGGTGGAAGAGCTTTACCTTTACAAAAGGTGGCCACAAAAAAAA -TAGAAGAAAGGATCCAAAAAGAGCAGGGAAGAGTTTTCTCAATTTGACGG -CCACGTGTTCTATAGAAAAAGATAAATACAATAAATACGTTTTTTGAACA -ATTAAAAAAACAAAAAATTTCAAGAAAAATTTAGAATATTTTTTCAGTTT -TTTTCCTGAAATTCAAATAGAATAAATGGAAGTTCAACAAAAAAAGGTGA -CCTAAATACTTATTAATTCACCTTCTTGACCTCTCGATTCTTCAGAAAAA -AGAATAGGCTTCTCCTCCTCCCACCTCCCAGACACTTATCTACACTTTAC -ATCATTCCTCCCGGCCCCCGGTTTTTTCACATTTTTCAACCTTGAAAATG -ACGAAATAAACAAGTGTTTTAGATAAATGTTTCTGTGTATGTTATCTGAA -ATCTTGGAAGGGTGTTGCAACAGAGCCCCGCGTGTAGCGTGGCCTAGAAA -TCCAAAAAGTCTTCTTTTAGATCTTCAGCTTTCTCAGCAAGTTAGGTCTT -AAGTCAAAAGGACTCTCCATGACCAAGTTATAACGATTTGTAGTTTCTAG -GCCATGGAGTACTCTCCGAAGGGGAGACATTGACCCCCTGACGCCGGATT -TGTAGGAATTTTCACGTGTTTATGCTACTGTAAGCGAGCTATATACGTTC -TTCAAAAATATCCGTCAAATTGTGACCACCGTTTCAGCACTTTAAAATTT -CTAGGCCACGCTGTCGCCATAATGGAATATTTTTCTCACGAGGAATAGAA -ATTAAAAAAAAAACTCTTCAACTGGTCGATATTTGGAAAACCAAACTAAA -ATGTTTCAGAATTATTAAAAGCTTAATTAAAACAAACAGCCACAAAAGTT -ACCTAAACTGATGAAATAAAGACATAGGCATACAGATTTATAAATCCTAT -AAGCATGGGTGTGTCACAGGTAAAGATTATGGAAAGTGAGGGAAAGTAGG -AAGATATTACTGGAAAGTTCTGGGGGAGAACGGCTGAAATCAAAATGGAT -TCGGTTGAACGCGTCGAATCACGGAGACTCGTTTGTAGGGCTTCCAGGTA -GATAAAAAATGTTCTGCCTGAATTGGGCCAAAACACATGAATCTTCAAAA -ACAAATTGACACAAGAAAATACATACTACTCCAAATTTTCAAAAATCAAA -AAATAGGCGATAGGTTTTTAGATACTAAAGTATATTGAGCAATTAAACAA -TTCACCCCCTACAACTGGCGGGCCCGCAGGGCCTGCTAGTCAGGCAAAAA -ATATATGGCCCACACTCCCAGCGACAAGAAAAATTAGGGGATATTAGAGA -CATTTACTCAAAAGGAGCATTACACAAATTTTAAAAATCTCAAAGCGGGA -AATTTTTTTAATGCGTACTGAATAAGAAATCGACGTTTAATGAAACTCAA -TTGCTACAACCCCGTAAACCTCCTTCACGTCCAATCAATAGTGACATGAA -TCCTTCCGACCAACGTCATAAAGATTGGAGATGACGAAATTTAAGATGTA -CCAAGTATGCTGGTACATACAATTTCTACGTCACAACATCTTGACAGTTT -TTTCCCTCAAAGAGAGGTGAGCCTGTAGAAGAGATACAAACGCTGCGTCC -TATCGTGGGTTCAGTTGTGGGGAAAAATTGTAAAAACTGTATGTACCAAC -TATGCTGATGTGCCAACTACCAACCAGCATAGTTGGTGCATCTTCAATTT -TGCCATCTCCAATCTTTATGACGTTGGTCGGAAGGACTTTTGTCACTATT -GATTGGAGGCTTACGGGGTTGAAACAATCGTTCATTAAAAGTCGTATTCT -TATTCAGTACGCATTTCAAAATGTTTCCCACTTTTTTTCGGCTTGATCTA -CGTAGATCTTTAAAAAATGCGGGAGAAGATATGCAGTGTTCTCAACTAAT -TTCGCATAGTTAAGAACGTGCTGACGTCACTTTTTTTTTGAGCAAAACAT -TCCGGCATTTTTTGTAGATCAATCCGTAATTGGACAGCCTGGCACCACGT -GTAAGAACACGATGCCTCTATTTTTGCCCGGGAGTGTGGGCCTTGAAAAG -TTGTGAGCTGTAGAAAAATGGACAACAAGCATGTTGTCAGTTAGCAGCAT -TTTATAAGTCAAGGACAAGTACAACCGAGATAAGTGAAAAGTTTGAAAAA -TGGAAAACTTTCAAAAAACAGCGAAGGTTCTTTGATCGATGCAAGGGCAG -AAAGTGAATAATGCATGTTTTTGAACTTAAAACAAATTGGCTAGACTTTG -ACTGAAACTACCTTTTATAAAAATGAAGAAAATGAACCATTACGAAAATG -TTAAATACACCTGAAAATTGGTGTGTTTTTATTGTCGTTCTGTAATTAAA -TTTTGAATGATCGCTCTTCTGCAAAGAACAACCACAAAAAATAATTCGAT -ATACTCAAGTATCGACACTTATGATTTGAATGCAAACATATAACAAATTA -AAATTAAAATACGGTCATTATATTTTAGGAAAATTATGGAAATTTTTTAG -GCTTATGATGTTTCAAAAACTTTCAGAACTCTAGTAAAAAACATTTTATA -TGTAATAAAACACTCAGCGACTTTAAACTTTGCAAGACAATTTGGGACAT -AATTTTGGGACATTGTAAGAACAGTTAATTGGAAAATAAAATAGTTATTC -GAATGATCGTTCTTCAAACAACCTTACAAACAACAACACACCTACTCTGC -TATAATAAGAAAATTTAAAATACTACTCAAGTTGTCACTTCAAGACCGCA -TAAGTTTATACCACTCGAACAAAAAACAGTCTTCGTTCTTTCTTTCTTGA -AAAGAGACATAATTGAAAATGAACTAATCAGCCGCTGCCCGGGATGGAAA -AAAGAAAAGAAATTCCTATCATCTTTTGACCTTGTTATTTTTGCAAATCA -TGTCTGAATAATACACTTTTTGATACATATAAATCAGGCGTGGGCGACAA -ACAATTTTTCCGGCAAATCGGCAAATTGCTGGAATTGAAATTTCCGGCAA -ATCGGCAAATCAAAAATGTTTGAAAATAGGAGAGTAAAAAGGTGGAAGTC -AAGTGATGGTAAGTACCTATTTTGTTTCAATCAAATTAAATTTTACACCA -TCTCTCTTTTTTTTCCTTATTTAACAGTCTTTGGTCTGTGTTCTGATGTT -GAAAGATAAGGGAACATGGACGAGTTGTTTTTGGGAAAAAACATTCTTTT -TGGATTATTTTAGTAAAAGAAAAATTTAAATTTATAAGCATATTCACTAA -ATATTTTTGTGGGAATTTGAAAAAAAAAGAAATTAAAGAAGAAACTGATA -AAAACTAGAAAATGTATAACTGGGAGAAAAAAGTTTCCAATTTTCAGAAC -TTTTGAAAAATTGTAGAAAATAGTTCATGCTTTCAAAGTTGTAGGAAAAA -ATAATATGTGGCCAATTTCCGAAAGAAAAAACTCTGCCACGACCAAAACT -CAGAACTAGACTGAAATTTCAGTTGTAGCTGACAAAACCATCCAAAAGAT -ATTGTAGGTTACAATATCTAGGCCGTGAAAATTAGAAAACTCGAATCAGA -TATCCTTGGCCGGAATGCGAAAAAACAAAAATTAGAGTTTTCTAGGCCAC -AAAAACTCGTCCACGTGTGCATGAACTGTCAAGTGGTCAACGTAAAAGGT -GTGAAACCCTTCAGAGAAAAACACTAGAAATGAGATAAAGTAGGTGAGAC -CTCCTGTCTCTGAGAAGCAACGTTCGAAATTCTTTTCCAATTCCATCTAT -TATTATTATTATTATTATTATTAGGACGGTATGGCGCCAGGAACTGGTTG -TTTATACTGACCACTGCCTCTTCCCGATTAGGATTCTGAATTTCGGATTT -CGGGAAATTGAGAATGGCAGATGGATGTAATTTCATTAATCATGTTCCTC -AATAAGTTAAGAAACAAAAGAAGGAAGATATAGTGAATCAGTGAGGAACA -AGAACATAGCATATATGGAATTGGCGGTGTAAGACTGGTTTACATGGTTA -CACGGAGGGAAAAAGATTTGAAAGTATTCGTCATCTTATCTAGGTAGTTG -AGACACTTGATTAGTCATAGTTGAAAGAACAAATGGAAGAAGTTCATATG -CTGAAAGCATCGCTAATAACATAATATTGGTTTTAAAGGTGGAGTACGGT -CTGTGGGTTTTTAACCTAAATGACAGAATACAGTCCCAATATACCGAATA -TAACTGTTAAAGATTTATAAAATTTATCTAAATTTTTTATGATTTTTAAA -AAAGTTTTTTTTTTTTTAATTTAAAAATTTATTCAAAATTCCAAAAAAAT -ATTTTATTCAAAACTAAAAACCCAAATTTTCTGAAACTTTACCATTTTAC -TTATTTATGTCTTAACAATAATATACACATATTAACGAAATACCCACCGT -TCAAAATTTGACTTAATCTCCAGTTTTAACTGCCAATGAGAATTTGTTCA -AAATTCCAATCTCACACCCAATGTTTTTCTTTGTTTTTCATTTTAAAACA -GTTCTATCCAGTTTAAAAATTTACCAAATAAAAATGTGTCTATTCCTCTC -ACCTCCAATCCCGTGCATGTGTTCATGTTTACCTATTGAAACGTGTGTAT -TACTATATAATACAGAACAAATATAAAATGGCCACTCTTGCACCTCCAGC -GGAAAGAAAGCTTTTGAGGTGTTACGAACACTGCAACACTTTCCTATTTT -ACTAGTTTTGAGCAATTTTCTGGTCCTTTTATTTATTTTTGTTTTGTCTG -GAACAGGAAGTTGTTTGTGTTCTGTTTGGAAAATTAATCAGTTCTACCGT -GAGATTTTTAAGTTATTTTTTGAATGGAATTTCAATTATTATTTCATTTC -ATTTGTTTTTTTTTCTCACCGAAATCCACTTTTTTTAGAAACAATTTTTT -TTTCTACATTTTTTTCCGATTTTTGTCATTCAATTTTTCAACTTCTCCAT -TTTTTCTACAAAACACCGAAAACTACAAAATACCTAAAAATTGCAAATTA -AAAAAATTTTTAAACATTTTTGCCCAAAAAATTGTTTTTTTTTTCAGAAC -ATCTAAAACTCACTAAAAAATATGCTCAAAAATTTTTTTGAGAACACTTA -ATTTTTCGAAAATCTTATTTTTGCAATATTAAATCCAGAGAAATTAGAAA -AAAAAAACGGTTTTCTACAGTACTCCTACCCTCCCTCTCCAGTACTCTTA -AAATATTCCTACAGTGTTCTTACAGTACTCTTACACCACTCCTACACTGT -TCTTACAGTGATCCGATACTACTTTTATAAGACTCCCACAGACTCCTACT -ATACCTATACCTTATCACTACAGTATCCCTGCCGTACCCCCCCCCCCCCC -CCAGTACCTATACTTGCCACTACAGTATCCTACAGTATTTCTACAGTGCT -CCTACACTACCTCTACAGTACTCCTACAGTACCATTACCAAAAATTTGAA -TAGAAAAGTGAAATTATGAACATTTTTTCCTGTATACCAATTTTTAAAGT -TTTAGTTTTGTAGTTGTTTTTGACAACGAAATCAATTTCAAAGTATTTTT -CTTTAAACAATCGTACTTTTTGCGTACTGTTCTTGCACTTTTTGGGATCT -TTTGGACTAAAAGTGCCCCCCGAAAAAAGCGCGGAATTAAAAGAACAAAA -ACCGGATAGACTGAGGAGGTGTCGAACGATGGAATGAAAAAAGAAACAGA -AATTAGATTTGGTTCAGTGAATTCTGTTTCTTTTATTTGGATTTTGGTTT -TTTGGAGTCTTGGAAAAATGTTTTATTTTTGTTCTTTCCAAGAGTCCAAA -CGTTTTTTTCCACCAAAACTCCAAAATTTTTAAAATTTGGAAATTTGATT -CACTGCCAAAACTTCCAGAGAAATTAAATGTTCAGTTTCCCGTAAATAAC -AGGGTTTCGTATCAAAAACTGTGAATTTTCCCGCCACCTATGTTTTTTAA -AAATGATTATACTCTAATTTCCCGTCAACATTTTTTTATTTTGCGAAAAA -TGATTATTTGAACATCCCAGAAAATTTTAAAAACGTCATGAGTTTTTTGA -AAATTCAATTTTTCGTGTTCCTGTAATAAAAACCATAGAAACTGTTGACC -TATAACCTGCCAGACGTTCTTCCTGTCTGTTTATACCCCCATCTGCTCTG -CACACCAGACACCCCTCCTCCTAACTACACTTTAAACTGTTACCCCCCCC -CCCCCCGTTTACCCCTCATTTGTTTTTTTTTCTAGTGCATCCCTTCCGTG -TAACCTGACACTTTTTCCAAGAAGCTCGCATTTCTTAGGAGGAGCAGCAA -TTTTTCGTTACTTAATTTTCCACACAGTAGGAAAGACAAAAAGAAAACGT -CATAGAAATTAAAAATTCTGCGTTTAATTTTTTGTTCAGTTTCTGAAACT -CAATTTTGTGGAACCGTTTTTTTCGATCTTTGTAAAATTGAATTTTTTTG -ATTTTTGGAAAATTTGGATTTTTGCTGGAAAGTCAATTTTTGTGAGAAAA -GGTTTGGCGGGAAATTTAAATTTATTGAGAAAAATTTTAGCGGGAAATTA -AATTTTTTGATAGTGAGAAAAATTCAATTGAATACCTTTTTTGTGCGAAT -TTTTCATAATATCTGAAACTCAAAAAATCTGAAAATTAACTCGAAAAAAT -TTTCAAATTTGATATTTTGGCAATTCAAAAATTGCTTAAAGAAAATAACG -GAACCTCGTTTTTTTTCTTTAAAAAAAGGTTTTAGTAACTTTTCCGGTAA -CCAAGGTTACTCTTTCCCCATCAATCTCCCAAAAGCATGCCAGAAAAAAA -AGAGAGAGAGAGAGAGATGCGTGTATGATTGTGTCATTTGACAGTGCGCA -ACAGACACACATAAAACAGCTGACATCTTCTCTTTTTATTTCAACTGATT -TTTAATTTCCCTCCTTGTGTTCTCTGAGTCTCTCTCATTTATTCAGTTTC -TCGATTTTCTTCCAAATTCATTAATATTTTAATCTATGCGTAAAGTGGAG -GAAGATTTCTTCTACGTTTTGATTTGCAATTTCTCGGGTTTTTCAAATTA -TGGATTTTGAAAAAAAAAATTTCTGAAATTTATTTTTGATTCATGTCAGA -AAATGAGTCTCCTGAATTTTTTTTGGAAAATATAAAACAAATTCTGAATT -TTTTTTACTTTTTGATGTGTAAAACAAAAAAATTGATTAGAAAAATCTTT -ATCTATTTTTTGAACTTTTCAATTTTAAAATCAAAATTAACTTCTAAGAA -ATAAGATTTTTTTCGGAATTTTGAAAAAAAATGTTGTTTTTTTGAGATTT -TAGTACATTCAATTTTCGTAAAATTCGAATTCATTTTTTTATTGTGCAAA -TGTTTTCTGACTGACTATGAGAAAAATTTCAACATTTTGAAGAACCCCCC -CCCCCCCCCCCCCCATTATTTGGACGGAGCCTGAATACGAAATGTGAGTT -CTCAGAGAAGGAGGTGAACAATTTGATTGATGTGCATATGGAGATGCTCA -TTGTGCATATCAGTTTGGAGCATCTATCTCAGAGTGAGCATGACATTTAC -TTTTACCCATTTGCGTAGGCTCCGCCATTTCACGATTTTTTTTTTCCAAT -TTTTGAACTAGTATAAAAATTTCTGAAATTTCTGTAATTTCTGCCATCTC -CTCATAAATTCCATTGTATTCTTTGCACTATTGTTCCACAAAAGTGCAAA -ATTTTCGAATTCGTAATGTGTCTTTCATATATATATCCATGCACTTTTGT -CCCTTTTCCTGAATACTAATTTGGTGTGCTCCAAGAGGAAATTTTTTTGT -TTTGTTGAAATTACTGCTCCTTTTCGGAATTTTTTAATTTCTGAGAAAAA -TTCAATTCCTAAATGTATAATACTAAAGTCAAAATACTAAAGTGTAATGG -TTTGTTTTTTGTTACAGTCTTTAGTTTGTAGCTTTTGTTTTGTGTAGTTT -TCCAACTTTTTTTTTGCCAAAATGAAGGCTGAGAAACCGAAAAAAAAAAT -TCAAAACATAGATTGGGCTGAAGCGGTATTATTGGTTTACTGTAGCATTA -CTGGGTTACTCTAGTTTGGCCCATGTTTGGTGTACGTTAGTAGTAACAAC -ATTTCGTTCATTTGTTTTTTGATTTGGTAACTTCTGGTGATTAAACTTTT -AATGTACCTAAATCTTCTGTTGCATTATTGATTTGTTGTTTTCTTCTTTT -TAAGTTAAACATGCTCAAATTAAATTCAAATTGAGTTGAAAATGCAAAAT -TATTATCAACTTGAATACCCAAAATTTTGGACGGTATTTCAAAAAAATTG -ATTTCCAGCCGCTTCGACCTTCGACACAACAAACGAATGCTAACTTTCCC -AGGATTACACAAAATAGGTCAAAATCCCCTTTTCTCAATTTTTTGCACAT -ACATCCTCATCATCATCATTGTAATGATCGTGACCATCCGGTCTTCTATT -ATTAAATGAGAGAAGGAAAGAGTATACATATGTGTCTTTTATATTAAACT -AATTATATTTCGACACATTCTGCGCATATCACTACTGCACTAGAATTACA -TTTTAAGAATAAAATGTAACCAAAAGACCAAAAAGTTGTTTGCATTTATT -GTTATAAACAGAATAGAATGAATGTTAGGAAACGTTATTAAAACTTGCAA -AGTGACACAATTCGGTATATCGATTTCTCTGAAATTACTTAACTTAGTAG -GCAGAGTTTTGATACTGATACGGATTTTACTAAATTTAATTTTTGTAAAT -CAGTATTGCTTTTATAACCTATTAAGATTTTTTTGTTCCAGCGTGCAATT -ATTTTTAATTCTATTTAGGATTTTAATAAATAGAAAAATACGTTTTGAAT -TATTTTTTACGTTATAATATTCAATAGTAAAGAAGCACACATCAATTCCC -CTATTCAGTTTCCATACTTTGCCTGATAAACATGAATAGTAAAATAGACA -CTTTCATTTATACAGACACCCCCCCCCCCTTGCTTCCGGATTAAATCCCA -ATAAAGGGTGTGGCAATAAGGCATTGTTGCAGTTTCATTGAATTTATTAA -TCATTTGACAGCATGAAATTACAAAACTGGAGAATTTCTAGTTTAAACTT -TTATACAATGAAGAAATCTTCCATAGAATCAATATTAAATTATCAATAAA -TGAGTATTTACGTTTTTCAGCAACGGTATTATTTTTATACTTACTAGTTA -TTAAGTTAGTAGTTAGTTACATTTTTAAATGCGATGCAGTCGAAATTTTT -TTATAGACTAGAAATTGTCTTAGTTTCCAGCCACTGACAAGTCGGCCAAA -TTTCAAACTTTCAGTAATTTTGCGTCATTTGTTGAGCCGCCATAACTCTT -TTTTTGAGACGTTTTCAAGAAGTTGAAATTTGGTATTTTCAGACATTTGT -ATCTTATTTAAAATATGAGTATTCACTCCTTTTACCTGCCAGTCGGCTGC -CTCCTTATCTCCTATTTTTCTCTAATGAGCACACACCACTATCATCATTA -TTATTACCACCTGTTCTTAATAATAAACATTTCCCGCACTTTATTTCCAT -TTCGATGCATTTTATAGAAAATGTTCCCCCTTTTCGAGCTTTCCAATTAG -ATTCACCCTTTGATTGCTCTTTCTTGGACGGAAGTGTTCCCCAATTCCCC -TTCATCTTATTACATTTTTATGCAGATTTTATTGCATTTTAGTGCGCTAG -ATTTTTCATGGGATTTTGCTAAATAATGCAATCACGCTCTAAATAAAATT -CTCAGTTTATATTTTAATGTTAAAACTGTGTGTAAAATTTACAAACATAG -TGAATACATTTTTCGAATAAAAGTATGAACATTTTTCGAGGGATCTATAG -AAAATTGCCGGCTGTTCCTAAATGCCCTTTCACTGGTCACCAAGTTCCTG -TTCATGCAATTCAAAAGAAATGTTCAGCCCCCCGCTCAATAGTCGCCCGC -ACCACAAAATTGAAAAGCGAACATTTTACTAGTCGAACTTTTGAATTGAA -CATTTTTGGAGTATTTTAAAGAAATGTTTTCAAGTCCACCAAAACATATG -CCAGGCCACAAAAATTTCAATTTTCCGCCAATTTTTTTCTCACAAAAGTT -GAATTTTCTCGAATTTCCGATAATTTTCGATTTATTTGAAAGTTATTGAA -ATTTATATTTTCTAAAACACTTCCACAATAACAAATTAATAGATATAATA -AAATTTGAAATTCCCATGCCACACCTCAAAAAGTGGCTCCCTTAACTCCT -GAGTGCTCGCGGAGCCCTACCAAACTTGGAACATTCTTTTCCCAACGGAG -TCATGAACATATGAGCATTAAATGAGTAGACGACATGTGTATACATAGGA -CCACCACAGCTGTTCCTTCCTTTTTATGAGAAGACATGTCATACACACAA -TGTCTCTTCTCCTTTCCGATTGGAAAATTAAAATTATAGGAGGGGGGGGG -GGGGGGGGCGATTCTTGACATTTCAATTACCCCCCCCCCCCCCCCACATC -CGTTATGTTGCATTTTGGTAGGCTTGGGGCCGAATAAGTCTCCCATGCAG -GCGTCAAAACGTCTGCGGACCTACGCCTGCCTCACGCCGCGCCTGCTGTA -CAGGAACCCGAAAAGTGTCGAACGCGGCTAAAGAACCACTTTTCGCACTA -TGCGGTGTAAACACAAGGTTTTGATTTGTAGTCATAGTGCATATATGATG -CGGGAGGCTGACAGGTAGGAGGCAAGCGTTCAACCGCGCATGCCCACCAT -GGAAGCCCTAGAGCCTAGTTTTAGATGAGTTTCAGCATTTTTGATCTACA -AGATTTTGAAAGTTTTACAAAAAAACCAAGATTTTTTGTAATTTATGAAG -TGATTTTTCTACATTTCATCTAGAAACCAGCAGAGTTATTTTTTGGGTAA -TTTATCAATAGAGCGCGTTCGCGTCATGAAAACAAAATGGCGGCCGAACT -TTGAAAATCGATGGCTGAATTTTTCGGAACAAAAGTCCGTAGCTATAAAG -CACAGGCCTACGTTTTTTTTGCTTTTAAATGACATAGTTTTCTAAAAAAA -AGTCTGTGGCCGAATTTTTAAATTTTGAATAGGGGCTTATTTCAAAAAAA -ATTTGAGGCCAACCTACTCTTCTCAATTATAACTTGCCATGGCAGAACTT -TTGAACAACTATTACAACGTTTTCAAAAAACAAGTTAAAGCATTTTTTCG -AATAAAGGTTAAATTGGTAGCCTAGTTTTCTCAAAACAAAATACTAAAAA -AAATATCGATGACCGAAGTTTATATTTGAAAAAATATGTGACCTAGAACT -TTTAACTACTCTTCCAATGTCTTCTAGCTTCTGAGAAAAAGTTCGTGGCC -TAAGTGTACCACGATGGTCTAGTTATCTCGGAAATAGCCATAGCCTAGTT -TTCTCAAAAAAATCGGTGGTCGAGTTTCCTGTATGTAGGCATGTAGGTAT -GTAATTTTTATCTTCCAGGTATCTATTTGTACTTCCCGGTAGCCAGGAGC -AATACTTTTGAATTCCTTTGCTCTCCCTATTCAGCTTCTCCCCTCACACT -CGTTTTTGGTATTCTATTGTTCTCCTCCTCTTCCCATTCTACCCCCATTT -CATTTTCCTCTTGGAGACCCCTGTCTCTCTCTCTTTGTATTGGCTCTTTT -ACGTCTTCTAGTAGGCTTTTCCTTAATGAACTTGTGTGTGTGTGCTTGAA -TCATCATCGCGTTCTCTCGTTCCATTTCCCTTTTGCAATTTTCTTTTCTT -GGAGAAATTTGGAAAGTTTTGCTCAAAATTCCTACGTACACATGCCTCAA -AATCTGGTTGTATATGGCCTAACATTCAATTTCTAGTGCACACAATAAAA -TTTTCCGGGAAATTCAAATTTTCTGATAATGAGGAAGGACTTTGGCGGAA -AATTCAAATTTTAAAAAAGTAGGCGGGAAATTCGAATTTCGAATTTTCTA -AACTTTTTGGCCGGAATTTCAAATGTTCTGAAAAATAATTTTGGAGCGAA -ATTCATATTTTCTCAGAAAAATCTCAGAAAATTTGAATCTCCCACTAATA -TTCTTCTCAAAAAACTGTTACGTGACCTATTTATATCTTATTTATTGGTC -CATTTATTACGTGGCCTAAAACATTTTTTCTTTTCCCCCGTTTACAGCGA -TCATTTGAGATGGCCTAGAAAACGCACGTTAGGCCATCAGGTTTACGGGG -TATAGTACAACCTCTTGCAGGGGACTGAGGTTCAGAAAACTACAAATTTA -GCTAATTCCCTACCTACTCTTGCAAATCCAATAACTAACCCAATTTCCCG -GGGAAATTTTTATTCTTAGAAAACAACTTGTATATCTCCGCAACTACATA -TCCCTCCTTCAAAATAATAATAATGGGAAGCTTCTGCTTCTCTACACCTT -CTTTTGACCAAAAACTTGTTGCCAGTGCCCTATTATGTACGGTCCGTTGA -GTTTTGTTGTTGTTCACAATAATATGTGTAATTCGCGCATCTGAAGAGGG -GAGGTGTAAATGTTGTGTCTAACCGTTATGTTGCTGTCACCTCCAAGTGG -TACAGGTGGCCTAGAAATTTGCGAAAACTCTTCCACGATTATATTTCTCA -AAAAATTACTTTTCTCAGAAAATTTGATTTTCTCACCAAAATATTTCTCA -GATAATTTGAATTCCCGCCAAAATTGTTTAAAAAAATAGAATATCTCGTC -AAAATTTTTATCAGAAAATTTGAATTCCCCACTAAAATTTTGCCAAAACA -TTTTATTTTCCCACTTAAAAAAGTTTTTTTTTTAATTTGAAAGTGGAAAA -GTTTTCTAGGTCACTTATACATTACCGGTGACCGAGGTCGAATTATTCCT -AGGCCACAAATCTCCCAAAGGGGTATTCCCACACCTAATTGACACCTCCC -CGGGCACCTTTGAGCACTAAGTAAGGACACCCACCCCTCTCAGCTTAATA -GCTTTTAAAGGAGCACACCAGCCATATGTTTTCTCTAATTCTCTCACTCT -CTCTCTCGGCTTCTAAATTCAATTTCCCCCCGTCACGCCTCTCGTTACGT -GAGGAGTGTTCAACATGTTCCCATTCCCTTATCCGATAAGTTTTTGGTAG -GCAGGAGCTTGTACTAGTAGAGGACATTTGTCGCTTCTTGGTCTTTCGCC -TCCATTTTCCGTAATTTATACGTGACTTAGAAAATTAGAAAAAAACGCAT -TCCACGAGTTTGTTGGACAACTTTTTTTACGTGGCCTAGAAAAAAATGAA -ACTCGGCCACCGACTTTTCTTTCACTTTTGTGAAGATATGATCTCATTCT -ATAATTCTGTCGAACCGATTAGGAGGGTGGCTGAGTTTGCACTTTTGCGT -GTTCTATACCATTTACAGAAGCTAGTCCCCCCGTCATTCTTTTTCCTGCA -AAATGTTTTTTTTTGCCCCCGGTGTCTCATCATACAGTACAGCAGCCAAT -ATTATTTGTTTTTTGTTTCGTCTTTTCGTCTTTTCGGAGAAAAAACGCTC -TATTCTATGACAAGGTGACGTCATTGGACTCGTGGCCTAGAAAGTTTGGC -AAACTCTTCCACCATTCGATTTTACAGGAGCCTCAAAGCCCCACATGGGG -CCTAGAAATCTTGACATTTCTAAAAAACATCCATTTTGAAATTTTTCGAA -ATTGGTGCAACCTAGCAACCTCTAGAACTTCACGTGACCTAGAAAAAACA -AAACCTCAAAATTTCATGTGGACTAGAAACTTTTAAAAACTCTTCCATCG -ATTTTGTTTTGTGGCGGGGACTTTTTCCAGTTTCTTTTTCACATAAAAAC -CAAAAAAAAACAAGACGTCAAGCTGTGAAAATGATTAGTCACAAAAAGAA -GAAAAACAGTAGTGTCGTTCCTGCCAATTTCAGAGATTCCTTCTTCGCTT -CTCACGACACGAGGGGGGGAGGGTCTAATTGGCACCCCCCCCCCCCCCTA -CTGAGGTGAGAAGCTTGAGTTGACTCACACGTCGCTCTTGTTTTATTCAT -TTTTGGCACAAAGTGAAGTGTGCGAAAATTGTAGTAGTCTGTGTGTGTGT -GTGTGTATGAGCATTTCGAATTTTAAAATACTTTTTTAATGTACCGCAGG -CCACGTGGTAAGTTTTTTTTCATAAATATAGGATTTGTTTTCTTGTAGAA -AAGTTTTTCGAATTTTGAAATGAAAAGGATAACTGGGAACGGAGAAAAAT -TAAGTTTTAATTTCTAGGCCACGTACCAATGAGGATGAGAAGTCGGTTTT -CTAGATCACAAGGTCATCTAAACTTTTAGGAAATTTAAAAAGTTTGGTGA -TTACGAGAATTTCTAGGCCACGTCGCAATACACCGGCGCGTTGGCGTTTT -TACACTTTCTAGACTACTAAGATTTTCCTAGGCCACGTCCCAATCAGGGC -TGTTGCAAAAAAAAATTTTCGACCAAAAAACAAAAAACAAAAAATTTTTT -GGTCTAACTATGGACCAAAAAACAAAAAACAAAAAAACAAAAAACAAAAA -AAAATTCAATGTTTGATATTGAACGGGACAAAACGGAATTTTTTCATGAA -ATATTCTGGTGATTTTTTATAAAATATTGAAAATTGAACGAACAGAAGGT -TTTTTGTTAGCTTTTTTGCTGAATCAGTGCTGTAATTTATTTTTTGGTTG -TTTTTGGTTTTTTTTTTGGTCTCAAAAAACCAAAAAAACCAAAAAATCAA -TTTTTCCCAAAAATACCAAAAAAAACCAAAAAAAAACAGCCCTGGTCCCA -ATGTACAGGTGTTGTGGTGCTTTTTGTGAGCTCTTAGGCCAGCTGGAGTT -TTCTAGGCCACTTGTAAATCAATGGTTTTTTTTCGGTGTTCTAGGCCACC -TGTCACGCCTAGACCATTGACCTAGAAGTTTAATGTTTTTGAATAATAAG -TACACGTACTCTCACATACCCGCAAATGCACATATCTATCTTCATTTCGT -GATTCTCTTCATCTCATCTTATTTTCCATTTCGGTTTACCCTTTTTTTCT -CTATGAATATATTTTCATGTACTTGCTCTTCTTCCCTGAAAAAGATTCTT -TTACACTTTTTTCATTTCCTTAGGCAGTTGTAAAGAACTTGTCATTAGAA -CTTTCAGAATGACATCAGAGTAGATGGCCGAACTTTTTCTAGGCCACGGC -TTGGGAGCCAAACATGGCTAAACATTCTAACTTCCTGGGTCATCTAGAAG -TTTCTAGGTCTTATGGGTGAAAATTGTCAAATGACAGAATTTTCTTAAGT -TATAGTTGAATTTCCCGCCAAACCGATTTTTTTTTGAAAAATTTAAATTT -CCCGCCAAAAATTTTTTGAAACGTTTAAATTTTATGCCAAACTTTTTCTG -AGAGAATTTGGTTTCGCTCCCAATTTTATTCTCTGAAAATTTTAAATTCG -CACCAAATTTTTCGAGAGCTTTTTGAAGTTCCCGGCAAAATTTGTTTTCG -AAAAATTAGATCCCCGTCAACTATGATAGAGAAGTTACGTCATCTGGCTA -CCCTGGCCGAATTTTCAATATATTTCTAGGCCACATATTGACCGCTAAAT -CATGTTGTGGAAGAGTAGTGACGTCACTTGGCGACCGCGACCATCGAGCA -GCGTGAGGGGCGAAGTATCCCCCTTCCCAACCCTAAAGACGTCGTTCATC -GCTCCTTTTTTGTTGTTGTAGGAGTTCCGTTTTTTTGTGTCTCGATTCGT -TTCCTCCTGTTTGTTGTCATTTCTGAACTCATCTCTACACTTCTCTCGTC -TTCTCTGCGTCTCTCCATCCTGCACACTATTTTTGTTTACCTCGATGATC -TTTCTTTTTGCGTGTGTGTCACTGACGAACGAACGGCTGACACAGACTAT -TGTTTTAGTTTTGTTGTTTAGAAGTAGTTGTAGTATTCCAATAGTTTTTC -ACACTTTGCATTATTTCAGATGGCTCAGGACGGAGACCGCCATCACATTT -TTGTCAGTGCTCCGCCGCCGCCGCCACCTTCCTCGTCGATTCCAGCTCCA -TCGCAGGTAAATTTAAGGTTGCAAGCGCGCTCTAATGACCTTTTTTGTGC -CTCCGGCTCCTCTTTGGGTTATTGCCAACGCGCTCCAATTCGAATTATTC -TTACTTTCAGCCAAATAGACTGGAAAAGGAGCCGCTCATCGATGAGGAAA -CTGACATGATTGACGAATCCCGAGCCACGTATTGGAAGGGATGTGAATTC -TTGAAAGCCTCTGGGTTGTACTCGAGTAAATGTGAGTTGGTCTAGAAAAT -TTGTAAAGCTCTTCCACGAAGTAATTAATAAGGGATACTATTGCCGACAC -CCAGGAACACGTATACCACGGAATTCAAATTTTAATTTTTTGAAAATATT -TTGGCGGGAATTTAAAATTTTAATTTTTTGAAAATATTTTGGCGGGAATT -TAAAATTTTAATTTTTTGAAAATATTTTGGCGGGAATTTAAAATTTTAAT -TTTTTGAAAATATTTTGGCGGGAATTCAAATTTTAATTTTTTGAAAATAT -TTTGGCGGGAATTTAAAATTTTAATTTTTTGAAAATATTTTGACGGGAAT -TTAAAATTTTAATTTTCTGAAAATATTTTGGCGGGAATTCAAATTTTAAT -TTTTTGAAAATATTTTGGCGGGAATTCAAATTTTAATTTTTTGAAAATAT -TTTGGCGGGAATTTAAAATTTTAATTTTTTGAAAATATTTTGGCGGGAAT -TTAAAATTTTAATTTTTTGAAAATATTTTGGCGGGAATTTAAAATTTTAA -TTTTTTGAAAATATTTTGGCGGGAATTTAAAATTTTAATTTTTTGAAAAT -ATTTTGGCGGGAATTTAAAATTTTAATTTTTTGAAAATATTTTGGCGGGA -ATTTAAAATTTTAATTTTTTGAAAATATTTTGGCGGGAATTCAAATTTTA -ATTTTTTGAAAATATTTTGGCGGGAATTTAAAATTTTAATTTTTTGAAAA -TATTTTGGCGGGAATTTAAAATTTTAATTTTTTGAAAATATTTTGGCGGG -AATTTAAAATTTTAATTTTTTGAAAATATTTTGGCGGGAATTTAAAATTT -TAATTTTTTGAAAATATTTTGGCGGGAATTCAAATTTTAATTTTTTGAAA -ATATTTTGGCGGGAATTTAAAATTTTAATTTTCTGAAAATATTTTGGCGG -GAATTCAAATTTTAATTTTTTGAAAATATTTTGGCGGGAATTTAAAATTT -TAATTTTTTGAAAATATTTTGGCTGGAATTTAAAATTTCTGAGAAAAAGA -ACCTTCGTGTCGAGACCCATCGTGGTGAGACCCTTCGTGGTGAGACCCAT -CGTGGTGACACCCATCGTGGTGAGACCCTTCGTAGTGAGACCCTTCGTGG -TGAGACCTTTCGTGGTGAGACCCATCGTGGTGAGACCCATCGTGGTGAGA -CTCATCGTGGTGAGACCCTTCGTGGTGATACCCATCGTGGTGAGACCTTT -CGTGGTGAGACCCACCGTGGTGAGACCCATCGTGGTGAGACTCATCGTGG -TGAGACCCTTCGTGGTGAGACCCATCGTGGTGAGACCTTTCGTGGTGAGA -CCTTTCGTGGTGAGACCCATCGTGGTGAGACCTTTCGTGGTGAGACCTTT -CGTGGTGAGACCTTTCGTGGTGAGACCCATCGTGGTGAGACCCTTCGTGG -TGAGACCCATCGTGGTGAGACCTTTCGTGGTGAGACCCATCGTGGTGAGA -CCCATCGTGGTGAGACCCATCGTGGTGAGACCCATCGTGGTGAGACCCTT -CATGGTTAGACCCATCGTGGTGAGACCCTTCGTGCTGAGACCATTCATGG -AGAGACCCATCGTGGTGAGACCCTTCGTGGTTAGACCCATCGTGGTGAGA -TCTTTCGTGGTGAGACCCATCGTGGTGAGACTCATCGTGGTGAGACCCTT -CGTGGGGAGACTCTTCGTGGTGAGACCCTTCGTGGTTAGACCCATCGTGG -TTAGACCCATCGTGGTGAGATCTTTCGTGGTGAGCCCCATCGTGGTGAGA -CCCATCGTGGTGAGACTTTTCGTGGTGAGACCCATCGTGGTGAGACTTTT -CGTGGTGAGACCCATCGTGGTGAGACCTTTCGTGGTGAGACCCTTCGTGG -GGAGACTCTTCGTGTTTGATATTATATTGGCGGGAGCTAAGGAGTTGGTG -TGGGATAATGTCAAGGTACTCTAGGGGTATTGTGGATTTGCTGTAGGGTT -ACTGTAGTTCAGAAAAATTGACTTTGTGCTTTTGAAGAGGTATTGGCTCG -AGAGTTAGAGAGGCGGAAGCTTCTGTGATATTTTTTACATTCCAGAATGT -TTGAAAAAGTAAAAGTTTCCACCTGTTTTCATGTGACATTGTTAAAAGAT -TATATGGTGTTTTATGTGTCGAACAATTTAAATTTCGCCAGTCGTTGGCC -GCGCCGTAGGCGCGGTCAGCGGCTGGTTTTTCCAGAAAAGGAATAAGAAA -TAAATTATTTGGAAGTTACTAGGACCCTGAATAGAATTCTAGGCCATATC -GAAAAAGGGGATGGGTGCACGTGGGAACCTTTTTTTGGATATTTTGGAAA -GAAGTAAGAAGTAAGAAGTAAGAAGTTGACTTAAGAAGTTGACTTTTCTA -GAGTAAGAAGTTGACTTTTCTAGAGATCATCTCCCCTCTATTATTCTCAG -CGTGACCTAGTTATCCGGAAAACTCTTCCACCAAAAAATGAGTGTCTCCA -ACTGAAAAATGCGTCATAAAACACACGGAAAAGGTACTTGTGTATTACAT -GCCCTCATTTTAATAGTAGTTTTTTAAGCCATGAAAAATAAAAACGTGAA -CCACAATTTGTATTTTTAGGCTTAGGAAATAACATTTTCTAAGCCTAAAG -AGGAAAATGTGTAATACACAAGTACCACGGAAAATTTTTTGAAACCTTCC -GAATTTGAAATAATTTAACTAAAAGTTTCTAGGCCACGATGAAAATAGAA -ACAATGATGTCCCGATTTTGCTGAAAATTTCTGTCCATAGTTATTTAGAG -TTCTGAAAAAAAAGATTTTCGAGAAATGATTTTCTAGGCCACCAGAAAAG -TTTCTAGGCCATTATCCCTTCTTGATCCTTTATCATTATGATTATGATAT -TTTTTAAACGATTTTTTAGGCCACCAGAGGGAATTCTAGTCCGTGTCAAA -AAAAAAAGAAAGGGGGTATTCTTTCCACATAAAAATCCCGTTGGCCTTTT -CAATCAAATTTCTTCAATTTTTCGCATAAAACTTACCTCCCGCTGTGACA -AGCCTCCTCCCGTCTCCCAGTATTCTCAATTCATTAATCATCACCCCCAA -TGCCCTCATCAACTACAGTATCCCTGCAATCCGCGTCTGCAAATATGTGC -CGAATATGTCATACTTCTACGTCAACGCGGTCAAATCCGCTCATCTCACC -GTGTCGATGCTCTGGAACACTGCTCTTTGTGCATAAGGCGTGTGTTGTGG -TGAGCTCTTTTTTTGTAAAATTCAAAATAATAATTAAAAAATTTAAAAAA -AAACCTTTTGTGGAATTTGCAATTTTTATAAAATCGTTAAAAACCAAATT -CAATTTATACAAATTTCCACATTTTCCAAAATAAAAAGAAATAGCCATGC -CCACAAAATGGGCGGCGCTTTCATAGCCACGTCCATTTTGTGGGCGGAGC -CTCGGATCAAAGTTTTTTCAAAAACTTACTATAAGTTGAACACGGATTTC -TGGCTTCCTTCATAAATCGAAATGGCAGAGTTTGCCGAACTAGGCCATTT -TGGGTCGGAGAGATTTTGTGTAGATTTACGGCGTGTTGCGTGTCGCGTCG -CGGCTCGTTTTTAGTTGTAAAACTGCTGTATTTGTCCGTGTGGAGTACAC -GATTTTTTCCACGCGCTGTCCGGCAGGCGATTGTCAATGAGGAGCGAAAA -TTCAATGCGAAAGGCCAGAAGCCCGTGGTTGAAGTGTGGTTTCAATATTA -CAGAAATTTTAAAGAGGAATAAACATGCCTGCCTACAAAATGGGCGGAGC -GTTGGAGGCGTGGTCTAAGAAGTCACGCCCTTTTTTTTAAATACTTGTTC -TGATGTACAATAGAGCGCATTTACATCAAATTAATAATTTGTTTTTCAAT -TTTTCCAGAGATGGCTGGAAATGTCGACTCGAAAAATGGTCCCATCACCA -CGTTGCGAACTATGCGGCTACGATTATCGACGTGGAAATATATTTCAAAT -GAAATCTTTACATGTTCCACACGTGGATCGATCATCTTGTCTGCTCAATG -TGCTCTTTTTGATTACCGTATTAATTATGATATTTTGTGGATATTTTACG -ATTCAATTCATTCAGGAGAATGCACTCTTAAAACGAAGGTGGGCGAAGTT -TTCTGGTGATGACCTAGGAAATTAGAAAACTAGGCCACCCCGCAAATGTG -GTGGCCTAGAATACCGAAATTTGACTAAGCTATGGCCTGCGGCCTAGAAA -AATAAAAGTAGACTGTATAAAATTCTCATCAAGCCTTTTGGAGATGAACT -GGAAACCCAAATTTTTTGGAAGAAAATATTGACCTCCTTTAAAACGGTGG -CCTACTTTTTCTGATGGCCTAGGATTTTAGACAAAGAAGCCACACAGCTA -CTATCCACATAGTTTCAGGAAAAAAAATAAGAAAAATAGGCTCCGCCCAC -ATATTCTTTTGAATTAGAATATACACGAGCCATTTATTTTGCTAAGTTTT -GAATGTTAGCTCCGCCCACATAATGATTTGAATTTCCCGCCCATTTTTCT -CTCAAAAATTTGAATTCCCTGCCAAATTTTTTTTTGCGAAAAACTCAATA -CTTTCAGGCTCTTCGCGCACAGTTCGACAAACACAGCGTACACGTGGAAA -CGGCGTGGCTATTTCAGCGGAAACGGGAATGGAGACGGGGACGGTAGTTC -GGATGGATATTTCTCGCGTACACCTGTCTCATCACTTTTTGACATAAAAG -TGGTCTTGTGTGCCAGCATGTTCTTGGTCTCGTTCATTTTGGCCCTTTTT -ACACAGTATAAGTGAGTTTTTTGACACGTGGCCTGGAAAATGAGAAAACT -CGGCCACCGATTTTTTCAGCCGAATTTTTTTAGTTTAGCGGTCACACGGG -CTTCTGGCCATTCTCTCTGCATTTTTCGCGCTCCATTGGCATTGGCTTGC -CGGACAACGCGTGGGAAAGTCGTGTACTCCACACGGATAAATTTGTTCAG -TTTTACATTGAAAACCGAGCCGTGACACGCCGTAAATCTACCCCGGCCGT -GGCCGAGTCAAAATGGCATAGTTCGGCAAATTCTTGAATTTCAAAATATG -ATGGAAGCCTGAAGCACGTGCGGTCATAAAAATCAATAAATTATCTTTTT -TTTCCAGAGCCGAGTCCACGATATTCCGATGTATTTTCCGATTTTTTGTG -ATCAATAAGAATTGGATGATCAAAAACTACGATATCAAGTGAGTGGGCGG -AGTGTAATTTCGGCGGGAAATTCAAAATTTTTCAAATTTTTCAGAAAAAT -TTCGCGCAAAGTTCAAAAACTCAAAACTTTCGGTAAATTTCGGCGCGAAA -TTCAAAATGTTAAAAATTTTGGGGAAATTTTGGAGGGAAAATCAATTTTA -AAAAACGTTTGTTTGAAATTTTTTTAATTTTCAGAAATGATCCCGAAATG -GCTCACCGCCGCGGTCTCCAGAAGTCTTCACCTGTTCCGTTAACCTTATC -AGCTTCTGATATGTGTATCCACGTGTCATCCTAGTCAACAATTCAACGAA -AAAAACCATTCCAGTTACAATTTCTCATTTCTTTTCACCACTTTCGGGTT -TTTTGCAAATTAAAAAAATTTCGATTTTTTTTTTGAAATTTTAATTTTCC -AATTTTTATTTTTATTCCACAACTCAGGTTGCTCAACAGTGCCTAAAATA -AATTTTATTTCTTTGATTTTTTATAAATTTACAAAAAAAATACAACAAAA -AAATAATATTACACATTCGTGAAAAACGGAAAAAAAATTCAGCCTATTTA -CATTAAAACACGTGGAATTTGAAATTTTAGCGATATATCGATTACCCTTT -CTCGGAAAACTCGTAATAAATGTGAAAAAGGCGAGGAAATTGGAAGAAAT -AAATGCGGGGGTTTCTAGAAAAAAAAATTGGGAGAAAGTTTAAAGAAAAA -TTCAAAATAATGCTCCGGTGTCATCGTGTTCCACAGTGGTTAGATTCTGG -TATTTTGTGCATGGTGTGCTCTGAAATTTAAAAAAAAAGTAAAAAATTGA -AAAAAAAATTTCTTAAAAATTAAAAAAAATGAACTTTTTTTTAAAATTTA -TATTCAAAAATAAAAATGTTTGGTATACCTAATTATTCATACTTTTATCA -ATTTTCGAGAAACTTCAATTTTTCAACTGCTAACGTATACAACTCGCGTT -ACTCGAAAAAGACCTGGGGACTAGTTTCCCACTTGGTGGCCTAGAAATCT -CCAGTAAAAACATCGACGACCGAGATATGAGTTTCTAGGCCTCCATATGA -AAAAAAAACTCGGTCGGGGACTAGGTTTCCACATGATGGCCTTGATAACT -TCAAATTTTTTGGTGACCTAGATTTTTCAAAACTTGGATTACTAGGCCAC -TAAAAGCTTTTCGGTGGCCTAGAAACCAAAATTGCGTGAATTTTTCATAA -TTCTATATCAAAATTGACTAAACCGAAAAGAATGCGATGCTTTTGCAATA -TTTCAGCAGTTGGTGTATCCCACGTGGCGACGGGATTTCGGGCGACCGTG -CCATTGATTAGAGCCAACGGAAGATATTTTGAGCATTCGGCGGTGCTCTG -CAAAAATTTTTTTTTTGCAAAAGTTAAAGACGCATGGTGGGTCTTGATCT -ATGAAATTTCGTGATTATTCGAAAATTTTTTGTCCTTATTGACAATTTTT -TTATCCACAAAAAAGGCGGATGTCCTAATTGCCAAAAATGTGGGTTTCTA -GGCCACGAAAAATAATTTTTTGCTTCAAACATCCTGCTTTTTTTCCAAAA -TTTAGCTTTAAAAAGTCGGTGGCCGAACTTTATTAAAAGTTCAATTTCTC -GGCCACAGAAACTTTGTTTAAGTTTTCACATTTGGATTTCTAGCCCACCA -ATAACGTTTTTATTTCATATTTTTATAAAAATCGAATTAAAAGTAGATGA -TGACCTAGTTTTTTTTCAATAATTTGGGTTTCTAGGCCACCAACTTTTTT -TAAAAATTTTCTTAATTTTCCATAACCAAAAAAAAAAAACAAAATCGATG -GCCTAACTTTTTGGCTTCCTAGGCCACCAATAACTCTTTTATTACTAATT -TTCCTCACTCTCTGATGTCGATAAACACTTTCTTGTCTCGAATATCGCTT -CCCACACCCATCACACTCAAATGCTCCATTCGTCTCATGAGTGAGCAAGT -GTTGATTGAGCCCATGCTTTTGCCGGAAAGTTTTCTCGCAGTCTCGACAT -TTATAAGGTCCATTGTTGGGCTGGGCCTCGTGAGCCGACGACGGGGCCGC -CCGTTTTTTCGCCCTTTTCCCCGATTTTTCCGGTGAAAAAGTGTCGAAAT -ACGCGTTATTGTCATCTAATTTTGGTACATTCGCCAACATTGCTAGATTC -TCCTGAGCCACCTGTTGTGACGTGTGAGGAATGTGATGGTGCTGATAGAG -GTCTGGTGGTGGCTGAAAATGGGGAATATTCCCGGCGCCGAACATTTTCA -GAAGTTCCAGGTCGAATCGTTGTTGAGCATCCGCGTCGACTACTTGATTG -AGGGAGACGGTGAAGTCAGTTGAGGAGGTGGATGGCAGTTTTATAGAGAA -ATCCTGCAAAAACTCAGGTTTTTGCTAAATTTTTCAATTTATCATTGTAA -TTTCCGAAAAATTATAGCTTAATTTTTAGATTTTTCGCTTGATTCTCAAG -TTTTTATGCGAAAATTTAGTTTTTTGTCAATTTTTTTTTGTTTTAAATGT -AAAACTACGGTATTTAAAGGGAGGAGCACTAATTTATGCCGATGGGTCTC -GCAGCGAAAACATTAAATGCCTTAATTTAGCCATGCGCCTGGAAGGTTAC -TGTAGTTTTTATTGATTGATTTTTCATTCAATTTGTGGTTTTTGAAGGTT -TTCAACTCATTTTGAAAGGCTTTTATAGATTTTTTTTTCTGAAAATCAAA -TTTAAATGTTAAAATAATTTTTTTTTTTTTTCACACAAAAATAACAGAAA -TTCCGAAAAATTGCAATTTAAACAGCTCTAAAATATGAAAATTAACGCGA -TTTTTATCATTTTTTGCTTCAAATCGCTGACTTCTGGCAAAAAAAAGGAA -AATTCAGCAAAAATCAATTTTTCAGAAAAATTTGATTGATTTTTGGAATT -TTTCTTACCAATCCGTCGTCTTGCCGTAAATCCTGTAGCTTCATCTCCTT -AGCCAGCAGATTTCTTACATCTAATTGCACGTGGCAATTGCAGTTCTGAA -AAAAAAATGTTTTTGAGATTTTTAGAAAACTTATTTTGTAAATGTTCTAG -GTGGGTTTTCAAATTTTTTTTTAAATTTAATTAAATCAAATTCTTCTCAC -CGTCAGTTTCTCTTTGACAAAATCGCTCAAATTCTTCTGATTTTCCTGAA -CTTTCTCCACTTTCACGGCCAAATCCTGCTGCTCACGCAAAAATTGTTTG -ACAAGACACGTTAGCTGGTTCACATTTGATAGATTGTCCGGGATTTTTAT -AATCTGAAATTTGAAATTAAGGATTTTAGCGGTTTTTTCGGCAAAACGTA -AACTTTTAACGCTGAAAACTCACATTTTTCGAACTCCGCTCCAATAATCG -TCTAGTGAATTCTTGAATAAATCCGGTTGCTTTCATAAAATTCTGAAATT -CCTCATTTCCAATGAATTCGCCCATTTTCCGATGGAAGAAAAACCAATGG -AAATACGGCAATATTTGCGCACAAAATCGATGCTGAAGTGTCGTCGGACG -CAGTGTTTCGTGTGCAGTACACGCCTACGACAAATTGCGGACTTTTTTGT -TATGGAGAGAGTAGAATAGAGAAGAAAAAAGAAGATAAAATGGATAAAAA -TTGCGCGTTTTTCTCGTTTTTTCTCTGAATCTCTCAATTTTTAGGTTTTC -GATCCATATACGTCCCGAGTGGAGATGAAGCCATAAATTTTTCTCTAAAA -ATTGTTTCTTGCCCCTCCAAATCGCTTATTCGTTTTTAAAATTATGAAAA -AAAAATGCTAAAAATGCTTACCAAACCGCAAATTTTTAATTGGAAAATAC -CCAATATTTTGCAATTTATAGTTTAAATTCAAGAAGGTGCCAAAATTTCT -GCAAAATTGCATATCTTCATATAAATTGTTACATTTTTTGTAAAAACTTG -AAAACCCTGCTTTTCACATAATAGTACTGGAATTTTTCAATTTTCAACAA -TTTCATAATTTTTGACCAATTTTTTATTGAAATTTTCAATAAAATATTTA -AAAGATGTGGCTTTCCAAGCAGATTTTCCAATTTTTCCGAGTTTGAGTAA -CTAAGTTTCAACCAAAATGATGTCACAAGTCAGAAAATTTCCCTAAATTT -CAAAACACAGGTGAATAACTATAGGATTAGAATCTGCAAAGATTGAGTCT -GGAGATAATTTCGGACATTTTTTCGGATAGTTTACGTTTCCTGTAGTTTC -AAATAGGCAATTTTACTTTAAAGGTTGCTAATAAAATTAAGAAAAATCCT -TATATAGTCTCCACCCACAGATTGGCTTTTTAGATATTTTCAAAATATCT -TGTAACGAAAACTACAGTAATCTTTAAAATTAAAATTATTACTGTATTGC -TTTTGTCCATTTACGGGCTCGATTTACGAAATTAAATTTAATAATCTTTA -ATCTATAGAATATTAAAATTAAGCAAAAAATGAGAAAATAATACGAAGAA -ATGAAGGAAAATGGAATATCGGTGTAACTATCCGAAAATAAATTCATTTA -GAAAATCGAGCCCGTAAATCGACGTTACGAAGAATTACTGTAGTTTTCGC -TACGAGATATTTTGCGCGTCAAATATGTTGAGCAATACGCATTTTAAGAA -TTTACTGTTATCGTAATAGTTCAAATTTTTCGAGATAATAGTCTTCCAAA -AAACTATTGTTTAAGGTTTTATTTTTTCCGTAATCTAAATTGATTATCAC -TAGACACTGTTCATTAATCATTCAGAACTTGTATAATCCATCTCGGTTAA -ATTGTTGGTGAGACAAAGTGTAATCTGTTCTAGTTGGGTCACACGATCCC -TTTTCCACTCAATCGCTTACCCACTCAACACTATAGACTAGACACTCACA -CAGGAAATAGTATTGTTTACCTGTTTTCTTTTGGACACTGTTTATAACTT -TTCCCTCTCCGTTTCTCTACGTTTAAATTTGTCAAAAATTAATAATTTTC -TTACTTCCACATTCAATACTCATTTAATGACCGGTATTTGAAAATATTTT -AATTTTTTAATCTTTAGTTATTACAGGAACAGTAAACTCTGGGAATTCGT -ATTGCACAACATATTTGACGCGCAAAATATCACGTTAGCTGGCATAATAT -TAGGCATATATTGTTTCTACAATCTTGTAATGTATAACTGACTAACATCT -TTGAAATAAGTTTGTAAAACTTGTGAGTTGGAAAACATTGTGCATGGATG -TCGTGTTTCGCGCACGCGCTAGAGTAGTCATAAAAAGATTACTGTAGTTT -TCGCTACGAGATATTTTGCGCGTCAAATATGTTGTGCAGTATGCATTCTC -AGAATTTTGTGTTCACGTAATAAATTAAATTGTTAAAAGATATAATAAAA -GTTAAAAGATATAACAGATTTTTTCTCACTTCCCTAATATGTTTAATAAT -CAATCATTTTAAATTGTGCCGAAAATTTTCCGTTTTCCAATTGTTCGGAA -TTTTTTCGGTTTTGCTCGAAAAAACCAAAAAGCAAATTTTTATAAATTTC -CCTGGTGTTCAAAATTTTCCCGCAATTTTTACCTATTTTATTTTCAAAAT -ATTTATTTATTTCAGTTCCCCCAAGTCAAACCGTTCGATGTTGTAGAAAT -GGAGATAATTCCGCTGCATTACGGAGCACAAGTTGGGATTTATGACGAGG -ATCATGAGGTTGGTAGATTTTAATTTGTTTTTTAAATCGTGGCCTAGCAC -ATTCTAGGCCACAGGTAGTGACGTCACTCTGAACATTTTCAATATATGTA -AATTTTAAATTCAAACTACTTAAAACTCGGAAATCACTTTTTCCGTCAGA -TACACAGAAATAAACTAGTTTTACCTTTTAAAAAACTAAAACCATTGAAC -TTTTCACAAATGTTCTTTGAAACTTGAGATAATCTGCAAATCCCAAACTA -TTAAAAACTGAAAAAGGTAGCCTAGAAAATGAAAATTTTCAATAGTTTTT -TCAAGTTCAAAGAAAAAAAATTGAATTTTTAAATTGTTTTTTTTCGCTAC -AAGTCAAAATTATATTATATTTATTAGTTTTTTTCAATTTAAGAACATTA -CTAAAATTAGTGCATATTTAAAAAAAATGTTTGTTTCGGAGAAAACAACT -ATTAGTAATTGCACTGCAATCATCAGATTAGTGAGGAATTTAGTTCTATT -TTTTTCTTTTTTTTCTGTTTCAAAGTCGTTTTTTCATGAAAAATAGACCT -TCGAGCTACTGGTTTTTTGAGAAATATTATTTCAATTTTCAATTTCATGA -TGAACAACATTTTTGGTAACACATTTAATTCTAGTAGAATATTATCCACT -TTTTCTCTAATTTTTCAAAATTTATTCCTAAGTTTTTCTGATCAATGAAG -AACTACCTTTTTACGACAATATTGCCTTCAATTTTTTCTCTCTGAAAATT -CGAAATTTATCTGAATCAATGGTGCCGGTTTTCTTATTTCTGAATAACGA -AATAGATTTTTTATTTATTTTTCAACAATTCCCGGAAATTTCTCTATTGT -TAAAAACAAATGAAGTGAAAATCGATTTTTTTACTTCGAAAGTTTAACAT -GAAATTCGATAAATTTAATCTATGATCTTTCAAGCTCCGCGAGTTTGAGG -CGGGATGTTGATAATTAGAGATATGCCGGGGGAGAACACTACTCTCCAAT -TATATTTCGGTTGCTCGAGAAATATTTTTAATGATAAATACTGGATACTA -GATTCTATAGAAAACTAATTTATTTCAATAAATTTATTATTATTCAGGAG -AATTATATTTTCTTGCTCGAAAGAAAATAAATAATCAAAAACCGACGCAT -TTTCCTGAATTTATAGTTATTCAGAAGAATATAGATTTTTATTTTCAAAT -TCTGAGAATTCAGAAAACATGGCTATTTGCCGGCCTAGAAAATAGAACAA -CTAGGCCACCGATCATTTTTGTTTTGCCGTTGTCAGGCTTCTGGCCTAAC -TTTCTCTATCTTAAAAGATTCCCAAATTCAAACTACTGGCTTTCCAAAAC -CTTCAAATTGTGGAATGAACTTGTGATTCCAAAGATCTGATGTCAAGAAT -TCAGTCCATAGTTCATATACTCCAACAACACTTTTGGAATTTTAAATCTT -CATGGTTTTCAAAAAGAATCCACCAAATTATTTAGCAACGGGGTTTTCCC -TTCTAAACAATTGTGTGACACAAATCATAATCTCCGTCACTTTGTACAAT -TTTTCTAGTTTTGGTGATTTCCCCTCATGAGCTCAACGCGGCGGAGTAGA -TCTTCCATGCAGGCGTTAAAACGCCTGCCTGCCTGACTTTAAGGCGGCCT -CCGCCTGCCTAACGCTTCAGTCCTAGTCTTGTGCTAAACCATACATGAAC -TATTTTTCTAATTCTTAATTTGGTTCTCATAAAATTGATAAAAATTAGGA -AAATTTGAAATCTGAAATTTCAAGTAAAAATGGGCGGCAAACTTTGTATA -AAAAAAAAAAGAAAGCTCGGCCACCAATTTTTCAAAGTTTCTTACCGCTC -TCTGTCTTGCCTCGGGCAAGCCCTAAAACTTTAGAAAACATCCCCGAACA -AAAAAGTAATAAATCCTTCAAATGTGGGAGATGCCCCGTGTATATGTCAC -CTGTCGACTCGTCGAAAACGTTTGTGCCACCCGGCTCTTTACCTCGTCTC -CTCTTACTCATCATTTTACTGCCCCCGTTGCTTTCCGGCTAATGAGGTTC -TTAGGGCGTAGGACGCCATTGATTTGTGCTCTTTTCAGGCAAAATTTTAG -ATTTTATTTCTCTGATTTCACTCAATTATCAGACAATCTAAGTTTTTTGA -CATGTTCAATGCTGGAAGCAATTTTCGATTTTTTTATCGACCATGGCCTA -AAATTACGGGTCAATTTCCTGAAACGGACGAACATTTTTGAAAGCAAAAC -AGTTTGTAGAGTTTCGCTAAAATTTCTGATTTTTATCGAAAAAATCGGGC -ACACCAAACAAAAGTTCGTTTGTGTCAGGACCTTGACGGTACGCAATTTT -CGGACAAACCACGTGTGGCTGATTCAAAAATGTCAACTAAATTGACATCT -TGAAAACATTTTTTTCACCTGAAAACCACTAACAGTGTCAGGTTAATCCG -ATTCAAGCGCTATTTTTATGAACTTTCCTGAAAGTTTAATTCCACACGTT -GTGAGGGAATTTGACACATTTTTAGAAAACCTGATCTCACGGTTAATTTT -TAAACACTTCGAGGGCCCAGAAATCCTAGTTTTTTTTCTGGTTATTCATA -GTTTTTCTAGAATTTAATTTCACATCTACATTTCTAAACAAAACTTTTGA -AGGTCCTTGTAATTCTTCTCTAGTTTTTTATTGTCAAATTAAGTTTTCTC -CAAATTAGGAAGAAGCGATAATTGCGGGTTTTGTGAGGGAAGTTTGTCGT -CGGTCCATTTGTTTTGAAATGAGAATCGGAACGATTTCCTGTCTCCCGTA -GAAACCAATTAAACGAAAACTTTTTTTTTTCATTTCGTTCATTTTGCATG -CTTGCTAGCCTCGTCTATTGGAATTCTTTTGTACTATGATTCTATTCTAG -TTGTGTCTGCATTAAAAAAATCGATTTTTTTGTTGAGTATATTTATTTTT -CAAACAAGCCGAAAAAATAGATCAAAACTGAAAATTTTATAAGAAAAATT -TCAGTTTAAATCTAGTTTTTTTTTCAATTGGCCAACTTATAATTTATATA -TACTCTCAAAATCAAAAAAAAATGCACATTCTATATTACCCACAAACATC -GAAAATCCGCTATTCCCTCAATTATAAAAAATGTGAGAAAATCCTCGATT -CTTGGTTGCTATGAGACAGATTTCAGATTTTTCACCGGATAAACAAGACG -TTATCATTACTTTTCAGTAATGCGCGTTTATTTTTCTATTCCATTTTTCG -AATTTTGAGATGTTGTATTATTTAGAGAGCACGAAATTCTAAGAATGCGT -ATTGCGCAACATATTTGAGGCACAAAATATCTCACAGCGAAAACTACAGT -AATCCTTTAAATGGCTACTGTAGCGCTTGTGTCGATTTATGTAAATCATA -TATTCGTCGATATAATATTGAGCGAAAATTAAGAAAATAATACGAAAAGC -GAAAAATTAATATCGAAAATCGAGATTCCGTAAATCGACACAAGCGCTAC -AGTAGTCATGTAAAGAATTACTGTAGTTTTTGCTACGAGATATTTTGCGC -GTCTAATATGTTGTGCAATACGCATTCTTAGAGTTTTGTGCCTCCCGTAA -TATTATGTACAATGCGTATTTCCTCTGCATGCAAGACTAATTTCCGATTG -GTCTGTAGAGGTGCAGTTGGCTGGCTGACTTTTAATACTTATGTTCCTTT -AAATTTTCAAGTACGATTAGGAACCCTTTCTCTCAGAATTTCACTAGTGT -ACCTTAATGTTTGTCTTTTGCTACCTGAGACGATCATCAAGTCTTTTCTT -TTGTTTGTATTAGATTTCGCAGTAAAATTGTGAAAAAAATTGCAAAAAAT -TGAGAGCAAGAGCAGAAATGTGCACTTCTCGTTGTACCACGATTTTTCGT -TTTCCCACTAAATACCTATACGTATAGGATTATCCAAAGATGATCCCGGG -GATCACCAGTTCTTAGTTTCCTTATCAATTTTATATTACTCGTATGCCTT -CCTCGTTTTTTTTTCTAAAGCCATGAAAATCATAGGTATCGCCTCAGCGG -GTCGTAGAAGGAGCACAATGTACTCGAGCTCGTCACGAAGACCGTTTCGA -CGGCTGGTTCCGCTTAAAATGGTTAGAGAACTGGGTCTTGATGCGATCCT -AACAAATTTTTTGAATCTCTAAATAGTCCCTATAGATCATGTAATAATAT -AGGTTGAACGTTTTACAGAATAAAGTTTTACAATAAACTTTATAGCATGG -GTGTGTGGCAAATTTGCCGGACTTGCCGTTTTCCGAGATCGGCAAATTTG -CCGAGTTTGCTGCACACATGAAAAATTTTTAATTAAGATTTTGTGCAAAA -ACTAATGTAGCCCCTGGTTTACACCTTTTTACGATATTCTGAGTACATTC -GAAAAGGATGTTTTAAATAGATTGAATATCAAATCAAAAAAGAAAGTTGC -ATGAGTATTATATCTAAAAACTTTTAAAGAACACATTTTCAGGCACAAGG -CCGAACGGCAACCGACTACGCGGGTCAGGACTACGATGAATGTTATGATA -GGTTAGTTTCTTTTTCTATTATTTCATTCAGAATATTACGAATTAATGCT -TAAAAAATTTTCAAATTAATTTTCAAATCAACCGCCTTAGCTCCACCCAG -CTCTCTAGATCGCAACCCGCAATAAAGCCCATAAATCAGTGGGCAGCTGC -TGCTGCTCCGTAGTGGATCAGTCTGTCGTCTCTCCGATCAGTGCGCTCTC -GATGATACTCTCACATTTGACCTTTCTCGCTTTTTGTAAACTATGTGCTG -GACACGTTGAAAGTAGTATCAATTGCACTTTTCTGGGTAGTTACCGATAA -AATTGCCCAGATGGAAGAGTTTTCCATAACAATTTCTCTTCCATTTTCAT -CTATCAGCTCTGTGGCCCCGCTCATTAGTGTTTCTCTAGCCGATGCTGTT -CCAGGTTCCCATGGCAATGTGTACATGTGTGCCTAAAGTGAGCCAAAATG -CTCTTTGAATTATTCATTCATCCTATGTTTTTTATTCGTCCTCACGTGAC -CTGCACCACACTGCGCATTAAATATTAATTGGCACTGAAGAGAGCCGCCG -CTCGGGCAAATGTTTAAATTTTAAATTTAATTGATTTATACATATTTGAA -AAATGAGACACTATGTTATTTTCGCCGAATTCGTTCTCTGAGCATTGCGT -TCATATCTTTGCACCTATATGAACAATTAAAATAATTTGTGTGTCCGGTA -ACGAAAAACCCGAAATAAGTCTTGCCTATACAGGAGTTTGTGGAAAGTTT -TCAAAATTTTTAATGCAAACAACGAAGGAAATTGGAGACGTAATACGATC -ACTAGCAATCTGAATTTCTACTTTCAAAACGTTTTTTTCATAAGAAACTC -CATTATCCAAAATCCGGCCACCTTGCTAATCCTGAGTCCATAATAGGCAT -TGCTAAGGCAAATCTAGGGCTTTTGGCCGATAAAAGACTTTTTGATAATA -ATTTCCAAGCTTAAACCTTATTCATATTACTTTTAGTAATCCTATAAGTT -TTGTTTGCAGTGGTTCAGAATTGCCGAACATTCCAAGTTTTTTGATAAAG -GTTTTACATATATGTTGAGCTTAAAAAATAAACTCAAAAAAATTAACAAT -TAGTTCATACGTTATTAATTTCAACGAGTTTTAGTGTAAATATATATGTG -GTCCTCTATATATTTTCCGTATTATTATTATTATTGATTCGCTCCAAAGC -TTTAATTTCAGTCTCAAGACTATACTGCTCAACTGTGTTTATAGTAGTAT -TTTCAAACGAACAAAAAGTGACAATACAGTATACTTTAAACTAAAAAAAA -CTTTGTCGATGAAAGTCTATCGATCAAACTAGCGAAATCCGCCCGTTTAA -TCCGTTTTCCCGCCACCATCACTTATTGTGTTTTCATAGAGCTTTATTTG -ACGGAATTTCCTTTCTTCTGATTTTTCATATTTAACCAAAACTTACTTGA -AAGAATCTTAAAAGGGATTTTTACAACTCTCTGGATCAGATTTTTCGAAT -TGTTTCATTCGCAAAAGAAGAGCGACTCACTGCTATAAATGCAACATTCA -CCACACTATCTCCACAATTTCATCTATTAATTCATACAATGACACTACAA -TAATCCCCACTTGCTCAGAATTTGTCTCTCCCGCGGGGGACAAATTGGAA -TCAATCATTCTGTCGGTCGACCATTGAACCACCACCACACAATATGGTTC -AGCGGGGGGAGGTCCAGTTTTATTGTTATTACGTATACTGCTAGGGGAAC -CCAATTTTCGGACCCCGCGCGGAATATTCAAATTGGAAAGAGTGTGTGTG -CAAAAACTTTGTCCATCTTGTGTCCAGCAGACCAGCCAGCAGCTTCTCAA -TTTCCGCTTCAACTTTCTCCACTTTCCCATGGGACAAACCTTTTGTCTTT -CTTCTGGCTTCTCCTCTTACTTCTTATTCTTCTTCGTTGCCCAAATTGTG -CTGGAAGAACTAGAGATGCTGAAAAGAAATAGGAAAAGAGCACGAAGACA -ATATTTATGTTTTGTTTTCCATGGTTCGCCTCGAGTATTTGATTAGGCTT -CTCCTTGTTGTCTTCACTCGACGTCGTGTTCTCTATTTTATGTCCACTCT -TGAATTCCTGGAGTTTTCAGTGCACGCATTTGTTGAGCTGTAAGAAAGCT -GCAGGAGTTTCCCAGAATTTGATCGATTTACGGAGCGGAGTGTCGTACTA -CTTATTTCCGGATTATAAAATTCTGAGAATGCGTATTGCACACCATATTT -GACGCGCAAATTATCTCATAGCGAAAACTACAGTAATTTTTACGTTTCGA -GAATCGAGCCCCCCTAAATCTACACAAGAGCTACAGTAGTAATTTAAAGA -ATTACATTTCCGAACCTTTCTCATTTTTCAACAATTTTTTAACTTGCCTA -GCGTAGCCGAAAATTAGCGGTAATCGCTTCAAGACCCAAAACAAGCCAAT -TTCATCAAATTTCAAGTAGAATTTTGTGAAAACAACCGTCACTACCATTC -TGATGACCCTTTACTTCGACCGCCCAGTTCGTTAAACATTTTTGAATTTT -GTTCACCTGTCTGCCACCACATATCTTTCTTCATCAAAATTCAACGTGCT -GCGATCATCATCTTCATCTCTGTCTCTTCATCTCGCCCAAATTCATTTCC -GTCACTGCGTCTCGTACTGATTTTTTTTCATTTGTCTCCAATCATTTAGA -GGCCAAAAGACCTCCTCTCAATTTTTTTCTGTCTGTCATTGACCCCTCAG -TTGCGAACCGATTCAGAGTTTACATAAACAAGCTCGCTTTGTATATAATG -TTGAGTGAGCGAGAGAGTGAAAGAGAGAAGACGCAGGAAGCTAAGCGTTT -CCTTTGTTTCAAGCTCTGTCAAATTGTCAATTTTCTAGCTAGAAGATTCT -TATGAAGTTTTGAACATTCTAGATTTAGTTTGTTACCTACAACAGGTGAA -TTTGTCTTTCTTGTCCAGAGATAAAACTTATCGTGGCCTTTTCCGAAATA -GTATCAGATTTCCTTTGTACAAGGGCTTTCGTGAGGCGGTAAATCGCCTG -CCTGACTTTAAGGTGACCTCCGCCTGCCTCTCGCCTCAATACGTTATGCT -AAAACAAACGTGAACTTTTAAAAAAATTTAATTTTCAACAAATTGATAAA -AATTTAAAAAATTTGAAATTTACCTGCCTACCATAGAAGCCCTACCTTGT -TCCACTATTGATGCGATTCATTCTATTACAAATCAATGTAACGAACTCCG -AAGTTTGATAGCCCGAGGCGTTTTCCTTGTTAATTTGATATCGATTATCA -GTTTGACCAACCAAACACCATCGATTTGGCTTGATTTTCAAGGAATTTAT -AGAATTTCGTAGAGTTTTGGACTATGTTTTGCATTTACGTTGAATGGAGA -GAATTATATTTGAATAATTGAATAACTTGTTAATGGTTCAAGGATTACCC -GTTCCGAAGTCTAGAAATGCCCTGGCGATGCTCCCGTCGAGAACTGTAAC -CGATAATCAATCAATATTGCGGGTATTAATTGGCTAATATTCATAATCCT -GAAAAGTTATTTGAATAACGGCAAACTCCCAAGAAACATACCATTTCCGA -GGTGTATGAGAATTTTAACAAGACCTTAGGGTACATAAGCCTATCAGTTT -GAAAAACAATGTCGGAATTTGTGCTTCCATGGTAGACAGGCGCGGTTTCA -GGGTCTGAAGCTTGCCTGAAGGCCAGGCAGACAGGCGTTTTAATTCCTAC -ATGGAAGCCCTAGAATACAGCATATACGGTACCTAAGCCAATTATCAAAT -TTTACTTTTAAAAATTCATTCCACAGGTGTTCCTGTTCTGCTGCATCATC -GTCACACAGACACTTACACGCGCCTTTTCACTTCTCATTTCCCACTTTTT -CTTCGTTTTTCTCGCTTTTTCTTCTTCTCGACACGAAGAAGTAGGATAGA -TCTAGAGACGTCGAAAGCCATAATTGTTTCCGTCGGCGTCTCCACGCGCA -CTCGTACTGTCTACAAGTGCCACACACACACTTGAAGAAAATAGAGAGAG -GTGCAGGAGGAAAAGGAGGGGACGACTTCTGAAAGTGTCGATAACTACCT -CCTATTTGAGTAAAGAGTGCAAGAAATATATGTGCGTGTGTGTCTAATGA -GAGGGTCTTGGAGCGATTTTTAAGCATGTACAGGCATGAATCAGGCGGCA -GGTTCCAGCCAGGCTCTGAAACCGCGCCTGCATACCAGGGAAACCCAACG -ATGGTTTTTCTTTGCCCGGTTGATCCCTTTCTTGGATAGTTTTAGTCTTC -GTCCGTTTTTCATTCATACTCTTTTTGTAACTGTTCAAAAGTCTAGTTTC -ATATAATCAGAAATTCGAGAAAAAGGATTTTTCGAGGCTCTGAAAAAAGA -TCCCAGAAGATTGTGTCTAATTCTAATTCTCTACAGAAAATGCCCAAATC -GAAAATTTTTCGACAGATCCTCGTATTTCGAAATTCTGGAACATTCGGCA -AAGCTGAAAATGTCACAACTTGCCAAAATGAACATTTTCGGCAAATCGGC -CAATAGCTGTATTTTTCAAACTTTCGGTAAACCGGCAGTTCGCCAAAAAA -AATTCGGCCATGGTCTAGACTCTAGAGTTGGGCGGCAGACAATTATTTCG -GGCAAACGCAAAAATTAAAAATGGAAATTGGTGTTCGGCAAATCGACAAT -TCGCCGGAATTGAGAGTTTCCTGCAAATTCGGCAAACCGGCAATTTGCCG -AAGGGCAACTTCTCCGAACTGACACCCCTTCCAAAAATCCGAAATTTTTT -TAGCTTCACCCCCTTCCCTCCCTTCTCGTTTTCTAAAAACCGGACACACC -TCTTACAATTATTACAAACACCACTACGTACGTATTAAACGTCTCTCGTA -ATAAGTGGGGCGCCAAAATATAATGGTTTTTGTTGTGTTTAGTTAGCCTC -CTCCTCTCTACTTCTCCACCATCATCAAATCTACCACCACAATAACATTA -ATTCGATCATCAACTGACTACTTTTGTCTTTCAATGTGGATTTGTAGTTG -TTGGTTATTTGAATTCTTAACTATATATCCATCCCTATGTTGAAAATTTG -AAATTTTTGGTAAATTTGAAAGATACCAAGTTTATGTATATTATAATATA -TTATAAAAATTTCCGGTAAATTGATATCCTGCAAACGGCAAACCGACAAT -TTGCCGGAATTGAAAATTTCCGGCAAACCGCAATTTGCCGATAATAAATT -TGCCTTTATTGATTCTAGGTTTCGAAAAATTACGTGTTCCGTTTTTTTTT -TGAATATTAAAATAGGAATATCAGAATTTTTTATTTTTTATTCTGCAACT -TTTCAAATTATGTTCAAATTTATTATAAAACTATCGTAAGTGTGAATTTG -CAATTAATTTTCTTATTGCTAGGTATCAGTTTTACTAGGGCTGTCATGTA -TGTACCAAAACGCCTACCGCGCCTTCTGTCTAGTGCGGTGCGGAACCCGA -AAAGTGTCGGAATCATCTTTCGCAGTATGTGGTGCTGAAACCAAGCCTTT -GAGTTCTCGCCATAGTGCGGCGAGAGGCCGGCATGAGGCGGGCAGGTAGG -AGGCAGGCTTCAGGAACTGTGTCGCGTCTGCCTCCCAATCCCAGAATACT -TTTTTTTTCAAAAAGTTGCAATGGAAATCAGATTTTCAAACGCAACCTGT -CTTCCTCTTGTACTCAACTTTTACTTGATGATAGTCGATAAAGGTGTGAA -CGCGGTGAGGTGTAACCGTGTGACAATACATCATTGTATTATTCTTTTTC -GCAAAAAAAAAACATTCTTTTGGGTATTATATTCTACCAATGTATCTTTC -ATTTTCTCGATTGATTTTTTCTCCGGCGAAAAGAAAACAAATTGAAAAAA -AACGTCAAAACATAAACATTTGGAAAATATAAAGGTGGATATAAAAACGG -TTTCTTTCTTCTGGAACATTCATTTTTAACCATTTTCCTACATATTTTCA -CGCTAAGCCGGAGCAAAACAGAGACAGTCGAGACTGTCAAAACATGTAAA -ATATACGTTTTTTGGTATACCTATTTATTAACAGGTGCTCCCTTTTCTCT -AAAAGTTTAAATTTGTCGCGAAAAAATGCAAGAAATGTTTTTTTTCTAAA -AACTAAAAACTCGATCAAAAATAATAATTGGGTATTTAAATATTCCGGAA -TCTCCATTTTCTTCCCGTTCCTGCCCTTCCATTTTTTTCTTCCTGCACTT -ACTCGAGTATTCATCCTCTTCTACTGCTGCCATAAAAGGTCTTCCGCTTC -ACTGAAGCCTTCTGCACAGCAGCGTATCCTCCCGCTTCATATCTCGTTGC -TGAACTCCATATAGCTTGTTATAGCTCAGTTTTAGACGGATTTAGGTTCG -AATTTCTGTAGGGTCTCTAGGAGTACTGTAATAAGTGATGTGTCAAAAAT -TTGGCCTAAACTGTCATTGCTATAGATTACGGTGATAGAAATTTGAATAT -GTATGAAATAGTGAAAAATCAGTAGACTGAGCCTTACTCAAATTCACATC -CGTTCGAGATATTTCTGAGTTCTGAATTTCTGTTGATTGCAATTGCCGTA -ACTTATAGCAAGGAAAGAACAATTTGAAGCCGAATTTACGGCACAAAATT -AGTTTTGGTGCTTCTAGAGCCTATTTTATAAAATATATACTTGACACGTG -GCTTTTCAATATCACCATCTCAAGAAATTACCACAATCGTTTCAGGTGCG -AACAAGAGTGTGGCGAGGAGGCGTGGCGAATCGCGTGCTGCTCACGAGTC -GGGAAGATCGCCATCCTTGTCATGTCAATCATTGTATTATATCTTATCAT -ATCAGGTTGGTTTAAATACATATTATTCAAATTTATCTGAGTTTACACAA -TGAATTTTCAGCATTAACGCCCTCCGAAAGCACACACAAGACGGACCTCA -ACGAGCCGCGGCCTGGTATTAATTTAACAAGGTGAGAATGTTGGGAACAT -ATTACTATTGTAGGAAATTGCTCGATAATTCCACACTTATTGAGTTCACA -ATTAATTTCTACTATATTAACTGTGTTTTTGGTAAAGAAGTATCACTTTT -TCCCCTCCCAACTCCGATAATTCGGCATTCCTAGAGTTTTAACACAATGT -TTTACGACATACTTATGAAGAGTTGATGCAAATCGCAAAAAAAAAACAGA -AAAATAACTATTTTATGAATAGTATCATTATCGTATGGTGTCGTCAAAAT -GTTTTGTTGTTTTAGTTTTTTTTTACTCGAAATTTTCTGAAAACACCGAA -TTTCATATTGAATCAAATTTCTTGATAATTTATTAGACATTTCGATTTTA -CAGAGCCAATCAAGTACTCACCGGATTATGTGATGCCTATGAGCGAGGAG -ACGTTTCCGGAGACTCTTGTAATCGACTTTGCTATGATCGAAACTGGCTT -GTCACTGACTTTTACGAAGGGCACAAGACTGTGGTCATAGTGAAAGATGG -CGGACAGATTGCTGTCTATAAAAGCACAAAACCGTTTATGGATCAATTCG -ACGAGCCGAAAGACCATCTGACGGATGCAGAGTTCTCGGATCGAGTAGTC -GATATGGTGAATGATGAGCTGAGACTCGGATGGCCGAAACACTATCGACG -GCATTTAATGGAGACTGTGTGGCCGACACTGTTACGGACCAAGGGAGAAG -CCATGTCGAAAGCGGATCGACGATCCTTGTGGGCTTTGTTAAAGCAGCCT -GAATTCATCCTGTTCCGAGTGTTACCGTTGACACGTGTCACGCCGAAGCT -CATTGGGACGTGTGGACATATGTATCAGACTGAGTCACTGGTGGCGTTCA -AGATGAAAGGGTATTATACGAATTTGAAGGTGGGGATTTTTTTTTAACTT -GATTTTAAAAAAAAAATTTTCTCAATCCAAATTTACAGGCAAAAATCTTG -GTGCATGTCATGGGAACCCTGAAGCTCTTATACGAATTTCTCGACGAACC -CCTTCAATGGTGTGATGTTCGATTTGATAATCTCGGGTTATCAGCAGATT -ATCCGAAAAGGTAGGTCTGCCTGTTTTTTTATTTGATTTTTTTTTCCGAA -AAAATCTACATTTTCAATTATTCGAAACGTAATTCGAATAAAAGTTATTA -ATGATTTTTTAAACAAAAAAATTGATGATAATCCAACCGGAAACTCAAAT -TTTGAAAACCCCTAAAAATCCAAATTTCTCAATTTTTCTGCAGATTCGCT -CTAATGGACGGTGACATGGTGTACACGAAATCGAAATTGGATTCTCTCCT -AAAAGGACGTCCGTGTGAAAGTGATAATGATTGTAAAATTGGAGACTGTG -AGGCGAGATGCACTTCTAATATGGTGTGCTCGTCGAGGAGTAACGGGAAT -TTGGAGGTAAGCTTGAAAGTTGAAAAAGTTTGGAAAAATTGTGAAAAATC -AATAAAATCGGCAAAAAACGAGCTTTTTTCCAGATGGCCGAATTTTTCAT -AGTTTGCAAAAGTTCGTCCACCTGTGAAAAATTGCTAAAAAAGCAACAGC -ATTGATGAATATTCATAAAAAACCAATAAATTCGACAAAAACCTTTTTGA -TTTTTCCAAAAATCGAAAATCACATTCTGATGTTCAAATTGAATTTTCAA -AAAAAATATAGAAATTTCCTAAAAGTTTTAATTCTCAAAAAACGAACGAC -TGACAAAAAATTTTTAAAAAAGTGAATTTTCCGAATTTTTTCTAAAGAAA -AACTGAAAATTTGAGAATTTTCAGTCAGAAATGTGATTTTTTTTTTGATT -GAAAGGAGTTTATTTTGTAGAATTTAACTTCCACTATCAGAAAAAAATTT -ACCTATTTACTTTGTAATAGGAAAAAAGTTGTGAAATTGTTAGGAAAATT -TTTTTCAACTTTACAATTTCCCGGACAGGCCTGTAGTTCCTTTTTTTCAA -AACGTAAAAGAAAAAATTAATTAAAAAGTTCAAACTCCTAGAATTTATAC -ATTTATTTTGCATTCTAAAAAACAAAGTTTTTCTTGATTTTTTTGTGTAA -AAATTGAAAAAAAATCCAAATTTTGTAGGTCTTCTGCGATAAACTGGTCA -ACAAACTGTTCGCAAATCAATGGTCCAAAAATAATAAATATTTGGTCGCA -TGCCGGGATACAGGACGAAATATCACAACTCGACTCAACGAATTACGGTT -AACATGGTCATGGAATCTGCCGGATGTTTAAAGGAATCTAGCTCAATTCT -TTCTTTTTTTTTCTTCTACTCCATGTGTCAAAAAATCCCCGTGTCTTATA -ATTTTCTGGTGCTTTTTTCCATATTTTCCTTTTTTTGTGTTCTGGCTCAT -TTTTCCATGGCTCACAGAGCCCGAAAGCTTAGGATTTTGAAATTTTATTC -GTTTTTTTCTCATAATTCTGTCATCATTTTTTGCTCTGCATCATCATCAT -CATCGTCAACATCATCGCGTTTTATTATGGGTTCATGTATTATTACACTT -TCCTCGAAAAAAAATTTTGACGAACGTGTAATATGTTTCACCTTGTCTCA -TTTGTACCTCGTTCATTGTTACGGGTTTGAAGTTTTAAAACTCTGAATTT -ATATGAAGAATTTTAATTTAAAAAAAAACTTTGTTTCCTTTTTTGAATTT -TTACAGACAAATTTTTGGCTTGAAAACTGAAAAACCCTGACTAAACTTAC -TATTTATGTGTTGGGTATCAACGTGTATTGACCCACGACGTGGCTAAGAA -GATCGTACAACGTGAACTCTATGAACTAACTTATTTATTCCTTAGTTTAG -TAATGTAATAAACTACTCGTCTTCTCCTCCTCGTCTCGCCTTCGAATACA -CAACATTATGAAAAGAGTTTTTCTTAAGATAAAAAATGTTCTAAAAAATC -GATGGCCGAGTTTCCTATTTACGCGGCCACAAGACCAGTAAAAAAGTGTT -AACACAAGTGCGAAAACTAGAACATTTATTTTCAAATTTCACCCGATTTC -TACAAAAAATCAACAAAAAAGTCACAAAATTTAAAATATGAACATAATAA -TCAATATCCCGCTGGCGCTGACTCCTCCCCTTTTCGGAAATCACTGTTCG -CATAGATTTGGCCGTCGGAAAGTCGTTCGGCGGCGGTGACAACTGTCAAA -TTGTTCACTGCCTTCATTACGTGACCACGATCGATCAGGGATTTCACGTA -GGCTTTCGGGAAGTTTGGCTCGTACCACGTGTAATTTGGCTAAAAAATAA -GGAAATTGGGAAAGGTTTTGATTTTATTGATTGAAAAATATTTCATGTGA -AAGTCGAAAATTGATTGAAAATTAAATTCAGAAGTTTTTTTTCTGAAAAT -TATTGATTTTTATTTTTAAAAAATCAACTTTTTGACAATTATCGATTTTT -CCAACAAAAAAAAAATCAAATTTCGCGTGTAATTCTCTACCTGTAACTGA -TTGTGCATCCTTGGAGCATCAACAGCTTGTTTAACATCTGCTTTCAGCCA -TAACGCATGCAGTGCAACTCCAGCAACACCCGAAATAATGGTGGATCCAC -CGGCTCCGCCGACCGCCATAAGCTCCGCCCCTTTTGTGTTAAAGATCACT -AATGGACTTTGACTACTCATGGGGCGTTTTCCAGGGCGAATGAAATTGGC -GGGAGACGGTGGGAAACCGAAGAAATTCGGATGACCGGGAGTGGAAAAGT -CGTCCATTTCGTTATTCCAGAGAATTCCCGTCGATTCGGAGGATACTAGG -GCACCCAGGCTGGAAGAATTTGAGATGGTGGAAGAGTTTTTTTGGCGGTG -GCCTAGAAAATGTCTTCATATCCGAAAAAGTCAAAGTGATGGCCTAGAAA -TTTAAGTTTGTGGCCTATAAACTTGAACTGATGGCCTAAAAATTGAACGT -CGTCCTAAAAATGTTTTTAACTGATGGCCTAGAATTGAAAGGTGATGGCC -TCCAAATTTCAGGTGGGCGTATATAAACTTTGGTTGATGGTCTAGAAATT -ATACACGTGGCCCAGATTATGAAATCACTTCGGTATAAAATCCAGGTGGT -AAACAATTTACTATTAAGACTGCCTAAAATCATCCCCTGGCCTAATTAGT -TTAAAATTTTTGGTGACGACCTCGAACTTGTTCATTTTTATCAACTGCAG -TTGCTTGTCGACTGAGGACTAACTTCTCACTTGCTGGCCGAGTTTTCGAA -GTTCGGCCACCAAAAATTTCCTTTAAAAAAGCCAAACTCACTATAAGTTA -ATGGTAGACGTAACCGAAACTGCATTGCCGTCTGCATCGATAATCGATAC -ATGAGTTGTTCCATGATCCTGCGGTGGTGCTTCAAACGATCCTCCATAGT -AATCATCAGGATGCGTCGTGTCTGTGATCTTCGACCTAACCCAATCCGCC -CACTCTTTTGACGTAATATTTTTGGCGATTTCCGTGGCGTTTGCCACGAA -TTGCGGGTCGCCAAGCCAGCTTCTAGCCGCATAACTAAATTTGCTAGATT -CCAGAAAATGATGGTATAACGTTGCGATTTCGTTGAACGACTTCATGTTA -TATTCGAAGCCATCCATCACGTTAAGTATTGCCTGAGCCACCGCTGAGCC -CGAGGGAGGCGGCGGGCCGCAGACTCCGCGCCCGTTTTTCAGCTTTGTGT -AGATCACATTTTTTGAGTCGTGGACTATTGATTTGTAATTTTTAAAGTCC -TGAAGCCGGATGATCCCACCGTTGGCTTCGAACTCTTTGGCGAGTTGCTC -GGCGAGCCGACCTGTATAAAAGTCGGCGATGGGATCTGTGGAGTTTGCGA -GTAGCCGGAATGTTTCTAGAAGGTTTTGGCGGGTTTTTATCTGCTCTCCT -GGTTGGAAGACACGCTGAGTTTCGGGGTTGATGAAGTTTTTCATGGTGGG -CTCCGCGCGGATTTGGTGCTCGTTTTGGTTGAGAGCTTTTGCAAGGGCAT -GGGACGTTGGGTAGCCTGGAATTTTTTAGGATGGCCTAGAAACATGAACC -GATAACATAGTTACTTATTTTGTGACCTCGAAATTTTCATGATGGCTTAG -AAATTTTTATGATGGCCTAGAATTTTTATGGTGACCTAGAAATTTTTTGA -TGGTCTAGAAATTTTTAGTAATGTAATAAACTACTCGTCTTCTCCTCCTG -AAAAAATTTGGGCCCGTCTCCCTTCGTGGTGAGACCCATCGTGGCGAGAC -CCATCGTGGCGAGACCCATCGTGACGAGACCCATCGTGACGAGGCCTATC -GTGGTGAGACCCATCGTGGCGAGACCCTCCGTTGAGAGACCCATCGTGAT -GAGACCCATCGTGGTGAGACACGCCGTGGTGAGACTTATTGTGATACCCA -TCTTAACGTACACAGTAATTGGAGAAACTTTTAAACTGATTTTTACAAAA -AGTTCAACATTTAACTTACCAAGAGCTCAATATTCCGTTGCCTCGCTTTT -TGTTGCCCTCAGGGATTATTGTTCTGTTGCCTCCATTTCCGTTACCCCTG -TTGTGTTGCCTTCGAGCAGCGTTGAATCCGTTGCCCCCCCCCTTTTTCGT -TGTCCCCGGGGAATATTAAATCCGTTGCCCCCGTTATCCGTTACCCCTAG -GGATTGTTGGCCGGTCTAAAAACGGCCACCAGAAAAGTTTTTGAGCATCA -AAAATGTTCTACGCCGTTAGGAGTTTTTTAGGCCAACAGAAATATTCTAG -GCTCGCAGAAAAAGTGCCCACCTTCAGCCAACAAATCAATAGTTGGTTTC -AACAACTGTCTCCACTCGACTTTTCCACTTCCGAATCTCTCGAATTCAGT -CCGGAGGCCGTGAAGCTCTCCGGGCACCGCAATCGCCTTCCATCCGATTC -TCGACTGATTCCATTTGTCACGGTACATTTCCTCTGTTGCGGCGAGCGGA -GCAATCTCCCGAGCATCGATTACCGTACACTCTTTTGTCGTTCTGGAAGA -ATTTTAGAGGTTTCTAAGTCATTGAAAATATTTTTAGGCCACGGCAGAAG -TTTAAAGGCCACACGCGCTTCTGGCTTTCCTCATATTTTGAAATGGAAGA -GTTTGCCGAGTTAGCCCGTTTGGACTAGGCCACGACCGGGGTAAATTTAC -GGAGCGTCGTGTAGACGATTGTCAATGGAGCGCGAGAAAAACGCTTTGAC -GAAGGCCAGAAACCAGTGAGGCCACAATGTGATGTTTGCAAAAATGTTTT -TAATGGCCTAGGAAAATCATTCTTTCTTCCAAAATTTTTCTTCTTTGTTT -TCCTTTTCGATTATTGATTTTTAGTTGAAAAATCAATATTAATAATTATC -TTTTTTTTTAATTATTGATGTTCCGCTCCAATTCGTGGCGAGACCAACAA -CTCACGCATTATAAATAGTCATAAAATGTCCGCCGCCAATTCCGGCCGAA -TGTGTATCCATTACACCGATACAGAAAAGTGCGGCGATTGCCGAATCCAC -CGCATTTCCGCCTTTCAGCAAAATATTCCGACCGATTTCTGAGCAAATTT -CGTTGTCGGCGGCGACGGCGGCTTTCGAATATTTTCCGAGTGGAGAAAGT -GATGGTCCAGGCCAACGGGGTAGGCGGGCATTGTTCTGGAAACCTTGCCG -AGTTTTATTTTTATCGGCCACGTAGCAAATCGGCCAGCCATGAACCGACT -GCGGACTAGTTTTCACCCTCGTGGCCTAGCTTTCTAACAAACCTGCATTA -GTAAATGAAAATACAATGAAGCGAATGCGACCGTTGAGATTAACAACGTG -AATACGAGAACCGTTAAGCCGACCGCCGCGACTAAAGTACGGATTTTCAT -GGGTTGCTCGGCCTCGATAAGCGGCTCAACTTCATCAAATGGTCCATATT -CTGGCGGTAAATTATCATCGTCCGGAAACGTGTTATAGTATTGAACAGGA -GGTGGGTTACTGCTGAAAAGTCGAGTTTTGCGCGTCAAATTTGATGTATT -GAGTGGCATGATCACTATTATTACAAGACCGCGAAATTTTGAGAATGCGT -ATTGCACAACATTTTTGACGCGCAGAATATCTCGTAGCGAAAACTACAGT -AACTCTTTAAATCACTACGGTAAAGCTTGTGTCGATTTACGGGGTTTCGG -TTTTTTCATTTTTTTTGTGTTTTTTAAAAAACAATTTATCGACTAATGAA -TGATTTCCGTAAATCGACACAAACACTACAGTAGTCATTTAAAGAATTAT -TGTAGTTTTTGCTACGAGATATTTTGCGCGTCGAATATGTTGCGCAATAC -GCATTCTCAGAATTTTGTGTTGCCGTAATAATTCTGATTTAAAAATGGAA -TTTTCAAAAATCAGAGGTTTCCCAAAAATTTGAATATTCCACAAAAAAGA -TGAATCTGAAGAGTATTTTCAATTTTTTGAGAAAATAATCGATTTTCTGG -ATTAAAAAATTTGAATTTATAGATTTCTAGATTCTAAAATTTGAATTTGT -GCAATTTCAAACAAAAATGTATCGATTTTTATCGACTTTTCATAAAATTT -AATTTAATTTTCGAAATTCCGAAAATATTGCCCGTTTTTCATATACCAAA -AAAGTTGTATCAATTTTTTCAAAAAATTAAATTTTCATCGATAGTTGTTT -TCAAAGCATCATGATTTTTTTGAAAGAATTTGCAAATGTGAGAACTACAG -TACTCCCTTAAAGGCGCACGCTTGTTTTTATTTTTAAAAAATTGGTCGTT -TCGAGACCTGGTACCGTATTTTCGCATTTGGGTAATATTTCCAGCATTAT -AAATTTAAAAACAATGCACTTTTTAAATCTTGAATCCATATATATATTTT -TTTCAGAAACTCATGCCGCCTCGTTTGGGTCTCGATTCGAATTTTTTTCA -CAAACGTATAATATTTTCTCGAAAAACCCGCGAATTTTTAACATTATCGA -TTTTTCTCTCACCTCGTCGATTGCCCTTCAGGAGTCATTATTCAGAATTG -AGTATGAATTAAAAAATCATAGAAAAAGTCAAAGCGCTGTCAATTGGAAA -TTTAGGACGAGAATGTCAAAATTGCAACTTTTCACGATAACGGAATTCTA -TCGCAAAACTAGATAAGAGCTACAGTTTGCTGCGTGTAAGCGCGCTCCAA -TGACAAACGAGAAGAGAAGAGAAGAGGGGGTAACCGCCAATAGCTCTCTT -TATCGAGGATAGTCTTCAAGTGACAGAAGAGATATTCTGTGGTGGGAGAG -AGTTGGGTGGAAGGGGGAACAATGAGGACTACGGAAGAATGACTTTTAGA -TTTGGAGTATAGGAGAAAGTGGAGGTTTTGGCTGAAATTATTTTCAAAAA -CTTTAACTGTAACAACTAACGAGTAGATTTGAAAATGAGGATAATATTCA -ACACAACAGAAAAAAAGTCGATAGGTAACTAATAAAAATTAGAGAAAATG -TGGCATCGGGGAGAAGTGGTGGAACAAAAGAAGAAACTGATGATGATGAT -AGGAGGATAGCCGCGAAACAAGCGATTAACAGTGAACAAGATTCATTTCG -GTGAAGATGGAGAAGATAACAGCAAAAAAAAAAACACAACAAAAGTCCTT -ATTATTGCCCATTGAGAGTTTGTTGAAGGACACTGGTAAGGTGCTCGTCG -ATTCCATCTTGCTGCGCGAATTGTGGGAACGATGCGTAGATTTGCTTCAG -GATTGTGACAATTCTTTGCTTGGTTTGGTTGCCGCTATCGTCGTCGTTGA -AAGCATCGTTGGCGATTGAGAGCAAGCCTGAAAAATACAAATAAAAATAA -AATAAGTTACGGATTTTTTTAGATTAGAACTTACAAACAAGGAAGATTCT -CGGAAGATTCTGATTTTCTGGTCCAAAAAGTGCGGCGTCTTGTTTATCAA -ACAATTCGGCGAGACACGTGTAAATGTAGGGGCTTTCCTCGGTGTCTGAA -TATGTTGGCAACCAGCTCAGGAACATCTCGACGACCTGGAAATAATATGG -AACTTTTTTCTTGAAAAACTGAATTCTAAAACCAACCTTTCCGTAGGCTT -CAGCAGGAAGTGGCACATTGCCGATGATTTTGGCAAATGCAGAAATCGCG -TTTTCCGTGGCAACAGTGCTCTCCTCGGTGGCTCGGGCGTCCTCTCGTTG -AATCATGGCGGCCAGTGGCTCCAAACAGCTCAAAATCTCGTTTCGGTAGT -CGCTGATCTGGTGGTAGTTGATGGCCATAACTCCGAAACCGTAGCTCGCT -GCTTGTCTCACTTCAGGATACTCATCTCCCAACAACTTGTACATTATTGG -AATAAGCTTCGGGAAGCGAGTTGGCATATGTCCGACACCGAACTCGATGG -CGTCATCGAGAAGGCACATTCCCCATTGTCTCTCGAAGTATTGTTTGGAT -CCCTCGATGAGTTGAATGGCACAGTTGAACACGTTGATCATTCCCTCGAA -GATAGTTCCCTTGAACTCCTTCATAAGAGAGTGAGTCAAATCAGAGATGG -CTCCAAGGCATGAGGCCTCCAATTCCATGAAATAATCGAGCTCCTCCTTA -GCTTCAGCATCATCGTCATCTTCATCTTCAACTGGACGATCGCTCATTCT -CTTTCCGTAGTTTTCAAGTTGCTTGAGAAGCACCGAAATGATGAGTTGAA -CCTCTTCCTCGGCGATTCCCTCGGTTTTCATAACCTCAATGCACGATCCG -ATGGTCGTCATGAACGAGGCGAGAATCTCGACATCGTCCTCCTCCTCCAT -AGAGGTCGTCAATGCCTTCAAGAACTCGCACCACAAACGACGCTTGTCAG -CCAATCCTTGCTTCTCAACACAGGTCAACAAGCATGGCATGATTTCAGCG -GAAGCCGTACGAACTCCGTCGTGAAGTCCGAAATCGAGATTCTTGATGGC -GAGCTCGTAGACGTCGACGACGTATGGCATGAAAGCCTCCTTCATCTCCT -TGGCGAACGCGACAAGCATATCGCAAGCAGTTGCCTTCTCCTCAAGACCG -CTGGTGCGGATTCCGACAGTCTTTTCTCCTCCGATTCCGTGGTATTCAAC -TCCTTCCTCGTTTTCGTGAACATCTTCGTCTGAAATTTATATATTTTTTT -AACACGTAAAACTAAAAAACACTCACTGTTGAAGATATTGAAGTCTGGGC -GGTAACGAGCGGCACGAAGAACTGGATCCATGACAACTGGGAGGAATGGT -GCGAAATCGGCTCCAAGAATAGAGCAGAAACGAGTCCATGAGCTGATCAT -GTAGCTGTATTGTGGATCATCGATAGCCAAATCCTTCATTCCGTCTCCGA -GAAGGTTCAGGATCTCGATTGCAGTAGCGTGGAATTGTTCCTTTCCGACA -GCATATCCGATGAGAGAGATGCATTCGATGGTCTTTCCTCTCAACTCCTT -GAGCTCTCCGACGTTTTGAAGAATGTGAACGAGGTTCGGGATGAGGCGAG -CATGATGTTCCTTGAAGAGCTCCTCGGCGGCTTCAGCGACGGAGGCGATG -GCGGTGACGATGTTCTCAACGACAACCTGGTATCTCTTGTCTCCGAGACG -ATTGAACACAGCGGAAAGCACATTTTCGAGTTTCTGAAGAATGAATGGAA -GATATTGTCCAATGATGCTCTTTGGGCACTCCTCGGCAAAGTTGACAAGA -GCCGAAGCGGCATGAGCACAGACACGTGGAACATCGGTTCTGTCAAGAGA -CTCGAGAAGAGCTGGTATGACGGCGGCGTGGCACTTCTTCTGAAGAGTTG -GAGCGAAGTCAGAAGACATTTGTCCGATGGCGTTGCAAGCCGCGTATTGA -ACTCTTGGATGAGCATCATTGACGTAATTGGTGATATGAGCCATAATTTG -CTCTATGTGTGGTTCCATAGATCTTTGGCACCCTTCACCGACGGCGGAGA -ACGCGCGAAGAGCCGCGTGCTTCATCTTCCAGTCTTCGCTGGTCAAAAGC -TTCTCGACAAGTGGAAGGAACACTGGGAGCATCACTTTTCCGTTGATGCA -GCAAGCAACACGGTCGATGGCGCTTTCGGCGATGATTGGGATACTGAAAA -ATAATTTAATTGAAGAAAAACTAAAAATTTATCCTTACTCTTCATAGTCT -TCTTCCTCTTCGATCTCGTTGAGCCACTCATTGAGCACATCGTCATCCAT -TTCGGTCATGCATGAAAGAAGAGTCTCGAGAATTGGTCCAAGAGCTCCTG -GTGCGTATTTCTTGAGTCCTTTTGGTGCGGATTCCATGTACGAGCAAATA -ACTTCGATGGCGTTCTGACGGACCATCTCGTTCTTTTCCTTGTTTCCAGC -AATCTGAAATTTGAAAAAATGAAATTTTTAAATTGGGCCATTTAAATTAC -TTACAGCAAGAGTGACTTGAAGAACCTGAGACATATGAGTGTTAAGGCAT -TTTGGCAGAGAAGAGGCGAGCTCGGCGAACTCTCCGAGTGGTCCATCTGA -ATCATCCTCGTCGCTGGTTTCATTGCAAACTTGAAGAACATTTGGAACAA -GAGAGGTCATAAGCCTGACAACATCCTTCTCCTCATCATTATCAACAGCG -AAAGCGATAACAGCACGGACGGCGGTGGCCTTGATTTGCAAATCCGGTGT -AGCCATGCACTTTTCCAAGACAACTTTGAGGGTTGGAAGGAAGTGGGCCA -GCCTGTTTCCAAAAATTATTGGGCATCCGCGAAGAATAAGCAGGGCTATG -TAGTTTCCGGTAAGATCCTCGCTCTTCAAACAATGATCCATCAGCTCGAG -GACTCCTCCCCATGTCATATCTCCAGAATCGTCGATGAGGTTTGAAGCGA -TTTCAGAGATCAAATCAGCAATCTTCTTCTTAATCGAGAGTTCGGTCTCG -TGAACTATCATCTCGAGAACTTTGGCGAGAATGCGCTGTTTGTTCTCCTC -GTTCAGCGTTTCCCAAATCGCATCCCAGTCTCTGGCGAGAACTCGTCGCA -GAAACACCAAAACTGTGGATCTGGCCTGAAAATCGAAAATTCATGGAATA -TATAGGAATTTGAGTGAACTAACATCAGAATTATTCGTGTGGTGTGTGTA -GGCCTCGAAAAGTGCAGCTACTTTGGTTGGTCCTTCAATCTTTTCATAGA -CTTCTTCAGCTTGTTTTCGGATATCATTGTCTGCTGACTGCAGTTTTGTG -ATGAGCTCAGTGAATTGATTGACGTCCATTGTAGGGAACCCTGAAAATCA -GAATATGTGCTAAAAATTTCAAAATTGAGAAGGAAAAAGATGAAAGCGAG -TCGGTTTTGCAGATAAACGCCTGGGGAATACGCGGAATCGCTGAGGAAAA -TAGATTTTTAGTATAAAAATTGGCATTTTCAACAAAAAACCTATCGGAAA -ATGTGAAAAATAGGCCAACAAATATTGAATTTTGGGACAAAAACGCCTCG -AGTGCACGATTCTCAACGGAGCGCACTTGCTGCGTCACACGCACTTTAAA -CTGTACACGGCGGGAAGTTCAAATTTTAAAAGGATTCACGTGATTTTCAC -GACATTTACTGGTTTTTTCAGCGAGTTTTCGCAACTTTTCGGCGACAACC -GATGATGATTTATGTTTGGAATATGATGATGGTAGCGTGTTGCGAAATAA -AAAATCGATGGAATGAGTCAGCGAGAAACTAATATTTGCATAGAGAACTG -TTTGCAATTTTGGCATTACATTGGCCAGTGCACTGACAAAAAAAGAAAAA -AATAAACGGCAAAATCTCTAATACCTATTCCAGGCAACCAGTGTCTGGCG -ACGATGGAGAGTAATTCTGAAAGAGACGCAGTTGAAAAGAGTGTGTTTTT -CGCTTTTTTTTTCAGACAGAAGAGTAAAAAGAGTAAATACGTATCAGTAG -TAAAAACAATGTGCGAGCTGGGAAATCAGTAATAATTAACTACTTGTGAT -ACAAATTCCTCAAGGAATGAAGGAGAAAGTGTACTTTTTTTGAGACCCGA -AGAACTCGGGGGATGTCCAATTGGGGGGATTACCAACTCGGGGGATTGGC -CCCGCCCACAGAACCGTGGCTTGCAATACGCCCATTTCTGCAACTGCCGC -ACGGTTTTAAAACTGTATTTTTCTCAATAGAGCGAGAATTAACAAGAAAA -AATAATTTTAAAACCGTGCGGCAGTTGCAGAAATGGGCGTATTGCAAGCC -ACGGTTCTGTGGGCGGGGCCAAACTCCCGAGTTGGTAATCCCCCCAATTG -GACATCCCCCGAGTTCTTCGGGTCTCCTTTTTTTTAATTTTGAATTGAAA -AATTGTCCGAAAAGTGCAAACGTAGAACATCAAAACCAGTGGAGGGGCGA -AATTTGATAGATCGCATGTTGCAAGAATGAGCATTCTACGAGTTTCGCGC -CATTTCTGCGTAGCGCGCACAATATTGTGCAATAAATCTCGGTATTTGCG -TACATGCATCATATCTTACGCGCAAATCATATTGGAAATTTCCCCGAAAC -ACGGGGAGGCAAAGCTAACGTGGCTGAAGAAATTTCTACAGTAGTCCCAT -TTGGCTGACTGAATATTCAACGCGAATAAGTTTTGTACACTATTGCGTAC -TTTGCGTACGCGCATTTTATTTGACGACAATTCGTCAATATCAGCTCTGG -CTAAAAGCGCTTTTCTCATTATTTAAGCGAATAAAAGTCGAAAAAAAATG -TTTTGTGATAGAGAATAGTAATTTAAAAAATAAAAAAGTGCATATTTTAT -GTTTCTCATTATGTTTCCACTGATTTTCTGAGAAAAACCGAAAATTTCCT -CTTTTTTCGATGAATTTCAGCTGAATAGTTTGTTTTTATCTAGTTTTTCT -TCCGATTGACTGAATAACACATTTAATAACATCAATATAACGTTTAAAAC -ATTCATTGTCTCGAAAACCAATATAAAACTCGTCAGAGAGGGATACTTAG -TAGATATGCTGAACAAGGAAAAGAGAGAGAAGAACATTAACCGAATGGGG -AGGGGGGAATAAGAAATCTGAACAGGAACGAAATATAAAGAACATTATTA -GAAAGAACAAGCATGGCTTGATCTTCTTGGCAGTCGTCTCCTTATCCTAT -CACTTCTTCTCGGCGTCCTTCTGATCATGCTACCGAGCAACGTGGCACGA -TCGAAGAGTTTCACAACGGTTTGATACTTTCGCTCCACGAGGGGGCTCCC -AATTCAGCGAGGGTCCTCTCACGAAGTTTAATTTTTTAAAATTAAAAAAT -AAGTAACACCTCAAGAATTCCATCGAAGTTGTGCTCCTTTGCAATAAGAC -GAAATTTTTTTTTACGGAATTGAACAGGATCATTGAGGTACGGCATGAAA -ACGGCTTCCTCGTTGAACGATGTTGAAGCTCCTTCACCATTGCACCTGAA -AATCAACTTCTAAATTTTCCAATTTAAAGAAAATCCACATACTTATCCTC -GGAAACGAATCCAATATTCTGGTTGCTGAGTGGAATTGCTTCAAAGATTT -TGATCAGATTTTTTTTTGAAATTTTCGATCACACATCTTGTATCCACCAA -ATCGCCGAGTGCTTCATGAACTTCAGACTCGTGCTTTCCAACCTCTTCCA -TGAGCTTCACTTCTTCTGCTTGGAACTTTTGATTGCCTTCGGACCGATCT -GACTTGTAGTTTCTTCTTAAATAGTGGCTGATTGAGCAGTCGACCTTGCA -GTCCTACCTTCTTTGGCTTCTTCTGCGGCACTTGAGCCCTTGTAAGAGCA -CTTATTGCTGCTTAACCTTCCTTATTAATACTTCGAACAGCTTCTTCTTG -TTCGCATCTATTTCGAATTTTGTCTTGAAATCTTCCAATGCAGCGACAAC -GTAATATCTGGAAATTATAAAAACATTAAGAGAAAATATTTTGAAAAAAA -ATCGAAAATTGCACTGAATTCCTAAATTTTTTATTAAAATCGAAAAAAAA -AAATGAAATACGTGAGATTGAGTTTCGAGACTTTTTTATTCAGAATCAGC -ATATATTTCTCCATATTTGAGTAGGTTTTCAGAAATATTGTACCATAATT -TTTGGAAAAATGTAATTTTTAATTCGAAATTGCACTGAATTTCTCGAATT -TTTCACTAAAATCGAGAAAATAAATATGAAATACGCGAGATTGAGGTTCA -AGACTTTTTAATTCGGAATCAGCATATATTTTTCCATATTTGAGTAGATT -TTCAGAAATATTGTACCATAATTTTTCGAGATATTTTGAATAATAACTTA -CTTTTCGACGTTTTTTGCCTTTGTCCGGTTTAATCCATCGAATTTCGAAG -CGGTTTGCGTAGATTAGCTGAAAACATTATGCTTATTCCACGTAGTAACA -AGAAAAAACAAGAAAAAATAAGAAAAAACGAAGAAAAATAAGCATATAAG -TCAAATTAAAAATGTTTATTCGATCAAAATTCTTAACCATAGGAGGCGGT -GGCTAGCCGGCGCACTCTCGCGGCCACGTTAGCTTTGCCTCCCCGTGGAA -AGGAGCCATGATATTACGGAAACACTATTTGAATTCTGAGAACGCGAAAT -ATCTCGTAGCGAAAACTACAGTAACCCTTTAAATGACTACTGTAGCGCTG -GTGTCGATTTACGGGTTCGATTTTTAAAATTATTTTTTTTGTTTTTTGTG -TGCGTCATCGATTACTAAATTATAAATTATTTCCGTAAATCGACATACAA -TCGCTACAGTATTCATTTAAAGAATTACTGTAGTTTTCGCTACGAGATAT -TTTGCGCGTCACTCCTTCAGGCACCACATCTTACACTCAAAATCGAGGTG -AATTTCTGTGTATTTGACAGCAAAAATGTCGTGAAAAACAATTAAATAAG -GCAATTTGAAGAGGAAAAAACTGGGGCAGATGTGAGATAAGAAGAAGAAG -AAGCGGGGCTTCGACAACCGTAAACTAATCAGAGATGGAAAGTGAGAAAT -TTGAAATTTAAGACAAAAAAGTTAACAACGGGGGATTTTTTTTAGAGAGA -AAGAGCGAGTAATCGGGCAGCAGCAGAGAAAAAAAAAGATAATAAACAAT -TGAAAAAATATAAATATCGGGGAAATTATTGCTGAATAGACTGCAAATAG -GTGACAATCTCGGGCGGTACAGAACGAAGTGTCTCTGGACAATTTCCGGG -TCCACGGACAAGAACGGCCTGCGCAAAGTAGGCCTTGTGGTTGGCGATGT -TGGCGGCGACGGGCGGTTGCTTGGGAGCGTAACTCAGACGACAGAATGGG -TTCACAAATTCTCCCTCGGCGTTGTACATTGAAGCTTGCTCTTCTTCTGG -TGATAGGACGGCTCGATCGGAGGCTGAAGCAGCTTCCAGCAGCATTGCCA -CCTCGTATGACAGAATTCCGTATTGACCACTGCAAAAAAAATTTATATGA -GAAATTGAATTTAAAATGATTTTATTTGTAATTTTGTTTTTGTTAATTGT -CGTTAATTGTTTTTTTTTTGAGAAAAAACCGAAAAAAAAATTAAAATCTT -CATTTTTGATTTAATTTTTTTGTTGAAAAATCGGCAGTTTTCGATTTTGT -TTTTTTGAAAAAATAGGGAAAAGTCGGTAATTGTCGATTTTTCAAAAAAC -TGAAAATTCCAGATTTTGTCAGGAAAAAAAACGAAGAAATCGACAAAATT -TCAATTTTATTTTTTTAAATTTGTGTTTTTCAAATTTTTTTTTGATATGT -GATTTTTAACTTTTCTCTGGAAAAAAACCGAAAATTTGCAATTTTTCAAT -TTTTTCCAAAAAAATCTTTAAAAAATAGAAAATTTTCGTTTTTTTTTCTG -AAATATTTAAAAATTGTAACTTTCTATTTTTTTTAAACCCGTATTAAAGT -TTAAAAAAAAAATCGGAGAAAAAAAAACTGAATCGAAAATATGTGATTTT -CAATTTCCTTTGAAAAAAATATAAAAAATCGAAAATTTTCGTTTTTCGAT -ATTTTTTCTGGAAAAAAGCCTAAATTTTCATTACTAACACAAGCTGCTGC -GTGACATCGGCTAGCAAATTGCCCATTCCAATGGCAATAATCCGTTTCTC -AGGCCCCGTTGTCGTTTGTTTCAGACCTGGCAAATCAATGCATACGACCT -TCTCGATGAGCATTCCGAACATGCCAGTCTGAATATTCTCACACGATTGA -ACAAGATCCTGTGCACTCCGGGCGATCGTAAATCGACACAAGAACACGAT -GAATAGCTTCATAAACTTGGGTGTCTTCGACGATTGAACTCTTCGAAACA -TTGTATTGAGCACAAATGTCATCGCGGAACCCTCGAAGTGCTCAATCGAC -GGAAGAATCGTCGCCGCCAACTGGAAACCGTATTGATCCAAGGTTTTCGA -GCCCAAAAGCCGCGCCAAATGGCTCAAGATCAACCCAGAATTCTCCGAGA -CGACTCGCTGAGCATTCACGGAAAGGATCACTTCGAGAACCGAAAGTGCC -GCTGGAACATTCGCTGATCTCGCCCAAAGACGTTCGGATAGCAGAAACGG -AAGGAACGGTGAGAATTGATCGATCGATGAGTTTCTAGCGATACATGAGG -AGACGAGAACTCCCGTGATTTGGAGAGCATATGGGATGAGATCTTCCAAA -TCCTCGCGGAAGATCACTTCGATCAGTGGAAGGAGTTGAGCATCCAGTGA -GGCGCCGATTGTTCGGGTCTGGAACAGGAAATTCGTTAAAAAATATAAAA -TGTTCTTAAAATTGCTATCACTTTTTTTTTGAATAAGAAAAAAAATCACA -AAAAGGAAAACACGAAAAAGCAGACAAATGTTTCGATTTTGCAATTTTTA -ATTTTTTTTTTTCAGAAAAAAATTATCGATTTCTTCTTTAAAAAAAGAAG -ATTCTTTTCGATTTTTTCGGAAAAAAACATCGAAAAATTGAAAAACAAAA -AGTTTTGATTTTTTTTTCAGTGAAAATCGTTCAATTTTTCGGGGTTTGTT -TCGACAAAAATAATTAAAAACTAAAATTTTTCAGTTTTTAGGTTTCTTAT -CAGAAAAATTGAATTTTTTCGATTTTCCGAAAAATTAAAAAAAGGTATAT -TTTTTGAAAACACGAAAACGGAAAAGTGTTGGTTTTTTGTAAATTTTTGC -GTTTTCCAGCAAAATTGCCAATTTTTCCGAAAATTTTCAGATCGAAAGTT -AAATTATCGATGTCTATTCCAATTTCCGAGTTTCAGCGAATTTTTTTTTG -CAGAAAAATTTCAGAAAATTTGACAAGTTATGTTCCAATTTATGAAAAAA -AATTTGAGACCAAAGTGCGGCACGGAAAAATGGGCGGAGTTTAGAGTGGT -ATTTTTCTCTCAAACTACTCCTTACCTTGGTGATCAACACACAAATCGTC -TCAAACAAAAAGTGCGTGTGCACCGAATCCGCCGGATTTTTCGTCGCCGA -CTCGACCAACTGTGCGAGCTTGACCGCAATCGCGTCCGCATGCCGAATCG -TGTCGTCATCGAGAATCACAATGATCCTCAAAATCGCCTTGATCAGATAC -GGCGAGTTTTGCGCTTTGGCATCCTTGTCGAACGCGGTGACAAGGTTCTG -AAGGATCGAGGAGACTGGAAGATTTTGAGCCGAGAAGATTTTGTTGGAAT -CAGCGAGAAGGATCTTTTCAATAGCGTAAGCTGCGTACTTGTGCAGAATC -GGAGTATTCGAGCTGAGAAGAGCGTCCGCCGACTTGATCGCAGTCATAAG -GTGCTCTGGAGCCAGCTGTTTCCTGAAAGTGACCGCAAACTTCAGTGCAT -CAGCTTTAAGGATCGGAGTTTGATTGACATCGGCGTTGAGATGTGTGGCC -ACTTGTGTGATGAAGAAGTCGTTGATGTCCACCAGCGGGTTCGTCGCCGT -TACTCCACTCTTAGCAGTCTCCGTCTTCACCGCGATCGCCGTGATCAGCG -AGTAGACAATGTCGATCTTGATCCAATCACCACTTCCCAGCAGGTTCTGC -ACGATCTCCCCCAGACATGGAAGCATTTGCGCCTCGAATCTTCGGCAGAG -ACCTCGCGCAAGATCGATGGCTCCACGGCGTCGAGTTCCTACATCGGTAC -CCTCGATGTCTCGCTTCATATAATCCAGTGGCTCATCCTCGAACAGTTCC -ATATCCTGTTGACGAAGCAGAAGGTTCTGAACGCACACGTTCTCGGCGAG -AGTCTTCAGAACGCCTTCACCAGTGAAGTGTCCCTCGTAGTACTGTCGCT -GGCTGACCATCGACAGAAATTCCAGCGCGGCGCACACCATCGTATCGTAT -CGAGTGTCGGGGCCGGTAGACTTGAGCAGATTCCAGACGGCAAGGATGAT -GTCGGGCACGAACTCGGAGATCTCCTCCTCGTAGCGTTGCGAGTAGAGCG -TGAAGATCTCACAGATCTCGTGCTTAAGCTCGTCCAGAGTTGTAGGTTCT -CCCGAGTTGGAGGTCTGCGTCGGCGCGTCGATTTGCACGAGATGCAAGAA -GTGTGGCATCCAGTCCTTGAGATGATCCTCGAAGTATTCCGGAATCTCCT -GTGAGCACAGAGAATGGTAGACTTTTGCAATGAGAAGTAAGACTCGGAGC -CATTGGGCGATCTCGTCGGCTCCGAGTTGATCCTTCCGCTGTCCCACCTC -CATCATGTTCCGTAGCAACAGAGTTAGAGGCTCTTGGGTCTGAAAAATCG -GTTCTTTTTATTTGTAACTGAAAAATCTGGGGAGAAAACAGTTTTTCGGT -CCAAATTCGAGACTGACATTCAGATTTCTTCAATTTTTTGGCTCAAAAAT -TTTGAAAATTTGTCCATTTTTATAGGAAAATTATCAATTTTCGCCAAAAA -TTCCTCATTTTTGCTTTAGTTAAAATTTTTGACTAAAAAATCATAAAATG -TTGAATTTTTCACGATTTTTCGGAAAACAAGGCCAGCTTTAGCTAGCTTA -AATGTCTAATTTTGGTCATTTTTTAGGGTCAAAGCGGACAAAAATTCAAC -TTCCGACGGCTGCGACGTAAAAAAGTGGCCAAAATTGGGGATTTTAGCTG -AAATTAGCCAAATTTTGAGCCAAAACGCAACTCACGCTCAGTAGACACTT -CTTCAGCTCTTTCCAAAGCTCTGCTGACTTGGATTCGAATCGGAATTTGC -GGAAAATCTGCTCCATCGACGCCAGCGAGGCCACCAGGTGATTGAGATCC -GCTCCGTTCAGGAATTTCGACAAATATGGAACCAAATCTGGCCATTTTTC -GGGAAAATCTCTCTGAGCGATGAGATACAGAGCATTGGACAGGATTTCCT -GAACATTTGATTTTGTATTGAACATCGCTTCGAGAAGCATGCTTCTGAAC -TGCTCCTCGTCTTCCTGGCCCATTTCTACCTCTGGTGCCGGGCCCTGAAA -CAATTTAAATATAAAATTCACGCATTTATTCAAATTTTCCAACCCAATTT -CTCTTCACAAAATTTTTCAAAGCGACAGCCGCGGCGATTCGGATCTGCGG -AGCAATTTGTTGCTGTTCGTTGACCACCAGTTGAAGAATTTGAATGATAT -AGCCTGGATTTGATTGCAGCGAGCGGAGCGCTTCTTCTCCACGCTTGCGA -ATCGCAGCATCCGGCTCCAGAGTCTGCTGGAGAGCTGCTCCGATTTGCTC -CATCTGAAAATAGGGAAAAATAGCTGTTTTGGGGGTGAAATAGGGAAGAA -TTAGGTGAAAGGACAAAGATAGTTTAGCTTAAAACTTGAAATCTAAAATT -TCCGGTCAAAATATTAAAGTTTTACGCAATTTTTCGCAGGCCCGCGGGGA -ATAAACTCGCAAAAATTCGCAAAAATAAAAAAAAAATTTCAAAAGTGTGA -AGTGTTTGCGTACAGCGCACCCGACCCGACGCGCAAATTTTTTTCATTAT -GTTCTCTGTTTTCACTGATTTTTACTGATTTTTCCTAGTTTTCCCTTGAT -TTTCTTCAAATTTTCCACTTTTTCAGCAAAACGTGCATAAAAAAATAAAT -TAAAACATTTCAATTTTCAAAACTTTGCAAAATAAAGGCGTCGTTGCGTA -CAATGCGCACGACTTGACGCGCAAACTTCCCAATTTTTATTCTTAAATTT -TCCTGGATACCCCTGGTTTTTTCTCTGTTTCCCCCCTAATTTTTCGCATT -TTCAGCAAACATGGGTGTTGATAAAAAGCAAAAGCAACGAAAAACCAATC -CATTCGAGCTAAAATTCAACAAATCCAAGCATGACGTGAGTTTTTCAGAG -TTTTGAAGAAAAAATCGATTTTCTCGCAGATTCTCGGCCGGAAAAAGGGC -GCACAAGTTGGAGCACCGACTGCGTCACGAAAACGAGCTCACGAGCAACG -TGAACAGACGCTAGGCGTAGAATATGACCGGAAAAATAAGATTAGCAAAA -TTGTCGACAAACGGCTCGGCGAAAAGGACGGAAAAAGCGAGGAGGAGAAG -GGCGCGATGAGATTCACAGAGGAAAGAGTCAAAAATTATAAAAGAGCATC -GAAATTCAACTTGACAGATGATGGAGATGAGGAGGAAGAAGGTTTATTCC -GAAATAAATTGAGAAAAATTTTAATAAAGTAAATTTCAGTACTTACTCAC -AAGGGAAAAGCGCTCTCGGACATTGAAAAATACGACAAATCGATGATTTC -CGACTCGGATGACGATGAAGAGCCGGGAAATTTGGGCTCAAATATGGTAA -AAGTGGCTCATTTCGGTGGTGGAGAGAAGACCGCCGAGGAGCACGTCCGC -GAAAAAATCAGCCGAGAGGATATGATTTCGAATTTGATTGCGAAAACGAA -GCTGGCGCGTCACGAGAAGCAACAGCAGAAGGATGAGCTCGAGCTGATGA -CAGAGTCGTTGGATTCCAAGTATCAGGCTTTGATGGGCAAAATGAAGGCT -TCATTTAGGCCGACCGGGCGCCAGCCGCTGGAAAAAGATGATTACGACAA -ATTGGTACGGGAAACATCCCGGTTTTCTCCAAATTTTTAAGATAAAAGAT -AATTATAAATTTAGAGTGAAAATCGATTTTTTTCACAATTTTTTAGTGGA -AAACCTAAAACCCAAAAAACTTGATCTGAAAATGCTAATTTTTAACCATT -TTTGCTATGGAAATTGGAAATTTTCATTAATTTTGCTGTAAAAGTTGAAG -AAATCCAAGTTTTAGCTTTGTAATCAGAGAAAACACTGTAAAATTATTTC -GGAATTTGTGCAATTTGAAGTGAAAAATAAAACATTTAACTTCTTATCGC -GAAAGAAATTGAGCTGAACTGAGAATTTTTTTGACGAAAAATCATTAAAA -AGTCAATTTTTTTGACAAAAATTCGAGAAAAGTCGGTTTTTCTTTTGACA -AAAATGACGAAAAAGGCAATTTTTAATTTAAAAAAATAAATTTTTCGCCG -AAAAATAACTTTAAAAAAGTCGTTTTTTTACAAAATAAAACAATTTAAAA -TAACTATTTTTCGACAAAAAAATTAAGAAAAAGCCAATTTTTTTGTTTAA -AAAATGATAGAAAAAGGCTTTTTTTTTGTTTCTTCGCCTAAAAAATCAAG -AAAAATAGGTTTTATTCCATTTTTTATCCAAAAATTATTATTTTTCCAGA -CAATCACCTTGAAAACCGAAGCCGACGCTCGTGCCACCCCAGCAGATCGT -AAGCTATCCGAAGAAGAAGAAGCTCTGAAAGAAAAAGAACGTCTGGAAAC -TCTCGAGGCCGCCCGTATCTCGAAAAATAATGCATTTTTCAACGCAAAAT -CTCATTTATCAGCCGATGCCGACGTTGATATCGATGCTGGATCGAAGGCC -GACGCCAGAAAAGTTCAGGCGAAAAATTCGAGATTTGAGGTCAAATTTGA -CGATGAAGGTGGCCTGATCGATGAGGATACGGTGGAAAAATCCAGGATTT -TAAAGAAAAATCTGGATGGTTCTGATGAATCTGACGATGACGAGGATCTA -GAAGATGAGGAAGAGGATCTGGATGATCTACTGGAAGATGAGGATGAGCT -GGAAGAAGATTCCGATGATGAGGAAGCTCAGGAAGCCCAAAAAGTCGTCA -AAAAAGCGAAAAAATCTGCTCCAGAACCCGCTGAAACTCTGCCATTCGTA -TTCGAAATGCCGAAAAACTATAAAAAATTCTGTGCTCTTCTGGAAAAACA -CTCGGAATCGATGGATTTAGTGCTGGAACGACTCGTGAAATGTCATCATC -CGAGCCTTAAAGAAGGAAATAAGAAGCGTCTGAATAAGCTTTTCCTCTTG -TGTTTAAGATGGTTTGATGATATGTCGAAGGAGGAATTGACAGCGGAAAG -TGTGAAGGAAATGAATTTAGCGCAGGAAACTATGCATGCGTTGATGAAGG -TAGCGATTGGATGGAAAAGCTGAAAAATTACCGCACTTTTTAATCTGAAA -ATTGAAAAAATTCGAGAATTTTTGACCTAAAATTTTGAAAAATTCCCGAT -TTTTATACCCCAAAAATTGCAAAAAAGTCCCGATTTTTTACCAAAAAATG -TTTTAAAATCCCCGAATTTTTTACCTAAAAATTGCAAAAAAGTTTCGATA -TTTAGACCCAAAAATTGCAAAAAAGTCCCGATATTTTTACCAAAAAATGT -TTTATAATCCCCGAATTTTTGACCTAAAAATTGCAAAAAAGTCTCGATTT -TTAGACCCAAAAATTGCAAAAAAGTCCCGAATTTTTTACCAAAAAATGTT -TTAAAATCCCCGAATTTTTGACCTAAAAATTGCAAAAAAGCCGGTTTTTT -TACAAAAAAATGTTTTAAAATCCCCGAATTTTTGACCGAAAAATTGCAAA -AAAGTCTCGATTTTTAGACCCAAAAATTGCAAAAAAGTCCCGAATTTTTT -ACCAAAAAATGTTTTAAAATCCCCGAATTTTTTGACCTAAAAATTGCAAT -AAATTCCAAAAACTTTGGCCAAAAAATTAAAAAAAATACCCGAATGTTTG -ACCCAAAAATTGCAAAAAAGCCCCGATTTTTTGAGAAAAATCATGTGAAA -TTAAAACCTTTTTTTTTTGAAAATCAGTCTCGAAAAAAAAAAGAAAAACC -AGGAAAATCATGAAAATTTAAGAAAAAAATCATTAAAAATAGGAAACGAT -CATGGAAATATTTTTAAAGAAACATTATATAAAAAATCATTAAAATTTCA -GAAAAAAAATATGGAAAATCCTGAAAATAAAGAAAATAATATTAAAAATT -CAGATTAAAAAACGCAAAAAATTCAACAATTGAAAAAAATTTCAAATTGT -TTTTTGCAGTTCGACATTCAATACGGAGTCCGATGTGTGCGTGCTCTAAT -CCGTCAACACTGGAAAGGCCGCCAGGATAAACAGAAGAGTAGCCCAGTGT -CATTTGGATTAATCTCTGCAATTCGTCTTGTTTCCGGCCTCTTCCCAGTT -GCCGATTCCTGGCATCCTGTAGTGGTTCCGGCTCTTTTTTTGGCAACTGA -AGCACTTTGCTCGGCGAAATGTGCCAATTTGAATGCGTTGGCTAAACAAA -TTCAATTGGCTAATGCTATTGTTGAATATGTGTCTGAATCCAAGAGGTAA -TACTTGGAAACGAACATTTAAATAGGCAAATTTTGAAAAAAATACTGAAA -GCTTTGATATAAAATAGGAAAAGTAACGAAAAAAAAAGCCAAAACCACCA -AAAATATTATTTTCAAAAGCTAACTCAAAAAATTTAAAATTCAGAATTGT -CGCTTAAAAAAATCTATTTTTTTCGATATCGAAAAAAGATTACTATAAAA -ATTCAAAAAAGCAATTTTTTAAAATATAACTTGATTTTTTTTTCTGAAGT -TCATTTTTTAACAAATAATTGCATTAATTTTCCATTTTAATGTTAAAAAA -AAGCGAATTTTTCAAAAATTGATATAAATTTTGTTTTGGCAATTTTTAGA -TCAGAAAACATTGAAAAAATACAAAAATCCCGTTTTTTTTTAAATTAATT -TTTTAGAAAAAATTGCAATTTTTCAAAAATCTTCCGGTCATTTCTCTATT -TTTAAAAAATCTCTCGTCTCTTTTAAAAAAATTTAAAAAACCGAATTATC -GAAGCGTATCAAAATTTTGAAATTAAAAAAAAAACCGAACTCCATTTTTA -CGAAAAATCCGAAAGTTGAAAATTGTTTTCAATAAAATAAATTTCAGATA -CGTCCCCGAGCTGGTCGCATTTGCTCGAAGTGCTCTTCTGCTTGCAGTTA -CAGAGAAAAGTGAGAAATTCGCGACAAATGGATTCCCGATTTCCAAGCCA -CACACGGAAATGTTATGCTTTGAGGAGAAGGTAAATTTATAAAATTTGTT -TTTTTGAGCAAAAAATTGGTTTTTTTTTTTGGTTTTCTCTTTAAAAAAAT -TTGCTTAAAAACGCTCAATATTTAAAAAAAAAACTGGCAAAATCGAATTT -TATAATATAAATTAAAAATTTTGTTCAAATAAAAATGATTTTTTTTTGAA -AATTTAGTTTTGAAAAATTTAAAATTAAATTTTAAATTTTCACAAAATTG -CCAATGATAAAATGTTCACTTTTTCTTGTATAAAACTGCTTGAAATTTTT -TAAAAGCAATTTTCCGAAAAATAATTTTTTAATAGATTTCTGAAAAACCG -AAAAACCACCGATTGAAAAACGAAAATCAAGTTTTTTTCCGAATTTTCTA -TTTTTAACAAATTAAATATCAATTTTGCACATACAAAACGGTTAAAAAAA -AACAAAAAAAATTGCCGAGAGCCAAAAAAATTTAAGTTTCAGCGATTTTG -AAATTTTTTTTTTAGGAAACACGGTCTCCTCGGGTGGAAACGAAGGGGGA -GGGAGATTGCTTGCGCGTTTCACCGATGCGCCTTTCGCGTGCTGGCGCAC -TTCTGAATATTGAATTATTTTTGCGGAAAAAATTCATTTCTTCTATGAAA -TTTTCTTGAGAAAGCAAAGGAAAGATGATGAAATGAATTTTTAAAATAGT -TTTCTCAGTTAAAAAGAGAATACCTTGCTGCAAAAGGTTAAATTTATTGA -AAAATTGAGAAAATAAGAAGTTTATCTTTGTTTTCACTACATAAAGTGGG -GAAATCTCAAAAAAATTTGAAGACAATTAAGAAATATAATTAAATATATA -GCCTGAAAGTCAAATAAGAAATGAAGGTTTGGTCACAAACAATTTTATTT -TTGAATTGAAGTTTTGAGAAATGATCATGTGCCAGAATCACTAAATCTGA -GACATTCAGCCCAATTTCTTTAATTTTCTGTGATTTTATCATGGAAGTGT -GGCTTTTTCTGTGATCTTGCCAGTTTTAACAAGTTGAAATTGGAAAATCG -TGAAGTGGGAAACTAGCAGTGAAGCTTCCAAAAATTTCAAGCCTTACTGA -AAGGAAAGTATTGGAAACTAAAAACGAAAGCTTAAGAAGATACCGTTTTT -ATATATTTGAGTTTTGAAAAGCCTTAATAGGTTTTAAATACAGTTTTCTC -AAGAATTCAAACTTGTAACGATTAAGTTGAGGCACAGAATAAGATGGTAA -TACTAAGTTATGTTGAAAAAAGCCAAGAAAGACTGAAAACATTGCTTTCA -ATCTGATTTTTTGTAAGTAATGTAATGTTGAAACATTATTCTTCATAGTT -CAGCACTTTGTATGGCTTATTTGAGCCCAAACGTACAGTAGTATGTGGCA -AGAAATAAAATATTGTGCCAACAAAATTGGAGCCGAAAAACCCATGATAA -AATGTTTAATACGTGTATTGCTCTAATAAAATACCAAATATTAATTAGAT -TCACTGTCTCGACTCTTTTTAATTCAGATTAATAACTTTTAGCTCCTCTT -TTTAACGAAAAATTATAACTGGATTTCACAAAAAGAGTTCGATCTGAGTT -CTTTCAACAGGTACATAGACGAATTATATCTTAAAATGACGAGAAAAGTT -TGCTCTATAAACGTTATCATTGCAGGTTATGAGAAAAACAAATAAAAATT -TAATTTTAAAAAATCCGAAAATTCAGTTGTTATTTTCAAACAGTTCGTTA -TGCATTTCCACCGAACGGTTTCCGATAATTTTTGTTTCTCCACTTTCGGT -TCAGTCTACTTTATAATTGTTATCATTTTGAAATAGAAAAATCGACGAAA -AACTAATAAAAATCGAGGGAAATCACTCTTCAACGGTGAAATCTCGGTGG -ACGCAATGAAGCTGCAGCATTTCAAAAAAATTTTAGAAGCAATTTTGGTC -ATTTCAGCTTCAAAAAGCTTTAAAACTTAAAAAAATTAAAATTCATTTCA -AAAAATTTGAAATTAGTCATTTAAAATATAAAAATTAGAAAAATTCTAAT -TTTCAGCGAATTTTCAAATTTATTTTTATTTCAGAAAAATTCAAATTTTG -GCTTTCAAAAAAGCTTACAAAATATTAATTTTTAAAAAATCTAACTTTCC -CAATTTTTCAGTACACTGGCCCCGCACTCCAGCCAATCTCCCTGACCACA -ATCTTCAACAATTCCCCATCCGATCCATCTCTAAAGCTTCACGTTCTTCG -TGCTCTGCTCTCCCTCATCCAACATCTCCGTGTAATCTACTCCAACCAAA -ATGAGACCTATTCTATCGTTTTCAAGCCATTCCTCCGGATTTTGGAATCA -ATTCAAGCCAAAAATCTTCCAGCCGAGGTCCAGGAAGAGCTGGAGACTCT -GTGCGCCTCAATGAAGGCTGAAATTGGAGCCAAGTGCCGTCTGGTGCACC -TGTCGCTGGTGAAAACCGAAAAGAGCATGCTGAAAATGCTGGAACCCCGT -TTCGAGTGGGATTTCGATCCGGAACGCCCACATCACGGACCCAAAGACGA -GAAGAAGAAGCTGACGAAGAATCTGAGGAACGAAAGACGCGGAGCCATCA -AGGAGCTCAGAAAGGATACGGCATTCTTGGCCAGGAAGCAATTGTCGAGT -GTCAAGACGAAGGATCGTGCGAGAATTGCGGCCACGAAACGTGTCATGGG -CGGTCTTATGCAGCAGCAGGGTGAATGGAATAAGGAGAAGCGTACGGCGG -ATGTTGAGAAGAAGAAGGACAAGAAATAATTTAAATTTTCCTATTTTTTG -TTTGTTGAAAATGACTTTATTTGGCAAAAAAAACCCCTAAATTTCAGTTT -TTCTCGATTTGTTGAAAAATAGTCAAAAAACTGATTTCTATGTTATTTTT -GGTCAAAATTTGCCTTTTTCAAACATTTTTTTTGCCATTTTTCCTCCATT -TTTTGTTATTTTTTTTTTTCGTTTTGTTATGAGATATGTTTCTGTTTTGT -TGACATTTTTTATTATTGAAAATTAAACGAGTTTTCTGAATTTTTTTGTT -CAATTTTTTTGAAATTTTCCGTTTCACATACGTTTGTCAATATCTCGATT -AATTTTTGAAGTTTTCCAATTGACTCGCGCATTTTCTAAAAAGTTTTTAA -ACTTTACATTGAAAATACCCCTCTAACTCGAATATCTGATTTTATTGGAA -TTTTGAGTTTTTTTAGGTTAAAAAATTCTTGTGCTAAAATCATCCATTAT -AGTTCGTAAGTCAGCAAATTTTGGCTCAAACTTAGAGCGATTTCCAATTT -ATGGAGTTTTTTGTTCAGAATTCTCGAAATTTTCTCATTTCTGGAAATTT -TGAGTCTACGAGTCACACAGTTGTTCCGTAATTAGCTTCACTTACATCTC -CTCAACTCTGCAAACTCTCAAACTTTCGGGAAAGGGTCTCGCCACGAAAT -CACGGGTGGGCGGCAATTGCAGTTCGGCAAATTGCCGGTTTGCCGGAAAT -TTTCAATCCCGGCAAAATTCCGTTTGCCGGAAGTTTTTAAACGGGATCTT -TTATAAGACGGAAACACTTAAAACTGCCATTTTTAATTTTTTGCCCGTTT -TCTCTAAATATTTTCATAGAATTTACTGACTTTTTAGGATAGATGTTTTC -ATGGGATGTGCACATGTTGTTCCGGCAAATCGGTAATTGCCGAAAATTTG -AAAAACGACAATTTGCCAAAAAAATCGTTTGCCGTTCACCCCTGTATTGT -ACCATTTTTGGCGAAAATGCGCGTAAATTAATATGCTTGCGTGTGTAATA -TTTCGTTCATATATTCTAAATATACGCACCTTTTGAAATATTCATAATAT -ATGCATTTACGTACGTTCGAGAATATTTTGGGAATACACATTTATCATCA -TTCCCACCCGTTGCCATAGTATCCTCATCCCCGCCCCGCCCCGCCCCTTT -CTCTCATTTCCTCTTCCAAATCCTTAATGGCTCATCCGGTCATTGGAGAG -ATATGGCAGATGTGGCGGTTTTGACGAATGTTCTGGAGAACTCGAATTTT -ATATAACTATTAGACAATTTCGATATTAAAAACATTTATATGTAAAATTT -TCAATTTTTTGAATTTGCTCGCCGAATTTTGACTTTCTGACAATTGTGTG -TCGATTTACGAGGGTTATGTATATTTACGATATGTTTTTAATCATTATCG -AATGCTGATTTCCGTTTTTCTACGAGTTGTCTTCATTTTCGTTGGTTTTT -TTTTGTTTTTTTTTTTTGAAAGTGTATTTTTTAAGGTCAAAAAACTAGAA -AAATATTCAGTTTTCAGTCAGGAAAACCATTTATTTGGTTTTTTCAATAT -TAAAAAAATTATTGGGAAAAATGAATGAAACTCGTCGAAAAACGAAAATC -ATCATTCGATAAAGATTAAATATTTCGTAAATCGACACACATGTCTCCGC -CGCGAAAAATCGAAATTTCATAGAGGCATAAAAATTCACAATATTTTAGT -TTTTTTATTTTTTATTTTAATCCAAATCCCTATTCATGCTTAGATTTTTA -GGTGTTTTTCTGTAAAAAATCAAAAAATTGTATATTACTCATAAATTTTT -CCAATTTTCTCAAACCTTGGATCTCGCCACGACATTATTAAAAAATTCCC -GTTTTCTGCAGAAATGACGACAACGGAAGAAGCTCCCAAATCGCCGCTTT -TCGAGGCAATCGACAAAAATGACACTGAAGCAGCGCTGGCACTGCTGAAA -ACGAAGGAACAAGCCGCTCAACGGGATCCCAGTGGAATGAGTGTGCTGGC -AGCTGCCGCGTATAGGTATGCACCTTTAAAGCGGCGACGGTTACTGTATC -CTCGCAGATTGTTTAAAGGTACATACCGTAATCCGTTGAATTTCAGAGGA -AATCTTACGTTGGTCGAGAAAGCGATTGAGCTGAAATGTGATGTGAATGA -TAAAACCGATGGAACTCTGTACACTCCACTCATGTTTGCCGCCTTATCAG -GTAGGGCAAAAATTTTTTAAAAAAATTTTTTGCGTCAAATTTGATGCAAA -TTCTGGTTTTTTACCGTTGAAAAGTAAAAAAAAATTCCGAAAAAATCGAT -TTTTATGCTAACAACAAACTTTTAAGTGAAAAATCGTGGAAAATTAGACC -CAAATCACGTATTTTTGATCTGAAATTCAATTTAGCGAAAAGTCATCGAA -ATTTTATGGTTTTCGCGGTGAGACCCAATATTCGCAATTTTTTTTTGCAC -CAAATACAACACATTTGACGCGCAAATTCAAATTTTTGAAACTTTTTTCC -GTTTTTACAATATTTTTAGGCTGAACCCCAATATTTGAAAAAAAAAAAAC -CAATACACTATATTTTACGCGCAAATGTTAAATTTTTATTTAAAATCCTC -GTAAAGTTCTATTTTCTTTTTTTGATCGTTTTCAAGCTCAAAAATTCAAA -TTTCAATTCGAAATATTACCGGAACACAAAATTCTGAAAATGCGTACTGG -TCAACATATTTGACGCGCAAAATATCTCGTAGCGAAAACTACAGTAATTC -ATTAAATGACTACGGTAACGCTTGTGTCGATTTACGGGCTCGTTATTAAA -AATCATTAATTTCAAAAAAATCGAGCCCGTAAATCACCACAAGCGCTACC -GTAGTCATTTAATGAATTACTGTAGTTTTCGCTACGAGATATTTTGCGCG -TCAAATATGCTCAATACACATTCTCAGAATTTTGCGTTAACGTATTACTA -CTTTCTTAGTTTTTCCAAAAAAAAAATTCGAATACACCATATTTGACGCG -CAAACTTTTTTTTTCAAAGCAAAATTGTCAAACGTTTGCAGGAAAACAGG -ACGTATGCCGCCTGCTAATGGACTCCGGAGCCCGTATGTATTTGGTGAAT -GGAATCGGAAAAACCGCCTCTGAACTGGCGGCATTTGTGGGTCATCACGA -GTGTGTGGCAATTATCAATAATCATATAACAATTGATGTGATCGAAGATC -TTTTGCGGCCAAAAGTGAATGGAAAATATGAAGGAGCTGAGGAATATCCG -GATGAGCTGGCTGTATTTATTCATTCATTGTGTGGATCACATGAGATTCA -TCCTGTTAAGATTATTTTTCGATTCAGTAAATATCCCGATTCGTTGAAGT -ATAAGAAAAAGGTACATAGCTGTGTAGTTTGGAAAAAAAACGAAAAATCT -GAAAATTTGAGAAATTTCCTTAAGCTTTTTCAAGATGCGCATTTTTGTTC -ATTCTTATTTTCAAAAAAATCCAAAAAGTTTTTTAAAAAATTTAATAAAG -CATTCTTTTTAATTTCAAAACAAAAAAGTTATACCAAATAAAAACTTTTA -GTAATCAAAATTTTTCACTTTTTCTCGGTTTTTCTCATCGTTTTTCAAAT -TTGAGATCTCTTCCTGAATTTTGCCTAAAAATTGATTTTTTCAAAATATT -TTCAGAAATGATTCTTTCTGTGAAAAAATGTTTGAAAATGCGAAAATATT -CGAAACTAAAAAAACTTTTATTAAAATAAATTTTTGAAATTTTTCAGAAT -TTAAAAATTGAATCGAATTAGGTATCAGTAGTTTTCAGATCGATTTTTTC -GAATTTCTGAATTTGTTAAAAACTAGAAATTAAAAAAAAAACTTTTGATG -TTAAATGTTTTTCGAGATTAAAATAAACCGAAAACCCAAAAAAAATGTAA -AAATTGTGTTCTTTTTGTTATAATAAACCAGAATTTTCTCGAAATTTTCA -GAAGGTTCTAGAATATTTCAGAATTTTCTCGAAATTTCCAAAAGGTTCTA -GAACATTTCAGAATTTTCTCGAAATTTTCAGAAGGTTCTAGAACATTCCA -GAATTTTCTCGAAATTTTCAGAAGGTTCTAGAATAGTTCAGAATTTTCTC -GAAATTTCCAAAAGGTTCTAGAACATTACATAATTTTCTCGAAATTTCCA -GAAGGTTCTAGAACATTCCAGAATTTTCTCGAAATTTTCAGAAGGTTCTA -GAATATTTCAGAATTTTCTCGAAATTTCCAAAAGGTTCTAGAACATTTCA -GAATTTTCTCGAAATTTTCAGAAGGTTCTAGAATATTTCAGAATTTTCTC -GAAATTTCCAAAAGGTTCTAGAACATTACAGAATTTTCTCGAAATTTCCA -AAAGGTTCTAGAACATTACAGAATTTTCTCGAAATTTTCAGAAGGTTCTA -GAATATTTCAGAATTTTCTCGAAATTTCCAAAAGGTTCTAGAACAATCCA -GAATAATGTTTTCAAAAAATTCAAATTTGAATTCCCGCCAAAATGTTTTC -AAAAAATTAAAATTCGAATTTCCCGCCAAAATATGTACAGTACTCCTACA -GTACCTCTACAGTACTACTACAGTACCCCGACCATATCCCACTACTAACC -CCAAACCTATATCTCTTCAAAAGACTAAAACACAATTTTTCCTAAACTAC -AGTAATCCTACCGTACTCCTACAGTACTACTACAGTACCCCCACCATATC -CCACTACTAACCCCAAACCTATATCTCTTCAAAAGACTAAAACACAATTT -TTCCTAAACTACAGTAATCCTACCGTACTCCTACAGTACTCCTACAGTAC -TACTACAGTACCCCGACCATATCCCACTACTAAGCCCAAACTAATATCCC -TCCATCAGCCGAAAACGCCTTGCCTTTGTAAACTATGACGTCACTACTTA -ACAAACGGACACTATTTTTTTATATTTTTTTTTCAAAGCAAAAACCACCC -ATTTTCCAGATCCTCTACGTCATCGATCGTGTCTTCGAGAAACAGCTTCG -ATGTAAGGAAAGCAATGAAATAATGTCGCTCAAGCTTTGGCTAATTCTAT -TTTCAATGCGTGAAACCTCGAAATTCGTGGAGTCGAACAAGGAAAAGTCG -CCAGAAGAAGCGTCTCTACAGTACGCAAAACTGATTTCCACGTGGCAAGA -GGGCGATGAAACTAGGCGAGCACTTGACGTGATGCTGAGAAATGCGGTTG -CTTCGTTCCCGTATAAACATTCATTACTTCATGATACTCTACAAAAAGCA -CTGCAAAAAAGTCAAATTGGTGAACGACCAAGTGCCTATGAATACATTGT -TCAGGCACTTTTCGGACAACGAATCGCTGCGGTCTGCCAGTTTTGCTCGG -TTTGCGGACATCCTGGAGCCAAGAAACGGTGCACACAGTGCAAAGTATGG -AGTTTTTAGGGTTAAAAATAATTATTTAATAATTTAATAAAGCTCGAATT -TGGGAAATAATCAATTCCAAATTTTAAAAATATGGAAAAAATTTTATTCC -GTTACATTTTATGAATTTTCCCACAAACTCGGCATTTGGCTCTAGCTTCT -TGCCCAAGTTTAGCCCAAAAAATATTAACTTGAAGCTGTCTAAACTTGGG -CAAAAGTTAGACAAAACTTTGGCAAAACTTGGATTCAAGCTTTACCAAGG -TCTAACCCAAGTTTCACCCAACTCTTGCCAAACTTTGGCCCAAACTTTTC -TTATTTCGTTTCAAATTTGGGCCAAAGTTTGGCAAGAGTTGGGTGAAACT -TGGGTTAGACTTTGGTAAAGCTTGAATCCAAGTTTTGCCAAAGTCTTGCC -TAACTTTTGCCCAAGTTTAGACAGCTTCTGATCCAAGTTAACATTTTTTG -GGCTAAACTTGGGCAAGAAGCAAGAGCCAAATGCCGAGAAACTCGAATAA -AAATTGAAAGTTTTCAAAATTTCAGTTCGTTTTTAATTTACAAAATTTGG -CAGCTCTAACAATTCTTTAAAGATTCTTTAAATTAAAAAAAAGAATTATT -AAAACTTTTTAAAAAAATTCATTCTGTAGAAAATTCCCGTAAAATACTCT -TTGAAAATCCGGGAAAAAACTTCAAAAAACAAAAATAAATTCTAGACATT -CTGTAAATATCGAAAAAAGAACATTTTGTCTGTAAATGTATTAGTCAAAA -TTAATTTCTGATACTTTTTCCAATTTTTCAAAATTTTAAGTGTCGAGGTT -CAATTTTTTTGAATTTCCTGTTTTTCCTTTATTAAAAAAAGTTTTCTATA -ATATGCTGTATTTGAAAATTAAAAACTATATCTGAAAATATCGAGGCACA -ACGTTTTCAAGATCTGGTGAAATTCCGGATCTACGTTTTCCGGATCTACC -ATTTCCGGATCTACGTTTTCCGGATCTGGCACCGTGCCAACGCACAAAAC -GCTTTTTTGTTCACTCGACGCACGTTGTTTTTTGAAAATTTCTTCTAGAA -GAAACGCTTAACAACACGCGACGCGTAACAACGGAGCATCGTTATCACGT -TTTTCTCCGAGAAAAATAGCGTTTTAAGAGTTGGCACGGTGCCAGATCCG -GAAATGGTAGATCCGGAAAACGGAGATCCGGAATTCCGCCAGATCTTGAA -AATGTGGTGCCTCAAAATATCGATTAAAGAATTTTTTCTGAAAAATATCC -AATTTTTCAACAACAGAATAGCTAAAAAGTGAAAAAAAACTCAATTCTCA -TTATAAATTGCAAACAATTTCCAAATTTTGATAAAATGGAAAAGAGTTTA -AAAATTTCAGGCAACACATTTTTTAACTCTAGTAAACGTTTTTTAAATTC -CAACAATTTTTACAGCTCGCCTACTGTTCCCAAGAATGCCAAAAATTCGA -CTGGCCAATTCACAAAAAAGTGTGCTCATTTCTGAAAACGCGACAAGAAG -TGTCGCCCACCGACGAGACCGCCATGTCGCTGGACGATATTCAGGCTCAA -ATCGCCAAAATCGACGTGTAGAAGTGCCGATATTTCGATCTCAATATACT -TTTTTTCTGGAATTTATTTATTTTTAATGTATATTTCGGCTTCATCTCAT -TGCACGAACTTTTAATTTCATTTTCATAAATTCATTTTTGAAGTCATTCC -TTGAACAAAAATTCACTAAAACATGCATTAAGAAATATGGAATCCAAAAA -TTAATCTAAAAACCTTTTCAAAAAACCACTTCGTCAAAAACTGATGATGG -AAAACTCGTTGAAAAACGGAAAGAGTATCCAATAAAGATTAAAAATTTCG -ACATTTCGTAAATCGACACAAATCTCGTAAATCGACAAAAATGAAAAAAT -CAGGAACCCAAGAAATTCAATATTCTCATTTGTAAAGACAACTGGTAAAA -CATTTTCAAATCAAAAAATTATTTTTTTTGCCCTCAAAATTGATCTCCGA -ATACTATAAAAAAGAAAACTATAAAAAGTGGCGAAAATTCGAAATTTTTT -AACCCCTCTAAAATGGTTCATTTTAGTTGTCTAATGATACAACAAAGTAG -ACATAGTTCTACAATATCTGATAAATACTTGAAAAGTCTAAAAACAAAAG -TTTTTTCGTTTTTTTAACGGATTTTTAAAATCCAGAAGAACGAAAAAAAA -TTTTTTTAAGAGAATAGAGTAAACTAATCATGTTCGAGCAAAAAAATCCG -ACTTAGAATATGAACGGACCCAAGTGTATCATAATTATTTTAATTTCTGT -GTATCAGAATTATTTTAGTTTCCTTAGTGTGATTCCCAAACTGCTTAAAT -TCTAGGAAATATTTCTTTACTGGAACACTCTTAGCCACTGTACGCTGCCG -AACGAATAATAAGAGAATACAGAACACCAATTATGCCCGAGAAAAAGATC -CTACTCAGAATATAAACATAGTCAAATTTATCGGATGTATAAAGATTCCC -GAAGACACTTTCCAATTACCCAAATTGTTCATATTCTAAATCAAATTCTC -TTACTAGAACGCTCTTGGCCAATGTACGCAGCCGAACGTATCATAAGTGA -ATACAGAACACCAATTATGCCCGAGAAAAAGATCCTACTCAGAATATAAA -CATAGTCAAATTTATCGGATGTATAAAGATTCCCGAAGACACTTTCCAAT -TACCCAAATTGTTCATATTCTAAATGAAATTCTTTTACTAGAACACTCTT -GGCCAATGTACGCAGCCGAACGTATCATAAGTGAATACAGAACACCAATT -ATGCCCGAGAAAAAGATCCTACTCAGAATATAAACATAGTTAAATTTATT -GGATGTATAAAGATTCCCGAAGACACTTTCCAATTACCCAAATTGTTCAT -ATTCTAAATGAAATTCTCTTACTAGAACACTCTTGGCCAATGTACGCAGC -CGAACGTATCATAAGTGAATACAGAACACCAATTATGCCCGAGAAAAAGA -TCCTACTCAGAATATAAACATAGTCGAATTTATCGGATGTATAAAGATTC -CCGAAGACACTTTCCAATTACCCAAATTGTTCATATTCTAAATGAAATTC -TCTTACTAGAACACTCTTGGCCAATGTACGCAGCCGAACGTATCATAAGT -GAATACAGAACACCAATTATGCCCGAGAAAAAGATCCTACTCAGAATATA -AACATAGTTAAATTTATTGGATGTATAAAGATTCCCGAAGACACTTTCCA -ATTACCCAAATTGTTCATATTCTAAATGAAATTCTCTTACTAGAACACTC -TTGGCCAATGTACGCAGCCGAACGTATCATAAGTGAATACAGAACACCAA -TTATGCCCGAGAAAAAGATCCTACTCAGAATATAAACATAGTCGAATTTA -TCGGATGTATAAAGATTCCCGAAGACACTTTCCAATTACCCAAATTGTTC -ATATTCTAAATGAAATTCTCTTACTAGAACACTCTTGGCCAATGTACGCA -GCCGAACGTATCATAAGTGAATACAGAACACCAATTATGCCCGAGAAAAA -GATCCTACTCAGAATATAAACATATTCGAATTTAACGGATGTATAAAGAT -TCCCGAAGACACTTTCCAATTACCCAAATTGTTCATATTCTAAATGAAAT -TCTCTTACTAGAACACTCTTGGCCAATGTACGCAGCCGAACGTATCATAA -GTGAATACAGAACACCAATTATGCCCGGGAAAAAGATCCTACTCAGAATA -TAAACATATTCGAATTTATCGGATGTATAAAGATTCCCGAAGACACTTTC -CAATTACCCAAATTGTTCATATTCTAAATGAAATTCTCTTACTAGAACAC -TCTTGGCCAATGTACGCAGCCGAACGTATCATAAGTGAATACAGAACACC -AATTATGCCCGAGAAAAAGATCCTACTCAGAATATAAACATAGTCAAATT -TATCGGATGTATAAAGATTCCCGAAGACACTTTCCAATTACCCAAATTGT -TCATATTCTAAATGAAATTCTCTTACTAGAACACTCTTGGCCAATGTACG -CAGCCTAACGTATCATAAGTGAATACAGAACACCAATTATGCCCGAGAAA -AAGATCCAACTCAGAATAAAAACATATTCGAATTTACCGGATGTATAAAG -ATTCCCGAAGACACTTTCCAATTACCCAAATTGTTCATATTCTGAATGAA -ATTCTCTTACTAGAACACTCTTGGCCAATGTACGCAGCCGAACGTATCAT -AAGTGAATACAGAACACCAATTATGCCCGAGAAAAAGATCCTACTCAGAA -TATAAACATAGTCGAATTTATCGAATGTATAAAGATTCCCGAAGACACTT -TCCAATTACCCAAATTGTTCATATTCTAAATGAAATTCTCTTACTAGAAC -ACTCTTGGCCAATGTACGCAGCCGAACGTATCATAAGTGAATACAGAACA -CCAATTATGCCCGAGAAAAAGATCCTACTCAGAATATAAACATATTCGAA -TTTAACGGATGTATAAAGATTCCCGAAGACACTTTCCAATTACCCAAATT -GTTCATATTCTAAATGAAATTCTCTTACTAGAACACTCTTGGCCAATGTA -CGCAGCCGAACGTATCATAAGTGAATACAGAACACCAATTATGCCCGGGA -AAAAGATCCTACTCAGAATATAAACATATTCGAATTTATCGGATGTATAA -AGATTCCCGAAGACACTTTCCAATTACCCAAATTGTTCATATTCTAAATG -AAATTCTCTTACTAGAACACTCTTGGCCAATGTACGCAGCCGAACGTATC -ATAAGTGAATACAGAACACCAATTATGCCCGAGAAAAAGATCCAACTCAG -AATATAAACATATTCGAATTTATCGGATGTATAAAGATTCCCGAAGACAC -TTTCCAATTACCCAAATTGTTCATATTCTAAATGAAATTCTCTTACTAGA -ACACTCTTGGCCAATGTACGCAGCCGAACGTATCATAAGTGAATACAGAA -CACCAATCATGATCGAGCAAAAAGATCCGATTCAGAATATAAACATATTC -GAATTTATCGGATGTATAAAGATTCCCTATTGGGAAGTGGAGCAATCCAC -GACTGGTTTATCGGCCACAGTCCCCGGCTAGGACATGGCTTATATTATTG -GGCCAAGGGGAGCACCACCAGGCAGTGTACCTGACTCCCAGATCAGCAGT -ACATAGCACTTGAAGAATGGATCGTCCTTTAATCTTTTAATCTTTTAAAA -AGAATCGAAGGAACTCTCATCGGGTCATGTGGTTGTGGGGACAAAGAGGG -AGGCTTACATCAATACCAAATACCTGTGGTAGATCACAATACCTGTGGTA -GATCACACCCTATCCACAAAGAAAATCTGTGGACGTCCTCAAAGGAGGCC -GCCCGCGCCCTTGAGCTGGCCAACAAACCCTTCGAGCTGGGTGGAGGAAT -ACTCCAGCCGAGCGACTGAAAACGGCGGTAACGCCACGTTGTCGCACAAT -AACAACAAAAAAGCCCGCGGGCCCCAAGAAGCTCAAGAAGCCCACGGCTT -AATTTTCAAATCAATTACCTTACTATGAATCTCCTTTTTGCTCTACGAGT -CGTCGTTGATGTCATCCTTCCGTCCAACCTCCGTCAAACAGTCCATCTGA -CCATCCGTCCAACCAACATGTGGTGGAGTGTCCAACGCATCTGAAATTGA -AAAATATTTATATCTGATTTTTTAAATGGAACCATTTACAAAAAACATAA -ACGGAAAACGCTTAGCAAAAAAACAAACAATTAGTATTTAGAAAAACGGA -GACAAATGCTCTCGCGATCTTATTTATATTAATTTTCCAGTCGATTGCAA -GGCATCTGCTCCCACGGGTTTATATAAAATTGTGTAACTAATTTTAAACT -TCTCTTGAAACCTTTCAACCAGTACTTTTCAAGAGTTTTTGGTAATTTTT -CGATTTTTCAGAAATTTCAAAAAAACGGCGAAATTCCACTCAGAACCCTC -ATTAATATTTCACTAGTCCAGCACACTAACCCAAAAAATTATTTTTTTTT -TGAACTACAGTAATCCTACAAAATTGCTACAGTACTATTACGGGACCATA -ACAAAATTTTGATAATGCGTATTGCGCAACATATATGACGCGCAGAATAT -CTTGTAACGAAAACTACAGTAATAATTTGAATGACTACTGTAGCGTTTGT -GTCGATTTACGGGCTCAATTTTCGTAATGTTACACGACACATTTTTTTGA -CAAATGCAAAAAAGTGTGCGCCTTCAAATTAAAAAAAAATTTGATTTTTG -TTGCCGGCTTTTAACACATCGAAAAAATAAAAGAAACGAAAGTTTGTAAT -TACAGTACTCCTCTTAAACGCGAACACCTTTTCGCTTTTCAGAAAAACTT -GCGCCGTTTCGAAACCGGGTACTATACTTTTATATTAAAATCGATTAAAA -ATCGCGAAATTTTGCGGTGGAGCATATGTCAAATTGCAACTCGAAAAGAA -AAAATCTGAAAATGCATGCTGTGAAAAAAAAAGCAGCAGTACTCCAAGTC -ACCCATTGGAAAGAATGACTGAAAATTGAAAACAATTCTTCACTTTGAGC -GAAAAAATGCCGCGTTGAATGAGAGAGGGACGAATCGAAATTTAAAAGGA -GAAGATCAAAAAAAAATGTTTGTGGTAGGTCTGGAATCTTGCAAATTATC -GTTTTAAAATCAATTTTTAACACTTTTATATCATAAAAATAGTTTTTCAT -CAATCAATCGATTAAAATACCAACTCTCGAAAATTAACAGCTTTAACAGC -GCCGTCTACTGATTTGAAATTGCAGTCGCTGCCGCTCAATTAAATGTTTT -GCGCGTCAATTAAAATGCCTTGTACGCAGATGCGCGTCTCCTAAAAAATA -AAAAGTTGTCCAATTTTATTGAAAACGGGTATTTAATTCATGTAAATATG -CTGAATTTAGAAAATCTAGGTTTAACCTATCAAAAACTATAAAAAAGTGG -CAAAAATGGGCAATTTATGGCAAAAATTCACAATTTTGAAACTCCTCTAA -AATGGTTCATTTTATTGGTAGAAGAGGACTAAAAATTGATATCCGAACCC -TAAAAAAATTGTCCTTTTTCAATATTCAGAAGAAAATTATGAAGTTATTT -ACTTCCATTTTTCGATTGTACGGTAAATCAAAACTAAAGGTGGGCACGGT -ATCTGATAAAGTTACGATCGTTCCAGGATCACGAAAATCGAATAATTACA -CAGCCAGAGTTACATGAAACAGTGTTTGGGAAATTTAAAAATCAGTACAA -GAAAACCTCAAAAAAAAAACAAAATTACAGGAAAAAACGGAAATTTTCAG -TAAAAAATTATAGGGTATGTAAAATCGATAAAATATTTAAAATTCAATCG -TATTCTCCGTTTTCGGCGTTCGGATCGTTCACTGGAAGTACGGGATGTCG -AAGTTTGAAATTGAAGAATTCGCACCAACCGGCTGGAAGTAGATCGTGGG -AGCTGCAAAAAATGTTCGTGGCCGCGAAAAAAATCGGTGGCCGATTTTTG -TTTTTTCGCGGCCACGTTGTGACTAGACGGCGAAATAAAAATTTGTTTTT -TGGTTTTTAGTGTTCAAAACTGTTGTTCTTGTTGAAAAACAATTTTTTCG -AATTTTTTTTGTTTTTTCAACTAATTTTTTTTTCTGAAAATGCTTTTAGA -ACAGTTCATTTTGTTTTTTTTTCAATTTTTTTCAGACACCCCTTACTCCA -TATCATAAAGCTCGGAAAATTCGGAATCCCATCCCTGAAACTCGATGAGC -ACCGTTCTACCGTGTACTTCTTCGACGGAGGCCGGTGATATCCAGTAGGT -CTCGTTTTGGCCGACGGCTTCAAGGACACGACCGAACTGAAAAATATTGT -TTTTTTTTTCAAAACCATTTTTTTTAGGAAAAAATTTTTATTGAAACGTT -TTTTTTTTAATTTTAAAATTCCAAAAAAACGCAAAAGTGCAAAAAAACTT -GAAAAAAATGTTCTCAATATTTTTTCCGACTCACAATCAAAGAAAATTTG -AATCGAAAAAAATTAATTGTTTTCTTTTAAAATTTAAGGAAATTATTTTT -CTAATTATTTCTTCCAAAAAAAAGTTTAAAAATAATAATTTTTCAAGTGT -TTTTCAAGAGAAAATTAAAAAATTTCAAATTTCAAATTTTAATATACTTT -TTATTTTAAAAACTTGTATAAATCTCCGAATTATATGGATTTTTTTGAAA -AATAAAAAATTTTTTTATTGGAAAAAGAAATCTGATTTTTATAGTTTTTT -TTTTTAATTTGAAAAATACGAATTCTATCACGGCAACTCAAAATTCTGAG -AATGCGTACTGCCCAATATATTTGACGCGCAAAATATCTCGTAGCGAAAC -TACAGTAATTCTTTAGATGACTACTGTAGCGCTTGTGTCGATTTACGGGT -TCAGTTATTTAAATGACTTTATTTTTCGTATTATTTTCTTCATTTCAATT -AATTTTAAAAATTGAGCCCATAAATCGACGGTACCGTAGTCATTTCAGGA -ATTACTGTAGTTTTCGCTACGAGATACTTTGCGCGTCAAATATGTTGTGT -AGTACGCATTTTCAGAATTTTGAGCTGCCGTGATAGAATTCGTATTTTTC -AAATTAAAAAAAAACTATAAAAATCAGATTTATTTTTCCAATAAAATTCG -TCTAATTTATAAAAAAAAATAAAAATAAAAATTGAACAACGCTGAAAAAT -CCCAGATTTTTTTTTCTTATTTTTTGAAAAAAAAAACTTTTTTTGGAATT -TTAAATTACATAATTTTTTTGGTTCAATCAATTTTTTGGTTAAAAAGCGT -TTTTTTTTCCTTCAAAAAAGCACCTCAAACATGTGCCTTCTCTCCTTGCT -CGGCAACGGCCTAAGCATCTCATCAGGAATTTTTTCCGCCTGCTTCTCCT -TCAAATACCCTTCCCACTTGAATTTCCCGGGCTCAGTGCCTGCAAGCCGA -TCCAGCTTGATTCCGAACTTCTCAGCATAGCCGACAGGATGCATAAAATG -ATTATCAATATGAATTGGGAAGGATTCATCGTCCGATTCTGTCTCATCAG -GTGAAATAATTAAAAATCCAGGCGTTTTGCATATTTTTCGAATTGTTGCG -ACGCAAAATGACTGGCGTAGGTCGCTGAGTGGATCCAAAAGTTCAAATTT -TTGGCCGACTTTTAATAAATTTAATTTTTCAGCTGAAATGTCAGGTTTCC -CAGCAAAAAGTTGCTCGAAAGTGACGTCATCTTTATGATAACTTCCAGAA -CCTTCTGCGATCCGTCTGGAATGTTCCAAATAACCTTCCGTAGCCTTAGT -CCGTAATCCATTAATCATTGCAAATCCGACTGGAAACAGGAAGAAGCTCG -ACTCATCCACCCAAAACTCGACGTTTTCATGCTGAACCTGCCGATCTTTG -GCCTCTACGGAAGGAAGATCTTCGGGATAATCCTGAGCGGTGACCATGAC -CATCAGACGGCGGCCAAGGATCCTGAGGATCCGTGCGACACGGATTTCTG -TTGGCTCCAAGTAGTTGAGTAGCTCGACGCGTTGATTCAGCCGGAAACGA -GATGGGCGGTGGGCAAGGTGGCGGAGTTGGTCGAAGATTTTTGGCTCAGA -GATTCGATTTTCGTGCAGCTCGGCTTGAAATTCCTGCAGGAAAATTTTTT -TAGGAAATGGGAAAATCAGAAGGGTTTTTTGGAGTTTTTTTTCAGTATTA -TTTTTTTTGTTGTTTTTTTGAGGCTTTGTTAAAGTTTTTAGGTGAATTTT -TTTTGTTGATATTTTTGGTTTGTTTAAGAATAAATCATTTTTTGAAAAAA -ATTCGTTTTTATATTTTCGGTTTTTTGCTGGTTTAGTTAAAAGTTTTTTT -TTCGGATTTTCAGGTTTTTTGACAAAAATTGATTTTTTTTTTGGTGTATT -TCTTAGGTTTTCGGGTTTTTTTTTTGGTTTTTGACGAAAAATTTATTTTA -AAAAAAACGGACTTTTTTGCAAAAAATATGGGGTTTCTTAAAAAAAAAAA -TTTCAATTTTTTTTGTTGGATAAAATTAAAGTTTCTTTTATGGTTGATTT -TTCGCCTTTTTTCACATTCTCCACCAGAAAAAACATGAAAAAAACCAGAA -ATGAGTAGTTTTGAGCAATTTTCAGGCAGTTTTTCCGCTCAGAAAATAAT -TTTGGCCGGATTTTCATGGTTTCTCACATCCAGAATCTCCTCTGTTGGCC -GTGGTACGGGCGGTGCAGGCGTAGATCCACGTCGCCAAAATTTCGGGCAT -TGCATCGGTTTCAGCAAGCTCAGTGGCCTGTATTGAAGCCATTTCATCGC -TGGATCCTGCTTGAGACCGCTGAAATTTCGCGTTTTTTTTTGGAAATTTT -GTTGAAAAATAACCTTCCAATATCGAAAATATCCTCTGAAAGCATATGAA -ACCAGCAGGGTCTTCTATTAAGTTCCCCCACAAATTTAATTGCCACGTAG -AAGCCGCAGACAGCAGTCACCTCGCCGAACCAGCGGATTTCTGGAGATTT -AGTGGTTATAGAAGGATCCAGAGACGGTCGGACGACTACTTCTAGCTGAA -AACATTAAGATTATGGCTTTAAAGTTTTTTAAAAGAAAAACCAACTCGAA -ATCCAGGTTTTAGGTGCTGATTTAGCTTTTCCAGCGGCAAACAACCCTCC -AGCGCCTCGACAGGTAAAAATTGAGTATTTCCATCATAATTACATCGGAG -TTCATCTGACCATGTGAATGTTCCTTCAATTTGTGGCTTTGGAATCCGCT -GGGCGATTTTCTCAACTGGATTTCTTCGACGATAGAATAGCCGTTCTTCG -GTGAAATATCGGTATTCTGCTTCTTCAAGTTTGTAATTATATTGACGCTG -AAAGTAATAAATTATGTTTTTCGATAAAAATGCTTTTAAAATTACCTTTT -TATTCGAAAAATTCATTGATTTTAATTAAAAATCTATTTAAATTGTTTAA -ATTAAAAAGTTCCAAGCTTCTGTAGTTATCGCGTCGAGACCCAACACACT -AATTACCACATGCGCCTTTATATAAATTTTAAGAAAATCAACATTTTAAA -AGATTTTTACAGTTTTTTTGTCGTTAAATTTTTCGAAAAAATGATTTAAA -CTCACAGTAAACTTGTTTGAAACTTGAATATTAAAATTTCACAGTCAATG -GGTTAAATTTCAAGACTTTCCCACTGATGATACGGTAGGCGCGAAGTACG -GTAGTTTGTTTTGTTTTTTTTTATTTTGCCGCCGAGTGATTCAAATTTGA -ATTTATATCATCCGATTTTTTGATTTTTTCCTCAATATTTCTCGATTTTT -CAGCTTTCAGTGTGATTTTCCAAGAGCCGTAGCTCGACCAGACGACGGAG -AGCCTGAGGCTGGTCGCCAGAAGCACTATGAAGTGTGGGTTTTTTTTAAA -GCATAATTTGCATTAATCTTCTAATATTTTAGCCACCCCACACCGTCCAC -GAACAAACTCCGAATCGAAGCTCGGGGCTCGCGAGCAGCTTCTCCGGGAC -TCTATACGAGTGGGTTTAAGTTCTTAATTTCAAATTTCACTCATTTAAAA -ATTTTATTTTTTAGCTTCAAGTAGCTTCGGAGCCGTACGTCCACATGACA -AAGGAATCCACGTGGGACGAGGCGAAAAAACTGGCGATCAGTCTTGAAAA -GAAGCCGGACATTGTCCGTAAAGCGATATACAATCGTCGTCGCTTCGTCA -ATGAAAAGATAAAAAGTGCGCTGGTCAAGCGCGAAATCATCGACCCAAGA -AGCCCGGCAATCCATGAAATAGCAGTGGCGGCGGAGGTATTTTAAAAGAA -AATCAGACAAATTTAATATCTAATTATTCCCCATTTTCTTGCAGACAATC -GCCATAAACGTTGTGCACTTCTTGGAGACTCATCACGCAAAAATACTCGC -TGAAATCAAAGCGGCCGCCGCTGGAGCCGGCGCCCAGCTCCGAACTGCAT -GAATTAATTCAAATTAATATTTTTAAACTCATTTTTCACACAAATAATCA -TTCATGTGTCCATTTTTCACTCTCGAAACCCATATACCCTCACTCTAAAT -ATCAATATAATGCACATTTCTCATAGTTTTAATCTGCCCTTACCAATTAA -ATCTTACCAATTTTCCGCCATGATCCCTTTTTCCATTTTGAATAAAATTC -GACGACGATTTTTCCATTAAAACAAGAAATATATAAATAGATTCAAAAGT -GGCGCTTGTGTCGCTCAGCGGTCTCCTCCACTTGCACACTATCTCACCGC -GGCCTTCCAATTACTCGTCCATTTTCCAGCTGTAAAAAGTTTATAAAAAC -TGAAATAAATGCAATTTTCAGCAGAAAATCGCTGAAAATGCGGCAAATCG -TCGAGCTAAAGTCACTTTTGACTTCGGAGCCAATTAAAGCCATCGAGCTC -TTCGATAGGCTCGTTGGACAAGGTTTGAGCCGAAAATCTAAACTTTTAAG -CTGAGATTTCTTTTAAAAATCCCTTCCAGATGCCGACACAATCACCCAAG -AAGCCTGTGGAACCCTCGCCAACTATATCCGGCATTCCAGTGTTTTTAAG -CGACGGCTTCTGTTCACGGAGCTCCAAAAATGCTCGTTTTTTGCGAAATT -GTGCATTTCGTTTCAATTTCACAGCTTTGAAGACACAGTTTTTCCGCGAA -AATTGATTTTCGAACGATTCAGCGTGTTTTGCGGTGAACTGGAAAAGGAC -AAGCCACGTGGGTTTTCATTTATTGAAAATTGAAAAGATTTTTGCAAAAA -ATCATAAAATTTAATGTAAAACTGAACAAAACTCGATTTTTAACCGAACC -TTTTTGTTTTTTCCGTGAAAAAATCGGTTTTCCAAGTTTTTCGAACATTT -TCCGAAAAAAAATTACGCAAAAAAAACGATTTTCAAGTAACAAATCCGGA -AAAATCAAACTTAAATATTTTCGGAAAATTTCATAATTTTCTTCAAATCT -CTGTAAAAAGTAGATTCGATTTCTGGGAAATTTGAATTTATGTCATTTCT -TTAAAAGCGCATGCTCTTTTGTAGGGTCTCGCAACGAATTATTCAATTTA -AACTTTGAAATTCGCGCCGAAATTTGGGTCTCGGCGCGATTTTTCGAAAA -ATAAATGAAAAATATGTACTATTAATTTTTTCTTGAAAATTATTGATTTT -TCAGATCACCGGCACCACGTCACCGCTGTCGGATCGAATCGTTTCTTCAA -TTTGGGACTACTTTCCGATGGAAGCCCCGTCTCAGAACCCCGACTGGTCC -CCGTGCCACGTGTAATTCAAATCGAGATGACAAATACACACACAATATTT -TTGACTGCTGAAAATCAGATTTACGGCTGCGGAAAAGCTTCATCTTTTTT -GCCGGATAAAACGGAGGAGACGGACGGTGGTTATGTGGCACTGCCCACTT -TGGTAGAAATTCCAAAAGTTACTGGATACGTGGCAGCTGTGAAGGTGTTC -GATGGAGGATCACAGTTTTTGATTGGCGGCAAAGTACGGTTCTAGAAAAT -TGGTGGCCGAGTATTTTTTCGCGGCCACATGGCGATTTTCTACACGAAAA -GTTGTGTAAAAGACAAAAAGGTGTGCGCCTTCAGGGATTACTGTAGCTGA -AGTTTTTCATAGATTTTTTTTTTGGCTTTAAAAAAATCCTTAAAGGTGCA -TTTTCGTGTCGAGACCTTGTTGTATTATTTTGCTAATTTTGCTTAAAAAG -TACAGTACCAGGTCTCGACACGAATAGTTTTGATAAATGCAAAAATGTGT -GCGCCTTTAAGGATTACTGTAGTAAAAAATAAGAATCCCTTTTGGAAAAT -TTGATAATTTTGTGAAGAAAAATAGATAATTCTTTGAAAATGAATAATTT -TTTGGAAAAATCTTTTTTTCTTATTTTTCTAGACGTACACCTTTATTTCA -TTAAAAAATTGTCGCGCCGAGACCTGATACCGTATTTTTGAGCGCAAAAT -CGTGCCGAGACCCAAATTCGTGAATTCAAATTTTCAGTGGTATTGTGTTG -GAAAATGTTCGATTTCCGGAGAAACGCGACGAATTTCGTCGAATTGTTTT -GTTCTGGTAGAGGAGGAAAACGAGGAGAAATTGGAGAAAATGACGAAAAA -TATCGATTTTTACGTGGCAAATGTGCCGATTGAGGAAAGGATTGTGAAGG -TGGATTTTTTTTTTCAAAAATTTGAAAACAAAAAAACTAAAAAAAAAAAT -TTTAATCTTAGTTTCTAGAATTCAAGCCAGTTATAATAATTTTTAAACTA -AAAATTGCATCTTCCGAATTTTCAAGATTTTTTTTTCTGAAAATCGTTTA -AAAAAATATCTTGAAAAATCAAAATTTCAAAAAAAACAAAACTTGAAAAA -AAAAACGTCTTTAGCGGTATTTTTTCTATAATTTTTCAATTTTTTTCAGC -TTAAAAATCATAGAAAATCGTAATTTTTTGACATTTCTTCCAGGTATATC -TAAAAATGGACCAAAACGAGATTCTGTGGGATAGAACGAGCGATTTCTCA -GCGGAAAAGCCGATTTCCTTCATAATCAATGGATTTCCACAAATGGCAAT -TTTCGAATCATTTCAACTTTTAAATGATGGAACTATTTATGCTGCGAGAA -ATTCACTTTTCAAAGGAAAATTGGAGCTATGGAAGAACAAAGATGACGGG -TTTAAAGTGAAAAGCGGGACTGTTTTGGAGCATTTTGACACGAAATATAC -ACTTATTGCACTGATGGAAGAGGTTCCCGGTACTATTGGAACAGAGTTTT -TCAAAGTTTCACCAGATGGGCAGAATTTGATTATGAAGGTTCATTTTGTT -TGGAATTTGAAGGAATTCGACCTTAAAAATATAAAAAATTGCACTGATGA -TGTTATGGATTTTTTTTTCAGAAAAAAAAAAACGAAAAATTGAATGCTAA -ATGACAGAAAATATGCCCCTGTAACATTTTTTTTTTGAATTTTCTAAATT -TTAAATTATTTTTTTCAGTTTTGCGCAAATCAAAGAAACGGCCGAATTAA -ATTTGAATTCCCGCGCAAAAGAGTGACGTCATTTTTTTTTTCCCGTTTTC -CGGATGTATTATTAGGTTTTTATTTTAAACACAGTTTGTCAATTTTTCAG -ACATTTTTTTTTAAACTTGATAACCCGAAAAAAGTGGCCTAGAAATCGGC -TTTACAATTTTTTTTTTAAATCGACAAACTGTGTTTCAAATTATGAAACA -AGGAAAAAACGAAGAAAAACTTATAGCCGGAAAACGCGAAAATGTCGAAA -ATGACGTCACTAAATTGCGCGGGAAAAAATATAGAATTTTTTTTTAATTA -ACAGCTATATTGAATCATTAGGGCTTGTTCTCCGTCAAAAAATTTCTCGA -AAAAATTGATTTTTCGTTTTTTTTTGGAAAATCGAAAAATTTTGTTTCTC -AAAAAAAACAAAATTGGAATTTTTATTAAAAAATTATTTTAATCCAACAA -AAAAAACTAAAATTTTTTGCAAAATTTAAAAATTCATAAAACATTTAAAA -AAATTTTTTAAAAGTTATATTGGGACTGTATTCTAATACTTGGACTAAAA -AAACCCACATTTGACAAAAAATTCAATTTAAAATGAATATTTTCAGATGG -GCTACCAAAACGAACAGAAAACCGAGAAATTCGAATTCGAGTCTCCCAAA -ATTCACAAAATCATCAAAAATCGTGAAGTACAATGTGATCCAGTTGATAT -TCCGTTAGACTCGACTATTCATTTTCATCAAAATTATAATCAAGAAGTAT -TGAAATTTCAATCGAATCGATTATTATTTCAATGGATTTATCCGAATTAT -TTGTTTCAAAACGATGGAGATGTACATTTTTCAATTGAACAATTGGAGAC -TGTATTTGCTGTGGATTTGGAGAATTTGGAATTGTGAGGGTTTCTTTTAT -TAATTAAAATTTTTTTAAGTGGAAAAATTTTGGTTTTCTTTTCAGAAATT -ATTGTAATGTTGTAACTAAATATTACGGGAACACGAAATTCTAAGAATGC -GTATTGCACAACACATTTGACGCGCAAAATATCTCGTAGCGAAAACTACA -GTACTTCCTTTAATGACTACTGTAGCGCTCGTGTCGTTTTACAAGCTCAA -TTTTTTAATACTTTAAATTAAAACTTTTACTTTAAATTTTAAAAAAATTC -GTCTTATTTTTTAATTTTTGCTTTATTCCAATATTCTGTCGATAAATAAA -TCATTTTAATAAATTTAGAAAATTGAGCCCGTAAATCGACATGCGCTACA -GTATCCATTTAAAGAATTACTGTAGTTTTCGCTACGAGATACTTTGCGCG -TCAAATATGTTGCGCCGTACGCATTCTCAGAGTTTTGTGTTCCCGTAATA -TAGAAAATTAGAAGTATGTTAAAATTTTTAAAAAGTATTTTTTTTGGACT -TTTACCCAAAGATTTTTTTTTGCAAATTTTTAGTGAAAATTATTATTTTT -TTCAATTCACGCTAAAATTTATTAAAAATTTAAATAATTTTAGACTGTAT -TCTATACAATCAAAAAACAACAAACATCAATAAAATTTTCAATGAGTTTA -AAATTTTTTTGAATTTTTTAAAACTTTTCTTCGTTGACAAAACGTTCACA -AAACTTGAAAAAATATATTTCAAATTAATACTTAAAAATTCAAACAAAAA -ATTTTTAAAATTTTTCAGCCCGAAATACCAACCTATATCACCAGAAGAAT -TCGTTCCCACCGACACTTCTCCCTCCGATATCTGGTATTTAAAATCCAGT -GAAAAATTGAAAATCCCTTGTCACAAGTACCTTCTCCTACTACATTCACG -TCAAATTGGCGCGATGCAGAGATTTCATTCAAATTATGGGAATTTCGGCG -ATTTTAAGGATGGTAAATCTGAAAATGAAGTGGAAATTGAAGCGAATGCT -AGTGTTGAAACTGTGAAAAATGCGCTGAGAGGGATGATCAATATTCGAAC -TCTTTTCAAAATTAAGACTATTGAGGTAATTGGATTTTTGGTGAAATTTG -AAATGAAAAAATATTTATAAAAATTGAATTTTTTTTCAAATTTTTTTTTC -AGTCACCATAAGTCAATTTTCCATTAGATAAAAATCGATACTTTTTCTAA -ATGCGATAAAAATTGGAAATTCTATAAATTCCGGAAAAATCGATTGATTT -CAAAAAATCGATAATTTCCGGAAAATTGATAAATTCCAGAAAATCGGTAA -TTTCCGGAAAAATCGATAATTACCGGGAAAACCAATTAATTTCCAGAAAA -ATCGGTAATTTCCGGAAAAATCGATTGATTAAAAAAGTCAATAATTTCCG -GAAAATTGATAATATCTAGAAAAATCATTAAATTCAGGAAAAATCGATAA -ATTCCAAAAAAAAATCGATAATATCCTGAAAAGTGAATAAATTCCTAAAA -ATCGATGAATTTCATCAATTCCGGGAATATTTTTTAAATTTAAACTTTAA -AAAATATTTTTTTAAATCTTTAATCCTTATCTATTTTATTCAAAAAAAAA -CTGATCAAAAAAATTTTTTTTTTTCAAAAATTCAATATTTTTGCAGTTAA -TCGAATGCATCAACTTCTACGATTATCATTTAATGGATGAAATGTTCAAT -GATTCAATGCATATTCTAATGGAAACAATCACTGAATTCACACTTCCATT -TCTCTACGAATTATTCTATTCGTTTGAGGAAAAAGTGTTGGAGGGACTTT -TGCAGAGGAAATATTTGATTTCTAACTCAATTTCCAGTGTTTTACCGCCA -AAGGAGCTTCTTGTACGGTAAGTGAGTTAAGAAATGGAAAAAAACACATT -TTTGCTACTGTTGGAATTTTTTTTATTTCACAAATATATTTTTTTTCATT -TTAAAGTTAAGTAGGAGTTTATCAACTTTTCTGGATTTCATCAATTTTTC -CGAAATATTTTGATTTTCCCGGAATTTCTGTGTTTTTCAGGAAAAAAACC -CCAGAAAACTAACAAAAAGAATTAGCAAAAATGACCTAAAAACCGTAAAA -CTATGTATCCCAACTTGTCCACGTGTAGTACAAAAAACCGATGTGCACCA -ACAAGAATTTTTGCAAAAGCTATTTTTCCATTCAAAACTGCGCCCCAAAC -AGTTGAAATTTTATAGAAAATTTTCGAAATTCGCTTCTCCGAAAATAAAA -ATCTCAGATCCGCCCATTTCTTGGCTCTTCCAGATTCGCTGAAAAACTGG -ACACCGATTGCCGCCGACACCACACATTAAAAGTTCCGTCGAAATTCAAA -AATCTAGAAAATCTGAGCACCTATGAGCCCGAGTACATTGTCAAATATTT -TCTGAATCTCGACCAAGATTCGGAGGATGTGACGTGGCGATCGATACGTC -ACGAATTCCACGACACACTTGACACGTGGCACGCGGAAGCTGTGAAGAAG -AGAGATGAGAGACGTATGCACGGAGCAACACGGAGCAGAACGAGTAGTAT -TCGGAAGGAGAGCTTTACGAAAATTCAAAATGTTTCGATGACGTCATCGC -CGGTAGGAATATCGATTTTTATGTATCGAATTTACTGGAAAACTATCAAA -AGTTTAGGAAAAATATCGATTTTCCTGAAATTTATCGATTTTCCTGAAAT -TTATCGATTTTCCTGAAATTTATCGATTTTCCTGAAATTTATCGATTTTT -CTGGAATTTATCGATTTTTCTGGAATTTATCGATTTTCCTGAAATTTATC -AATTTTTCTGGAATTTATCGATTTTTCTGGAATTTATCGATTTTTCTGGA -ATTTATCGATTTTTCTGGAATTTATCGATTTTTCTGGAATTTATCGATTT -TTCTGGAATATATCGATTTTTCTGGAATTTATCGATTTTTCTGGAATTTA -TCGATTTTTCTGGAATTTATCGATTTTTCTGGAATATATCGATTTTCCTG -AAATTTATCGATTTTTCTGGAATTTATCGATTTTCCTGAAATTTATCAAT -TTTTCTGGAATTTATCGATTTTTCTGGAATTTATCGATTTTTCTGGAATT -TATCGATTTTTCTGGAATTTATCGATTTTTCTGGAATATATCGATTTTTC -TGGAATTCATCGATTTTTCTGGAATTCATCGAGTTTTCCGAGATTTATCG -ATTTTTCTGGAAATTTTACTCCCCAAAAATTTAACAATATATCGTGCCGA -GACACGAAAAACTCTAAAAATTACAGATTCCAATCGGAGGCGGCCGCTCG -AAACCCGAAAGTTTCTCAAAATCAATCAATAGTCCTGTCATTCAATCGCC -ACTCTCTCCCTCACCAATCAAAGGAATGCCAAAGGTAATCGTGTCGAGAC -CCACCACGCCACCTGCGCCTTTAAATTCCACGTTTTGTAGTCCCGCCACG -ATAGTATTTCCAATTCACTGGACGATTTTCCTGAAATGAGCATTTCACCG -TCCCCCTCGACACCGAAATCCTCTTCCGGTGGCGGTCGCTTCGCACCAAA -AGGAACTCGATTTAAAAAGGATTTCGAAATTCTCGTGAAACCTTCCCAGT -CACCACAGAATCCGTGGAAAATGGGCGGAGCTTCCGCGTCGATTCGCGAA -GAAATTGATCCGCAGGAGATCCGATTCGACGAAGTTGTGAAGAAGGAACA -GAAATTGCAGACTAATATACGTGCGTCACTTGAAATTTTGGAAAAATCGA -TAATTTTCAAAAAAATCGACCTTTTTTTGGAAATTATCGATTATTCTTGA -AAATTATCGATTATTTTAAAAAATTATCGAATTTTCTGAAAAGGATCGAT -TTTTTCGGAAAAAGTTTCGATTTTCTCGAAAAATAACGACTTTTTTTTTG -AAAATTATCGATTTTTAAAGAAATTATCTATTTTTTTGGAATTTATCGAT -TTTTTTTAGGAAATTATCGATTTTTTTAAGGAAATTATCGATTTTTTTAA -GGAAATTATCGATTTTTTTGGAATTTATCGATTTTTTTTAGGAAAAAGTT -TCGATTTTTCTCGAAAAATAACGACTTTTTAAAAAAAATTATCGATTTTT -AAAGAAATTATCTATTTTTTTGGAAATTATCGATTTTTTTTGAAAATCAT -CGATTTTTAAGGAAATTATCGATTTTTTTGGAATTTATCGATTTTTTTAG -GAAATTATCGATTTTTTTGAAATTTATCGATTTTTTTAGGAAATTATAGA -TTTTTTCTGAAAAATTATCGATTTCTCAAAGGAAAAGTATCGATTTTTGG -AAATTATCGATTTTTAAGGAAATTATCGATTTTTCAAAAGAAGAGTATGG -ATTTTTTGAAACTATCCATTTTTCTTTTAATTATTGATTTTTTTCCTGAA -AAATTATCGATTTCTCGATGGAAAAATATCGATTTTTCTGAAAATTATCG -ATATTCTTTTGGAAATTATCGATTATTCTAAAAAAAATTATCGATTTTGC -AGGAAATTCTCGATTTTTAAAATAAAAACAGCGATTTTTTTTTTGAAAAT -CATCGATTTTTAGGGAAATTATCGATTTTTCTGAAAATTATCGATTATTT -CTTCAAAATTATCGATTTTTCGAAGAAAAGTATGGATTTTTGGAAACAAT -CTATTTTTCTTCAAATTATTGATTTTTTTACCTGAAAAATTATCGATTTT -TCTGAAAAAATATATAATACCACACATTAATTTCAGGAACCGGATTCAAA -AAAGTGCAGCTTCTACCACACGTGGAGACGGAAGAGCTCGCCGGAGCTCA -AATTTTGGAGGTTTTTCGACGAGAACTTCACGATGAGGCGCTCATATGTG -TAGGAATTTGTGATGGTTTTTTTCTCAAAAATTTGAAATTTTTCAGGTGG -AACTGGTGATGAGCGACGATTTGGAGGTGGAAAACGAGCAGATCATCTGG -GGAAACATGCCGGGACTTGTTCGGCGTTAAATTTTAAATTTTTGATTTTT -TTTTTTCTTGTAACTTGCATTTTTTGTTTAATTTAGTGTTTTCGGTGTTT -TTTGTTGAAATTTTCGGGTTTTTAATATTCAAAAATTAATTAAATTATTA -TAAAATAAATGCATTTAGAAATGCGGTATAAATTGAAAATTTTCAAAAAC -CATCTCCCCGAATCCAGTGGTTTAGGATGAAAATCGTGGAAATCGAGCCG -AACGAGAGAATTCCGAGTTGCCACGTGGGTCTGAAAATTGAGTGTATTTA -ATTTTGGAAAATTTTGGAGATCTCTTACATTTTCTCAAAAATCCATAGCT -TTTTCCCATTTTTTTGTTGCTGGATCATTTTCAGCTCTTCGGTTATATCG -CAGACTTTGAAGCAAGGGTCTTCCGGGAGAATTTCCTGAACATTTGAAGT -TTTTGGGTGAAAAAAAAGCTTTTTTAAAAGATTTTTTGGTATTTTCAAAT -AATATCGGAAATTTGCGTTTAAATTTTTTTTTTCAAAAAAGTGAATTTTT -TCAAATTTTTCGAAAAATCGAAAAAAAAATTTTCGGGTTTCTGGAAATTT -TAATTAAATGTGTTTATGATGATGAGAAAATATAGTTGACAAAATAATTT -TTTCCGATTTGTCAATTTTTCAAAAAATTTGAAAACAATTTTTTCCATTT -TTATTCCTGAACATAAAAAATTCGAAAAATTTTCGTTTTTAATAATATTT -CGGAAAAATTTTGAATTTACCGTAGTTGTGTCATTTTTAAAGAAACTCAC -AATATTTCTAATCGAAGTATGCATATTTTTTAAATGAATTTTTGGAAAAA -TTTCAAACTTGTTTTTTGTTGAATTTTTCGATTTTCTTTCGTTTTTTTAA -ACAGAACAAATTTTTCATCATCTTTTCTACAAACAAAACAAAAAAAACAA -TTTTTGTTTTTAGAAAAGCGAGAAAAATTTCGAAAAATTATTTTAAAAGT -TAGAAAAATATCAATTTTGAACGGAATTTTTTCAAAATTCGATTTTTTTG -TTTATTTTTCTAATATGTTCAGTTTTTGGCCATTTTTTTTTTTAAAAAGT -TTGCTTTCAAAAAATTTTAAATGAGAATTTAGATTTTTTAACGAGAAATG -TTGAAATTGAGAAGAAAAAAAAAATCAATTTTAAATAGAAAAATTTTCTT -TTTCTAACATTTTCAGTTTTCTCAAAATTCCAAAAACTCGTACATCCTCC -TGACAAGTACAGTAATCCATTGGATCCAGATTCTCCTCTCCAACACTCGT -TTCCCGAATTTTTTCGAACCAATTGTTCATTTTCATAAGAACCGAGCTCA -TCGCAATCAATTTCCCGATATTTCCATCGTATTCCTCCGAAAATTGCTGA -AGCCGATTCAAATTTCCAATATCATGCTGGTGGAGAGAATACGGAGTGTT -CAATAGATCCGTAATTGATTTAACTTTAAAATTTGGTTTTTTCATTGTAA -TAATCATGCTAATCGTCTTGACATGATCTGTTAAATTCTCTCGTTTCGGC -GGAGAATATAATCGATATTCCAGTGGCACGAGGTTGTCGAGAAATCTATT -GAAATTCTGATAAATATCGTTCCAATCACTTCGAAGCTCGTCAGTTTCGG -CTCCAGCTCCGCTTTTGAAGCCAGTCGTTTTTAGATTGTGCTCCAGCGTG -TCTATTGAGCTCTGAAAATTTGATTTCAAAAATTTTGAGTAACTCAGACA -ACCCCATTTTTCATCTAATTCGAAATTAGCCACATCTTATAAGAAATTAA -CCACATCTAATTAGAAAAAACTTTTCTAATTAGAAAGGATGCATATCTAA -TTAGAAAAGCTGCACACCACATCTAATTAGAAGGGATGCTCGTCGAATTA -GAAATGAGGCACATCGAATTAGAAAGGGGGCGCGTTGAATTAGAAGTTAT -GCGCATCTAATTAGAAAGGAGGCACATATAATTAGAAACACATTGCGCAC -CACATCTAATTAGAAGGGATGCTCGTCGAATAGTACTACCTTTTAATGTA -TGTACTACCTTTTAATGTATGTACTACCTTTTAATGTATGTACTACCTTT -TAATGTAAGTACTACCTTTTAATGTATGTACTACCTTTTAATGTATGTAC -TACCTTTTAATGTATGTACTACCTTTTAATGTATGTACTACCTTTTAATG -TATTACCTTTTGGCTCTTAATGTTGAAAATAAATCGAATCAAATTAGAAA -CAATGCGCGTCGAATTAGAAAAAAAGCATGCCGAACTGGTGCGCGTTAGT -TGACCCTATTTTTCTAATTAGATGAGAGGAATAGGGTTGTCTGAGTAAGA -CTGCAAATTATCAAAATTTTTTGGTTCAATTTGTTTTTGGAGAAAAAAGT -GAAATTTCCTGGCAATTTTCAGTATTACGTAGACGTCGAAATATGAGATT -TTTCACCATTTCTTATGGGTCTCGCCACGCCGACAATCAATTATTGTAGT -TCATGTCGATTTACGGCGCCACTGTTGCATTAATATTCCAAATGACAAAT -TTGCCGCCGAGTTTAAAAAATTCAATAAAAGCCCGTAAATCGACATGAAC -TACAGTAGTTGGTTGTCGGCGTGACGAGACCCAATTCTCATCTTTCGACG -TCCACGTAATATAGAAATTTTTTTTTTGAAAAAATCAAACGATTTTGCCT -CAAAAAATTCAAAACTGTAAATTCAAAAAATACCACAAAAAAAAAGCGAA -AAAAATCGCGGAAGACAGTGGCGCCAGGCTGTCTCAATACAGTTTGATCT -ACAAAAAATGCGGGAATTTTTTCACAGAAAAATTGTGACGTCAGCACGTT -CTTAATCATACGAAATCAGATGAGATTTCTGCGTCTGCCATCCCGCATTT -TTCCAAGATCAAAGTGGAACTGGGACTTTCTGAATAGGACTTTCTGATTC -CACGTGGGAAGGATGACAAATCCAAAATTGCGATATTTCACTAATTTCAC -TGCTTGAATTTCCTTGGAACCAATCAGCGTCTTCAAACTCCGCCCACTCC -ATCTGATTGGTTGAAAAATGGGCGGAGCAAATCGCTGATTGGTCGCAGTT -CTCATTTTTAGCCAAAGTTAAAAATCTCGATTTTTCAAGGTTTTTTGACC -ACCTCCAATTCCAAGCTTCTTCCTTACCTTCAAATCGTAGAATATTGCCA -ATTCTCTGATTGCATCGAGTCCTTCCTTCAAAACCACAACATCTTGCAAC -TCGAACCCCGAAAGCTGATATTTCTCGTTTAACTTGAATTCTCCTAGAAT -ATCCTTCGCACGTAGCAACTCTCCAACGATTCCTTCAGTTGGTAGAAACT -CTTGTAGAGTGTACACTGCCTCCCAGATCTTCTCAAGATCCCCGTAATTC -CAGACATCTTCCGAGCTAGCCACAAGAAATTGCATATGTTGGTGTTTTTC -GTTTCGAGCAACACATTCCAATGAGGATACGAAGTTAGACTCGTTGATTT -TTGTTAAAACGTTTATCATGCTGGCGTAGATTTCCTCGAATTTGGTTTTT -CTTTCTTGAAATTTTTTGTATAGTTTTGAGGGTACCATACAAAAATTCTC -GGGAAACTTTTCGATATCATCTATCATCATCGTCAGGTTATCGAAATCTA -TATACTACAGTGTTTTTTGAAGAGTTTCCACGATATTTTGATCGGTTTGA -TGTTTGAATGCTTCGAGAATACGCTCGTCTCCGCAACGTCTTAACGTAAT -GCAAGGCTGTGCGGTGTGTACAAGTGTCTTGTTTAGCTCTTCAAAACCGG -AGCGATACATAGAAATGGTTTCATGCGCAGCGTCCAGCTGCTCAGGGCTC -TTGAAAGTTTTCAAACATTCCGAGAAGCTCTCAACAATGCTGTTGAGGTT -ATCCTTTGGCAGATTTTCCCGAATTTGATTAACTTCTGATAGATATTTAT -CGATATATTCGATATTTTTATGATATTTTTCCGTGTTGTTTAGGATTTTT -TGCATCGCAAATTCGAATTCCACATAGTATTCCAAAAACTTATTCAATGG -ATGCAGGAATTGAATTGATCCTTTGCCAGAAACGCTTTTTATCCAATAAT -TGCTCTGCTCTTTTATGGACTCTCGAATACTTTCTTCTCGTTTAGGGAGA -CCTAAAGCTCCACGATCAATTCGTTTTTTGAAAGAAATAATTCAAAAATA -CCCAAAAGAAAATTGCCTGATGGCCTGGAAGAATGCGTATCCGAGGATTG -AATACTACGAATAACGTCCCTGACCTTTCGCACCCAATTTGAAAGCCCCA -GTGTCGTATTGGTGTCGCGAATCATTTCTAAATCACTCAACGCCGCTTCG -AAATTGTTCAGTCTTCCCACTGACAAGAAGTCTCGAACACTTTTACTTTC -ATTTTTCATTATAGTCGTAGCGAGTTTGAAGAGATAAAATGGATCTTGAT -GGAGCAATGCGAATTCTTTCTTGGCTCGTTCCGGAAAGAAATTTCTGTAG -TAGGCGCCAACCTCTTCGACCGTTTCATAGTTCCGTTCTGTACGATCTTA -AAAGGTGGAGTACCGAAATCTGGGGAATATTTCTAAATAACTCCAAATTT -GCTCCTGATTTCAATTATCCATGTGAAAAAATTCAAAAAATCCCTGATTT -TGTATTTCGGCTTGAAATTGCCGAATTCCATTTGTGCACACATGCAAATT -TTTCAAACGCGCGCCCAAAGAAATTATCATTGGAGCGCGTTTGCCTCATT -TGATTCTCTCCGGAGCACGGTAGCACAGAAACTAGATGGATTGGTTCATG -ATACTCAGTCTGGAAACCTATATTGGCTACTATCTCGAAAACCATCATAA -AATCGATTTTGCGATGCAAATAAGAAATGACCGCAATGAAATTATCTATC -TCCATTCGTGATGAATTTTCGATTTTGTACTTCCTGGCCAAGTTATGCAC -GTTTGTTCGGTGGAGCGCGTTTTCACCCATCTAGCAACTGACACGGTGGT -TCAGTAGCCAATATAGGTTTCCAGACTGAGTATCATGAACCAATCCATCT -AGTTTCTGTGCTACCGTGCTGAACCACCGTGCTCCATCTACCGTATTTCT -TCCATTAATATGGCTGCAATACTATTTTTCGATGGTCTTCCCGCTTGCAA -TACTAATAGGGAGTGCAATACTAATTTTCAGAATATTTTTCTGCCTTTGA -GCTTACTAGTTTTTTTCTGAAAAAGCTCGAATTTTATGTAAAAATTCAGA -AAATTGGTTTTAATTGTAACCTATAAGTTTCAAAAATTCAATCTCGTAGA -AATTTTTTTGAAAAATTGTTGCAAAATAGGCAAAAAATATTGTAGAAGTC -CTGAAATTAGCGAGACGGGATTGCAATAAAAAAAAGTAAACGCAAGACTA -TTAGGGAGTGCAAGACTAATAGGGAGTGCCATACTAATTTTCGGAAGGTC -TCCGAGGGGCAATACTAATAGGGAGTGCAAATCTAATAGGGAGGCCATAC -TAATAGAAGAAATACGGTATTTTTAGTTCCTTTATTTTTTCAACGAGAAA -ATCAAATGAGGCAAACGCGCTGCAATGAAAATTTAAATTTATTTGTGCGC -GCATTTGAAAAAACTCATTCGGACGCAAATAATATTCACGAATTTAAGCT -GAAATATAATATCAGGGAAATTTTTTTGTTTTTTTTTCATACAGATATTC -TGAATCAGAGGAATTTTTTTTAGTTATTTGAAAATATTTCCTAGATTTCG -GAAATCAAAACAGCAGCTTTTGTACAACAGCTTTTTTTTAAATGTAAAAC -TTGTTTAAAAGTCAAACCACGTCCATTTTAAAAATTAATTTTTTAACTTA -TAAAATAAAAACATGTGGAATGCTTTTGCATGTACATTTATACAAGTTTT -TTGAGAAAAATACATTTAAATTTGAAAAATGTGTTTACTAAAATTCTGAT -CAATTTTTTTGTTATTATATATTAATAGCTGAACTTTACTTTAAGACAAA -AATTCCTCTAATTAAAATCTACCTTCAAACCATTTTTTCAGTTTTTGCAA -ATTCTCCTCGGAAATCGCAGTAGGACTGGGAGCTAGATCATTGAGTGGCG -AGAGAAAATCACGGAAATTTTTCAGGCGATTTTTCAGGCCCCATGTTGCC -TCCCATCCGTATTTTGGTTTCATGAGAGATTGGAGATCATGAAATAAATG -CAAAAAAGCATCCAGCGAGGTGGTGATCTTTTTCAGTGATTCTCGCTGTA -GTTGAAGATGTGGGAGCTTCTTAAGTAAATTTACAGCTTCTTCTCTATCC -TTATAAACTTTAGTGTTCTTCCTTTTCCCGACAATCTCCTCGAAAGCTCT -CTGCTCATCCCATCCGCCAATAGATTTTGTTTTGTAGAAACTTGAAATCC -TATCAAAATCGATATCCCGATCTAATAGCTGATTCGTCAGATCCGTAGAA -GCGATTTCGCCGCTGAGAAGCCCATCGACGATAAGATAGCAGTTAAGGAG -CGGTGGTAGTGAGCTCATCCAGTGAATCCACAGGTTTATGGAGTCCTTTC -CGTAGACTGAAATTATTTTTAATATTAAAGTAGAAAAAAATTATTATATA -AACTAACTATACGCAGGAAAACTCGCATTAAGTTCCAGATTTCGATCGAA -GAATTGTGGATGTCCAGCTGGAAATTTTTATTTAAATTTAGTAAATTTAG -TGAAGAAATTTAATTTAAAAATACCTGTCAAGCGCTGACCCTTAATCTGC -TCCAACATTTGAATACCTTGCCGCTCCCTTTCCGAAATTTCGAGATCTCC -GCAGTGTTTACCCGGTAGAAAAACAAGAAGAAAGGGAATTATCGTTATAA -TCATCGTTATCTGGAAAAAAATTAATTTTCATGGAATATATTTCAAATTT -TCGACAACCAAACGCTGAAAATTCACATTTTTTTCAGGAAATTTGGTTGA -AAAATCTGTTTTTCATAATATTTTGAGAAAAAAACAAGCGTAAAGGTATT -CAAGGCGCATGCAATTCACTTAAGCCAGGGTCTCGAAGCGAACAGAAAAC -ATACGGTATTTGAAAATATTCTTGTTTTCCGCGGAAAGTCGCAGAATTTA -ATTTGATTTTTTTAACTTAAAAAAACAGAAAATTAACCGTTATACCTTTT -GAGCAAAAAATTCTACAAGATAATAATTTAAAACAATTAAAAATTGAATA -AACATTGAAAATTAAATGCTTAAATTTCAAGGCGCGTGCATCAAACTTTT -GTTTGGGTCTCACACCGAATGTAACAAGTACGGTAAGAGTGCGCGCTTAT -TTTCATTTTTCGAATTTGTGCGACCAGTTCTCATGTTTTTTAAACGATTT -TTGCGGTAATTTTGGCCATTTTTTCTAGTTCCCACCGACAAATTGCATTA -TTTCCGTATTTTCAACGAAAATTTTGTTAAAAAACCAACAAAAATTTAGA -AAATTGCATCATTTTGCAGGGATGAATGGTCAAGCGGATCGCTGCGACCG -AACCGCCTACGTTTCGGGTCTTCAGCCGACAATCTCCGACATAGAACTGT -TCGAGGTGTTCAATCGTGTCGCTCACGTCGAGAAGGTCATCGTTCGCAAT -GGAGCCGCCCGTCACGCGCTCATTGTTTTCAAGTTGGCATTTTTTTTCCA -TTTTTCCTCATCTAAATCTCTAATTTTCCTATTTTCAGAACTGTTCAAGG -CCTGTATCAGGTGCTCGTAAACTTTCAAGGAACAACTCTTCACGGCCGTC -AGCTGCACATTCGTCCACTGCGAGAAAGTTCGCACGCGAACAGCGAGGCC -ATCTCAACGATGTTCGAGAAGGTCAAACATCAGGGAAATTCCGGGAATTC -TTCGTATCGTCAAGAGCACTCGTTCCCCGAGTACCGAAACCAGAACCCAC -AGGCTTCATCATACCTTCCACCGAATCCACGTGGTCATCGAAACTCGACG -GGCTGTTTCAATGGTGGCGGCGGGGGCTATGGACGCCGACGTTCCGCCGG -TGGATACAATCAGTACAATCAGAACAAGTATCCGAACGAAACGTACCCGG -GAATGACTCTGTTCGATAATCATCCAGTGCAGCAGTATTCGGGCTTCAAT -CCCATCGATTTTCGCTTTGATGACTATGTGGAAGGAGCCAAAAGGTGCAA -AATTCGCCAAATTTCGCTAAAAAATCTGAAATTTCGCCGACTTTTCCCGT -AGCGCAGCAGTTTTTTCTTGATTTAGGCACATTTCAGGCAATTATTTTCG -GCAAATCAATATTTTTCCACCATATATGTTCTAGAATGTTTTAGATGTAC -TAGATTTTATTTTCAGACGAATCAAGTGATTTTCTATATTTTTACACTAT -TTTTTGTTGAAATATGACCAGAATATGCAACAAAGTGTTCCAGCTGCTGC -GAAAAGGAAAAATCGGCGAAATTTCGAATTTCAGTCTATTTTAATCTGTT -TAAGCAAAAAGAAAACTAATTTTTAAAATTCAGATTCGACAACCTTGCCA -ACCTGATTCGCTCGAGCACCCCCACGGATCCGTTCGCTAATTATCAAAAG -TATTTTTGAATTATTTTGAAAATCAATAAATTGGTTTTTTTTTCAGACCT -TGTGAATCCACAAGCACATCTCGTTCTCGTACGAATTCAGCAAAAGATCA -AAAGCATGGCCCGCCAACGTGGAAAATGGAGCTGCAGATTAAGAAAGATG -ACCACCACCACGCCGGCGGCGGAGCAGCAACCACAGGACAGAAGCTGTCC -CCACAACAGTTTTTGGCTCAGATAGCTCAGAGACAACAATCGGAGCAAAA -CGCGGATGAGGTGGCCAAGAAGAAGCGTCCGAACCTTTCGGTTATCAATC -CATCGCTTTTCTATGAGCAATACCCGAGAACATCGTCGCCAGTTGTTTAT -GCTTCAAAATCTAGTAATATTTTTTGGAGATTTTGGGAAAAAAACAAATT -TTCTCGAAAATACGCCCGAAATAGTGTTTCACGCGAAAATTGGCGATATT -TCAATTTTTCTGAAAAATTGCTATAATTTTTTCGATTTTCACGTGAAATT -GCAAGTTTTTGGATATTTTTCTCGAAAAACGTCAATTCATCGATTTACGC -AGCTAGTATACTCAGCAATTGACCATTTTTTTGCAGACAATTTGGTATTT -TTTACTTAAAATTCTTGATTTTCGACTTCTCGTGTGCTAATCACTTTTTC -AAATGCGCGCCCGAAGAATTTCTCATTGGAGCGTGCTTGCTTCGTGTAGA -TTTACGAGAGCTTTCCATTTATTTAACTTCTTTCGTGCTTTTTCAGTTTT -CCAGCGAGTTTCTGGCTCGACCCCTCGGTGTATTTTGTGCAAACACCGTC -ACGCGCAAATGCATGCACTTTTTCAACGCGCTGCGTGAAAATTCCTCTTG -CGATTTCAAATATTTTTTCCCGCCATTTTCCAAAATTTTCGAGAGGGGGG -GGGTCGAGCCAGAACACCTTGGTTTTCCAGCGAGCTTCCTTCATTTACGT -CGATTTTTTTTTTAATCTTCGTTAAAGTTCTAAAAAAAAACGACTTAAAT -CATTTTAAATTTTCCAAAATTCGGTTTTCCTTCTGCAAAAAAAATCAATT -TCCAGAACCATCCGGCCACTACGACGACAAAATCGCATCTCCACACGATC -CGGCAGTTCTCGCTTACAGTCGCCTTCGTGTACCTCAATCGGCCTTCGAC -AGTCTCTCACCAATCGACACCGACAATTGCTCATTCATCACAAAACACTT -GGGACCAACAACCGGTGTGAAGCGTGATTTGACGAACGACGAGTTGTCGG -ATATGATTGTATCAACTGGAAATCTCCGAATCAATCCAACCAACATCGAT -CATCATGACGAACCGGCACCATGGTCTCCGCTGAAACGTCTTCGCGCCGA -AAGTGGATCCCTATCAACTGCACAAGTCGCGTCGCCCGAGTTCTCACCGA -TCAAACCAAAGACAATGGAGTTCCACGAGACTGAGGATGATGTTTTTGAA -ACTGGACCACCACCAACCTACTTATCCGAAGGAAACGAAAACGCGGAGAA -GAAATGTGTTGAGCAGCCGAAAATCAACTACGACGACATTAATAATAGTC -GTCTTCCGTCGAATTCTCATTCGGCAGCACCGAATTCCGAGAAGAAGCAT -TTCGTTTTTCCGGTACGGGGGCTTTTTTTTGAATTACCGAAAAAATTCCC -AACTTTTTAAAGTTCAAAAAAGTCAAAATTTTTGTCCATTTTCTGGGCGT -GACTGCTTATGCCCCGCCCCCCTTTTTCGAAGTTTCTGCTTCTCGGAAAA -TGTATTCCCAAAGTGCCAGTTTTGAGGCCCCACGAAAAGGGAGCAGAACG -AAAGAGGCACCACGGATTCAAGATCTGGTGCGATTCCGGATCTGGCACCG -TGCCAACAACTTGAAAACGTGGTGCCTCTGAAAATTTGCTGCCAAGGTTG -AAATATCGAATGCATTACCCGTAAATCGACACGAGCTACAGTAACCTGTT -ATCCGCGTGGCGAGACCCATGCGCGTCAGATGTGGCGAAAATTATACTAA -AACCTGTTTAACTTGCAGAAAAACTTAATTTTTTTTGTTGAAAAAATTGA -GCCAAAAGACTCAAAAATTTCATAAAGCGAAACTTTAAAAAAATATATAA -TTTGTTAAAAATTTCACGAAATATTTATGAATTAATTAATTTTTCCAGGA -ATACCCAATGTGCCGTCACTCGTCAGTTCCATCGATTGCTCACTTGGTCG -GTGATCTGTCGGACTTTTGCCCACACGCTACAGCCGACGAGAAGATGCTG -CTCGACGAGGCGTCTTCAATCATCGAAAATACAACTCCAGCAGTGTCTAC -TGCTCCGGCTGCTGCTCCAGGAGCTACAATGCTCCAAATATAGGAGAAGA -TCACATATACAATAATATAATCTTATTGCATTTTCGCAATTCTCGTTCTC -TCCACACACATACACACATCATCCCAAGTATTCCTGTGCTGAATCTCAGT -TTGAATGATGTTTCATACCGTTTTTATCCCACTATTGCCTTATCGTTTCC -TGTTTTATTATATTTTTCATTTTTTATATTGCCACCACCACCACCAACAC -CACCCTCTCTATCTTTTTTTGTTCTTTTGCCTCCAGCAACATCATCACCT -AGTTTTCTGTGAATTTTGAATTTTGTGTTCCCCCGAGTCCCCTCTGATAG -GAATGATAGGAAAAACAATGAAAATGCGAGTTTTTTCAAAAAAAAAAATA -CAAACTAGGAAACTATAGAAACAAAAAAAAAACATTTGAGGCGCAGTACC -GAAATCTCTCCAAATTTGGCCCGAAAAATTCAAAAGAAAATATTTATTTT -TCTAAATTATTATTTTTCCGCCACTCCAGCCTCATTCTCATTGGAGCGCG -CAAAGTCATGTCGATTTACGAGATTAAGATTTTCAACGAGTTTCATCATT -GTTATCGATTTTCGTGTAAAGTTAACTAATTTTTTTGAAAATTTTCGCAA -AAAATTTTGGATAATAAAATGTTCAATTGGCACGAAAATGCAGATCTTCA -GCAAAAAAACCGACAGAAATGTGTAAAACTGAATCTCGTAAATCCACATG -GCATAACGCGCTCCAATGAGAATGTTTTTAGCGAAAAGTTTGAACAAAGG -AATATCAAATCAGGGCCAAATTTGGAGCAATTTCTAAAATATTTTCTCAA -TTCTTTCGGTATTCCACATTCAAACAATTATTCGGCCGTTCCCATGAGCC -TCTGAATCTCGATGGGATCCCTTGGCACTGCAGCAGTCAACAGCTCAATC -CCTCCAGCTTCACTAGTCGCCACGTCATCCTCGATACGGTATCCAATGCC -ACGAAACTCTTTGACAGGCCAATCCATCGGAACATACACTCCCGGCTCAA -TGGTAAATGGCACATTCGGTGGTAGATCAATGTCTCGGGATACTGTCGGA -CAATCGTGAACATCCATTCCGAGATAATGACTGACGTGGTGGGGACACAG -CTTCTCCGCCTGATGAATCATCTCCTTGTGATCCGTAGATCGAATCAGGC -CGAGTTCGGTGAAACTTGCCGCGAGAAGTTCGTTCATTCGGCGGAACAGG -GCGCTTAGGCGGACTTTTTCCATTGAGTGGGCGTAGGTGAGCAGTTCTTC -GTGAACGTAGAGAAGCGCTTCGTAGAGGGATAGTTGGGCGTCTGACCAGC -TGCAAAAACGAATTTTTTTTTGGGAAGGTTTTTTGAAACGATTTTTCAAA -TTTCGTTCGAATTATATTAAACTTTATATAAAACGATTATCCACGGATTT -CTGGCTTCCCTCATAAATTGGAATGGAAGAGTTTACCGAACTAGGCCATT -TTGGCTCGGCCATATCTGGTGCCGCGTCGCGGCTCGATTTTAGTTGTAAA -ACTAAATGCATTTGTACGTGTGGAGTACACGACTTTCCCACGCGTTGTCC -GGCGGGCGATTGTCAATGGAGCGCAAAAAATTCACTGAGGAAGGGGAGAA -CTCCGTGATTAGCACCGCCTATTTCTCTCACGAATCTATTTCTTCGAAAT -CTTCTATTTTTTAAAAATCAATTCCTGAATTCTGAAATTCATTATAGCGT -AATTTTTTGGGAATTTCACCCTGAATTCCATTTCTACGGAACAACATTTT -TTTCTCGAATTTGTGGTGACTCAAATTAGAATTTTCAAAATCTCCAGAAA -AAAAATCATTTTTCCTGAATTTTCTGGAGATTTTTAAAGGAATAAAGTGC -AAAAAAGACTCTTTTTGAGGCACCACCGAAAGGAGAAAGGAGAACACAAA -CCACGCCCATTTTTCCGTGCCGCGCGCAAGTTTTTCTGCAAATTTTTATT -TTCAAACGAGACAGCGAAACTCCGAAATAACGCATATCGTGTTCTTTATC -ATCAACGTGTTATTTCGGAGCTTCGTTGTCTCGTTTGAAAATAAAAATTT -GCAGAAAAACTTGCGCGCGGCACGGAAAAAATGGGCGTGGTTTCTGTTCT -CCTTTTTCACCTGTTCTCCTTTCGGTGGTGCCTCTTCTTTTTTTTTTCTA -TGTTTAGCGTAATTTTTTAGCCATCTTGGAATAGCCCCGCCCATTTCTCC -CACAAATCCATATCTACGAAATCTCGCATTCCAGAATGATTTGTGGTGTC -TCAAACGGGAATATTCAAAATTTCTAGAAAAACCCCATTTTTCTTGAATT -TTGGCCGAACTTCTGTAATTTCTGAAATTCTGAGAAAAATTTTCATTTGA -GTCACCACAAATACTGGAATGCAAGATTTCGTAGAAATAGACTTGTGGGC -GAAATCAGCAAAAAATGGGAAAACATTCAATTTTTTTTAATTTTTTGGGG -TTTTATCACTAATTTTTAGCACTTACAATCCAGAAATCGGAAAGCAACGT -GTCACATCTGACACATAACCATTCAAATCACACCCAGCATCCACGAGAAC -ACATTCCCGGGGATTTAGGTCATTATTTGCGTCCAAATAGTGAATAGTGT -TGGCACGAACACCACCGGCAATCACTGGTGGATATGCTTGCATTTCTGAT -CCACGACGACGTCCTTCAAACTCCAAGAGCCCGCAAATCGCGTTCTCGTT -GTGTAGATCACGTGATCCCGATATCATTGAGCTCATTGTCTGGGCTCCCA -CGTTGCACACGTCACGCATTGAGCTCATTTCGGATGGAGATTTTATTACT -CGGCGACGTTCGATCTGCAAGGAAAACTTGAAAATTGGCAAAAAAATAAT -TTTTTTTTTGAAATTTTAAAACGATTTTTCGGGTGTTCAGAAAAATTTTT -TTTAGGAAAAAATTGGAATTTTCCAAAAGTTTCAAAAAAATAATTTCTAG -AACTTTTTCCTAAAAAAAAAATGAATATTGAAAGCTTCGAAAACAGTAAA -AATTGGGAAAATTTTTTTACCGTTAAAAAATTTTTTTTTTTCGAAAAAAA -AATTTTCAGTTTAAAATTTGGAGCGTTTTCAATTTTATTGATAATTGGTG -AAACAAAATAAAAAGTAAATAAAAAATTTTTTTTTTGAAAAATTTGAAAA -ATTAGATTAAAAATGTTTATTCTGGGATGAAAAAAACCTCCTAAAACCAT -TTTCTGGAAAATTTAAACTTCCTATTTTGTTCAGACAATTCTTTTTTTTC -AAGAAAAAATCAAATTTTCCACTAGAAAATCGAAAAAAATTGACCTCGTT -TAAAAATTGGACAAAATTTGAATTTTTACTTTGAAATCCTCGAAAATCGG -ATTTTTTTTTCAAAGCTTGAACAATTTTCTGCAAATTCTATATATCTCTA -AACTCACAAAATGATTAATTTCCCGAACAGAATTAGCTTTAGCCTGTACA -AACTTATAGAGTAAATCATCAGAAGTCGAATCAAAAAACACTGCAGTTCC -CTTATCGCAAACTTTTTCCAAAGTCTGTAGAATCCGGCTAGTCGGCACAC -ATTCCGTGAATTTTGCAGTCTTTTCCCATTCGGATTCAGTTGGTAGGGCG -CCTTCCCATAGCTCATCATAGGCACTACGACGGTCAGCAAAAAGAATATT -TGTTTCTTTTGAAGATTCGGATATTCCTGATTGCATTATGTAATAACAAT -CTGGTGTGGTGATTCCGTTTAGGTATCTGCAAAAAAAAAAAATTTTTCAA -ATTTTTTTCTGTTAAAAATTTAATTTATTTTTTTTATCAAACAATTTTGA -ATTTTTCCCAAAAAAAATCCGAAAATTGTGAACAAATCTATTATTTTCGT -TGAACAAAAAAAAAACAAATTCAATTTTTAAATAATTTAATTTTCGTTCA -GAAAAAGAAATTTGTCGATTTTCGGCGGCAATGATTTTTTTTAACGAAAT -TTTCCTGAAAAATTCAATATTTCAATAATTCCTGATTTTCTAGTTTTTTT -TTTAAAGAAGAACATGTTAAATTTCTACTAATTTTATAACAAAAAATTTC -GGGAAAATCTAGAATTAAAAAAAAATGTTTTCAGAAAAATTCTACTAATA -TATTAATTTTAGCTTAAATTTCGATAATTTTAGGTTATTTTTCAATTTTT -TTAGGGCGAAATTTTGATTTTCAAAACAAAAATATTTTCTGACAAAAAAA -TTAATTTTCATTCTTTTTTAGATTTTTTGAAAAATTTTCAATTTTTTTCT -GAAGAATTTGGTACTTGTGTATTACATGCCCTCATTTTTAAATTAAATTA -AATGTTCATTAATTTCTCCATTTAAATTAAACGTGATATACATTTTCTCT -TTTTAGGCTTAGAAATTGCTATTTTGCTACTTAAAAAATTACTATTAAAA -TGAGGGCATGTAATACACAAGTACCAAGAATTTCAATCAATTCTTGTTTT -TGAAATTTTTTTTGGGAAAAATTCCAATTTTCGATTGTTTCTTCGATTTT -TTCAGAAAAAAAATTTTCTAAAATTTATTTATTTGTTTGAAAATTGGATC -TAAAAAAATTTCTCTAGTTTTTATTTTTTTTCTGGAAAAAGCTTTTTTTA -ACTTAAAAAGTTAATCTGTGGCCGAGTTTTCTCTCATCATTTTCACGGCC -ACGGCCATCAAAACCGAACCTGAAATGGCTTTTCTGTCGGAACGCGTGTG -GAACATCCGGTGCAATATATGATTTCCGTGCTCCTTTCATCACAACGACC -ACTTGCTTTTCTGAAACTTTGAGAGGTCATGGCCTAACTTTTAAATGGTT -TTCTAGGCCACCATGGTGATTTTATTACGGTACCGGGTCTCGACACGATG -AATTTTGTAGAATAAATTTTTCTGAAAAATTTCGTTTTTTTTTTTAGAAA -AATCAAATTTTCAAGAAAAATGGGAAAACATTTTTCAGGAAAAATTTAAT -TTTATAGAGAAAAATAGAATTTTTCCTTTAAAAAAATCTGAAAATTCGGA -TTTTTGAGAATTCTCTTTATTTGGATTTTAAAATCCAAATTTTCAAAAAA -AAATTTAAAAATCGGAAAATTCCAAATTTTTGAGAGTAAACTCGCCTTAA -TTTTTTTTTTCAATTAAAAAAATTAATTTTTTAAAAGAAAATTGGAATTT -TTACCCAAAAATTGGCAATTATTCGAGTTTTCAACGGAAAAATCTGAAAA -ATCCGAATTTTTGAAAAAAAAATCTTTAAAAATCCCAATATTCAATTAAA -AACCGCGAAATTTCGGATTTTTGAGAAAATTTTAATTTAAAAAAGTCCTA -TTTGTACTGCAAATCCTCATTTCCAAATGATGGCCTAACTTTTTCAGAAT -TCTAGGCCACCAGGCCATTTCTCTGCCTCTTACCCCCAGTTTTGACCTCT -TTTTTGAGTAAATTCATCAAATTCGTCCTTCTCATCGCATATTCCTCATT -TGGAATTCGCGATGGCCACATTGGTAGGCTCCGCCCACTTCTGAGCATTT -TTTTTTTGGATCTGATCTGTGTGGGAGGGAAATTCGAATTTTTTTAGAAA -TGAATAAAACTGAAAAAAATAGATTTTTTGGGAAACAGGGAACCTGAATT -TTCGAGAGAAAAAAGGAGGTAAAACAAAAAATTCGATTTTATATTGAGCA -AAAATTAATAGAAAAAATAAACTTAACAATTATGAACAGAAAAACCTACT -AAAAAAGTCTAAAAAATGAATGAAAAATTGCAAAAAAAATCTACAATCGA -TACGAGACTCCTCCTCCAACAATGCAGTTCTCGCCGGTGATGTACCTGAA -AAAAAGTGATTTTTTTTTGAATTTTTAGAAAACAAAATTATGAAAAAAAC -CAAAAAATTTCCGAATAATCGAAATTTTTCGGAAGTTTTAGGTTAAAAAA -ATTTTTTTTTGATGAAAAGTTTTTTTTCAACAATTCTGAAAACTAAAAGT -ACCAAAAAATTTTAGTTTTTTCGATTGTTTCAATATGATAATTTTTTTTA -AATGTTTAAAATTGTATTTTTTCAAAAAATATTATCAATTTTCCAATTTT -ATGGTAATTTTGGATGTGAGATTTTTTTCTTCAAATTTTCGAAACGTTTC -TCGATAAAAAAATTTTTCAACTGAAAAACTACAAAAAATCCTCTTATTTT -GAAGAAAAATCGATATTTTCTCAAATTGTTCAGATTTTTTCTGTTTTTAC -CAAAAGTGACCAAATTTTGAGACTTTTCGATCCAATGTTTAAAATTTTTT -TCCCGTTTTTTCGATATTTGCGGTTTAAATTTTTTTTAAATTTTTTGATT -CAATTTTAATAAGTTTGAGTGTTTTTCGATTTTTTGTCCAAATTTTTTCA -AATTTTTTTCCAGAAAATTGGTAGAAGCCAAAAAGTGCGATTTTTTTCCT -TAAAAAAGATAATTATTCAGTTTTTCGACTGTTTTCTTCTTGCTTCCAGA -TTTTTTCTCGAATTTTTTTTATATTTGAATTGTATTTTTAAATATTATAC -TCCTAATCGATAAAAATTAGTTTTTTTTTCAATTTAAATTGGAAAAGAAC -GTTCTTTTTCGTAAATTTTAGTGATTTTTGATTCCAAATTTTTGGATTTT -TTCAAAAAATTTCCCAGAAAATTTTACCTGGCTTTGGTAGAAGCCAGAAA -TTCGATTAAATAAGCTTTTTTGGGTTTTTCGACAATTTGTCAAGTTAGGA -ATTAAACTTTTAAAATTTTTTTCAAAAATTTTAAAAAACTAAAAGTATTT -CTGAGAATTTTTCTGAAATTAATTATTCAGTTTTTCGACTGATTTCTGCT -TGCTTCCAGATTTTTTCTCGAAGTTTTTATATTTGATTTTTTTAAAAAAT -ACTCTTAATCGAAAAAAATTCATTTTTTGAATTTTTTCGGGACTTTTTTT -TTCGAAATTTTCGTAAGTGTTAGTGTTTTTCGATTTTTGATTCTAAATTA -TTGGATTTCTTCAAAAAATTTTTTCAGAAAATTCTACCTGGCTCTGGTAG -AAGCCAGAAATTCGATTGAAGAAGCTTTTTTTTCGGTTTTTTGGACAATT -TTCCAAGTTTTAGTTAGGAGTTAAACTTTTTCAAATTTTTTTTGAATTTT -TTTCAAAAACTTTAAAAACTAAAAGTATTTCTGAGAATTTTTGAGAAAAG -CATTTTTTTTCTCGAATATTTGAACTTTTTAAATTTTTAAAGCTTTTTAT -TTTTAAATATCAATTCGAATATTTTACTCTTAATCAATGAAAAATCGATT -TTTTTGATAATTTTTTTCAAAAAAAAATTCGAATTTGAAATTTTTTTCAT -TCAGAAAAGGGAATTTGACTATTTGAAAACAATTTTTTGTTGAATTTTTC -GTAAATTTGAGTGATTTTCGATTTTTGATTCCAAATTTTTGGATTTTTTT -TTGACAATTTTCCAAGTTTTGGTTAGGAGTTAGATTTCTTGGAATTTTTT -TTTGAATTTTTTTCAAAAATTTTAAAAACTAAAAGAATTTCTGAGATTTT -TTCCTTAAAAAAGAGGAATTTTTTAGTTTTTCGACAGATTTCTGCTTGCT -TCCAGATTTTTTCTCCAAGTTTTTATATTTAAATCTTTAAAATTTATATT -TTTAAATAATATTTCAGATATTATACTCCTAATCGATAAAAATTCGTTTT -TTTTTCAAATTTTAATTGAAAAAAATCGATTTTTTCGATAATTTTTTAAT -TTTTTTAAAATTCGAATTTGAAACTTTTTCATTCAGAAAAGAGAATTTGA -TTATTTGAAAACAATTTTTAATTTAATTTTTTAATCCTTTAAATTTTCGT -AAATTTGAGTGTTTTTTGATTTTTGATTCCAAATTTTTGGATTTTTTTCC -AAATTCTCCAAATTCTTATTTTTGCAGAAAATTCTACCTGGCTTTGGTAG -AAGCCAAAAATTCGATTTAAGAAGCTTTTTTTTGGTTTTTTTTGACAATT -TTCCAAGTTTTAGTTAGGAGTTAAACTTTTTTCAATTTTTTTTTTTGACT -TTAAAAAAAAATTTAAAAACTAAAAGTATTTCTTAGTTTTTTCCTTAAAA -AAGAGGAATTTTTTAGTTTTTCGACTGACTTCGTTTTTGAATTTTTAAAA -ATTCAAAAATTGTATTTTTTAAAATTCTAATCGATAAAAATTCGTATTTC -GATTTTTGATTTCAAATTTTTGGATTTTTTTCAAACATTTTTCCAGAAAT -TTTTACCTGGCTCTGCTAGAAGCCGAAAAGTGAGATTTTTTTCCAAAAAA -AGATAATTATTTAGTTTTTTTTCTCGAACGTTTTATTATTTGAACTTTAA -AATTGTATTTTTAAATAATATTAAAAATTTAAATAATAATATAGAATTTT -TTTGAAAATTCCTGAATTTTCTGATTAAAAAAACATTTTCTGATGCATTT -TAGAAACTGAAATTTTTTGAAATCTTTTTGGAATTTTGGAAAATTTCGAA -TTTGTTGATTATACTCTTAATCGATAAAAATTCGTTTTTTTCCAATTTTA -TTTGAAAAAAATGATTTTTTCGATAATTTTTTTGATTTATTTTCGGGAAT -TGACTATTTGAAAACAAAAACTTTAAAAAAAAATCAAACTTTTTTTTTGA -AATTTTCGTATTTAAATTTGAGTGTTTTTCGATTTTTGATTCTAAATTTT -TGGATTTTTTCCAAATTCTCCAAATTCTTATTTTCAGAAAATTCTACCTA -GCTCTGGTAGAAGCCAAACATTCGATTTAAGAATCTTTTTTTTTTTTTGG -ATTTTTTTTTGACAATTTTCCAAGTTTTGGTTAGGAGTTAGATTTCTTGG -AATTTTTTTTTGAATTTTTTTCAAAAATTTTAAAAACTAAAAGAATTTCT -GAGATTTTTTCCTTAAAAAAGAGGAATTTTTTAGTTTTTCGACAGATTTC -TGCTTGCTTCCAGATTTTTTCTCCAAGTTTTTATATTTAAATCTTTAAAA -TTTATATTTTTAAATAATATTTCAGATATTATACTCCTAATCGATAAAAA -TTCGTTTTTTTTTTCAAATTTTAATTGAAAAAAATCGATTTTTTCGATAA -TTTTTGAATTTTTTTTTTACAAATTCGAATTTGAAATTTTTTTCATTCAG -AAAAGAGAATTTGATTATTTGAAAACAATTTTTAATTTAATTTTTTAATC -CTTTAAATTTTCGTAAATTTGAGTGTTTTTTGATTTTTGATTCCAAATTT -TTGGATTTTTTTCCAAATTCTCCAAATTCTTATTTTGCAGAAAATTCTAC -CTGGCTTTGGTAGAAGCCAAAAATTCGACATAAGAAGCAACATCAGACGG -TCTTCCAAGTCTTCCCAACGGAATCATCGATTCCAAGTGTTGTTTAATCT -GACGAGCTTCTTCTCCAGAAGCATGATCCCATACAGCACCAGTTCCGTCT -CCTTCAATCATTCCAGACACCACACTATTCACGCGGACTCCTTGTTTCGC -GGCACTCTGAGCTACGGATTTTGTAAGTGATAGGACACTGCTAGATGCAA -CTGAGTAGAGACCCATATCGATTGATGGAGTGAAGCCGAAACATGACGTT -AGGTAGATGATACTGCCGTTTCTGGAAAAAATCGATTTTTTTTGGACGGG -AAATTTTGCCTGCCTACGTGCCTACCTGCCGGCCTATTTTAGCCTATTTT -TCATTTTTTTTTTGTTGTTCTATTTTTTTGCCGTTTTTTGGGAATTTCAT -GATTTCTAGGGTAGGCACGACTTCATGCCTACGTGCCTATCTACCGGCCT -AACATTTGATATTTTTTTAGAATTCCATGATTTCTAGGTAGGCAGGTAGG -CACGAATACATGCCTGCCTACCGCCTGTTTTTTTGAAATTTTTTTGTGTG -AAAAATTAAAATTCATGGGAATGCTTTTTTTTTCAAAATTCAATGATTTT -TAATGCAGACCGCGCCTATCTGCCTACCGCCTATTTTTGGCATTTTTTGT -GTGCAAAACAAAATCAAATTAGCTTTTTTCTTTTCGTTTTTCTACGATTT -TTTCCAAATTTCAAGATTTTTCGGATAGGCACGACTTCCCACCTACTGTG -CCTACCTACCTACCGCCTATTTTCGGCATTTTTTGTGAGCAAAAAGAGAT -CAAATTAGCTTTTTCTCCTGTTTTCTACGATTTTTTTGGGTAGGCACGAC -TCCATGCCTACCGTACCTACCTACCTACCTCCTATTTTCGGCATTTTTTC -TCGTGCAAAAAATCATATTTATGAAAACACTATTATTTTTGTTTTCTGAA -TTTTTTTTCCAAATTTTGTGATTTCTAGGGTAGGCACCGACTTCATGCCT -ACGTGCCTACCTACCTACCGCCTATTCTCGGCATTTTTGTGAGCAAAAAA -TTAACATTCTTGAAAATCCTTTTTTTGTTTTACTACAATTTTTTCAAGTT -GCATGATCTCTAGGGTAGGCACGATTTCATGCCTACTTGCCTATCTACCT -ATTTTTCCCTTTTTTCGTGGTTTAGGTAGGCAGGCATGAGTCAGGCACGA -AAATCTAGAAACATAATTTTGATTCTATCGGTAAAATAGGCTTTCAAGAC -AGTTTGAATTTTTCGAATTTCTACCAGCAAAAAATAATATCTGAAATTTT -CGCGGCGAGACCCAAAAACTGACTGAGATTTGGCGAGCGTCGACATAGCG -GCTTGCGAAAGACGGAACGGTGTTGTCAGATTGTTGGCGAAAAGCTGAAA -TTGGTTTTTCGAGGTCAATTTTCCACGTGGAATTCAAATTTCAGCACTCT -CGAACCTTATCAAAATCCTCGCCGGATGTCTCAATAATCTCGCCGAGCAC -CTCATTCTGTGGTGGAACTATAATTAAAGTGTCCAGACCGCCGAGCTTCT -CAGCCACTTTCGTGATCAGCTCCTTCCTGTGCTCGGCATTTGCCACGTCT -AATGAGAAAGCTGTGACGTCACCTCCAACCTGAATTTATTCCCGAATTTC -TCTTTGTCAAGTTCTGAAAATCTGCCTAAACCTTTATATTGTCCTCTGCA -ACCTTTCCCACACTATTCGGACAGTCTGCGGCGGCGGCGACCTTGTAGCC -GGTGAACGCGAGTCTTCTCACGACGGCTTTACCCAGTGTGGACGTTGCCC -CGATTACAAGTGCACATGACATTACGCTGAAAGCCCGATGAGGAGGCATA -TTTATAGATACACCTAGACATCAGGTACATTTATTTGGAAATCCGTAGAA -AATAAAGAACATGTGAAAATAAAACAGATCATTTTATTATTTAGAGGGGA -GAGGGAGGGGGAGCAAAGTCGCTGACTGAGAACTTTCGAAAACCGGTTAG -TTACTCCAGTTGTACGGCTTATTCATGCCATATTTTCCAAGATTTCCACC -ATTGTGTTGGTATTGAGAATGTTGATTCTGCTGAGCTGCCGGCTTCGATC -CAGACATCTTGTCGTAACTCTTGCGCTCGTCATCCTGTCCGTAGAGTTGA -CGACCTCCAGCGCTGCTTCCAACATTGGGCATCATGTTCATGAATGGAGT -AAACTGGTGTGGAGCAGGTGAGTACTGCTGCATGAACAACGACGACAAGT -TTGGCTGCTGCATGTAGTTCGTCGCCTGGAACCCTGGTGGTGGTCCAACA -TTCGACGCCTGCTGTGGCTGCTGATCCCGAGAGCTTTGAGATCCGAACTT -ATTGAAGTCCATAAGTCCATGAGTCTCTCGTTGTTGACCAGATTGCACTT -GTTGCGCAGAAGCAGCCTGTGACAGAGGAGCAGTTGGAAGCAAGCTTGTA -AGATCAACTCCCATTCCGTATTGCATAAGAGCAGCAGTATATTGCTCATC -TCGAACTCCTGGCATTGGATTGTACATGTTCATGTAGTTGTTCATGTATG -GTGCATATGGGAGTTGTTGAGTGAACATCATATGTGGATGCTGTTGTGGA -TGTCCAGTCGGTTGTGATTGAGCTGGTGGAGTTTGTTGCTGCTGCTGCAC -TGGCTGTTGTGGGGCTTGTTGCTGCTGCTGCTGTGGCTGGTGCTGCTGAG -CAGATTGCTGTGTTGGAAGTGGTCCAGAATTGTTGAACTTGTTCGGCGCC -ATCCTGTCCGTTGGTTGATATGAAGCGGACGAAGTGTCATAGGACAATCC -TCTGTTAGATTGACCATATGACAATGGAGGTGAAGTCGATTTTAAGTTGT -AATCGCCGTTAGGAATTGACGTCCTTTCTGGCTGAAAAATAATCGAGAAT -TAGAATAAATCGTCTTTGCAACAAATTTAACTCACCTCAACTTGTTTCGG -CATAATACGAGAAGAGTTAAATATATTTTCACTGGCATTTGAGATCGAGG -CAGCGGAGGATTCAGTAGAAGGAAGCTGTGGGCTTGGAGCAGCCTCAACA -AATCCAAATGAGTAGTCATGAATGTTCGTTGGTGCAGTTGTGCCAACAAA -TTCCACTCCAGGATCAGGAATAATCTGGACTGGTGCTGCACTTGGAATTG -GAGATAATCCTAGTCCTGGTGCTTCACTCAATCCTATTCCAAGATCCGTC -TTCAGTTGAGTGGTCCATGCTTGATTTGGTTCTGGGGTGCTTTGTACATT -TTCATCGTGATGAGTCGACACATTAGGCGTCTGCTCCTCAGCCAAAACTG -ATGATTCACTGAAAATTAAATTTTTAATAATCTAAATACAGGGACAGAAC -AACTTACTTTTGGAAGAAACCATCTTCTTTCTCCGGCTGATGCGAAGTTT -CTGGCTCGAAAAATACTGGCGCTGCTGCTGGCTCTTCTTTAACTGGTGCA -ACTGACGGAAGTGGAGGTTGTGGGGAGAGACTCCTCCTTGGCGGAGCTGC -TGGTTGAGGATTCTGTGCCTGGTGCTTTCGGAGTGCTTCTTTGCGATGGG -CAGCTGCTGCTACTGCAGCAAATGAGATCGGTGCCGGCGCAGAAGATGTG -GGAACAGTGGCGGTGACGGATTCCTCTACTGGTGGTTGAACTTCGGTGAC -TGTGGTATCCACTTTAGTCTGATTCTGAAAAAAAAACACGTTTCGTCATT -TTCCTTCTTCAAAAAATTCTTACCTCATCAAGATCAGCAGTGAACGCATC -TGGCTCAAGTGCTGATGATGGAGCAACAGCTCGAGAATATCCACCTCTGG -CGCCACCTCTTCCACCTCGTCCAACATACGGTTTTTCAAATCCTCCTCGA -GTCGAGCGTGGTGCTGCTCCTTCCTTATTATCACGGTTATCCCGATTATT -ATCTCGGCTTTCTCTTGGAGCTCCATTGGATCGCCCGCGGCCTCCTCGAT -CGACGAAACCGGTGCCTCCACCTGAAAAAAACATATCAATATTTGATCTA -TTTCAATCAAGCACGAACCTCTGCCTCTTGCTACAAATCCTCTGTTGTTA -TAACTGCCCTCTTCCGGCTTCTTCTTTTCCTTTTTGGCTCCTTTCTGTTC -AGTCCACGAGTCAAGTTTATCTCCAGCATCCAGAATGTGATCGATTGCGC -CGTAAAGATTGTTGTCAGTATCCAATAGCGCTATCTCAGCTTGTGCTTGT -GTACATCCGGTGGTTTCGATAATCTGAAAATGAAAAAGACATGAGCAGTG -AAAAAACCCCTCTTGGGAATGCGCGAACACTTTAATTAGCCCAAATGAGT -AGGACATCTGGGTACTCTTACTCTCGCTGCACCATCTCAAGCGCGGACAC -CTGCTTTTGTCCTTTTATTTGCCATCTGGCCCCGTCTTATCGATTCGAAA -TTCCTATTGACACTGAAAGCGGACACTAGAGAAGTTCAAAACAACAAAGT -CACGTGCGTCATCATGTCGGTGTGTGGCGAGCGTTCGCGTGATGCAAAGA -TCACTATTTTCAGGAAAGCGTCATTTCCAGCTTGGAGACTTACCGTCTTG -ATCATAAACTGTATGTCCTCCTCATTTCCGGAATTTCCTTCCAGTGTGAG -TCGTGCAAGTCGCGCTTGATCGCTGGTAGCTTTTTTGTCGCCTTTAATAC -CCATTCTGAAAACAAATTATAAATAAAAAGGGTCAGTCATGTGAACGCAA -GAATGGAATGAGAATCACGAGAATACAACTATCAAAGGAAGGTTGAATGA -AAGGAAGGTCAAATAGATGACAAAAGTAGGAAAAGAACGAAATATGGAAC -CTTCCAGATCAAAAAAACATTATCAAAAGAAAAGCCTCGCACAGAAGACT -CTAACGAACATGTTAGGATGAAGAAATATTTCAGCAATACATCACGTTGA -ACTTTGGAGGATATTCTAGAGAAGAAAACCCCTACATTTTACAATAATTT -TGAAATGGAATTCGAATGAACTGCTATACAATGGAGAATCCTATTTAGCG -ATGATAAAGTGTAGGCTTGTTACTAGATTGAATAAAAATTTCGAAATGTA -ACAATACATTGACTGAAAATTTGGGTATTTCAGAGTGTGATATCACAAAA -ATCAATATTTCCACTAAACTCAAAAGTTCTTACGCTGAAAAATCATTAAA -AAATTGAAAAATCACCGCAAGCTAGACTAGAATCGCGTTCAAATCTCGCA -AATTCCCGCAGTTGAAAATGCGGGCGACCGCGACGCGAGCCGCAACGCAC -CCCTCCAAACATGCGGCATGGGTCTCGCCACGACCGAAAGTACGGTCACT -CTTGGCAGTATAAAAGGCGACCATTTTCCGCTATTTTCCGGTAAATTTTC -AAATGAAACTGTGTTGCGGAGGGGGTTTTCCGCTAATTTTGCGGAAATTT -AGCTATTTAATGTGAAAATGTGAATAAAACAAAAGAAAGTGGGGAGGAAT -AGCAAGGAAACACACTGTTGAACCCTGGGAATTATCGATTTTGTATGAAC -TCTTCTTTTATGGCGTCGAAATTATCGACACGAAAACTCAAAACCTTGTC -ACATTTCTGAGAGAGAAATATCATTTTCAGCACACATGAGTCTTCCCAGA -TTTCGACTCGTTCAGGGAAAGGCGATCGGCGAGCGATCAACGCCAGGAGT -CAGCACACCAGAGCCGGTAATTGTTTTTTTTTATTTCAAAATTTCTACAA -CAACAAAAAGAACTAACAATAATTTATTCCTTTGATTCCAGGCCCCTCCG -CAAATAAAGCAGGAAGTCGACTACCAAGATGCTCATCAAATGGCTCCGGA -ACCCGTGGAAGCACCCCGTAAATATTTAAAAATTTAAAAAAGTTAGAAAA -AAAATTTGAATCCCAATTTTCAGAGGCTCAAAACCATCAAATGCAGCCGC -CTCGTCAACCTATACAACAGCAGATGCAGCATTTTCAGTCACCATCGCCA -ATGGCTCCACAAGGGCCGCCCGGGACTCCACAAAACTCTGCAGCGGCGGC -CGCCGCTGCTTCAGATGACAAAAACGTGACAAAATGCGTCCGCTTTCTGA -AAACTTTAATTAATCTGTCGAATAACGATGATCCAGAAATGCCGGACAAG -GCCGCCCGTGTCAAAGAGCTAATTCGAGTGAGGAATTGAGCGAAAAACGC -GATAAAAACCGGACAAATTCGGATATTTCAGGGCGTAATTTATCTGGAAA -CGACGGCTGAAGAGTTTACACGAAATCTGCAACAAGTGCTCAAATCTCAG -GCTCAACCGCATCTTTTACCATTCCTTCAGAATACTCTTCCGGCATTGAG -GAATGCTGTTCGAAATGGTTCGGTTTTATGTGCAAAAAAATTAAAATCGA -CAAAAAAAAAATCATCGAAAAACAGGAAAATTTGAGTTGAAAAGCAGCGA -AAAACTTGAATTTAACATAAAAAATTGCAAAAAATCCGTTGAATTACATT -TTTCAAGAAATTGTGTAGAAATTCCATGAAAAAAATTCAAAATTTCCAAA -TTTTTTGGCTATTTCTAGTCAATTTCTTTAAAATTCCATTTTTGATAGCG -AAAATTATCAAGTTTCTAACAATTTCAAGCTGTTTTTGGTGATTTTTTCA -ATTTTTCGGCTTTGAAATTCCATTTTCCGGAGTATATTGTCATAATATAT -CCGAGTTCCACAAAATTGAGCAAAAAAAATTAAAAATTTCCCTTTATTTA -AAAATATTTTCAGCTGTCAGTAATATATGGATTTTCCGCAATTTTTCTCA -CAATTTTGAGCAAATTCCTGATTTTCAGCCAATTTATAAGGATTTTCACC -CATTTTCATAATTTAGGGCTATTTTCAGCTGAAAAATTGTAATTTAAAGT -TTTTAAAATTTTTATAGATTTTCTCAAATTTCAGCTCAAAAATTCGATTT -TCAAGCGCATTTCCAGGCAATTTATTAAGATTTTCACCAATTTTTTTAGC -TTAAAATTTAAAATTTCCACATTTTTTGTCTATTTCCAGTAAATTTCTTT -AAAATTCTATTTTTGAAAGCAAAAATTATCAAGTTTATCGCACTTTTTCA -ATTTTTCCGGAGTATATTTTGGTAATTTATCCGAGTTCCACGAAATTGAG -CAAAACAATTATTTAAAAACTTCCCTTTATTTAGAGCTATTTCCGCAAAT -TTTCTCGCAATTTTCACGCAATTTTCATAATTCAGGGCTATTTTCAGCTG -AAAAATTGCAATTTAAAGTTTTTAAAATGTTTATAGATTTTCTCAACATT -CAGCTCAAAAATTCGATTTTGAGGCGCATTTCCAGGCAATTTATGAGGAT -TTTTACCTATTTTCTAGATTAAAAATCTTTTTTTTTCCTCAATTTTGGAC -TATTTTCCCTAATTTTCAAATTTCCAGGCACTGCATCAGTTGAAGGCGTA -AATCCACCGCCTGGCTACGTTTTCAACAATGGAAGAACCCCAGGACCCCC -TCAGCCACCTCCACCTCAACAACAATCCCAGCAGCAGCCACCACTAGAAA -TGCGTCAAATTCCGAATCCGAATCAAATACCCCCACAAATGGTTCAAGGG -GGTCCCCATATGGTATCTGTAGGCGCCCGGCCAATGATCAGGCCTATGGG -CCCCGGCGGCCCAAGCCCAATGGGCCTACAAGGCCCCGTACGAGGGCCGA -TGGGACATCAGATGGTCCAGATGCATCCTCCTCCCCCACCACAGCAGATT -CAACAGCAGCACCCGGCTCCCCCTGTAGAAATGGAGGTGGAAGAGAATTT -ACAGCCTACCGCGGCGGCCACGGCCACGAGGCAATATCCTGAAGGATCGC -TGAAATCGTCGATTCTGAAGCCGGATGAGGTGCTGAATAGGATCACGAAA -CGAATGATGTCATCGTGTTCGGTGGAAGAGGAGGCGCTTGTCGCGATTTC -AGATGCTGTTGAGTCGCATTTAAGGGAACTTATTACACTGATGGCCGGAG -TTGCAGAACATCGGGTGGAGAGTTTGAGGTATTGAGGAGAATTGATTTTG -CTTCAAAATACGGCAGCGAAAAAAAAATTAAGCAAAAATAAGGAAATTAT -TGAAGAAAAATCGTCTTAAAAACAATTTTACATTAAAAAAAAAGATTTTT -AAATTTCAAAGGTTCCGAACTATTTATTAAAAAAACATCTAGATTTTGTT -TTAAAATCCAAACAAAAAACATTGCTGAAACGCGGTAATTTTTTTTCAAA -AAAATATAAAAATCTGAGAAATATTTTCAAAAATATCTCCAATTTTCCCC -TGATTCCGAATATCTATTCGAAAAAATTCAAAAAAAAAATTTCCCTTTAT -ATTTCAGCTTGAAATCGCTTTGTGCATGCACACCATGAGATTTTTCAAAT -GCGCGCCCAGATAAATTCTCATTGGGGCGCACTTGCTTCGTGTCGATTTA -CGGGAGCTCTTCATTTTTAAATTTCTTTTAAGCTTTTTTTTTCAGTTTTT -CAACGAGTTTCCTTGATCTTCGTCGATTTTTTGTCATTTTTTTTCCTGAA -ATTTTGTTTTGTGTCAATTTGAAAATTTTTTAGGTCAAAACTCCTGTGTT -CGTCGAGATCTGACGTAAAAATATAAAATTCCGGGAGTTTTGAGATATAA -AAAAAATATTTTAAAAATTTCAGAAAAAAAACTGACAAAAAAGCGACAAA -ATAAAAGAAACGCGCAAAAAAAAAAAAAAAAAACTTAAAAAAGCACGAAT -AAATTTTTTTAAAAAATGGAGAGCTGCCGTAAATCGACACGAAGCAAGCA -TAAAAAAATGGCTTTTTTCCTAACAATTTTTTGTGAAAAATCCGAATTTT -CCATCCTAAACACTACAAAAGATTCCAGAATTCCGGAGAACTACGTGGCA -ATTGATGACGTCAAACGGCAACTTCGATTCCTTGAAGATTTGGATCGTCA -AGAGGAAGAATTAAGGGAAAGTCGAGAAAAAGAGTCGCTAATTCGAATGA -GCAAGAATAAGAATAGTGGAAAAGAGACGATTGAAAAAGCGAAAGAAATG -CAACGACAAGATGCTGAAGCGAAAAGGAATCGAGATGCGAATGCGGCTGC -AATTGCAGCACTTTCCAGTAATAAAACTGTCAAGAATAAGTTCGTTTTTA -GCGTGAAATTTGCAGAAAAATTATTTTTAAAAAATAGATTTAAAAAAAAC -AATTTCCTGACCAAGGGTGTCATTTTTCGATTTTTCGGTTTTCAAAAATT -CGAAAAATGAAAGTTTCGTTTTTCGATTAAAAAACTGAAAAACCGACACC -TTTGTTTCTGAGATTTGGATTTAGAAATAAGCAAAAAAAAATTATTCAGA -AAAAATTGTTTTACAATGCTGCAAAATCGATGAAAAAATAAAATAAATCA -ATAACTAATTTCTAAAAAATGGAAAAAAATTTCGTTTTTTTCGAATTTGT -ATTTCACAAAAAAAAATTTTTAGAATAAAAATTTTCAATTAAAAAATTAC -TATTTAAAATCACTGAAAAAAAATGAAAAAAATAGAAAATTCAGAAAAAT -AGCGAAAAAAAAGTTTTTTTCCAGAAATTTCGTTAAAACGATCAAGATTT -TAACCCTAAAATTTAGATAAAATCAATTTCTTGTGGTTCTTAATTTAAAA -AAAAAAACAGTACTTTCCAGTAATAAAACTTTCAAGAATAAATTCGTTTT -TAGTGCGAAATTCGCAAAAAAAATTACGAAAAAGTGAAAATAGAAGCTGA -AAGGAAAAATGTTTAAAAAATAAGAATATTTTCGACATTAATTGGTTTTT -ATATATATTTTTTTGTAGAAGTTTAAAAAAATTACTAAAATCACTGAAAA -AATTGAAAAAAATTTTAAAATCTGGAAAAAAAGCAACAAAAAATTAATTT -TTCCAGAAATTTCGTTGAACTATTCGGTATTTTAAGCCTAAAATCAAGAT -ACAATCAATTTGAACAAAATTTGCTTTAAAAATACTAAAAATTCGAAAGA -AATAGAAAAAAAAAGAAATTTTCGAAATTTGGATTTATTGTTAGAGAAAA -GCTGAACACTTACAAAAAATTAATTTTTTACGTTTTGAGAAAAATTTTTG -AAAAAAAAAATCGATTTTTAAATAATTTTTAGAATTTTTTAGAACTATAA -TTTTTGAATTTCAGTGACTTATAATCACAGAAAAAAATGAACGAAAAACA -AATGAACATCTTTTCGGCAAAAAAACGTATTTTAAAAAAAAATTTAAATT -TCTAGTGACTTTGAAAAAAAAACCACATTTTCCAATAATTTCCAGGAATA -AACTAAATTTCTTTGGAGAAATTTGAAATTTATTTCACATTTCGAAAAAA -TTTATATAGAAATAAAAATTTATATGAAAATAAAAAATTTGCAGCTCCTT -CCAGTAATGAAACTGTCATTTGTTGAAAATTAGTTTTTTTTTAATTTAGA -AATTCTCTTTTCGAAAAAAAAGGTTTTTTTAAAACTTGATTAAAAATTAA -TTCATTTTTTTCCAAAATTAGGGAAAAAATAATTTCTAAAAAATTAGACA -AATACACTTTTTTGTTGAAAAAAACAACATTTTCCAATAATTTTCTTTTT -TTTTAAATTGCTTCCACTAAATTCACTTTTTGAAGAAATTTTTTGAAATT -TTTACTGAAAATTGTTGGAAAATTATTAAATGTGCATTTTTTTGCAATTT -CCAGTTGATAAACTAATTTCGGTTCAATTTAAAATAAATTTCGAAAACCA -ATTTCAAAAAATTCATTTTTTACAATTTGTTTTTGTTGATAAAACGAGCT -AGTTTCTACCAAAATACCGCTTTTTTACATTGAAAATTTAAATTTCAGAT -GGGAAAACACGGGCGCCGCAACGACAGCACCTCGTCCACGAACAGTACGT -GTAACAACTCGTGATCTACATCTTTTAGTCAATCAGGATAGCCGATTCAC -AGGGTAGCGATTTTTTTTGTTTAAAAAATTTTTTTAAAAAACACCGTATT -AAACATTGATTTTTATTGGAAAAAACTGATTTAAAAATTTTTCAAAAAAC -TTTCAAACGAATGGTAGTTTTTAATATTTTAATTTTAAAAAATTCCAATA -AAAATCAATTTTTATACGATTTAAAAAAATTTTGAAAAGTTATCCAATTT -TCTCCTAAAAAAACTCATTTTTTTTCCAGAACATTCATCCGTGAAAAGAT -GTCATACGGTGGTCCGGCAGTCGATACAACTATCTGAACTAAAGAAATCT -CATGGAAAAAGGAGCGAAAATTCTGCTTTTCTCGTTTTCTTTTTTTAAAT -TTAATTTTATTTTTCCACAAATTAAAACAATCACTTTTTTCCAGTCAAAT -AATAATTATTTCTCATTTTTAAACGAAATGCTAGACATAAAAAAAAGCTT -CTTTTTCAGCTTTTCAGCCAAAAATTTCAGATTTTTCAGAAAAAATTCAA -CAACAAAAAATTGGCAAAGTGCAAAAAAACCAGAATTAGATATTAAAAAT -ACAGGAAAAATCGAGAAAAATGAGTTACAATTCAGAAAATTAGGCAATTT -TTTTTTCAAAATTTCTCAAAAACACTGAAATTTCGGTATTTTTTTCTCTA -CTTGAGCACAACCTCGTGTTGCACCAATCGAACATAGTCTTTGAGCGTCG -GTGGAAGTGGAAGCTCATCGATTATTCGCTGATAGACACCGTCGGCACCG -GCGATTTCCAGATTTCTACGTTGGCGAAGGTGGATGGCGCGCTGGAAAAA -TTTCTAATTTCGAGCTGAAAACTCTTTTATGAAAGCAAAATTTCATAGTT -TCAATTCAAAGTTCGAATTCCTCGCAAAATTTCAGTCGGAAAACCGAAAA -CTAGAAGTTTCTTGCTCGAATTTGAAATTTCGAGGGGTACGGTATCCTCG -AAAGTACGCAAACACCGAATTTTGTTTTTTTGAAGTTTTGGCGCCAAAAA -TACAATACCCGGGGTCTCGACACGACAAATTTTTAAAATTTTTTTGAGTA -CTGTAATTTCAAACAAAAAGTTTTTTTTCGAATAAACTCGAATAATACGA -TAAAAAACATATTTTAATAAAAACCGTGGCAACGAAAGTTTGAAAGTACA -GTACTCTCTTCAAAGGCGCACACCTTTTACGCATTTAACTTTCGTGGCGA -GACCCCGGGGATACCGTAATTTTTGACTCAAAATTTAAACAATAAATCCG -TTAAAATATTAAAAAATTTTTAGATATTTTTCAAAAAGACTGTCGAAAAA -TTGTTTTTTTATAATTTTTAGAATATTAACAAACAGTTTAAAAATTCCAA -CAAATTTTGTTTTTCATACCGAAAAGAAGAAAAATGGACAAAATAGTAAG -CTATTTTTGTGTGTCAAAGTGTCTTATTTCGGCTTGATCTACGTAGATCT -ACAAAAAATGCGGGAGAAGAGACTCAGAGTTCTCAACTGATTTCGCATGG -TTAAGAACGTGCTGACGTCACATTATTTTAAGGCGAAAAAATCCCGCCTT -TTTTTGTAGACCAAACCGTAATGGGACAGCTTGGCACCACGTGACACCCC -CCGATTCTCACCTGTTCGTGATTTTGGCGAACTGCCATTTCTTTCAAATA -ATCGTCTAGCGGGGGACTCGATGCTGAAAAAAAAGTTTGATTCGTTAGAG -GAGCACAAAATTCTGAAAATGCGTATTGCACAACATATTTGACGCGCAAA -ATATCTCGCAGCGAAAACTACAGTAATTCTTTTTAAATGACTACTGTAGC -GCTTGTGTCGATTTACGGGCATCGATAGAATATTTTTAAAAAAGAAGAAA -AAAGAGGGAATAATACGAAGAAAAAAAGGAAAAAAATAAATTCATTTCAG -AAATCGAGTTCGTAAATCGACACAAGCGCTACTGTAGTCATTTAAAGAGA -TACTGTAGTTTTCGCTACGAGATATTTTGCGCGTCAAATATGTTGTGCAA -TACGCATTTTAAGAATTTCCAGTTTTTTCAAACCTTTAAACTTACATTTT -CGCGGTTTTTTGGCGCTCTCGGATTTCGGGGAACGTATACGTCGGCGACG -TGACGTGGTTGAAGCAGGGTCCGTCGAACAACATGGCTCTTCGTCTTCCG -ATACTTGGGATTCTGTTGATGTTGACGGTGATTCCTGAGGTTCCTCTAGA -GCATCTGAAAGCTCTTGCTCATCTTCTGATAAATCTCCATTGGGACGTTC -AACCAGGCCGGTGGTGGAAGGATCATTGATGTTCGGAATCATTACAATCT -CCATTCTCGGAGTATTTGGAGTTTCTGGTCGAGCTATCGAGGAAAGTATG -CGATGATGGCGGGGTCTATCATGATTAATCGTCCATTCGAGCACATATGC -TGGTGCTGGAAGGATTGAAAATTGTAAAAACTAAGATTTTTTGGCCAAAA -AAATAATATTTTCTCAAAAATTTTGAAATTCTCGACAAATATTTTTTACT -ACTGCCGGTACAGAGAATGTAGATAGTTGAAGAGACACAGACATCCCGGG -ACCCAAGGGACGGGGCGCGGGATGTCTGTGTCTCTTCAACTACCTGCACT -CTGTGCTGGTAATATACTTTTTCCAAAAAAAAAACCTACATTTCGGAAGT -AAAAATGGAAAATTTCGGAGTCTACACAATTGGAAATTTTAATTTTTAAA -AAATTAAAAATTGTTTTAATTCGGAGTTTTAGACGGAAAAAATTATTAAA -CTCTAAAATTTTTAAAAATCGAAAAAAAACAAGTCTGAGAGTGAAAAAAA -TTAATAAATTTTGAACTGAACATTAGATATTTCGATTTTTTTTTGAAAAT -CATAAATGTTTTCTCGCAAAATTCGGATTTTTTTTACCTGCTCGATTTTC -AGTAGCCGGAGCTGTATTTCTGAGATTGGCACCATCCAAATGTGCTCGGG -GCGCTGCAAATTTGATATGAAATTTCACTAAAAAATTAGGAACTTATACA -AATTTTCTAAAAGAAATACTAATGTTAAGATAATCGAAAGTTTGGAGTGA -CAGAAAAAATTGTTTCAGCTTCTAGAAATATTTTAATTTAGAAAAAAACT -TCCAGAAAATTAAAATTTTTTTTTAGAACTTTTGAACATTTTTCCTGATT -TTTCTTTTTTTTCCATTTTTTGGAATTGCTGGGAATTTCTCTTTTTTCCT -TCATCCCACAGCTTCGCTTCAGCCTAGGCCTAAGCCTGAGCCTGAGCCTA -TGCATAAATCTAAGCCTAAGCCTGAGCCTAACCCTATGCCTAAAACAAAG -CCTGGACCTAGGCCCAAGTCTAAGTCTAAGCCCACGCTCAAATTTAAATC -GACTCAAGTAACTACTTTAAAGTTGGCAGAAATATTTGAATTCAAAAAAA -TTTTTAACCAAAAAAAAAATAATTTAAAAGAAATTGTTTTTTTTAAATAA -AATCAACAATTCACCTGTAAAACCTTGCATTTCTCTCCAATTCAACATTT -CTTGAAGAACGTCAGTTCTTGTTTCATTCCATCGACGAACATGATCTGCT -ATAGTATTTCGAATATTTTGTTCATTGTTTTCTTGTTCTCTGGGATTATT -ATTACGACCCAAATATTGATCCATGACGTCATCCAAGTGATTACGGGTTC -TTTGATCTGCTGGGAATATTTATAAGCACTTTTTTAATTTAAAACATATT -TTTTAGTGATTTTTTTTCGAACTTTTGAATTTTGAATTAAAAAAAAAAAA -ATTAAAAAGTTAAATCCTGAGGGGAGCCAAGAAGTGGGCGTGTTTTAGGA -CATACTCTTCACTTACGCTTTGGTCTACAAAAAATGCGGAAAACTTTTGC -CCAAAAAATGTGACGTCAGCACGTTTTTAATCATGCAAAATCATTTGAGA -GTTCTGCGTCTCTTCTCCCGCATTTCTTGTAGATCTACGTAGATCAAGCC -TAAATGAGACACTCTGACACCACGTGGAAAATAAAAATCGAACATTTTCA -AAAAAATTACTCAATTGATTGTCTGCTGGAGTTAGTTGGTCGATTCTGAA -AAATATTAAAGTACTAAAAATTTTCCTTAGCAACATAGCGCGTTTGCATC -AAGAAAGGCGGGATTTTTCTAAGCCCGCCCTTTAATGGATCATCAATTTC -TAGGAAAAATCGATATTTTACACTAAAAGTGATCCAAGAAAATCAATAAA -TCGGAAAATTTTCCGATTTTCCGTGCTTTTTTGCGAAGATTTATCGAAAA -TGATTTCCATTAGAGCACGCTTGCAATTTTTTTCACCAATAGCTTTCAAA -TTTCTTACGGTCTTGGATCAAAAAGTTGTCGACGCCGATTCAACTCTTCG -AATTGTTCAGCTTGATGCCTTTGAACATGATCCATATACGTATTTCCACC -TTTCATCACCATTATTGATCCGCAAATCTGACGATTGACACGTGGATTGT -AGGCGTGTCGGCGAATGTCGCGGCGGAGTGCCTGACGCGCCAAGTAGGTC -AACGTGCGGGGACCACTAAAAAATCCGGGTTATTGTGATTTCGTGGTGAG -ACCCGAAAATAGTAGAATTTCCTCGTACATCCTGTGCCTAAGCAGGTTTT -CAGTTTTTGATGGGTTGTTACCTTCATACACCTACCTGCCTTTGTGACTG -CCTCCCTGCCTGCCTAAATGTGTGTATGCCTACCTACAGTCTGTTTATCT -GCCTCAACGCCTTCATACCTACTTGCCTACCTTGCTTACATACCTGCCTA -CGCGACTACCTATCGGCCTACCGGTTGGCAAGTAGGAAGGCTAACAGGTA -GGTAAGCTGGCAGGCCTGAAATTTGCAATTTTTGCGAAAAACCGAATTAC -CTTTCGAAAGGCGTAGGCGTTGAGATCCGTTCCTCCTTCGGAAGCCTGAT -CATTGGAGAAAATGTCATTCTTCCAGGGACGTCATACACAGTACGATGCT -TGGAAACTCTTCTGTATCGGCAAACCTGAAAACCTTTAAATGTGGAGGAG -CCAAGAACTAGACGGAGCCTGTGTAAGGAATATTGTTTCCGGAAACACGG -ATTTTCAAATTTTAGGCTCCACCCACTCACCACGCAAAATTTCATTTTTG -GCCCAAAAAGTAAATGTGCAGAAATTGTATTTCAAATTGTAGAAAAACCA -AGAAATGGGTGGAGCCTGCCTGCCTGCCGGGCTCCGCCCACTTCTTGCCA -AACCATACCCCCTGTATACGTGGCATGACGAGTTGTCCTCCAACATTCAA -CATTCCAAGCATTCGTTTCAACAACTGAGAATCATCGGCAACGAATCCGA -CAAAAATTCGATCATATCGATTTTGATGAGCTTCAAGAAATTTGACATCG -GTGATGTCGCACACTTTGAGCTCCGGCCGAGCCCAGCCGACAGAGCTCGC -TTCGGGTGTAGTTATCCATTGATCAATGCATGTTTCCGAGTAGGTGACGA -GATTCTCGTAGAGTTCGATCCCATGATTTATACCAGTTTCACCTTAAAAA -TAGGGTTGTCAGGCCACGCCCATTTTTAAAAAATGAATTAAAATTTTCTG -AGAAAAAATTTCAAACTTTGGTGGGGCATTAAATTTTTTCACATAAATTT -TTTCGGCGGTAAATTCAAATTTTTTAAAAAATTTCTTTTTTTTTTGGCGG -GAAATGTGCCGCAAATCAGAAAAACTGAAATTTCTACAAAAAAAGTTGGT -GGCCGAGTTTTCTCATTTTGTGGTCAGAAAACTCGGCCACCGATTTCTTT -TGCGGCCCTGTGATTACTTAAAAAAATCGGTGGCCGAGGATTTTTATTTT -CGCGGCCACAAGTAATGAAGATTGCACAAAATTGATAATAGGGAAAACGC -GGCCACGAAGTCTAACATGTGCCACGTGGCCGTTAAAAAAAAGCCGGTGG -CCGAGTTTTATTATTTTTCTAGGCCACGTAACCAGAACTCACCCAATAAA -ATGCCAGCAATCGTACTTAAATACCCTGAACCAGTTCCAATATGAAGAAA -CGAGTGTCCTTTACGCAAATCCAAATAATCGAATAATTTCGCATAAATAT -CAATTGCTCCAACACGAAGTGCTCCCGGATAGAATGGACCGCCCGGTTCT -GTGGAGGTCAACGACGGAAGACGTGTAAATTTCCGTTCACTAATCGGAAG -AAAATCGGATCGATCGACAAGTCGAAAGGCTCGTTCGATGTTTCGACGAC -GGATTGTGTCGTTTTTTACGAGAAAATCGATAAGATCGTCGTTTTGGCTT -TCACTATTGCCCATTTCTGGAAAATCGATTTTTTAAAATTTTAGATTTAT -TTATTGATTTTAAATAAATAATTAGAGAGCAGTCATGTGTTTTTCCTTGT -ATATTTACGAGAGAAATCTCAAAAAATTATTCAAATAGGAAATTTTACGC -CAACAATAAAATGTAGAGTGGTGTGCGCCTTTAAAAAGTACTGTAATTTC -AAACTTTTTGGCGCAAAATTTTAGAGTAGTTTTCTTTAAATTAAAAATTC -AAAAAAAAAACAAATCAAGATAAATACAAAAGTTTGAAATTACAGTACTC -TTTAAAGGATCACACCATTTTGCATTTAAAAAAATTTGTCATGTCGAGAC -CGTAATTTTAACGCAAAAAACGTGAATTTTCGCGTCTGTGTAAAAGAAGT -TAGTTAAGGAGAAAAAACAATTGAAAAATCAACAAAAATTGAACTTTCAA -CGGAAAATCAAAAATCGTTGCGAGTCAATAATTTTTTAGCTTTGAGGAAA -ATAACCCTTAAACTCAAAAAACAATTAATCGACTCAACATCAAAATTTCG -TTACAAGACCCAAATTAAAATTTTTTATTTTGGGATAATTGCTCCTAAAA -TTAATAAATTCCAGAGAAACGAGTAAATCGTGGCGAGACCCACTAGCGTG -TACCTTTAATTTCGAAATTATTTTGGGCTGTTCATCACGAACACACGTGT -TGCCTAGCTACCAAATTCAAAAAACGAAAAACAAAAAAAACAGGTTTCTT -TGAAATGAAAAATCGATAATCAGCAACGTGGCAAGATGTCTCAAATTATT -GGAAAAAAAAAACGTTGAAATTCTCAGAAAACGGACCGTTCTGTGGCAGA -ATTGTGAACGGCGTGCAAGGCCACGACCCGTGGAGAGCGCGTGAGAGTGC -AGAAAAAAGGAGGCGAGAGAAAACGGCTGACCCGTGGATAGACTTTGTGG -ATTCAGGAGACGCAGAGCGACCGTGAGAGACCCAGAAATATATGCAGAAA -GTTAAGGCGTGCAATAGTGTTGGAAATTATAATAAATGGGTACGGTAGGT -ATGACCTTTCGGGATCTTTGTGGGTCTCGCCGCGACGAGTTTTCAAGGTG -CATAAGGTTTTTGCGATGGGTCTCGTCACATAATTGTAGATTAAAATTGT -TGATTCGAGATAAATGGAAATTCGAAGCGTCTAAAACAGTTAGAACTTTT -AGTTTACATTAGGTTGAGCTCAACTGTCCAACCCCGTCAAACTTTTTCCA -CTTTTTTTTTACTTTTGCCTTTATGTCCTTTTCGGCCGTTTTCCTGGGGG -TTTTTACCAGACTACGAAATATCCTAACTTGGTAAGCCTCAGCCTAAGCC -GAAGCCTAAACCTTGGCTTTCAACTATACATACACATTTCCTCCTTTTTA -AACGATATTAATTAATTTACAAAACACCAAAAAAATATACAAAAAATGAT -TTGAATTTATGAGTTTCCCGCTAAATACCTACCGAGACCCAACTTTTGGC -CGTGGAGCGCGCTTGCACTTAAACTTCAATTTTTCACATCCCCATAATAA -CTTCCTTGTTTTAAATTGTTTTTCCCTATATTATTATTATCCTTATCACG -AGATGCCCTTGCAAAACACATTGTAAAAATAGTATTCTCAACTGATAATA -ATATTTTGTGTACCCCACGATAGTCCTTCTGGACCATAAAAATATTGATA -ATTACTGATAAGCTTTCTCTGTGGTTTCTGTAGTTTTGGTGATATTTTGG -GCAACAAATTTATATTATGGAAACACGGAATTCTGAAAATGCGTATTGCG -CAACATATTTGACGCGCAAAATATCTCGTGGCGAAAACTACAGTAATTCT -TTAAATGACTACTGTATCGCTTGTGTCGATTTACGGGCTTGATGTTGGAA -ATTAATTTATTTTCGAATTGTGACAGCGATATTCAGTTTTCCTTTGTTTT -TTTTTTTCGTATTATTTTGTTATTTTTATGCTTTCTTTTAATATTTTATC -AATTAATGAATGATTTCCGTAAATCGACACAAGCACTACAGTAGTCATTT -AAACAATTACTGTAGTTTTCGCTTCGAGATATTTTGCGCGTCAAATATGT -TGTGTAATACGTAAAGAAAGTTTGAAATAATTGTTTTTAAATAATTTCTT -ATTCATTCACTGTCAATTCTCACCGAAAAAAAAAATCCAAGTTCCTCCCG -CCAACTTGGCACGATGCCAAAAGGTTCTCAGGCCCATTCATGTCATTCAA -TCCATTCAAATGAACGACTTTTCGTTCAGTTTAGGCTTCTTCTTTTTCCG -GTTTAGTACTTTTTCAAACCGAAAAAAAAAATCCCAAATTGAATGCAAAT -GTGCTCTATTTGGAATAGACTTCACCCTATTTCGGAATTTTTTCCGATTT -TCTGAAAATCTTTAACACTTTTCTAACTGTTGCATTAATGACATTTTTCT -AGAAATTCTACTGCAAACGCGCTCAGTTGCGAAAGTTTTTGGGTCTCACA -ACGATTTCGGAAGAAAAACGTTTTATTCGTTGCGAGACCCGGAAGAGCCC -GGTGGAGCGCGTTTGCAATTTTTTTGGTTTGAAAATTTTGCGCAACGATG -CTCCAAAATAACACCTCGCGAATTTTATCGTTTTTTTAAATTATGACTTT -TCCGGTCCCAGAACGAATTACAAAAGCAATTTTTATGAAAAATCGTTACA -AGACCACAAAAAAAAGCGCAATAGAGCGCGTTTGCACCTTTTTTTCTTGG -AAAAGTCTCGTTTTTTTCTCGGTAAATTCACTGTGACATTGACCTTTCTC -GAAAAACGAAAAGTGTAATGGAAAGTGAACAAAAGTGACAATAATCTGGT -GAATTGCGTTTTGTTGTAATATTTTTGTATCTTCTTTTCTTTTTTTAATC -TGCGAAAAATAGAAAAGTTTTGGAGAGAAAGTGATTTTCGACGAAATTTT -CCTGATTTTGCTAAAATTGAACAAAAATTGTCATCATTTTCTGTGGGGTT -TCTCAAATGTTTTCTTAAAATTTATGCGCCTTTAAATTTGGGGGATTACT -GTAATGTTTGTATTTTTCAATTTTGTTTCGGGAACACAAAATTCTGAGAA -TGCGTACTGCACAATATATTTGACGCGTAAAATATCTCGTAGCGAAAACT -ACAATGGATTAAAATTTAATGAAATATCGTTATCACTATTCGAAAAGAAT -TTCATTATGAAGCCCGTAAATCGACACAAACTCTACTGTAGTCATTTAAA -GAATTACTGTAGTTTTCGTTACGAGATATTTTGCGCGTTGTCCCCGTAAT -AGTTTAACTTTTACCACGTGGCCGCCAGAAGAAAAACTTCTGCTACCGGA -TTTCATTTCCTCGGCCACAAACCCTTTTGACCCCCGAAAAAGTACATAAA -AACAATTCCGGGGACTGGGTCTCCAATCTCTCGCCCCCACTCACTAACAA -GGGGGACACCCTCAGAAACGAATGCCGTCTAACCGTCTGCACCCTCTCTC -TCGTCGCTCCAAATTCTTGGATCAATGCCAACTAACACGCAGTGTCCCCC -CTCCTCCTTCATCCACCCAAATGTTTCATCACTTCCCGGCCACCGCAGGC -TTCTCTCTCTTTCTCTAAATCTCTCATAAACTACTGTCTCTCTCTCTCTG -CTTCTTTTGCTCAATTGTTCTTCTTCATCACTACTATTTGCTCAATTTTC -GTAAATATTTTATTTTAAAATATCCCTTTTTCCTCCCCCCGCCTCTCTGC -TTCTCGCTTGACGCGCCACATACACTAAAAAAACCGGTTTTTTCTATCTC -TCTCCGCCCGATCATTGAATAGATAGTGTGTGCTGTACATCAAATTTCCA -TGGAAAAATCGCGCCGAAATTCCAGAAAATTCCACTTTTTCTAGAATTTT -CAGCGATTTTTTTCGGTTTTTGAATTTAATACAAAGCGAAATTCCGTGAA -AAATTAATTTTTCCTCAATTTTTGACGAATAAAAAATATTAGTATTGTTT -TTTTTTCAAGAAAGTGTGATTTTTTCACAATTTTCTATGGTTTTTACGGA -GAAAATCTTGAAATTCCACAGAAAAACTTGACAAGTCTTTGAAAATTAAT -AAAATTTCACCGTATCTGCCGATCGTTGCAAGACACACTCCACAAAAGAA -GTCGTGCGCCTTTAAACTGTGTACGGTAACTATATTGATTTAATTTTTTT -TTTCGATTTTGCGTCTATTTTTCCAATTTTTCTCTGATTTCGAACGATTT -TTTGCATTTTACCTCAAAAAAATTAATTTATTTAGATGATAAAGTGGAAA -TTGCTGATTTTTTACAAAAAAACACTTAAAAAACGAGTTTTCTCATCAAT -TTCAGTTGTTTCTGGCATGGCTCATTGTTTATCGACACCTGCTTGTTTTT -CTCCTCCTCTCCCATCAATTTTATGAGTTTTTCTTCGAAATTTCTCCATT -TTTCCCGTTCAAAAACCGCCAAAATTCGCTTTTTTTTTTCCAGAATTCGC -CTACTATAGCACTACTAGATGTGTTAATTTGGAATTATTTTTCAAAAAGA -AATGTATCCGGACGGGCTAACTGAAAATGAGAAGCTCAAAGTGAAGGAGC -TGTGCACTATGGTCAATATATCCGATGAGGATGCGATTAAATTGTTAAAA -GGTGGATAATTAAGCTGAAAAGTGGAAAAAAAAATGCATTTTTTACCTAA -AATTTACCTAAAAATTGGACCAAAACGTCATAAAAATACTGAAAAGTCAG -AAAATTGTCTAAAAAAACTAATTTTCGCTAAATAATTCCAGAAAACGACT -GGGACATTGCAATTTCATCGCGAAGAGTGTCGAAACAAGAGGATAAAACA -TTGGTTCCGGGCACTTCGAGAGGTAAATTTTTGAAAATTTTCAGAATCAA -ACTGAAAAATAGATATATTGTGTGAAAAAATCCATTTTCGCCGTAAGAAA -AGTGAATTTTGAGCGGTTTTTCAAATTTTAAACTGAAAAAAAAAATCAAT -TTATCTGAAATTTTGCTCTTTTCGGCGGGTTTTTTCTCAAAATTTGATGA -AAAAGTTCTAGAAAAACGACAAAAAAGCCTTTAAATGTACTTTTTTCTGC -GATTTTTTATCTTAAATTTAAAATTTTGCGCGTCAAATCTGGTGTTTTGA -CTCCGCCCACTAAATTTAAACTTTTCGTGAAAAAAAAATGTTTTTCTCCG -ATTTTTAATTGTTAATTTAGGCAAAAAAATACAAAATTTGCCCAATTCAC -CTATTTTTTCCAAAAAATCACAAACTTTGCGCGTAAAATCGGGTGTTTAT -GCTCCGCCCACAAAAATTTCTTAGAATTCGATTTTCGGCGGATTTTTTCT -CAAAATTTGATGAAAAATCTGAGAAAAACTACAAAAAATCTTTGAGCTTT -ACTTTTTCTCTGCGATTTTTATCTAAAATTTGAAGTTTTGCGCGTCAAAT -CTGGTGCCTTGGCTCCGCCCACAAAATTTGAAGTTTTCGTTTAAAAAAAT -GTTTTCACCACTTTTTCGCCGCTTTTTCGCCTGAAAAATCCCAATTTTTT -TGCAGAAGAAATCGATTTGGATCGATTATCGAGTCGTCTACGTGTTCACG -GATTAGCCTTCTATCTTCCAGATTTTGGAGGTTTTCCTAATGAATTTCGA -ACGTTTTTGGAGAAGGATTTGATAGAGACGCAGACACAGAAGAGACTGGA -GGCGTCCAGTAAGTTGTTTTCTGGAAAAATTGAAAAAAAAATTGAATAAA -AAAAATGATTTTTTTAATCGAAAAAAAAAGTTTTCAAAAATAAAATTGGA -AAAGGTGAAAAAAATTGAACAATTAAAAAAGAGCGACAAATGAATAAAAA -AAAACTTTTTTTTTTTCGAAAAAAAAGAAAACAAATGTTTTTTAATCGAA -AAAATAAAAAACGAAAAAAAAAGGAAATTTTTTTTACAATTAGAAAAAAA -AAATTAAAAATGTATTAAAAATTTTTTTTTTTGACATTTTCTTTCGCTTT -TTAATAAGTTTTGACTAGCGGGCCCTGCGGGCCCGCCAGTTGCAGGGGGT -GTAGGGCGAGTCCCCCAGTCGGGCGTAGGTTCTCGGCTTCGCCTCGAACC -TGTCAGAGGATTCGCGACAATTGCAGTGAGTCAATGGGAGGAGGGGAGAC -CCACTCATATTTTATAAAATCGAACATTTCTATTTGAATCCCGAGCACTC -ACAAAAAAACGAAAAAGTTTGTCAGTTGGGGGAATCGAGCAAAAGAGCAA -ATTATTCACAGCCATACGCACTAACCACTCGGCCATGCGGGAGAGACCTG -TCACAGAAATGTAGGGAAGGAAAATTTCTGGGGGGGGGGGGGGGGGGGGG -AGTTGTCTTTCGATTCCGTTTTATTCAATAATGACAATTTGGGGAAAGAC -GTTTGAAAACCGTTTATCACTGATAAGTCAGCAGGAAAACAATTTTTTGA -AATTTTTTTATAGCATTGTACTCATTATTTAATTCCCGAAAGAGAGCCGA -AAAGTTGAAGGTGTTATCTTGTAAATTGGTTTATTTGAAGAAAAAACAAG -TTTTGGCCTGAAAATTTTGAAAAAATAATATCTCTTGGCAGAGCATTGCT -AATGCGACGAAACTCCAGCTTCCATTAGATAAAATCAAAAACTATGAATC -AGAAATACATTCCGCAAAACTTTAGTGGAAAAAATGTTCAGGAGACCCAG -GAAACCACTCCCCCCAGTACTAAATTTTTGAATTATTTTTTCTTGAAAAA -TTTTCCCACTGAACTTTTTACAAATTTTATATGTCTCGATGCGTCTTGAT -GAGACCTACACGTCAATTTTTGGAAAACTAAGAAAACTTGAAAACTGACC -GAGTTATGATTGAAAAAGTAGATTAGCAAAGATGGGAAAGTGTGCAAAAT -TTGGCACTTATTCGTCTTGCTCGGCCGACTCATAGTACTTTTTCCAATTC -TGAGTTAAAAATCGTGTTCAGCGTACTTTTGTACGTGGGATAAAGAAAAA -AAATATCAAAAAAGATGAAGTAGAACTTGAGATAAAGACGAAAAACTACT -TTTTCGGAAAAAATTTTTTTTTGGCAAAATGGCATTTTTTGGCCTTTTGT -TTTATCACAACTTTTTGCCTTTTGCACTTATGAACTCAAACTTTCTTTCA -AAAAATCCACCTCTCTGAGTAGTATCTTGCACATAAATTTGGAACAAAAC -CGAGCAAAACCCGAATTTTAATTCAATTAAAACATGGTTTTTTGGGGGTA -AAAAAAGCAACAAAAAATTTTTTCAAACTGGGGAAAGCCGCCCTGAGCTC -AGTTTTGCTCCAAACTTTGTGCAGTTTTTTGCTCCCCCGTGGGGTGAAAT -ATTTCTAGTAAGCTGTCAAATATTACAAAATTCAGTCAAACGGCTCTGGA -GTTATTAATGAAAACGCAGTGTGACATTTTTTCGCAAGCCAAAAAAAACG -CGAAAAAACGCGAAAAAGGGGCGGAGTCTGTACACTCGGCATTTATTAGA -GGCTGCTTGGCAGATTTTGAAATATCGGAAAAACTTTAAAAGTTCTTTTT -TTTCCAGGACACCTAAACTGGTGGCATCAATTCGGCCAAAAACTCTACCC -GCTATCAACTACTGGAGACGGAAATTGCCTTCTTCACGCCGCATCGTTAG -GTAAATGGTTTTTCAGAGCGAAAAATCGGAAAATCGCTAAAAACTTACTA -TTTCCACTGAAAAAATTGTAGAGATCGCTCAAAATTTCACTATTTTCTGA -ACATTTTGATAAAAAACGACAAAACTATTTCAAAACGAGCCCCGAAAATT -GTTTTTTTACTAAATTTTTTTTGGAGAAGTGCAAAAATTTAAATTTTTGA -ATTAAATCTTTAAATCTTCAACAAAATTTAATCGTAAATTTTCAGGTATG -TGGGGAGTACATGATCGTCAGCTATCACTTCGTGAAACTCTCTACGAACT -TCTTACAAATGGCGCCAGAAAAGAAGCAATCCGACGGCGATGGAAATGGG -TTGAGAATCATATGAATCAGGTAATTGGCGAGAGAAGAATCTGTGAAAAA -TTTCTTAAAATTCGGTGAAAAATGATCAAAAATGAGCTGAAAACCGGTCA -CGTAGTTGAAATCCGCGGAATATGAAATTCCCAGAGGAAACAATTTTCGT -GGATTTCAACTTCGCGAATTTTTCTCAAAAAGCTTGAGTAAAAACTCACG -GAGTTGAAATCCGCAGAATTCGAAATTCCCAGAGGAAACAATTTTCGTGG -ATTTCAACTTCGCGAATTTTTCTCAAAAAGCTTGAGTAAAAACTCACGGA -GTTGAAATCCGCGGAATTCGAAATTCCCAGAGAAAACAATTTTCGTAGAT -TTCAACTTCGCGAATTTTTCTCAAAAAGCTTGAGTAAAAACTCACGGAGT -TGAAATTCGCGGAATTCGAAATTCCCAGAGAAAACAATTTTCGTAGATTT -CAACTTTTCTAGATTTTTTGCCAATTTTTTATTACATGTTACAAAAAAAC -GGCTGTAAATACTCACGGAGTTGAAATCCGCGGAATTCGATTTTTGTAGA -TTTCATCTTTTCCAGAATTTTCCAACAAAAAAAACCGGAAAAAATTATCC -GACACTCCATGGAATCTAGTTTTCGGAGATTTCAACATCGAGAACTTTTT -TCGCACATTTTTTTGCATTTTTAAAAAATTTCACCAATTTTCCAATTAAA -ATTTTTTAAATTTCCAGAGTAACGGTCTCGCATTGACCCTCTCGGAAAAT -GAATGCTTGAGTAAAAACTCACGGAGTTGAAATCCGCGGAATTTGAAATT -CCCAGAGAAAACAATTTTCGTAGATTTCAACTTCGCGGAGTTTTCTGTCA -ATTTTTTGAGATTTTTTCTCAAAAAGCTTGAGTAAATACTCACGTAGTTG -AAATCCGCGGAATTCGAGATTCCAGGAAATTCGATTTTCGTAAATTTCAT -CTTTCCCAGAATTTTCCAATTAAAAAAAAACGGAAAAAATTATCCGACAC -TCCATGGAATTTAGTTTTCGGAGATTTCAACATCGAGAACTTTTCTCGTA -GATTTTTTTGCATTTTTTAAAAATTTCACCAATTTTTCAATTAAAATTTT -TTTAAAAAATTTTCAGAGTAACGGTCTCGCATTGACCCTGTCGGAAAATG -AATGGGAACTCGAATGGGATGTTGTACTCGGATTATCATCTCCATTACCC -CGTAAACAAGAGGATAATGGCTCAAATTCCACAGATCAAATCTACGAGAG -TCTTGAGGCAATCCACGTGTTCGCGTTGGCTCATGTGCTCAAAAGACCAG -TTGTGGTTGTATCGGATACGGTAGGGAATTTTAAAATTTTTTAATTCTTC -AAAAATTTATTGAAGAGAACAGTAACAAAAAATTTGGTTACTTGTGAATT -TTACAGAAATATAGAAAATTTTAATTTAAAAAAATTTCGAGATTGGTGAG -AATCAAGGGTGTCAAGTCCCGTGTCCCGTTTGTCCCGTTGTCCCGTTTTT -TGAGTGTTTTTACGGGAACGGGACGTCTTTTGTCCCGTTTTTGAGCGTTT -TCACGGGAACGGGATGTCCCGTTGTCCCGTTTTTTGGGTGTTTTCGCGGG -AACGGGACGTCCCGTTGTCCCGTTTTTAAAATTTTCACGGGAACGGGACA -TCCCGTTGTCCCGTTTTTGTCATTTTTACGGAACATTGACACCCTTGGTG -AGAATAAAAAATCAATAATACACATAATTTTTGGAAGAAAAATCGATTTT -AAAAATGAAGCTTAACATTTTTTTTCGAAAGAAAAAAAGTGTAAGAAGTT -TATCAAAAAAAAAAACATTGAAAAAAATATCTTCAAAAATGTTCAATTTT -GTTTTAAGGTGCAACTATTACAAGAGCACACAATTCTTAGAATACGTATT -GCGCAACCTATTTGACGCGCGAAAACTACAGTAATACTTTAATTGTCTAC -TGTAGTGCTTGTGTCTCGATTTACGAGCTCGATTGATAGAATATTCAAAT -AATTTATTTATCGATTTAATATTCAAATTAGGCAAAAAATGAGAAAAAAT -ATACATGTGAAAAAATTAATTTTAAAAATAGAGCCCGTAAATCGACACAG -TAGTCATTTAAAGGATTACTGTAGTTTTCGCTGCGAGATATTTTGCGCGT -CAAATTTGTTGCTTAATACGCATTCTTAGAATTTTGTGTTCACATAATAC -GGTTTTTCAAAAATTTTAAATCTTCATAAAATTCATCAATAATAACTAAA -ACTTAATCAAAAAAAAATTTAATTTTAGTGTAGTCATCAGAAAAAGTCCA -TCAAAAAAAGTCCATCAAAAAACCATCAAAAAAAGAAAATTGAAAAATTT -GAATTAAAACATTTTTTTCGAATTTTTGAAAATAAAAGTGTTTGAATATT -AAACGTAATTAAAAAAAAAGATTTTCCTTTTTTAGAAAAATCTATTCATA -TTAGAACAGTCGATTTTATAAAAGTATCGATTTTTTTATTAATTGGATTT -TTTGTAAAATAATAATCGATTTTGAAAATAAATTGCTTAAAATATTGTAT -TTTTTGACAGAAAAAATGTAAAAAATTTATCAAAAATAAATAAAATTGCA -AATAATTTTACCTACAAATTAATTGTTTATTAAATAAAGTTTAAATAAAT -TAGAACAGGAGTAAAACGAGTTTTCAAAATTATTCTTTAAAATCTCGGGT -TCTTTTAATTCAAAAATTCTTTTAAAAAAAACTCAATAATTACGGATTTT -TCAAAAATTCGAAAAATTCAGAAATTCAGAATTTGGATAACATAATTCTA -GTTGACTTCCAAAAAAATGATATGTGACTTACTTAAGGTACAACTAACAT -TAATTTTCCAAAATTCTTATGGCTGCTTTAAAACACGCCAATGGGGTCAT -AATGACCGAATATTATGTTTAAAAAAATCAAAAAAAATTTTCTGATTTTA -TATGATTTTTTGAAAATTGGAAAAATCACAGTTTTAACCTAATTATTTTT -GAATTTCTGCCAATTGGATTTGTTCGGTGCAGCGCGCTTGCATTATTTTT -ATTTATTTATTTTATTTATTCTCGTTATTTCACTGATTTTCTTCATTTTC -TATGTTTTTTTTTCTCGGAAAATGAAAGAAATAAACAAGACAAATGCGAA -ATGTTTGTTAAAAAGTAATTGAAAATGCGTAAAACTGTGATATTCTGAGT -TCCGACGACGAAGAGCCTGAAATTAGTATATTTTTCAGTTTCACTCATTT -TCAATTACTTTTAAACAAACATTTCGCATTTTTCTTGTTTATTTCTTCCA -TTTTCTGAAGAAAAAACATAGAAAATGAAGAAAATCAGTGAAATAACGAG -AAAAATATATATAATTCATTAAATAAAAATAATGCAAGCGCGCTCCACCG -AACAAATCCAATTGGCAGAAATTCAAAAATAATTAGGTGAAAACTGTGAT -TTTTCCAATTTTCAAAAAATCATATAAAATCTAGAAAATTTTTTTGAATT -TTTTTATCATAATATTCGGTTATTGTGGCCCCATGGGCGTGTTTTAAAAC -AATTTCCCCACTGAGCGTAGTCCACCTTTGAAATGTTCTCAAAAAATGAA -AAAAAAACGAGTTATAAAAATTATTTTTTAAAAATCCAATATTTTAAATT -AATTTTTTTTTGCAGATTCTGCGAAACGCGAAAGGCGAAGAACTGTCTCC -AGTGGCTTTTGGTGGAATATATCTTCCATTAGAATGCCCACCATCACAAT -GTCATCGTTCACCACTTGTTTTATGCTATGATTCTGCTCATTTCTCACCA -CTTGTACTCATGAGAACAGAGACTAACAATAAACGTAAGCAATTTTTTTT -TTGAGAAAAAATATTTTCAAAATCATTTTTTAACTGAATTTTCAAATTTC -CCCCCCCCGTCCCCCCCATTTTTTTCGAAAAGTGAATTGGAATTTTCCTG -AAATTTGCACAAATTTTTTTTTGAAAATTCAAATGTTCGTCAAATAATTA -TTTTATTCGAAAAATCGACATTTTTCCAAATTGTAATATTTTTATTCTAA -AAATCCAAAATTTGATTTGGTAAAATTTCTGTCAACAATCAATTAAAAAT -CCAAAATTTTCAAAAAAATTGTGATTTTATTCGGGAAATTCGAAATTTCC -TATTTAAAATTGGATAAATCTAAAAGTTTTCGATTTTATAATTTTTAGGA -AAACAAGTTTTCAAATTTTTTTAATTATTAAAGTTTTTTTTTGCAATTTC -ACTAAATGAGCCAAATTTTAAAAGTGGAGCACCGAAATTTGAGACTTTGC -TTTTTTAGACTCAAATTGGTCCAAAACTACCGAATTTTGTAATGATACAT -TCTGAAAATTTCTCAAAAAAAAGTTATGGCTGTTTAAAGTTCGGCAAAAT -AAGGCCCATTTTCAGCTAAAATCAAAATTTTTTCCAACTTCTAGGTGTCG -CAACGTCTGGACCCTAATTTTTATTTATTCATCACTTTTTAATAAATATT -GTGGCCTTTGATTGGGCGTTTAATCGTTGTTTTAAGTACATTTATGATCT -TTGGAGTACAAATAAACGTTACATTTTGTACCCCAAAGACCATAAATGTA -TTTAAATCAACGATTAAACGCCCAATCAAAGACCACAATATTTATTAAAA -AGTGTTGAATAAATAAAAATTAGGTTCCAGACGTTGCGACACCTAGAAGT -TGGAAAAAATTTTGATTTTAGCTGAAAATGGGCCTTATTTTGCCGAACTT -TGAACAGCCATAACTTTTTTTTGAAAAATTTTCAGAACGTTTCATTACGA -AATTCGGTAGTTTTGGGCCAGTTGGGTCTAAAACAGCAAAGTCTCAAATT -TCGGTACTCCACCTTTAAAGAATTCATATAATTTTCTAAAACAACATATT -CTGATTTACAGAAATACATTTAATATCAATATGAATTATTTGAAAAATCA -AAAAATTTATATTTATTTTCAGAAATAATTCCGATAATCGATGTGAACCG -TAACCTGCTGCCTGTCCATTTTGCAGTTGATCCAGGAGAGTCATTCGATT -GGTCCAAATTAGAAACAAATAGTAATACACAGACAACTACTGATATGTCA -CAAATTGATAAGCTTGCGTTGATTAGTCAATATATGGATATTATTAGGTA -AGAAAATGAGAAAAAGGATTTTTTCAATTTTTTTTTCTAAAAAAAATATT -CAAAATATCGTTAAAAAGCCAAAAATGTGTACGTTTTAATTTAAAAAATA -TTAAAATTTTTTTGTCCCAAAATTAAAATATCGAAATCAAAATGTTTCCG -ACATTTATATAGAAATTCTGGAAATTTTTTTAAAATCGAAATCATATTTT -GAATGAAACTACAGAAAACAGCGCCAAAAAAGAAAAAAAATCGTTTTTTT -TTTTCGAATCTTTCATTACAAATATTTGAAAAAACGATACAATTATGTTT -CGCGAAAATTTTTTAAAAAAACTTTAAAAAATTATTAAAATCAGCTATTT -AATCACAAATGAGAAATATATCGGAAATCTGGAAAAAATTAAAAAAATTT -TTTGCGTATTTGTCTGAATTTATTTTACAAATACCAAAAAAAAATCAATT -ATTGTTGGAAAAAATTGAAATACAACGGAAATCGAATTATTTTTATTTAA -AAAGAACGAAAAAAAATCCAGAAACCATCACAAAATTATTGGAAAACGAG -AAAGCTGATTTTTCGCTAAAGTTCAAAAAAATTTACAAAAAAAGAAAAGT -ATTAAAATCGGTAATTTTCCCAGCTTGAAAAACTGAAAAATTCGAGTTTT -CTAAAAAAAATTAAAAAAAAAAATCAAAATATTCCTCAATTTTGGAAAAT -TACGGAAAAAGTAGTTTTCTTTAGCTTTCGGCCAAAATTTTATCATAAAA -ATTTCCGGAATGCATAGTTTTAGAGAATAATTTTAAATTGAAACACTAAA -TTTTTTAAAAAACTTTTTTTTTTGAAAATCCCGGATTTAAAAAAAAATAA -AATTTGAATTTCATATAAATATTTTGTTAGGAAAAATAGTTTCTAAACAA -AAATTTGAAAAAAAAAATATTTTTTTTTTCATATTCTTTGAATAAAAAAA -ATCTGAATTTCGAAACATTTCAGATTAGACGTTCGTCGTGGCTCAATCCG -TAGCTCGCGGAGAGTTCGAAGTGCTCACGCGCAACTTCTCACCGAATCTC -GTGGTGAAAATGGGCAAAATTTGCCCCAAAAATCAATTAAACCAAGAGAT -TTAAGTGCACATTCTAGTGATGAACAACCATCAAATAATGCAAAAGGAAT -GACATTAGCATCAAGTGGAATTGGTTCTGGAAGACATGAGAAATGGAGAT -TAATCAATGAAATTCGGTAAGCATTTTTTTTTTGGATTTTTGGCCTGGAA -AAAATTTTTCCAACAAAAACTTGAACAGAATTTTTGAAAAAAATGTTGGA -AAATTAAAAAAAAATTTTTTAAAGTAATCAATTTTAATTTTAAAAATTAG -AAACTTTTCAAATAAAACATTTTTATTTTTTCAAAAATTTTGAATTTCAT -TTTCAGAATAATCATTAATGAAAATTCAAAAAATTCAAACTACAATACTA -CGATAACAAAAAAAAATCAGAATGCGTACTACGCAACATATTTGACGCGC -AAAATATCTCGTAGCGAAAACTACAGTAATCCTTTAAATGACTACTGTGT -CGATTTACGGGCCTTGTTCTATTTTTGAAATTAATTCATTTTCGAATAGT -GACAGCCATATTACATTTTTCTTCGCTTTTTTGTATTATTTTCTCTTTTT -TTTTGCCTAATTTGAACATTCTATCAATCGAGCCCGTAAATCGACACAAG -CGCTATAGTAGTCATTTAATGAATTACTGTAGTTTTCGCTACGAGATATT -TTGCGCGTCAAGTATGTTGCGTAGTACGCATTCTCAAAATTTTGTGTTCC -CGTAATATGGTAGTTTGAATTTTTTTAATTTTCATTAATGATTATTCTGA -AAATGAAATTCTAAAGTTTTGAATAAATAAAAATGTTAAAAAATTTTTAT -TTGAAAAGTTCCTCATTTTTTCAAATTAAAATGGATTACTTTTAATTTCC -AAAATTTGTTTACAAAAAATTCGTTTAAAAAAAAATTAAACTGTTAAATG -TTAAACTTTTCAAAAAAAAAGTTCAAAATTTTTCTGTAAATTTTTAAAAT -GATACATGTAATTTAGATTATAATTTAAAAAAAAGACAAACATTTTTTGA -CGAAAAATATTAAAATTTTGTTAAAAAATGAAAGTTTTTAAAGCCTAAGC -CTTAGCCTCAGCCTAAGCCCAAGCCAAAGCCCAAGCCTAAGCCTAAGTTT -GGTACTGCAGTATTTAAAAAAAAAGTTTTTCCCCAAATTTCTTCTGTTTT -CTTAAAATTCAAAACTGTTATTTGCAAAAAAAAATGTTTTTGCAAAATTT -GAAATTTATTGAACTGAAAAAAATGTGAATTTTTTAATTGCCTTTGTCGC -AGCGGCTGGAAACAATTTTTTTTTTGAAATCAATTTTAAGAATAAAAATT -GATTATCTTGCGTTTTAAACTTGATTAGGGTATTTAAAAATCGATGGACG -GCGAGTTTTGGTTCAAAAAAATTAAAAATCTCGCCGTCCATCGATTTTTA -AATACCCTAATCAAGTTTAAAACGCAAAGTAATTAACTTGTATACTCGAA -ATTTGACGATGATTTCAAAAAAAAATTGTTTCCAGCCGCTGCGACATTGA -TAAGTTGGTCAAATTTCCGATTTTAACTAATTTTAGGCCATTTTTTGAGC -CGTCATAACTTTTTTCTGAAAAGTTTTCAAGAAGTTTCATTATAAAATTC -GGTGTTTTCAGACAATTTTGAGTCTAAGAAGCCAATAAAAAATTCGACTA -CACCACCTTTAAAGCTCAAAATAACGTCCAAAAATTCAATTTCCAGAACC -CACGTGCTTCGAACTTTTCGTATTTCCTCATCAACACGTGGCAAAGAGAA -ACTAATCGATACGGACGATTGTATTGCAAGAATGAATTCGACGTGCGTTC -TCGCATCGGAATTATTGCCAACTCATCACCAATACATGGACAAAATAATC -AATGAATACATGAAAAGTGCGAAACAACGATTCCAACAGAATCAGCGAAC -ACAATCGGATAGTCGGAAACGGATTAGTCGAAGTTTCAGTGCAAGCTCAC -TTATGCTCACGTGTATCGGTTGTGATTCGGTACGAGACCCACTTTTTGAT -GGAATTTCGAGAAAAAAGTTGAAAAAACGGAGAATTTGGCACAAGTAGCC -TCAATATTTGAAAAAAAAAACCGAAAAAATGGATGAGGGGAAGCCAAAAT -ACCAGAATTTACACCCAATTTTCAAAGTTTTATTGATTTTTTACAAAAAT -TTTCTCAGTTTTTCAGTAAATTTGCCAGATCTGACCATTTTTTAGGAAAA -CTGAAAATTTTCGGTGTTTTGCCAGAATAGCAACTTCCTGAAAATTTAGA -ACTAATTAATTTTTAATTTTTTGGGGGAATCATTTATTTCCTAACAGAAT -TTGATTTGAATTTCGAAAAAAACCGATTCTAAGCTTAAAAATTGACAAAA -ATAGCAATGAATGTCAAAAAAATTGCTAATACATAAAAATTGTTTGAAAA -AATACAAAAATAACAATTTTTATTTAAACTTTAAAAATTTTTCAAATTTT -AAAAATTGAAAAAATTAAAAAATTTTTAAATTAAAATTAAAACATTTTTT -GTTAAAATTTGAAAAAAATTCAAAAAAAAAATTTACATTAAATTTTTTTT -TTCAGGAATTCAAGCCGGCATCTCAAGTGACAAATATCATGTGTGATCAA -TGTTTTGCTTGGCAAAAAATGAGTGTTCTCACGTCGAATTGCGACCAATT -TATGGGAAATTCTGGGCCACCGTGCAAAAGTTCAACACTTCCGTCATTTG -GTAGTAATGATAGTAATCAGAATGATAAGGAAAATATTGTGGAGGTACTT -AATGTGGTGCCTAAAGATGGAGCCAAGACACTTACCAGGTATGGTTGAAA -TTTTGAAAAAATTAGAATTTTCAACGAAAACAGAAATTATTTTAAAAATT -TATTTTTAATTGAAAAATAAAAATTTCTCCCAAAAAATTTTCCCAAAAAA -AGTGTTTATGTTATTTTTGAAAATTATAATTGAATTGATTTTAAAAATTA -CGAGAACACAAAATTTGGAGAATGCGTATTGCGCTACATATTTGACGCGC -AAAATATCTCGTAGCGAAAACTACAGAAATTCTTTAAATGGCTACTGTAG -CGCGCTAGTGTCGATTTACGGGCTCTATTAACGAAATGAATTAAAATCAT -TTAGTTATCGAATAATACAAAAATCATTTCATTTCGAAAATCAAGCTCGT -AAATCGACACAAAAGCTACAGTAGTCCTTTAAAGGATTACTGTAGTTTTC -GATCCGAGATATTTTGCGCGTAAAATATGTTGCGCAATACGCATTCTTTG -AATTTTGGCTTCTCGTAATATACGAAGGTTGAAAATTTCAGATTTTTAAC -ACAAAAACTTATGAAAATAAAATTTATGAAAAGTATAAAAAGTTGAGAAA -ACAGAAATTTTAATTTTTGCGAAATCTAGATGTCAATTTCTTCACAAAAT -TTTTCAAAAATCGATTTTTCTTTCGAAAATTTTTTTTTGTAATTATTTTA -AATCAAAATTTGGCGATTTTCAAAATGTTTATTTTATATTTAATTTCTAA -AATTAATTATTTTGATTAAAAAATATATAAATTCAATTTTCAGATTGTAA -AATGAATTTTTTTGAGTTTGCCGTTGAAAAATAGAAAACAAATTATTTTT -AATAACTGAAATAACTGAAAATGTTGTTTGAAAAATTACATTTTTCCAAA -AAATCGAACATTTTTGACGCGCAAAAAAATTTGTAAAAAAAAATTTTCAA -CAGAAAAAACTGTAAAATAGGAAAAAAATTTACCTAAAAAGCGTATGTGC -CTTTAAAATGTACAGTAACCCCAAAAAAATCGATTTTTTGCAGTATGCGA -GCTGTGGAGGACGAAAACGGTGTGGTTCACTATTATATGGACGATGAAGT -AGCGGATTCGTGATTCTATTATACTCATTTCTTTTTTTGAAAATATATTT -ACTAGAGACCAGTTTTCATTTGATTTTTATCGATTTTTTTTGGATTCCAA -ATTTTTGTTTTTTTTTTGTTGCTTTTTGTGTGTTTTTTGCCGTCTATCCT -TCTTTCCTGCCAACGGGATTTTCTCTTCTTTTTTTTTTTTGAAAAACTCA -ATTTTCCCGCCTAGTATTGCTTTTTTCGAGATTTTTTCTTCCATTTTTCA -TATCCGCGCCAGCTTTTTCTCTCCCCTCCTTTTTTCACCCATATTTTCGA -GCTTTTTTCTGTGATTTTTTTTTCACCCCCAAAATTTTTTGTACCAAAAA -ATTGATGCTTCTTTTTTTTCTCTTTATTTCCAACAAAATGCTTGGCCAAA -GAAATAAACTCTTTTATAATTTATCATTCAAAAAATTTGAGACCAAATTG -AAATCCACATCCAGCAACTGCAAAGTGTCATTTGACAATGCACAAATCGC -ATGGCACGCCCCGTTTTCGTCGATCACCCGGGAACGCGTATTCTGGGACC -AAATGAGGAGGCGGTGGCGATCGGAGAAAATGAAGTATGGACCACATCTG -GAAGACACACCTGATTTTACGCGCAAAAATTTAGAAATGTATCGATTTTT -CGGTCAAAAATCAATATTTATCGATTTTCGGAGGGCACATGGGCTTCTGG -CCTTCCTCATTGAATATTCGCGCTCCATTTACACTCGCCTGCCGGACAAC -GCGTGGAAAAGTGTGGTGTACTCCACACGGACAAATACATCAGTTTTACA -ACTAAAATCGAGCCGTGACGCGACACGCAACGCGCCGTAAATCTACACAA -AATCTCTCCGACCCAAAATGGCCTAGTTCGGCAAACTCTGCCATTTCGAT -TTATGAGGGAAGCCAGAAATCCGTGAGGGCAAAGATTGAACAATCTGAGT -TAAATCGTTTCCATACAAAATTTTTTGAAAATTTTATTCTGAAACTGTCT -AAAACTCGAAAAGTTATCAATTTTCTGGTTAATTTCTGAGGAAATTCAAA -AATTGATATTTTCGAAAAAAAAAATCGGAGCCAATACACATCATTTGACG -CGCAAATGTTGAATTTTCAAATTTACGAGAACCCACGGGATTCTGGCTTC -CCTCATAAATCGAAATGGCAGAGTTTGCCGAACTAGGCCATTTTGTGTCG -GAGAGATTTTGTGTAGATTTACGGCGCGTTGTGTGTCACGTCGCGGCTCG -TTTTCAGTTGTAAAATTGATGTATTTGCCCGTGTGGAGTACACGGCACTT -TTCCACGCGTTGTCCGGCATTTGTCAATGGAGCGCGAAAATTCAATGAGA -AAGGCCAGAACCCCGTGAGAATCCTAAAATTCTGAGAATGCGTATTGTGC -ATCATATCTGACGCGCAAAATATCTCAAAGCGAAAACTAGAGTAATTCAA -TAAATCACTACTGTAGTGCTTGTGTCGATTTACGGGCTTTCGAAGAAGTT -ACTTTTTTAGTTTCTTCGTATTATTTTTTTTCATTTTTTGTCTAATTTTA -ATATTCTATCGATAAATGAATGGGTTTTTATTTATTTTTATTATCGAGCC -CGTAAATCGACACCAGTGCTACAGTAGTTTTCACTACGAGATATTTTGCG -CAATATATTTATAAAAGTTGACTAGCGGGCCCTGCGGGCCCGCCAGTTGT -AGGGGTGTAAGGCGAGTCCCCTTGCCGGGCGTAGGTTCTCGACTTCGCCT -CGAACCTGTTAGAGGGTTTGTGAAAATTTCAGTAGGTCAATGGGAGTCTT -CTTGTTTTTTGAGTTCGGTTTGACCAAAAACAGATGCACCCGATGAATCA -GTTAAAGCTGAGTTTTGATTGATTGAAGTTTGAGGAGGCTTTATATTAGG -GGAGACGTACCCATATTTTGTATAAAATTGAGTATTTCTATTCGAATCCC -GATTACTCACAAAAAAACAAAAAAAATTGACACTTGGTAGAATTGAACCA -ACTACCAAAATTTCTGCAGTCATACGCACTAACCACACGGCCATGCGGGA -GACACCTCAAACTGGGATGTAGGGAAGAAAATTTTCTGGAGGAAGTCGTC -TTTCGATTCCGCTTTCTTCAATTATTACTATTTGGGGAAGACGTTCGAAA -ACCGTTTATCACTGATAAGTCAGCGGAAAACCTAATTTTTGAAAATTTTA -TCACAGGATTGTACTCATTATTGAATTCCCGAAAAGGAGACGTACAGTTG -AGGGTTATATCTTGTACACAGACAGATGTATAGAATAAAACAAGTTTTGG -CCTGAAAATTAAAAAAAATAATATCTCTTGGCAGAGCATTGCTAACGCGA -CGAAACTTCATCTTCCATTAAATAAAATCAAAAACTATGAATTAAAAATA -CATTCCGCGAAACTTTAGTGGAAAAAATGTTCAGGGGACCCAGGAAACCA -CTCCCCCCAGTAAAAAATTTTTGAATTATTTTTTTCTTGAAAAATTTTCC -CACTGAACTTTTTACAAATTTTATATGTCTCGATGCGTCTTGATGAGACC -TACACGTCATTTTTTAGAAAACTAAGAAAACTTGAAAACTGACCGAGTTA -TGATTGAAAAAGTAGATTAGCAAAGATGGGAAAGTGTGCAAAATTTGGCA -CTTATTCGTCTTGCTCGGCCGACTCATAGTACTTTTTCCAATTCTGAGTT -AAAAATCGTGTTCAGCGTACTTTTGTACGTGGGATAAAGAAAAAAAATAT -CAAAAAAGATGAAGTAGAACTTGAGATAAAGACGAAAAACTACTTTTTCG -GAAAAAAAAATTTTTTGGCAAAATGTCATTTTTTGGCCTTTTGTTTTATC -ACAACTTTTTTCCATTTGCACTTATGAACTCAAACTTTTTTTCAAAAAAT -CAGTCTCTCTGAGTAGTATCTTGCACATGAGTTTGAAACAAAACAGAGCA -AAACCCAAATTTTAATTCAATTAAAACATGCTTTTTTGGGGGTAAAAAGA -GCAACAAAAAATTTTTTCAAACTGGGGAAAGCCGTCCTGGGCTCAATTTT -GCTCCGAACTTAGTGCCGTTTTCTGCTCCACTGTGGGGCAAAATATTTCT -AGTAGGATTTCAAATATTAGAGCATGAAGTCACACGGTTCAGGAGTTGTG -AATGAAAACGAAGTGGGACATTTTTTCGCAAGCCAAAAAAAACGCGAAAA -AACGCGAAAAAGGGGCGGAGTCTGTACACTCGGCATTTATTAGAGGCTGC -TTGGCAGAAAATTATCAATTATGTATATGTATAAGAATTATATTCGAATT -TCACGCGTAAGTTCCAAATTTAGCAGCATAGCCGCCTGAAGTTCGAAATT -TAAAATAAAAAAACCGAAAAGTACCTGACAGCCAACGTGGCAACAAATGG -AATCTCATCGACAAGTCCTTCAGAATTGAATACTGCAGCATTTGACGTAT -GATAAATGACTGCCACGAATTGATTTTCAAATAATATTTTATTGATTGAC -GTGGCAGTTTGGTGGCTGAGCGGTTTGTAGTCCAATGTTGGTAGAGTTAA -TAGGTAAAGACCACCCGTCTCGGTTGCCACACACGCTTCTTCGCCGCTTC -TGGAAAATTTGGTTTTGAATTTCTAGGCCATTGGGTTAGGCTTCGTTTTT -GAAATGGGTTAGAAATGTAGAAAATGGAAATTCTAGGCCATCAATTTTCC -TTTTGCATGTGTGTAGGAAATTGGCTAACATTCTAGAAAATCGATAATTT -TATAGAAAGTGAAATTTTCGCAAAATCAATAATTCGATAAAAATCGATAA -ACTTTGATAGAATTTTGTTCATCAAAAACCGATAATGTCCGAAAAATTTC -AGAAAATTAGATTTTTTTAACAGTCCGTTCATTTCGTGGCCTAGAAACTT -ATTTCTAGGCCATGGAAGAGTTTTTCCAAGATTCACGGCCACACGTACAC -TTGCATGCTAACAATTGCGACAGGCTTATTAGAAGTCGAAGATCTTCGAA -TTTTTCGCGACAGATCCGACACTGTGAGCTTTGTCCCGCCGAGTTTTTCG -AGTCCTGATGTTCCGATTTGCCATAAAATTATATTACCATCGTCGGAGCC -TGATAAGAGCCCGTGACGACACATTTCTAGGCAAGTTACTGCTCCGTCGG -TTATCTGGAATAGAGAACATTTGGAACTTGTCGATTTTCAGAAACATTTT -ACTGTACTTTTTTATGGGCAAAACATTGTTTTTTTTAATTAAACAAAACT -ACTGATAATTGTAAAAAGATCAATTTTTTAGTGTTTGAAGATCATTTTTG -AGTTCTCTAGCTACAAAATAAACAATTTTAGAGGAGTTGCAAAATTGTGA -ATTTTAAAAATAAATTGCACAATTTTGCCACTTTTTAATGGTTTTTGATG -GATTAAACCTAGATTTTCTGAATTCAGCATACATGAATTACCGCTTTTTG -ACAAAATTAGACAACTTTTTATTTTTGTCCAATTTTTTTCAGCCATCTAA -TGACTGTCCTTTTTTTTGGGCAAAAAAATAAATTTCCTAAAAGCGTTCGA -AACTACTATATTTTGAAATATTTTGAAATAGGACATTTTTTTAGGGCTCG -GAGATCAATTTTAAGTTCTCTAGCTACAAAATGCGGAAAAAAATGTAAAA -AAGTTTGGTACTTGTGTATTATACCCCCGCCATTTTAAAAATTAATAAAA -TTTCCATCAATTTATTTATTTAAATTAAACGTGATACCATTTTTCCTTGT -TAGGCTTAGGAATGGTTTTTTCCTAAGCCTGAAATTCCACACGTTTTTAT -TTAATGAGTTAAAAAATTAACTTTTAAAATGGCGGGGGTGTAATACACAA -GTACCAAAAGTTTCTAGGCCCCATTTGCTGGGCCACAATTTATAGGCTAC -AGTTTCTAGGACACATTTTCCTGGGAACATTTTCTAGGCCACATTTTTTA -GGCCACATTTTCTTAGCCAAAAATGTACTCACAAACTTAGCAACGTGGCA -ACAATTTCAAAAAAAACCTCATACCTTCTTCTCGAAAATTATTTTATCTT -TCGAACACATTGAGATATTTCCAGAAACGTCGCCGAGAATAAATTGGGTC -GATGAGTAGAAAACTGCAGAAATTGCACAAACCGGTAGAGGAATCGAGAA -GCTCTGAAATTATTCTTCATTAATTTTTTCATGCAATTTTAATCTCGGAC -CAATCAGCGTTTTGCCACGTCTTTTTTTTTTCGAACCAATCAGAGGAGTG -GGCGTGGCTAGATGCTGATTGGTCAGTTTCAAATTTTTTACAAAATATGA -CCTACCGTAGAAGAAGAGCACAAAAGTGCTCTCGCCTGATGGGAACAGAA -AGTTTCATGAGAGATACCGCCGAACAGAATTAACGTTTTTCGTGAAGAGC -TTGAAATCATTAGAATGATATTTTCATTTCGGGTCTGAAATAATTCAATT -TTAAAGGTACACGCCACCACCGTATCCTACTTCCACATGGTACTTCTGCA -CAGTTTCCAGCGCAACTTTATCGAATTTGTGAAATTCCAAAAGCCTGTCG -TAGTTCACCTTAGAATCGTCACGCACGAAATCGTAAAGGAGGTTCAGAAC -CTAAAAGTTTGAAAAATATGTCCTAGGAAATCAAACTGTGAATTTCTAGG -CCACATGATGGAAATTCGTATGAAAATTGCGACGAGCCCTAACATGTGGC -CTATTAATTGTGGCCTAGAATCTGCTGCCTACAAGTTGTGGCCTAGAAAA -AATGTTTCCTAGAAATTGTGACCATGGCCTAGAAATTTTGGCCTAAAACA -TCCGACATAGAAATTGTATGGCCTAGAAAGTGTGGGGGCAAAAGTTTTTA -ATTTTCAATTCGGTTTTTTTTTTCACAAAATGGAGAATTTTTTGATTTTT -ATGTCTGAAATTGAATGGGAAACGTGGAAATATTGCTAATAACCAACCTC -TTTGCTAATTGTAATATCCTTTTTCACATTCTCGCCGACACCATTATCCA -CAGAATCCGTCTGAACTTCTTTATTTTCTTGAAAATTTGCCACGCATTCC -ACGTCTTTTTTATTTGTCTCTATCGTCTGCGTCTCCGACGTCTTATACAC -TATTTCTCCCTGAAGGCGGATAGGTTTTCTCCACGTGAACTGGAATAGTG -TGACGTCTTCCATTATTAGCTGAAAATTTGAGTTAAAACTGCTCTATCAC -ACTAAACACGACGACACTCGTGGCCGCGGAAATTAGAAAACTCGGCCACG -TAACTTGGTTAAATTAATGAAAATATTATAAAAAACTTTCGAAAATTTGA -AACATTTTAACTTTTTTTAAAAAAAAACACATGCAAATGTTCCTAAACTG -GCTAAATAAACAACGCACATCCCCGGCGGAGCTCTGGTTTTCCATGGCAA -CCGAGAATGCGTGCGGGCCAACGGGGAGAATGTGGAGTACGTAGAGACGC -AGACAGTTGTATAAAAGGGGCGGCAACTTGAAAAAATAAATTTCTAGAGA -TTAATCCGTGCAAAGTTGTTTTTAATTACCGATGACCGAGTATGTGATTT -TTCTAGGCCACGGAACCAAATTACGGCGGAGTTCCGTTGAAAATATCGCT -TAATTGTTTTGTTTTTTCTACCAAATTAACTGACTGAAAATCCAGTTTTT -TTTTTCTGAAATTAGGTTCTTTCAAAAATCACCTGAGTGTTCCTTGATTT -GTTTTCGTAACTTTTTTCTCTCCAACTATTACACTACGGGTGTTTTGACA -ACACAATGGAAAACATGTCTGTTCAGTTTAAAGACTGACAAGAGTCTCGT -AGTCTCTCGCGGACTAGCTTACGGCCCTTGTGGTCTAGAATATTGAAAAA -CTTAGTTTCAGTATTGTGGCCGCGAAATTTGAAAACTCGGCCATCGATTT -TTTTTCCCACACCATGGGGCAATATTCACTAGACCATTCATTGTAACAAA -TATTTCAAAACTAAGAATTAAAAAAACTCCTACGCAATTTCCCCAGTCAC -TTGGCGGCTCTCACGCTCCCTATTTCAGATGTTAACCTCATTTGAATAAA -TTGCTTCTCCCATGTGTTTTTGGATGGGATACTCCATCTTTTTCAACCAA -TTTTTTCTCCTTACTTTTGTTTTTAACGGCTTTTTTTCATATTTCTGATT -GAGAATAGGTCAAGTGATGACGTAATAGAGCGCGTGGAAGAGGAGTGACG -TCACACGTGGCCTAGGAATCTCTGCGACCACCACATGAAAAACGTTTTAT -TTTCTAGGCATCCCTACCTACCCGTGTTTTGTCTCTATTTTGACAATTTT -TTGCAAGTAAATTCCCGGCTGAAACAAGGTCACCGCAACACAAAATAGGT -GAAGGGATGATCTCTTTTTTTCCAGAGTCAGTCAACATACATAAATTATG -TGTGTCTCTTCCATTTTCCTGTCGTCAATTTGTTCACTATTCGCTTCACT -AATTCCTGCTTTGCATTTTAATGTCCGTGCCCTCTCACTGGAACTGACAT -TTCACACAATGTTTTTTTCGGTGGAAAAAAGTTTTCTAGATTTTGATATT -TGCTGGAAATTTGGAAAATTTAGCGACTTGACCGTGCAAAAATTTTGGTG -GCCGAGTTTTCTCTTTGCGCGGCCACGTTGTAATAGTTGCCAGGTGTCGC -AAGTTTTTAAAATGACCGAGTTTTCTCTATTCACGACCAGATCTCTCATT -ATAGCCGACTTCCGACTTGCGTAAAAGTGCGACGTGGCCGAGAAAAATTT -CAGTGGCCGAGTTTTCACGCGAAATCACATTTTTTTAGTTTTTTGGTACG -TGGCCTAGTTTTTTAAAACCATTGTTTATCTCCACCCAATCTAAAAAAAT -TTCTGCGGATTTTTAAACCATGGCCGTAAAAAAAAGCCACTCTCATATAT -TTTTTCGACACCTTTCGGTTTTAGAAATATATTTTTAAAAATAAAATAAA -TGGCTTTGAAATCCAAATAGAAATAATTTTCCAAAAAAAGTGGAAAATTT -TCTAGGCCACTTGAAATTTTTTCCGAGATCTTTTTTGGGAAAGGAATTTG -TGGCCTAAAAAACAAAAACTCGGCCACTATTTTTTGACCATTTTTTCCAT -GTGACGTCACTTGTGACTTACAATTCCTTTTCTCAATTTCTTATGAGAAA -TCGCTTTTTTTAAGACTTTTTGTGATTTTGTTGCATTTTCTCCCAGTCGG -AGATTACGCCACGTGGAAATAGTAAACTCGGCCACACTCTTATAATTTTT -TGGCGTCTTTTGGGAAAAGTAACAAGTTCAAACAATGTAAATTACATAGC -CTAGACTTAGCTGACCAAGGCTTGTTTGAAATATTTTTGTGGCCTAGAAA -AATAAATATTCGGCCATTACTTTTTCTTCTCATTTTTGTCAGAAGACGTC -ACTGAAAACCTAGAAATCTCTCTTCCAGGGCTGCAAATGAGTATATCCTC -CATACCTTCGTCACCGTCAATATCGGGATCTTCCACGTCATCGACCGCGC -CGAACATTTCATTTTGCTATACATGGACCACTAAGGTAAGCGGCCTAGAA -AAATAGAAAGTTCGGCCAGCTCTTAAAAAATCGATTAATGATAATTTTCA -GTTAAAAACGCGAAAAACTGCGGACGGCGAGGCGACGATTTTATCGATTT -CTCCGAAATTCGCGACAGTCCACCAACTTATTTCGTTTCAATGGAATATT -CGAATTCATGCCACTTCTGAAATGGTAAGGCTTGTTTTTTTTTGAGGTAG -GCAGGCACGAAAGCGTCTGCTTGCTTTTCGAAAACACGTGGCCGCGGACT -GAAAAACTCGGCCACCAAAAATCTGAAACTGTGAGTCGCCCTGACAGAAT -TTTTTATTTTCTCGGCCAAACAGCAAAAGCCGACAAGTGAAGTTAAAAAG -GGAGGAGCATTTTTTTAAATAAAAAACTAGACTCCTAATGACCTCAAAAA -TATCATATTTTTAAATGTAAGAGTCGGCCACGTCCGCGGTCGATTTACAC -AGTGTCGCGGCTCGGTTTTCATTAATTGAGCACTGAGAAGTTTCACTTCT -CCAATTTCAATTTTCAGAACGAAGAAGACGAAGAAGTGGACTACGTGGCA -GTTGACCTTTACCTGGTAGATGGTCCTGTAAATGAGGTGAACGTTATGGC -CGAGGTGGGGGCTCTAGAGAAAACATCCACAGCAACGTTGGGAAGCCTTC -CCGCAGGTCAGAAAGAAGCAAAGACTATAAAAATGCAAAAGGGCTCTGGT -TGTGAGATAACGGATGCAGATCGAGAATGTGTGTCGAAGTATTTGAAAGA -GAACGTGGAGAATATCATCAAAATCTCCATAATTATAAATATGGAGACAC -GACTTTTCGAACCATCAACCTATTTGGATGCAATATCTCCAACTCCTCGA -GCATCATTTCTAACGGCAAATTACAATGCGAGAGTTAACAGTAAGGTATG -GAAAAGGCGATCACGGAAAAGGAATGGAAGAATCGAGCGAAGAGTGTTAA -GTGATAAAGAGAAGACGAAGTATGAGAGTAAAGTACAAATGATATTGGAT -GAGGAACGGGAGAAGCTGTGTGATAAACGAGAGATGTTGAAGGAGGATGA -TGGTGGATCGAGAAGAGCTTCGTTGATTTCTCAGTTCAGGGAGAATCAAC -ATGAATCTGTGTTGGATGATCATATGTTCAAGAGGGTAAGGTTTTTATTT -TTAATGCCTAAAACTTTGAGATTGAGGCAGTTCAATAGGCTATATACATA -TAAGTGTGGACCCAACAAGTTTGTTACATGAAGTATTTTTTCCAGATCCT -CGTTAGCTGCTGTGAATCTTGCGAGCAACGTCGTCTATCGTTCATGTGTG -ACAGTCGAACCGAGGATGATTCTGAAGGGGAAGATTGTGAAGACAATGAA -GAAGATGATGGAGAAGGTGGCTCCGATGATGAGGAAGACGATGGAGAGGA -GCCTCATTTTGAATGTGATAAGAGTGATAAGGAGCATGTCCACGATGTAG -GTCTCCTTTAAAATATCGTCCATAAAAGCTTAATTTTTTAGATGCTAGCA -AATCTATACTTCAACAAAGTAGTCCTTCCCGAAATGGAATATGTCGAGGA -TTTTGTGGATTTCCTGATTGATGCGGAGCTCAATGACTTGCCAGTTCTCA -AAAGAGCTTGTGAGAGGTATTTGTGCAGTGAGCTGAATTCGGTAGGCTTC -TGTTCAAAAAAATATAAAAATCTAATCGAAATATTTTCTAGAAAAAAGAC -ATTGGAACTTGTCTCCTGTTGGATTTGCTTTTCAACTCGATTGTATTCAA -CTTGCCTGTTATGAAGTCGATGACCTTGACGGAGTTGGCGAATCGAACGC -ACGAGTTTGTGGATGCTGACACACTTTTGGATCAGGAAGAGTTTAAGTGA -GTAGGGTGTGCGGCAAATTTGCCGAATTTGCCGAGCACGGCAAATTTCAA -AAAAGTAGATTTGCCGAATTAGCCGAGCTCGGCAAATTTCGAAAAACTTA -TTCATAAACCAGCAGTGTGTAAAGAATTCAGTAGTTTTGGTGCTCCAAAA -ACATTAAAAAATATCAAATTTTTTCGAGTTTGTCAAGCACGGCAAATTTG -CCGAATTTGTCGTGTTCGGCAAATATTGGAAAAATAGATTTGCCGAATTT -GCCGAGTTCGGCAAATTTTGAGATTTGCCGCACACCCCTGGTGTGCACCG -TTAAAAATTCTTTTTTTCCAAAAATCTAAAACTTGAGGTTAATAATGTGA -CCGAAAAACTGAAAAAAAAAAGAATTTGCCGCTGCAAAACCATAATCCGC -CAAAAGTTTTCTTTGTTTTTTTTTCGAATTGCAGGGTTTCCGAATCTGTC -AAAATTGGAAACACGACAGTTTGCCGAAAAAATTTAATTTTTGAGTGAAC -TGTTGATGCGAAATTCATTAAATACGATTTCAAAAAGCTCGGTCACGTAT -TTGTAATTTTAGAGTGGGATTAGCTATTTAAAAATTACATTTGTAATTTC -CAGAAACCTGGATAAAAGAATGCGAACGCTTGCCGATCGGAATCTCGTGG -AGCTCATCGAGCAATGTGTTACGTTTCGTGACCAAAAAGCAAGAGTTCGC -GTTTTGCCGACCGCCGAATCATTTGATATTTCGTTCGACTTAACTAATCA -ATAATATTATCGTGTTACTTTTTTCCTCTGTTTTCTTTCTCATTTTTAAA -AATGAATGCTTTTTTCTTTTTTTTTACCCGATTTTCCACACGACTAACTC -CAAAATCAGCCGCGCCTTTTTGTCTTTTATCCCTGCTTTTCCACACATTT -ATCAAATAAAGAGTGCAACGAAGTGCAAAATGGGAAGTAGTAGTGCTGCA -ATCTCATTTAGAGTACACTTTTGGAGCTCTTTTCTCCAGATATATTATAT -GCTGTAGATGGAAACTTTTCCAGTTTATATATAATATTTTTCATTTTCCA -TATTGCCCTTCACTGCTCATCATCCAATGGGGTGCATCTAATTACGGCAA -AGCTTCGCGGATGGGGCGAGTAATGAGCAAAAGAGCACAAGGATGGGGCT -CTTTTGTTCCTCATTTTCATTGCTTTTTGATTTCATTTCCTTTTCAACAT -GTTTCCATTTTCGAAATTAATCGGCTTTTCTGACCCAGGACTCACGGGAG -ATGAAAATTAATCTTTAAGAATTGTGCTTTGAAAAACAATATCATACACT -TTTCAAACTTCATTTCTCCGTTGTTCCCAGTAAATTCCAAGCTGTCATCC -ATCAACTCTCTGATAAAAAATAATCATTTGGTCCGTCCGTCGCGAAAATG -AAGTGAAAAAAGTTAATCCCGGCATGTTGAAATACACATTTCGTCGCGTG -GAGTATAGTTATGCTTCGATTTCTCAAGAGGATTCTTCTTTCCCCCTTTT -CATATTTTTTCGGGCAAAGAAGAAATCTCTGTCACCCCCCGACTAAAAAA -CGCTAAAAATTCAGCGTTCATTGTTCGGTTTTCCGTTTCAAAAAGAAAAA -AGTGTGTCAAAAACTCAAAAAGTCACCGCCTAAAGTTAGTTAGCACCTTT -TTCCATTGTGAAGATTTTCTTTCCTTCAATACAACTACTACAGTTTGTTT -CCTGTGTGTCGTCCTATTGTTGTGGGTGTAATTGTTCGATAGAGCGCGCT -TTACAAAATCTCTCGAATTAATTGAAAGTAGTGTGTTGTAGAGACCTTGA -CTCCTTTGTCAACACTGTAATTAGGAAGGAGTACACCGCCGGGCGGGTGA -GAACAGTTATTATAACGATAGTGGTTTGTTATTGTTTGTTATTAATAGGT -TAGTTGTCTACTTTAAACGTTTTTTGTTTGAAAAATTTCTGTTAATTAAA -AAATACATAATTTATAAAAATGATGAGTTTTTTTTTCAAATTTCTCAAAA -ACCGAACCCATGGGGTTTTTTGAGAAAAAATAAGAAAATTTTTCTAGTTA -TTCAAAAAATCTATACATTTTAATATCTGTAAATTGTAAATTTGGAAGAC -AAAATTTTGACAATGCGTATTGAATTTGAGTTTATTTAACTTAAAGAAGA -GAAATAGACAAATAAATAATTATATATATTGCGCAACATATTTGAATAAT -ACATTTATTTTTCGTAATATTTATTTTGAAAAATGATTGAAAATAAAACT -CGAAGAAAACTATATTTAAAAATGTCGGTGCTTTTTTTACATTTTTTAAA -CGAAAAAAAATGCGAAAAAAACCAATTTTCCGAGTTTTTTCTTCAAAATA -TTCGTCCCTGTTCATGAAAAATGTTCTCACTTATGTAAGTAGTTGTCACG -CAATGCAGTTGTTGACCAAAAATTATTTTCCGAGTAAACCCTATAATTTC -CAAATTCTCTTCTTCTGAAATTTTGAACTTTCCATCGGGAAAATGTCATT -TCAACTCGAATTCACACTAATTATACATCTGTATAATTATTTAGATTCGT -ACTTTTTCCTCCTTTTGAAAAAGTGCACAGACACCGCCGTTATCTTTACA -ACCGTCTGGCAGGACCGGTGTTGTAGGCTTTAAATAAATATTTTTCCATA -AATTTCTTAATTTTTAGCTGAAACGATTTTCCAACAAAAAAAAACGCACA -TTTAAAATGGTTACCGTATTTCTTCTATCAATATGGCTGCAATACTATTT -TTCGATGGTCTTCCCGCTTGCAATACTAATAGGGAGTGCAAGACTATTAG -GGAGTGCAATACTAATTTTCAGAACATTTTTCTGACTGTGAGCTTACTAT -TTTTTTTTCTGAAAAAACTCGAACCTTGTGTGAAAATTCAGAAAATTTGA -TTGTAATTGCAACAAAAAGGTGTAATTACTTCAATTTCATAGAAATTTTT -CCAAAAATTGTTGCACAGTAGGCAAAAAATGTTGTTAAAATCTCAAAATT -AGTGAGGTGATTTTGTACCAAAAAAAAAGTAGACGCAAGACTATTAGGGA -GTGCAACACTAATTGGGAGTGCAATACTAATTTTCGGAGGGTGTTCAAGG -AGCAATACTAATAGGGAGTGCAAGTCTAATAGGGAGGTCATATTAATAGA -AGAAATACGGTAAATTTTATATTTTTCGGTGCATTTTCATTTTAAAAACA -ATTTGTTTGAAAATAATTATTTTTAAAAATCGTTTTCTTCAAATTTTTTG -TAATTATAAGAAACCAAAAAACCTTTATTTAATTTTCAACAAGTGTATTT -TCTAATTAAAACAATTATGAAAATTCACAATAAAAGTTCAGGACTGAATC -CAAAAAAACTTTTATTTCAAAAACGAAACACCTTGTTTGCCAAAAACCTG -GAAAAGCCTGGAAACCTGGAAAATCGAATAACATCAAATTTTGCAAATTT -TAAGCGTTTTCTCGAAAAAGTTGACCTGAAAAAATAGGATTTTTCAGTTT -ATTTTATAAAAAAGCGAAAAAAAGCAAATTTTTTGAGAAAAAAATTGCCT -AAATTTTCGAAAAATCATTTTCAAAACTATTCACGATTAAAATTCGTTTA -TCCATTTCTCCTTCAATTCTTCCAGATTCGAATGAAAACTTGCTCAGAAA -AAATGCTAAATTTGCTCTTTTTCGTATCCACTACTACTGCTACTACTAGT -AGAAGTTCTTCATTCGGTGGCCGGACTACTTTGAATCAAATCACATTTGT -CGGGAAGAAGGAGGTCGTGCCTTTGCACTTCTGGTCACTCCAGAAATTGA -AGAAATTGAGCAGCTCGAGTTTTGGAGTATTCCAGGCAACTCGGTCGTTT -TTGAAAACCTATTCTATGAAAACTGCAAACTATGTGGCTTCATCTGGTCT -GGCTGGAATTTTTTGTTTCAAATTTTGACCCAGTACCTTGAGAATCAACC -AGTTTTCCACGTATGCTAAAATCCGAAAAAGTGACTCACACGAGAAAGTT -TCAATTTCCGTGATGACGTTCGCCTGGCTCTTCAGCTCATTCTTTTGTCT -CCAGAGCTCTGGGGAGCTGCAAATGAGTTGAGAGCAAGCACATTGCGTGA -GCAAGATAGCTCCAAAAGATATGAAGAGAGCAGGCGGGAGATGAAATTGG -ACGATGAAAAGTCGCCAGAAGCATAATTTTGGTGCGGCGACACCCGAATA -ATGAGACATTTACGACTTTTTGGAACATCTTCTACGGCCAGAATGTTTCG -TAACATTTTGGTAATTTGAGTTGTAGTTTTGAGGGGCTTTTTTCGATTTT -TAAATTTGTATTGACTCTTATTCGCAAAAAAAGAGAACTGCTATAGCACG -TGTAGTCAAAATGTCTTTTTGATCTTCAAAAAATGCGGGAGTTAAGACGC -AGACATCTCATCTGATTCGCATGGCTAAGAGCGTGCTGACGTCACAATTT -TCTGGAAAAATATTCCCGCATTTTTTGTAGATCAGGCTATGATGTGTGTG -TTCAATGAGACAGCCTGACACGACGTGATGTAGTTCACATTTTTCGGCAG -TTTTTTTCCTGAAAAATGTGGATTTTCGTTTTTTCTTAAGTTGTCAAATT -ATCGAAAGCTACTAAGCTTGAGTAACTTAGGAAAAGTAGGATTTTAAATT -GTTTTCACGGGCCTCGCAACGAAAGATCTCACTACTATCACCAGAAATCC -AAAAAAACGAAAATATTTGTCGTGCCGAGCCCAGGCTCCGTATTTTTGAA -GCGAAATTCCTAAACTCCCTAACCGCTGAAAATTTCTGAGTTGATTTTCC -ATCACCTTCTATATACAGTCTTTCGACCCGAAAACGATTTGAATTCGGCT -TTCTCCTCAAATCCTCTGTATTGCATCCTCTTTCTTAGTTGATTTATTTG -TAGCGGATTCTTCCCCTTCCCATCCGTGGCGTTATTGTTCGGTTACGATA -CGCTTCTTGTGAAGGTTATATGCAAACGACTACTTGCCATTCGATTCTTT -CTCCAAAAACGGGTTATTCCATTTCCTTCAACTAAGGAGCTGTTTTTTTC -TTGGTTTTTTGTAGAAAACCTACATTCAAAGTCGAAGTAGTGAAAGTCAA -AAATTACCAAATTTCGCAATTTAATTTTTAATAAAATGTCGCCCGAATTA -ACGATAAGTTAATAAGAACAAAATTCAGTTAGTCCGAGAGTCGTGATTTG -CCGATTTAGAACAGCATTTAGCTGAAAAAAACGATTTTTTTCCAAAGTTT -GAACTGCCACTACATTTTTCTCAAGTATTGAGAGTTTTGAATTTCCATCA -TTTAGTTGTAACCACACTTTTCTTCCGATTCCCATAGCAAGCGAAAGTTG -TCTTGTTTCCGAATATCTGACCTAACTTGGTTTTTTTACGACTGATGCCG -AATTTTGAAAAGTTTATTAGAAACTTTCCACGCTCTCCCCTTTCCAACCT -CGCAAACCCTTTTGTCTGTAGTTGGGATCTGTTGCTTTTTTGGGCAATTT -TTTGCCAGCTTGATCTACATATCATTGCTTGATCTACATATCTTGAGCAA -AATTCCAAAAAGTACGTTTTCTTGTAGATTAATTTGTGGGTTTTTTTTGA -GAGTTTTGAGCTAAAACTTGCATGGCATATTTTTTTCACTGTTTTAAATC -ATTTACAAATTATTTTTTCCTCTTTTTAGAAAAAAAAAATGTTTGTTAAA -ATTTTGGAAAAATTTCAAAAAGGTGTTTTATCCACTTCCAAAACGTCATA -ACTTTGCTGAAACTGGACCGGGGCAGCTAAATTTTTCGGAGTGATCATTA -TTTTCACTCTTTTATCGAAAAATTACTATGGCATGCCAAGCCCGGGGACC -CATTTTTTCACTTCCCTTGTAAGCCGAAGCCTTAGTCTAAGTCTAAGCCT -ACGACTGAGCATAAGCCTCAGCCTAAGCCTAAGCGTAAGCCTCAGCCTAA -GCCGAAGCCTAAGAATAACGGGAAACTTTTTTTGTTGCTTTTTTTTGTTT -TTTTTCAAATGCCGAAAAATAATTGCGGCATTTGAATTATGACTTTGTTG -TTCCTAGAGATTCTGGTTTTCAAAATAGGCAAAAATGCCATGAACCTTAA -CGATGTTCTTTCTCCCCGCCCTTTGAACACTCTGAAGTTTCCCGCCATGT -CAACCTTTTTTGATCGTTCGGCACGATAACGTTCTGAGTGCCGCGGTGCC -CGTTAATTTCCATCGAATCGTTAGGTTTTCTCCTTCGATTCCTAACGATC -AAGCCATAATTTATCCGCAAAATGGGATTTTCTCCCTTTTGTGATGATGA -TGATGATGGCCTCCCTCTTCTCTGCGATGACAGTCGAGTGATGAATGTCT -TCCTTCACACTTGTCCGTTTATCATTTATCACTCTGTGCTGAAAACCGGT -CTCTCTCTTCCCCTGACCTCTTCGGCTTTGTGAAACAGTGAAAGAGAAAC -GGAAAACAGGCGGTGTCAGATGGTTGACACGTTGATGTCGTAATCCATTT -AGTATTAATGCTACTATGTACGCCATTTGCTATATATGCCCATATTTTCA -ATGGCTTTGAGCACAAGCTTTCAGAATTGGCAATCAATTTCTAAAATTTT -AAAATTTTGAAAACCAATATATGGGTGGAGCCTATTTCTTAACTGTTCCG -TAGTTACCGAAAAAGTCGGAAAGCGCCGATTATCTAATACTTTCGAATTC -GGCAAAACTGAAATTTCTTCAGATTTTTATGATTTTGAGAGAAAAAATTA -TATTTCTTTGCCAAAAAACATGTATTACTTAAAATTTGTTTGTTTTATTA -TTTGAGCTCAATAACTATCAAATTGACAAACAATTCATTGGCAAAAATGC -CGAATATCGTAAATTTGAAAAAATCGGCAATTCCCGAATTGCTGCACACA -TCTTGGTTTTTTGAGCTAATTAATTGAATTTTTAAGAACTTTTATTTTGG -TAATCTAAATTTTAGTTACTGAATTCATTGCGAAAAAAATTTCTTCAGAA -TAGGGCTTCCATGTAGGCGTCAAAAAGCTTGCCAAACCTTAAGACGACCT -CCGCCTGCCTACCTCAATCTATGTGCTGAAACATATGCGAACTTTTTTTG -CAATTCTTGATTTGGTTTTCATCAAATTGATAGAAATGAGAAAATTTAAA -ATTGAAAATTTACGCACAAGTACAAAAAAGGATTCAGGCAGGCGTCAGGC -CGTGAAACCCCGCCTGCTTACCATGGAAGCCCTACTGCAGAAAATGAGAA -ATCTGATGTTCAAAAAAAAAAAGAAACCAGCCGTGTTTTTCCTTGAAATT -CGAAAAGTTCCCCGATTTTCCCCTCATTTCCGGACCGTTTGTTCCCATGG -TGGACCGGTATTTTCACCACTCCGTCAAAGGCGATTATCGGGTCTGTCTG -TCGTCGACGACCCATCACACCAAATCGGTTGAATTGTCGCACCCCTTTTT -TAATCGGCAATATATTTACTTTTTATTTGTAACTAAGTAGTAAACAGTAA -TAGTTTTTGCAAGAATATGCATAACACCTTATTTCACTTGGTAAAGTAAT -TGAACTGTTGTAATTGAGCTGAACATGATTCACCTACGAAAAAATGCCTG -TGACCTAGGGCTTGCATGTATGCGTTAAAATGGCTGCCTGCCTGACCTGA -AGGCAGCCTCCGCCTGCCTTTTGCCGGTTTATGCTAAAAACACGGTTTAT -GCTACGTGAAATTATTTTTTCATTTTTAATTTGATTTTCAACTTTTGAAA -TTTGAAAATTCACGTCAAAATGCAGAAAAGAAGGTGAGGCAGGCAGGTTT -CAGGCAGGCGTCAGGCCCTGAATCGGCGCCTGCCTATCATGAAAACCCTA -CTCTGAACTCGATTTCGCCCTCCAAACATCAATTTCCGTCATTCTCCTTC -CGTCCTTTTTACCCACTTTTTTAATGAATTTGAAATGAGTAGTCGAGGGA -AATTTAGTGAACCTACTAGAAGTCGCCACGGTTTTCAGCAGCAAATTTTT -TAATTTCGTAGAAATATGTGCTTCTGTGTTAAAATTAATAATAGCTAAAC -TATTGGATAATGTACTTTAAGACGTGCAATGTCACTCCATATTTTATAAA -ATGTTGAAAATTTTGGAAGGGATCGAGGAAGTTTTGATACTTTTTAGAAA -TCGAAAATTTTCAATTTCCGATTCCCTTCAACATTATATACCTCAACAGT -TTAATAAGATACAAAAAATCTTCAGAGAGTCATCTGTTCGCACACAGTTT -TACCCCTATCAAATTACAGATGTGTTGCCTTGCACATCTGTGAGAACTTC -ACACTATTCTGCTACAACAGATTTTCGGAACAGAAGGTGTGATGTTTCTA -CCTGACTATGAAGATTCACGTGGGCGGCAATCCAAATTTTTTGAAATTTG -GAGATTTTCGAGTTATCCATAAAAGATTCCGTTAAAGAGAGATCACAATT -TTTTTTGTAGATTGACAAGAAAATTACCCCAACAATACTCAAAACAATTG -TAATTACAATTGAATTATTACTTTTCAATTCTTAATTTTTTAAGTGCTGA -AACTTTTCTATTGACGTTAACCCCTGCAAAAATGCAAAATTGATCAACAT -CTAGTAAATCTACTAACAAGGGAAGTCTTTGAGGGGGTCCGTAGATTTGG -GGTTTTCATGCTAAAATTCCTACAGAAGAGTGTTAGTTATGATCTCTCCA -AACATTTTTGCGCATTTTTAAAGTGATTTTATTCTTATTCGGGAACCTAG -AATCATTGTCCGCACTTTTTGGAAATTTTTATTTTTTTCATTTTTGCTCA -AAATTTCTTGATCAACTCCAAGCAAAAAAATCAAAGTTTTTCAACAAACA -TTTTGTTAGTTGATCATTTTTCAAAATAATTTATCTCAACGAAGTTATGC -AACTTCAAAGTTGGTTAAATATTTTGCACAAAGTTCGTGAGATGTAGATC -ATTTCGACGGTTTACTTGCGAATAGAGAGTTAAAACTTGTGTAATGTACG -TTTCATACATTTCTGAACAATAAAATAGCAATTTCATACATTTTTACAAA -AATAAAAAATTTCCTATTTTTGCTTGGAGTTGATCAAGAAATTTTGAGAA -AAAAATGAAAAAAATAAAAATTTCCAAAAAGTGCGGACAATGATTCTAGG -TTCCCGAATAAGAATAAAATCACTTTAAAAATGCGCAAAAATGTTTGAAT -GAGTTGTTTAAAACTTTATTCAACTTACAAAAATATTTCAAAAATAGAAG -GAATCGAACCAAACCTTAAATATTATCAGACGCGCGCACTCCCAACTCGG -CCACCGAGGACAATTTTCAACTCAATGTGGTGGGTGTCACATTTTCGGTG -GTCACGCAAGCTGAGATTTGCGTGGACTGCATGGTAAGACAGTGGATTTC -AATGGTGTTTTTAACTTTCAAAACGTCATAACTTTGCTGAAACTTGACCG -GGGCAGCTAAATTTTTTGGAGAGATCATAACTAACACTCTTCTGTAGGAA -TTTTAGCATGAGAACCCCAAATTTACGGACCCCCTCAAAGACTTCCCTTG -TAAGTCAAACAAAAATTCTGTATTTTTCAGAGTACTATACATAGTATATA -TTTCTGAAATTCTCTCAACAAAATCCTTTCCCCTTCCTCATTTTCCCACG -TAAAGTAAAGTCAAAATACATTTTAATTACCATTAATACCTAAATGAACC -AAACAGGTCGGTCTTGCCCTCAATTCTACCATTTAGTCTCACGGCTTTTG -TACTTGTTCACCCACTTCCCCCATTCTATAATCCAACCACACAACTTTTG -GCAACAAAGTGTTCAATCGAAATGGGACACTATTTGCTATTCCTATAATT -GACAGGCTGGTGGAAGGAGGAAAGCAGCACACGACGAAAGGCATAAAACA -ACTTGGCGTTGTGTTAATCCCACCCGTATTGCATTCTATATTAGGTCGAC -AAACAGTTCATTCATGTCGATTTTCGATCATTTCTCAGAGTTTTGCTTCG -AATTGTAGGTTCATGGAGTTAGCCATTCTGTCTATTTTTTCCGCTGAATT -TTAAGATGTTTAATACTTATTTGCCACCTTTTCGACGGAATGACATGTAC -CGGTCAAATCTTGGAATCGATCTAAGAGATGACAATTTTGAATGTATATA -CTCAAAATGGGCTCAAATGAACGAATTTCGTAATGAATTTTTTAAAAACT -TTTTTCAAAATTTTTTATGGTGGTTCAAAGTTTCGAAAAAATTGACCGGT -ACATGTCATTCCGTAAAAAAAAACGCGCTTCTATCTGAAACAACAATTTT -TTTGATAAAAACTTTCAACTACAAACTTGTTCTTTACAAAAAGATCAACA -ATTTATTAGTTGAGCACTTTTCTGTACAAAAAATTATCCGCGCAGATATG -ATCTACCAAAGTGAATTTGGAAAATTGGCCCGTCAATGCTTCGTTGCAGT -GCTATTTTAGGATCTTTGAGAGCTCGCCGTGAGCTTGGCTCTGGAGATTC -GCAGCTAAAAAGGAGTAACCGTTTCTTTAGGAGTAACCGTTTCAAGACAT -GGGCTATCGAATGGCATAGGTCTCATATGCAAGTCCGATGGGCACCTTCT -GACGGTTCCCTAGTCAGATAGAAGCCAAAATTTGGGCGAGGTATGCCCAT -TGTCATTCTAACTGTCGAAAAAGTGGCCTCCGCCAAGACGTGATAACTAT -TTCTCTCAATTACTCTGCACTCCCAATAAATCCTACACACCGTTTGAATT -GAGTCATTCAAGTGTCAGTTGTTCAGTTTCTAGCAGTTGATACGTGTGTG -TGTGTGGTGGTGGTCAACCAACTGTCGCCCTTTTGAACACACACACACAC -ACATACTTTTCCTGCCATATTCCTCCCCAAGAAAGAGAGAAAAATAAGTT -GCATCTTTTCTTTTCTATATCTCTATCCACTAACACACCCTGTTATTCGC -ATGTTCTCTCCATTCTCCAAACAACGCAATCAGTGTCCGCCTAAATCTAC -ATAATCGATTCAGGGGGAATTAACTGTGTAGTTTTGTAATACTTTTCCTT -AAGGTTCTTGAAATTTTATATTTATAACCGACCGATTATGCCTAATTATA -ATTATAATTTAGAGAATTTTTCAATTTAACAACTATTGCGATGTTTTGAA -TTTTTGATAAAACCGGAGTATTTTTTCAAGAAATTCTGTTTAAATTAGCT -GAAAAATTTTGATTTACTAGTTTTTGGTTTGCCTCAAAAAAAATCGGTAA -AAATTTTTTGGGGCTTTTTTCTCAAAAAAAAAAAAAGAACGATTCAGGAG -ATTTTTCATAACTTCGAAACTTAGTGCAAAATCTTTTACGGGGTGTCGAT -TTTTTGATATTCGAAAAATCGGGTTATTGCTCTATTAAGAAAAATTATTT -CCTGGACATATTTTCTGAAGAATTCCTCGTCTTTTCCCATTTTTCTACAA -TTTTTCCTGATTTTTCATAAAATTGAAACTTTCGCTGTTCAGTTTTCCCT -TCAAAATGAATTTTTTCGACGACGAATGTTCAGAAAGTTAACAAATAATT -TTAAGATTTTGTCAAATTTTCACACACGTACTTTTCCACCAAAATTGACA -AAAAACCCTAAAATTTAATTTCTAAAATTTTCAAAAAATCGTGATCCATT -CTTCCTTATCATGTTATGTCTTGCAAGCGTTGCCTCAAAGTCATCAATCA -GCTAGTTGTCATCAATTCAGCGATACTTAGAGATTGAAAGAATGAGTAAT -TCATCCTTGTTTCTTCTTCATCTCCTCACTTCACTTCCAATTTTCCATCT -GTTACCAATCAATTTGGCCTGGCGATTAGTCATCTATTTGTTCGTCAAAT -TTGGTGCAAATTGGCTCGTGTCACTGATAAGTGGTTATTTTTTCTTTTTG -GTTGATAAGGTTACCTGATAAGGTCATTTCCTTTTTGCGCCTTTTTTCCA -GTAGTAATTCCTCTAATGTTCGTTTTGAAGTTACTAATCGAAGTTGTTAA -AGTATTAGATTTTTTTAAAATCAATAGGAATGTTTTTTTAATACAGTGTT -AACAAAATTTTATGTTTTAAAAAGTTAAAATAAATTTTAAAAAATCTCTG -AGTTGAATTGTTAATTTTTAAAACTATAAACAGCATTGGCATTCATAAAA -AACAAATTTCGACAAAAAATTCGTAAAAATTGCTGAAATCGCACTAAAAA -TACTCAAAACACTGAATTTTTTGCTCATAAAATCTGGAAAATCAAGTCGT -TTTACTTGATATTGCCATAGGAAATTACAAAAAAAAAGTGATTTTATTAA -AGGCTGGTCAAAATTTCATATTTGAACAACGTTTTATAAAACCGCTGTCA -GAGTAGAACAATATAGGTGTAAAATGTAGTTAAAAACTATTCTTCGATTT -TCCTACATTTTTTTTTCTGTAAATTGAAGTTTTCTCGTAGAACAAGAAAA -TTTAAATTTAAACCAAGTTTTTAAATTTTCAATTAAAAAAAACTACAATT -TTCGATTTTTAATAAAACATTTTAAATCCCAATTTTTCTTTCAAACATAT -TTTCCAATGCTGATTCTGAATCCATGAAGTCTTAACACTTCAATTTCAAC -ATTCTGTTGCAACAAGTCGTCCCATCTGACCAATAACAAGGGCTCATCAA -TCACTGACGAGGGCCCCCGGGCGCCGCCATCATTTTCCTCTCTTTCTCTC -TCTCTCTCTCTCTCTCTCTCTCTCTTTGTTTCTAAAAAGAAGGAAAATGA -GCTGCAATTTATCAAATCCACGGTCTTTTTCCCTCAAATTCTCTGCCTCT -CTAGTCTTCTCCCTCATGGTCATTGTCGCCACATTTGTGACTCACAAAAT -GGGCCGTATTATACAAAAATAATTAAAGTTCAATGCGTATGCGTGTGTGT -ATTTGTTGCTGGGTGAGGGCAAATGCACATTAGCCACCCACAACAAACTT -ACGTTTTTTTTTTTGTATTTTGCCTTTTTCTTCTTGAAGAATGGTGTCAC -ATCACATTACGACCTTTTCTTTGTTACGGAGAAAAGAAGATTGGAGCGGA -ACTGACTGAGGTGTGAATACTTTGTTGGTTTTTTTGGCTATACCTATTAG -TTACCTTATTTTTGAGAAAAAAAAATTTGAAGCATGTTATTTTTCGAGTT -GTTGGTAGGATGTTGATAATTACTGTTATCGTGATTTTCTTATTAGAAAT -TAATTTTTATTTATTTAGTAGAATTGGGGATTTTTATTCAAATGATCCAA -AATAATCTTTCGACACTGAAATCACGACCATTTTTGAGCCAATCAACGTT -TTCAAACTCCGCCTACTCTGTCTGATTGGTAGGAAAAGTGGGCGGAGCAA -ATTGCTGATTGGTTTCGAAGTTCTCGACTTAGAAATACCAGAGTTCATCA -AAACTGAAATATTGCGTTTTTAAAGGATATATTATTATTATTATTATTTT -CTCTCGATTTTTTTATTCTGTGGTTGCTCTGAATTTCAGATTATTCGAGA -TAGTTTTCGATAAAGCGACAGATTGTTCAGTTTCTGAATTTTCCATAATT -TATCCTCTAAAAGTGAAAGTCAAGGTTTCGTTCTTTGCAAAAAACTCATT -TTTTTGAGAGTTTTCGGAATTTTGGCTCGCATCACGCTCCAATAAATTAA -TTCAAAATTTCGGAAATTATTAACTTCTTCCATTTTATCAATACTGTGTT -AATCTCACTTTTCTAATTTGAAACAAAAATTGAATTTTCATCGATTTCCA -AAATACTTTACATGCTTGGCAATTGAAAATTAGTTTTGTTTTTCAAATTC -TCAGTTTCCAGCCACTGAAAACATTGCGAGCCTCCATTGGGTCCGCTCCT -TCCTTCCGAAACACATTTCCCAGTACTCTTTCCAATCTGGTCAACATTTG -AAAGGCTGTTGGGGGGTCGAAAGGCAATAAACAACCGAAAAATAGTTTAT -TCCAATGTCATCGAATCCTCCCTGGCTTCTCATATTGTTGCCAAAAATGA -TGATGGAAATTGTTTTTCGTTTGTATACACACACATCATCCTGTGCCACA -CCTTTTCCCCACTCTTTTTCCCGACGAGCTTTTTCATTCGGAAGGCGACA -CAGATAGCAATTACCGACATATGGAACCAATCGTACTCTCTCCGCTGACT -GCGACTACCTAATTAACCTTTTATTGAAAAAATGAGAGAGAGAGAGAGAG -AGGATATGAACGGAAGAAGAAAAAGAGGCAAAGCAATTGTTTACTTGTTT -TTCGAAACAATTCAAAATTTTGTTTGGGCTGTGCGCCTTTAAAGATGGAA -AAAAAACGGAAATTTTCCAGCAATTCGTTAATTTTTTTGTCGGCAAATTT -GGCAAATCGGCGAATTACCGGTTCGCCGATTTGCCAGAAATTTTCATTTT -CGGCAACTTGCCGGTTCGCCGATTTGCCAGAATTTTTCATTTTCGGCAAT -TTGCCGGTTTGCCGTTGCCGGAAGTGTTTAGAGGAATTGTTTATGAGACG -GAAGCACTGTGCCTGTTTGCCAATTAAAATTGAAATTCTGAAATTTCCAA -AAAAATGTGCACAAGCACCATTTGCCAAAAACTTTTTCAGTTGCCGGTTT -GCCGATTCGCCGGAAAATTTAAAATCCGGCAATTTGCTAATTTGCCGGAA -AAAATCGTCTACCGCCCACCCCTCCACCGAATTCGGAAATTTTGTAAAAA -ATAACTTTATTTTTGGGCCAATACGATACTACTTTTCCTAAAAAGAAGCT -GTTACAGTAATCAATGTATCATCTTTTCCATCTCGAATGGTACCTGTGTT -TACCTTAACTGTCACATAACTGTGAAGAGTACTTGAGATGACAAGTAGTC -TTATCAGAAAACCTCCCCGCTTACTGCTTCTCGGGTGTCGGGTTACCGTG -TTTGCTGAACGGTTTTTCGTAGGGATTACTGTAGAGAATTGGATGAGTAG -TTGGGATTAGGCGATTAGGGGGAAATTGGAAAACATGTCTGTGCACTCCA -TATGTTTCTAATAAGAATCCTTGGAAATTTGCATATAACTCAAGAATGGT -ACTGGTCCAGTTTCGTTTTGTTATCTTGATTCTTCGAAATGGTGCTCACT -CAACTTGATTCCATCCCCAGGACGCTAGTTATTTTCGTAATCTCCGCGTT -CGATCTCGAGCTCCTCCTCTATGGAAATGTTAATTTGTGAGGGCTATCGC -GTCCACAGATTTATAGCGTCCGTCGTGCGGTTTCGCTGGGTTCTCGCAGC -CACCCCCCCCCCCCCCCACTCATCAATCGCGTAAACTTTTTGTGAGCACG -CAGCACACAATGTGCTCAGGAGGCTTCTGTCTCTTCGGAGATCCAACATG -TGGCACCTCCTCAAAGTGTTCACTGGCCTCCTCGGCTCGGCAGTCAAATT -TATTCATCTCTTTGGAGATTGGCTCACAATTTTTTTGATTTGAATTCAGT -GACTATTTATCGATTTCTAGGGCTTCTATGTAGGTTGCCTGTGTGCCTGT -CGTCTGACGTTAAGGCGGCCTCCGCCTGCCTCTCGCCTCAATCCGTGCCT -TGTGCCAAAACATACGAATTAATTCGATTTTTATCAAATTGATAAAAATG -AGAAAATTAAAAATTTGTAAATTCAGACAGGCCTGAGGCAGGCAGATTTC -AGGCAGGCATCAGGCTCAGAAACCGCGCCTGTCTACCATGGAAGCCCTAC -TGCTATGTAACGTTTGAGATATTCGGTTCAGATAAAATAAGTTGAAGTTA -CGCGAAGAAATTCTGAATTTTGAATATTTTCCAATAGTTTCTAATAGTAT -TTAGATGTTGTATTTAGATACTGTTGCTACAAAATTTTTAGAAAATTCCG -TGGTAAAGTTCAAAAGACTACTCTTTCTCTGAATATTGGTTAATAATATG -AATCCGTTCTGCTTTTTTTCCGTATTCCAATTCTTGACGACTTGATATGA -AGCCAGCTCAAATAATAGGCCTCCCACGTAGTGTCAGGCTGTCCCAATAC -GGTTTGATCGACAAAAAATGCTGGAGTGTTATGCCCTTCAAAATGTGACG -TAAGCGCGCTCTTAACCATGCAAAATCAGTTGAGAACTCTGCGTCTCAAC -TCCCGCATTTTTTGTAGATCTACGTAGATCAAGCCGAAAGGATACACTCT -GTCACCACGTGGCCTCCTAAGGACTATTTTGCAAGGACCTAATTTTCTGA -ACCTTCACAAATTGATCTGCACCGTTTGAGATCGATTGAAAAGTTCTAAA -ATTTTCTGTCCTGTATACTTTTTTCTGTACATAAGTCCTACCGAAAGGGT -CCCCCGCGGTAATAATTACCCGTCAAAACAATGTGTACTACTAGCCGAGA -TATGAGTTGTTATTGTTGTCATAATACAACAAGATTTGGATCACCGCCCA -ATTTTCTTGTCAAAAAGTTCCGCTTATCTCGTTTTCTGCTAATTAGAGAA -TACTCTATGGGAATTGGTTGATCCACTCCATTAGTGAATGTTCCCCCAAT -AACCATGGAGCTGTTAGAACAAAGACGAAAACCCGCCAGAAGACACACCT -TCTTGAGAGCAGGTATTAGAAAAATGAATGAAAGGAATTGGGAGGGGAAC -CCGCGGTGGCCGAGACTTCCCACTTGACCCGATTTGTGCACATACGCAAT -ATCGATGAGGAGTGGTGGTCCATTCGATACAGTCTTGCACCATGTTTGTC -GAAATGCTATTTGGTTGGCTGGCAGATGTTTTTGGTCCAATTTTCTTGTC -AAATTTTGTCTTGATCTGACAGATTTTAGGATTCTTGGAATTCGACTCTT -CACCGAAAAAATATAATTTTTCGGAGTTTGTTCAATTTTTCAGTATCCTG -ATTGGAACATTTTAATGTTTTACAAAATTCGATTCTAAATTTTAAAGCAC -ATTTTGACCTAGTAGGACTTTCGGAATTTTGTAGCCTTTATAAAAAATCG -GTGGCCAAGTTTTCTATAATTTTTTTACGTTTTGAAATTGCCTTTTTATG -AATTTTAAAATGTGGAACATTTTTTGAATGACTTAGTTTTTCAAATTCCA -CGTAGTGTCAGAGTGTCCCATACCAGTTTAATCGACGTTGATCTACAAAA -ATCGCGGGAACTCTGACGCAGAGCTCGCAACTGATTTTGCAGGGTTAAGA -CTTGCTGACGGCACATTTTTTGGGAAAATTTTCCGCATTTTTTTGTAGAT -CAAACAAATTTCATATTGCCTCGATTTGTTCGCTATAGTTGTCTAGTTTT -GAAATCGTTGGAATTTCTTGAAATTCGAGTTCTTGAAACATTTAGGTTTT -CACCTAGTTTTCTCTGCGTGTTTTTTGTGTTGAAAAAACGGTTCTCAGAA -ATTTGACTGCTTTGAAAATTTCGAATTTCATCTCCAAAAAAAAGTGAACA -ATTCGTATTTTTCTAGAATTTTTGGAAATCTCTTTAAAATGAGTTTTTCT -GAAACATTTTAATCTTGAAATAGTCAGAGTTACGTCAAATTCTATTTTTT -GAGGAATTTATTTTTTGTGAGAAGAAAACAACAAATCCGCAATTTTTTTC -CGAATAATTAACCAATCCAAGATCCCCCCTCAAACCGGATGGCATTTATT -CGGATCCCGGCAGGTGTTCGAATGAGATATGTATCCATTAACACATTGTG -CATACACATAGACACATTGTCAACGTATGCCGTACACAACAAAACAACTG -CGCTCGTTCGCACCTCAATCCTTTGATGTTCTCCGCCGGGGGCTCCTGTA -AGGTCAGGAGTTTTCTAAAAATGTTGCCTTCTTCTCCGTCTTCTTCCTCT -TCATCATCGAATATTCCAGAGGGGGGCCGACACGCTTCACTTGATTTTCG -ATGGCAATTTGTTTGAAGAATTCAAGAATTCGAAGAATTTATTTGGAAAC -TCACTACTCTCTTTTTTACGTTTACATCCAACTTTTGGCACTTAGGCGCC -TCCAACTGCAACCATATGGTGCTCAATGAGCCGAGAGGGATCATCTGTGA -ATTTGGTGTTTTTTTCTCAATTGGTTGCCTATTTGATTGGAGAGAGATTA -ATTTGCATACAATTACCTCTATTTGGCTCAGGGGTGGACGGATATTGCCG -TTCGGCATTTTTTGCCGACAAGTACGGCAAATCGGCAATTCGCCGATTTG -CCGGATTGCCGGAAATCTTGATTTTCGGCAAACCGGCAAACATCAGCGTA -CTATTTTACTATTCAAAATAAATGTAGGAACATTCATAGGATGCGTACAA -TTTTGCCGATAAAATTTAAATTCTGAAGCTTCAAAAAAAATGTGCAAAAC -CACAATTTGCCGAAAATTCTAGCCGATTTCAATTCCGGCAATTTTTTGCC -GAAAAAAATTGCCGCCCACCCCTGATTTATATTCAGTCTGTTACCGATTC -TAGTGAGGGGTTTCCAGCCTTTGCATGAATAGGTGTCTGCTACATTAATT -GCGCAATCCACATTGATACAGAGCAACCTCAATTGTTGTTTTTTCTGTGG -CCCGTTCTGCTCGTTACACCTATAAAAAGGTGGTCAAACAAGTCGTAAAA -TTTGGGTCATGAGATGGTCCCTGGGTTAATTGGAGAAGTGCCGTCATTGA -GAGAGAGAGAGCCAATTACGTATGAGGTCTGCTCTGCTCTCGGGAAGACT -CTATAACCCTTCGTTTTTGGCGGGAGATATGAGATATTTTGCTGTAATTA -TCGCACTTGTTTTGGGTATTCTCTTTTTGTATGATTTACCTAAAATTTTT -GAGCAGTTGTGATTATCCTATTTTGTTTCGAGAACCTAGAAATGTTTCCT -ATCATAGTAACCGTTTAACTCTGTGAGTATAGTTTTACTTTAAGTTGCTC -CGTTTTTTATTTGACTAGCACAGCTTTTTTACATTGCTCCGGTTTTGGCC -AAAGGTTTTCTGTTTTTTTTTTGCAGTTCTGACTTATTCTGGCCTGCTTT -ACCCAGCTAAGCCTAGGCCCGGTTACAGTCCATAAGACAACATTTTTGAA -CTCAATAATTGCCGAATTGCCAAAATGCCAAATTTTCGATTGCTGCCCGT -CTGAGTAAGTCTGAAACAGTTTGTGTGAAATTGAGCCGGAAACTACTCGG -AGTGATGTGGCCACTTCCCTATTTAGTTTCTCGGTTGATTTTCACACTTC -CCGCCGAGAGCCCGAAGCATCTGCCAGCTGAACGGTTTCCGTCGTTTTTC -ATGTCTATCGCTAAAATGTGCGCGTTACACACACATAAACATCACTTCTC -TCATAAAGTGATGGATAATTCGAGTGGATTGCATCTGACACCACACTTCC -GATAATCGCTTCGTCGTCTTGTCATCATCGTCGTTTTCTTCGTCTTGTTG -TCGTCCGGTCCCCACACACACATCAAAACGGCTACTTCCGACGTGTCGGT -GGTTTGTGTGTGTGTCAAACGGCACCACCACAAGTGGTTGCCCTCGCCCG -TGTGCTAATTCGCATTTTGTCTTGTTAATCACGCAATAGTGATAACAATC -GCTTCCGGACCATTGCTAATATAATATATTGGCTACCGCGGGCATGTCTT -GGCAATAACCTTGATGTCAAGTTTTATCGTTAAAATGTGAAGCTGTATGA -TTGCGAAAAATTTGAAGTTTTCCCATTCAAATTGTAGGCATATTTGAAAA -ATTTCTGAAGATTTATATCTGTCGTAAGTGGAACGGTTTATTTGGTTTCT -TGGGTCTCGTCGCGAAAAGCTTTCACTATGGTTTGAAGCACGACTGGGCG -ACAATCGAAGTCGAAGTTCGGCAATTCGATAATTCGGCAATTATCGAGTT -CAAGATTTTCGAAAGAAAAACTCAAAAAATAATTTTGAAATCTATTTATT -AGTTCTGGACACGCGGAGTCAGAAAGTCCCATTTCGCTTTGATCTACGAA -AAATGCGGGAGTTGAGACGCAGACATCTCAACTGATTTCGCATGGTTAAG -AGTGTGCTGACGTCACAATTGTTCTGGAAAAAAATTCCCGCATTTTTTGT -AGATCAAACCGTAATGGGATAGCCTGGACGTAGAACTCGCCAAATCGTAG -ATATATGCATAATGAAAACTCTAGAGTTAACTCTGCCACCCTCATAAAGT -GAGTTAGAAACATTTCTGCTCTGAGGAACTATAGAACCCCCTTTCAAGTC -GATCGTCAGCAAATTCTAGAAAGATCTGACAGTGGCCGATTTTTTAATGT -TTCTAGGCCACGTAAAAAAGCTGATGTCTTGTTACTTTTCAATTCGAAAA -TCCCTTTTTTTAATTTTTCGGCAGCACCCGGTCCGAGCCAACATCTTCCT -AAACACTTCAAAACCCCGCCCCCTTCTGCCCTCCCGGGTGTCTCCGTGTT -GTTCAGGGTGTTGTCCACCCCCTAGACACCCAACTGACCATTCACCCGTC -TCCTCCTCCCCCTCTACAACAACCACCACCACCTGATCCATTCCATTATA -ATGATATTCCGCATACTTGTCATACAGAGAATACCCGGTTTGCTGCTGCC -AAACGGTTTTCATTTATTCCATTTCTCACTCCTTGATTGTTGTCAATTCT -TCGATTCGATGCGGCAAAACTAGCGCCAGTGGGGAAATTGCTTTAATAGT -AAACAATTTTTTTTTAAATTTCCTATATTTTTTGTATAAGATTTTCTTTT -TTAATTGCAAATCCCATGGGAAAGTCTCAAATTGCATAAAATTCCAATTT -GAATTCCCTCCAAGATTTCAATGTTCGATGGAGCGCACTTGAATTATTAT -AATTTTTATCAATGAATTTTTTTATCATCTCTGACTGATTTTTCACGATT -TTTTGTGTAGTTTTAGAGGAAATTTACTGAAAAATCCAAGTTAAATGTAA -ATTTCCGATTTTTATACAATTTTTGGACTACTTTCCCCGCCGCCACCGCT -AAAAATCCCAATTTCCTGCAAGTTTTCACCTGCTCTGACTCATTTCCGCG -AGCGCGCGCGCTCGTACTTTTTATCTTTTACTATTTATTTATCTCCTCCA -AAAAAAAATCCCGTTAATTTTTTTTCCCTTACAATTTCTCATAATTTACT -CATTTAGTTTGGCTTAAAAAATGCTAAATTAAATTTTTTTTTCATTTCCA -GATCACATGACACAACGAAAATGAGGAGAAAAATGAAGTTATTCCTATTT -TTATTATTAGTAATTAATATATGTCGGTCGGCCGCTGCTAACGGTGACGA -ATGCCCGAAATTGTGAGTTTTTCGCTTAAAAATCAGATTTTTTTCGAATT -TACTGTGAAAAAGCGGGGGTTTTGCCTGAATTTTCACTTAAAACTGCTTT -TTTTTGCTAAAATCCCGAATTTTTCAGAGAAAAATAATTCAAACTCCATT -TTTCAGCTGTAAATGTGCTCCGGATCCGGTGCAGCCGACGTCTAAACTCC -TATTATGCGACTATTCTTCGAAAAACACGACAATTACACCTATTGCGTCG -TCGAATTATGATCAGGTTGCTAATATTCGGTGAGGTTTTTTGATTTTTGA -ATGAAAAATTTGAGAAATTTTTAAAAATGGGAAAAAATGTGATTTTTAAA -TCAAGATATCGGAAAATACGAAAAAATTTCCAAGAAAATGGTGGTTTTTA -TCGAAAAAATGTTAAAAATGCATAGAAAATTTGGATTTTCGAGTTCGAAA -TTTTCTGAAAACAAAAAAAAAAGTTTTTTTTTACACTAAAACATTAAAAT -TGGATTTTTTTTTCCGAAAAACATAATTTTTCAATTTCTAACAGTAAAAA -GCTCACAAAATTCCTTGAAAATTGACAAATTTAGTATTTTTTACACGAAA -AATGCATTAAAATTGAATTTTTAAAACAATTTAAACTTAAAATAAAATTT -TCATTTATTCTACACGGTAAATGTATTAAAATAATTAAAACTTCGAAATT -TTAAATTAGAAAAAATCAAATTTCCTCCTTATTCTCAATTTTTTTTTACA -GCAAAATTTCAGTTGAATTTTCCCATAATTTTGAATTAAAAATGTGTTTT -ATTCCAAAAAAAAACTATTTTACAACAAAAAACTAGATTTTTTCCCAATT -TTCTATGAAAAATTTAATTTACCAATAACTTATTTTCTTTTTCCAGATCA -CTATTCATATCTTGTGATAATAATAATTTCCAATTTCCGGATGCCTACTT -CAAGTCGTTAACCGCGTTGCATCATCTGCGGATAGTGGTGAGTTTATTAT -ATTATCAGCTGTTCTCTACAGAACATCTGCTTTTTGCGTGTAAATTTAGA -GGTCAATTTTCGGAAAAATTGGAAAAATTGGCCTAAATCTCAATTTGAAG -TAGATTTTCACGTGTTCAAAAATGTTCAAAAAATTCAATCAAAAATTCGA -TTTTTGGAATACTTCAAAAAAATTTAATTTTCTTCGAGAAAACCGGTAAA -TTACAAAAAAAATTCGTTGGCGATTTTTTTCTGTAGTTTTCCAGAAAAAC -AAACGAAAATTTTAATTTTTAATTTTTAAATTTTCCAAAAAAAATTTTTA -AAAATTCATAAATATGTCCATTTTAATTTTAAAAATATCGGAAAATATTC -AAAAAATGAACTTTTCTATCGAAAATTTAACAAGAAAAAATTACGAAAAG -TTCATTCAAAAAATTAAAATTCTTCTATATCTGAGGAAGGCTAACAGTAA -TTTTTTCCCATTTTTTGACTCTTTGAGCAAATAACCGTATCACTAATTAC -CTTAACCATCAAAAAAGAAAGGTGTGCCTGTCTTCTATTCATCCTCCTCT -CGACACCAAATTCTTAAGAAGAGCCCCCCACTCGGATGTCTCTAATTAGG -CACAAATGTTACGTCATTTTGTCATTTGTACGGCCACAGATGACCTCCGG -TGTGCTTGGAGGACTGCGAGAGAGGAGGATTAAGGGGATTTTTATGTCCT -ACAATTGATTTTTTTAGGTCAAAAGTAGGGATTTTAAGGCCAAAAATAGA -GATTTTTTAGGTCAAAAGTAGGGATTTTAAAGCAAAAAAAAAAAATTTTC -GGCCAAAACAGTGGTTTTTAAGGCCAAAAAATTTAATTTTTCCGTTTATG -ACACCTAAAATTGGGGTGAAATTTTTTTTTCGGATAGAAATCTAAAATTG -CAATTGTTAATTATTCCAACATTTTTTTTTGCATTAAACGTTATTGTAAA -AACATTGAAAATCACTTGATTTATCCGAAAATTTCATTTATTTCAGATAA -ATATTGTTTAATAAAAAATGTGTTAAAAAACATGGTGCATAGATATATAG -ATAATTTTGTAGAATAATTGAAAATTGCAATTTTTAACTTCCTACCCGAG -TAAACAGAATTTAAATCCAATTTTAGGTGTCATAAACGGAAAAATCCCAA -TTTTTGGCCTTAAAAAATCCCAATTTTTCGGCCTAAAACTCCCTAATTTT -GGCCTAAATCACCCTATTTTTAGCCTAAAAAAGTCCCCTGTTTTTCCATT -TTCCCCAGGAACTCGTAGAAGAACATGTGTTAGGCGTGAAGAGGTTAAGC -CGATTAGCCATGTAATATTCAATACTTGAGTATAGAAGGGCCAGAAGCAG -CAGCAGCAGGGGGTGCTCCAAGAGCACCACCTCAACAGATGTATAAAGTG -GTTTTCGAGTAGATTTGTGGTTTTGCACACGGTGGAAGAAATCTGAAATT -TGAATTTTTTAAAGCCATTTTTGTGCTGAAAAATGTACAGAATAACCGAA -ATTTCACCACCCTTTAAGGTACGGGAAATCTCCGGGAAAAAGGCTCAAAA -ATTGCATAAAAATGGAGATTTTAAAGCTAAAAATAGCTATTTTAACAAGT -TTTTTTGCAGGGATGCGAGACCACACATTTCTCTGTGAAATTGTTCGAAG -ATTTGGCCGCTTTGAGAAGATTGGAACTCGATCAGGTACATTTTTCTTGG -AAAATCTAGAAAATTTTGCTGAAATTGGCTCAGAAATGTCCTAAATAGTA -GAATTTTTCATTAAAAAGCCTCTCAAAACGGCTTAAAATTAAGTAAAAAT -CGACATTTTTTCACAGATCTCCACCGCCTCAACCTCTTTCGAAATGACCG -AAGACGTCCTAATGCCGTTGGCTCGTCTCGAAAAGTTTTCCCTCACGAGA -TCACGGAATATCGAGCTTCCACAGCGACTTTTGTGCTCTCTGCCGCATTT -ACAGGTATATTTTTGGGTAATTGATAATTCGCCAAAAAGAACAGCAGCCG -AAAACTCAAATTTTTCACGAAATTTGCCGAAAAACTAGATTTGTAAAATA -AAAAGAATGCAAGAATTTTTAGCTTAAAAATCTCAATTTTGAACGATTTT -TAAAGCAATTTCAGTATGAAAAATCCAGATATTTTTTGGGTAAAAATTTG -GTGAAAACGCGTTAAAATCTGCATTTTTGAACGAAATTCGCCAAAAATCA -AGACTTTTGTAGTGCATTTTACTGTAAAAATGTATACCTATTTTCTATTT -TTATGCGTACTGCGCAATATATTTGACGCGCAAAATACCTCGCAGCGAAA -ACTACTCTTCAAATGACTACTGTAGCGCTTGTGTCGATTTACGGGATCGA -TTGATAGAATATCAAAATTAGAAATAAATGGGAAACTACTGCGAAAACAA -AAATTTATTTCAAAAATTGAGTCCGTAAATCGACACTACAGTAGCCATCT -AAAGAATTACTGTAGTTTTCGCTACGAGATATTTTGCGCGTCAAATGTGT -TGCGCAGTATGCATTCCCATCTTGTTCTCTACATTCAATTACCACCACAT -CTCACAGAGAAGGAATTAGTTGTTTATTAGTACGTGGGGGGGGGGGGGCT -TTAAAGCTTACTACTTCTTCTTTCTTTCCACTTTCTGACGTTCAACCATC -TGGTATTCCTGGCGGCGGGGCAATTGAAAATGAGAACAAAAGGACATCGA -TGGAGGGAGGAGGATTGAGAGTTTGGAAATTGTGAAGAATGCGCGCGGAA -GGAGGAGGTCAAATATCACAAGCGCCGGAAGTTGTTGTCAGCCAGAAGCA -ATAAAGGCCTAATTATGATGATGATGAAGAACCTCCCTGAAAGAGAATAG -CGAAAATGTGAAGTTTCCATCTCAAGGGAGCGATTTTTTAGTGATCATGG -AGTCTTGAAGTGTGCACATAGTCTACGTGCCCCACAAGAGCCTATGCCTG -CCTTATGCCTACTCACATGCTCACAGCCAAACTCTTTCGAAATCAGAATT -CTACATTGTAGAATCTACAACACTGAAGTTTCTGCCATAACGTTGAAAAT -AGGCACCTACGCCTGAATACGTGCCTGATCAACATGGATGCCATATAGTC -CAGGCTGTATAGTCGTAAAACAGGGATTTTTTAGGCTCATGGGTTTTTGT -CGGAAAAAATCGAACATTGAGAAAACCAGAAATTTTTCAAATTTTCGTAT -ACTATTCCACGAATCGTTTCTCCCGTTTATCGAATCTCCACGTCGCACTG -TAATTTTTCAAGTATCGTTAGTCCATTCGCCCGAGAAACTCCACAGTTAC -AAATGCTTTGCAAGCATTTTCAAGAAACCATGGTTCCTGGCATGTTTTGG -CGCATTCAATAATGCCGCTAATAATAATAATAATGCCTCCTATTATGATG -TCGCGTTGTCATCGTTTGCTGCTGCTCCGTCAGATACTTTATGGGGTTGT -TGTTTTCTCCCTCCGCATCAAACGACGTTCCTCTCTTCAAAATGATGATG -GATATACATATATCTATGTTTATAGAAGAATTGAACCCCACACTTTACAT -ATGAATAGATGGGGACCTTGTTACCTTGACTATCGGGAAGAGATTGAAGG -TTCCAAAGACGGCTGGCTGTGGCTCATTAGGCTAAATGATGCGTGATATT -ATTCGCTCTACGGCACCTCTATGATCCAGGAATAGCAGTCACTGTCAACA -AGAGTCACCTCACGGCAACAATACTCCGCTAATTACGGTTTGCGGCAAAT -CCCAGAATTTATTTGAAATTCTAACTGGGTGTTGCAGATGGGTCGAGGAA -ATATGATAGCAATAATTATTGTTACGTGGCAATTGTAATCCGTCAGATAT -CGTTTCGAGACCTGCTGACTCAAGAATGTGAAAATGGACAAATTTGGAAA -ATAGGTAGCGGAAAATTTTCGCAAGTTTTGAAAATTTCGGTCATGATACG -ATACGAACTCCTTGATTTTCACAGCCCGACAAGCCGTACGCGTACGCAAT -TTGTCTACCGTATACCTGAACGTTCAGGCTCGTCTATCTCGAAAACAGTT -GGTCCAGCCTTTTTGTGGGGCATATAAAAAAGGTCAGAACATAAATTCTA -AAATTTTTTGGACCATAGCTTGTTTCGTTATCACGCGCCCAAACCTGATC -TACACTCAAATTATCAGTAGAGCGCATTTGCATGGATGTACCACTTGCCG -GGCCGTGATTTTGAATGGAATATTAAATTCCACGTCACTCTAGTGAATCT -CCGCTTCTCAATATGCTTCATAATTCATCAAATTCAATTCATTTTCGGAT -AAGCCAGTTGTAAACAGTTGTGTGTGTGTGAGTGAGCTCATCCTTCATAA -AATGAATAGAGATAGAACACTGACACTCTCTCAAAGACAAGAGGAATTAA -TAAATATGAGAGCTCATTAGCTGCTCTTCTCGTGACTACTAATTAGGAGG -GTGGTACATGAAACAGTGTATGTGTAAAGGGATCCCCGCCGCCGCCGCCG -CCAATGTCTTTCGGTGTATGGCAATATCCGAGTGGTGTTCTCATTTTGAA -GAGAGTATTAGGATGTAACGTATCAACTGGAGAGAGATAGTTCAAAGATT -GGGGATTTGAGATATTTTAGGTGTCGAAATGGATGAAATATAAGCATAGG -GAGGAAATAAATAGAAAACGATATACTTAAATAGCAATAGTTATTTGAGT -TCTTACTGTAGTTTTCGCTAAGAGATATCGCGCGTCAAATAAAATGCTCT -ACGTACGCATTCTCATGATTTATTGTTCCCGTAATATAAACATAGCAAAC -ATTTTTAATGTTTAAATATTCCTCAATGCTATTGAAATTCAAATTAGTAC -AAAGAAAGCAATTTTTCGATTTTTTTAACGAGAAAACTAAGTTTTCATCA -AAAAATATGTAGATTTTGATGAAAATAATATGACAATTTATTTAAACCTA -TATATTTTTTTGTCCAAAACAACTTTACGAAAAAAATTTTTTTTTAAATA -AAATTATTGGATTTTTCGTCAACTTTACGATAAATTCCGAAAAATTAACA -ATAAATATAGGAGAAAAAAATCCGAAATTAACGAAATCCCCTGTTCCAGG -TTCTGAATATCTCGTCAAATGAGCTTCCATCACTGCGAAGAGAGGAATCG -TGTGTCGCTCAGCAGCTTCTGATCGTCGATTTGTCTAGAAATCGGCTCAC -CAACATCGAGTAAGGGATTTTCCGGATATTTTATAATTTTGATCTTTAAA -AATTTCAAAGTTTGTGAAAATGTGAAAATCTAAAAATGTGGAACAAATAT -TGGTTTTATCTATTTAATACCCCAAAACTTTGAGATTTTTCCGTTGAAAA -ATCGAAAATTCGAAAATTATCTCAAAAATTTCAGGCAATTCCTACGTGGC -ATCCCGGCAATCCGGCAAATTTCGGTGGCTTACAACTCGATCGCCGAGCT -CGATTTATCGCTGGCAACTCCATTTCTACAACAACTCGATGCTGAAGCCA -ATCGAATCGTCGACTTGACGTCACTTCCAGGCACTGTTGTACACGTGAAT -TTGGCTGGAAACGCGCTGAAAAGGGTGCCGGATGCGGTAGCCGAGTTGGC -GAGTCTTGTGGCGTTAAATGTGTCGAGAAATGAGATTGAAGCCGGAAATT -CGTCGGTTTTTTGTGGGTTTTCGGATTTTTTTTTGGAAATTTGAAATTCG -GAAAAAATTCAATTTTTACATACAATTTTGCGTATTTTGATCATATTTGT -TTTAAAAATCGAGAAATTTAAAAAAAATCAAATTTCGCTTATTTTCATTG -GAGAATACATGAGAAAAATATTTTTGTTTCGAAAAAGAAAAATAGCCAAA -ATTTAATGCTATTTTTTCGAAAAATTTCGATTTTAATTTTTGAAAAAGTA -TTGAATAATTTCATCAAATTTGTTTTATTTTGATGAGAAAATACGTGAAA -AATGGAAAAAAAATATGAAAATCTTTAAAACAAAAAAATAATCAGATAAT -TATGCAATTTGGCCTGAATTTTCAAAAAAAAAACTTGGATTTTCGAAAAT -TTCATCAAATTTTGTGTATTTTCATGCAAAAAAAGATAGGAATTTCCAAT -TTTTGACCTTAATTGCAAAGAAAAATTCCTAAAAAATTGTAACGTTTCAA -AATCTCGATTTTCTTCTGAAATTCTCAAAATCTTCATATTTTTCCAGCTT -CCCCAGAACTCGAAATGCTCGACGCCTCTTACAACAAATTGGACAGTCTG -CCCGTCGAATGGCTTCAAAAATGCGAAAAACGCATTGCTCACCTCCATTT -GGAGCACAATTCGATTGAGCAGTTGACTGGTGGAGTGCTGGCGAATGCGA -CTAATTTACAGACGGTTCGTAGACTTGTTTTTTTTTTTTTTTGAAAAAAA -ACACGCTGAAAAAATCTAATAAAACCCAAAAATTTGCATTTTTGTTTAAA -AAATATGAAAAATTGTTCAAATTCCTAGTTTTCAATATTTTCAACAAAAA -AAAATTCTAGAGCTTCCATGGTAGGCAGGCGCGGTTTCAGGGCCTGACGC -CGACCTTTCGCCTCTTTTTTGCATTTTTACGGGAATTTTCAAATTTCTAA -TTTTCCCCATTTCTATCAAATTATTGAAAATCAAATTAAAAACGCGAATC -GCGTATTGAGGCGAGAGGCACGCAGAGGTTGCCTTAAGGTCAGACAGGCA -AGCTTTTTAACGCCTAACGTAATTTTAAAACCTGAAACATTAGAAACTTC -CACACGTTTGTAATTTCACTGAATTTTACTGCACCTCTTCATAAATTCAA -TGTATTTAGATAGTGTAATTTTTAAAGGTGGAGTGCCGAAATTAAAGACT -TTGCTTTTTTAGACCAAAATTGGTCCTAAATAACCGAATTTCGTAATGAG -ACTTTCTGAAAATTTCTCAAAAAAAAGTTATGGCGGTTCAAAGTTCGGGA -AAATAAGGTCAATTTTCAGCTAAAATCAAAATTTTTAAAATTTTTTATTT -ATCACTTTTTGATAAATATTGTGGTCTTTGATTAGGCGGGGCACCAATAA -AAGTTACATTTTGTGCCCCACTGACCATGAATGTATTTAAATCAACGAAT -AAACGCCTAATCAAAGTATTTATTAAAAAGTGATAAATATAAAATTTAAA -AATTTTGATTTTAGCAGAAAATGGGCTTTTTTTTCTCAAACTTTGAACCG -CCATAACTTTTTTTTTGAGAAATGTTCATTACGAAATTCGGTAGTTTTGG -ACCAATTTTGGTCTAAAAAAGCAAAGTCTCAAACTTCGGTACTCCACCTT -TAAAGAACAGTGTAATTTTTTTCTATTTTCCAATCAGTGCAACTCTAATA -GCAACTCTAAACTTATTTCAATAAACTCTAGGCACAGTATTTTGAATAGG -CGATCGCGTGACAGTTTTAACCAAACATAGTCATGATGACCTTTTGTCCT -TACAGAATCTTCTCAAGTTCATGCACACACAGGTGTCATTTACTCTGTCA -AGTATTGTATAAGTGTGATCCCGAGAGTATTATAAATGGTAGTTAGACCA -CCCTTATGGTTAAGTTGTTCGTATAATTGTAGGGGTGGGGATCTTACCAC -ATTTATACGGCCCCCCTCCTATTGTATTGTATTGTTGCCACCAGTCGTCT -TGAGAATCTCTTTCAATCCGGGGTGACAGAAGGTGTCATATTGTCGGAAT -GTGTAATAGGTGGGTCTCGAATGGATATCACTAACAGCTGTGAAGGGATC -CGAGAAGGGTTTTCGGTCTTTCTAGGGGTTTAACTTTCCGCTGTCAATAT -TATTAATCTTACAAGGAAAGGGTTTTAGTTTACCGTCAGACTTTAAAACG -AGACATGTGTCATTTGAAAGTGTTCCATAAGTGTATGTCACTCCAAAATT -TCAAGCGGCAAAGCTCCAGTCTCAAACCCTCTAGCATCGATCTGAAAACG -TTTCAGTGCATTTTTCACTACTTTGAGGCAAGTAGAATTTCTCCAAAATG -TTTTTTTTGCAAATCTTCAATGTTTTTCAGAACGTTTAAAAGAAGGAAAA -CAATCTGGAAAATTTTTGGAAAATTTTAAATTTTTTGAAAAAAATCTGAA -ATTTCTTGGACCTGGTGGCGTGAAGAAATGTTCAGATTTTTTTCAAAAAG -CTTAAAAATTTTCCAAAAATCTCCCAGATTGTTTTCCTACTTTTAAATGT -TCTGAAAAACATTGAAATTTTGCATGTTAGTACGATTTGATAATCGTGTT -ATAATTACATTACACATACATAATAATCAATTGAAATATACAATTCTTAA -TTATAACCTGAAATTGAGATTAGATACCTTAGACAATACAACAAATAAGA -ATGTGATCGATTCAGCAGACCCCTATTTGTGAAAAATGCCTTCTAAATTT -TATTTTACACTTCTCCTAGTAGATGAACAGCACCTGCCAATAATTTCATT -GACAGCCGGATGGTTTTTGGCTCCTCTAAGACAGTATAATCCCGTCTCCC -CCGGGGGGAAGTGGTGTCAAATTGCTTTGCGGAGCAGGTGCTTTTTTCTG -AATCGAATTGGCTTATTGGTGACGGAAAAACCCCTAATAGAATTGATACA -ATTTGGTTTTCAAGAGGATTTGGGGAAGGGTTTAGAGGGTAATTGAAACT -GAGTAGATCTTCGTCTGTCGTGGAGATCAGAAGATTGAGGGAAGTACTGG -GTTTAAGGGGGTCAAGGAGTACTGTAGCGCATTTCGAATACTACTTTAGA -TAGTTTAGGTATTATATCAATAGGATAATATATTATCAAGTTGCACCAAA -ATTGGAGATTCTAGTAGTGCATTTTCTTTATATGCTAGGTATGTATAAGT -TTCTAATAAGTGTATATACCTACCATGTACCTAGGGGGAGTAGAGTTTGT -GGGTATTTTGCTTAAATAGACTAAAACGTGTCCAAAACCACCGAATTTCA -AAATGAGACTTCACAAAAAATTTCCAAAATTTTTTTTATGGAAAAAAGAG -CAAAATTTAACTAAAATCCGAAATTTCGCACAGTTTTCTTTGTCACAGCC -GCTGGATTTGAATTTTTCTGAAATTATCACCCTTTAATCCTTATTTTAAT -AATTTATCTCGCGGAAATTCGTTGATTGAGACAACTTTTAGGCCGATAGG -CATCCCATCTTGATCATTTTTGGATGCCTATCGGCCTAAAAGTTTTTTAA -TTTCAGAAAAACTAAAATCCAGCTGCTGTGACAAAGAAAAGTGTGCGAAA -TTCCAGATTTTAGCAAAATTTGACTCTTTTTTTTCTCGAAATTTTGACTC -GCCATAAAAATTTTTGGAAATTTTTTGTGAAGTCTCATTATTAAATTCGG -TGGTTTTGTACCAGTTTTAGTCTATTTAAGCAAAATACCCACAAACTATT -ACACTTTACTTTAACAAGACACACAATAATTCACAAATGGTGTAGTATCA -TGCCGGAATTTATATAGGATTGATTCTTGAAGAACGAAATTTTAAATAGA -TTATTGCAGACTATGTAACACTATTTGTATAAACAATTAACATAGTGTAT -TGAATAATGACTTTATTGAAATTAATACAGTTTTTGATATACCCATCTTC -TATTAGTATATCATGCAATACTAATAGGTAATATGCAATATCACTTTAAT -TGTTATTTCCCATGCGTCGTGTTTATACAAATGCTTTATATACTCGAATA -GTCTATAATAATCCAATTAAACTCGAGAATCCCAATACAGAATATAGTGT -TTACCAAAAACACTTGTGTTATTATTCTAATATACATGCACACACACACC -CACACACAGGTTTGACACCAGTTCTACTAATATTTGCATAATACCATTGA -GATACCTGAAGTACCCTATAGATATGCACGGGATTCGTTTCGGGCACTGC -CACGGAAAATATTGAAAAAGTGTGGTAAATTTACGAAAAACAACAAAAAA -AATGCGATTTTCCAGAGAAATACGAAAAAAAAGAAAAAAATATTTAGAAA -ATTAACAACAAAAAAAAAAATTTTTTTTTATTAAATAATAAAATGTGTTC -ATTCTGTTTTTCCCCTTTCAGTTAAACTAGGGCTTCCATGGTAGGCAGGC -GCGATTTCAGGGCCTGCCTGAAACCTGCCTGCTTCACGCCGGCCTCAGGT -CGCCTTAAGACGGCTGCTAAAAATTTGAAAAAAAAATTTCAAAATTTGAA -TTTCCGCGCTTTTTTCGAATTCCTAGAACGCTTTTTTTTAATTAAAAAAA -AATTTCAGTTGGACCTTTCATCGAATCAACTTCGAGTTTTTCGAGACGAA -GTACTTCCGGAGAATTCGAAAATTGGAAATTTGAGACTTTCCAACAACTC -TTTGGAGCTCCTCGAGCCGTCGAGCCTGAGCGGCTTGAAATTGGGTAATC -TAAATTTATATGAATTTTGCAAATTCTAAAAATCCTAATTTTTTCTAGAA -TCCCTTGATCTGAGTCATAATAAGCTGACAGAAGTGCCCGCCGCAATTGG -AAAAGTCGAGCAGCTGAAAAAAGTGGATTTGAGCCATAATAGAATTGCGA -AGGTTTATCAATATGTGCTCAATAAGATTAAGCAATTGCATACTGTTGAT -TTGTCGAATAATCAGTTGCAAAGTGTGAGTTTTTTGTTGATAAAAATTTA -AAATTTGAATTTTTTCTTTTTTTTTAATTATTAATTCTGAAAAATTCAAC -GAAATTTCCGAAAATTACTTGAAATTTAAATTTTTATCCAGAATTTAGTC -TATAAAAACGAAAAAATACGAATTTTCGATTAAAAAAATTAATTTATTTA -AAAACACACTTTCGAAAAAAATTTTGAATTAAAAAAAATTTAAAGTTCCT -TAAAAAACTATTTCCTCAATTTTTTTTCTGAAATTTCACTCTTTCATTTT -TTAATTCATTTTTTAAGTCTATAAATACGAAAAAACACGAATTTTCGATA -AAAACACATTTTTCAAGTTTTTAAAAATAATTTTAAATTGGAATTTTTCT -TTAAAAAATTGTTTTTTATAAAAAAACACATTAATGCATTTTTTAAAAAA -TAATTTCTTGAAATCTTCCAAAATCGGTTGTAATTTTAGCGAAAATAACT -ATTTTTTCCAGTTTTTATTTAAAAAATCCCTCGAAATTTGAATTTATCCA -GAATTTAGTCAATAAATGCGAAAAAATACGAATTTTCGATTAAAAAAATT -AATTTATTTAAAAAACACTTTCGAAAAAAAAATTTTCAATAAAGAAACTA -GTTCTTAAAATTTTTTTTCTGAAATTTCACTTTTTCATTTTTTAATTCAA -AAAATTTGAATTTATCTACAATTTACTCTATAAATACGAAAAAAATACAA -ATTTTCGATGAAAAAACACAATTTTCAAATTAATAAAAATATAATAAAAA -ACATATTACTAAATTTTTAAAAAATAATTTCTTGCAATTTTCCAAAACCG -GTTTTAATTTTAGCGAAAATAACGATTTTTCCAGTTTTTATTTTAAAAAT -TCCCTTGAAATTTGAATTTCTCCAAATTTTTTCTTGAAGTTTTTAAAAGT -TCCATCATTTTCTACTGGAACTTTCAAAAAATGTTCCTTAAAAAATCTCT -AATTTCCGCTAATTTCTACGTAAAATTTCAGCAAAAAAACAACGACATTT -CATGTTTTTTTGTTAAAAAAATAATTTTCTTGAAAATTTCTTTGGAATTC -GATTTTTTTTGAGTTTTAACCCAATAAAATGTATAATTTAAAAATATAAA -AATTCCAGATCGGCCCCTACATCTTCTCCGACAGTTCTGAACTTCATTCC -CTGGACGTGTCGAATAATGAGATTTCACTGCTGTTCAAGGACGCTTTTGC -GAGATGCCCAAAGCTGAGGAAAATTTCGATGAAAATGAATAAAATTAGTG -AGTTGAAGCACGAAAAACTGCCCAAAAATTAAAATTTTGAAATTTTTGTG -TTTAAAAACCTAGAAAATCGAGATAAAGTAGGCTTAAAGTTGCTCAAAAT -CCGCAGATTTTTTGAAATCGATTTTGAAAAGTGCACATGGAGCTAAATCA -GACTTCAAAATTCTCAAATTAATTGCATTTTCACTCGAAAACCTCTGAAA -ACTGCCTTCTTCCTATATTAAATCAAATTTTCTTTCAGAATCCCTCGACG -AAGGTCTCACAGAAGCTTCCGGCCTCCGACGTCTCGACGTATCTCATAAC -GAGATCCTCGTGCTGAAATGGTCGGCTTTACCTGAAAACTTGGAGATTCT -CAACGCTGATAACAATGATATCAATCTCCTGACCGCCGCCTCAATGTCCC -CAAGCACCGCAAACTTGAAGTCCGTTTCGCTTTCCAACAACGGCATCACC -ATAATGAATGCGGACCAGATTCCGAATTCGCTCGAGTCGCTGGACGTGTC -GAATAATCGACTTGCAAAGCTCGGGAAGACAGCGTTGGCCGCGAAATCTC -AGTTGAGAAGGCTCAACTTGAAGGGCAATCTGCTTACCGTAGTGGCCACC -GAGTCGATGAAAGTCGTAGAGGCTGTGCATCCGTTGAAAGTGGAAATCTC -GGAGAATCCTCTGATCTGTGATTGTCAGATGGGATGGATGATTGGTGGAG -CGAAGCCAAAGGTTCTCATTCAGGACTCTGAAACCGCAAGCTGTTCCCAT -GCCGTTGATGGGCATCAGATCCAGATTCAAAGTCTCAGCAAGAAGGATCT -ACTGTGCCCATACAAAAGTGTATGTGAGCCGGAATGTATCTGCTGTCAAT -ACGGAAATTGCGATTGCAAATCCGTATGCCCCGCCAATTGCCGATGCTTC -AGAGATGATCAGTTTAATATCAACATTGTCAGATGCCACGGGAACTCATC -AATGGTGCCCAAAAGAGAATTCGTGGTCTCCGAGCTCCCGGTCTCTGCGA -CAGAGATCATTCTGAGCGGAGTCACCCTTCCACAGCTCCGAACTCACAGC -TTCATCGGAAGACTTCGTCTCCAGAGGCTTCATATCAATGGAACCGGGCT -CCGATCCATCCAACCGAAGGCTTTCCATACTCTTCCAGCACTGAAGACGC -TGGATTTGTCGGATAACTCGTTGATCTCGCTGAGCGGGGAGGAATTTCTA -AAGTGTGGAGAAGTCTCGCAGCTTTTCCTCAATGGAAATCGATTTTCCAC -GCTATCCCGTGGAATCTTCGAGAAGCTTCCGAACTTGAAATATCTGACAC -TTCATAACAACTCCCTCGAAGACATCCCTCAGGTTCTTCACTCGACGGCG -CTCTCCAAGATCTCCCTGTCATCGAACCCCTTGAGATGCGACTGCTCGGG -AGGATCCCAACAGCACCTTCACCATCGTCGTGACCCAAAAGCTCATCCAT -TCTGGGAGCATAATGCGGCCGAGTGGTTCTCGTTGCATCGGCATCTTGTC -GTTGATTTCCCCAAGGTTGAATGCTGGGAGAACGTGACGAAGGCCTTCCT -GACGAACGATACGACAGTGCTGAGCGCCTATCCACCTAATATGGGAAATG -ACGTCTTTGTGATGCCTATTGAAGGTTGGTTTAAAATTTTTAAAAAAACG -CGCGTCAAATATTTTAAAGTCTTTTGTTCGAAAAATAACCATTTTACAAT -ATGTAGGATATATCTATAACAGCTACTGTAAAAACTCCAGATGTTTGAAT -TTTTTTAAAAATGCGACGTGGTAAATATTATATTGATTACATATTATTAT -TACAGTGTATTTTTTTCCACTTCTACGACTTTAAAGGGGGGCGCATTTAC -GCGCGATGGTCCCAGCATTGGTCTCGCCACGCACCCCAAAAATCAATGGG -TGGCGCGTGTCGAGACCATCGCGCGTAAATGCGCCCCCCTTTAAAGTCGT -AGAAGTGGAAAAAAATTCACTGTATAATTATTAGTCAAATGATACTTATT -ATGATATTAGAAATTAAAAAATTAGGTTTGAACATTTTTTTTCCTCGATT -TTTTTACGGTATTTCACCATGTATGCGTTATAAATACAAATATGATCCCT -ACCTTTTTATAACTTTAAAATAACTTTTAAAAAGGAATATAATACATGCA -CAAGCACCATAAAATTTCAACGTTTGCTTTTTCTGGTCCGAAGAATTTTT -TCAATACGTTTACTTTATATATCACATATACAAACAATATACTGAGAATG -CGTATTGCGCATTATATTTGACGCGCAAAATATCTCGGAGCAAAAACTAC -AGTAGTCCTATAAATTCCTACTGTACTGCTTGTGTCGATAGAATATTAAA -ATTGCAAAAAAAATTTAAAAAAACGAAAAAAAAACAAAGTATAAGGGAAT -ATATAGCTATTCCAAAATAAATCAATTTCAAAAATCGAGCCCGTAAAAGA -GAAGGACTTACTGTAGTTTTCCCTACGAGATATTTTGCGCGTCAAATATG -TTGTGAAATACGCATTCTGAAGATGTAGTGTACTCGTAATATATATTTTT -TAACAATTCAAACATTTCCAGAATTCCTGCGCGACTACAACTCAACAATC -TGTGTTCCATTCTCATCTGGATTCTTTGGACAAGACCCTCAGAATAGTAT -ACTCTTTGTAATAATAACTATATCGATTGCTGTTCTCCTCTGTGTCCTCG -TTATTCTCGCAATTTCATTTATTCGAAAATCTCACGACGCAATCAATCAA -CGAAGATACAAAGCATCATCTCTAAATTGTTCAACATCAGCCGGCTCGTC -GCCTCTTCCGGTTCCGCTGTTGAGTTATCACGCATTTGTGAGCTATTCGA -AGAAGGACGAGAAAATGGTGATTGATCAATTGTGTCGACCGCTGGAAGAT -GAAGATTATCAGTTGTGCCTGTTGCATCGGGATGGGCCGACTTATTGCTC -GAATTTGCACGCGATATCTGATGAACTCATAGCTCAGATGGACTCGTCGC -AATGCTTGATTCTTGTGTTGACTAAACACTTTTTGGAGAACGAGTGGAAA -ACGCTGCAGATTAAGGTAACAAATTCAAACTTTCAGTTTAAAATTGATAT -ATTCGTAAAAATAAGATGTTCTTAAAAATTCTGAGAATGCGTGTTGCGCA -AAATATCTCGTAGCAAAAGCTACTGTAATTATTTTATATGACTATTGTAC -CGTTCAAAATTACTATCCAAATATTTGATTTTTTGTTTTAAAAAATTATT -TGGAATTTACTCAAATATTGAAAACAATATTATCGAAATTCCAGAAAATT -TGGTGGAAATTCCGAAAATTTCAATTTTTTCGCTAATTTTCGAGAAAAAA -AAAATTAAAATTTGGATTATATGAAATAAATTTCCAAACATTAAATTAAA -AATTTTTTTTTTTTGGATTTTCCAATCTCGAACCTTCAAAAATTGAATTT -TTTTGAAATTTTTTTTCGGAAAAAGTAAAAAATGCTCGAAATATCGACAA -AAAGTTGAAGTATTTTTTTTTGTAAAATTGGAGATTTTTGAGATAAAAAA -TCTGAATTTTCATTCAAATCTTGAACATCAAAATCAGCAAAAAAAATTGC -TATAAATTTATTTAAATAAGATTTAAAAAGAGTAATTCGCTATGATTTCA -AATTTTCAAAAAAAAAAATTTTTTTTTCAAGTTTTAATTTTTGAACACTA -TCAAAAAATTTATTTTTAAACCAAAAAAATTCCGAATTTTCTGTAAAATC -TCAAAAAAAAAACATTCCTAGAAATTTAATCGAATATGATTTAATAATAC -TATTTTTAAATCATATTCAATTACATTTCTAGGAATTATTTTTGCTAGAT -TTCAAAAAGTGTATGAAAAATTAAAACTTTTTGAAAAAAAAACTGTTCTA -AATATAATTTATAACACCAGAAATTCACTAATAACACTCCACATTTTTCC -AGACCTCCCACCAACTATTCGCCAAAAACCGTGCAAAACGAGTGATCGCC -GTGCTCGGCGACGGTGTGGACGCGAATCTGCTGGACGATGAGCTCGGACA -GATTCTACGGAAGCACACGAGAATCGAGATGCGGAGCCATTTATTCTGGA -CACTTTTGCACTCATCACTTCCATCACGACTTCCATTACCATCGAATAGT -GGCGATGATTCGTCTCAACTATATTCGGATATCTATGGAATTGTGCCTTC -CGATGTTGTTTAGCTTACAGTTTTCCCGTTTAGGTCACAGTTTTTAGTAT -TTTTTTTCCTCTTCCAAATGTACGAGTTTCCATTATTCACGAGGTTTCTT -TTTCACCCCCAATTCTTCTGTGCACAATTTGCCATTTTTTGAATTTTTAC -AACAATACCGGTACTATATTTTTCGATTTTCTTTCTTTTTCTATGAATCT -TGCCATCATTCTCTAATAATTGACCAGCGATTATATTTTTGATTTAATAA -TTGAATATTCTCGTTTTTCAGTTCAAATTATTGCTTTTTTCTGTCACCAC -AAATTCAAATTCTCGTCCTACCCTGTGTGATCTTCTGTAATATATATATA -TTAATAATCGTCGTTTCTTCTTGTTGTCATTTGCGGATGCTTATGAAGCT -TGTATTTTAATTTTTTGTTTTGTTTTTTTTCCTGTTTCAGCTGCAAAAAA -TTCGGTAGAAATTCTTGAAAACACGCAAAAAATGAATAAAAAAAATAGTA -TATTAGCTTGTTCGAGAGGAGTTCACAAGCGGGTGGCCTAACATCTCCGC -GGCCGCCCAGTGGTGTACTCCTCTCGGGTGAAAGAATTCCCATTTTATCA -TCAGTTTTTCGGCCTATTTTTTCAGTTTTTCTCAACTAAATAGTCAATTA -TCTCTTAAATAATGTCGAAATTAATTTAATTTACACATTTTTCCAATAAA -ATTCCAATTTTCGGTCATTAAATTACCCCTTTCGAATTTTGCTCTCAAAA -ATTAAATTTTCATCGATTTTTAATTCTCAAAATTCTTGAATTTTCAGCGA -AGATGGGCAAATTCAGCAATCAGAAGAAAAATCGTGTCAAGAACAAGGTG -GCGGTGACAGTAAAAAAAGCGCAACGCATGAAGGCAGACGCTAAAAATGC -CAAAAAAGACGGTGAAGTGGATGTTGAGATGAAGGAGGAGGTGGTGAGAG -TCAGAGGACTCGCCGTATCGTCGCTGGTGAGAAAAAAAAGGAAAAACTCG -GCGAAATTCTTGATTTTGATTTTTTTTTTCAGAAAAAATTGGCCTCCGGT -GAGCTGCAAAACGTGCCAAAAGTGAACGAGAAGAAGATTATCCGCAAGAC -AGAGCTTCCAGTTCGAGAGAAGTAGGATTTTCTCGATCTCTCCAAACAAA -AAAATTGTTTTTTTCAATTTCAGCAAAAAGATCCTGGACGCTCCGACTGG -AAAACGTGGCACCACTGCTCAATACATCACAAAAAAGAAGGCAAAGAAGA -TGTACAAGAAGATGACACACGACGCACGCGACAAATATCGAAAAATTCAG -GCGGAACTGGCCGGAGACGGTGAAGATGACGAGGAGGGTGAAGCCGAGGT -GATGGAGCAGTGATTTTGGATTTTTCCGCGGCATTTTTAAAATTGTTTTT -TTTTGTTGATTTTGTTACTGTTTTTCATTTTCCACATAAAATAATCGAAA -ATTTATTTATCACAAAAACTTTTGCACAATTTGCTCAGCTGAGTGAGCCA -ACTGTTTGCCACGTGTCACGATTCGATGCATCCATCCATTGGGCTCCTCG -AGCTCCGCTTTCGGAGCCTGTAGCTGCTTTAGAATTATTGTCCAGAGCTC -AGAAATGTTCATCGAGTACTGCGCGGAAACTTCGACGAAATTGCACTTGT -GTACTTTGGCCAGGCAGGCTCCTTCTGGAAAAATCAATTTAAAAATCGAT -AATTTGAAGTTCCACGTGGAGCCGCGACGCGGCACGCGTTGCATCGTTTT -TTTTGGTTGAAAAACATGGTGCATCGAAGAATTTTCCTTTGACGATTTTA -TACGCAATGCATCACATTTGACGAACAAAAATTCAAAATACTTTACTTTG -CAAACGCGCTCCATTGATAAACTTATGAAAAATCGATAATGCTCAAATTT -CACAAAATTTTCCTCCATTTGAAATTATATAATTGTTAAACAAAATTAAT -AAAACCAAACATTACGCGCAGTTTCCGATAAATTTCGATTTTTTCAAAAT -GCAAGCGCGCTCCATTGCTAAACCTTGAAAAACCCACCCATTTTCGACAC -CACCGTATTCCGTTTCAAATCGATTTTATTGCCAATCAGTATAATATTGG -CTCCGCGAGCAATTTTTCGATTCAAAAGCCGACTGAGCAGGTCTGTGGCA -CACACGAATGATTCTCGATTGTCAACGTTGTACACTATTGCGTACATTGT -CAGTGATGACGCGAATGGAGAATTCTGGAAAAAAACAAGAGTTTAAAGGC -GCAGGTGGGTCTCGCCACGATCCATGTTTTTTTGCGGGAATAGTGGAAAT -TTGGAGTTAGTAAAAAAATCAAATTTGTGTAATTTTTAATAAAATCGGTT -CGCAAATGCGCTAGTACATCAGATTTCACGAGCAAATTTCATTTTGTGAG -ATTTGCACCAAAGATATGGGCATTTGAACTGATTTTTTAATGGTAAACAC -GCGAAAAAAAATACATATCCAAAAATTGAAAAAATTTTAGGTTTCACAGT -CTCCTCGGCATCGAAAGCGCAGTAGTAGGGGTGGCGATAGGGCGCCCTGC -TAAATTTTCTATTTTTATGGTCTTTCTTTTCGTTTTGTGCTAATGAACAA -AAGTTAAGTTCGAAATCTGCGAAAAAAATCGTTTCAACGCTAAGAAACGA -AGAATTGTATTTCTCAACGGTAAAAAGATTCACTCCTGCGCCAAGGTGAC -AGCAAGTGCGCCCCAGCCCAATTCGACGCTGAAGAGACTGTGGGTTTAAA -AATTTAGAGAAGTCGCAAATTTTTTGTTCAAGATATCAGCCTAAGCTACG -GTTTAAAGGCGCACAAGCACGTGGTGTCAAAGTGTCCCGTTTCGGTGTGA -TCTACCAAAAATGCGGGAATTTAGACGCAGACTTCTCAGCAGATTTCGTA -TGGTTAAGAGTGTGCTGACGTCACATTTTTTTCTGCAACAAATTCCCGCA -TTTTTTGTAGATCACACCAAAATGGGACTGTTTGACAGCACGTGCACAAG -CAGATCACAAGTGGGTCTTCGAGTTATCCTCCCCAAATCCTGTCCAGTAG -AGCGCACTTACCTCCAACGTGGCTTCCAGCAACATTTCCAACTCGATTTG -CTCGTTATTCAACAGGAAATTCATCGTTTTCGATGAAGTGTCATCTCCCT -CATTTGACTCATTATTGTATTGGGTGACGAGCCGCGTGGCAAATTGGTTA -ATTGCTGACAGCAATGTTTTCTTCCCGCTATTCCTTGATCCATAGACACG -TAGAACCACATGTTGCATTGGAACATTCGACGTTTCTTGGAATAGCCAGA -CTTCTGGACACGTGGCTCGGCGATCTTCTGAAAATTTTTAAATTTTCAAA -AATTTGGTTAAAAATTTCAAAGGAAAATCAATAACAAAGCTACTCCAAAA -TTTTCAGCCTGATTGGTTGGAAAATGAGCAAGTTACAGCGCTTCAAGAAT -TCTAGGCCACGGTCACCAGGGAGTGGTGGCGGTGACCCTCTATTTCATTT -TTAGATTTTTTAAATGGGAAACTCGAATTTAAATGTGAAACATCTGGAAC -ATTCCAAGAAAAATTCAAAAAAACTCTCTAAGGAGTCGATAACCCTCCCC -CAATTCCTGAGATGTGACGTCATCAGGGGGAGCCCGTGACCTCATAGCTT -CAAATTTGAATTTTTCAACGAAAAGTGTGAAATTAGATGTAAAATTACTA -GGAAATTAGAAGAAAGATTAGAAAAGAAATTTCGGGGGTGTCGCTCACCA -CCCCCCCCCCCCATTTTTATAGTGTGACGTCATAGAAAGTGGGTCCCCGC -TACCTTCCATTTTCAAAGTTTTTTTATTTTTCCGATGATTGTATTACTGT -ACTCACTGTAATTATGTGCAACAACTGGTTGTCCAGTGGAGCACGTTTGC -TTATACCCATTGTCCGTCACAAATCCATTCTTAATTCCAAAACTTCGAAG -ACTTCCCTCCGGTCGTTTTTCGACGTCTTCGATGTTGTTTTGGTGCATTT -GTAGAGAGTATTGGTATCTGGAATATTAAGGGGAAAATGGTGAAAAAATT -CAGAAATGTACAGGTAATCGAGAAAAAAAGTTAAAACTTTTTTTGAACTA -AATTTTTTTTTCAAAATTTCAAAAAAAAAATTTTATTTGAAGAACTTTTT -TATAATGTTAATTTTTCTGAAATTACTTAACTTTTTCTCTCAAAACTTGC -TCACTGAGTTTTTAAATAGATTTCTGAAATTGTCCACGTGAAGTACACTC -CCAATATATCAAAGGAGCGCATTTGCGAACTAATTTTATTAAAAATTTCA -CAAATTTATTTTTTTTAATAACCTAAAATTTCCGCTATTTTATCGTATTT -TCTAAAATAAATAAAAAATTGTCCAGGAGGAGTACATGGCCAATTTATCA -ATAGAGCTCATATGCACACTTGTTAAAAAACAAAAAAAAAACTTATTCAC -CTTGGCGGTGGGTACCGCTTTTTCACACGACGAGGCGAGTTTTCCGAGCT -GAAAAATGATACTTTTGGCTGGGAAGTTTTAGAATTTTGGGGAAAATAAG -CATTTCCGGTGAAAAAAATTGTTTTTTATTGGAATAGTTTTTAATATTCT -AGGCCATGTCGTAAAGAATTGAGTCAAAATTTAAATTTTTGAGGTACGAG -CTTCCAGTTCCCCCCACAATTCCCCCTATGGCCTAGAATTTCAGAAAACT -CTACCATCGATTCAAACTCTGTTACTTTTGAGGATAAGGGGTTCCGGACG -CCCCAAACTTCCGCCCGTGGCCTAGAACTCCCAACTTCTTCCACCGACCT -GGACGTGGTGCTCGTACTGGCAAAATGCTCATCAACATCTGGCAGTAAAT -TGTTCAACCGTCTTGGGGACACGGTACGCGGGGTCGACGGTAGACTTCGG -CGACTGATCGGCGATGTAGGAAGACTTCTGAAAAAAAATCAATCAATAAA -ACAACGACACTCTGCTCGTGAGGATCCGCCCATTCCGCTTGTTGTTTACC -AATTTCTTTTAAAAAAATTCTACAATGCGCAAAATTAATAGAACTACCTT -CTTATAATTTTTTTTTAACTCAAAATTTTCAAAAAAACAACGACACTCCG -CTTGTAGACTCCGCCCACTTTCCAAAAAGGACAATTCGGAGTGTCGTTTG -AAAAATATCCTAAAATTTGAAAAATTCATTTTTAGTCTCAAATTTTAATG -AAAATTACGTGAAAATCTATAACAACTACGACACTTTTGGCTCCGCCCAA -AAACGTCTTTTGGCTCCGCCCGAAAACGGGGCGGAGCCTGGCACTAATAT -TACAGTTTTTATTTCCATAAGTGATTAAAAAATCAACAAAAAAATTATTT -AGAAAGTATCTCAATTATTGAATGAAATTTTATAAAATCTACGACACTCC -GCTTGGAACCCCCTCCCCCTGCCAAGAATGGGGCGGAGCCTAGAACAAAC -GGAGTTTTTGCAAGAAAAATATTGCTTGAAATTTTAAAGACATTAATAAA -AATCCGAGTTTTTAGAAAAAATTGGGCCAAATCGAATAATAAAAAATACG -TTACTCCGCTAATAAAACCAGCTCATTACCAAGAAAGGGGCGGAGCGTAT -ACAAACGGAGCGTCGTTTGAAAAAATATTTTTTGGAAAACTAAAATGTTC -CAGCGGGAGGAAGCTTCTGCAAAGGCAATCTAATTTTTTTCCGGAAATTC -AATTTCCTCAGGGTTCTCTCTGCAAATTTGTTCACGAAAAAACTCGTGGT -GCTGTGCAAATGCGCTCTATTGATAATTTCATCTAGAGAGCGCAATTACA -TCAAATTAGCAATGGAGCGTTGTTGCATACCTTCTCGTTGCAGCGGGAGA -CGCTGGTGACGGAGGTGATAGCCGTGATGAAAATTGTTGGGGTATCGCCA -GCGCAACTGGAAGGGAAACACGACGATTCGACATTTTTCTGTAAAAAAAT -CCATGATAAAACTAAAATTTAAAGAAAAAATAATGTAAATAAAAGTGGGG -AAGTGGCTAAGCGGGGACACAAATACGCGGGAAATCCGCTTATTTTTGCT -GGATTTGACGTAAAAATCCGAATCAACTGGCACTCGACGCGTTTTCCAAC -AAGAAAAAACTAAAATTTCATATATTGGTGGCCTAGAAAATTCGAAAACT -GTTCAAGCTTACGTAAAGTGTGTATTTTCCATATTAGAGAATAAGATTGG -AAGAAAAATAAAATATTGTAATTTCTAGGCCACCGCAAAACTTCTAAGTC -ACCTATGAAATTTCTAGGCTACCGTGAAAATTCTAGGCCATCATAAAAAT -AAAATTTATATATTTTTGTCCTGAAACTAAGTCCACTTCCGCCAGAAATA -ATAAAAGCAACAAAAAAGACAACACAAAAAATTGAGAACTCTTAAGAACA -AAAGAAATCCGACCCGAAATCGAATACCCCACGAAAATTTTCGGAATTTA -GAAAGAAAAACTATTTTTAGACACTTTTTTTCCTTCAAAAGGAGGAACTT -TGTTGCGCGGCCTAAAAAATAGAAAACTCGGCCACCGATTTGTTTGCGGC -CACGGGACACTCCGCAGTTGCAAAGGCTACAGATGCAAATACTGGAAAAC -TAGGTCACCAAGTGGAAACCTTGGTCATCGCGTGGAAAAAAACTTTGACA -AAAAATTTTTGAAAATTTTATAAATTTATTCTAGGCCACCACCTGTAAAC -CTAGGTCACCATGTGGAAGGCTAGATCACCAAGTGGAGCCTAGACCAGCA -CATAGGCCTCTAGGCCACCACGTAGGAAATTAGGTCACCAACTGGAAAGC -TAGGCCTCCACATGATAAATAATATTTTTTGGAATTTCGTTTTGACCAAA -GAAACTTGTTTTTACCAAAATATTTGAAAATCGTTTTCAAGGCCGTCCGG -TGAAAACTGTGTAAACCTAGGCCACCAAATAGAAAGTCAGGCTGCGACAT -CTAAACTTAGGCCACCAAGTAGAAAGCTAGGCCATCAAGTAAAAACCTAG -ACCACTATGCCAAAATAGATGCCTTCTAAAAGTTTCAGGGAAAAAATGTT -TTTCAACAAAAATTTTTAAAATCGTGGCCGAGTGGACTTTAATAAAATTT -ACTTTTTCAGCCACGTGGCAGAGGGATATCGGAGCATCGTTTGAATTTTC -TAATTTCTGAAAGAAAACCGGAACACATTGCAAAAATACGAAAAATATAA -CTGAAGCTGACATATGAAATGAGTTCTATGCTCCCCGCCGCCTATTCTTC -TCATTTTTCTGCTTATTTTTGTCGTTGGGGGGATGCTGGTATCATATTCT -TCGTCCCCTCTTCTTTCATTGCCAGTCTATTCAGTATTATAATTAGCGTG -TATTCCCTATTGGATTCTGCTCCCCGTCGTTTTTTTTTCTATGCGAAAAA -AATAGAAAATACGAGGTGAACGGGAATTTTTATGAAAACGAACGAAGAAT -TTGAGTTTTCTAGGCCACCAAATTGAAACATAGGCCAGCAAACGGATCTC -TAGTAAAAACCTAAACCACAATACGAAAAACTAGGCCACCAACGAAAAAT -GGGAGATTCCGCTTGTGTGTTCAAGCATTTTGTAAAATTCTAGATTGTTT -TAAAAACTTAATTTTTCCAGTACAAAAATCGATTTAAAAACAATAAATAT -GTCAAACTCGTGACGTTTGTCAATAGAGCGCGTTTGCATGTCAAACAAAA -CATATTCGGTGTAGATTTACGGGGACACTTTACAAAACAAAAAACCTTCA -CAAGGCTCCAAATAAGAGCTAGAAAATGGAACAAATTTCCGTTTTTTTTT -TGTTGGTGAGTGTCTTGTGAGGAGGGGACCGCCCGTGTCTCTTCCAAAAA -CATTATTAAATTAGTGTGACGTCATCACATTGAAAAACAACAAATATAGT -TCGAGTTTTGAAGAAAAATTTCGGAATTTTTCTGGTGAAAAAATTTCAAA -AATTTCAATTTTTTTTTAAATCTTAAAAAATTTTTTTATATATTTTTAAA -TTCAATGTTTGATCTGAAAACCAAATTTTCACACAAAAAATCTGGTTTTT -GACGTCTAAATTTGCTTTTTTTCACCCAATTACGAGGTTCTCCGTGGGAA -GGTGTGTCTAGACACTTGAACTTTTGCTTTTTTATTTTTTTTCTAATTGA -AAATGATTAAGCTAGATATATTTTCTCTCTTTTCTTAATCAGAATTGTTT -TTGAAGATTTTAAATTTTTACACTCCCGTGCAGCAAATGCGCTCCGATGA -GAAGTATGGAAAATTACAACTGGAGATTTTCAAAATGTTCAATTAAATTT -TGCGTTTTTCTTTTAAAGGTTCAAGAGTCTAGAAAACTACGAAAAGGTGC -TGTGACCTTATCGATGACGTCATCACAATTCTTGAAAAACTGGGAAAATG -AGACGATGTGGAAAGAGGGGATTATTTATGCTTAAATAAACTTTTTGCAC -TAATTAATTCATATAGTTGTAGTGCTTCTTTATATTTTAAGAGAAATTGC -AAATTTTGCACCCAAAAAAGTAGACGGCCGAGTTATGGGAAAACTCTTCC -ACGGACACAAGACGTGGAAAACTAAAAGTTTCCGTTGTTTTTTATACGCC -CGCATGGCACATCCCCGCCCCAACAAAATTTTCAGGTTTTCAGGGTGAAA -ACATTTTTTCAGCTGCTGGGCGGCTTCTCGTGCAGCTGGAAATGTATTTC -CAGACGGGTTGGAACCGGGATTTGTCATTCAATTGTTGCAATTACGCTCT -ACCGCTAAACCTCGTTTGGACTCCACGTGGACAACACGGTGCCTTATTGT -AAATTTCTCTTCCATCTCCATAATTTCAGAACAAACCGTCGCTTTTATTC -TCCATAATATTATAATTTTATTTAAAAAAATCTGGAAACATTTATCGATT -TTTGTGAAAATCTATGTGAGATTATTGACAGAAATACAAGAAAATCGATG -CAAACATGCTCTATTGCTAAATAGTTCGTGTACTCTACGTCGACGACACG -ATTTCAAGAGTTTTTCGTTTTTTGAACAAATCATCTGTTATTATTGCAAA -ATTCGGTACATTACTCAAAAAAAAACAATAATTGATAAACATGTAGAAAC -ATACATGCAAACACGCTCCGATGCAAATTATTGATTCTCCAACTTTTATT -GTTAAGTTATCTTGAAAAAAAAACTGATAAAACGAGAAGTCCTTGGTGGT -ATCGGTCGCCTAGAAACAGATGAAAGAATGGAAAAACAAGTATTACGGGC -GGCTCCGTTTCGTATTATGGGGGGTGGGCCGCAGATGATCCTTTAGAATA -AGAAAAATGTCTAGTATTTTGTGATACTTGTGAAATATAACCCTAAACTT -AAAAAATAAATTAGGGCTCAAAAATGGTATTTTTCTAATGTAAGCCTACA -AGCACAAAGGTATTCAATTTTTTTTCAATAGCTAAAAAATTAATTTTTAA -ATTGTGATATCATAATACTTACACAAGTACCAATTTTGTTTTAAACGATA -GAATATTCCATAACTTTTGGGTAGGATTTTCTGCACTCGAAAAAAACGGG -ATTTTCAACAAAAATAGTGGACTTTTTAAAAACAACGAAAAAGTTTTGCT -TGGGACCAAGTCTAGCAGATTACAAAAACTGATTCTTCCAGTCAAAGATT -TTATATATCACTTAACAATTGTTTTGCCTACCTAGCAAATTCCGAAGTCA -GAAAAGTTGAATTTCCCTCCAACAATTTTTTTTCATAGTCAGCCAATTTG -CATTTCCCGCGAAAAAATTTACGGATTCACCACAATGGGTCTCCCACCAA -TAAAATTAATTATTCATTTATCTTCTTAAAAGGTCACACGAGATGCCAGC -GACACAGGGCAAGTGCGACCACTATCCCGAAAAAGACACCGACAGAACCT -AACGAAGGCTTCCAAAAATAGCATAGAAATACAAGAGACACAGAATATCC -CATGATGTTCTGTCACTTTCAACATCATTCTGCCTTTTTTGTTCCCTTGT -GTATGGTGACTATAATTTGATTGTTCTGAATAATCTGATGTCTACTTGTG -TTGTGGACCACTATTGATTTTTGCTGCTTTGGTTAATTTGAGGTAATACT -TTAACAAATTTGTTTTAAATATCATAGTCATTTTACAAATTTCAACAGTT -TTCCTATTAATCCGCTAAACCGCAACTAAAAATGAAAAATTAAAACTTTT -CTCAAAACTGTATGGGAAAGTTCAGTGACGGTTATGATAATTACAACATC -GTTAATGCAAATTTAACAGGTTTCGCAAAATTATATTCAAAAAATTTTTT -AAATCGTTTATTACGGTAACAAGAAATGTTGAGAATGCGTATTACACAAC -ATATTTGACGGGCAAAATATCTCAGAGCGAAAACTACAGTAACTCTTTGA -ATGAATTCTGTAGCGTTTGTATCGATTTACGGGCTCGATTTTCGAAATTA -ATTTATATTTGTAAAGTGAAAGCTATATTCAATTTTTCTTCGATTATTTG -TTGTTTTGTTTTATTGTGTTTTTGTTTTATTTTAATATATTTGTCACTTT -TCAAATAGAAATTAATATCGAAAATCGAGCCCGTAAATGGACACAAACGC -TACAGTAGTCATTCAAAGAGTTACTGTAGTTTTCGCTCTGAGATATTTTG -CCCGTCAAATATGTTGTGCAATACGCATTCTCAACATTTCTTGTTACCGT -GATAAACGATTTAAAATTTTTTTTAAAACTATTTTTTTAAGTAGAACAAA -ATTCAGAAAACAACTCGATAAAAATGTCCTAGTCATCCGATTAAAATAAT -TTTTTGAAATAAATAATATGAAAATTAAATTTTAAATATTAAAAATGTTA -TTGTTGCTTTAAAAAACGTTATTGGACTTTTCAAGGCGGCAAAAAAATGA -AAATAAAAATCGATTATTTTTTGAATTGTTGACTTTTCGGTTTTTAAATG -TTGTTGAAAAGAAACGAATTGTATATACGAATTTCAATTAAAAAGTTTAA -AATGTTTTTTAAAATGTTTTATTTTTTTCAGATAGATCAACTGAACTTCA -TAACTTTAAAAAGCCAGTCTGGGATGTATCTATACCACTCTATCAGACTA -CTCTTAGCACTAATCACAATGTACGACCCCGTGAGAGATTGTTGTCTGTA -CTGGATACTACACGAGTGGTAGAATATAAAGAAGTGTGGTGACAAGTTTG -GGATCTGAGTCCAGTAGAAAAAAATCATTCTACCGAAACTCGAAACTATG -AGCGACTGGTCAAAACTATGCATTTGACGACGTCTACCTGTTTTAAGTTA -TTGGTGGTGAGTGTGCCTTTGAAGAAGTCGCTCGAGCCTCGACCTTCTCC -GACTGGCTTGAACTGAAAGATCCTCGGGAATCATTTTTAGAATTTAGAGG -TGGAGTACCGTCTGTGGATTTTTTTTTGCTCGAAACGATAGAATACAGCC -CCAATATTCCGAACAGGGGTGCGCGGCAATTGCCGTGTGGCAATAGAATT -TTCGGCAATTTCGGCAATTGCGGCAACTTAGGCAATTGCCAAAATTGCCG -AAAATTCACAAAACCGGCAATTGCCGAAATTGCCGATTGCCGGAAATCCG -AATTGGAAATATAAATTTGATTTTTTTTTGTAGTTTTAAGAGCTTGAACA -TGCATTTTACTAAACAATTTTCTCTTTTTAAGCTCAAAATGGTTTAATCC -TTTGAAGATTGACCGTTTTCTTTTAGAAAATTACTGACAGAATATTAAAA -AACAATGTGACATTTTTCAATTTTCGATATACATTTAGGTTTGAAAATTG -CCGAAAATGCCCTGCAATCGGAATTTCGGCGATTTCGGCAATTGCCGAAA -TTGCCGATTGCCGGAAATTTTGAAAACCGGCAATTGCCGAAATTGCCGCG -CACCCCTGATACCGAATATAACTGTAAAAAATGTATTAATTTTTTTGTTG -ATTTTTTGAAAATTTTCATAAAAGTAAAGAAAGGGCCAAATTATGTTTGA -ACTACTAGTAGTCTGTGACTTCATTTTTGGCATTTTTCCGTTTTTCAGCA -ATAATGATTGGTTTTCTTTGTTCTCTAATTTTAAACATATTTCTTCACAA -ATGTCTCAAAAATTAACAACTTCAGTTTAAAGTAATAAAACAAAAAAAAA -AGAAAAATAAAGAAAAACCAGTCAGTTTTTTCAAAAATAATTCAAAAATA -ATTCGGTCCTTATTTTTTTTTTTTTGCAAAAAAAAACAAAACAAACTCCC -CTATAAAAATTTTCCAAAAAAAAATTGGAAGGTTTTTTTTATTTCAGCCT -ATTTTTGGAAGTTGTCGAACTCGATCAAAACATTTTTTCATTGGTTTAAG -TTTTATTATGCTTGAAATATTCAAATTCCAACATACCAGGCATTGAAAAA -TCAGTTTTCGTCGCTTTTTGACTCGAAATAAAAAAAACCAAAAATTTTTG -AAAAGTTTTATTATGATAGAGTCATTCAATTATATTCCCAGTACTTTTAA -ATAATCAAACAATTTTTTAGAATGGCTAGTTTCAAAATCGGCGGCTTTGT -CGTTACATATGAAAACATGCACAACAATATGAAAAATAGGTATGTCTTCA -AAAATATTAAAAACAATATTTTTTTAATTTTACAGATGTTAGCAGTTCGA -CGAAGCAATGCAGGAACTACAGTTATACAATCAAATTCACGCTTTTTATA -TATTAATTTTTAAAATCATAAAAATTACAATTTTCATCAACGTTGATCAG -CTAGACGAATGCATTAAGAAAAGGGAAAACATAGGGCTTCCCAAAACGTC -TGCCTCGCCCGCCTTGTGGCGACCTGCGCCTGCCTCGTGCAGGCCGCGTC -TCCAGTCAGTGCAGTGCAGAAATTTTTATTTCAAAATTGTACAAAAACAT -GGAAAAATAGAGAAGGATAATTTTTTAGGCCTCGGAAATCAATTTTAAGT -CCTCTAGCTACAAAATGAACCATTTTAGAGGAGTTTCAAAATTGTGAATT -TTTACAAAAATTACCCAATTTTGCCACTTTTTAATGGTTTTTGATGGGTT -AAACCTAGATCTTCTGGATAATTCCGCATATATGAATTACCGTATTTCCT -ATATTAGTTTTGCATGCAAGACTAATTTTCAATTGGTCTGTAGGGGTGCA -AGACTAATAGAGACTGCAAGACTATTAGAGGCTGCAAGACTAATTTTCGA -ATGCTATAAAACTCCGAAACGTGACCAATTTTTGATTGTAAACTCAACTT -GATATCGTTTAAACAACAAAAAATACATCCTTTTCCAATATTTAATCAAT -TATTTGAACGCTTTTAATCAAAAACTCGAGTTCAATTTGCCCAGAAATGG -GCCAATTTATTAACGTTGCAGCATCTATGCAAGATATTGCTGGACTGGAA -AAAAGTCGGGTGCAAGACTTTTAGAGACTGCAATACTAATAGAGGCTGCA -AGACTAATTTTCGATTTGCCCGTAGGGGTGCAAGGCTAATAGGGATGCAA -GACTATTAGAGGAAATACGGTACCTGTTTTTGACAAAATTAGACAACTTT -TTATTTTTGCTCAATTTTTTTTCAGCCATCTAATTACTGTCCTTTTTTTT -TGGACAATAAAAATAAATTTTCTAAAAGCGTTTGAAACCACTATATTTTG -CAAAAGGACAATTTTTTAGGGATTGGAGATCAATTTTATGTCCTCTAGCT -ACAAAATAAACAATTTTAGAGGAGTGTCAAAATTGTGAATTTTTACAAAA -ATTGCCCAATTTCGCCACTTTTTATTTTGGTGGGTTATACCTAGATTTTT -TAAATTCAGCATATATGAATTACCCGTTTTCAACAAAATTAGACAACTTT -TGATTTTTGCCCAATTTTTTTTTCAGCCATCTAATGACTGTTCTTTTTTT -GGGCAAAAAAAATAAATTTTTCTGCAAACGTACAAAACCATTAGAAATTG -AAAAAAGGCAATTTTTTAGGGTTCCGATATCAATTTTGAGTCCTCTAACT -TCAAAAATGACTATTTTAGAAGAGTTTCAAAATTGTGATTTTTCTGCCAT -AAATTGCCCATTTTTGCCACTTTTAATGGTTTTTGGTGGGGTATACCTAG -ATTTTCTGAATTCTGCATATATGAATTACCGTTTTCGACAAATTTAGACA -ACTTTTTATTTAAAAAATTAAAAAGGATTAAAGGACGATCCGTTCTTCAA -GTGCTATGCACTGCGGATCTGGGATTCAGGTACACTGCCTGGTGGTGATC -CCTCTGGGCTGTAATTTAAGCCACGTCCTAGCCGAGGACTGTGGCCGATA -ATCCAGTCGTGGATTGCTCCACTTCCCAATAGAGGCAGGGTGAACCTAGG -GGGTGAGGCCGGACTTTTATCTCGTGACCTCCAGACTGCTAGCGGCCACC -ACTACCGACTGAGCTATCTGCCCCCCTTGGGGAAAAAAATAATTTTTTTT -TTTTTTGGGCAAAAAAATAATTTTTTGGAAATTGTACAAACCAAATATTA -TATATTAAAAAATATTATCCAAATATTCCAAATATTCCAAATATTCCAAA -TATTCCAAATTCCAAATATTCCAAATATTCCAAATTTATTCCAAATATTA -TGAAAAAGGCCATTTTGTTAGGGCTGGGAAGTTTGAATTTTTACAAATAT -TGCCCAATTTTGCCGCTTTTTAATGGTTTTTGATGGGTTAAACCTAGATT -TTCTGAATTCTGCATGTATAACTTACTTGTTTTCAACTAATTCAGACAAC -TTTTTATTGTTTTTTTTTCAAATTTTTTCAGCCAATTAATGACTGTCCTT -TTTTGGGCAATTTTTTTTTTGAAACAAAAAAAAATTAAATTAAATTGCCC -AATTTTGCCACTTTTTAATAGTTTTTGATGGGTCCCGGAAACCTAGGAAA -CCTAGTCCCGGAAAATCGAAAAATCGAAAAAAAATTTTTTGAAAATTTAC -CAATGAAAAAAAAAAGACTCAATTTTCTTCCAAAATAAAAAAGTGGGCAA -AATTTTAAATATTTTTCGAAAAAAAAACATAACTTTTCAAAAAATTTTTC -GATTTTCCAACAAAAAAGTGAAATAAGAAGACATGCAGGTTACTGTAGCT -GATAAAGCTTCAAGCGTACCAGGACCCGAAAACCGCCGCCCGCGTAAATC -GACATATTTAATGTACCATCAATTTGATCCTCCTCTTCCTCCTTCTTTCA -ATGACACCACACAACTTCCTGTTATGAAGGTCTCAATTCCCCTTCATAAC -ATTCTTTGTAATTAATGCACCCTAAACAAACTGTGCAAACACACTTAGAC -ACCCCCCTCCTACACGGTCTTTGGAGTTCCCCCGCTCAACTCTAATGGAC -CTGGTAATCCCTTGCGCGGTGGGATTTTTCGGGTCTCGCCGCGATTTTTA -TCCGAATTCCGGAATACCGGAAATGGCGTGGAAATCGATATTGCAACAAA -GAAAACTGTTTTATTTTCAAAAATCCGCTCACTTTTTTTAAAAGTGATCT -TTCAATCATTTTTAAAGTTTTTTTTTTTGAAAGCACGCGTTTCTGGCTTC -CCACATATTTTGGAATGTAAGAGATTGCCGAGTTAGGCCATTTGGACTCG -GCCACGGCCGGGGTCGATTCACGTAGCGGCTCGGTTTCTGTAGAAAACTA -AATGTATTTGTCCGTATGGAGTACACAAGCTTTTCCAGGCGTTATCCGGC -AGGCGATAGAAGCCGCGACGCAACACGCAACGCGCCGTAAGTCTACCCCG -GCCGTGGCTGAGTTATGATGGCCTAACTCGGCAAACTCTTGCATTTGAAA -ATATGAGCGAAGCCAGAAGCAGGTGAACATGGATTTCTGGCTTCCCTCAT -AAATTGAAAAGGGAGAGTTTACCGAACTAGGCCATTTTGGCTCGGCCATA -TCTGGGGCAGATTTACGGCGCGTTGCGTGTCGCGTCGCGGCTCGTTTTTA -GTTGTAAAACTGAATGTATTTGTCCGTGTGGAGCACACGACTTCCCCACG -CGTTGTCCGCTAGGCAATTGTTAATGGAGCGCGAAAAATTCAATGAGGAA -GGCCAGAACCCCGTGTGTGATTTTTGCAACTACAGCCCAAAATTTGAACG -GGATTAATACAAATTTAATTTGAAATTTGGATTTCGCAATTCAAAATTTG -CGAAATTAAAATTTCGAAAACCCGAATCTCATCGAAATTAAATTCCAAAG -TTTTCATTCAAATTTCAATGAGGTCTCTATTGAGCCGAATTCCCGCGCAC -GGGAGGTAGTGGACCCCTTTTGTATGTTTAGGGGTACAAAGACCCCCTAC -CACCCCTTGTATATGCACAATAGAGAACACTCAAGACCCGCCCACCCTAG -GCCCCTCATCCAAAACATATCCGAATATACCCTCTACTGTACTTTATTTA -CTTGCTCCGTTTACCCGGGTACCAGGGTACTCCCTAAACTAACTGAATTT -CCAAGGTGGTGGCCTAGAAAAAGCTCTTCCACTGGTTTTTTTGTGGAAAG -AAATGATGAAGGTTCTTGTTGTTTTATTGCTTATGGTAGGTTTTTTTTGC -CACGTGTCCGGAATTTTTAAAACTATTTTTCTATTTTTTAAAGGCCCAAA -ACTTTGTTTTTTTTAATGTTATCGTTTTTTCGTGAAAAAAATTATTTCAG -AAAACGGGGGTTTTAGGTTTAGGCTAAAGCGTAGGCTTAGGTTTAGGCCT -AGGCTTAGGCTTAGGCTAAGGCTTAGGCTTAGGCGTAGGCTTAGGCATAG -GCGTAGGCTTTAGGTTTAGGCTAAAGCGTAGGCTTAGGTTTAGGCCTAGG -CTTAGGCTTAGGCTAAGGCTTAGGCTTAGGCGTAGGCTTAGGCGTAGGCG -TAGGCTTAGGCCTAGGTGTAGACTTCGGCTCAAACATAAGCTCAGGGGCA -AAAAAAGGAGAAACTCCCACAAATTCCTAAAAATCCTGAAAATTTTTTTA -AATCTTAAAATAGTCAATTTTCAGTGGAAATCACAGTGAGCATTTTGAAA -ATCCAATAATTTTCAGGTAAATTCGACATTTTCGTTCGGATTGGACAATG -AAATAATCGGTGAACCAAAGTTACAATGCAATCCGGAAAGTATTACATTC -TCCTTCAACACACGGAATCCGTTTATGTTAGTCTTGGGGTCTCGACACGA -ATTTTTCCCGCAAAATTAGTTTTCCACGCGTGAGTACACCGCAAGTAGAG -CGCTTATCAATAAATTATAAATTATCAATAGAGCGCACTTGCCCCCGGTG -AATTTCAAAATTTTCAGAGGAAACGTATATATTCGTGGCTTCTACCGAAC -ACCCGGCTGTCGTCGGCAATTCCTCGCACCGAATCAGGCTGGCGGCTCAT -TTACGGTACGGCTCGGCGATTGCGGGATGCGGCGGTCCCGACAAATCAGT -GGACATTCGCCACGTGGCGTCAATCAGCACATCACTTTTGTTGCGAACTT -TCATCCGAATCTCGCGACGAAAGAGGAACGATCATTCAATATTCGATGCT -TTTATGCGCACAGTGAATCTGTTGTCAAAGCTGATCTGGATGTCAGGTAG -GGATGCAAATCGATAAATTCCCCGAAAATCGATACATTTTCCAAAAATCA -ATAAATACCCAAAAAATCAAACAATTCCCAGGAAACTGGAAGAAAATTCT -CAGAAAATCAATAAATGTATTTGTTTTGCAGCTCAATGCCGGAGGAATCG -TTCGAACAGGGTGTGACAATCGTGCCCCAATGCACATATTCCCTTCGTGA -AGGGACATTTGAGGGCCCAAAAGTGTCGAATACACGTGTCGGAATGACAA -TTGTTCATCGATGGGACTGTGATACATCGGGGAACTATGGAATACTGCTA -CGTGGATGCACCATACTCGATTCACGTGGTGTTGAATCTTTTCCATTGCT -TGATGAGAATGGGTAAGAGTAGGGAAGTGTCGGCCGCTAGAAAAGAAAAA -TATATCACTAGAGCACGTTTTCTAAGCATTTTTCTCAATAGAGCGCGCTT -GCTCAATTCCCTAAAATAAATTATGGTGCATCGAAACGTGTTTACGTACT -GATAGAGCTGTAGTACTCGAGGAAGCTGAAAAAAATAATGAAGAAAGTGA -AAAAAATCAAAAGTGTGAACACAGCAGCCTTGTCAGATAAATTTCAAAAA -TCTGTGCATTTGGTCGTAAGTTATGGCGCATCAAAAGTTTTTTGAAATTC -TCAATAGAGCACATTTCAAAAAAGAGCGATTTTCGCAAAGCCCCTTTCTT -CGTTGTTTGATTTAAAAACAATGCAATTTCGTTTATTTCGCAAATTTTTG -AAAAATGAGTTAAATTTGCAACAGAGCGCGATTGCACACACACACACACA -CACATCAAACGTCAGAGACCCCACTGATTTTGGAGATTAAATTACGGTAG -ATAGAGAATCACAAGGAAAACATCACGAACTTTGTTCCGTCAATTCCCGT -GGTGCTTGTTATCATCAGAATGCAAAATTTGAAAGTCTGAAATTAAGCCG -TTTCCGCTAAAACGTAGCGAATCTCATTCCACCGAGTCTATTTTCGTGAG -GTCTCCAATTTTTCAAGTCTCTGCTCGTTATGGTGCATCGAAGGGTAATT -CAAAATTTCAAATAATTTTTAGACACTTTTCGACCAGTTTCAAATTTTTT -TTATGGTGCATCGAAAGAATTTTGCGTAATTTTCAATAGAGCGCGATTAC -TACTCACCTCTAAATTTCTGCAAATTCTTTTTCCAGATGCTCAGTGTCCC -GTGACTTCCCACAAGTGGTATATCTCCCATCACTGACGTCAGCCTACATG -GCAATCGAAGCCATCTCATTTCCTGACCAACCATCGATTTCTTTCTCGTG -TCAAATTAAGTTGTGTGATAAGGGAAGTGATGAGTGTCGGGGTATGAGTC -CCCCCGCGTGTACCCCATTGACACAGGTCCCCATCACGGGACAAGTACCA -ATGCCATTTGATAATACAATTGGAAATACGTTTGGTGAGTTATTTACGGC -CGAGAAAACCTGCAAAAATAAAAGTTCAGCCACCGAACTTTTTGACATTT -TTGCGCAACTGTATGCCGCACAAAACTTTACGTCAGAAGTGGGCGTGTCC -GCCTGCAGGCCCCGATGTTTTAGATGTAAAAAATTAGATGTTTTAGATGT -AAAAAATTGAAATTTGAATACAAAAAAAAATTCGGCCACCGATTTTTTTT -GCTTTCACGTTTTGTCAATGCATTTCCAATTTTTTTCGTGAAACGTTTTT -GTCAGAATTGGGCGTGTCTTGTAAAGTCCCGCCCAATTTATGGGCGTGGC -TTGTTTCGACCAAAAATACTGTTTTTTTAACTCACAAAAACAGAGCTATA -AACTTTTTGAAAAAAACATCCCTGTCCTCTCCTTTCTCCATTCTAAAATT -TGAATTAGATGGCCGTGAAAAACCCCGGCCGCGGTCTTCAATTACAGTGA -AGAATTTGGCGGCAGAGCGCGTTTTCACAGTCTTTTTTTGTCGTCACTGA -GCAAACTTCAACTGCTTCCAGCCAGAAATTTACAAGCAAATTCAAATTTT -CAGACGGAATCCCACTGGAGCCGTGGATGAAAGAGCCCTCTCCTCCCACT -GATGACGTGGCAAACATCACCTCAGAAGGCGAGCCAATGCCTCGGCTCAT -CACCGAAGAGGAACAATATCAAATCGAGTCGAACCATGTTGAGGCGCGAG -AAAAACGATTTGCTCATCGATTATTCAATATCACATCGGAAGATCTCTAT -GTTGAGCCAACCGTCGAGCCAATGGAAGTAGAGATGCCTGGAGCACCGAG -AGAAACTGCTCGGAGGGTGTCTGAGCCATGTGTCTCGGTTGAAACTTTCT -ATATTTCGGCGCTTGCTGTACTTTTCGTTTTTGTCGTTTCGATTGGGATG -GTCTGTTTCTTCGGAAGTCATATGCTTAAAAAGTTGGTTTTTTATTGATT -TTCCTCCCACAGGGTTCTGACCTTCCTCATTGATTTTTTTGCGCTCCATT -GACAATCGCTTGTCGGAAAACGCATGGGAAAGTCGTGTACACGGACAAAT -ACATTTGGTTTTACAACTAAAATCGAGCCGCGCCGCAACACGCAACGCGC -CGTAAACCTACCCCAGCTATGGCCGAGTCAAAATGGCCTAGTTCGGCAAG -CTCTTTCATTTCAAAATATGAGGGAAGCCAGAAATCCATTTCCCCAAATT -GCAAGATATTTGTGGCGTGGCCGAAGTTTTCTAGTTTCTCGGCCACGTTG -TCAAAATTATTTTAAAAAATCGCTGGAAACACTAAATTTAGATATCTCCT -GTAGATTGTGATTCGCGGAAAAATTCCATGAATCTCGTTCTCCCAGTTTT -TTTTTTGTAAATTCAACAAATCAAATGAGCGCCAAAACCTCACAAATCTC -ATACTCCCAAAATTTGCGTTCCTCTTTTTCTTGAGGCCTCCTCTTTTCAC -TGTAAAATTTAAAAAACTCGTAACTTTTTCTTCAGAGCGCGATTGTACGC -ACAGAAAGTCTTTAAAGTCTGAAAATATTTTAAAGTTCCCCAAAATCCCA -CAAGTCTCATTCCACCGAGAGGTCATTTTCCGTGAGGTCTCTTTCTTGGG -TCTCGACGCGAAAATACTGTAATTTTATTAATTTTTTCAGAACTCAAGAC -TGTGAAATGCCGATTCCAGTCCCAGAAGGATATTATCTAAGCAAACACTG -AAACTCTTGTTTAAAAGTATTCGTTTCCCATCCACGTGCCATAATTCTTG -CATTTTCTTTTTTTTTCCCTATTTTTATTCAATTTATTTACAATTTGTTC -AATAAATAATCAATAAATAATAATTAAAAATAACATTAAAAGTCACATTT -TCCGAAGGAACCACGCGTGGAATGTAACGGTGCCGTTGTCGAATGGTTCC -GGCTGAAAATTGATTAGTTATCATTGGAGCGCAATTGCATTTTTCTCGAA -AAATCGATGTTTTCGTGTGATGCAGAATTATCGATTTTTTTTAACTTGGT -GGCCGAGAAAATGGAAAACTCAGTCATCGACTTTTATTTACCTGGAACGA -AAAAATTTAAAGTATGATCACGCGCTAAAGCCTCAATTATGCAAAATGCT -TTAAAAACGGGTTTTGGAATTTTCTAGACCACTGGTGACGTCACTCCTTT -TCCATTTATTATTCTAACTGTTTTCTAGGCCACTGATGTCGATATTTTTC -CACTGCTGGGTTTCTAGATCGCCTGCGACGTCATTTCTCTTCCATACCCT -GCTCTAGCGGGTTTCTAGGCCACTGGAGAAATTATTTTTCTTCCAAAAAA -AAATCTAGGCCATTAATGACGTCATCATTTTTTCTTTTCTTTAGGATTAC -CTCAGGTTCCTCATATTTCAGATCCATCCTCGCCAATCGTTCATTCTCAT -GAACTTTTTCCACTTTTTCACTGCTCGTACTCTTCTCATCTACTGTATCC -GCCACCACAACGTCCGGAGCAACAACTTGCTCATCAATATGCTGATATTC -GGGCTCCTGGCGGTCCCAACGTGGTGTCTCTGGTGCAGTTTCATATTGAT -TTTGCTGCTTCTCCAGGAGGTTCTGTATTGAACTGATCGCTGAGGAGGAT -CCAACGATCGGAGGCATCGGAGGCGGCAGAGGAGCCATAGATGGAGTCTG -AGAAGCCATCATTTGGAGTTGGGGGTAATTCCTTTGTTGGGACATCTGTG -GGGACATTTGTGGGGACATTTGAGGGGACGGGGACATTTGGAATACCATC -GGAGGCATTGGAGGTGGTGGGGGTGCCGGAGCCATTCGTATCATTGGAGC -CATCACGTAAGATGGTGGAGATGGTGGGAGACTGGAATTTTTTTTTTGAA -TTTTTTTTCATAACACGGGCTTCTGGCCTTCCTCATTGCACTTTTCGCGC -TCCGATGATAATCGCCTGCCGGACGACGCGTGGAAAAGTGGTGTACTCCC -CACGGACAAATACATTTAGTTTTCAACTGAAAACCGAGCCGCGACGCGAC -ACGCTACGCTCCGTAAATGGCCTAATTTCTTTTTTTTAATCTTGAGTTAA -AGTTTAATTTTAATTATTTCTACAGAATTGAATGGCTGGGAATGTGCCAC -GTGGCCGAGAATTCTCCTGCGTGGCCTAGAAAATTCAAAAAAATATTTTT -TGGTGGTTTTGATTACAAAATAAAGGATTTATACGGATAAAAACCTATTT -TAAAAGCCGTGAAAAAAATCATATCAACCACTGCCTAAAAGATTGAAATT -TTTATGATGGCCGAGAATTCTCAAGTGTGGCCTAGGAAAAATCAAGGCTT -TTGAAAATTTGCTCATTTCGAAAATTAAAAAAAACAACTCAATTGATAGT -AAATTTTAAAATTAAAAATTATTTTTCTGGTTTTTTTTTCTCAATTTTTG -CAAAATCAAAATTATAATCAATTTTTAATCCAGAATTCGTCAAGTGGCCT -AGAATTCTACTGCGTGGCCTAGAAAATTCCACCAAAATTTAAATTTTCCA -AATTGTAAAAATGCTCCAAAAAGTTGAATGGTGGCCGAGGTTTTTCGTTT -TTCACTTTTCACAGCTACGGAAAAAAACTCGGCCACCAATAGTTTTTCCT -AGGCCATGTTTCAAATGCCCTATTTCTATGTTAATTACAGTATTTTCTAG -ACAAGATTTTAAAAAAACTCACGAATAGCACATGGAGCTCTGACACTTGC -TCCCACCAATACAAAATTCCGAATTTTTTACAAAAAACTGCAAAACTATA -AGAATTTGTGGTAGAAATTGGGGCATTTACGTAATAATAATAATAGAAAA -ATGTCCGCAAATTTTTTTTCATAAATTTCATAGGGAGGAGGTAAGCTTCA -GCTAGAAGCCATTCAATTTTATTGGGGCGCCGAAAATCTTCGGAACACTT -TTACAATTTATACAGTAGTGTACAACTTTTACAACTTAATAATATCTTCA -ATACTTCCAGAATATTCTTCTTTTTCCTCCTCAATTGCCACGTCATCATC -TTGTAATCTGGTCCATTTTGCTGGCGAGGCGTCGGCAAACAGGCAGAATA -TAGTATTTACGAAGAGAAGTAAGCCCGCATGCGCCAGGAAACAATTACGC -CAGTCTGTGAATCTGAAAAAAATAATCTTGTCTTTTAGGGGACCTACGCC -TGCCTGCCTACGTCTGCCTTGCAGGGGACCTTTGCCTACCTACTTGACTA -CCTTCAAGTGAGACCTATGCTGGTTTGCCTGCATTTTTGTCAGTGCCTTC -TAGGCCTATGCCTACCTTACAAACTATGTAGGTCAACTGCCTGCTTTCAA -GGTGGCCTAGGTCAGCCTACATGCTATCTACGTCTACCCCAATGTACCCT -GTGCCTATCTACCTGCTTTTAATGCTATCTGCCTTTTCGATAGTCTTTTA -GGGAATCTACGCCGGTCCAGCTCACATAGGTTATCTATGCCTATGCCTTC -CTGCCTGCCTCCAAAGTGACCTACGCTTACCGTGTTTTTTTTTCTAGACC -GTATATACCTACATGCCTGCCTTTAAGTTTACCTATGCCTGCCTGCATTC -CTCATGCCTGCGTGCCTACATGAATACCCTAAAAACTCACGTATCATCAG -TAACAATCATATTGACGAAAAACGGTTCGATGAATATCGTGCAAGCCCAG -ATGTTCATGATCTGGAAGAGAAATCGTTGGCCTAAAAATTTTCTCGGCCA -CCCCCTTACCTGCTGCATTGCGAAATAGGCGTACTGCTGGGAGTGCAACG -TGGCACACTTGTTGAATCCCGCCGTATTGCACCCCATCACACTTTCGGCG -CAAATCTGGAATGATGGAAGAGAATAGGAAAACTAGGCCATGGATGTATG -TGCGCTATGTTGATAATCGGTTATTTTCAACGTGGATTATCAATTGAGCG -CACTTGTCCCACTGGAAGAGTTTTCCTATCTAGGCCACCACCACCACCCA -CTCACCATTATAATAATAGCCAGCAAGTGTTTTTCCTGTGGAATAAATGC -TAGAACGATGAAAAAAACGGCGGCCACGGCCAGAGCGATTGTGTTGAAAA -TTTTAGTTTTCAGAGTTTCTGAGATGAATCTGGAATATTGATTTTTGGTG -GCCGTAGAGAGGAAAAACTCGGCCACTGATTTTTTTCACAATTATAAAAT -TATTTTTCCAGGAAAAACCCCCGAAAAACTCACTTAATATAATCACTAAT -AATTCCCGACGATAATTTCGTAAAAAATTGAAAAATAATGGGTAAGGCGG -CCAAAAAACCGGACGAAAGTACGTCATAGTTCAAATAATTTTTCATATAT -TGCGGATTGAATTGGGATACCAATTGAACTGTTATCAAATCTCCAAACGA -TGCGATCCAACAAGCCCACAGGCTTAAACTTGTCAGAATATGACGGAATG -GAAGATTTTTTGGCCGGGATACCTGCAAAACGAAAAAGTAACGGGCTTCG -AATTTCCCCCCCCATGTTTTCAAATGGAAGAGGTGGCCGTGAATAAAGCT -AACCTCGACCGGGGGTCGCGACTCGCGACAAACGGGAAAACTCAAAGAAA -TTTCGTACTGTCGCTACTTTTTTTGAGTTTTCCTGTTTGTCGCAGGTCGC -GACCCCCGGTCGAGGTTCGCTTTTTTCACGGCCACCTCTTCCATTTGAAA -ACATGGGGGAAATTCGAAGCCCGTGAAAAGTTAGGCCATGCAATGCGATG -TGGTGGCCGAGGTTTTGAAAACTCGGTTACTCTCATGTAAAAAATCTTGA -AGTTGAAGCAAATTTGCGTACATGAAACCCATTTACCTTGCTAGCAGTTT -TAGAAAAATTTGGGATTTTCTCATACTAATGAGGGAACGTCTTAATTGTC -GACAAATTGCGTACCCCGAGGAACCCACTAATTCAGTCCTAGGTTTAGGC -ATAGGCTAAGGCATAGGCTTAGGCGTAGGCCTAGGCTTAGGCTTAGGCTT -ACACGTGGTGTCAGAGTGCCTCATTTCGGCTTGATCTACGTAGATCTACA -AAAAATGCGGGGGAAGAGCCGCAGAGTTTTCTACTGATTTCGCATGGTTA -AGAGTGTGCTGACGTCACATTTTTTGGGGCAAAAATTCCCGCATTTTTGG -TAGATCAAACCGTAATAGCACAGCCAGGCACCACGTGCGCTTAGGCTTGG -GCTTTCCGTAGTCCTTCGGGCGCGTTTTTCTCAAAAATGATACGTGGTAC -AATTTCAGGTTTTTTTCCGCTCCAAAATCTAGTTATAATTTGTGTCCGGT -AGAGCGCGTTTGCACTCACTTTCTTTCCCGATTTCCCTTCTCGAATCCTC -TCCAATTCCTTCTCGCCAACCCAACTGTGCTCACTCGGCGAGCACTTGAA -AAATAGGAAAAACAGCGAAAAAGTGACCAACGATACACCGGCGTGCACAT -AGTAAACCGACGTCCATCCACCAGACGAAGAGCATAACCATCCCGAAACT -GGCATTGTAAATATATTTGAAAGTTGTGTATTTCCGGTTAATAGGCCAAT -GAATACTCCGTGCTCGTATGGGGTCGCCCAATTTGCTGTAATTGAGCCAG -CGAGGGGAAATGTGGCTGAAAATGCCATTCCTTGACAAATACGGGCGGCC -ACAAACCATCCGTAGCCAATGGTACTTGCCAACGGGATAAGGGCTGTTGA -AACTGGAAAAATTGAGTGCAATACATCATATTTGACGCGCAATTTTAAAA -TTTAAAAAATGGAAACGCGCTCTAATGATGCTTGGTGTACTCCTCTCGGA -CAATAAATGTCAATAATTTTTGAAAAATCGATAATTTTTTTTTAATTTCA -GAAAAATTCGTGAAATCTGTTTTATTTTGCGCGTAAAATATGATTCTTAA -ATACTTAATTCAGTATTTTACGCACGTGGTATCAGAGTGTCTCATTTAGG -CTTGATCTACGTAGATCTACAAAAAATGCGGGAGAAGAGACGCAGAGTTC -TCAACTGATTTCGTATGGTTAAGAACGTGCTGACGTCACATATTTTCGGG -CAAATAATTCCCGCATTTTTTGTAGATCAAACCGTGATGGGACAGCCTGA -CACCACGTGCTTACGCGGAATTTTTCACAATTTTTTGTGCTTCATGCACC -ATGTTTTTGTTTCGAAAAATCAGATTATTGTTTTGCGCGTCAAATTCAAC -GCCCACTGTGCAATACACCATATTTGACGATCAATTTCAAAAATTTTGTA -TGCTTTCGATGCATGCTTTTTGGGGTACTGTAGCTTTGAAAATACGCATG -CACTGGATCTGACGACAAAATGCACAGTTTTTATAAAATTAGTCTATAGA -AATTAGTCAGTTTTCTCGAAACAAATAAAAACTACAGAAAACTCGGCCAC -CGATATTTTTTTTTTTCGCGGCCACGATTGACGTCATACCTCCCGAAATA -ATTCCGGCGACAATGAAGACAGGTTTATGCGGCAAATGTTGAAAAGAAAT -GGAAAATGGAATCGAGGCGGCAAGACTTCCAATAGCCACACACGATTGAA -GAAAATTCGACTCTGATTTGGTATAGTTCACTGAAAAAATCAACTATTTT -GGCGGCCGCCAATGGAAAAACTCGGCCACCGAATTAAAAAAAAAACCTTT -TGAAGTTGAAGTACTATTATCATCTTGCATACAAATTTTTGTAAAATTAT -AAGTATTCATATTTGAAAGAATCGAGGTCAAACACAGTGTGGCACATATT -AAAATCTGCAAAAAAATCGTGAAAATTCAATTTTCCGGGGGTTTTGAGTT -CAAAAAGTACCAGAAATCGGACAGGAACCGGCGAGTTGACCATGGTGCAT -CAGAAACCGGAATTTTAAATAAGTAAAAAAATTTATGATGCTCGTGGTGA -TAACGAAAAGTGCAGTGATCAATTTAAGGGAAATACTGCTGGGGGATTAA -ACGTTGACACTGTCAACTTGATAGTGTTAATTTGATCAATGCTTTGTACT -TGTTTTTTGCAGGAAAAATTCTTTGAAAATTGCAAGACTATAGTATAGTC -TGAAAATTTGATGAAATCTAAAACTTTAATAAATACCGTTAATTATCATT -ATTTTTATGAAATTTTAATATAATCTACTTAAAATTTAATTTTCTAGGCA -TCTGTGAGCTTAAATTTTCGATTATCCCTCGCCAAATTAAAGATTTGCAG -ACTTTTAAGCTTATAAGCTTATTTCAGTGAGAGAGAGCATTGTGAGAAGA -GAAACGCAGACGAGGCTGGCGCGTTTCTCGTGCTCTGACGCGAGTCTCGA -TTTGCTTGCGCATTTCTCGTGCGCGCGACGTTCATTTTATTTTTCCGATT -TTTTTTCAGTTTTTCTGAACTTTTCTTCTTGAATTTGTGATTTTTTATTT -ATTTTTCACGTCTTGTTGCAAAATAACTGATTTTTCACACAAAATATTCG -AATTTTCAGGTCGGCAACATGGGATTCTTGTGGAAAACTGCAAAACTCGG -AATTAAAGTTGGACTCGTCGCCGGCGCCGTCAAACTGTCAATCGATAACG -ATATTTGGTCGACTAACAATGTTAAAGTATTAGTTTTCCCCCGTTTTTCC -ACGAAAATTTTCATTTTCAGGGCAGCGAACTGTATCAAAAGCTTAAAAAG -TACATTCTTCCCGGCACCGTCGTCTTTCCAGAGCAGGTTTTATCGATTTT -TTCTCTGAAAATGCAATTTTTTTCTTATTTTCAGCTCCCAACAGTCGAAG -ATGTGCAGCTGAAGGCCGGTGGAAAGTGGAACAGTGCTGTTGACTCGGTA -GGCTGCATTTTTGAGAGGAAACACGGAAAAATTGCTGCGAAAGTTGGAAA -AAAGTCCTGGAAAATGGAGATTTGGCGCCGAACGTTCAAGAAATTCCATA -ATTTCAAAAATCTATCTGAAAAATTGAAAAATATAAATTTTCAGTCATTT -TTAGTCAAATTTCAGAGCTAAACGTCGAAAAAAGTGCCTAAAACTAGGAA -AAATATGACAAAAAGACACAAATTTTGGAGAAAATTGCTGAAAATAATGC -AAAACACTTTTTTTCACAAAAAGCGAAATTCAAAAAAAATTCCACGTCAA -AAATTAACCAAATGCAAGTACGCTCCATCGCACTTTTTTCCAATTTCTGA -CTCGAAAAGTCTTAAACTTCTGGTTTTGTAGGAAAGATAATGCAAAACGC -AATTTTTAGTCCAAAATTCAGAGAAAATTCTGAAATTGTTTTTAAAAAAA -ATGCAAGCACACTCCATGGCACTTTTTTTTCAAAATTTCGCGTAGAAAAT -TACAGACATTAGCAAAATTCCGACGATTTCGCTGCGAGACCAGAAATATT -GTAGGAAATTCAAACATTATCCGAAAATAATGCAAACGCGCTCTATCGCA -CTTTTCTCCAAGTTCCCACTCAAAAAGCATAGAAAATACCTGAAATTGCC -GTTTTTTTTCACCGGAATTTCAAATTTACGCGATTTCGCTGCGAGACCCA -AGCTAGTGCAGTGGAGCGCATTTCCAACAATTTCAAACTCAATTTTTTTC -AGGTATTCACCACAATCGAGAACGTCCCATCAAGCGTGAACACAGTGGCC -AATCGACTCATCAATAATAAATAAATTCCCCATAAAAATTATCGATTTAT -CGATTTTCCCCCCGAATCCTCGTGTATTCCTTCGTTAGAATGTACTTTTT -CCCTCCTCATTTTCTAGAAGTATTTGTGTGTGTGCTCTATGAAAAAATTT -GCAATTTTTGACTTTAAACGGACGGTGCATTATATTATTTTATCAGTTCC -CATCGTTGATCAATTTTCTCCACTGATTATCAATTCACTGATAAGCTCAC -ACTGCCTGCCCAACTCAATTCATCGCAACTTCTTCTCCCTGCTTTTTTTT -GCCATGAATTCGACGGTGGCTTCCCGTTTCTCATGGGGACTCATTCTGGC -GTCGATCGATTTTTTGGCGTGCCTACTGTTCGCCTGCCTGCATGATGGAA -CTTTCAAATTCGCGAATTTTACTTCGCAATTTGGCGATTTTTCGTTTTTT -ACGAGGTTCGATTGATTGGTGGCCGAGTTAATTTTAGGCCACGAAAAATG -AAAATTGAAGCCGAGTGTCATTTTCGCTGGAATTCTAATTTTCAGTGTGT -AAAAATATAGAAAACTGCAAAAAATTTTGAATTCCCGCCAAAAACTAACG -TTACGAGACCCAAGTACAGTGGAGCGCAGTTGCAAAAAAAAATTTTTAAT -GATTTTTTGCAACTACGCTCCACAGTCCTTGGGTCTCACAACGTTGAAAC -TAAAATTTTGGAATTTCTCCCATAACTTCTTATAATAACGATATTCGGTG -GTCTCGACACGACATATTTTCATTAAATAAAACGGGTGTGCGCCTTTAAA -GAGTACTGCAGTTTCAAACTTTAGTTGCTAAGCGTATTTTCAACAAAGCA -ACGAAAATTTGAACTTACAGTACTCTTTAAAGGCGCACGCCCGTTTTTAT -TAAAACAAAAACTTGTCGTGTCGAGACCGGGCACCGTAGTTTTGACGCTA -AAAATAAGATTTATGAAAAAGCGGGTTTCCAGAAAATTTCACTTTTCAAA -CTTTGATGAAAATTTGAAGTTTCCAGCCAAAATCGCTGCGAGACAGTGGA -ACGAGTGCAGTAGAGCGAAATTGCTGTAAAATTTTGAAAAAAAAGTGAGA -AATTTAAAAACACGGATTTCTGGCCTCCCCCGTAAATTGAAATGGAAGAG -TTTGCCGAACTAGGCCACTTTGGCTCGCCCATATCTGGGGTAGATTTACG -GCGCGTTGCGTGTCGCGACGCGATTTTAGTTGGAAAACTAAATGTTTTTG -CCCGTGTGGAGTACACGACTTTCCCACGTGTTGTCCTCTAGGTGATTGTC -AATGGAGCGCAAAAAATCCAATGAGGAAGGCCAGAACCCCGTGAAAAAGT -ACGCGTTTTTGAAGCAATTCATCGAAAGAAGACAGTAAAAAAAAAGTCAA -AAATTCAAATTTCCAATAGAAAAACCACCAAACCCAACAATTTTTCCAGC -ACAATCGACCTATTCTTGCTGCAATTTTTCCGTTTTGCACTATGGATGGT -GCCGGCGGCAATCCACGTGGCCAACAAGGCGGACACGTTGACAATGTGGA -AAGAGGTCGGTGGCCGCGTGGCCTAGAAATCCCGAAAATTTCAAATTTTC -AGCCAATTTTCTGCTCGGCACTGCTCATCTGCGCGGCGAGCCCCACAAAA -TTGCTCCTCCTCACAGAAAAGCTGAAGCCCGATGAGTTCCTCACTTTCGG -CGACACTGCCTTCCTTGTCTGGAATTTCATTTCCGCGATCATTTTGAACT -CCTCGTGGACAAGATACTTCTCGCGAACTCCGTCTTCATATATAATTCTG -GAGGATGAGGATGTAAGTGCGCTCCGCTGAGAAAATGTTTTGATCACCCC -CACGATTTTCAGCTCGAGGTGGCTCCAAAACAAACGTTTGAGCTTATTTT -CCGCCTGCTCCAATACTGCAAACGTGAATGGCTCTGGCATATTTCCGGAT -TCTCGTGGCTCTTTATTTATTCGATCAGTAAGAGAATATCCATCGGGGGT -TTTTTGTTTCGAATTTAAAAAAAAACACAAGTGGAAGAGTTTTTAAGATT -TCTAGGCCACGCACCCACTCCAAAACCCCAATTTTCAGCCCGTATCTTCG -TTCCCTATTACACGGGACAAGTCATCGCTACCGTGGTCGCCACAAAATCG -TACCCAGCCCTCTCCAACGCTGTCTACATCATGACAATCATCTCGTTGGT -GAGCGCTGTCGCCGCCGGATTCCGTGGAGGATCCTTCGAGTACGCCTACG -CAAGGATCCAGAGGGCAATCCGCTACGATTTGTTCCACGGACTCGTGAAA -CAGGATGTCGCTTTCTATGATGCTCACAAGACCGGAGAGGTGACTTCTCG -TCTGGCTGCTGATTGTCAGACTATGTCGGATACAGTTGCGTTGAATGTTA -ACGTTTTCCTCAGGTAGGTGTGGGTCCGTGACCGAAGTTCCCAGATCACA -TGACCTAATTTTCCCAAATTCTTCCAGAAACTGCGTTATGCTCCTTGGAT -CGATGATCTTCATGATGAAGCTTTCGTGGCGCCTCTCCCTCGTCACATTC -ATCCTCGTCCCAATTATCTTCGTCGCCTCCAAAATCTTCGGAACATATTA -TGATGTAAGTGCGCTCCAGCGAAAACGTTTTTCTAAAGTTTTGACCCCAA -AATTCTGTCAAAGTGCCCCATTTTGGTTTGATCTTCGGAAAATGCGGGAG -AAGAGGCGCAGGCTTTGCAACTGATATCACATGGTTAAGATTGTGCTGAC -GGCACATGGAAAAATTCCCACATTTTTTTGTAGATCAAACCGCACCTGAC -ACCACGTGAAATTTTTGACAAGTCAAGAAAAATTTCGGCAATTGTGAAAT -AATCGAATTACCGCCGCACGTGGTGCCAGGCTGTCCCATTACGGCTTGAT -CTACAAAAAGTGCGGGATGTTTTTGCCCAACAAATTTGACGTCAGCACGT -TCTTAGTCATGCGAAATTAGTTGAGAACTCTGCGTCTCTTCTCCCTCATT -TCTTGTTGTTCTACGTAGATCAAGTCGAAATGACCCACTCTGACATCACG -TGCCGCCTCCCACCCCTGCTCCGACCAGGAATCAGCGGATCTACTTAGTC -TCAACTTGTTTTATTTCAGCTCCTCTCCGAAAGAACACAGGACACAATTG -CCGAGTCCAATGACGTTGCCGAGGAAGTTCTCTCCACAATGCGTACAGTC -CGATCCTTTTCCTGCGAGAACGTCGAAGCCGATCGCTTCTACGGGAAGCT -CACCCACACACTTGATGTCACCAGAACCAAGGCGATCGCCTATATCGGAT -TCCTCTGGGTCTCCGAACTTTTCCAGTCGTTCATCATTGTGTCAGTCCTC -TGGTATGGAGGCCATCTAGTGCTCACCCAGAAAATGAAGGGAGATCTTCT -AGTGTCATTTTTGTTGTATCAAATGCAACTCGGAGATAATCTTCGTCAAA -TGGGAGAAGTCTGGACAGGATTGATGCAATCTGTTGGAGCAAGTCGTAAA -GTGTTCGAGTACATTGATCGAGAGCCCCAGATTCAGCACAACGGGGAGTA -TATGCCGGAGAATGTTGTTGGAAAGATCGAGTTCAGAAATGTTCACTTCA -GTTATCCAACTCGTTCCGATCAGCCAATCCTTAAGGATCTCTCGTTTACC -GTTGAACCAGGAGAGACTGTCGCATTGGTTGGACCATCTGGCTCTGGAAA -GTCTTCGTGCATTTCTTTGCTTGAGAACTTCTACGTCCCGAATGCTGGAC -AGGTTTTGGTGGATGGAGTTCCGTTGGAAGAATTCGAGCATCATTATATT -CATAAGAAGGTACGTTGGCGTCAATTTCGGTTCGACAAATCGTTTGCCGG -TTTGCCGGCAATTTTAATTTTTGGCAAATTGCCGATTTGCCGGAAGTGTT -TAGAGTGCTTTTTTATAAGACGGAAACACTTGAAACTGTGTCCGTTTTTA -AATTTTTGTGCCGGTTGGCGATTTGCATGATATTTTCAATTCCGGCAATT -TGCCGATTTGCCGGAAATTTTCCATTATGGCAAGTTGCCGATATGCCGGA -AATTTTGATTTCGAAAAATTGCCGATATGCCGGAAGTTTCAATTCCGGCA -ACTCGCCGATTTGCCGGAAATTTCAATTCCGGTAATTTGCCGATTGGCAG -GAACAAATCGTTTGCTCGCAGTCTATTCGGATAAAAATTGCGCCAACTGT -TCATCCGTTTGCACAGAAAAAGCATTTCCGCGCTTCGCTATTGGCCAATT -TCAAAATAGTGGGCGTGACCAACCAATCACGGGTGTTTCTTGCTTTCCAT -TGCTGAAACTGTGATTGGTTGGTCACGCCCAATTTTTTGAAATTGACCAA -TTGCGAAGCGATGACTTTGGACGCAAGAAACTTCCGTTTTCTCCTTTAGC -TGTCGATCGAGATTCTCTCCTTTAAAAACACATTGCCGATCTTTTCAAAG -CCCCTGTTTCAAACGACACAGCTAGTAACAACAAAAAACCTCGAAAACTT -CCAATTTTTCAGATCGCCCTTGTCGGCCAGGAGCCCGTCCTGTTCGCTCG -TTCTGTGATGGAAAATGTCAGATACGGTGTCGAAGTGGCGGATACGGTAA -GCACGATTAAATGCACCATGAGCCAAACAAAAAAACTTGTTCAGGAAATC -ATTCGCTCTTGTGAAATGGCGAATGCTCACGGATTCATTATGCAAACCAC -GTTGAAATACGAAACAAACGTCGGAGAGAAGGGAACACAAATGTCCGGTG -GTCAGAAGCAACGTATCGCAATTGCTCGTGCTCTTGTTCGTGAGCCAGCG -ATTCTCTTGTTGGATGAAGCCACGTCGGCGTTGGACACCGAGTCCGAACA -TCTTGTTCAGGAAGCGATTTATAAGAATTTGGATGGAAAGAGTGTCATTT -TGATTGCACATCGATTATCGACTGTTGAGAAGGCTGATAAGATTGTGGTT -ATTAATAAGGTGAGTTGCAATTGCGCTCGACCGAGATTTGGTCGCAAACC -TGACACGGGGTTCTGGCCTTCCTCATTGAAATTTCCGCGCTCTATTGACA -ATCGCCTGCCGGACAACGCGTGGGAAAGTCGTGTACTCCACACGGACAAA -TACATTTAGTTTTACAACTAAAATCGAACCGCGACGCGACACGCAACGCG -CCGTAAATCTACCCCAGATATGACAGAGCCAAAATGGCCTAGTTCAGCAA -AAACTCTTCCATTTCAATTTATGAGGGAATCCAGAAATCCGTGCGCCCGT -GGTGTATTACTCGTGGATAACTGCTCATATTTCAGAATTGAGAATTTCGC -TAAAAACTGTAGAATCGCGTTAAAAATGAGACCTCACCAAAACAGGATTC -ACGAAACAAGAATTCACAGAAATAGTATTCAGTGGGCGCAGTGTGCGCAG -TGTGCGCGGGGGTTGCGAAAGCACACTTTTCGGTCCCGCCCCCTAAATCG -TGTTTTTCGTGAATACTGAATCTGGGAAATTTGAAAACTCGGCGAGTTTT -TCTGTGCGGCACACCCACGTGGTGTCAGGCTGTCTCATGGCCCGACAAAG -GGTACATCAGTGTAAATGCGCTCTACCGAACAGAACGCATAACCCACGTG -GTGCCAGGCTGTCCCATTACGGCTTGATCTACAAAAAGTGCGGGATGTTT -TTGCCCAACAAATTTGACGTCAGCACGTTCTTAGTCATGCGAAATCAGTT -GAGAACTCTATGTCTCTTCTCCCGCATTTTTTGTTGATCTACGTAGATCA -AGCCAAAATGAGACACTCTGACATCACGTGATAACCTGGTTGATACTACG -CGTACGGCTTGCCGGGCCGTGTTTCTCATTGCGGTTTGATCTACAAAAAT -GCGGGAATTTTTCCCCCAGGAAAGTGTGACGTCAGCACACTCAGTCTGCG -TCTCTTCTCCCGCATTTTTCGAAGATCAAACCAAAATGAGACATTTTGAC -ACCAACACACACACACACACACACACACACACACACACACACACACACAC -ACACACACACACACACACACACACACACACACACACACACACATCATATT -TGACGAGCAAAATCGGCCCCATAATTACAGGGAAGAGTCGAACAAATCGG -AAATCACGAAACCCTACTGAAGGACACCAACGGAACCTACGCGAAGCTCG -TTCAACGCCAAATGATGGGAGATCAGAAGCCACGTAAACGGCCGGCGGTC -GCCAGATCGGGACCTCAGCCAGCCGCGTCAATCAACGTGGCAGGACCATC -GCAGGGTAATGCAATGTCCCTGTTGTCGACGTCTTTCAGCCAATCTGCCA -GTAGTGTTACTTCTCATTAATTGTTTTTTCTTCTTGTTAATTGGCAAAAT -ATTATGATGAACTTGTTGGGTTGATTAATTTGTAAGAATAAAGTATACAA -TTATTCATTCATTATTAAAATTTGGGCACATAGAAAAAATTGTGGAAAAA -CTGTAAAAAATCTGCAAAAACGTGGAAATTATTCAAATCAACTCCAGGTA -GTCGTTGTCGACATCGTCTCGCTGCCGCATCGTGTTCTGAAAATCCATTT -TTCACTTTTTTTAAAGCAGATTCCCAGCTAACCGTCGACCGGATCGTGTT -GTTCCATCCGCGGATTTGAGAGTAGGAGCTTACGGTGCCACGTGTCTCGT -TGGCAGCTTGCCAATTATTCACAGACAGCCTGTACGAGTCGCTCAACAGT -GGACCGGCGTTTAGAGTCTGAAAATATATAACGGGAACACTAAAATTTTA -GAATGCGTATTGTGCAACACATTTGACGCGCAAAATATCCAGTAGCGAAA -ACTACAGTAATCCTTTAAGTGACTGCTGCACGTGGTGCCCAGCAGGGCTG -GGAATTTTTTGGTTTTTTGGTTTTTTTGGTTTTTTGGGACCAAAAATCCA -AAAAATCAAAAAAAAAAACAAGTTACCGTGTCTAGTCTCGACTCGAGACT -ATTCTGTATTAAAATACATCGAAACATGTATTTTAACACAGTTGTGACGT -CATAATGTAATACATTTGGCAACATTACTTGAATAACCCCATTAAAAATC -ACCTAAAGCATAAAACATTTTTTGGTTTTTTTTTGGTTTTTTTGGTTTTT -CCAAAATTTCAATTTTTTTGTTTTTTGGTTTTTTTGGTTTTTCAAAAACT -TCAAATTTTTGTTTTTTGGTTTTTTGGTCCAAAATTTTTTTTTGGTCCCA -GCCCTGGTGCCCAGCTGTCCCATTACGGTTTGATCTACAAAAAATGCGGA -AATTTTTTGCCCGAAAACATGTGACGTCAGCACGTTTTTAACCATGCAAA -ATCCATGCTTCTCCCGTATTGTTTGTAGATCAACGTAGATCAAGCCGAAA -TGAGACACACTGTGACCGCGTGCTACTGTAGTGCTCGTGTCGATTTACGG -GATCAATTTTCGAAATGATTATACATATAATTATCGATAGAATAATAAAA -TTAAGCAAAAAAAAATCGGAAAATAATACGAAAAAACAAAGGAAAATTGA -AAATCGCTGTCAAAATTCGAAAAAAATTAATTTCGAAAATTGAGTTCCCG -TAAATCGACACAAGCGCTACAGTAGTCATTTAAAAAGGATTACTGTAGTT -TTCGCTACGAGATATTTTGCGCGTCAAATATGTTGCGCAATACGCATTCT -CAAAATTTTGAACTCTCCGCCTCTCACAGCTGGGTCTCGTTAGGTATGGG -GGCGGATCCTTTTCAATTGGCGGTGGAGCGCGATTGAAAAAATTTTCGAT -TTTTTTTCGATTTTTCAGAAAAAATATCGATTTTTTCCGATTTTTCAGAA -AAAAAATTCGATTTTTTTTTGATTTTTCACAAAAATTATCGATTTTTTAG -ATTTTTCAGAAAAAATATCGATTTTTTTTTCAGATTTTCAGAAATTATTT -TGATTTTTTTTTAATGTTTTGTCCCTTTTTCTGAAATTCTACCTCATAAT -GATTGCTTCTTCCACTTCCGCCTCGCTGCCCGTAGTTCAGTGTCGAGTAA -TTCGCATTCGATACTGTGTAAATCGACAGTGGAATAACCGGGTAGATCAT -AATGTAGTACAATGTGGCAAAGTGGATCACTAACTGAAAATTATTGGATT -TTTCTAATAATAAGGTGGGGAAATCCGAAATATGTGAAAAATATTTTTAA -TAAACAAATTTTCCCCTGATTCCGAATATCTATATGAAAAAATTCAAAAA -AAAATTTTCCAGATTTTATATTTAAGCTTGAAATCGCTTGAGCCCGCATC -ACTATTTTCAAATGCTTGCCCAAAGAAATTTGCATTAGAGCGCGCTTGCA -TAGTTTGATTTTCTTCATTCAAATATTGTATTTATTACCGCCAAATTCAA -TTTTTTAACCGGTTTCATTCATTTTTGTCGAAAAAATATATTTTTCAGAA -AAAAACCGGTGAAAAAAAACCAAAATCGACAAAAACTAATGAAGCTGGCT -GATAAAAATTGAATTCGGCGAAAATAAATAAAATATTTAAATGAAGAAAA -TTCTTAGGCGCAAACGAAATTCGCCATTTCAAGCTTAAATATAAAATCAG -GGATTTTTTATTTATTTTTTTTTCACATTGATTTTCGAAATCAGGGAAAA -ATTTGGGGTTAATTATAAATATTTCCCAGATTTCGGTAAGAAAAATATGA -TTATTTTTTTACTAAAAAATAACCCCCACCAGTAAAGCGTAGAAAATTGA -GATGATAAATGCGAAAATGATGAACGCGGAAGAAAAAAAGTCGGGATTCT -TTTGGGCAGTGCTGGAGTAGTTGAAGATCGAGATGATTGTAGAATAGTAG -GACAGGAATGAAACAATCATCTGTAATTTATTTTTTTAAAGCTTCCAGGT -CAATACACGTGGTGTCAGAGTGTCTCATTTCGGTTTGATCTACTGTGTAG -ATCTACAAAAAATGCGGGAGAAGAGACGCAGAGTTCTCAACTGATTTCGC -ATGGTTAAGAACGTGCTGACGTCACATTTTACTGGGAGAAAAATTTCCGC -ATTTTTTGTAGATCAAGCTGTGATGGGACAGCCTGGCACCATGTGGGTGC -CGAGGGTATTGCTTTTTGGTATTTTTTGGAATTTCGAAAAAAACTTTCCG -ATTTTTTTGAAAATAGCTCTTTTTATAGAAGAAAATAGTTTTTTCTCATC -AACACAAATTTTAGAACAATTTTTTCGATTATCCGGAAAATTGAAAACTT -TCGTTTTTCTATGTTCCATTTTCGATTTTATAAATTTGGGAAAACCTAAA -ATTTCGATTTTTTTTGAAAAAAAAACGAGTATTCAATAATTTATATATTA -TAGGCATTCTTTTTCTCTAATTTCTTCTGAAAAACATTAAAAAAAAATTT -TTTTTTTTTTAAACCAATTTTCAGTAATTTTTTTCTGTAAAAAATACGAT -TTTTTTCCAATAAATTTCTAGTTTTTTCTCTCTTTTCGTACATTTGGACT -GTTTCTAATTTTTGCTTGCTTTTTTCTATATTTTTTCTGCGATTTCCTAT -GAAAAGTACCAAAAAATCGGAAATTGTTTTTTTTTTTCGATTTTTTAGGA -AAAAAAACGATATTTCCTATAAATGTTTTTTTCATAAGTAAATACTTTTC -TCCTTTTCCTTTTGATCTACAATATTTCGAATTTATTTTGAAAAAAATTT -TTTAAACGTTTTTTTCTGAAACAAAGACCCAAATTTTCAATAATTCAATA -ATTTTTCTGGATTGTTCAACCGAAATATACACATTTTTCAATAAATTTAT -AGTGTTCTCCTCTATTTTTGTTGATTTTTACTACTATAATTTTTTCAAAA -TTTTCGAAAAAAAAAATTTTTTTTTTGGAAAATTTTAATTTCAATTCGAT -TTAAAAAATATAAATGTTCATATTTTTTCATCGAAATATATATTTTTTGA -TTTTTCAACCTTTAAATTGTTTCATTTTCTCTGAAAAAATCGGAAAAATC -AACAGAAAAATCGAATTTTTTAAAAATATTTTCCGATTCCGACCGTAATT -TTTATGAAAAAAAATCGGTTTTCTCGTTATTTTCTACAACAAAACCTCAA -AAAACATGCTGGGCAACGTCAAAATCGCTCGATATCGAATCTTCAGCTCA -GTCTCATGTTTCACCAAATACACCGCATACAGAAACATCGTGCAGCTGAT -GAAGAAGAAAATGAGCAGATATGCACACTTTTCCACGAAAAATTCGCCCG -AAATCATGAAACGTGGCAAATTGAGCACAATTCGATGGAGCCAATAGCAG -GTCGATGAGCTGCAGCGGAAGCTTTCATTGGGATCTGTGCAGTACGTTGG -AACCGATAAATGTTCCTGCATTGATCGGATACAGTAGACGAGCAGGCAAA -TGTATTTTACAAGTGAGATATTCTGAAAATTTTTGAATTTTTTTTCCGAA -TTTAAAATTTTAGTTTCTCGATTGTTTTGAAGTAAAAAAATTGATTTTTT -AGAAAATTATATGTTTTGTTTAATTTATTTAAAAATCTTTAAAGGTGGAG -TAGCGCTAGTGGGGAAATTGCTTTAAAACATGCCTATGATACCACAATGA -CCGAATATCATGATAAAAAAATTCAAAAAAATTTTCTAAATTTTATAGGT -TTTTTTTTGAAAATTGAAAAATCTCAGTTTTTGCCTAATTCCAATTTGAA -TTACCGCTAATTGGATTTGTTCGGTGGAGCGCGCTTGCACGTTTTTAAAT -TTTTTTATTTTATTTTATGTTATTTTCCACCGATTTTTAATGTTTTCGGT -GTATTTTTGCTCGAATTTTAGAGAAAAAGTCAAGATAAATGCAAATTTTC -AATTAAAAAGCACGCTTACAGGCGTAAAAATGACAAAGTACCGATTTTAA -ACGATTTCCAACCTGAATTAATTAATTTCACTGATTTACGCCTGTAATCG -TCTTTTTTAATTGAAAATTTGCATTTATCTTGGCTTTTTCTCTAAAATTC -GAGCAAAAATACACCGAAAACATTAAAAATCGGTGGAAAATAACAAAAAA -TAAAATAAATAAATTTAAAAACGTGCAAGCGCGCTCCATCGAACAAATCC -AATTGGCGGTAATTCAAATAGTAATTAACAAAAACTGAGATTTTTTTCAA -TTTTCAAAAAAATCGTATAAAATTTAGAAAATTTTTAAAAAATTTTTTTA -TCATGATATTCGGTCATTGTGGTACCGTGTTTTAAAGCAATTTCCCCACT -AGCGCTACTCCACCTTTAAAGTGCTAATGTAAACTTTTTGTACACGTGGT -GTCAGAAAGTCCCATTTCGGTTTGATCTACAAAAAATGCGGGAGAAGAGA -CGCAGATTTCTCAACTGATTTCGCATGGTTAAGAACGTGCTGACGTCACA -TTTTTTTGGGAGAAAAATTCCCGCATTTTTTGTAGATCAAACCGTAATGG -GACAGCCTGGCACCACGTGTTTGTACAATTACACATTATCCTGGAACTTT -CCAGAAAATTTGAATTTCCCGCCAAAACTTATGGGTCTCATCACGATGAG -TCACTAACCTCAAACCGATATATTTTCTAAAAACAAAAACTCAAATTTTC -TCAAACTACAGTAATCCTACAGTAATCCTACAGTACCCCTACAGTACTAC -TACAGTACCTTGGCATTGTCCCCCACCAATATACAACCCAATATACCTTC -AAAAAACAAACACGTAATTTTTCCCAAACTACAGTAATCCTACAGTACTC -CCACAGTACCCCTGCAGTACTACTACAGTACCTTTTTAGAACATTTTTCT -GTTTTTCGATTTTTTCGCAAAAAAAATTCAGTTTTTTCAGCAAAAAAATT -GATTTAAAAATATTTCAAGTTACTTTTTAAAAGCTTTTCAAAAGTTTTTC -AATCCGTAAAAATAAAATTTTACGAATTCTTGTATTTTTTAAATTATCTG -AAATTTTTTTTTCTCAAAAAAAAAACTTTTTTTTTCAAGTTTTCAATTAA -TTTCGGCAAATTTCAAAAATTTTAGGTTTAAAAAAATTCAATTTTTATGC -TTAACATTTTATCGACATAAAAATCATTAACAACTACGAACAATTTGTGG -AAAACGTTTTTGGCAGTGGAGCGCACTTGCGCCTCGTATTCAAAAAGCCA -CACAAAATGGTGAAATATTCCCAAAAATCAAATAATTGTTTCGCTACGAG -ACCCAAAATACCGCAAAATAGTAATTTTTACCATAGTAATTTTCAAAAGT -GGCACGTAGACCTGATGAAACGTGTCGTTCACCTCCTCCGAGCTTCTGCC -ACGTGAGCTGGTGCTCCGGCATGGCTGATACATTTGTGAAGTTCGCTAAA -ACAGAAAAATATTATAAATAAGCGGAAAATTTCGTGGTCTCGACACGACA -AAAAATAATAAAAATTATTCGTGGTGAGACCCGAGTTGTTTTGGAGCAAA -ATTCTCAAAATTGGGGTATCACGTGGTGTCAGAGAGTCCCATTTCGGTTT -GATCTACAAAAAATGCGGGAGAAGAGATGCAGAGTTTGCTGACGTCACAT -TAAAAAAAAATTCCCGCATTTTTTGTAGATCAAACCATAATAGGACAGCC -TGGCACCACGTGCGGGGATTAAAACCCGCGCCGCACAGAAAAAAGGCGGA -GTGTTATTTCGCAACACCGCGGCACGGTTTTTTGTTGATCTTTTTCAATA -GTCTTGATATTACTTGCGATTTTTGCAAATTCAAAAAATCAACAATAAAC -CGACCGTGCCGCAGGGTTGCAAACTCCGCCTCTTTTTCTGTGCGATGCTG -ATTTTTTGCGAAATTCACGAATCAAAAAGCACACGTGGTGTCAGTGTCTC -TCATTTCGGCTTGATCTACGTAGATCTACAAAAAATGCGGGAGAAGAGAC -GCAGAGGTCTCAACTGATTTCGCATGGCGCCACACATTTTTGGACAAAAA -ATTCCCGCATTTTTTGTAGATCAAACCATAATGGGACAGCCTGGCGGGGA -TTAGAAACCGCGCCGCACAGAAAAAAGGCGGACCGTAGTTTCGCAACACC -GCGGAACGGTTTTTGATATTACTTGCGATTTTTGCAAATTCAAAAAATCA -ACAAAAAACCGTGCCGCAGGGTTGCGAATTTACGCTCCGCCTCTTTTTCT -GTGCGATGCTGCTTTTTTTGCGAAATTCACGAAAAAAAAAAAGAAAATAA -AAGTACATTTACCGATAAAAGTGACGATAGACCGCCGATATACATGGAGA -GAATAGAGAGAGAAATGTGAAGTTTATTAGAAAACAATTTTGTAAAATTA -TGATGATGATGAAGATTTGCGGAATCTGGTAATCGGTTTTAATTGCCTTT -TCTATTATATTATATTAATCACTTGATGATGTACGGCTTTGCGCTTCCTC -GTCCACGGTCTCCAGATGACGGAATCCACGTGGCGATACTGATCGATTGT -GTTTTGGAGTGGTGGTGCTGCTGGTGCTGGTGGAGGGAATTGAGGTGGTT -GCAGTGGATATTACGCTGAAAAATTGAAAGGATTGGTGGAGGAAATGAGA -GAAATTTGAGAGCATAAATTTTTAAAAATCGAAAAAAAATTTTTTTTTGC -TATTTTTGGGCAGAAAATGGCGAAAACGGTGTTTTTTTGGGTAAAAAATA -ATAAAAATTTACAATTTTTTTTGACAGAAAAATGCGGAAAAGCTGTTTTT -AGGGTTGAAAAATCAAAAAAAAAATTTTTTTTTGCTATTTTTGGGCAGAA -AATGGCGAAAAACGGTTTTTTCAAGTTTAAAACATCAAAACAATTTTTTT -GCAATTTTTTTACAGAAAAATGAGGATAAGCGGTTTTAAAGGTTTAAAAA -ATTTTTTAAAATTTTTTTTGCGAATGGAAATTTTCTGAAAAATCGTGCAA -ATGCCTAATTTGTGCAAAAATCTTATCTGGTCAATGATTTTTAAGAGAAA -ACACCGGTTTTAGAAGGGAAAAAGGCAAAAAACTGGATTTCCAGTGAATT -TTATACTAAAAATGGAAAAAATTCAGAAATTTTTTAAGGAAAAATCAGAA -TTTTCGCAATTTCTACACGAAATATATAGAAATTGAGGAGAACCTCGGAT -TTTTTGCGGAGTTTAAACAATAATTTTTCGGCTAAAATTAACGATTTTCA -GAGAAAAAACTTAAAAAAAACAGAATTTCAGTGAATTTTACACGAAAAAC -GTAGCAAAAAGAGGTTTTTAGGGAATTTCCAAGTCAAATTTCCGAAATTC -TTGCGATTTCAACCCTGAAAAATAGCGAAATTGAGGAAAATCTCGGATTT -TTGCAGATAAATAATATTTTTTCCAATGATTTCCGTCTCCAAAACACAGA -ATAATTTACCAATTCGACGATGGTGAGGAGGGAGAGCCCAGCTCGTTGGT -GACAGCCGTGAGATCCGAGAACAAATTGACGCTGGCTGAAAAAATGGAAT -AAACGCTAAATTGATGATTTCCGCTATTAAAGTGCATATAGAAATACGAA -AAAGCAAAAAAAAAAATTTTTTTTAACCTTTTCCCTGGAATCGAAGAGCA -GTTTGCTTGCGGATTGGACGTCGAAAAGGGCCTAAAATTCTCATTTTTCG -GCCTGAAATTCCTCGAAAAACCCACTATTATTGGTAGTCGGAGATGGCTG -ATCGCCTCGTCGCTGGTAATATAGCACGCCTAGCCAGAATCCGTAGAGAA -AATAAATATAGACTGCCCACACTAGGATGATGGGAAGAAACGACAATCGG -CAGGCGTCTGGAGTGAAGAAATCAAGATTTTTCAGATTAAAAATTAAAAA -TCTTTAAAGGTGGACTACACCCTTGTTGGGAAATGGCTTTCAAACATGCC -TATGGTACCACAATGACCAAATATCATGATTAAAAAATTCAAAAAATTTT -TCTAGATTTTATATGATTTTTTGAAAATCGAAAAAATCTCAGTTTTTGCC -TAATTCCTATTTGAATTACCGCCAATTGGATTTGTTCGATGGAGCGCGCT -TGCACGTTTTTAAATTTATTTATTTTATTTATTGTTATTTTCCACCGATT -TTCAATGTTTTCGGTGTATTTTTGCTTGAATTTTAGAGAAAAAGTTAAAA -TAAATGCAAATTTCCGATTAAAAAATCACTGAAAATGCGTAAAACTGAAA -AATATGCTAGTTTCAGGTTTGTTGTCGTCGGAACTCATTATTTTACAGTT -TTACGTATTTTTCACATTTTTAAACACTTTTTAGCAAACATTCTGCATTA -ATCTTGCTTTTTTACTTCTCTTTCCGATAAAAATACACAACTAATGAAGA -AAATCAGTGACATAATAATAATAATAATAATAATAATAATAATAATAATT -TATTACGCTCGCTGGGAGACGTGAAGGAATACAGAATACAAAAGTTATCA -TTGTTCGCTTGAACTAGAATTGGTGCAGTCGGGCAATCGTTTCCATTCCA -TTAAAATGTTGTCCTTGTCCTTGCGTTGTCCTTGCGTAGACTCCCCCATA -GTGGGCGAGCGATTCCCGAGTGAAAATAATCACGGAATGAAAAAATAGAA -GAAAAATAGAATAAATTAATAAAAAAAATAATGCAAGCGCGCTCCAACGA -ACGAGTTCAATTGGCGGTAATTCAAATAGGAATTAGGCAAAAACTTTTTC -AGATTTTTTCAATTTTCAAAAAATCATATAAAATTTATAAATTTTTTTTG -AAGTTTTTTAACGTGATATTTGGTCATTGTGGTACCATAGGCGTGTTTTA -AAGCAATTTCCCCACAGGGTGTAGTCCACATTTAAAAATTAAAAATTAAA -AATTCTACCTAACAAAATCGAAAATTTCAGATTCTCCTTGATTAAAAGCT -TTATTATTGAGTAAAGAGTCCGCAGCGTCCACACGGAGAGCGGGTACAAG -ATGGAAATCTGAAAATATTTAGGATTTTCAAGGGAAAATATCGATTTTTT -TTAGCAAAATACCACAGAAATTGCGGATGGAATGAGTAGAAGAGCCGGGT -TGACTTTCCGGGGAAAGTTTCGACGTGTGATGCTCGTCTCGGAGAGCCTC -ATTCCCAAGAATCCGGTTGCGATGCTGAAGAAAATCGATGGAAAAAGTCT -AAAATATCCCCTGAAACCCTACCTAAAAATCAGAAAATACGAGAAAATAT -TGATTAAATTCCGAGCCGGCACATAATTCGGGCGGATCAGCACTCCATTG -AAGTTTCGAAACGTTTCGCCGTTCCACTGAAGTCCATCGAAGCCGGGAAC -GGATGGCGGCTCGAAATGCTCGTCGACACTCATTTGACTGGCCCTGTAGA -GCCCGATGATGGCAATGGCGAGCATTCCCACTTCCACATGGAATATCAGG -CTCTGAAAATTAAAATTTAGCTTTTAGACGGAAAAAATCGATTACTTTGA -CATGAACTTGATCGAAAAGCCAGCGATACGGGTATTTTCGGTGCAGGCGG -CCTGATTCCGGACGTGCTCCTCGAGATATATTGGAATTTGTCGAGCGGAT -ACTAATATCTGCCATTTTTTCGCTGAAAAATCAGAAAAAATAAGTTTTAA -AACAGAATTTTAATGGAAAAATAAACGGAAAAATTCGAAACTTTTTTTTC -CGCCATTGAACACCAATGTGCCTTTAAGGTACGGTAGCTCTTCGTGGTGA -GACCACTGCGCCGCGCATCTGATTTCTCGTGGGAAATTTGTTTCGAATCC -TACGTTTTTTACAGATTTTTCTTTTTTTTCGTTTCGCTCATCATTTTTTT -GTTGCAAAAAATCCAATTTTCAGACAAAAATGTCAGAACGCCAATCCAAA -TATTTTGACTATCAAGGTATCGTCATTTCCTCCACTGGACAAGATAACCA -AGATTCGGAGACGGACCTCGTTTATCTCATTCAAGCTCATGTACGTGAAT -TCCCTCCGTTTTCATATTTAAAATAATAAGCTCGTTTTCAGGGAAAAGCG -GCCCCGAAGAACATCATGTACGGTGTCTCCAAGTGCGCATTTGTTCCAAC -AAACTTGGAGAGGAATTTCGATAATATCGAAGAGGCAAAAAATCTTGAGT -CAGTATTTATTTGATTTGAGCCCATTTTTAATCTGTTAACACTTGAATTT -TTAGACGTCGATCCAAAATCCCGCTAAAGTTCGGTGAAGTCATCCTATGG -AACGAATCGGACTGTGATCACGATAAGAGGATAATCCTTCATATCAAACG -AGAAAAACCAATTTATGAAGCGTCTTCCAGCAGAAATGGACTTATTTTGA -AAGTCGGTGGCGTCATCCAGCCCACCTCAACGACCTCGTTCTGGACGCCA -TTATGCACCGTCACCATGCGTATGTTTCTTCTTGATTTTCGTCTCTCTAA -CCATATATTTATTTCAGCAGAGACAGAGGCGACCCGTGCGGAGCCAGACG -TTTGGCTATACGCCTGGATTCGATTCGAAACTACCATGAAGAGTGGTCTA -GATCCTTTCAATATGACTGCAACATTCGAATCGTTTGACAGTTGCGATCC -ATCCGACCAAGCACGCGTCTGTGAAGCGGTATTTGCTTTTTAAAAATTTT -TTACGGGATTTTGAACAAATAACTTTCAGCCATGGAACGCAGGCTCTCCT -GACTCTAAATTCGGTGTTTGGCGCCCGGATCCAAAGCCTGCTGATAGCGA -CGACGAAATTGATATCGAGCCGAGAGAAGGCTGGCACTTGCCAGAAGACA -AATGGGCCGAGGTTAAGGTTGCTTTGTGGATTCTCGTTGACAATTTGATT -TTGCAGGTCATCAAGATGCAGCTTGGCCTGTATGTCGGCGAACGCCTACT -GATTTGCAAAGAACTCTCGCAGTTCGACTTTATTATCCCACTGCAGAAGC -CATTTTCCCGAGGAACGGACAAGACTTTGATCTACCCAGCCGTCGGAGAA -TACTTTCATTTCAGTGCTATTTGGTCGATGCAGCACAACGGTTTTCTGAT -CTATGAGCTTCAGCCAGTTCCACTTCTCAGACAGCATGTAACCTCTGTCA -ACGGAAATGTAAGTTATAATATTGATTTTTTTGTCCAGAACATAATTTTT -ATTTCAGCTCCTTACCCGCGTCGTTCCTGCCAGTATCAGAGGTCTCTTCG -TTGACAAGGAGGGCACTCTTGGATTGATTGATGACCCACACCATCTTCTT -TCATTCTTCGAGTTTCATCCAGCTGGTTATGAATTCTTGAAGGCTATGGT -AATCATGAGTGGGTCTTATTTTGAAACAAACGCTTTCAATTTTCAGGCCG -AAGTTCGTGCTGTTCGAACTTCAGAAAACAAATCTGTCCGTTACCGCATT -GTTCGTACATCGGGAATGTCCATTTTTGAAAACTGGCTTCGTGATACTCA -GGTCTCTAAAGTTAAATTAAACTCGTCCTTTTCACCCCTGAATTTTTCAG -TTCGTTGTTGGTCCAGTCAAAGGAATTCGAATCAATGAAGACACTGTCAT -TTGTGCCAAACATCCGAATGTCTACTTCAAAATCCCCAATAACTTGAAGG -AAGGAATCCCCATTGGCGGAGGAGTTCAATTCGTTGGAAAGCGACAAGCT -GGAGTCGACAGTGAAATTATGATCACCGAATGTTCTCCATGTCCAGCGTT -CACTTGTAAAAATTACTCGGTCTCTGGTGATACGGTTAGTCTTCAATTAT -TTAATAGTTTTTATTCTATGAGGAAAATATTCAGCGCTTGTTCCAAGTGT -ACTTGAAGCCAAATTGCGATCATGAGCAGTTGGCGGAGAGTGATTCGATG -GGATTTGTGGATTTCAGAGAGTTGGAGACTCCATGTAGAGGAAAGTGAGT -GTGTCAGGATTTGTAAAAATAATTGTAACTGAATTTTAAGGTTCCTGGCA -TGGGTCCGTGAATCCATTACTGTCAATGATTGTCGCCGTGCTGCTACCAT -CATGGAAGTATGCTCGACAGCCATCTGTCCTCCGTTGATTGCAATGAGCG -CGAATTCGAGCAGAGCAACATCGGCCAGAACTACGCCAGCTGGAAGTTCC -ATTGGATCCAGATCATCAATTCAATCAAGAGCATCTGCAGCTACTTCAGT -GAGCTCAAACGTAAGTTTATTTTTAAGGTTGGAAGATGATAAAAACAAGT -TTTTCAGCGATTCGTTGGCCCTTCAAGCCGCAGAACTCCATCTGGTACTC -CACAAAGCTCAACATCTTCCAGGGTCTAATTAAATATATACGCATCCCGT -TTTCCCCCGTATTTGTGTTTCAAATGTTCTGCTCATTTTTAATCTACCCG -TTATCCAACCAAACATTTATTTATTTAAACTTCAAGTTCCACCACCATCC -CATTCCGCACAACTTGTCTCTCGTAATTTTCTCGTGCTCTAATGAAGTTG -TGGTAGGTTATTCTAGTGAATACACCCATGTTAAGCAGCGAATACATCCA -GAAAAGTCCCAACAAGCCGGCAGCGAGATACTCCCCCCAAAATGATGGTT -GATCGGTACATCCAAGATAGGGTAGCATCGCGATAGACGTGAGCAAGTTC -GTTATGCACTTGAAAAACTGAAATTTCAGAAAAGATTAGGTGTATCAGAA -GGTTAAAAACAAACAAATGACATATAGATGAACGAAGCCAGTGATGGAAT -CGGATTCCGAATACGAGAAGCCATTCCCGGAGATACTGTGATAAGAATCT -GTGTGATCGAGAACACAATGAGCACACCCACCGGGAACATGAATTCCATG -GAAACACGGAGGCAAAGGTCACAGTACTGCAAAAAATGCGAAATTTTGGC -GATTTTTGCTCTAAAAAATGCACTGGCCGGGTCTCACCACGACAAATTTT -TGTTGTCAGTTGAATGCCAATAGAGTGTGCGCCTTTAAGGAGTACTGTAG -TTTCAAACTTTTGTTGCAATCGATTTTACAGTTTTCCCGAGAAACAAAAG -TTTGAAACTACAGTACTCCTTAAAGGCGCACACACTCTTTCCGCATTCAA -CTTAACAAAAGGTTGTCGTGTCGAGACCCGGCCACTGCATTTTTGTAGCA -AAAAAAATTTGAAATTTTCAAGTCTGGATAATAATATATAATATTTTTAC -CTCAACTATGGGAATTTGCATTTCCAAACTATCCAAACAATCGCTGAACC -CGAAAGCATCACAAATAATCGATCGATATTGTCGCGGAATGTCACGTATC -GATTGGTAGATCATGAATATGTTGCCAAGTAACGCGAAAATCTTGAAAAA -TGGAGGATTTTGCTTTTAAAAAATCCAAAAAAAAAAACTTAAATTCGACA -ATTTCCTGTTTGAATTCCCTCCAAAATGAGAACTGCAGGACCCATCAGCG -ATTTGAGTGGGCGGAGTCCGAGGGCGCTGATTGGTCGTGCAGTTCTAATT -TTGGAGGGAATTCAGCCAAATTTGAAAAATCTCGTTTTTTTTGCAATTCT -TTTGTGGTATTTTCGACATGGGGTTCTTTCTGGCTTTCCTCATCAAGGGT -GTCAATGTCCCGTAAAAATTTCGAAAACGGGACAACGGGACGTCCCGTTT -TTTTGAAAACACTCAAAAAACGGGACAAACTGGGCGGTTAAAAAAAAGAG -TGCATAGTTGGCGTAAATTTTAGTGTATTCGAGGCAAATTATAAAAAAAA -CTGCATGTAAGTCATTAATCTGCATGAATTTAAGTCTTGAAACAAAACTC -AAAAACAGAACTTTAAAATGTGCAACAAAATCATGAGAGAAATTGTCCCG -TTCCCGTGATAATTTTGAAAACGGGACAGCGGGACGTCCCGTTCCCGTGA -AAACACTCAAAAAACGGGACAACGGGACAAACGGGACACGGGACTTGACA -CCCTTGTTCCTCATTAAAATTTTCGCGCTCCATTGATAATCGCCCTGGGA -AAGTCGTGTACTCCACACGGACAAATCACATTTAGTTTTACAACTAAAAT -CGAGAAAATTGGGAGAGTTTTTGCCGCGAACCTGGCCTAGTTCGCGGCAA -AAACTCTTCCATTTCAAAATATGGGCGAAGCCAGAAATCCGTGATATTTT -CAGCATATTTTTTTGATTCGAAGCAAATCTCAGTTTCTCACCACAACGAA -CAACTTCACATTCGGATGCCGCCCGTCTTCGAAACGTGGAATTCCAACTG -AATTCACCGATTCGACACTTGAACCGGGTGACATCATCATATTTTCAACC -AGCTCATACTCGAACTCCGGAATATCCGGCACCACATCAATCGGTGCTGG -TTCTGGCGGTGGCGGCTCAACTGACACTTTTCCTTGATCTAAAATTTGTT -TTTTTCTGAAAATTTGTCACTGTACCAAATCAAAAAAAAAACCTTACCAG -AACTCATAATTTTTGGATTTTAATTTGTAAATTGCAAAACAGAAAATGAA -TTGGAATTTTTTCACTTTTTATTTATGGGAGGGGGAAATTCTTTGTTGTT -GCAATAAAGTAAAACAATCACAGTAAATGCCAGTACAATAGTTTTTCACG -TGTAATATATTAACCAATTACTATATTCAATAACTCTGTCGTCTAAATAC -ATAGGGTAGGGGGGAAGGTGAGGGAAAATGGAAATAATAAAGTGAAATGT -TTTGTGTACTTGCGATAAAACAATCAATAAATGGGAACAAGCCGATGATA -AACTGATAAACCGAACGTGAATATCGAGAGAGGGAGGAAGAAAGCGTATA -CCCGTTAATGAAATCAAGTTAATGGAATTATTTGGATTGAAACAAAACAA -CGAAAATATCAATGTTTGAGCATAAGGAATGAGGGAATGGCACTGGTGGT -GGTGGATAAATGAATCGGGGGGAACGGAATCTATGGAAGTTTCGAATACA -TCGCATCGAGTTGCTTCGAGTAGTGAGCCTTCAGCTTCGGACGCTTGCTC -TTCAACGTTGGCGTGAGAAGATCATTCTCGACGCTGAATTGCTCGGCGGA -GAGACTGATATCGCGCACTTGCTCGAACGAGAAGAGCCCGGCTTTCTTGC -CAACAGCGACCATGTCATCGAGGATCGCCTTTTTGACGGCGTCGTTGTTG -CACAGCTCTTCGAATGTTCCCTTGATTCCTTGGTCGGCCATCGCTGGGAC -GAGAACCTAGAAAAATTGAAAATTACATATATATATATATATATACACGC -TCTCCTCAAAGCCGAATAATTATTAGAGCGCGCTTACTGCGCTTCGCGTT -TCTGCATCCGCGGCATTTTGACTTTACACTGAAAAAAGCAGATATTTCAG -ATTTATCGAATTTTTAGCTTTTAAAATTTTTTTCTGCATTTTTCGAACAA -ACCTTTTGTTAAACAGTGAAAATTGAATTTAAAATGACTAAAATGAACTT -TTTTCGTTCACTGGTTGTGAAATGGTTTGAATTTGAAGAAATCAAAGGGA -TTTTTCTGAATTTTTTAATAATTTTCTATTAAAAATCGGTTTTAAACCAT -TTTTTGACCCTAATGTTAAGTCACAAATGTATTGAAACCGGTTTTTAATA -GAAAATATTTAGAAAATAAGAAAAATCCCGTTGATTTCTTCAAATTCAAA -CCATTTCACAACCAGTGGACGAAAAAAGTTCATTTTAGTCATTTTAAATT -CGATTTTCACAGTTTAACAAAACGTTTGTTCGAAAAATGCAGAAAAAAAA -TTTTAAAAGCTAAAAAATCGATAAATCTGAAATATCTGCTTTTTTCAGTG -GAAAGTCAAAATACCGAGGATGCAGAAATGCGAAGCGCAGCAAGCGCGCT -CTAATAATTATTCGGCTTTGAGGAGAGCGTGATATATATATATTTTTTTT -AATTTTGAAAATATTTAAAACCAAAAAACCAACCTCAGCATCAGGTACAA -CAATAGCAATGAGACACGTCTTCAGTGATTCTCCATGAACAAATGATTGA -GCGACATATTTCGAGCGGACATAGATGTTCTCAATCTTCTCCGGTGCCAC -GTATTCTCCCTGCGAGAGCTTGAAAATGTGCTTCTTGCGATCCACAATTT -TCAGCGTTCCCTCAGGAGTCCATCGTCCAATGTCTCCAGTGTGCAACCAT -CCATCCTCATCGATCGTCTCCTTCGTTTGTTGCTCATTCTTATAGTATCC -CTTGAAGATGATGTGTCCCTTGACACACACCTCGCCGGCTTGATCCTTCG -CGTAATAGTTCAACTCGGGCACGTCGACCAACTTGATCTGACACGATGGG -ATCACCATTCCGACGTGTCCGGCTAGCGAATCTCCTTCCATCGAGACAGT -GCAAGCGGCGACACATTCCGTTTGACCGTAACCCTCGACGACGACACATC -CCATAGCGGCACGAACGAAGGTGAGCACATTCGTCGAAAGTGGAGCCGAT -CCGGTGATCATCAGACGCACACGCCCTCCGAATCCTTCGCGAATCTTTTT -GAATACCAAATTGTCGAAGAATCCGTCATTTCTGATATTGAAGCTGGAAA -AAAAAAGAAGATATTAAATACTATCAAATCATTCAGACCACTCACTTTGC -CATATCTCTGGCCTTGTATGAGATAGCGAAATCAAACAACATCTTCTTCA -AAGTCGACTTGTTCACTTCAGACATCACTTTATCGTAAAGCCGATTCAAG -ACACGTGGCACCACTGGCACCACAGTCGGCTTCAACTCTTTGATATCCTC -GGCCAACACACGTATGTCACCACGATAGAATCCGACTTTCGCGCCGACAC -AGAAGCACACACTCTCGATGACTCTCTCGAGCATGTGAGCCAACGGAAGG -AAGCTGATCATCGAATCGGTCGCCGCGATGCCACTGTGCTTGAAGAAGTC -CATACAGACACCGTCGGCGATCACGTTCGCGTGAGTGAGCATCACACCTT -TCGGTGTTCCAGTCGTTCCTGACGTGTAGCATATGGTCGCAAGATCCTCT -GGTGTTGGTGGAATGTGTGCTGGACGAGTCTTGGCGTTCTTTCCAATCTT -CTCGAGATCCTCGAACGTGAGCACCTCGACTCCGAGCGATGACGCAGTCG -TTTTGAGCTCATCGGTGACTGGTTCCATCACAACAAGTGTGCTCAAACTT -GGGCATTGCTCCTTGAACTTTAAGAGACCTGAAATCAAATTTCCTTTTGT -TTTTAATAATATTCCTTATCAAACTCACCAGTGGCCTTTGAAATATCATC -ACAGACAACAATCTTGATCTCTGCCTGATTCAAAATGAATATCGACGCTT -CTGATCCAAGGGTCTCGTAGATCGGCACAATCACATTCGAATAGTTGTAG -GTGGCGAATTCGGTGATGATCCATTCGGCGCGATTCTTCGAGTAGATCCC -AATGTTCTCCGCGTTGCCAGTCGGAACGCCGAGCTCACGGAACGCGACGG -ACACGTTGTCGGCTCGCTCGAGAATCGTATTGTACGACTCCCACACGTAC -GGGATTGAACCATCCGACTGTTTGACTCGACGTCCGAGCATCGGCCCGTT -GTTCGAGAGACGGGCTCCACGGCGAACACCCTGGTAGAGGGTGCGCGCGT -CTTCGAACAGGAAAGCCTGGAGTTCGTCGTCCTTCAGGTAGGCGCTGATG -CGGGAACCATCCTGGAAATTAACATTTTAGTCGGGGGGTTTTTTTGGAAT -TTTTTTTTCGCTCGTTTTCTATTGTAAACCGAGCCACGACGCGACACGCC -GTAAATCGACAAGCCCAAATGGCCTAATTCGGCAAAATCTTACATTTAAA -AATATGAGGGAAGACAGAACTCCGTGATTGGAGAAAATTAAAGGAGGACT -AACGGTTCGGACGATTTTGAACGTATAGACCCAAAATGAGCTCAAATGAA -TGAATTTCGTAATGAAACTGCTCAAAAATTTTTATGGCGGTTCAAAATGT -TGAAAAAATTACACTGATTTTGGCTAAAATCACGAATTTTCCCATTTTTC -CGTGTCACATCTGTTCGAAGTTGGATTTTTTGGAATTATCGTTTTTTATT -ACATATATTGGTAGTTTATCTCATTTAATTTCGTCGATTAAAGTACATTT -AAAGCCGATAGGTAACCAATTTCGATAATTTTTGGTCACCTATCGGCTTT -AAATGTACTTTAATCGACGAAATTAAATGAGATTAATTACCAATATATGT -AATAAAGGACGATAATTTCAAAAAATCCAATTTCGAACAGATGTGACACG -GAAAAATGAGAAAAATTCGTGATTTTCGCCAAAAACAGTGTAATTTTTTC -AAAATTTTGAACCGCCATAAAAAATTTTTGAAAATTTTTTGAGCAGCTTC -ATTACGAAATTCGTTCATTTGAGCTCATTTTTGGTCTATACGTTCAAAAT -CGTCCGAACCGTTAGTCCTCCTTTAAGTTTAAAAAAAAAACGGCATATTT -TGCCCAGTTTCTCTCCAAAACTCACCGGCAAAATGCGACTCTGATTCATC -GGATCCACCAGTGGCTTGACATTTCCCGAATAGGTGACCCCACTGAACGA -GTAGGATCCCGACGTCGATGACGAGCTCTTCGACAAGTAGTATCCGAGGC -CCATGGTGACTGCGGCGGCGGCTCCGATTTGAACGTACGGTGGAAGGGAA -GAGTTCGAGTTTGGTGCCGAAATGAAATCGACAATACTTCTGTAACAATT -GAAATTATATATAGAGAGGACGGGTGATGATGATGAGTCATCCAGGTTGT -TGTTGTCGCGCGCGCGCGCCCGCACTGTTCCCCACAAAACAAACAACTTA -TTTGAAATTATGAAATCGAAGTTTCTTTGTTATTTTATTTTATTTCACAA -GATGGTTTTCATGTTTTATATACCATTCGCAAAAACAATACCTAGTTTTT -GCTCGTTTGGACTCAGAAATTTTGAGACTTTTCTGAAAAGTTTAATGGCA -GATCAAAATTTCGGAAAAAGGTGAATTTTAGCGAAAATTCGCCGTGGTTT -TTCGAAATTTTGATCTGCCATTAAAGGTGGTGTAGTCGAATTTTTTTATT -GCTTTATTAGACTCAAAATTGTCTGAAAACACCGAATTTCATAATAAAAC -TTAAATGGCCTAAAATTAGCTAAAATTTGAAATTTGACCGACTTGTCAAG -CGGCTGGAAACGTTTTTTTTTTGAAATAACCGTCAAATTTTGAATATACA -GTGCAATTATCTTGCGTTTTCAACTTTATTTAGGTACTTTAAAGTCGATG -AACGGCGAGATTTGTTTTTAATTTTTCACGAAATCTCGCCGTCCATCGAC -TGTAAAATACCTAAATGAAGTTGAAAACGCAAGATAATTGCACAGTATAC -TCAAAATTCGACGGTGTTTTCAAAAAAAAAAAAACTGTTTCCAGCTGCGA -CGTCGGTCAAATTTCAAATTTTAACTAATTTTAGGCCATTTTTTGAGCCG -TCATAACTTTTTTTGAGGAGTTTTCAAGAAGTTTTATTATGAAATTCGGT -GTTTTCAGACAATTTTGAGTCTAATAAAGCAATAAAAAAATTCGACTACA -CCACCTGTAATGGCAGATCAAAATTTCGAAAAACCACGGCGAATTTTCGC -TAAAATTCACTTTTTTTCCGAAATTTTGATCTGCCATTAAACTTTTCGGA -AAAGTCTCAAACATTTTGAGTATAAACGAGCAAAAACTAGTCATTGTTTT -TGCCAATGGTATATAAAACATGAAAACCATCCTGTGAAAAAAAAACAACA -AAAACACTTGAAATTCGTAATTTCAAAGTTCTCCAAAAAAAACATACACA -CACCTCGATTGAGACTGTACCCACGCAGCCGTGTCTGTGATAACCATTCT -GTGTGTTTCTGTGTTTAAGTGGCCTATTTATAGTCTTCTGCCAAAAGACG -AAACCGCTTCTAAAATGAGATTAAATTGAGGTGGAAACGACGACGACGAA -GAGGTGGAAGAAGTGAGGGTGAAAATCGAAAAAACAAAGAAGAGATCAAA -GTTATTCCATCTTTAGAACTTTCTCCACTGCCAGCAATTGATAATAATAA -TAAGATTTTTATGTTGATAACTCTTTCGGTATCAATACAAAAAGGGGTGA -AAACCCGCCTCGACAAGCCTTTCGATCAGGCCATATATTTCTTTATCACA -CTCTCCGCACATTTCGGAACAACTTTGACCTCCCCGGCAAGGGGGCAAAA -GTTTCGAGAAGTTGTGTTGCGCGCGAAGGAGATGGAGAAGATGGAGAAGA -TAGGCAAACACGTACACCTCCTCAAACAGTAGTAGTAGTGATAATTGATT -TGATTAGTGATTCGGGTGGGCAAAACGAGAGAGATAGAAAGAGAAAAAGC -GAAGAGGACAACGAACACGTGTAATCAACCGTGTGCCAAAGTTCTCGCCC -TTTGGACTAATTGCAGTTTTTTTGGAGGAAATTCAATTAACACTGAAAAC -TAGTTCGTTTAAGTGTTTACGCTGAATGGGCCAGGTTTTGAGGGAAAACG -ATTTTCGAAGAACTTTAAATGTGGGGTACCGAAATCTGAAAAATATTTTA -AATTGACTCCAAATTTTCCCCTGACTCCGAATATCGATGCGAAAAAATTC -AAAAAAAATTTTCCTGATTTTATATTTAAGCTTGAAATCGCCGAATTTCA -TTTAGAAATTCGCATTGGAGCGCGCTTGCATCGTTCGATTTTTTTTTCGT -TTATTTTATTTATTTTCGCCGAATTCAATGTTTTTAAAGCCAGTTTCATT -CATTTTTGTCGAGTTCTCATCGAAAATTTTTTTGACAAAAATTAATGAAA -CTGATTAAAAAATTAAATTCGGCGAAAATAAGTAAAATAAACGAAGAAAA -TCAAACGATGCAAGCGCGCTCCAATGCGAATTTCTTTGGGCGCGAAGTTG -AAAAAATGGCCCGGGGCACAAATGAAATTCGGCGATTTCAAGCTTATATA -TAAAATCAGGGAAATTTTTTTGAATTCTTTCGCATCGATATTCGGAACCA -GGGAAAAATTTGGAGTCAATTAAAAATATTTTTCAGGTTTCGGTACCCCG -CCTTTAACGGATTTTTTGGCTTAAAATTGGAAACTCTTGGTATAAAACTT -GTAGAAACACCGAGTAAACTGTACACGTTTTAGACGATAATTCAAAAGTA -TCGAGGGAAGTATCCAGAAGTTGAAAAATTGCGAAAAACAGGTAAAATAA -GGAATTCAACGCGTGAATTTTGCATTTTTAGACTGAAAATAGTGTGGTAT -TTCTTCAAATATAGACGAAAATATCGACTCGCACTGGTTTTCGATCGATA -TTTATAGGTCGAGTTCATTGCTATGCACAACATTCCGGGAAAACACGAGA -TTTGAGGAATTTCTGAGCAACTTCTGAGTAAAGCCAACAAAACATTTTGT -ACAATTTTCTTGTTGGTCTTGCTCAGAAAATTTTCAATCAAAAACCAATT -GGAAATCGATATTTTCTGCTAGTTTTGAAAAAACACATGATTTTTAATCA -AAAATTGTTAAATTCATGCAATTTTCCAAAGTTTTACACGATTTTTTCTC -TGGAATTCACATGCTTTTTAAAGCAAACGGCCGTTTCTCGTTGTTGGCTT -CCACGCGATTCCATAGAAACACTGGGGCACCAGAGAAACCGGGGTCGAAG -CAAATGACCAACAAACAACAAACGGATGTGTGCTTTTTCTTCGTTTTCGT -CTTCACGAGGAACCACCACGCAAAATGGAACTACAACTACGATTGATAAC -GAAAAAAAAAAAGAAGAGATGATGATAGTTTTTGCAGCAATAAAAAGAGT -GATAACAAGATACACTCTATCTCACCCACACCTTTCCGTTCAAAGATAAG -GAAATAAGATTCGGGGGGTTCAAAGTGTTGGAGCCAAAAACGGAAAACGG -AGGGAGCAATTGTTCGTTGAACGAACAATAAAAAACCATCATCTGCGTCT -CAAAAATACACGTGTAAGTGAGCGAGTGAGTGAGTGAGTGCCGGGGAATA -AAACGAGTTATATGACCAACACAACGAGCGACGTTGCTGCTGCGTTTCCT -CACTCTCTCCTAGTGAGCGTGTGTGCGCACCACACTCACATGAGCGCATG -CAAGGGTGTATGCGCAAGTGGTACATCGACTCGGTATGAGAAGGACAGAG -CAGTAGTAAGGAGCACACGTTATGTTGCTCCACTACTCACTGTTGCGTAC -CGTGTAGCCTCTGCGGGCCACCGCGGTGCAAAGTACAGTGGAAGGAGGAG -AGTTGAAAAATTGGTGTTTATTTTACTTTTAAACTCGTTTTCCTCCGGAT -TTTGAAGAGAATTGGTTGACTTTTTGAATTTTAGGCGAAAAGCGCGGGAA -AAATCGAAAAAAGATGTGAAAACGAGTGAATTTTAGGGCAAAAGTGAACC -GACAATTGTTATGAGCAATCGGGCTTCTCGGTCGGAAAACAGATCACAGA -AAAATCGGAAAATCCAGCAAAATACTCGAAAATTATGCAATTTTCTAGAA -TTCCAAGCGAAATTTTCTAGAATTTGAGGCAAAATGATACGGAAACCAAC -GAGAAATCCAGAAAAAAAAACTATTTTCATCGAATTCTAGGTGAAAAGCT -CTGAATTATTCGATTCTCCGTCGGGGTAGACTCAAAAATTATGCAATTTT -ATAGAATTCTAGGCCAAACATCGCAGGATCGCCTACACAATTTCCGGAGA -ACGATGAAAATCGGCAAATCTGAAGCAAATAGGAGTGAAGGAAGAGGCTT -CGGATCAGTTTTTCTGAAGAAAATACAAAACTTTCGCTTTCGCAAAACTT -TCGGGAAAATTCTCAGAAAAGGCGTCAAAAGCTCAAAAAATCGACGTTGC -ACGATTTTCGACGGAAAAATAGAGTAAAATATCCGAATTTCTGCTTTAAA -ACTCGAAAAATTGCCCAAAAATCCGTTTGTTTTCGCCAAATTTCTCCTAT -TTGGGGGTCACAAGGCGAGCGGGAGCCGCCGACGACGAGATGAAGAGCTC -CACAGAGCCCCTGAGCCAACAACACAACACTCACCCAAAAATATTGGAAT -TCTCCGGAAGGAAATCGTCGTACGACGACGGCGGCGGCGACGGTGCCATT -TTTCATGGGGAAAATTAGAACCTTGTTCGAATTTGTGATTTATTATCGAT -TTTCTATGTGCCACGTGTGCCCTATTGCGTGACCCACCTGATTAGTTGCG -CGAGTATTTTGTCAGTGCGGTCGACGATCACCCGAAGAATGGAGAAATTG -TCTGAAAAATGCGAAAATTGGCTATAAAACGACGGAAAAAGAAATAAAAA -CAAGTGAAATGAGGCCGAGAGGCAGGTGAATTGTTTATGCAATTTTAGAA -ATGTGATATTTTGGCGGTGTAGATCGAAAAAAATGCGAAAAACACGAAAA -CAGGTCGAGAAATTCGCAAATTTTCGACGACTAAAATTCAAATGCACAAC -GTTCGCGCGCGCGCCGAAGTACGGTAGGTCCCGCATTTTTGCGCGCGCGA -AATTCAAATTTTAATTTTAATATTTTTTCTTTCTTCTTTTCTTTGATTTT -TTAAGAATATTGTGCAAAAAATTCGTTCATTTTTCGAATAAAATTGTTAA -AAAAGACGAAAAAAAAAAGAAAAAATAAGACAATTTCTCGGTGGCATACA -AATAAATACAAGTTATTGTTCGGGAAAAAAATCACAATTTTACATTAAAT -CCAGGTTTGTAATAAAATCAATTATTATTTTATTTTCTTCCAAATCCGGC -ACATGGATTTGGGCATCCGCTGGTCATGCAGCAGCCACCTCCACTCCCTC -CGAGACACGCCAACGACTCGCCGGTTGAGATGGCGAGAAGCACGAAGCAA -ACGACCATGACCTGGAAGAAAATGTGTGAATGTTAAGGTCTCTTAATATT -CCAATAAAATTATTTGGTTTTTTTTTACCGGTGTTCTTGCCAGAAAAGTG -CAAAAATTAATTAAAACTCTAATCGTGGCGAGACCCATCTTAGAAACGAG -AGTATGCGCCTTTAAAATTGGGCTACCGTAATAATCGAATTTTTGCAATC -TTGCAATTGTTGATTTCCGAAGAGCGTTAACAAGAAAACATTTGATAGAA -ATGACACATGAATTAGGTAAAATTTGGTTTTTTTTTAGATTCTTATAATT -CAGATTTCTATTTTGGACACGGAGTTCTGGCCTTCCTCATTGAATTTTTC -GCGCTCCATTGACAATCGCCTGCCGGACAACGAGTGGGAAAGTTGTGTAC -TCCACACGGACAAATACATTTAGTTTAACAACAAAAATCGAGACGCGACG -CGACACGCAACGCGCCGTAAATCTACCACAGATATGGCCGAGCCATAATG -GCCTAGTTCGGCAAACTCTTCCATTTCAATTTATCGATGTCAGAGTGTCC -CATTTCAGCTTGATCTACCTAGATCTACAAAAAATGCGGGAATAATACGT -AGAGTTCTCAACTGATTTCGCATGGTTAAGTACGTGCTGACGTCACATTT -TTTGGGCTAAAAATTCCCGATTTTTTTGTAGATCAAAAAACTGTGATGGG -ACAACCTGACACCACGTGATTTATGAGGAAAGCCAGAAATCCGTGATTTG -GAGAGCACAACAAAAAAAGAAATTCGGCCACTGATTCGCGGCCACGAGCC -ACTGTGCCTTCTCAAGATATTAGTTAATAATTGACGCTGTGAGACCCACA -GTTAAAGGCGCATGCTCAGCATGACTGGCCAATCTAATAGCATCTACAAT -GATAATTGAAAAAAAAACTCACAGTTTGGCAAAGTTTAGCGACGAGTGAC -ATAATTCTCCGAAAGCTTCAGCTGAACAATTTCAGGGATTACTTGCTGTT -TCCCATCGCTTCACCGTCTTATATAGTGCCATCGCCGATTGGCAGAATGG -GATACACCTGCCCCCAACTGCGCAGTTGAATACGATCCGTGTCTCTCTGC -GTCTAGCGGTTCTCCACGATGTTTCTTTGGCGGCGGTGAAGCCGTGTGTG -TGTGTGTGGCTCCTCCATTCTGATTGAATGTGTAACACTGCGGGCAACCG -ATTGGTTTTGGCGGCGGCGGGAAAACGAATCCGGATATACTACATACACA -AACACACACTCACACACACCGAAGGAACTTTTCAGAGAAACCTGAACTGG -CTTTTTATGATTTAAGTGCTTCTGCTGCCAGCATGATGTGGTGGTTGTGT -GTTGTCAATAGGATTTATGCTAATTCCTGACACATTCAAGAGATGAAACA -TCAAACCGGGTAGGAACTTAGTCCACCCAACACTGTGAGAGATTAATAGA -ACCTTTAAAAGTGGCACTTCTAGGCAGAATTCAATAGAATGGTGGGCGCC -TTGGAGCCTAGTCGACCTGCGATGTGAGTGGCAAGGTTGGCAGAGCTAGG -ATAAGCTTCTGGAACTGTAGGACTGTAACAAGCAAGGATCCCGCTCTGGT -ACTGTAGTGAACTTTGAGATCAAATTAGGTTTTTCAATATTTAACTAGCA -CTGTTTCCGGCCCTGATCTTAGAAAGAAAAGAAAAAAAGGATGTGAACCA -GGCGTGGGCGGCAAACGATTTTTTTCCGGCAAATCGGCAAATCACTAAGT -TGCCGGAATTTAAAATTTCCGGGAAATCGGCAAACTGACACTTTGCCAAT -TTGCCGAACGGCAATTGCCGCCCACACCTGATGTATACATATATATGCTT -TCACTCATGTGGTGCCAGAATGTCTCACTGCGGTTTGATCTACGAAAAAT -GCGGGAATATTTTTCCAGAAAAATTGCGGCGTCAGCACGCTCCTAACCAT -GCAAAATCAGATGAGATGTATGCGTCTCTTCTCCCGCATTTTTCGAAGAT -CACAGCAAAATAGAACTTTCTAACTCCACGTGTCTACTGAGAAAAGAGCC -GAAAGCTTATTTTCCACGTATCAGGGATCGGAATCCCACCTAGCTAGTTC -ATCCTATTGCATCATTGAAGCATCTTCCGGATTCTCCACTTTGTTTGCTT -TTCGAAATCGTTTCAAACTGAAAGCCGCGCTTTCAAGGCCGTCTTCTTCC -GATTTTCCGATCTACCTTTTGTTGATCATCACGTGCCTGGCGATCACAAC -ACTGTTCAACCGGAATATCTGAAGATGTTCCACCAAATGGATCGTTTTTC -TCAGGACGGAAGAATACTAATTTGCAAAAAGTCTGTTCTGTTCTAAAAGT -TCTGAATCTTCTGAAAAAATTTCAGACTTAGATCCTGTCATTACATGGGC -AAGCAGTGGAGTCGGAGATTTTTTATCAAAATATATGGATAGGTAATCAG -GGAGAGACTGGCTCCTTTGTTACAATATATTAGGTTTTGTTCTTTAAAAT -GTTCAAATGAAGCTGAAGAGTTCCGGCTAAAAGTATATGATTTTTCAATG -ATTTTTCAAAAATTTCAAGGTATAACTCTGAAACTAAAATTTAAAAAAGA -AACTAAATTGGATTTTAATGTTAGTTAGTTTATTAACAGAAAGAGCAGTA -TTTTTTGATAATTGTAACCTGAAAACTCTATTTTTCTAGTTTCGTGAAGT -AAAAATGTTTTATTATGTGACATTTATTGAAATTTAATTATAATACACTG -TTAGAAATATTTTATTATCTAAAAAAGTAAATTGGATTATAATGTTAATT -ATTTTACTATCAAAAAGATCAGTATTTTGTGATAGTTTTAACCTAAAAAC -ATTTCTGAAGATCGTTTTTTGTGAGAAAAAATTATTTTAATATGTGTCAT -TTAAAGCAACTTTTAAAAAATTGCGGTTTAGAAATGTTCAGCTATCAAAA -AAAAGTACATTGGATTTTGGTGCCAGTCAATTTATCAACAGAAAAAGTGG -TCCTAAAATAATTTCCAAACTTATTAATGGTGGTAGCATTAAAAAACACT -TTTTTTTGGATTTTTTGAAATGAATAGTGTATTTACAGAGACAATGGTAG -ATCAACCTAAAAGAACAAAAAATTTGCAATTTTTCCAGGTAGGACACTTT -TTTGCTACTCGAATATAACTAACCTAAAATAATTTCCAAAAGTTTCAATG -GTGGTAGCACAAAAAAAAACAATTTTTTTGATTTTTGAAATGAATAGTGT -AGTTACAAAGACGGTGGTACATTGACCTAAAAAAACGAAAAATTTACTAC -TTTTTCAGGTAGGACACTTTTTTGCTACTCGAATATAACTAACCTAAAAT -AATTTCCAAACGTTTTAATGGTGGTAGAATGTAAAATAACTTGTTTTTTT -TTGGTTTTTTGAAATGAATAGTGTAGTTACAGAGACAATGGTACATTGGC -CTGAAAGAACAAAAAATTTGCTATTTTTCCATTTTGACCAAAACTATTGG -TTTTGTCCCCAAAAAATTAGTAAAATGACCCACAATCCAGTTATTTTGCT -GTTTAAGCAGACACACTACACGGAATTATTTTCAGAAACCAGATGTATGT -TAAGATTTTAGTAGTTTCGGTGCTGCAAAAACCATCAAAAAATACCAAAT -TTTTCGGCGTTTGTGAAGCACGGCAATTTTTGAGATTTGCCGCACACCCC -AGGTACAGAGACAATTTTATATCGACGTGAACGAACAAAAAATTTGCTAT -TTTCTCAGGTAGGCCACTTTTTTGCTGCTCTAATTTCACACACCTAAAAT -AATTTTCAAATGTTCATCCTACCCTTATATGTAGTAAGAAGATTTCAAAT -TCAAATTTTCATGCATCAACTCGTCCCCACCGTTTTTGTTTCCCTGGCTG -ACTCATCTGACCTTGTCACCCCACGTGTGTTTGTCTTTGTGCCCCCTCTC -GTGCTCACCTTGTTCCAAATTCTGTGAAAACTCATCTCGAAGGCCATTTT -CTTCGTTTATGAGTTTTGAAAAAAAAACGTTCAGACAACTGCAAATGACC -TCCCCGGCGTCGAGAATCGGTGATAACCTTGTACTTCTTAGATGAGACCA -GATACAAAGTGCACCAAAAAATTCAAATTCGCTTGAGAAGCGCTGGCGAG -AGATTCGAAGCGAAAACGAGTTGATTGACAATCGGAACATATACACACAC -CAGAAGACAAAGTGGGGGAAGAAAGGAAACAAAAAAGATAGAGAGGAAGG -AGATTTTGAAAAACGACAATCTCTCTGTGTGTGTGGGTGACAGGTGAAAA -AGTGAGAGTGAGAAAAACGTGGTGGGTACTGTATTGATGAACGATCAGAC -CAAGTTGCATTCAAATTTCTTTGATTGGATTGTTTCCTGATCGGTTTGGT -AGAAGGTGAAGTTGGATTTTGTTCACTGAAGTTATTGGATTTCGAGACAT -GAGCAAGCTAGGTTCAGGATGACTGTAGTGGCCGGCTAACTTTCCGTACA -CCTTTGGCCGACTAGTGAGTGCAACCAGGGCTAGTAAGGAGGTACATCCT -GGTTACCGTAAGCTTATTAAAATTCTGAAAACACCCTACAAAAACTGATA -TTTGTAAAGTTCTCCAAAACAGGTGCTAAAACTTCTGAGGCAAGAGTAGG -CACTTGGAGTCAGAATGTCTTATTTCGATTTGATCTACAAAAAACGCGGG -AGTTGAGACGCAGAAATCTCATCTGATTTCGCATGTTTAAGAGCGTGCTG -ACGTCACAATTTTTCTGGAAAAATATTCCCGCATTGTTTGTAGATCAAAC -TGTAATGAGACAGCCTGGCACCACGTGGGTAGGTGTCGGGATGCACGTGG -TGTCAGAGTGTCTCATTTCAGCTTGATCTACGTAGATCAACAAAAAAAAA -TGCGGGAGAAGAGACGCAGAGTTCTCAACTGATTTTGCATAGTTAAGCTC -GCGCTGACGTCACATTTTTTTTGCAAAAAATTCCCGCATTTTTTGTAGAT -CAAACCGTAATGGGACACCCTGGCACCACGTGGGGATGCATTAGTATGAT -TACTGTAGATAAACCTTGAACAATATATATACATTAATTTCGTAATGCTT -GAAACTTGGACCCAAAAACTATCTGTAACTAGAAAATCTGCAAAAATGAG -TTTGCGACTTAAAGCTGGAAGTATACAAGTTGCGCAAAGACCTTTCCAGT -GGCTTCAGCTAGCAACAAAAAAATTTGTAAATTTGCCGGTCCCCACACCA -CATCAAACGTGCAAGACGGGCAACTTGGTACATCCAGTTCACCTGCACTC -CAACTACTTCCCAGAACGCCACATAGTTGAATTATTACCCAACTTGGTAC -ATTATTTTGTCGACTCGACACACCATCACCCCACCATAAACCCCTGCAAA -TAAGGAAGCCGATCGCTATCTACTCATCTTTAGGGACCTTTTTTGCCGCT -TTTTATTGATTTGAACAAAATCTCAGCAGAGCAGTCAAAAATTGCCAATA -TTCCAATTTTTCAGTTGCCAAAGATTTTAGAGTTTCAATACCTACTAAAT -CCTCCCGTTCCAGCCATCCGTTCTTGATATTCTCTCCATAAATTTTCGCT -TATCTCCTCTCTTGTAAAACTAACGTTCACTTATCCACATAATAAATACA -ATAAATGTATTATATACATATATATTATATATATATATATATATATATAT -ATATATATATATATATATATATATATATATGTATATATATATCTCAAAAA -ATCAAACAGGATCTCTCTTTTCCTCCAGGAGAAAAAGAAGATGCCGTTTT -GCAGCCAACAATACTCTCACTCTCAATACACGACGCGACGACGTGGCATC -CCTCCCCCCATCCTGCCTTTCTTCCCCGTTTCTCCTGTGTCATCGAAATT -TCTAGGGCAGCAGCACACCGGATTGGTTGGCATGTGAAGCCGACGTGGAT -CGTGATGGTGATGATGTGGCGGATTGTGATAGATCGTGTTTTTTATCCGG -CGATTACTGCGAGAATTGTCTGAAAGAGTGGCAGGGCCTGGCGCCTGTCT -TTCGGCTCTTTTCAGCATTTTGACGTGAATTTCCAAATTTCTAATTTTCT -CATTTCTATAAATTTGCTGAAAATCAATCAAAGAAATAAAAAAAAAGTTC -ACTCATGTTTTAGCATACGGCGCGAGAGGCAGGCGGAAATCGCCTTAAGG -TCAGGCAGGCAGGCAGGCGTTTAACGCCTACATGGAAGCCCTATAGCACA -CATCTATCTGAAACTGGGAATGTTGTTCCGAAGTGCATTGGAGTGCCTGA -AATTATACAATGTTTGTTCTAATTTATCATTTACTGTATATAAAGCGCTT -ATTCCGTGTGTCCATAGTTGGTAGTCTATGTAGTCTGAAGTTTTGGCTTC -TGGAAGGATAGTGAGTTGGGGTTAGTGTAGGGATATGGTCGGGGAACTGT -AGTGGTACAATAGCGGTACGGTAGCAGTACTGTAAGATTATGGTACTTTC -AGAAAAAAAAGTTTTCAGCCCCAGAAGTCGGGGTCCGTGCCGGAGGAGCG -GACAACGGCTGGTTATCAATAAAGAATACCAACATTTTATCACAGATCCG -GTTACCGCTAGACAAGAAGGTAAAAATTCGCATTCTGAGAAGGACTACTG -TAGCAGGTGTTTAGCGTGTGTCCGAGTAGATGTGGCGACTCTTAATTTAA -GTTGTAGTTTCCTGGTGTCCCCTAATCGCGAACTTCACGATAATTGTAAA -TATTTTAGTGTGGCCTATGTTTACAGGTTTTACGGACAGCCTAGCCCGAG -AAAAACTCTGGAAAAAAATCCCAAAGCTCTTATCCAAAACTACCAAAGTA -TTCTATGCAATTCCCTTTTTGCATTTCCTCACCCCGCCTAATAAGGCATG -TTGTTTACCGCCGACTTTCCGCAATAATCTATTCTCGCAATCATGTGATT -TACCTGACGAATCGAAAGTATACGGTAACCTTCACATTTGGAAGAGGAGA -AAGGAATTCGTTGGAGCCTTGACCCATTCTCCCCACAGGCATAATTCAAA -AAAATATTCACATCAAGAATGCGGATTTGCCACAACCCAACGGGTTCTCC -CATCCAGCATCTCTACCTTTGCCGAGGCAGAAACTGAGGACCGATCTCGA -TCTGCCGCCGCGTTCCGACAAATGTAATAGCAGCCCCCCGCGCGATAGCT -TTTCACTTTTTCTTCTCTTTCTGGCTACTGCTGCTGCCTCCTCCTGCGCA -AGGATGATGCTGCTAGGATGATACCCTACGAGATTACGGAACTATCCGAT -AAATTAGCTTGATGGAGACTAGAGAGATAGTCCCGAAGCTCTGAAGGAAC -CTGATCTTGTTACAGTCTTGGAACCGAACAGCTGATTGCGTCGTCGTATT -ATCGTTATTCATTTCGTAAATAGATTTTCTCTAGGATTGATTCCCGGTTG -AGCCACGTCACTGTCCGAGAACATTCCGGAATGTTATGCATATGTTCTTG -TAAATAACCTTTCTCCTTCCTCCGGCCGGCCAACTACTTTCATTTCTTGA -TGCGTCGAGATACGATATCCAAGGCCATCTTTCAAAATCGCAAGTTATCC -ATCTTTTTTCGCTGATGACTCTCTCTCTCTCTACTCCTTCGCCCATCTCG -TCTTCAGAATCACCTACCGCAAAACAATTGAATAAGTGAGTGTGGAAGTC -ACGTCATGAGCGCGACGAAAAGAGAGAAAGAGAGAGAGAGAGAGAGAAGT -GCCGAAGACGTCGGAAGAGAAAAGCTGGAGGAACCAGCGGCTGGATCGTC -GTTTGTTGATGATGCCTCCTGCCTGCCATTGTTATTCGATATTCCGATAT -TCGATTCTTTTTTGCCGCCGCCGCCCAAGAGGAGAGGAGAATCAGAGAAG -CTTGCGCGCTCCCTATCAAAAAAAAAAGATTATCAAATTTGAAGCAGCAG -AAGCTGGGAAATGGAAATAATAGCGGATAAACAAAGAGAGCGAAATGTTT -TGGGCAATAAATTTGTAGTTTGATGATAAGAGTGGCATTTTGATATGAGG -AAGCTTGCAGAATCTAGTGGTGAACAGGAAGCTTTCGCTATGGAGCAAAA -TGGATTCCGTCATTTTTCTTAAAGAATCGGAGTCGAGATGAAACACCCAG -CCGGAGCTGAAAAATTATTCTGCTGAAAAATCGAGGTGCTTGAAGTACCA -GGGCGTTATACAAAAGATCCAGGGATCCTAGTTCTGCAAAAAAAATTTCT -GCATAATGAAATGGAGAACAGGGCGGTGCGGCAACCAAGATTTTCGGCAA -CCGGCATTTGCCGAAGTTGCGGAACCCAAAACATTTTGGTAACCGGCAAT -TGCCGAAGTTGCCGAATTCAAAAAATTTCGGCAACCGGCATTTGCCGAAG -TTTCCGAATTCAAAAAATTTCGGTAACCGGTTGCCGCACAGCTCTGATGG -AGAACCCGGTGGTCAGCTCAGAGTTTGGATCACCACAACCCAGAAATACC -ATCTTTCAGTGCCTCATACGTAGAAACACTCTAGCTCAAAGTGCCCCTGA -GGCCCTGGGATCTATCCTTACCTGGAAAACTGTGTAAAATTTCGAATATT -CACAGATCCTAGGTTCGTAGTTTCACAAAATGTTCCCACTCTGCCTTCGG -ATCCCCAGGACGCATTGCTACAATATTTTGCACTTGGTACAGTACTCAGC -TTTCCCTTTTTGCACCAAAAAACATTATTGATCCTTACGATTAGCGTCCT -AGATAGGCTACAAGGCCATCGAGATCTCAAATATGCAAATTCTTAGGAAA -GAAAGTGATGTTTCATCATCTTCTTGGATTAAAAATTTCCGAGGAAAAAC -ATGGCAAAAATCAGGTTGATCGTGAAACTCGTCGGGGGCTCCTCTCACTT -CTTCCCCATCTTCATCTCTCCTTCTCTTTCCCGATCCGATCTTTTTTCCT -TTCTTCCATTTTTTCTCGTTTTTCCTTTCCATTTTTTCTTCTCCTTCTTG -TGTTTGATTATCCATCCTCCTTGCCCTTTCTCCTTGTTTCATTTTTCTTT -ATTCATTCGGATGGAATAGAGATATGGTTCCGTAAATTCATTCCAATACT -AGAAGAATTAGTAAGACATTCGTAGGGGGGAAAATTCCGCGCAGAAAGCG -ACAGGAGGTTCGGGATTGGGTAATCGTCGGAAAAATGAAAAATCGCGCGC -GCCCGCCCGCGCAGATGGGATATATACTAAATCACATGGGCAGCGACATG -ATATACGATGGATTGCGTGATCGATAGGCTTTTCAAGGAGGTACATTAGC -ACTGGTGGGCGTCGGGATCCTTGAAGGAACAACGATCTTTGAAGGAGATG -ACGAGGATGTTGTGAAATTTAATTGTGATATCATTCTATTATGTAATCCC -TGGCCTAGAATATACATCATCTTTTAGAATTCTGGTCGGCTAGATGTTTT -CGGGAAGTGCTTCTAAAGGATCGGCGCTGCCATGTATGTAGGAAGTGCTT -ATGCCAACCCCAATCATCTTCTCAATCTACTCCTCAGAAGTTCAGTTCTG -CCAATCCGCACGCTCCACCTTCGTCGCCTATCCGTTTCTCATGCGAGTCT -CGGGTCAAGGCAAGTGTGCGTGTCCTTCAGTCGTGAAGTCCTATTCATTT -ATTTTTGCTGCCAAAGTCCGAACAGTTTTTTCTAGCCGTGTCGGCAAAAG -GGTTCTTATTGCGAATTCACCTCCTCCCCACTCGAGAAATCGCCCCCCCG -CCGTCCTTGGTAAAACTGACCTAGAAAAATAAAAACAACACAAAGCGCCT -CCCGCATCATCACGCGTATATATGTATATATATAAGATGGTAGGCGGGAA -GAGGAATCGACGCAATATCGACTGAAGGTTGCGCAATCGAGATGGCTCTT -CCCGGCACGGATACCTCCTCCTCGCGTACCAGGCACCCGCATATAGCTAA -AGTTCTCCGCCCATTTCGTTACTTTTTTGTGCTTCCCATATCATCGCAGC -AGCGCTTATGCCATTGCGCCCGACCCGATCCAACTTCTTATTCTTGTTCC -TTAGCCTTCTCCCCCTCCCATGTCCTCCCGATATCCAAAAAGTGGGAGGA -GCATGCCATAGTGAGAGGGCGGGGCCGGGACACACACAAGGCTGGCCCCG -AGAAAACGAACAACACTTATGCCGAGGACAGTCTCGACAGTTGGTGGTCA -CCCCACCTGCGCCTTGATTACCCCGCCCGTCCGCGCCCGCCGGGCTAAAG -TATTTTGTTTGCCATTCATGTTCCTCATTCGACGTTCATCATGCTTCTGT -TATGCTTCTTGGTGTTGGTCCGGTTCCTTTCTCTCTCTCTCTCTTTCTTC -CTTGTGGATCAGATGCCATTCCGCCTTTTTGCTAGATAAGCGCATATTCA -TCTCACTCTTCTTTGTTTTCAATTCAGCATTCTTTATATATCCAATATCC -TACATCCTATATCCTCGTTCTCTCCTCATTTTCATTCATATGCCGATCCA -TTTGGTACTGGTGGTGTCGTTCTTCTTAGTTTCGCTTTCCAATTCTTTTC -TAGACAATTCCTTCTATTTCCAGAAACTTTTTTCTACACAATGCTCCCAG -ACAGCCCATCCCCACGCGCTGCCCTTGCTCTCTCCGATCTTCAGCCACAA -ACCGGCGCCTCAACGTTCTCAATTGGCAGTGGATCAGGCAACTGGTAAGT -CGAGTTCTTATGTAACTAGTAGGATGGTAGACATCGAGATTAACGATGTC -TGGCATTCGTTACGTAACGAACGGGTTCTCCCGCCGACCATCGAAGCGCT -TAAGCGCCGAGATTCTCGGCTTCATCGCACCCCGGTCTAGCAAGTTTTCC -AATCCATCCCAAATTACAGGTCGACAAGAGGTGTTGGTGGAGTTAATGGT -GATTACATGGACAAATCCGGCGGAGGAATGTTCGGAAACAGCAGAAACAA -CGTGAGTTATAAAAATATCTGGGGGGGGGGGGGGGGGGGGAAGTGTTGTT -CTAGGCCAGGGACATTGAGAACCGCGTGATGAAGAGTACTTTTATCCGAA -TTAAATCATAGGCAACGAAAACAAGAATCAGGTTCTTGTGCTTTGCACAC -CATGTCGGAATATCCGTCTCAATCAAAACGAAAAAAGCCTAAGCTGGACC -AAGTGTTAAATGCTTAAATGCCAAAAATGAACAATCTTTCAAATCACTTT -CATCTTCCTGTAAATCAGAGAATCCTGAAGCGCTGGCGCGCACACTTACG -AAAAGTGAAAGCCGATATATCAAGTTTATCACCTAGCGGGACTTCCATTG -TCTCATTGTCTCTTGGCTATCCGCCCCACTTTCCCCCCGGATCATCCGCC -CCCTTTAATCCAAGACTCTCGAACAGTTTCGCTTCATTCCAGGACCGATT -CGCATTCGGCAACAACAGCTCGTCGTCCTCATCAGCAGGCTGCTTTTCAT -CGAACAATTCGTCAGGCGGACTTTTTTCCAGTAAATAAGTTAATATGTGA -GTTTTTTTTGTGTACATTTTCTTCTTTTCAAGATCCATTAACATTTCAGA -ATGCGATCGGCAGCCGGTATTCTTATTCTAATCTCAATAATTATTCCCAG -TGTATATAGTGAACCGAAGTTGCCCGATTGCGAGCAAATACCAAAAGTCT -TGTGCTGTACCCAACGTGTCTTAGATAAATGTATGTCTGGTTGTATCGAT -TATGTCACTGAGAAATGCCCCCACAAATTGGAAAAATACGAGACGATCGA -TGAAGAGCCATCGACGAGAGCTCCAAAGAAGCAGGTGAAGCCAGCTAAGG -CAACTAGCAACAGAGTTGTCGGAGCAGTTGAAGTAGACCATGAAGCCAAG -GAGCAGTTCATCGACTCCAAGGATATCAGAAGAGCACCACGAGTCGGTGA -TGCCAAGCTTCTCAGCCAGGAGTACCCGATCACCGAGGTCACCGACGCCG -ATCTCTCCTCCGAGTGCGGAACCGAGAAGTCTCAGCCACCATTCTCACCA -TGCTTGTCCCGCAAGTCGGCCGACGACGTCTTCCTCTCCTGCTGTCGCCA -ACAGGTTCCATCCAACTGTCACAGCCTCTGCACCTACGAGCATCGTGAGC -ATGTCGCCGCTGAAACTCTGATCCAGGCGATCCAGCAAGAGCACTGCGAT -ATGAAGGTAAGAATAGTTCAATCTTCCTATTGAGTTTTTTTTTTGAGTTT -TTCCAAAATTCATTCTTTCAGTACTTCTCCAAACTGCTCTACTGTGCCAA -CCAAAACCGCGACAACCGCGCGTGCTGCTCCAACCTCGGCATGTCAAACG -CGGAACTCGGCGTCGGCGATCGTTGCCTACGTATGTGCAACATCTCCCCG -TCGGGAGACCGTGTAAGCTCTATGGAGAAGGAGGATCTCGTCTGCCTGTC -CAACTGGAACGTCATCATGTACTGTGCCAGAGGTGGTCTTCGTACCATCA -ACTAGACCATCATCCCCGTTCTCTTCTCCCGTAATAAGCTGGCTCAGGTT -GTTAATAATAATTCGCCGCTCGTCTTAATAATTTTCCATTTTCCAATCTC -GTCCCCCCTTTTCAACACTACCACATTTCTCAGTGATATTCATCTGAACC -GCCCGACATACATCAGTTCCTCATAGTACCTAACAGGGTTCAACAAACCC -ATCCACACACCGTCCCCCCACGTAACACCCCCCCCCCCCCCACTTAAGGA -CCAAGTCCTAGTTACTGAATGTGCAACATTATGGCCAGAATGCAATACTT -GTCCCATCTGAATCCATGTTATTTGATAATCTATGACAGTATTATACAAC -CCTTTTTTTTCAAAACACAAGCCCCCTTGAAAACGAACTCATTGTATGTC -AAACGGTATCCCTTATTACACGATTAATTGTGGAGTTTGAAGCGAATAAA -TCAATCAATTTCTCGTTGGGTCCCACAGCGAAATGACTATTACCGGTACA -GAGAGTGTGGATAGTTAGAGAGTGACAGACATCCGGGACCCAATGGGGCG -GGGCGCGCGGAAGAGACGATTTGTGTCGATTTACGAAATGATGACAACGA -GGAAAATTTCGTAAATCGACACAAATCGTCTCTTCCGCGCGCCCCGCCCC -ATCGGGTCCCGGATGTCTGTCGCTCTCTAACTATCTACACTCTCTGTACC -GGTAATACTATTGCAGTAATCGCAGGTTATTTCATAGCGATTTTTCATAG -CTTCACGGATTTCTGGATTCCCTCATAAATTGAAATGGAAGAGTTTTTGC -TGAACTAGGCCATTTTGGCTCTGTCATATCTGGGGTAGATTTACGGCGCG -TTGCGGTTCGATTTTAGTTGTAAAACTAAATGTATTTGTCCGTGTGGAGT -ACACGACTTTCTCACGCGTGGTCCGGCAGGCGATTATCAATAGAGCGCGA -AAAATTCAATGAGGAAGGCCAGAACTCCGTGCAGCTTTACTCGCGAATTC -AGGTGTGTGTTTTAATTGTCTTTATTCAGTTTTCTGATAATGAATATACT -TTTTTACAGAAAAACTGGAAAACTGATAAAAAAGTCCCCAGAAACTAGAT -ATTGAAATTACAGTACACTTTAAAGGCGCACACATTTTCACAGTAAACAA -AAAATTTGTCGTGCCGAGATATTTCATCCAGATTATCAGTTGTTAAAATT -TGACAACACTCATTTTGAATATTTAATGAATTCGAATGGAAAATAGAAGA -AAGCTGCCAAAAAGTGAAATTAAATTCTCAAAAACTTGATTTCCAGACTT -TTTTGGCGATTTTCGACCAATTTCAGCAGAATTTTTAGCAGAATTTTACA -AATTTTTTTATTTTAAAGCTTATTTTAATAATTTTTCTCTGAAATATATG -AATATCTTTGCTTTCGATGGATCTTCCTCAAAAGTAGACACACATTTTTA -TTTTTCTACAAAACTGTGCAAAGTTACGTCGTGGTGTTTGCGTACCTCGG -CGGGAATTTAAAGAGAAATGGCATTTTTCACTTTTCTCGCAGTTTTTCTG -ATTTTTTTTTCGTTTTTTCGTAGTTTCCTAATAAAAAATCGTTCCAATTG -TTTCCAGGTAATGGCTGGATTTGAAATTCAAAGAGTCGAGTCCAAATTCT -TCGACTTGGACGACATAATCGCCAAGTCAGACTCCACGTCTTGCACATTT -GAGATTGGAGATTTGAATCCAGGTCTGAAATCGCATCGAAAACCTAAAAA -TTCTAGTGATTTTTGTTCAGATTTCTTCCAGGAAATGCTGGGAGTTTCGA -AGCCAACTCAAAATGCAGACGGATACGGCGTTGATGCTCCATACTGGCTG -CTGGAATCCGTTAGAAGTTCATTTTCCGTGAGAATTTAGTTAGATTTGCC -CCGAATTTTAATTGAGAATTCCAGATTCAACTGCCAAAAGCTTATAGTGT -GAACATGCAAAATGTGCTGAACGCTGACAGCAAGAAATTGAATCTCTCCG -GCTTGCAGCAACACTTTTACGGCAACGGGATGCAGTTATGCCGTCTGATG -AAGGGCGAAAATCCGGACGGCGCGCTGAGCCTCGCACGATGCCTTGTCTC -CACACTTACACAGCGATTAGGAGGTATTAATTAATATAATAAAGCACTTA -TAAAATACAATTTCTGGTTTTTTTTTGTTGCAGAAATTGTGTCAACTGCA -ACCCATCTGCAAAGCAAAGGCGAGAAATTTGACAGCCTCGAGACAAAAGT -GTTCCTGGAGGGTAAACGGTGCAAAGAAGACATTGATACTTGGCTGAGAC -AAGACAATAAGTGCTCGAGCAAGAAGCGTAAGAGACTTTCGTTATAAACT -TCAAATTTCTTATGCTTGAATCTAATTTTATTTTTTTTAATTCGTCTGTA -AATATAATTCAAACCCACCATTCTGTAATAATATTTTATTTTCTATTTTT -TCACACTCATTTTTGTGTTTTATTGGTGTAATAAACCTGGTTTCATGACT -TTTTTGCAAGGAATTTTGTTGAAAAGGCTGCTGCAAAAACTTTGCCAGCA -AAAAATTTTGTGCAAGCACGCTCCATCGCACAGTTTGAACGTCGCGGGTC -GAAGTTAGATGTGCAGGTCATATAGCAAAAAGAGAAACACCCCTTTTTTT -CTCGAGAAGTTTCACCAATTTTGCGCGATTTTTCAACTATTTTTTTGCTT -TTTTGGCTTAATTTTGGCTCAGATTTTCCTCAAAAACATGAAAATCCAAT -CTAGAATAAGTAGTAATGGGTATATTCTAAGATTGTGCAAAAGTTAGCTT -GAATTTCCTCGATTAAAGCTTTCCTACCAAGAAAAATGTGTGGATATTTT -GAATTTACAAGTTTTTCATCTTTTTTTTGTAATATTCTCTTTGAAACTCC -TGTTTCTCTCAAATTTGTAAACTTTCATAAACGTTTTTTTCAGGGTTACC -ACATTAAACAATGACCGGAAGCACCGAAACTCGCCAGAAGGAAGTCAAGG -AGGTTGGTTGTTCAAAGTGACGTCTAAAATATTTAAATTTCTATATTTCA -GCCACAAGTTGACGTTTCGGATGATTCCGACAACGAGGCCGTCGAGCAAG -AGCTCACCGAGGAGCAAAGACGTGTGGCCGAGGCTGCTGGACTTGGAGAT -CACATCGACAAGCAGGCCAAGCAAAGCCGCTCCGAGAAGAAGGCCCGCAA -GCTCTTCTCCAAGCTCGGACTCAAGCAAGTGACTGGTGTCTCCCGTGTCT -GCATTCGCAAGTCGAAGAACATCCTCTTCGTCATAAACAAGCCAGACGTG -TTCAAGAGCCCAGGATCTGACACCTACATCATCTTCGGAGAAGCCAAGAT -CGAGGATCTCACCCAACACGCCCAGATGTCTGCTATTGAGAACTTGAAGC -CAACTCGTGAGGCCCCACAACTCAAGACTGTCGAAGAGGACGAGAATGAG -GATGTTGAGGTAATTCAGTAACTTAATCGGATTTATTACATTAATTGTAC -GGTTTAAGGAGGATTCCACCGGCATTGAGGAGAAGGACATCGAGCTTGTC -ATTTCCCAAGCCAACACCACCCGCAACAAGGCCATCAGGGCGCTTAAGGA -AGCTGACAATGACATCGTCAATGCCATCATGAGCCTTACCATGTAGCTTG -TTTCCTGATGACCTTGCAGATACTCTTGTTATCGTTGTATCTCTTGCTTA -TCCCGTTTTCCGTTCCAAGTAAACGTTTATCAGTCTTTTTTAACTTTTTT -GTTATGTTTAAAAAACAATTGCATCTTCGAATTGACCTACCTTTTACAGA -AAAGAACAATTAAATCACTGTTTGTGTAAAACACCCCTCTATTGATCGAG -AACTTTCACTTCTTCCAATTCTTTACTCGTATGACTGTGATTCATTTCAC -CTGCTATCACTTTATCATGACATTCCAGTTTATATCAACAGCAAATACCA -ATTGTGTGTATGTGAAAAATGCTATTGAATAGCAAGCGCGCCCCAACAAA -CACGTTTGAATGCGCGGGCGAAACGGCGTTAGATGTGCAGGTCATATGAC -AAAACGCATCGACCAGCAGCCAATGGCAAGTTACTGCGAGCTGTTATAGA -TTTTTTCACATGGTTTCCAGTGTTATCAGTTGGAAATCGATCGATAATAC -TGACTAGTAGTACTTAACATCTTCATTCCCACCGTTTCGCTGTCATTTGT -GATACGTGGATTTATTTTTCCTTTCTCGCCGACTTTTCATTTCTAAATCT -TTTCTGGAATTGCGAAATTTTCAGCCAGTTTCATGATCGAATGGCTCGTA -ATGAACCATCATCTCAGCAGCCGAGTAGTTCCGGGAGTAATGGAACTCCA -GCACAACAAAACGGGTCGGCAAAACCATCAAAAGTCACAGTAAAAGGTAA -CAATTCGTAGATTTTTTGCATCTGTTCTAATAATATTTCCCCCTCTTAAT -CATAGTCGTCAACGCGTCGTTCACCAAGGCAGCCGACTGCTATGTCGAAA -TCACGAGTGACACGTCATCGGCGGCGCCAAAAAAGACGACTGTAAAGAAG -AAGACGATGGCGCCCGAGTGGAATGAACATCTCAACGTTCATGCAAATGA -ATCTTCGACAATTTCGTTTCGTCTATTGCAAAAAGCCAAGCTATTCGATG -ACACGTGTCTAGGGATGGCGAAGCTGAAGCTTTCGAGTCTCACAAGAAAT -GAGAATGGAGAGTGTAAGTGGTTTTATTGAAATTTTCTCAAAAAATCTAT -TATTTCAGTCAAAAACGACATCAACAATATATCTTTGCTGGCCAAAGACT -CCTCGAAAATCGGAACTCTCAACATAATTTTCTCCGGATATCCAGAGCGG -AAACGAAGAAGCGCAGGAGTACGAGCTGAAACCGCCGCGTCTGCAAGTTC -AGAGGCATCCACGTCAAATGGCGTTGCCACGTCATCCTCGGCGCGGAGAC -CGGCGACAGCGAAGCGTGACACTTTGGCGGCTCCAACGGTAATCGTGACG -AGACCCATTTTGAATTATTTAATTATTCATGAAACGCTCTACTGGAGTGT -TCATAATTATTAGAGCGCGCTCGCGCGGCACCTCACGAACTCCAGAATTC -GCGAGGACAGCAGTTTTTGGCTATTTTGGCTTCTATGGAAATTATTTTTA -ATTTTTTGATTTAAAATATTGTTGAGAAGCATCATCCAAATTGAAAATGT -GTAAAATTATGAAATTTGACCGAAAACTGAAGGTTTTACAGAGAGGAGTC -ACCACGGCTTTCTTTAAAAAGTATCAGTACCGTCAGTATTTCGATTTCAG -AGTCGTAAAATATGTCATTTTGTAGAGAAACGTCTGTTTCACAAAAATCC -ATGTTTGATATTTTAATTGTTTAATTTCTAATATAAAAATATTCAAAAAA -TCAACAAGTTTACGTTAAAATCGAATTTTTCAATCGTTCAGTTTTTAATA -AGAACAATTTCATAATTTCAAACATGGATTTTTTTGAAACAGACTTTTCT -CTACAAAATGACATATTTTACGACTCTGAAATCGAAAAAACTGACGGTAC -TGATACATTTTAAAGAAAGTCGTGGTGACTCCTCTCTGTAAACCTTCAGT -TTTCGTTAAAAATAATTTCCATAGAAGCCAAAAATAGCCAAAAACTGCTG -TCCCCGCGAAACGAAATCCCGCGAATTCTGGAGTTCGTGAGGTGCCGCGC -GAGCGCGCTCTAATAATTATGAACACTAGAGGAGAGCGTGAATGAGCGTT -TTTTATTCTTTTCTCTGCATTTTTAATGCTACAGAATCATACACAAAATG -TTGTCAAATACATGCATTACTCTACTACTCTTAATGTTTACTTTTCATTT -GCAGAGTACCGCAGCGGCGGCAGCAGCAGCAACAGCAGGCGGCACCCCGG -CCGCCGGAGCAGAAGAACAGCTTCCCGATGGATGGGAGATGCGTTTCGAT -CAATACGGACGCAAGTACTACGTGGATCACACCACCAAGAGCACCACGTG -GGAACGCCCGTCTACTCAGCCATTGCCACAGGGATGGGAAATGCGAAGAG -ATCCGAGAGGAAGAGTGAGTTTTCCGGCGGAAAAAGCAGATTTAGCACGA -GAAAAGCGTTTCTGATTATATTTTTGATGCGAAAATCATCAAAATTAAAA -ATATCTACCGTAGCCGCGGATACCTGGACCAAAATGCCGAAAAAAGTGAC -CTGATAAATTATTTTAAGGCTAAAATCTTGATTTTTACATAATTAGTGTC -TTATTTTTGTTGATTTCTTGTCAAATTTTTGTAATTGCATCGAAATAGGC -CAAAAATAAAGTAAAAATCAACTTCCAACACAGAAAAACTGACAAAATTG -AAGATTTTTGCTGAATTCAGGCAATTTTTCGTAATTTTGATCCTCCATAA -TTTTTTTTTTCGAGAAAATTTTGAAATTTTTTCTTTAAATACGGCCTGAA -AATTAGGAAATTATAACGACGGATAAAAAATTCTGATTTTCTTTATTTTA -ACCAAGGTCTCCAATTATTTGATAATCGAAAAAAAAAAAACTTTCCAGTG -ATTTTTACTTGAAAAATGTCTAAAAATTCACGCCAGGTGCACAATCCATT -TTCAGGTGTATTACGTGGATCACAACACGCGCACGACCACCTGGCAACGA -CCGACAGCCGATATGCTTGAAGCACACGAACAATGGCAATCGGGAAGAGA -TCAGGCGATGCTTCAATGGGAACAACGTTTCCTTCTCCAGCAGAACAACT -TTAGCGCCGACGATCCACTCGGACCATTGCCCGAAGGATGGGAGAAGCGT -CAGGATCCGAATACGTCGAGAATGTACTTTGTGAATCATGTAAATAGAAC -GACACAATGGGAAGATCCGAGAACACAGGGGTATGTGAAAATTTTCAATT -TTCCAATAATATTTCTATCAAAAATCACAGTTTTAATGTTTTAAAAGTTT -CAGAGGCTCCGACCAACCTCTTCCGGATGGTTGGGAAATGCGATTCACCG -AGCAAGGCGTTCCATTCTTCATCGATCACCAGTCTAAAACCACCACCTAT -AATGATCCAAGAACCGGAAAACCCGTCGGCCCGCTCGGCGTCGTCGGTGT -TCAAATGGCCATGGAGAAGAGTTTCCGGTGGAAAATTGCACAATTCAGAT -ATTTATGCTTGGTAAGGGAGGGCGAGAAATTCTTTGATTTTAGCTATAAA -TTGATGTAAATTTCAGTCAAACAGTGTGCCTAATCATGTCAAAATCACAG -TATCCCGTAATAACGTGTTCGAAGACTCATTCCAAGAAATTATGCGTAAA -AATGCAGTCGATCTACGCCGGCGGCTGTACATTCAATTCCGAGGCGAAGA -GGGTCTCGACTATGGAGGTGTCGCCAGAGAATGGTTCTTCCTGCTGTCGC -ACGAAGTGTTGAATCCAATGTATTGCCTATTCATGTATGCTGGTAATAAC -AATTATAGTCTTCAAATCAATCCAGCTTCATTTGTTAACCCGGATCATCT -TAAGTATTTCGAGTATATTGGACGATTCATTGCCATGGTGAGTGTTTTTT -TTTAATTGAAAATCAGTTGAAAATTGGATGAAAAATTGCGAAATCGAGAG -AAAATCGAGTTTTCCGCTTTTTACAATTGAATTTTAAAATTTTAAACGTT -AAATTTTGCAGAAAATTCCAAAAAAAAGCACTTGGATCTAAAATTTTTGT -TTTTTGATGAAGGAAATCCTTAAATATCGATTTTTTTTATTTTCAGCTCA -AAAAACCTGGAAATTTCGATGATCTCAAATTTTCAGATCAATATATTTCA -TTTTCTCCTAAAAATGTTATTTTTATTTAAACAAATAGTTTTTCTTAGAA -AATTCCTTTATTTTCAAATTTCCAGGCGCTATTCCACGGGAAATTCATCT -ACAGCGGTTTCACGATGCCATTCTACAAAAAGATGCTCAACAAGAAGATT -GTTTTAAAGGACATTGAACAAGTCGATTCGGAAATTTATAATTCATTGAT -GTGGATCAAGGATAACAATATCGATGAATGCGATATGGAGCTCTATTTTG -TTGCCGATTACGAGCTGCTCGGCGAGCTCAAGACTTATGAGCTTAAGGAG -GGCGGTACAGAGATTGCTGTTACCGAGGAGAATAAGGTGAGATTTTGGAT -TAGCTAGAGCTTATAAAAATAATTTTTAAATAAAATAATTTAATTTAAAA -AATCCCAATTTTCCAGCTTGAATACATCGAACTGCTCGTTGAGTGGCGCT -TCAATCGCGGTGTCGAACAACAGACAAAAGCCTTCTTCACCGGCTTCAAC -TCGGTCTTCCCGTTGGAATGGATGCAGTATTTCGATGAAAGAGAGCTCGA -GCTGTTGCTCTGCGGAATGCAGGACGTTGATGTGGACGATTGGCAGAGAA -ATACTGTCTACAGACATTATGCTCCACAGAGCAAGCAGGTAGGGGAGAAC -ATTTGATTAAAACTTCTTTTTTTTTAATTAAAAAATACATTTATAGGTAA -CCTGGTTCTGGCAATGGGTTCGAAGTCTGGACCAAGAAAAACGTGCCCGG -CTCCTACAATTCGTCACAGGAACGTGCCGTGTGCCAGTCGGTGGATTTTC -CGAGCTGATGGGCTCGACGGGACCACAACTATTCTGTATCGAGCGTGTCG -GCAAGGAGAACTGGCTCCCACGGTCGCATACGTGCTTCAATCGACTCGAC -TTGCCGCCATACAGAAGCTACGATCAGCTCGTCGAGAAGTTGAGCATGGC -GATCGAGATGACGGAAGGATTTGGAAACGAGTAGTCTCCCGTTGTTTTTT -TTTGGTTTTGCTGGCCGCCTAATTATTGTATAACCCTCATATTTCTTCTC -ACCCACACCCCATTGATTTTCCTTTTTTTTCTCTCCATCAATTAATGTTT -CTTTTTTTCGAATTTGTGTGATAATTTTCGTGTTGTGATACCACTTGCTT -AGGTTCTCTCTCTCTCTTTCCTTTCCTTCTGGGTATGTACCTATATTTAG -AATATAGACAAAGCATCTAGTTTTTTTGGATTTAATTTCCAAATTTCCCG -TTTAATTCCAACAACAAAAAAACAATTCCACCACTTTTCAAATATTTTTT -TTGTGTCCATTGCTTCATTGCTTTTCTTCTTCTCAACCATTTCAACCACC -ACCACCCAATCTGCGCCTTATTCTTACTTGGTCCTTGTCATTCTTAGTTC -CAGTTTTTTTCACGGAAGCAGCTCTCGATTATTAATTCAAATGCATCCCC -CCAACCAATCCGTCACCCCCCGATTAGAACAATTTCTACTTTTTTTTTTG -AAAACAAAAAAAAACACAATTCCTCGATTTGGTTGTAATGAATTTAATTT -TTTAAATTTTGAGCCTTTTTTGTTGTTTTAGGTTTTCTTAACTTTCAGAA -TTTCCATGCGGAACACACGGAGAGCAGAAGATCAATATTTTGAACCCTGC -AGGAGAAGGACGGGACCCTTTGGTCACTCATGTCTCGGCTGTCTGCGTCT -CTCCTCTCTCTCTGCACCAGCGGAGAGGATGGATAGCCTCATTCGTTTTA -TTTCGGACTTTCGATTTTTCTTATTGCTCCACGTTTTAGCTTTTATCAGA -TTCGGGGAGCTCTTGCTTTTTTCTTGATTTTTTCGTAAAGTGTTCTTGGG -TCCCGCAGCGAAAATTAACTTTAAAATGATTTTTTAAAAACTTTCTAAAA -ATTCATTTTTTTTTCCATTTTACGACTAGAAATTTCGAAATTTGAAAAAA -AAAACCGTGTTGCAAATGCGCTCCAGCGTACAAAACAAAACCGCCACCAA -AAAATTTAAATTACTGAAAAAAACGATGAAATTTTGAATTTGTTTTGCCA -TTTTCCGGCAATGATTTTTTAAATAAAAAAAACTGTACAACAAATGCGCT -CCAGCGAACTAACCTTCAAATTACCGAAAAAAATTATAAAAATTTGAATA -TTTCCGATTAACCCAAGAAAAGAAAAATTCAATGATTTTCTTGAAAAAAG -TTATTTTTTTCTCAATTTTTCGTCAATAATACTCAAAATTTGAAGAAAAA -TTGTGTAGCAAGCGCGCTCTAGCGAACCAAACAAAATGTCTCCATTGAAG -CGTTTCACGAGGTTCTGGCCTACCTCATTGAATTTTTCGCGCTCCATTGA -CAATCGCCCGCCGATAACGCGTGGGAAAGTCGTGTACTCCACACGGACAA -ATACATTTAGTTTTACTACAAATATCGAGCCGCGACGCGACACGCAACGC -GCCGTAAATCTACCCCAGATATGGCCGAGCCAAAATGGCCTAGTTCGGCA -AAAACTCTTCCATTTCAATTCATGAGGGAAGCCAGAAATCCGTGATCCAA -GTAAAAAAAATCCCAAAAATTTCAATTTGCAAGGGCGCTCCATTGAAAAC -TGTGGCGCCGATCGCAACTCACGGTCGAATTTGAATTTTTAGTTGAAAAA -AAAACACCAATTTGAACTGAAAATTTGAATTTTCAATTTTTTCCCTAAAA -TAAATTGTTCAGAGTTTCGCTGTCGAATTGTTGATACCCGCTCGTCAGAA -TTGGAAATTGAGAAATTGAGAGAGAATTAGAGAAGGAGAGGAAGAGGAAC -TGCTCACTGGTCCCCTCACTCCATCCGAAATTAGGCACTTTTTGCTCCGG -CGGCACTAGAAGACGAAGAAAAAACGACGAGCAGAACACAATCAATTTCG -TCTTCTTTTTTATTTTTTTTTGGTTTTTTCTTGTTGGTACCACGGATTTC -TGGCTTCCCTCATAAATTGAAATGGAAGAGTTTTTGCCGAAATAGGCCAT -TTTGGCTCGGCCATATCTGGGGTAGACTAACGGCGCGTTGCGTGTCGCGT -CGCGGCTCGATTTTAGTTGTAAAACTAAATGTGATTTGTCCGTGTGGAGT -ACACGACTTTCCCACGCGTTGTCCGGCGGCCGATTGTCAAAGGAGCGCGA -AAAATTAAATGAGGAAGGCCAGAACCCCGTGGTAAAACATGGTGCATCAA -CGCAAAAATTTTTCATTTTTTGGAAAAACTCAATTGTTTTTTTTTCGCGT -CGGGACCACCAAACCAGAGCTCGTTTACTAAATTGAATTTCCAAAAAAAA -AAAAATTTCGCTCTGTTCAAAATTCGAAATTCAGTTTTCTTTCCCTAAAA -CCTAATAAAATGATCTTGGCACAATGCTCACTGTGAGCTTTGGGTCTAGA -ACGATGGCCTAGAAATGTTGAGATTTCCTCTTCCAGCGCCCTTGCCAATA -TGACCTAGAAATTTCAAATTAGTATAACTCGGCCATTTTCCATCCGTTTT -CGCCAAAACTACACCATTATAACATTTAAAACTTACTTTTCAATATGATG -ATAATACTTTTCCAGTGGAAGAGTTTTCCGCATTTCTAAGCCACCAAAAC -CTCTCCTCCCGACGTTTTATCAAACAAATGATATCACTGTGATTTGTGTT -GTAAGTTGCGCGCATGATTGCACTTGCGCAATTAATTAAGACAATTACTC -AAAATTTTGATCGAATTAACCCCATGTACATATAAAATACAAGATTTTTG -TGTATTGTTCTTCAAAGTTTTTTGTCGTATTTATATAGAAGCAGTGTACA -CCTAAATTTGGCTTATTACGACCTTTTTTTCCAAGGAAAATACTCATTTT -TAGGGTTATAAACCCCTTGATTGATACGTGGCCTAGAAAACTGCAAGCGC -TTTTTCCTGGAAGTTTTAGGCCACCAGTTAGAGTCTTGCAAAGACGGACT -AGTTCTCACATGACCCAGAAAGTCTTAGTCCATCACGTATTTCTTACGAC -GCCTAGAAATGCAAATCTTCGGCCACCAATTTTCATAGACATTCTAGGCC -ACCCTTTTTGACGTGGCCTAGAATCTTTAACAAAATTTGTAATGAAAATC -CTAGGCCACCATTCAGTTAGCTCTCATTTTTGATACTTCGCCTAGATTTT -TAACACGTGGCCTAGATTTCTATTTTAACACGGGGCTTAGATTTTTATTT -TAACAAGTGGCCTAGGTTTTTGCTACTAGGCCTAGATTTTTTACATGTGA -CCTAGATTTTTATTATAGCACCTGACCTAGATTGTTGGCATTTGGCCTAG -ATTTCTGTCATGTGACCTAGATTTTTTAATGCACCAAAAATTCTCCATAC -AAATTTAACTCCTACACTCTAATTTGTAATCAGAACCTTCGATAAGAAGA -ACATGGAGCTACTGCGGTGCTCAAATTCCGAACAAAAAACGGCTGAAAAA -CTGAGGTATACGTGGTTTTTTTTCGAAACTGATAAAAGTCAGCATAAATC -ACGATAAACTGAACGTCCTTTGGCCAAGTTTAGAGAAACCTAGGCCACGG -GTAGTGGTGGCCGAATTTTAAAAAAACTGGGCCACGAGGTTTACGTGGTG -TCAAATTGCCCCATTTTGGTTTGATCTTCGAAAAATGCGGGAGACGAGAC -GCAGACTTTTCAACTGATTTCGCATGGTTAAGAACGTGCTGATGTCATTT -TTTTCCGTGGAAAAATTCCCGCATTTTTTGTATATCAAACCACAACGAGA -CACTCTAACACCACCGTCCGGCCGTTCAAACGAAAATTTAGGCCACGGCC -ACTAGGGTGAAGTGGAATGCCCTACCCTTCTCTACAAAATTCATTGGAGA -AACCTAGGCCATGCTCAAAGAAACAGTGGCCGAGAAAGGAAAAACTAGGC -CGCGTTCGCTTTGTACCTCTCTTATAAAACACTGTCTGTTAGTTCATAAA -TCAGAGTCTGCCCCCTATCACTACTCTCTCATTTACCTGCCCCTCTTAAC -AAACAATCAACCCCCCCCCCCCCTCTAAATCGACTACTTGTTCCCCGTTG -TACCTGTCTGCGTCTAGCTATTTCTGTTAAATTTTTGGAACGAAAAAGTG -GTATGTGAATGTACGAAACAAAAATAATAATCAATTGAATACAATTTTTG -CCCCCCCCCCCCCCCCCCCTCCACCCCGCTTGCCTGTCTCTAACCGGTTT -CCCCTTTTTCACCTCAATCAGCCCCCCCCCCCCCCCCCCCCCCCCAATTT -CATTTGACTGTACATTTTCCTTTACCTATCTGCGTATCTACACAATTTTT -GTATTTTTTCCTTTTATTTTTCTAATTATAAACCCTGCAATTTGCAAGAA -AAAATCTCTAAAACGCTTGGCCCCTTACCCGGAGTGCGACCGTGGCCTAG -AAATTTATATTTCTTATAAGACCCCCCGGCTCTTCCAATTTTTCATTTTT -TTTCTTTGAAAGCCTAAATTTTCATTTTTTCTTAGAGATCAATATATTAT -GGGTTAGTAAAAAATTTCAAAAACAAGCTCCCCGTGGGCGTGGAAGAGTT -TTCCAAATTTCTAGGCCATACTTTTCGAAGGCGTTGGGGTACGCTCGCAC -CCTAGTACTAAAAATTGTAAATTATAAAATTATCATAAAATTGGCTCAAA -GCATTTGAAAATAATAAAAAAAATTTTAGAAAAAAAAACACGAAAAAAAC -CCCTATTTTGAACATGGTTCATCGACCGGGACCTATATACTTTGAAAGCT -TATATCTCGCTTCATGTTTGTTTTATCAAAAATTTTTCAACCAACAAAGT -GTTTATTATTTCTTTTTCTATATTTTTGTAATTAAAAACTTTTTGATAGC -TTCAAAAGTAACTGAGATACATGTTGTCAAACAGAGCAAACTTATAGCTT -AGCCCAATTATTTATTTTTTGCTGTGTAACATTTCTTGTATAAACTTTTA -AAGTTTACGGTTTTTTTAAATTTCTAAAAAAAATTATTGACACTTTAAAG -GGAGGTCATGTGGAGATAGCCTGTACAAATAAAACTGATGAACTAGGACG -AACCGAAATTCATAAACCATTATTTACACAGGTGATTCTTGCCTTTTTTG -GAGGGTTAAAAAGGTTAAAAATTATTTAAAGCTTGGAATGAGCATTTGTG -CGGCCGAGTTTTTATTTTCTAGGCCATAATTTTTAAAACAATGGCCTAGA -AGCACAAATTTCTAAGTAATTTGAATTTCCCGCCAAAAATTTTTTTTTCC -ATAAAATTTAAATTTCCCGTCGAAAATTTTTTTCGGAAAATTTGTATTTC -CCGCCAAAAGATTTTTTGTCTCAAAAAATTTGAATTTCCCGCCAAAATGT -TTTCTCAGAAAATTTAAATTTCCCGCCAAAATATTTTTTGTCTCAAAAAA -TTTGAATTTCCCACCAAAAATTTTATCCCAAATTTTATCGAACATTTGGT -GGCCGAATTTCCATTTTCTAGGCCACCCTCAGTTAAATCGTCAAATAAGT -TGACCTAATTAAATTAAAAATTAACAATTTGTAATGTCTCCGACCAAAGT -TTCATAATTGTATAGATCATCATGGTGGGAGGCGGGGTAGCACTTATGAG -TGAACTTACCGGTTGACCGCCCGTCTATACATAGTAGCCAACACCCGACC -ATTTTCTGCCAAATACCTATAATATCGCTTCGAGACCCAACTATTGCACA -GTTGTGGTTTATTTCGGTTGAAGACCCAATATTAATTTACCTACAGCTGC -TAAAGCGTTTTAAGACCTAAAAAATTAAGCAAGGCCCAAAAATCCAAACT -TAATACTATAGTACTTCTCGTTTCGAGACCCAAAATCCAAAGCTAGGCCA -TATTCTTGGTGAGACCCACCTGTAATAAATATCACTTGAGTGAAAGTGAA -CTCTTACTTTTTTCTTTCGACAGCCAAAAAAAATTGAGTCAATTAGCAAA -TAATTCACGTCTCCCCCTTTCAATGTTTACATACACATTACGAACGAGAA -AAAAAAACGAGAGAAAAATTGAGTGAAATGGAATCAAAATGTGTTCATTT -TTACTTTTTATGAAAATTTGGATAAGCACATGGCGTCAGAGTGTCCCATT -TCGGCTTGATCTACGTAGATCTACAAAAAATGCGGGTGAAGAGACGCAGA -GTTTTCAACTGATTTCGCTTTTTTTTGGGCGAAAATTTCCGCATTTCTTG -TAGATCAAACCGCAACAGTGGATAAGCGCGCTCTATCGACAAACCCGGTG -TGTACTACTCGCGGACAACCAGTATAGTTTTTTTTTTGAATTTTTGTTCG -AAATTGAAATTGAAATAAGATGCCAAATTTAAATTTAAAAAATAACAATT -TTTGAAATTAAATTTTTAAAAAAATTCCCCGTAAATCTACACTTAGTCGC -GTAAATCGACAAGGCTATTTTTTTCAATTTTTGCCCATCGCACTTTTTTT -GCCCAATCAATCATCGTCAATTGATCCATTGATCTTCTTCTTCTTCTCTT -TCTCTTTTCTCACCACCGAAAATTTCATTTTATTTTTTGACACTGTCTGC -GTCTCTCTGTACCCCCTATCTCTCGCCTCTCAAGGACTATTACAACGAAA -AATTTGGGGAGAAGCCGTGATTTTCATTTTAATTTTGATGAAAAATTTTA -ATGAAAATGAAAAAAAAAATTGTTTTTCAAAAAACAATCCCCTCGTAAAT -CCACACCAAATTCAATATTCACCTTATTACAAATTGATTATTTTTCCCAA -AAAACACACGACATCGGGCGCCCATCTATTGTTTTTTATTCCAAAAAATT -TCTGCAACTGTCTGGGTCTCCGGTTAACACTGAGAAACAACAAATTTCAT -TTTTCGATTCATTACATTCATTTTGAAGGTTTTTGGTTACAAATTCGACA -CGGATTTCTGGCTTCCCTCATAAATTGAAATGGAAGAGTTTGCTGAACTA -GGCCAACTTGGCTCGGCCATATTTGGCATAGATTTACGGCGCGTTGCGTG -CCGCGTCGCGCCTCGATTTTAGTTGTAAAACTAAATGTGAAGTGTCCGTG -TGGAGTACACGACTTTCCCACGCGTTGCCCGGTGAGAGATTATCAATGGA -GCGCGAAAAATTCAATGAGGTAGGTCAGAACCCCTTGAAAATTGAGAAAA -AAAAATCTCACAACGATACTCCGCAAAGTGTGCGTGTTGTTTATTAAATG -ATAAATTCAAAAGCAAATAGCGATTTTGTTTCAAAAATATGCCGAAAAAA -AAGAAAAAAAATTAAAACAAAAGTTCAGCCACCAATTTTATTTCTCGGCC -ATGGTTGTGTCGTTGTTTATTTTTTTGCGATCGTATTTTTTCTATAATAA -GACTTAAAATGAAAAAACATTAATAAAAATCAGTTTTCCATGGCCACTGT -CAAAAGTCGCAACGACACTCCCCTTCCAGGCTCCTCCCCCCCGCGTGTAT -TTTAGCATGTAGTGTAAATTACGCGATTTTGTGTATAAAACCCTAATTTT -TTAGAAGATTTGAGAAAAAAAACTTTTAAAAAATGGGAAAAAATCCCCTT -TCCCTTTTTTGAAATACTTTCCGACAAAGTTTAGCCAAAAGTCCAAAAAA -AACCAATATGGCCTAGAAAAAATCAAAAACTCGGCCATCCAAAAAACTAG -GCTACACGTTCTTTCGACCTCTGCTCCCCACACCTATGCTGCCCATATCA -AATGTCTCCCGGACCCCTCATTCCGTCACACATTTCTCAAAAAAATGTCT -CTTTTTCTCAAATTCTCTGTCGAAAATCCCATATCTCTTCAGTGTTCAGA -ACTGACTGTTTTATTTCAATTCTCATGATCTCATGTCTCCCGTATGACTC -ATTCCTTCGATATATTTTTCTTTTTTCAAAAATCATTTTTCCTATATATA -GACTTTGTTCGGTGGGAATTTCTCATTTCAAAATATTTATTGAGGTCGCT -TGTTCCCTTTTTATATGGTCGTGGCCTAGGTTTCTAAAACTCGGCTACCA -TTTCCAAGTTGTAGCTTCGAGCTCTTTGTCTCGGAGTAGAAAAAATTCAC -GAAATAAATAAAAGTTCACGTGGCCGTGGCCTAGATTTCCAAAACTCGGC -CACCAATTTTTTTTCTCTTATCAGTAAACCACGTAGAACTCCTTTTTTTC -TAGCCATTTTTTAACTGAATTTCCAACATATTCGGTGGCTCCATCAATTT -TACTGATAGTAATTTCCAATAAAAAAAGGTATTTCTGTCGATAGGAACCC -ATTTTCATCTACTTTTTGTTTCTACTTTATGGGTTTTGCCACTTTCCCGC -ATGCCTACGTGCCTACCTATCTGCCGACCTAATATACCTCGTAGGCAGAC -CTCGGCCGCCTTGTGGTGAGATGCCAGTCGCTTTGTAGGCAGGCGTAGTT -TGTCTTGCTGGTATGAGTAGGCCTGTCAGCCGCCCAGTAGGCAAGCGTAG -GCATGATGCAGGCGTAGCAGGCTTCTTAACTAGGCATCGGCTGCCTTGTA -AGCCGGCGCAGGTAAGTGAAGGTTTCTTCGTGGCTGGCATCCTTGCAGTC -AGGCACAAGTCGTCGGCTTGAAGGCAGGCAGATGCCGCCTAGTAGGCAGG -CATATTTTACTTATAGGCAGGTATTAATGATCCTCTAGGCTTGCGTTGGT -CGGTTTGTAAGCTGTCGTAGGCTGCCTTGTAGGCAAATTGAACTCTCAAA -CCAAACAACACAAAAATTCCAATATTTTTTGTACCTTCTGATTTTGATCT -CTGACTCATGATCTCTTTATCAATCTCATATCTTCCATTTTTAGAAATAA -ACAATTTTTCCCTTCTATTCATTGACTTTAATCCCTTTCAATATTCATTC -AATACACCTATAATACGAAAAACTCTTATCTTTTTTCATTTTATCACACA -TGGTGCATAATATTATAGTTAGTGGCTATTGAAAAAGCACATCATTTTAT -CACTTTTTGTCACTTTTCCACGATTCTCAACGTCTTTTTTTTAAACACAA -AACGTTTCCCGTCATTTTCTACAGTACTCCCGCATTTTCATTTTCCAGGT -GAGACCTGAGATGGAGGGCGACGAGTTGGTTCATCGTCCGACGGTCCTCT -CGACGACGGCTTCTGCCACGTCACGGCCGCGACACAAGACTTTTGAGCTG -TTGGGTCCGGTGAATAATATCTCGTTGGCTGATATGTATAAAGTGTGCGG -GAAGATAATTGGCAGGTTCCCGATTGCATTTATTATTGCGACGGTGATCA -TGTGCAGTGGTGGATGTTAGTTTTTTTTGACGTAAAAAATACAGTTTGAG -AAAATCTTTTTTTAGATCAAAAAAGAAGAAAAATATGGAAAAAACAACAT -TAAAATATTTTTTAGAAATCAAAAAATGTAAAAACTGTATGATTTTACTT -AGGGCCTCCATGGTAGACAGGCACGGTTTTAGGGCCTGACGCCTGCCTGA -AACCCACGTGGAGTCAGAAAGTCCCATTTCGCTTTGATCTTCAAAAAATG -CGGGAGAAGAGACGCAGATATCTCATCTATTTCGCATGGTTAAGAGCGTG -CTGACGTCACAATTTTTCTGGAAAAATAATCCCGCATTTTTCGTAGATCA -AACCGCAATGAGACAGCCTGACACTATTAAGCCGCAAAGGCAAAAGTGTT -TGCCGTCTGAATTTTGAAACAAAAGGTTTAACCGGTGAAAATTGAAAAAA -AGTATAATAATAATAATAATAAAAGTAGAACTATTTTCAGTATACTAAGG -CAAAATGATTGTTTTATAAAAAAACTTAATTTTAAAATTAGATCTCCTAA -ATGTTTCAAGCAGCACAACTTTCATGTGATGTCAGGCTGTCTCATTACAG -TTTGATCTACAGAAAACGCGGGAATTTTTCTCCCAGGAAAATGTGACGTC -AGCACACAATGCATAATCAGATGAGATTTCAGCGCCTCAACTCCCGCATT -TTTTGTAGATCAAACTAAAACAAGACTCTCTGACACCACGTGAATTTTCC -AACCATCAAACTATCACAAAAAAATTGGCGCCAAAAAAACTTCTTTAAAA -ACTTCTCATTTCCAGTAGGAACAATCGGTCTCGAACTGAAGGATAATGTG -CGCGACGGGTACACGCCGAAAAACTCGCTATCCCGACTGGAAAATCGCCT -TTATCGAGAGTTCCTGAGTTCCGAAGGTGATCCGGTGATGACTACAGTTC -TCATGACTGCCAAAGACGGAGGATCCATGCATCGGATCAAGTATTTGGAA -GAAGCACAGAGGGTGAGTGGCATAACATATCGGATACCGTATTTCCTCTA -TTAGTAAGGCATGCAAAACTGATTTTCGGACACCTAATTTGATGCAAAAC -TAATAGAGGGTGCAAAACTAATTTTCGAACAGGTTTTTTCTCATTAAGTT -ATATTATAATATCATCAATTTCAATAACAACTTCTGAACCAAAATGGGCG -AATTTTACGACTGATACGCAAAAATTGTCCGAGTTGTACTCATATTTTGC -CAGTTTTGACTTGTTATACCAAGTCTGTAAGAGTTTTCCTAATTTTCAGA -ACGATTTTATAATGCAAATTTTGAATTCCTAAACATAGGGAACAAATTAA -GGGGTGCAAAACTATTAGAGGTGCAAAACTAATAGAGAGTGGAAAACTAA -TTTTCGATTAGTGATTTTTGATGCAAAACTAATGGAGGTGCAAAACTAAT -AGAGGTGCCTAACTAATAGAGGAAATACGGTATATTTTTTTGAATAAAAA -ATTTCAGCAATGGCTCTACATCTCCAAAAACCTATCCGCAGACGTTGGAA -ACGGCGAGTTCATGAAATTCGGAGATTTCTGTGGCCACTACTGCCAAGCC -AACGACATCATAGGATACTTCCTGGACGCCTACAAAACCAAGTCAGCTGA -CCCAAAAATGGATGGCTACCAACTCAATTACCCAATTACCACAGTAATGG -GTTATCAGCTTCATCTCGAGCGTAACTTTTTCGGGGTTACTGTGAATCAG -TCGGATCCGGTCACTAATATTCAGAGTATGAAGGTTCTGACGCTTCCTGT -GTTGTCAGAGGTACGGACGTTTGAGGATACGGATAAGCTGAACAAGTGGG -AGCTGGCGGTTTATAACTATGCTACAGGATACTCTGCACTCGAGGGTGAC -GATCATTTGGTGGAGATTAATGTGAGTGAATAAATTGGACCATTTCAAAA -ATATTGGGCCAGCCCTAAAAAGACAGCGGGCCGGCCCATATCGACCCACT -TAACAGGCTCAAAAAAGTTTAGTTCAGTTGTGTGCCGCAAATTTTGAAAT -TTGCCGAGCTCGGCAAAATCGGCAAATTTGGTAAATCGCATAATTTTCGA -GCTCGGCAAATTCGACAAGGCTAAATGTTTGAATTTTGCCGTTTTCGGCA -AACGGCAAATTTGGCAAATTTGCCTTACACCCCTGGTTTAGGGGTTTCGT -GTTTAATTTTCAAAGCTTAGATAAACCTCTTTTCCAGGTGATCGGTGCTG -AAGTCGTCGACACCGAAATGAACAAGGACGCTCAGAAAATGGTGCCCTAC -TTCATCGTCGGAATCGTCTCGATGATCATCTTTATCTTCTGCACCGTATC -CATCTCTGCCTCCTACTACGGATACTTCTCCTGGCGAATCGGACTCATCG -CCCTCGCCTGCCTCTTGGTTCCGATTCTCGCAATTCTCACTGCATTCGGA -ATCAATAATATGCTGGGAAATCGAACGAACTCTCCGATGATGATCATGCC -GTTCTTGATCAATGGAATCGGAGTCAACGATGCGTTTTTGACACTTCAGA -ATTGGTTGCAGCATAGCCCGGATCTTCCGTCAGGGAAGCGGTTGGGGTAT -ATGTTGGCTGAAGCTGGTCCATCGATCACTACGACCACTTTGACAAATGT -CATTGTTTTTTTGATCGGGTGGATGAACCCAACGGAAGGTAAGGTTCAGT -GGTGGACGGCAAACTACTTTTTCCGGCAAATCGGTAAATCGGTAAATTGC -CGGAATTGAAATTTCTGGCAAATCGGAAAACCGGCAATTTGTCGATTTGC -CGAATTTGCCGGAAAAAAAATTGCCGAACGGCAACTGCGCCCTGGTAAGG -TGCATAGCTTTGGCCTCTAACATAAAAAAATTTGTCTATTCATCCTTTAT -TCCAAAACGACATGTATTCCAGAGATGTCAATCTTCTGCCTTGGATGTGC -AATCTCCCTACTCCTCGCCTACGTCTACACCCTCACGTTCTTCTGTCCGG -TGCTAGTTCTTCTGCTTAGCGAACGCGTCAATGAGCCCAGCAAGCTCGAG -GGCACTTTCAACAAGGTTCTCGGATTCTACGCAAAAATCATATGCAGCCG -ATGGACATTTGCACTTCTCATCATCGGAAGTCTTGTCTACTGGGGTTTCG -GTATCTATGGAACACTGGGGATCCGTGCCGTGTTGAACACTGCAAAGATC -CTTCCCCTGGAGACGCCGATCCGCAAACCGAACAGGATTATCGAGGAGAC -CGTGTGGAAAGAGTTCTACCCAGTCACCGTGATTGTGAACAGCCCAGTTG -ATATAAGCAATGCAAATGCACTTCGAGCATTTGACAACCTCGTTCACGAC -TTTGAATCGATGGAAAAGTGCCGGGGATCCGAGTACACCATATCTCCAAT -CAGAGACTATCAGACCTATTTTTACGGTGTAGGAGCCGAGGACTTTGATT -ATGAGGAAGAAACCGTGAAGAACACCTCACATTCTTTAGATTTCAGTGTA -AGTTAGCAGTCCACGCGTTCCTATTAAAATCTACATATATGCCTATAACG -TGTTTATCCACAGAAGAGAAAAATCGCCATATCTGCCGCGCAAATGAATC -CGCGGGAAGAGACAAAACTACTGTAGTTTTTAACCAATTTGTGTAGATTT -ACGAGCTATTGCGTCATCGTTGTATTTAATTTTGAGCCGCAATTTTTAAT -TTTCAGGCGTTTCACACGTTTTTATATTGAAATTTATCTATTTATTGAAT -AAATCTTAAAAGAAAACACAAAAAAATTAGAAAAATTCCGAAAAACGCCT -GAAAATTAAAAATTGCGGCTCAAAATTAAATTCAACGATGACGCAACAGC -TCGTAAATCTACACAAATTGGTTAAAAACTACAGTAGTTTTGTCTCTTCC -CGCGGTTTCATTTGCGCGGCAGATATGGCGATTTTTCTCATCTCTGGATA -AACACGTAATACCTACATATTTTGTGTGCCTAAAAACATGCCTAGCAGTG -AAAGTAGACAAATGTAAGCACACAAACGTGAGTAGGGCTTAAATGGTATG -CAGGCACTGTTTTAGGGCCTGACGCCTGTCCAGGCCTGTCTTGTACGTTT -CATCAATTCAAGCCGTATATTTCCAGAAGCTCACCGGATTCCTTGCCAAC -CCTATCTACAAGCATCACAAGGGAGGACTAAAACTTAACTTTTCAAATCC -GTTAGTTCCTATCTGCCACCTTACCCTAAATCGAGTACCATTTTCAGTGT -TCCAATCCGAAAAGTGCAACTGATATTCGCTTATGAAAACGTAACCTCGT -GGGATGAACGGATTCAGATTATGCAGGACTGGCGGACCATCGCAAGTTCC -CACGTGGCCCTAAATGTTTCAGTGTGGAATGTGAACGCAATGTTCGTAGA -TCAAATGCTGAGCCTGAAGGGATTGGCGATCTCGGTAAGATCTCAATGGT -TCCAGCGCCCTATAAATACCGCTTATTCTTTCAGAATGCCCTAGTCACCT -TGGGATGTATGGCTGCCGTCTGTGTAGTCTTCATCCGCAACCCCCTCTCA -GTTGGCCTAGCGACCGCTTCGATTTTATCCATCTCCATTGGAGTAACTGG -ATACCTGTGCTTCTGGGACTTGGATCTGGACCCTGTGACCCTGTGCGCAG -TAATTGTTTCAATTGGAATGTCCGTTGACTTTGTTGCCCATGTGGCCTGT -CACTATCAGGTCAGGTATAAAGAGTTCGAGGAGAAAGGAGTATTGAAGAG -GATTGAGATGAAAACTCCCGAATCTCGAGTCGTCAACTCGCTGTCCAATG -TGCTCTGGCCAATGGTCCAGTCGGCTTCTTCAACTCTTCTATGTGTACTT -CCACTTGGTATTCTACAGGTACCTACCAATACCTATACTTTACCGATAAC -CCTACCCCTCAAACATTCCAGAACTACCTCCCAATGGTTTTCGTGAAAAC -CATCCTGCTCGTCGTGATCTGGGGAATGTTCCACGGTCTTGTGCTGCTCC -CGTGCATTCTTGCACAGTTTCCCCTGTCTGTGTTCAACAAGACGTTCGCC -GACTTGTTGTTCGGCAGAACATCCTCTTCGTCTTGCTCTTCGGAGTCCGA -TTCGGAAACCGACACCGGTGATGCTCAGGAGATGGTTCCGCTCGCTGGAA -CCGAGAAGGCTTAAGATCTGAAATTAGTTGTTGTTTGTTATTATGTACAG -TTGGGATACAAAGTGTATTATGTAGTCTGTAGTGTCGCAGTGCTACAAAC -TACAAATTCAAAGCTACAAACTATAAACTCATTGAGATCTGGCAGAGCTT -TATAGTTTGTAGTTTTATGTAGCAGCTACAAACTACAAATTTCGATTGTT -GTAGTTTGTAGTATGGCGCACAAACTACAATGTACATTTTGCAAGTTTTC -TAGATTTTTTTCTCACTCACACACACACACACACACCGTTTTGCTACGTG -GCTGCGAAAATGGAAAACTCGGCCACGTCGCAATTCACACATCGCCAGAA -ACTTCTAGCTTTACCAGTAGCTTTTCATGATCTACTCTTCTTTTTTTTCC -CCCCTCAATTTCTATTTGAAATTTCAGAATTCCCTCAATTAGTCTTCTGT -CACCGTGTCCTCCTCTTTTCCGCAAGCGGGTCCCCTTTTCCCCCCACAGA -TCGGCTTCTCAGGGTTCCTATAGCACTTTTTTCTTCGATTCTTGTCACAC -AAAAAATTGTACTTCCATCGCTCGACGTGTCCATTTTTTCTTGTATTTTT -TAAATGCATTTTTTGATAAATTTGATTTTTTTTATCATCCAGAAAATGGT -CAAAAATTCAGATTTTCTTGCTGGGATTTTGCTGGAATTTTTTCAAGCAT -CAGACATGCAAAAACTTATGCAAAACTACACAACACTATCGATGGGGACT -GTTCGACTCTTCACCCCAGTCAAACTTTTTTTCACTATTTTTTTTAACTT -CTGTTTTTTTGGTACTTTTCTGGCCGTTTTTATGGAATTTTTTAACCCGA -CATTGGAGTTTACCTTTTTTTGTTCAGGATTTTAGGAATTTCTGCGACCT -TCTCACTCATGTCCTCCAGCCCCGCCTAAGCCTATGCCTTAACTCAAGCC -TAAGCCTAAGCCTAAGCCTAACCTAAATCGCGTCAGAGATAACGTTCGCC -ACTGACGCCAAGCCTCAACCTAAGCCTAAGCCTAAGCCTAACACTAAGCC -TAAGTATAAGCCTAAATCTAGGCCTCAGCCTAATACTAAGCCTAAGCCTA -AGCCTAAACCCAAGCCATAAGAAGACACTCTAAAAATGTTCAGATTATTA -AAAAATTACATTCAAAGTTTTCTTCAAAATTTTGCTTTCGACTTTCCAAG -TAATCAATACCATGTAGAATTCCAAAATCTTCATACAAATCCCTCCCCTC -TTCACATCTTTCCCGACAGCTTGTACTATTTCTCCTCCACCCACTAGGCC -AGGTCAACGCTGCGTCTCTCGTGTTTCATATGCTATCTCCCTTTTGTGGA -ATCCGTTCATCGTTTCGGATCGCTTACTTCTTCCGCGCGCGTCGCATTTC -ACTTTGAAATAAACTTCAGTTTTCCTTTCCAAAATTTAATTGGTGGAAGC -GTTTGAACATGCGAAATTTGTTAATTATCGTGTGTATTCATTTAATATTA -CTACTTGTACATTTTACCGATGCATGTAAGTTTTGGATGTATCAAAAAAT -TAAATAAATTTCTTAAAGGTGGAGTAGCGCTAGTGGGGAAATTGCTTTAA -AACATGCCTATAGTACCACAATGACCGAATATCATGATAAAAAAATTCAA -AAAATTTTTTAAAATTTTATATGATTTTTTGAAAATTGGAAAAATCTCAG -TTTTTGCCTAATTCCAATTTGAATTACCGCTAATTGGATTTGTTCGATGG -AGCGCGCTTGCACGTTTTTAAATTTATTTATTTTATTTTTTGTTATTTTC -CACCGATTTTTAATGTTTTCGGTGTATTTTTGCTCTAATTTTAGAGAAAA -AGTCAAGATGAATGCAGATTTTCGATTAAAAAGCACGCTCACAGGCGTAA -AAATGACAAAGTAACGATTTTAAACGGTTTCGAACCTGAATTAATTAATT -TCACTGATTTACGACTGTAAGCGTGCTTTTTAATCGAAAATTTGCATTCA -TCTTGACTTTTTCTCTAAAATTCGAGCAAAAATACACCGAAAACATTAAA -AATTGGTGGAAAATAACAAAAAATAAAATAAATAAATTTAAAAACGTGCA -AGCGCGCTCCATCGAACAAATCCAATTAGCGGTAATTCAAATTGGAATTA -GGCAAAAACTGAGATTTTTCCATTTTTCAAAAAATCATATAAAATTTAGA -ATTTTTTAAAGAATTTTTTTATCATGATATTCGGTCATTGTGGTACTATA -GGCATGTTTTAAAGCAATTTCCCCACTGGCGCTACTCCTCCTTTAAAGTT -TGAAGTTTTAGTAAAAAAAGAGTGTCGGTTTTTTAGTTAATAATATTAAT -TTCCAGTCGCCGGAACAGTTCGACCATTTTTCACCACTCTTCCAGTACCT -GGAAGAAATGTTCCTATTATGAGATTATTCGAGAACTATGCTGCATCGTG -CCGACCAAAAAGTAAAAAGGACTTCAATGTTGATCAGCTGGCAAATGTAG -GTTTTTTCCCGCAAAAAGTCGTATTTCGTGCAAAACCGGCAAAAGCAAAA -ATTTTGAATACCGGCAATTGTCGGAGTTGCCGATTGCCGGAAATCAAAAT -TGCGGGAAATAAAATTTTGATACTTTTTTGTAGATTTAGGAGCCTAAAAA -TGCATTTTAATGAACAATTTTTAATTTTCAAGCTCAAAATGATTTAATCC -TTTAAGGATTGACCGTTTTCTTTAAAAAAGACTAACCGAATACTATAAAA -AAAGGTGAAATTTTTTCAATTTCCAAAATATAATTAATTTTGGCAACTGC -CGATTGCCGGAAATTGCCGATTGCCGGAACTTCACAATACCGGCAATTGC -CGAAATTGCCGATTGCCGGAAATTTCCAAAACCGGTAATTGCCGGAATTG -CCGATCGCCGGAAATTCCCGATTGCCGCGCACCCTTGTATTAAAGGATAC -GGCAAACGATTTTTTCCGGCAAGCGGCAATATCGGCAATTGCCGAAATAA -AATATTTTCGGCAAACGGCAAACGGCAGTCAGCAACATGCCACTTCTCCA -ATTTTCGGCAATTTCGGCAAACGGTCAATTTGCCAGAAATCATCGGAAAA -TTGTGATCTTGCACATTTTTTCTGGAAATTTCAGAATTTCAATTTTAAAC -AACAACATTGTACACATCCTATGAATGACACATATCTTAAAAAGCCAGTA -AATTCTATAAAAAATATCTAGAGAAACTGGCAAAATAATTAAAAAAGGCA -CGGATTCATGTGATTTTGATTATTGAAAATATCTTTGAAAACTTTCGGAA -AATTGATATCCGGCAAATCGGCAAATCGGCAACTTGCCGATTTCCCGAAT -TTGCCGAGCAATGAACTACACTGTTCCAAATCGAATTCGTAACCGATATT -ATACTTAGGAATGATATTTGTAACTCGTATAAATATTAAATAATATATAT -ATATTCCAGCTTCTCCAATCTCTCCAAATGGATGAAGTAGCCACAAAAGC -CTACAACTCCCTATTCTTCTCAATGGCTGATATGCAAATCGAAAAGTTCA -TGGGTAAATGGTACACAGTTGTTGATTCGAAAGAAGTTCATAAAGAGGAT -TGTTCAATTTTCTATTGTAAGTTTATTTTCATTCTGAAAATGAGATGCAA -ATTTTCAGTCGATATGGTACTTCAAACTCCATACACCGCAACATTCACCT -CAAAGCAGTACGGAGTGATTAATAATGATGTCGTCACCAATGAGGGGTAC -GGTAGTATGGTTGGTCCAGAGCCCGGAGCCGTTCTTATTACAACTGGTAG -TGAAAGGGATCAGTGTCCATGTAAGTATTTTAAATAACTTTGGTCCGGTG -ATATTAAGATACAAGTTTAAATACTTCCCGTTTCAAAAACTTCGAATTTC -CCGCCAAAACTTTTCTCTGAAAATTTTAATTTCTTTCCAAATTTTTTTCT -TTGAAAATTTGAACTTCCCGCCAAAATTTTGTAGTCAAAAAATTTGAATT -TCTCTCCAAGAATGTTTTCTCAGAAAATTTGAATTTCCCGCCAAATTGTT -AATGTCAGAAATTTTGAATTTCTCGCCAAAATTTATTTTCTGAAAATTTG -GATTTCCCGCCAAAATTTTTTTCTCAATAAATTTAAATTTCCCGCCAAAA -TTTTTCTCTGAAAATTTTAATTTCTTTCCAAATTTTTTTCTTTGAAAATT -TGAATTTCCCGCTAAAATTTTATTGTCAAAAAATTTGAATTTCTCTCCAA -GACTGTTTTCTCAGAAAATTTGAATTTCCCGCCAAATTGTTAATGTCAGA -AAATTTTAATTTCTCGCCAAAATTTATTTTCTGAAAATTTGGATTTCCCG -CCAAAATTTTTTTCTCAATAAATTTAAATTTCCCGCCAAAATTTTGTTAT -CAAAAAATTTGGATTTCTCGCCAAAATTTTATTGTCAGAAAACTTGAATT -TCTCGCCAAAGTTTTTTCTCAAAAAATTTGAATTTCCTGTCAAAACTTTG -TAATCAAAAAATTTGAATTTCCCGCCAATTTTTTTTCTCCGAAAATTTAA -ATTTCCCGCCAAAACTTTGTTATCAAAAATTTGAATTTCTCGCCGAAATT -TTATTGTCAGAAAATTTGAATTTCCCGAAATCTCTATGAATAAAACATTT -GCAGTTTTCCCTGTACGAATCGGTGGCTTGAGTGACGAAGGAGAATATCA -ATACATGATCTTAAGTACACCACTGAAGTATCCAACGATGGTCTTGACAA -GGTAAGTTTGCCTTAAAATTTGTTTTCTAATTATTCCAATCTAATATTCA -TGTGATGTTGAAAAATGCAAACATGTATTTTAATACATTTTCCCCCTATT -GATGCGTACCGAAAAATGTAGAAAAATGGAATCATTTTTTTGCATTTTTC -GACATTTTCGACATTTTTGACATTTTCCGACATTTTTCGACGTTATTCGA -CATTTTCACGCATTTTTCAGAGTTTGCCGAACTAGGCCATTTTGGCTCGG -CCATATCTGGGGTAGATTTACGGCGCGTTGCGTGTCGCGTCGCGGCTTGA -TTTTAGTTGTAAAACTAAATGTATTTGTCCGTGTGGAGTACACGACTTTC -CCAGGCAATTGTCAATGGAGCGCGAAAAATTCAATGAGGAAGGACAGAAC -CCCGTGTCCACAGGAAGAATTTTCTCTGCGTCTCTTGTCTTTAGCATTTA -AAGTGGGGCGACGCCGATGTAGAAAAATGCTGAAAAATTTCGAAAAATGT -CGAAAAATGCACAAAATGATGGCATTTTTCTACATTTTTCTGCATTTTTC -GGCACGCAAAAAACATCACATGAATAACCCCATAAAAACTCCAATTTTTC -CAGAGACCTAACCCTATTCGAAACGAAATGGAAGCGAGAAGTGTATGATT -TTGTTGAGAAGAATGGTTTCATGAGTCCAATGGCAGCATTGAACACTCGT -CTCCATTTCACAGATGTCGATGTTTGCAGAAAAGTGAATAAGTTATATGA -GAATGGAAATGTTTGAGTTGAAGATTATCTTTTTTCTGATGATACGGCAG -AGTTTTTGACGGGTTGTGCAGTGTTTATTTTTAACCTTCATGTGTATTTA -AAAATAAAGATTAATTTAATTGAATCTGTGTTTAATATGAACTTTTAAAA -CACAAAATTTCAGATTTTGGTTTAAAAACTGTAGACACTTGATACTTTGT -TGAGTGTACCTAATTTGAATTTCGCGAAAAAATGACTGTCATATGATTCT -TGACCGTGTACACCTCTCGGGCAATACATTAATATTTTAATATTATGGAT -TATAAGCATTTTCAGTAGACTTTCCATATTTTCTCATGATTATTACTCAT -TTTTATGACGAAAAGCATTGTTTGGAACTCAAAATTATCAACTTTAAATG -TTAAAAAATATTCAGGAAAACATAATATTTGCCTATTAAAAAATTTCCCA -TTAATTTTCCACAAAAAAGTTTCTTTTTTCTTTTTTTAATTTTTTCTCAG -AAAAATCAAATCTCCCAACAAAGTTTTTCTCAGAAATTTTGAATCCACCG -CCAAAAATTTTTCTCAAAAAATTTGAATTTCCCACCAAAAAAATTTTTCT -CACAACTTGAAAATTTGAATTTCCCACCAAAAATGTTGTCTCAAAAATAG -TAAGTTTCCCGCCAAAACTTTTTTTAAAAGAAAATTTGAATTTACCGCCA -AAAATTACTTACCAGAAAATTTCAATTTCCCGCCAAAAATGTTTTCTCAG -AAATTTTTAATTTTTGGTCAAAATTAAAATACTACTACGGTACCTTAATC -CTACACCTCCACCCAAAAAATCATTTTTCAAAAACTACTACAGTACTACT -CCTACAGTACTCCTACCGTACTCCTAAAGTACTCCTACCGTACTCCTACA -GTACTCCGACCGTACTCCTACAGTATCACTACAGTACTCAAACCATATCC -ACCACTAACACCAATCCAATATCCCTTCAAACGACAATAACTTTTTTATT -CAAAAATACAGTAATCTTACTGTAGACAATCTTTTAAATTATAGTCTTCA -TCCAAAACTATAACGGACTCCATCCCATAAAAAGTAAACGACAAGTCATA -AAAATTGGAATTCGCGTAGTTTGCTCTTCCGTGAAGGCAAACACACGTGC -TCAGCTATATTGATAAGAGATGAAAAACGAGAGGAATCAGTCGAGGTGTC -TGATCTACTTCCAGGATGGTGACCGCTCTTCTACTCCTATTGGCTCTTGC -AGCCACCTCTTTGGCGGCTCTTCCAGATTTGGGATATCCCGGATGGCAGT -GCGATGCATCGCTTTATCAGAAGTAGGTGGCTTACTTTAATTACTAAAGT -TTGAAATTTTCCTCGCTTTCAGGAGCAAAAATACCCCGACTTCTGCCCAC -TCCGTCCGATTCACCGACATAAAAGTTTTGGGAGCTCTCGGAGACTCCTT -GACCGCCGCCAATGGAGCCGGAGCACCAAAGGGAGACCCTCTGGCTGTGA -TCCTTCAGTACAGAGGACTAGCCTTCCAGTGTGGAGGTGACCACTCTCTC -GACGAGCATGTCACTGTTGCAAGTAAGCCATTTTTCTGGGGAATTGAGAA -AACTGAGTTGTTGTAGATGTGCTGAAAAAGTTCAGCCCTAACCTAATGGG -ATACTCCACTGGAATCGGAAGTGCCAACGTTTGGGAGGTCTCAAAACTGA -ACCAAGCAGTTCCAGGAGCTGAAGCAATCGATATCATCACTCAGGCCAGA -GCTCTGGTGCAAATTATCCAAAGCCACAAGGAGGTAGCCAAGTCCAAACT -AAACATCAATTCCGATGCATTTCCAGATTGATTACAAAACTGATTGGAAG -CTTATCAACGTATTCATTGGAGCAAACGACATGTGCGCCTATTGCAACGA -CCGAGAAAATGTAAGATAGTCAAAGATCATTCCACACCCGTTTTATTGCA -TTTTTATAGGGCCCACACTCAAAAGCAATCTGGAAGCAAAATGTGATCAC -TGCCATTCAAATTTTAAAGGATAACTTACCAAGGTAGGTAAACTATAGGG -ACATGACATTCTAAAGTAAATAACTATAATATTATGAAATTGTCACATAC -CTATACCTACCTATAAATACCTACATGGTCCAGAGCTGTGTGGCAAATTT -TGAAACCAGCAAATTCGGCAAATTTTCCGGGGTCGTCATACTTGGTAAAT -CGCAACATTTTTTGGAGCTCAAAAAGTGCCAAAATTAACAGAAAATCTAA -GTTGTTAAACATTTGTGGCAAATTCCAAATTTGTCCAAATTTTTGAAATT -TGCCTTGCTCGGGCAAATTCGGCAAATTTGCCGTGGTTGTCGGACTCGGT -AAAGCGCATCATTTTTTGGTGCTCAAAAAGTACCGAGTTGATGGAAAAAC -TAAGTTGTTAAACATTTGTGGCAAATTACAAATTATGTCCAAATTTTTGA -AATTTGCCTTGCTCGGAAACCGGCAAATTCGGGAAATTTGGCACACCCTT -GATCCCATAGCAGTGGCGCAAAAAAATCTTTAAAATTGTGGCCGTTTCCG -TGCCAATTATAAATTAAAGTTAAACATATTATCGAAAAAATACGATCGCA -AATTTTTCTCGTAACTTATTTTTGATCTACCTTGTTGACTAGGCTCCTCC -CCTTCCTTCGACAAGACAGCCACAACAAAATAACAACGGCAACAAGATTA -TGGGCAAACACGTGGTGCCAGGCTGTCCCATTACAGTTTGATCTACAATA -AATGCGGGAATTTTTCGCCCAAAAAAAAAGTGACGTCGGCACGTTCTTAA -CCATACAAAATCAGTTGAGAACTCTGCGTCTCTTCTCCCGCATTTTTTGT -AGATCAACGTAATTCAAGCCAAAATGAGACACTCTGACACCACGTGGGCA -GAGTCAACTTCCAAAGGTAGATCAAAAATTAATTATGAAAAAAATTTGCG -ATCGTATTTTTCGATAATAAGAGCCAACATTTTTCGGCTTTTTATGGAAA -TTTTTTTTTCAAAAAGAGGAGTATGGTCCATAACTATGCCATCAATACCA -AGTCCTTCCAGAACCATCGTATCCATGACCGGAATGTTCGACATGGCCAT -GCTTCGCCAAATCGACCACGACAAGTATTTCTGCGACGGCCTCCATGTGT -TCGAGTGCCCATGCGAGAAGAACAAGGACTTCCCGAATACCGACATCTCG -GCTGCCTGCCATCTTTACATGGATGCTCAGCAGGAGATTCAAGACTCGGG -AATCTTCGACTCAACAGATGACTTTACATTTGTCGTTCAACCATTCTTCA -ATGGAATCACAGTTCCACCACTCAAGCCCGACGGAGAAGTCAATCTGGAT -TGGTTTGCACCGGATTGCTTCCATTTCTCAAAACTAGGCCACGCCAATGT -TGCCAAGCACTTGTGGAACAATATCGTTCAACCAGTCGGATCCAAGAACC -ATCAAGTCAATCTGTCAGATCCTACCATTCCACTAAACTGCCCAGACACC -AAGTGCCCATTCTTCAGAACAACTAAGAACAGTGTTGACTGCTCGAAATA -TATGACTGCCTAGACTGTAGGAAATTGTGTTTGTGTGTGTAATTTGACGT -ACTTATCGGGTCTGCAATAAAATGTTTTATCGTGTAATCTTTAATTTTTA -ACGTGTGAGACATAAAAGAAAGAGCACCCTCAATAAAAATATCCACGTGG -AGTACACAATATAGCTATCAATAGAGCGAGTAAATATTTTTGCAATAATT -ATTTATTAGAAGAATGGAGATCAAGGTAAAGGAAGAGATCTTGATTTTGA -AAAAAAGATACTGGAAATACTAATTGTTCACGGGATTTCATAGAAGGGGA -TATATCACGACTTTTTCTTTGAAAAATAAAAACAACATAAAATTATTGCG -GCTTCACAATCTGATCATCCGGTATTTCTCCAGATCTTTCCTTTTCCGAT -TCGATCTTCTTCCACTTGGTACGCCGGTTTTGGAACCAGATTTTCACCTG -GAATTTGAGAAATTTCAGCTATGCGTTGAGTGCCGCGTTACGTGCTGCGT -TGCGTGCTGCGTTGCGTGCCGCGTTGCGTGCCGCGTTGCGTGCTGCGTTG -CGGGCTGCGTTGCGTGCCGCGTTGCGTGCCGCGCTGCGTGCCTACCTGCG -TCTCCGTGACATCCAATCGTTTTGCAAGCTCACTTCTGTCACTACTTGAC -AAATACTTTTTCGCCTCAAACTGCTTCTCCAGTTCGAATACTTGTTTCCC -GGAAAATGTCGTCCGCGCCTTCTTTCTCTTTGTTTTTTGACATTTTTCTA -TAGGAGACTCTTTGGCTTGGTCGAGGCTGGATTCTGAAAAAATATTCTTA -ACGGCTGATTATTTTTCTACGTGTAGCATTTTTCCGAAATTCATTGAACA -AAATTAGTAAATTTCCAAAAAATTTTTTTTCCAAAATTTCGAAAACATTT -TAATTTTTTTCAGATTTTCTAATATTTTAAAACAAAAATTGAGAGTAAAG -GAAATAAAAATTGTGTCTTGTAATTTTTGTAATTTTTACTCAAAAAAAGG -CCAGTGAAATACTATTACAGAAAATACGAATCGATGCACCATGTCAAAAA -GAATAGTATTTCACCTCAAATGCACCATGCCCAAAACTAGTCTATTTTTC -AACTACAAAACTTCATACACCTAATCCAAAGAAATCAACTTACTGCATCT -TCCAAATTCATCAATTTCTCCATTAACAGTTGGTAAGTCAAGTATATCCT -TTATCAGGTGACTAGTTCTTCTCTGAGGCTTCACATCAGACGTCAACAGT -GCAAAATAGGGTTGAAGTAGTTGGAAGAGCAAGTCAGTTTCCATTTTGCA -CGAATGAAAAGAACTTCTGAGAGACTTCTCTATACAGTAGGTCTCGAGGT -CCCCGCCTTCTCTTCAATCAAATAATTGAAATTCTGGACTCTCGGGGGAC -TTTTGACGGTTGACGACGACGACAATTTGCCAAAGTGGTCGACAATGATT -GCGCAATTGGTGTGGAAAGAAGAAGAAGATGGGTGAGTTCTGAGATGATG -ACAAAAAGAGCATGAGCCAGCAAATTGAATAAGAGACCGGATTTCGAGAA -GGAGGAGGGGGAGAGGAGGATTGGTGGTAAGGGATGATACTTGATGCAAT -TGAGGGAATGAGTTTCTCATACTTGACTATTAAATACTTTTCTTGAACTT -AAATATTTGAATTGAAATTTTGGAGTAGCGGAGGCACATGTGATATTATT -GTGCTAATTTGTAATACTTGGACTTTCAAATATAACCTCAATTATTTGAA -AAAAACCTTTTGAATAGACCAGCAAGGTTGATCTACAATTTTTCATGGAA -ATCGAATTAATTTTGTAAGGATGTCTACTGAGTATAAGCTTATTGTTAGG -CTTAGGCTTAGGTCTAGACTTAAGGCTACACTTAAATTTAGGCCTAGGCT -TAGGCTTAGGCTTAGGCTTAGGCTGAGGCTTAGGCTGAGGCTTAGGCTTA -TGCTCAGACTTAGGCTTAGGCTTACGCTTAGGCTTAGGCTTAGGCTTAGG -TGTTGGCTTCAGAATAAGCTCAGGCGGGGGTGAGGGAAGGGTAGAAAAAA -AAGAAAGAGAAATTTCCAGAAATTCACAAAATCCAGAAAAAAACATATCT -TTCACAAGTTTATATTTTTATAGCCTAAAAAATTACTTTTAAAATGAGGA -TATGCAACCCGCACGCAAAAAAACCTTTTTTTTTTTGAGCAATTTCACGG -CTCTTTTTTTTTTAATTTAAAAATACAATAAAAAAACCAAAAAAATTTTC -CGAGCCCAAATTGCTCCCAAATGCTCTAAATTTCTTTTGAAGTTTGATAT -ATTCCTATTAGAACTTGAGGAAAATGTAAAACTAGAGAAACATAATACTA -CGCATGTTAAATGTAAATTACTTACTTTTAAAAAGTCGTACGTTATTTTG -GAAAGTTTGAGGTTTTTGCATTTTTTCCGTAATATCACTGAACACTTTTA -TTTAAATATCATCAATTATCGGAAGTTTATAGGTTGCAGGAGAAAAAATA -TATTCTAGCGGGAAAATGAAATGAGACGGGGGGACATTTTTAACCAAAAA -AAAATCAGAAAACAGTTGGTAATAAAATTATTCCAAGAAAGTATAAATTC -ATGACTTCCATCTTGGGAACATTCTTAAAAAATGTCAACGAATAAATCTT -TGTGGCAAACAAACTTTTTCCATAAATGTTTCAGACCTTATATAGCGGAC -ATGAAAGTTGATTGCTTATTTGATATGTCTTGAGTTTATTTTTTTTTATT -TCAAGCGAGGGGAGATTTATTTGCCTAGATATATATATAATTATTACTGG -AACGAACTGGAAAAAAACTTGGGATCAAAAAAATCAAAAATTCAAATTCA -AAAATTCAATTTTTCGAAACTTTTTCTACAGCTTTGTCGAGAAGCAACAG -ACAAATACTTATAGCTAAAATTTTATTAATATTCTAGTTTTAGTCATGGT -GAATCGAGAATTTGTCAATTTCCATGTGGTATCTTAAAAATAAACCGATA -CACGTGGTGTCAGGCTGTCTCATTGCGGTTTGATCTACGAAAAATGCGGG -AATATTTTTCCAGAAAAATTGTGACGTCAGCACGCAAAAATTAATAAGGG -TCTAACCAAAAAAACTTGAATCTTGGAAATATTTTTAATTCACCCTAAAT -TTTCCCCTGATTCCGAATATCTATGTGAAAAAATTCAAAAAAAATTTCCT -GAATTTATATTTAAGCTTGAAATCTTTCATAAAAATTTTTTTTTTTTAAA -TTTCATTTGTACTCGCATCACTTTTTTCAAACTCGCGCCCAAATAAATTA -GCGCGCGCGTGCATCGTTTGACTTTTTTTCGTTTAGTTTTTTTTATTTTA -GCCGAATTCAATTTTTTTAAAACCAGTTTCATTCATTTTTGTCGGTTTTT -TTTTTCTGAAAAAAATGTAAAAAAACGAAAAAAAATCAAACAATGCAAGC -GCGCTCCAATGCTAATTTATTTGAGCGCGTATTTAAAAAAGAGACCGGGA -TACAAATGAAATTCGGCGATTTCAAGCTTAAATATAAAATCTGGCAAACT -TGTTTTGAATTTTGAATTTTTTCACATAGATACTCGGAATCAGGGGAAAA -TTAGGATTCATTCAAAAATATTTCCCAGATTTCGGTACCCCACCTTAAAA -ATTTTTTTTTGGGAAAACAAGGAAAATTTCTAGCTTGAACTTATTTTATC -AATACCTAAAATGCTGAACATTAAAACACACACACCCGTATGAGTATTAT -ATACTTCCAAGGAAACATTTGAAAAATAAAGAGTTCTCCGCTTTGATTAT -ACACTTGTGATATTCTCACGCCTGGCACTTGGCACCAGCTCAAAGTGCTC -ATTTTGGCTATAATTGTTTGAAGGTATATGAAAAAGTGGAAATTGGGAGG -AAAAATGGCATGTTTTGGCTTTCTCTACCTGGCCTATGTGTTAGAAAACT -CTTCTATGAAAATTCAGTTTAATTTTTTAATTTTTCTTAATTTTTAAAAT -TCTAAAAATGGCTAAACTTTCAAAAATATAATTTTTAAAAAGCCAAATAC -TATAAAATTTCTTTGTTAATTTCTTTATAACCAAAATTAACGATTTTCAA -AAGTCAAATTTTTCAAAATTACAAAAAATTTAAAATTACTGTAAGATGCG -CAAAAATTACAGAGTTTTCAAAATATAAAACACTCTTGTGGCCGAAAACT -TCCAAAGTTCAGGAAATAAAAATTCCAAAAAAAAATCAAGAAAAAAATGT -ATCTCGAAAAATTACCGCTATTAGAAAATCGCCTTCTCTAAAATTTCCCA -AATTTTGAAATTATGGAAATTCCCAGATTTTTCAAAAGCGATCTAGTCGG -AGTTGTCAGAAAAAAAGTTCAAGAAAACTTTCTCTAGAAACTCAAAAGTT -GGCCTGATCAGAACTTGTTGGATTTTTTCAATTTCCCAAAAAATTTTCAA -AGTTGCCGAAAATTACCGAAACTCCAGGGCTCACTTTTAGACCTTAAAAT -GAAACTTTTGCCATTTGAAAGAGGCTCTTTGAAAAAGGTCTCTGCAAAAA -ATTTAGCGGCAGACGAGCACTTTGAACTAGAAAAATGTCGCTTTGAAATT -GCTATCATTGAAATTTTTCACTACTATAGAGGCCGGTAAAATTGCTCCAA -ATCATAATTTAAAATATTTTTTCATGATTTTTTTTTATTTTTTCATGATT -TTCGAGGTAGGCAAATATTCTGGGAGCTTTTTTGGATATATTTATTTTTT -TGGAAAAAAAAATCTGAAAAATCCCACATTTCCAATAAAAAAATTCCAAA -AAGCTTTCAGAATACTTGTCTACCTCGAAATATCCTAAAATTCATAACAA -TTTCAAAAAAAATATAATTTGGAGCAAATTAACGGGCTATTTCAAAGTCT -AAAAGTGAGCTATAATGCATACATTCCAGAAAATGGAATAAAAAATAAAC -TGAAGTCAATTTAATCTAATCTCATGATACCTCCTCCTCCTTCCCCCAAC -AAATAATGCTCAATAGCCCCCAATCAACTCGTTCCAATTTGAATAGTGTA -TTATTTAACAAGCTTCATCATCTCTTCCTCCTATTTTTTTTTGTCATTTT -TATCGTCCCCTCGGCCGTTTGTATTATCCTCTCTTCCTTCTTCTTCTTCT -TCTTGAAAACGAATTGAATTTCTTCATCCAATTCACTCAAATCACATCCT -CCACGGACACATTCAATTAATCCAAACGTCCTTTTCAATTGAACACAACA -ACAATCACTATTTCATAAAAATTGTTTTAAATGTACATATATCAAAAATT -GCGACGGCTGGAAAAATTAAATTTTTACACCAGAAGAAAATTTGTAACCA -TAGTTATGGTAGCTATAACTCAAAAAAGTAGGAAAATTATGTGACATGTT -CTCAGGACTGCAGTGATCGCAATAAAAATAAATTCTGCTGATCCAATACT -CTTGAAATAATAAATCGTTTCTGATTGATTCCATCATTCTCAGACAAATG -GAGCTTGGTTGAGTGCTCAATTGGTCAATGTCGCTGTCATGGCACCAGGG -TTGTGCGGCATCCGGATTTTCTGGCAATCGGAAATTGCCTTTTGCCGAAC -TCTAATTTTTTTTCGGCGATCGGCATTTGACGGTTGCCGAAAAACTCGTT -TTTTCGTTTTTTCGCCATTTTTCGGCATTTTTCGGCGTGCTTAAACTCTT -TGAGGTTTTTTTTTTATTTTTTCTTGTATTTTATAAATCTAAATAATTCA -ATTCCAAAGTTTGATAAGGAGTGTCTTGGTTTAAATTTTCTAGCACAGAT -CAATTTCATTTATTAACGATCAGACTGGTAGGATAGTCAACGACCCCAGA -GGCAAGAATGATTCAAAATAATTGCACACATGGACAGCAATAGACAAAAT -CTTTGAGAGTTTTATGGTGGGGTGGCGATGTGTCGACCAAAAGAGTATAT -CCACTATATGGCTAATAATTCAAATATGTTGTATTTTGGAAAGTGTTAGA -ACACAAGTGACTTGAGTGTTTTCGGATACAAGAGACACAGAGATGTCCCT -TGATTGTTCACAGAAAGCGATTTTTAAGGGTTTGACTACAATATTTGCGG -ATTTATGTTTCAACGAATAAATGTAAAAAACTCGAATATCATTTACTATA -TATAAAGCGCTTATTCCGTTTTTCCATAGTTTGTAGTCTATGTAGTCTTT -GTAGTTTGCGTAGTTTTAGCTTCTGGAGGGATAGTGAGTTGGGGTTAGTG -TAGGGATATAGTCGGCGTACTGTAGTGGTACAATGGTGGTACGGTAGGAG -TACTGTATGATTACGGTAGTCTCAGAAAAATTGGTTTTCAGCTCCAGAAG -TCGGGGACCGCGCCGGAGGTGCGGTCCACGGCTGGTATATACATATGTAT -ATGTATGTATATATGTATACATATATTCAATTAAATTTAATTTAAAAAAT -AAAAAAAACATTTCTCACAAATGCCGAAAACACCGAAAAATGGCGAACAT -TTTTAGGCATTCGCCGATATTTTGACCAACTATTTTTTTTTGGCGAACGG -CATTCGCCGTTTGCCGCACAGTCCTGCATGGCACCCCGACCGGTTTCGTG -ACAATAGTTTTGACCTGAACGCACTAGGAGTCAGGAAGTTATAGGGGTCA -TGGGTGCTTTAATGACCCCCTGTAAAAAGCACATATATTGACAACAAAAT -TTGCTCGCTGTTTTTTGTATTAATTTTTTGTCTCCCCTCGATGCGCATTT -CTAGTAATGATGCACATATTTATTTTTTTTCATGTACATATCTAACAAAA -TCATAAAACTGAAAATTGCGCTTTTGTTCAAGTTAGCAAGACAACCATTA -TAAAGCTTTCCAAATAGCAAATTAGCAAAATAAAGTGAGAAGCTAGAAGA -TAATGGGGAGTCCCTATAATCTTTCGGGCACACCTTCAGACTTTGTGACT -ATAATAGCCCAAACCCACAGTTTACTGAAAACTAGGGCTTCATTTGCTAT -ATGGTACCCCTAAACTCTTTCAGTAATCGAATCCCAAGAAACCTTCACAT -CTGTAACCTGGACAAAAAACACACAATTTCAAAAATATAGAATTCTTTAT -TCAAGAATCATCATCATCATTTTTTTCAATTTGTACAGACAAATGCCGAC -CATATTTTTTGTCAGGGGAATGGCAACGGCGGGAACCCAAGAAAATCAAA -CAAAAATATGGAGAGAAAAATGAGCCAGAGAGCCTGAGCAACCATGCATA -AATAATGAGGAGTTGGTGAGATGAAGAAAAAACAGATAAGTTACGACGCG -AGGAACTATTTGAAAAATAAACTGCTAAATACTATGTGCTTAATCCTCCC -AGGTAAGCGAGTGACGGTTCTCGTATCTCAGCTGGCAGTTTCTCTTTCCG -TACCAGTTGACGTAGGCGAACTCGGCGTCGGAGACGATGGCGTTGAAGCG -TCCTCCGAACTTGGCCGAGGCGTCTCCCTCGATCTTTCTGGCGGCCTCGA -GGTTGTCCTGGAAGGTATCAGTGATTGGATTTGATTTATAGTTCTTCTTT -TTTTTCTTTAATTTCTTGCTTGTAATTCTAAAGCAACTAGAAAAAAAAGT -TTCGGAACGCATCTATCATGCCAATTTACATAACCGGTATGGGTTTGCGC -GCGCGGGGGGCTTGCAACATTTTCTTAAATGACATTAAGGTATGAGAGGG -GGGGGGGGTGTTGTAAATAGGTATCCAGTTCTTGTCTGTCCCCGTTATCA -AGTTTCTCTGGTGACGCAACGCAAGAAGGCAGAAAACAAACCTTCTCGTT -CTTCAAAGCGGCCTCAACGATGGCGCGGAGCTCTGGATCGTCGCAGTTTC -CCTCGTCTCCTTCCTCATCGGCGTACTCGACAGCTTCGTTGGTCTCCTGG -AAATTTAGAAATTAGATTTTTCTCGAAATTTGGCCGAATATTAAAAAAGT -AATACTAAGAATTTCCCCACGAAAGGCTGAAAAATTGAGGTTTCCTGGGA -AAAGTGAAATCCCGGTCTCAAAATTTTTTTTGATTTTTGAGCTCCGTTGA -ATACCGACAACAAAAATGGCTCTGGAATTTGAAAATTACGGGGAACTGAA -ACGCAACTTCTACTGCTGCCAGTATGTCTCTCCCGCATTTTTCGGAGGCT -CAATCGTAGATCAAAGTTTTCCGAATAAGTTACTATTAGGTTTTTATCGA -GAATTGGTACTAGACTATGTTGACAAATACCAAATATCAAATATTTACCC -AGATGCAAGTTATGGTGCTTTGAACTAGAATTCCTGGGAACTGATTGTAA -GTGTCAAAACCTCAGCCAACCGACCTAAGCCTAAGCCTAAAAAGGTGTAT -CGAACTTAAATTTCGACATGGCATGGCATTCAAATGGGTATACCGATGAT -TTTGTTTCAGCAAAATTTTTAGGGTCGAATTTTTAAGGTAGAGCAAAATT -GGGATAATTTTAAAGACTATTAATTGTCCAAAAATCCAACAAATCCAACT -TCAAATGAGCTTAAACTTTAGATCACCTTCCCAAAAACCCACCTCAACAG -TATCAACTTGCTCGGTGGCGGTCTCGGTGGCGGTGGATGGCTGCTCCTCA -ACAATATCATCATAGGTGCTCTCCTCCTTGGCAGCGGCAACTGGAGCCTG -AGTCTCCTCGACAACTGGAGCTGGAGTCTCTTCAACGACAACTGGCGCCT -CGGTCTCCTCGATCACAACTGGAGCCTCGGTCTCAACGACGGCTGGGGCT -TCGGTCTCTGCAACGACGACTGGTGCTTCAGTCTCAGCGACGATTTCTGG -AACGATTTCCTCTTGGACAGTCTCGACTACGGTTGGCTCTGGTGCTTGCT -GTGGTTCTGGTGCTTGTTCTGGTTCTGGTGCTTGCTGTGGCTCGACAACA -GTCTCGACGACCTGCTCGACTGGTGTTGGGACTGGCCCCTGGGTGTATGT -GGCGACTGGTGCGACTTGCTCGACAACTGAAGTGTGGGTGAGGGTGAATG -TGTGGGTGGGAGTGGTGCGAATCTGACTAAAAACTGTAAAAACTAACCTT -GAACAGCCTGGTGCTCTGGTGGAGCTTGGTAGTTTCCTCCCTGAGAGACT -TGGGTCACCTGGATAGAGCTGACTGGTCCCGATTGGTATCCTCCTTGTTG -AACTTGCTCGACTGGGGCAGATGGTCCGGCGTTGTAGCCTCCTTGTGGGG -CGACTGGGGCTGGTTGGGAAGCTCCAGCGTATGAGGGTCCTCCTCCGATT -GGTCCTTGGGATCTAGCGTATGAGGATGCTCCGACAGCTTGGGAAGCTCC -AGCGTATGATGGTCCAGCTTGCGATCCAGCGTGCGAAGATGCTCCTCCTC -CGATTGGTCCTGGACCAGCTTGGTAGGCACCTCCACCGACTTGTCCTCCG -AATCCTTGTGGTCCCTGGGAGTACGAGGCTCCTCCGACTGGTCCAGGTCC -TCCGAATGGAGCGGCATATCCGGCTCCTCCACCGATTGGTGCCGGTGGTG -GTGGTGGTGGGGGTGGAAGGGCAGGCGCGGCGGCATAGCTTCCGCCTCCG -CCTCCGGTTGCGTAACTGTAAATGAACACATTGGGAATAGTATGGAAGAG -GTGGCTAAAGGGGGAAGCAGGTTTTAGTTTTGGCGGCCAGCAGCAGGAAA -AAGGACATTTTGCATGAATGGGGTGGCAAGTAGAATGGACTTTGTCGCTC -CTTAAGGAAGACATCAAAAGAACTTCAGAAAGAAAGAAATTATTTTTGGA -ATCAGGAAAAAGCATTTGAATAGCAGTAGAAAAAATATAACAATATAGTC -ACAAAAATACAAAAAAAAAGGCAAAATCTTACCTCGAGCTAGAGCATGGT -GGAGCTCCTCCTCCGCACGATGGCTGGGATGGTGGGCAACATCCACCGGC -GCTTCCGGCACCTCCGATACACGCTAACGCAGGCGACACGGCCAATAAGA -CGGCTACCAAGACTCTCATCGTTTTTGAGAAGGCAGAAATCGCAATGGAA -TGCTGAGTAACTGTCGTCGAATGGCAACGTAGGACGTGCCTTTTCTACCT -GCCACCCCAAACTAACTCCGCCCATGGCCGTCTGGAGGGGGCACGCGCGC -GCACGAAGCCTTCCGAAAGACGCCCGATCGCGTTTTATCGATGATGATGA -TGATGATGATGAGATGAAGCCTCTCTCTCTCCGTCGGAGGGCACCTTGCG -ACATTCACCTTGTGTGCGTGTGTGTGTTGCAGAATAGGGGGAAGAAGAAG -CGATCGCGTACAAATGGGGTTCGTGTTCATTTCCGAATGATCCAATGATC -AGCTGGAATATTCCTATTAATGTGACTCGTGCCACGTCATTGTTAATGAT -CTACTATGTTTGAGTGATTGGATATGTGTTGTTTCCTTTTCTAGTTAGAT -TCCTGAACAGTTCACCTTTACCTAATCCGTGATCGATGTTCCAATGCTTC -TTCCTTTCACTTCCACTGCGGCACCTAATCAGGCGGAATAACATGCTTTC -ACTCTGCCGGTAAAGTGTGAAAATCCTAAAGTTTTAGATTTCAAAGATTT -CAAAAACGATCGTTGATCCTACCGCGCTTCCGCATCAACTGATATCAGGT -TTTTTTTAATGATAAGATTGTGGAGGAATGAACTGGTGAACTTTTAGGCT -GATTTAGAGCCACGTGGAAACTTCCAGCTTTTACCTAGGTGACTACAAAC -TACGGAAGATCAAATTACATACATTTTGTAAAAACATACATCACTTTCAA -AAATTTCGGTTTAGTTCAAAAAATCACATTTTTACTGTTTTGAGATTTTT -TTTTTCCCAAAAATGTCGATGCAATTTTGATGTCGATGCACCACGGGCGA -TTTAAAGGAAATTATCAGTTTTCTGAATATTTTTGTTTTGTATGTCTTGA -TTATGGGTTTTGTAGGCTTCGATGGCAGGCAGGCGAGGTTTCGGGTCCTG -GCGCCCGTCTGAAACCTGCCCGCTTCACGCCGGCCTTTTGCCTCTTTTTT -GCATTTTTACGTGGTGCCAGGCTGTCCCATCGCAGTTTGATCTACAAAAA -ATACGGGAATTTTTCGCCCAAAAATATGTGACGTCAGCACGTCTTTAACC -ATACGAAATCAGTTGAGTCTCTTCTCCCGCATTTTTTAGTAGATCTGTGT -AGATCAAGCCGAAATGAAACACGCTGACACCACGTGTGTTTCTCATTGGA -AATTGGAGGCCTAGAAAATCAAAAGTTAGGCCATCAACAGATTTTTGTTT -CAGCAAAAGGCGCGGATTGAGGCGAGGTCGCTTTAAAGTCAGGCAGGCAG -GCGGTTAACGCCTACAGGAAAACTTTAGGTTTTAGGTTATCTGTATGTTT -CCCTTTTGTGTGTTTTTTAGACGTCCAAAGAATCGTATCAAAATGAATAG -GTATTTTCTCGTTTTATGCAGATAGGTAAAGGTCTGTAACCTGAAAATCC -AGAGCCTTATAATCCACACCTACATAATCATCAATTAAAATATTCAGATA -ACTGATAATTTCCTGAAAATAAGATATCTGTAAATTGAATCAACGCCAAT -TTTAGACATGGTGCATCAAATGCAACATTGTATTGATATATAAACTTTGG -CAGTCAATACATGTTTTCTTATGCATTGTTCTCAGTGCACCTTGATCAAT -TGAGTAGACTTCATCTATTCTTGTCCACTTCCTAAACATGAAATCAATCA -CGGCACCCCATCAAAAAGCACTAAAAAAGTACATTTAAAAGAGTACATTA -TTATTGCCCGTTCAATCCTCGTAATGTATCTTTGCAAGTTCCTTCTTCCT -CTGACATTTCCCGTTCCAATTCTCCGCCATACCTGATATGCTCGACTTTT -TCGATCATAGACGCGAATTGCGCAACGCGCGAAAATATCTTGCGCAATGA -ACAAGGAGAAGAAGAAGAAGAAGAAGTAGGAGAAGCCAAATAAAAGATAG -GTGATAACCGAGATGTTAAGCCAAAGAGAAGGAGTGTAATAGCTGAACAA -GGCCTATTTTTGTGTAACTCCCCCCTCTGACAGCTTCTTCACTTTCCCTC -CAACCGTTTTTACTCTGTATGGTAATTGTTGATGGATCGCCATGGAAAAG -CCCTAATGGTCATGAATAAGCTGTAAAGCAGCGGGGGTGAGCTTGAAGGA -CGATCGGACAAATGAGATATGAAGCGTGAAAAACGGAAAGCATGCTTAGA -GGGGGAGATATATGTAGATTTGGGGAAAAGCTACAAGGTCGATTTTTATC -CGGTGTCAGGATTATAGAGGTGTTTTGAAGTAGAAGCAAGGCACTGAAAT -TCACCACTTCCTCTATTAGAATTGCACATTTTTTAAAACTATGTACCTGT -TTTCTTAAGAATTGCTTGAAAAGTTGAATTTGAACTAGTAGTTCTTGCAA -AAAGGCCAATTGAACTATCTGGTTTAGTTGCGTCCTTATTAATATTGCAC -TTTTTAATTCCGGCAAAACGCCGGTTTACCGATTTGCCGGGGATTTTCAT -TTTTGGCAAATCGCCGATTTGCCGTTTGCCGAAAAAATTTTTAACAGACG -GAAAAACTTAAAACTGTGTCATTTTGAATTTATTACCGTTTTCTTTAGAT -ATTTTCATAGAATTTGCTAACTTTTGAAAATAGATGAAGGAACATTTATA -TTATTTGAAATTGAAATTCTGAAACTTCCAAAAAAATAAGTTGCAAAACC -ACAATTTGCCGAAATGCCGTTTTCCCGGCAAATTCGGCAAATCGGCAATT -CGCCGATTTGCCGAAAATTTCAATTCCGGCAATTTGCCGACAAAGCAATG -TTTCATAATACATAAAATGTTTCTAATTTTTAAGAATGATTTTTTTAATT -TTGACAAAGTTTTTTTATAAAAGAGCCGAATTATTTTAAATTCCCGCGCA -AATAAGTGACGCCATTTTTTACATTATTTGTATTTTCTGGCTAAATTAAT -TGGTTTATGTATGTTTTTTCTTTAGTTTATAACTTGAGTAAAATTCACAG -TAAAAATTAATTTTGAAAAATCGATTTTTAGTTTAATTTCAATTTCAGAG -TTTCGGCAAATGTATTCTCAATTAACAAGTTTTCCAAACGGAAAAAAATC -TGAAAATTGACAAACCACGGTGTAGATCAAGCCGAAATGAGACACCCTGA -CACCACGTGTGTTTCCCCTTGGAGGCCTAGAAAATCAAAAGTTGGGCCAC -CATCAGGTTTTTGTTCGACTCAATTGGTAAACTTTGCAGACTAGGCTGAA -ACGTGGTATTTGCAAAAATACAATTTTACACATTTATTTTCCACAAACCG -AATAAAATCCTTATCTCAACAGTGTTATATAATTTTTTTTTTCAGATCAC -TATCACGACATTTTAAAATATATTACAGCACTCTCTTCTTTAGGTTTTGA -ACGTTGATGCTTCGAGGATAAACATGAAAACCAGATCAGCTTTTCCGTGA -CCTCACATACTCATTTTCTCAAATTCTCAAAAATGTTCTGCCTTCTCCAA -CGGTCTCTAAAAAAGCTTGGAAAACCCACAAAAGGTGTCTTGGGACACTT -CTGTCTCTCTCTTTATCGATGACCGGATCGCCCGGATAAACGGGTTTTGC -GGACTGACACCAGCAGGTGGAAATGGGCACACTTGTAAAATAAAACGAAA -AATAATAATAAAAATAACACGGAATGCGGAGAGAAGTGGCAAGATCGGAA -GAATGGTGGGGGGGGGGGGGGGGGGGATTACATAAAGATGGCGGCATAAA -GTGCGTTTCATTAGGGGGATATTGGGGTTTTTATAGGGGGAAACTTTGAT -TTTTTTGAAAAAAAAATTAAGAAAGAAGCGACAACAACCAACAACAAGGT -CATTTTTAAAAGGAAAATTTGGCATGAAATTTACATTTTGGGATGAATTA -TGAGGATATACTCATATAACCTAATTTTGTCACAAAAAAAACGTCGAAAT -TTTTAAAAATGACTACATTCTGCAATTTTGAAAAATTTGGTGGTCCTACC -ACGAAAAATCCATGGTTTTTTGGTATTTTGACGAAAAACTGATTTTTTGT -GTTTTTTTTCTGGTATTTTGAAGCCGCTGTACTTCAAACCCTTTTCATAT -TCTAAAAATATCTTTTTGCAAAATTCGGTTTTTTCTAAAGTTCAAAATAA -ACCACTATTTTCAATTTTTAACGGAAAATCTGCAAATAAAATTTCGGAAA -ATTCCGGCAATTTGCCGATTTGCCATAAATTTCAAGTTCCGGCAACTTGC -CGATTTGCCGATTTGCCGTAAATTTCAAATTCCGGCAAATTTGCGAATTG -CCGTCCTACCATGAAAAATCCTTTTTTTTTCTGGTATTTTGAGACCGCCG -TACTTCAAACAATTTTCATATTTTACAAATATCTTTGAGCGAGCGGTTTT -TTTTGAATTTCAAAATAAACCAAAAGTCTACTTTTTTTGGTTTGTTTTTG -TAATTTTTTTTTTAGAAATTTCAATTTTTATCGGCAAATTGGCAATTTGC -CGGTTTGCCGGAAAATTTCAAATCTGGCGATTTGCTGCTTTGCCGATTTG -CAGGAAATACCTATCCCTGATGTAAATTACCAGAATTAGAAGTTTGGTAC -ACGATTGGCACACAATTTTTTGGTACAAAACACGCTAAAAATTAAATGTT -TTTGAAAAAAAAAATTCTTTTGAAATTGTTTTAGTGTGAATTTCCATGTA -TTCAATTTTTATCATTTTTAGCCTGTTGCTCCAAACTAGGTTTTCTCCCA -CGTGGCATCTCTCATTACACATAAAAATACCTGCTAACTCAAAACATTAA -TCAGAGATCCATATCCATGTCTTCCTCACTTTCCAACTTTTTCCCTCTTA -GCTTATCTAGATATATGTAGGTATATCTATATCTACAAACAACTTTCTCT -TTTCAAACATCCAGTTTATCTTCTGACCTTTGCAACATTTTTCCTTTATT -CCAAACTTCCGCCAGATTGCATCTTATTCAATTATTACATTCAAAGAGTG -TCTAAAGTTTTGCTTAGAAGAAACAAAAGGTAAAATGTCAGATATGTTTA -GAGAAGGTTGTAAAATTTGGCAATTTATTGTAAAAATTCGCAATTTTGAA -ACTCCTTTAAAATGGTTAATTTTGTAGTTAGAGGACTCAAAATTAATGCC -CGAGAACTAAAAAGTTGTCATTTTTCATTTATCAATGATTTTACTTAATT -TCAAAAAAAAAATTTTGCCCAAAAAAGGACAGTCATTAGAAAAAAAAACG -GAAAAATGATATGGAGTGATTCTTTTTTATTTTATAAAATTAATCAGCAT -AGTCAAATGTACCAGAAAAAAGCAAATAAAATGTACTAGATTGACCGGAA -GATTATTTGAAAAATTGCAGAAAATGCACCAAAAGCTGCTTTTTTCAAAA -ATTCAAAAGTACGGTAAAATCATACGGAGCTATTCTTTTTTATTTCATAA -AACTCTTCAGCATAGTCAATAATACCAGAATATGTCAATCAAAGTATAAT -AGCTTGTACGGAAGTATCTTTTTAAAAATTGATAAAAATATATAAAAGCT -GTTTTTTTCAAAAATTCAAAAGTATGGGAAAATCATAAGGAGTCATTCTT -TTTTATTTCATAAAACTCTTCAGCATAGTCAAAAATACCAAAATATGTCA -ATCAAAGTATAATAGCTTGTACGGAAGTATTTTTTTAAAAATTGATAAAA -ATATATAAAAGCTGTTTTTTTCAAAAATTCAAAAGTATGGGAAAATCATA -TGGAGTCATTCTTTTTTATTTCATAAAACTCTTCAGCATAGTCAAAAATA -CCAGAATATATCAATCAAAGTATAATAGCTTGTACGGAAGTATTTTTTTA -AAAATTGATAAAAATATATAAAAGCTGATTTTTTCAAAAATTCAAAAGTA -CGGGAAAATCATAAGGAGTCATTCTTTTTTATTTCATAAAACTCTTCAGC -ATAGTCAAAAATACCAGAATATGTCAATCAAAGTATTATAGCTTGTACGG -AAGTATTTTTTTAAAAATTGATAAAAACAAATAAAAGCTGATTTTTTCAA -AAATTCAAAAATTCAAAAGTATAGGAAAATCATATGGAGTCATTCTTTTT -CATTTTATAAAATTCTTTAGCATAGTCAAAAATACCAGAATATGCCAATC -AAAAGATAATAGCTTGTACGGAAGTATTTTTTTTTTAATTGATAAAATAT -ATAAAAGCTGATTTTTTCAAAAATTCAAAAGTACGGAAAACTATATGGAG -CGATTCTTTTTTCTGTTATAAAACTGTTCATCATTGCCACGTATACCTGA -AACTACCAGAAAAAGTATGCTAGCATGTACGGAAGATTATTTGAAAAATT -GCAGAAAATGCACCAAAAGCTACTTTTTTCAAAAATTCAAAAGTATGGAA -AAATCATATGGAGCGATTCTTTTTTCTTTTATAAAACTGTTCAGCATAGT -AAAATGTACCAGAAAATACCAAAAAAAAGTATGCTAGATGTTCGAAAAAT -TGTTTTTATAATTTTTGAGAGGAGTTTCAAAATTGTGAATATTTACAAAA -AATGGACATTCTTGCCACTTTTTACTAATTTTTGATGGGCTAAACCTAGA -TTTTCTAAATTTTACATTTATGAATTACCCGTTTTCGACGAATTCAGGCA -AATTTTTATTTTTTCCTATTTTTTTCAGCCATTTAATCAGCCATAATAAT -GAATGTCCTTTTTTTTTGGGCAAAAAAAAATTTTTTAAGGCTCGAAGACC -AATTTTAAGTTCTCTAGCTACAAAATGAACCATTTTAGAGGAGTTTCAAA -ATTGTGAATTTTTACAAAAATTGCCCAAATTTGCCACTTTGTAATGGTTT -TTGGTGGGTTAAACCTAGATTTTCTGTATTCTGCATATATGAATTACCCG -TTTTCAACAAATTTTGACAAATTTGTATTTTTTCCAAAATTTTTTTTCAG -CCATCTATTCCTTTTTTTTGTCTGTTTTTTTTTCGGGCAAAAAAACCTTT -CCCCACTGGTGCTATACCACCTTTAACGGTAAATTTTACTGGTCTAAAAA -TCGGCGAAAAAATGAAACTTCAAGTAATATAATGGTAATTGAGTTTTTTT -TTCTATTTTCTTTGTTCAAAATATCAATTATGACAAAAAACGAGAAAATT -ATATTGACACAGTTAAGCGGATATAAATAATAAAACATCACAAGCACATT -TAATTTTTCAAACCCCCTCAGGAGTCATGAAGAAATCCTTCTCTGCACAT -CTACCTTTCTCCACATCCAACTCCTGATTTATTTTCTCCGCAAACTCCGT -GTAACTTTTAATTGCAACATTCAAAAGTTTTGTATGATGCTTCAAGTGAC -CCAAGTCGATTACACAATCCCCGCAAAGAGCTTCGCTGCGAATTTTGTCA -ATTCCCTCTTCTAAATTCACTTGTTCTCCAAACTTCACTGATTTCCTTAG -GATCCCAGTGCTCAGGCAACAGTTTGTGCAAATTCTCAAGGTTTTTGATT -TCAGTTGGCAAGCGGTGCAGATAGGGCTCTGGAATTTTAAATTATTGATT -TTTTTAAAAATTATTAACTCACCTCGTCGCTTTCATGTGCTCTTCTTGGA -TTATGGTCATATGGAACTAAGAATCTCGAAAGTTGTATTAAATCCCACAA -AGATCGATTCACATTTTTCCTTTCAAACGCATTTTCTCGTTTACAGTGTG -GACATCTCTTGTTCAGTAGTTGGAGTCGGCATCTGTCGCAGATAGTGTGA -CCGCAAGTGCCTATACAAGGGATTTGGGTATCATGATCTGGAAAATTTGG -TGTGTAGGGCTTCCATGGTAGGCAGGCGCGGGGCCTGGCCCGCCTCACAC -CGGTGAATTTACAAATTTTTGATTTTCTCGTTTTTGTCATTTTGATGAAA -AACATTGAGGCAGGCGGAGGTCGCCTCAAGTTCACTCGGCGTTTGCCGCC -AGCTTCCTACCCAAAGCTTTGCAACTTCTTACCCAAGCCTTGCCCAAAAA -ATAAAAAGCTTAAATATCAAAATTACTCAATTTTGTGTCATTCTACTAAT -TTTCTGAGAAAATTTGAATTCCCGCCAAAAATTTTATTGGAAAATTTGAA -CTACTGGCCAAAATTTTTTTTGGCTGCGCCAAAGATGATCTTAGAAATTT -GAATTCTCGCCAAAATTTTTCCCAGAAATTTGAACTTCTTGCCAAAAATT -TTTGTTGGATAATTTGAATTTCCGGCAAAAATTATCTTATAGTGAGGACA -CAATCAATAGTTTTGGTCAAAATTGTATTGTCAAATTTTTGATGTGTGTT -GGCAATTTTGGCAAATTTGCCGAGCTCGGCAAATTCGGCAAATTTGCCGA -GCTCGGCAAATTCGGCAAATCTACTTTTTGAAATTCGCCAAATTTGGCAA -ACGGCAGAAAAAAGTACAATTGAGATTTGAGGTACACAAGACTTACATCG -AAATTAATCTAATTAAAAGAATATCACTTACCATATTCATCATAGCATAT -ACTGCATTCAGTAACCTTCATCGCAAAAATAGTCTAGACACTGACCAAAC -ACTACACACTTGATGCTATTTATATACTTTCTATGCTGAGCAATACAGAA -CATGCGATGTGAGGAATCTTAGGTAGCAGAAGTACAAAAAGATTGACATG -TGATTAAATTCCTAATTTGTTCCTTATCACATTTCCCATATGTCAATTAA -TTCGTAGATAGATGCTATTGATAAAAGTTTTTCGAGAATTTGTAAGATAT -GAAAATAATATTCCTCATTTTTAATTTAATGATACAGTACTTTGAAAATT -TCAACAATTTCAACAATTTTTAACACCTATGTTATCATTCATATACAACA -ATTTGTTTAATACAGTAATACATTTCCACCCACGTGGTATTAATACAGTG -TTAAGCTTGTTATTTTTTAAGGAAAAATTTAGAAAATTTTTCTTCCTCAT -TTTGCTTACTTTTCAAAAAAGCGTGCAACTCCCTCATTTAAAAAAGAAGT -GTCGTCGCTGAGGAAAATGTTAAAAATTTCTCTCATGGTGCTAAAATTAC -TAACTAAAAACAGTAAGTATCGTAGCGAAACATTTCAAAAATTTTCAAAA -TTTTTTATTTATAGTCAACAGTTTTGGAAGTCAATTAAAAACATTTTTTA -CTATTTTTAATATTTAAAAACGTTTCAGTTGCTTGTAACTTTATAAGTTT -GCCTACCGTACATTTACCGTAAAACAACCTTAAAAATGTAAGCTTTTCTC -CCGATAAAAATCTTTACTCAGGAGTTCGCGACTCTTCTCTTACATTAATT -TTTTCTCTAATATATTGAGCTCAAACCTAGCTGTAAAATTGAACATACAT -ATAACTTTGAGTGCAATTTAAATTTCAGAAAACTTTCACAAACCCAAAAA -TTGAGAATGCTCAGGACAGTTTGACCTTTCAAGAAAATTGCTTCGAGAAA -ATTCCAAGCTTCACAAAATTGCTCATTGCCAAGTTATTTCCTTTAGTTTG -TGGCCAACGCCTTAAAAAATACAAATTAAAAAAAAAACTCTGACACCACG -TGATGATGCAATCAGACTCACGAACTCACGGGGTTCTGCCCTTCCTCATT -GAATTTTTCGCGCTCCATTGACAATCACCCGCCGTACAACACGTGGGAAA -GTCGTGCACTCCACAAGGACAAATACATTTAGTTTTACAACTAAAATCGA -GCCGCGACGCAACACGCAACGCGCCGTAAATCTACCCCAGATATGGCCAA -GCCGAAATGGCCTAGTTCGACAAACTCTTCCATTTCAATTTATGAGGGAA -GCCAGAAATCCGTGCGAACTGCGAGCCTAACGCTCTTTTTCAAAATATCG -TATAACTCGGAAAACAAGCCATATTCCCAGTTCCTGTTTTATTTCGAAAA -ACAGATAATACAAAAGAAATATCTGAAAATTAAGAATAACATGTTTTTAT -TAAATACTTCTTTGTCTATATTCCATATAAAAAGAACCCCATGCGAATGA -AACACTCACTATACATTCAAAATGAATTTCGCCATCTACCTTCTCGCTTT -CATCGCCTGTCTCGCTAACTTTGGATTTTCACAGGGTAATCCAGGACTCT -CATTTGATCCAGAAGAAGATTCAGTAAATATTGTAAGTTTTCGGATTAAT -GGTTACAACATCTATAAGATTGTTTAGAATGGCAAAGTGCCAGTGGGAGC -AGTGAAGACGTTGGTTAATGATCTTGTGAGCCCTACTATTGCAATTGTGG -AGAAAACATTATCCTCATTGTCAGTTTAAGGAGCTACGGGAGGGCTCCAT -CCATCTCAAATGTTTCAAATAACTCATATTGTTCTTTTATCTGGGAGTAA -ATAAATTACATATTGGGAATCCTTTTCTTTTTGTTGTTAACCAAGTTGCC -GGTTGCCAAATTTTTTTGGGTTCGGCAACTTCGGCAACTGCCGGTATCAA -TGTCAAACATTTTGAAGCTTAGAAAAAAGCATTCAGAGAGCCTGAAAAAT -TCTATAATTTCACTTTAAACGAAAAAAATACCATACTTTTTTACCAAAAC -GCTCAAAAATATAATTTCAACAAAAAAACATTGAAACCTGGTTGCCGAAT -TTTTTTGGGTTCGGCAATTGCCGGTTGCCGTTAACCTCGGTTGCCGCACA -GCCCTGATGTGGAACTCTGCAGGCCTAGCGGCATCCATGTGAAGGAAGCG -TATTGTATTTATTTTTAAACATAAATTAAAAAATCGATAAAACCTTCATA -TATATAAATTGTTTAGACCGGTGAATAAAATGAGACGATGCCACGCGAGT -TGGCGAACGCTTTTCTCCGAAGATCCAAGTCAGGACGTCGTCGATGGGCG -GGACCCGGTGGGCGGAGCTTAGTCGGATAGCGCAGCAGACAAAATACGGG -CGGTGCGTCGAGATCAAGTGCGTACTCCTCGACGGAAAGGGAGCTTGACG -CGTGGATTGCGTTCTCGTCGGATGAGGAAAGATCTTCTGAGGAGGCGACC -GGAGCCAGTGGTGGGAGCTCTTGTAAAAGGCGTTCTCTGAAACAAATAGT -GGTGTTAAGGGGAAATGCGATGGGAAATCCGAGTAGTTGATGTCCGCGGA -ATTAATTTTCTCGGGGTTTCATGGAAATTTAATTCCGCGGATTTCAACTT -GCCGAGTTTTTATTCGATTTTATGAAAAAAATTACACGAGAAATTGTTTT -TTTTAATTAAAGTATCCGAAATCCCCGGAAACAGATTTCCATAGAGAGAG -GTCACTAGAGGTTTCATGGAAATATGTATTCAAGGTCTTAAACTACCCAA -TTTTTTTACCTCGATTTTAACAAATTTCAAGTAAATTTGAATAATTCTAA -CCAGTTTTGTTGTTTTACACAAAAATTCGGGTTCTTTAATCCGCGGAAGT -AGCTTTCCAGAGGTTTCATGGAAATATGTTTCCGGAGATTTCAACTACCC -GAGTTTTTTATCTCGATTTCACACATAATCGGCATAAGAAACTACAATTA -TTTGTTTTCGGGGAAACTTTAAAAAACCCCAGAAAGTTGAATTTCTAGAA -ATTAGCTTTCCCGAGGTTTCATGGAAATTTGTTTTCGCGGATTTCAACTA -CCCGAGTGTTTTACATCAATTTCATCATAATTGACATAAGAAACTACAAT -TATTTGTTTTGGGCGAAAGCTAAAAAATCCCCGGAAATCTGGATTTCTAG -AAACTAGCTTTCCCGAGGTTCATGGAAATTTGTTTCCGCGGATTTCAACT -ACCCGAAATTTTAATTCAATCTTTAAAAAACATCCAGTTTTTGTGACATG -TTCTTCAGTTAAAAAAAATCAGAGTGTTGGAATCCTAAATTTCTAAATTT -TCATAGTTTCCGCGGATCGAATTTCTAGAAATTACCTTTCCCGAGGTTTC -ATGGAAATTAGTTTCCGCGGATTTCAACTTCCTGAAGTCTTCATTGGATT -TCAATATAATTCGCACAATAAAAAAAGCCAAAACGCGAGGATCCCTGGTA -GTTGAAATCCGCAAGAATAGTTTTCTCTAGTTTGAAAAATTTACTGAAAC -CCTTACTTTTGCTTTCCCAAGAATTCGAGTTGTTCCTCGAACAATTGCTT -TGCAGTCCCAATATTCGGCGAAAATTTCGATGGTTCACTATTCCGACGGT -GCTCTTCAATTTTTCGCAAGTTTGCTGATACCTGAAAAATCGATATTTCA -GACTATCTGTGCCAAAAACTAATTTATTAATTTACCTTCTGACTAGCATC -CTCCAGCTCAACAATGTTATGAATGGTGGCTTTATACTGTTTCAGCTTCT -CCTCAATTAAAGTCTGAACACAACCCGTTTGCCGTGCCACGTCATTCAAC -TGCTCCTGAGCATGAGCACTATCTTGTCGGCGGAGCACACATGGCCCGAA -GATCAGAGCCAAGTTGTTGCAGCCCATTTTGTTGACGGCTTCCTGGTCGG -CGACACGTGCCAAATGATACATTAGGCGATCGAGCACGGCGCGGTTCGGT -TTTGGGAGAAGCTCGATCATTACGGAAAGACAACGGACACGTTCACCCAT -ATCCTCCACTTCTGTAATTTTTTTTTTTGGACGAAAAAAAACAACAAAAA -ATATCATTTTGACAAAATGTTAACTTTCAGAAAATTTGAAAATTGATTTA -TTTTTTTTGTTTCAATTTTTAGGTTTATGAATGAATCCGATTTTTTTTTG -TCGAAATTTTTAATAAGAGCCCTAGTAGGCATGTGGTGTGTGTGTGTCTC -ACTTCGGCTTGATCTACGTAGATCTACAAAAAAATGCGGGAGAAGAGACT -CAGAGTTCTTAATGGATTTCGCATGGTTAACAATATGCTGACGTCACTTT -TCTGGGGAAACAATTTCCGCAATTTTTTGTAGATCAAACCGTATTGAGAC -AGCATCTCTGCCTGGCTGCGGACGCCTCGTTTTTCCCTTGGAATTTTTTT -GGCGCGAAATTCAACTTTTCAAGTAAGTGCGAATATTTTCAAGTGAGACT -GTTCAAAATTATTTTGCTGCCAAATTTGAGTTTGCAAATAAATTATTGAG -CAAAATTCAAATGTTCAAATATTTTCTTTCGAAACGTAATGAAAAAACTC -AAAGTTACAAATAATTTGGCGCGAAATTTGAGTTTTCAAATATTTCTAGT -GCAAAATTTGAATTTTTCGAATAATTCTGGTCCAGAATTCAAAAATTAAA -AAAAAATTAGTTTGAAGCGATGCTCAGGTTTTCATAGAGCTTCCATGTAG -GCGTTAAAACGCCTGCCTGCCTGCCTTATGCCGCGCCTAATGCTTGAATA -TACGTAAACTTTTTTTCATTTCTTAATTTGATTTTCAACAAGTTGATAGA -ATTGAGAAAATTATAAATTTGTAAATTTACTTAAAAATGCAAAAAAATAG -GCAGGGTTCAGGCAGGTGCCAGGCCCTGAAACAGCGCCTGCCTACCATGA -AAGCCTATCGTAAAAAATCCAAATTTAATTTTTAATTTTACTAAAATTTC -GATGGCTCGTTTTTTTTCAAACATCACAAACCTGAAACATTCAAAAAATT -TTCATAGAGATCAAAAATGATAATTGGTTCGGCGAGTTCTCGGAAGAACG -CCTTGACAAGTGTAGTTAGCACATGAACTCCAATATCCTCAAGATTCACA -GAATCCGCATCTGAAACTCCGAATTTGATTTTTTTTTTTTCAATTTTTCT -GCAGTTCAACAATTACCTGCAGTCGATTCAATCACTTTTCTGATACTTCG -AACTTGGGGTAGAGATCCACTTTTTCTGAAATTACGGGCGCAAAAATTTC -AATTTCAAAGACCTTCAGGTATTTCCGTACCTATAAACTCCTTCCACAAA -CAGGGCACGTGTCTCAATTGCAAAAAAGAGTCGGTCCAAGAGTGTTGGCA -CAGTATGATCATCATCGACAATTGATACTAAAGAGGCGCCAAAGAATCTT -CCACCATTTGTCTGAAATTCAATATTTATAATAGCATTATAATAGCATAT -TTGGCTGTAGTTTGTAGCAGGGGTCAGGCAAATTGCCGATGTTGCAAATT -TCCGGCAAATCGGTAAACCGGCAAACTGCCGGTTTGCCGAATTTGCCTAA -AAATTTTTGGCAACTTTTTTTTGGAATTTTCAGAATTTCCATTTTAATCG -GCAAAATTTTACGCATCGTATGAATTTTCTTACATTTATTTTGAAAAGTA -AGCAAATTCTATGAAAACATCTGAAGTAAACGAGAAAAAAAAATTCAAAA -AGGCACAGTTTTAAGTGTTTCCGTCTTATAAAAAATCCCTCTAAACATTT -CCGGCAAATCTGATATCCGGCAAATTGCCGGAATTGAAAATTTCCGGCAA -ATTTTGATTCTGAATTTTTCAAAAAAACTGTTGGCAAAATACAAATTTTA -TTTTATTTTCAAATATGTTTTTTTTTTCAGAAAAGTAAATTTTTTGCCGG -GAATCAAATAATTCTTGAAAATGTTTCAAGATTTTTTTGCCACGAAATCA -GACGTTTTCAGAACAGTTTTAGCGGAAAGTTAAAAAAAAATTTCAAAATT -TTTGGCAGGAAGTAAATATTTTTCAGAACATTTATCCGAACAGTTTTGGC -TGTAAATTCAAATGTTTAGTTTTCAACAACTCTTAGCGGAGAATCCAATA -TTTTTCAGAATTTTGGAAATTAAAAATTTATCGAAAATTAATTGCAATTT -CTAAGAAAGCAGTTGTAATTTTTTTTTTCAAAAAGCTACCGAAAAAATCT -GGCAAATTTGGCAAATTTGCCGAGCTGAGCAAACCCGGAAAAACGCAATC -ATTTTCTATACTTTTTGGATCATCAAAATTACTGAATTCCTACAATTAGT -ACACGTCAGATTTTTCTATAAGCTCCGTTTGGTCTACTTGTATAAAGCTC -GAAATATCTCAATGTTATGTTATTTTACTAGATTTTTTTGGAACAAAATC -AATAATTTCGGTTAAATTATATTGTTCATTTTGTGGTGTGTGCGTGAAAT -TTCAAAATTTGCCGAGCTCGGCAAATTCGGCAAATTGCCGCACACCCCTG -TATTACTCACCTTCGGATCAATCGCCTTTCCAGTCATCTGACACGGATGT -GTGACCTTCGGCTGACACTTTTTATGACACGATATCCGGCACGCAACACA -AGTGTACAGCTTCTCATGGTGCCATATTAACTGATTACACACTTCACAAT -AAGTCGGCACATGGACTGCTTCGGCACGGAATCGGTGACCAGCATGTACC -TGGAATATTGGAATTGCGTGGGCAGGGGAAACTAGTTTCATTGAAAATTT -TTTTTTAACTGCTGAAATTAGTCCAAAATGACATGTTATATGTACTTTTC -TCAAAATGTGTGAAAATTGCACACTGAATTAATAAATAATATTATTTTTG -TAAAAACATAAAAAGGGGAAAAGTCAGCGGTAAAAAAGTAAAAACACTCA -GAGTTAGATCTTTTGACCTCCAAAATCCATGAAAATTTGCTTCATTTTTT -TCATAGCTGTGACGTCGTGGGCGGCAATTTCCGTTCGGTAAATTTATTTT -CGGCAAATACGGCAAATTGCCGATTTGCAGTTTGCCGGATATCAATTTGC -CGGAAGTTTTAAAAGGGATTTTTTAAAAATTCCAAAACACTTAAAACTAT -ACTTTTTTGAAATGTATTTTTACTATTTTCTCTAGATATTTTCATAGAAT -TTACTTACTGTTCAAGCCCACAGCTTGCCGAAAATTTCCGGCAAACTGTC -GGTTTGCCAAAATTGCCGAAAATTTAAGAAACGGCAATTTGTCGGTTTTG -CCGTTTTCTAAAAAAATTTAAATTTCGGCAATTACTGTATTTGCCGTTTG -CCGAAAAACTAAATTTGCCGCCCATCGTCACACAATACAAAAAAATTGCG -CGGCTTCTGGAGATCAAATCTGACAGCTTACTGTATTTATAACTACAAAT -TCACGCTGTGTTTTTCTCTAATTCACGTGGTGTCAGGGTGTCTCACTTCG -GCTTGATCTACGTATATCTACAAAAAATGCGGGTGAAGAGACGCAAGAAT -GTGCTAACGTCACTTTTTTTTTGAAAAAAAAAAAATTCCCGCATTTTTTG -TAGATCAAACCGAACCGTAATGGGACATCCTGGCGCCACGTGCTAATAGT -AAGTCACTACATTCTTACCGCCGCTACATCTGATTTTACACGCTTCTTTC -CAACTTTCTGAATACCAATATTTTACACAATTTTCTCGGATTTTGATATA -TAATACTTTCGCGGGCTTCTGGCTTCCCTCATATTTTCAAATGTAAGAGT -TTACCGAATTAGGTCATTTGGGCTAGGCTACGGCGCGTTGCGGCTCGGTT -TTCATTGCAAAACTAAATGTATCTGTCCGATTGTCATTGGAGCGCGAAAG -GAAAGCTAGAAGCCCATGTATTAAAAAATCGACTTACCTTTATCATTGAT -GACTTCTCCTTCCCGCGCTTCTTTTTCGATTGCACATGAACGTATTCGTT -CAGGAAACCTCTGGAATTGAAAAAAATTGTTTTGTTACAAACGCGCCCTA -ATAACAATTGATCGTGTATTCCACGTTGGAAATTATACAAAATACAATGG -AGCACTTTTGCTCGAAGCCTAACATTTTCTAAATGTTTTCTCACCTAAAA -GCGTTAACGCCAAGTGTTGTCGGAAAGGACACACTCTCCTCGAGACAGAC -TTTCGTTAAAAGTCCCTCGAACATTGTGATGACGTCACGGTATTTAAGCA -CGGATTGCTCGACCTGAAATGATATGTTGCTAATTACACTTGCGTGGCCG -TGAACCCCAAAAACTAGGCCACCTTTTGCGCCCAATTACCGATAAAACCG -CCTCATATCCCAACAGCTCCATATGGAAAGCTCTTAGCGACTTTTTGAAG -ACCGCATCCACTACAGTATCCCTTTTGGCATTACTCTCGTTTAGATGACG -TGTCTTGTTGAAAATAAAAATACTGAATTGTCGGAGATCGTCGGTGGATT -CTACAAGCATGTTTCCAGGGTCGATCTGTAAGTATTGTTTAAGTACAAAG -TACTACTGCTTCAGTAAGCATTGTAGTTTATAGTTTGTGGTTTGTGTTTT -GTAGTTTGTGGAGTTTTTAGTATGTAGTGTGAAGCTTGATATTCATTTTG -CAGTACATTGACTTGGATTGGGGTGTGCTAAGATATAATATCAAAGTACA -AACAACGAGTGACAAATTAAACATCTCAATCCGAAAACTACAAACTAAAC -CCTACAGACTACAAACTACAAACTATATCCTACAGACTACAAACTACAAA -CTACAAATCACAAACTACAACCACGCAAAAGAACGTTACCTACCTGTTGC -TTGGTTTTTGTTAAACTGAACGTGCCGGTCGATGGAATTGGTGAGGAGGA -TTGCCGCTGCTTGTGGGGCCTGGAGTTTCAATTTTTTTTTGTTTCAATTA -AGATTTTCCTCAAATGTTCCTTACATCAAATCCCATGGCCGTTTCGGTGA -ATGCAGCCGAGTTGGTGATCGAACTGGTGACGTGGGATTGCACGGGATGG -AGGAGGCGAAGACGAAGCATTCCTTGTGCAGGCACATTTTGCATCCTGGA -AGAGTTCAAATTACGGCTTCTAGGTCATGGTGGCCGTGGCCGAGGCTTGA -AGGGATGCTAGGTCAAGTCTGACGTCACATGTGGTTTTTCTAGGACACGT -TACAAAGATTTCGAAGCGCCCAATTTTCGGAGAGGTTTCTAGGCCATGAA -AATGTTCTAAATTTCAGGTTTCTAGGCCAGTAGAGAATTTTGAGGTTTCT -AGGCCAGTAGAGAATTTTAGGCCATATCTGACGTCACACTTTTTGGGACG -CGCCTAATAACGATGGTGGACCTCTATTCTAGGAGGAGCAACACATTTTT -TACGAATTTCTAGAAGATGCAACTTCTGCTACTAGGCCACTCATGTGGTG -CGAGGCTGTCCCATTACGGTTTGATCTACAAAAATGCGGGAACTTTTTGC -CCAAAAAAATGTGACGCCGGCACGTTCTTAAACTTGCAAAATCAGTTGAA -AACTCTGCGTCTCTTCTCCCGCATTTTTTGTAGATACGTAGATCAAACCA -AAATGGGACCACACACACACACAAAACCCACTCTGACACTTGTGCGCCTG -TGAGATGAAGTTCGTCAGGTGCCGATTGCAAAGAGCACATATCTCCTGCC -GATGAAGTCGTGACATCTTGAATTGATGGTCTTTTGCGACGAACACGTCC -GGCGTCAGTTCACTGGCAAAACTTGGTCCCGGAGACGGTTCATCCTCGTC -CTCGTTCCTGCCAAAAAGTGCCTTCAAATTCTTTTTTGCCTTCTGGAATC -CCAACTTTCCAGCGCCTCCTTTCTTTTTGGAATGTGTTGGGCTTAGCTGA -AAATTCAAAAGTTTTTAATATTATAAGTAGAACCCTTACCGTGAACGAGT -CATCACATCTTGACATTGAGAAATTGTTGGATTCGGTACTATTAGCCCTC -CGTAACATTTTTAATTTGGTGGTTGAAGCCGTAGGGGCCAGAGATTGCCG -TCTATGATGGGATAGATCAGCTCCTTCAATGAGCTTCAACTTTGTGTCTT -CCAGGATAAATGTGGCGTCCACGTCGACGGCGTCATCGCTGAAAAAAGGT -TTGCGTGTTACGGTAAGCGAGAATTATGGCAGAGGTGGGCGGAAATTGCC -GTTCGGGAAATTTTTTGTCGAAAAATTGCCGGTTTGCCGAAAATTTGAAT -TCCGACACTTTGTCGGTTTGCCAGAAATTTTCAATTCCGGCAATCTGCCG -ATTTGCCGGAAAATTTCAATTTCAGCAAGTTGTCGATTTACCGGAAATTT -AAATTCCGACAATTTGCCAATTTGCCGGAAATTTCAATTCAGGCCATTTG -CCGATTTGTCGGAAATTTCAATTCCGGCAATTTGCCGATTTTCCGGAAAT -TTCATATCCGGCAATTTGCCGATTTGCTTGGAAAATATCAATTCCGGCAA -TTTGCGAATTTTCCAGAAAATTTCAATTCCGGCAATTTGCAGATTTGCCT -GGAAATTTTCAATTCCGGCAATTTGCCGATTTACCGAAAATTTCAATTCG -GCAATTTGTGAATTTTCCAGAAAATTTCAATTCCGGCAATTTGCCGATTT -GCCTGGAAAATTTCAATTCCGGCAATTTACCGATTTACCGAAAATTTCAA -TTCGGCAATTTGCGAATTTTCCAGAAAATTTCAATTCCGGCAATTTGCAG -ATTTGCCTGGAAATTTTCAATTCCGGCAATTTGCCGATTTACCGAAAATT -TCAATTCGGCAATTTGTGAATTTTCCAGAAAATTTCAATTCCGGCAATTT -GCCGATTTGCCTGGAAAATTTCAATTCCGGCAATTTGCCGATTTACCGGA -AATCTCAATCCGGCAATTTGCGAATTTTCCAGAAAATTTCAATTCCGGCA -ATTTGCCGATTTACAGGAAATTTCAATTAAGGCAATTTGCCGCTTTACCG -GAAATTTCAATCCGGCAATTTGTGAATTTTCCAGAAAATTTCAATTCCGG -CAATTTGCCGATTTGCCTGGAAAATTTCAATTCCGGCAATTTGCCGATTT -GCCTGGAAAATTTAAATTCCGGCAATTTGCCGATTTGCCGAAAAATTGCA -ATTCTGGTACATTGCCGATTTCCCAGAAAATTTCAATTCCGGCAATTTGC -CGCTTTACCGGAAATTTAAATTCCAACAATTCTGGCACATTGCCGATTTG -CCAGAAAATTTCAATTCTGGCAATTTGCCGCTTTACCGGAAATTTAAATT -CCGGCCATTTGCCGATTTGCCAGAAAATTTCAATTCTGGCAATTTGCCGC -TTTACCGGAAATTTAAATTTCGGCAATTTGCCGATTTGCCGAAAATTTAA -ATTCCTAAGAAACAGTGGCCGAGATCAGTTTTGACGTCACTTCTCTTCCA -GAAAATGCACTAAAGTGATGTGACGTCATGACTGAGTTTCTAGGCCACGT -TTCGTTTGATAAAATTGGCGGAGGACCTAATTTCCAATGGAAAATAAATT -CAATTTTTTTAAATTTCATAATTTTCTGAAAAACTCACTCCTGAAAAGCA -TCACTCTCTTCCGAAATATCATCATCAAGCCCATCCTGCGTAGACTTATC -ACTATCCGAATCATCATCCGAAAGAGCAAAAGCCGCCAGAGAGCTCGGAT -CACTCAAGTCGAACTTTGTAAGATTCACAGCATGAACCTTCCGAACTCTA -AACGGTGACTTCTTAACGTTCAAGGCTCCATTGCCCTTTGGAATCTCGCC -GACTCGCTTGCGAACCGATGCTCCGCGATACGCAGACTGCAGAGCTATCA -CCGATTCTCTTATCGATAAATATTTCTGTCGTTGCTTGTACTTCTTCCAA -TTACACTGTATCGTTTGAGCTGCTAAGGCTTTTTTCCGAACTTCGGCTCT -TGCAAATGATCCTCGAATCAATGCTTGGATCTTGATAATACCCTCTTTCA -TTCTCAAATATCGCTTTCTAGCCAACATTGTCCTGAACCATCGTTGAAGT -GTATCGATTGATTGCATAATTGTCCGATGCAAATGATCATCGAGTATCAA -CTTTTCAGCGTCTCTCATAAAAATCTTATTGGTTCCATATTGAATATTAT -CATTATCAATCGATGCATGGGAATGTATGTACTCTTTCACATCGTCCACA -GTACTATCCCTTCCGTTTCGCAAAAGAATTCGGTATTGCTGGACAAAGCT -TGGATACTCAATTCTCACAGAGTACCCGGCTCTCCGAATTCGAACGGTCT -CGAGCATTCCGGTGTAGCGGAGCTGGCGGAGGATTATGTTGTCGTCGAAG -TGGTTGGCGATCTATAAAATTTTAGGTGAGTGGTTTTTGTCAATAATTTC -TACTTATATTCAGTCATATAAATAAAAACACATATAAGAAAAGTACCAAA -AATTTCGATCACCTAATTTTTTTAATTTTTTCTATACTCTTACTAGTATG -AAAGAGCAGGATACAAAAATAACTCCACAAGTGATAAACCACCTTTAATT -GGATTAGTGTGTATCACTTTGAGTAAGCTAATATTGAAGGTTTAAATGTG -GACTACCTAGCCTAGCAAGAGAGGTCCTGTAAGTAGACTTCAAAAATATA -GATTATCTTATGAACATATGAACTTATAAACAAACGTTGGTCAAAAAGTA -GGTGTTCAAAGATTCCACCAAAGTTTACAAACTCACCTTATCATTATTAC -TCTTAATACACCTTATAAAATACGGCGTCGCGTTGGCCAGTGTGCTCATC -AACCTCGTCAACGAGTACTCGAACTGCTTTGAAACCGACGATGGCTTCTT -GGCAAGCCTCCGTCCTCCGATAGCCTCCTTCAGAATTTGCAGCGATTTCA -GCAAGCTCATTTTGTCGTCAGACTTTCCCGCCGGGGTACGCCGTGCTTGA -TTTCTAATCGTGTTGAACATGCTGGTATCACAAAAGTCTGGAACTTCACA -GCGAAGTTCGCCACGTAGAAATGCGGAGAGAGCAGAGTCCGAGCCACGAC -GGGGAGACGTTACGATGGAGTCCATTACTCGGAGATGGCCGGCGGATTCT -GGAAATGTTGAATAATTATATTAAGGGCAGGATAGCTCAGTCGGTAGTGG -TGGCCGCTAGCAATCTGGAGGTCACGAGTTCAAGTCCGCCTTCAACCCCT -AGGTTCACCAAGCCTCTATTGGAAAATGGAGCAATCCACGACTGGATTAT -AAGCCACAGCCTTCGGCTAGGACGTGGCTTAAATTGTAGCCCAGTGGGAG -CACCACCAGGTAGTGTACCTGACTCCCAGATCCGCAGATACACTCAAAAT -AAAAAAACTGCGTGGCGTGTACTGCAGAAAACCTAATATTTAGGCCCCGC -CTTTTTCTCGTCCACTCACGGAGAAAAGGCAACAATTTTGAACCCAACCA -ATATCAGGCCGCCGACATCTCACGGGTTCCGCGCGCCGCTGCGTTTAACT -CGCTGTGGGCGTGGCGAGCTGTCTCCGCTTGCTGCGAGTTAAACATTGCG -GCGCGCGGAACCCGTGAGATGTCGGCGGCCTGATATTGGTTGTGGTCAAA -ATTTTTTGCCTTTTTTCCGTGAGTGGACGAGAAAAAGGCGGTGCCTAAAT -ATTAGGTTTTCTGCAGTACACGCCACGCAGTTTTATTATTTTGAGTGTAC -TTGAAGAACGGATCGTCCTTTAATCCTTTAATTATACATTGCATTTTTTT -TCCACTTCTACGACTTCGAAGGGGCGCATTTACGCGCGATGGTCCCGCCA -CCCACCCCAAAAATCAATGGGTGGCGCGTGCCGAGACCATCGCTCGTAAA -TGCGCCCTCCTTTAAAGTCGTAGAAGTGGAAAAAATGCACTGTAGAAATG -AAGAATACCATACTTTTTGTGTTAATTTTTTCTATAATATCGTAGTTGTC -CATTTATTTAAATCTTCCCACTTATTTAACTAAGGACTTCTAACGCTTAT -TCCAGTTATTGGTTCCGATTAAATCTACGAAAACTTGCCACTTTTCTGCA -GTTTCCTTGTCGATTGCTTGAACGCGTTCATCGCCCGAAACACACTTCTC -AGCACATTCCACCTGTGCACCGCCACCGGATCGATTCCCAGCAGGGTCTT -CATCACTGAGCTCGTACTGGACTTCAGAGCGTTCAACACATCCTGTCTCA -TTAGGTCCTTATTCTTTTCTCGGAAACCCTGAAATTTAGTTTTGACGTGA -TGATGGAAGACGTTTTTTTTGGAAGTTGTGTGTTTACCGTAATTTGATAC -TTGACTTTTCCAGCATAATGAGCCACGATGAATGCCGGCTCCTTCTTCTG -TGGGGTCTCATAGTATTCGTTGTTCTGGAAATTTAATCATGGAACTAGTC -ATGTAAAAACATTTGAAGGAGTTAAGGTATGTCCCGGAGGAGTGAACATC -TTAAGCCTGACCTAGAAGTTGATCCAAGTGGCAAGCCGACTGGCCTGAAT -CCTATTAACAGGCCTACATGTGAATATTAAAGGTGGATTAGCGCCAGTGG -GAATTTTGTCTAAATACACTTATAACGATGCCAAACGATCGAATATCATA -ATAAAACACTCCAAAAACTTTTAGATTTTTCATAATTTCCGGTCAAAGTT -TTGGAACATTGACAAAATTTTGACAAATTTGAGCTTTTGAGGACATCAAA -ATCAATGTAACATTTTTTTGGACCCCTACAATGTCTTTTTACGAAAAATT -AAAACAAAATTATAGTATAACAAATAGAGAAAAAAATTTTTTTTAGTCGA -ATTTGTGTCACTTTTTGACTGTAAATAAAAAAATTTTGAAAAATTTTTGA -AAAGTTTTATCATGAGATTTGGTCATTTTGGGAGCATAGGAGTGGTTTTT -AACAATTTCCACCACCGGCGCTACTCCACCTTTAATCGATAATCGATTGC -AATTTTTTCATACCTTCAAAAACTGATTTAACTTCGCCAGCATTGAGTCA -TCTGTTCCATTATTGATATTACTCTCCTCATCGACTAGCCTGAGAATTCC -ATATGGTTTACTCTGAAAATTCATCGGAATTTATATATATGGATATATAT -ATATATATATATATATATATATATATATATGTATATATATACATGTATAT -ATATATATATATACAGTGTGGGAAAGTTCTATAGGACCCCCCCTAATTTG -AAGGTTTGAGGAACTTCCGAAAATTTTTTTGAAAAACTGCTAATGCCATT -CGTTTTTAAATTGAAAAAAACCTATATACATTTTTTTCCAGAAGTTTATC -TCAAAAACTGAGGTCGCGCTGGAAAAAACGTCAAAATCCAGTGTGAAACT -TCTATAGGACCCCCCGTTTTTTTTCACGATTTTTACTAAAATCAACAGAT -TTTGGAATTTTTGACAAAGCTCAAATCAAGTTTGAGTTAGAAATGAGTTC -AGATAAGCAGTTTTGACTTTAAAAAATTAATACGAAATGTTCTCGTGGGA -TCTCCAGACTGGTTCTGATTCTTCCGAACTTTGATGTTCAAGTCTGTTTC -AAGCTTCCTGGTGCTCTCGGTAATGCCAAAACTTGATAAACTCTCTTTAA -CAAGTTCCTACTAAAATTCCTAGCACACACACCATAAAAATTTTTACGCC -ATCCCCAAGAAACCAGTCAGAAACAGCGTATTAACAAGTTGCAGTTATTT -TTGATCAACAACAGAACATTCATATACTAAAATCAAGAAAGGATCAATAG -TTAATCGGGTTTCCTTGTGTGCGGATGATCTCAAACAGTCTGTCCTCCAT -TGATCTGACCAAACTTTTCAGCTGGTTGTCCGGAATAGACTTCCAAGCGT -CGAGAATTCCTTGCTTCAACGATGCAACTGTTGGGTAAGTCTTGTTCTGA -GCATACACGATACGGACAAGAATCCCCCACAAATTTTCGATTGGATTGAG -ATCAGGACTTCGAGCTGGCCAATCAAGAAGGTTGATCTTCTTGAGCTTGA -AATAGTCGCGGGTTGAGTTGCTCACATGGATTGTCGCATTATCCTGCTGA -AATCTAAAGTCTTTTCTGGAGTAGTGACGAAGATATTTGGAGAGCTCCAG -TTCCAAGACGTTCTGATAGTCAGTGCTGTTCATCTTGCTACTGACGAACT -GTATCTCAAGCTTCTTCTTCTCCGTGAACGCTCCCCAAACCATCACCGTT -CCTCCTCCAAAATTACGTCTCGAAAAAACCATTGGTTCCTTGCGCAAATC -GCGCCAATAGTAGCGGCAACCGTCAGGCCCATCGAGATTGAATTTCTTTT -CATCGGAGAAGACAACCTAAAACAATGATCCTAATTATTCACTCTTGCTT -TTTTAAATTCTCACTTTACTCCAATTCGTTCCCATATTGTTCTTAGCAAA -TTCCAATCGCTTGAGTTTATGGTCTGCAGAGAGTAACGGAGCAGGGCGAA -GTTTCTGACGAACGATTACACCAGATCGTTTGATGACATTGAGGATGGTC -CTTTTTGAAGCAGACAATTGAAGCTCATTGCGAATATCTCTTGCCGTCTT -ACAGGAGTTGGAGGCAGCACGAATCACATTTCGTTCGTCACGCACGGAGA -GAGCTTTGCGACGAGGAGCTCTTTTAGATGTACCGTAGCTCACCGGATCC -TTCAGATACTCGCGAATACAGTGTCGAGAACGGGAAATTTTCCTACTCAT -TTCATGCAGGGACACATTGAGCAATTTCATAACATCCAGCTGAGCGCGTT -CAGTGTCCGAAAGGGCAGATCCTCGAGGCATTGCAAGTTAGACTGCTTTC -GAAGTAAGCTTTCCAGCCTCTATATGTGTGCCACAACACATGCCACAATT -CCACATTTAATAATTCACGCAAAAAATAGTAAATAACATCTGTGAGGGAC -AATTTAACTTGAAATATTGGTCCCATGGAACCTTGTAATCAAAGAAAAAC -GATTTGATTCCTGATAAGCCTTCCATTGTTTCCTGCTGCATATTTTGCCA -AATCAGCTTGACTACACAGTCGAAACATCTAAAGTGCGTGCTAGGAATTT -TAGTAGGAACTTGTTAAAGAGAGTTTATCAAGTTTTGGCATTACCGAGAG -CACCAGGAAGCTTGAAACAGACTTGAACATCAAAGATCGGAAGAATCAGA -ACCAGTCTGGAGATCCCACGAGAACATTTCGTATTAATTTTTTAAAGTCA -AAACTGCTTATCTGAACTCATTTCTAACTCAAACTTGATTTGAGCTTTGT -CAAAAATTCCAAAATCTGTTGATTTTAGTAAAAATCGTGAAAAAAAACGG -GGGGTCCTATAGAAGTTTCACACTGGATTTTGACGTTTTTTCCAGCGCGA -CCTCAGTTTTTGAGATAAACTTCTGGAAAAAAATGTATATAGGTTTTTTT -CAATTTAAAAACGAATGGCATTAGCAGTTTTTCAAAAAAATTTTCGGAAG -TTCCTCAAACCTTCAAATTAGGGGGGGTCCTATAGAACTTTCCCACACTG -TATATATATATATATATATATATATATATATATATATACATTTGAAACCC -AAAAAGGACTTATTGGACTTACCTGAAACAGCTGCACACACTCCGTATTA -TCAGTATACTCGATATTGGTCCAAGAAATGCCCTCCTTCAAGTACTCCTC -TTGTTCAAATTGGAAAATATGTTGATTGAAATAGGACTGAAGTTTCTCAT -TGGCATAGTTGATACATAACTGTTCAAAGCTGTTGCATTGAGACCCAACG -TCTTCAAATCCGAATATATCCAAGATACCTGAAAATTACTTCAATTTTTA -ACAATTGATAATTAATCTAACCTATATAATATCCCTTCCCAGCTGAGAAG -TCCTTCTTCAGCAATGCCTGATTAATCCTGAGGACTATATAGTGAAACAA -AGAGTTGTATATGCACTTTGCCATGGCATCTCGGGTGTTGGTGGCCTGAA -ATTAATTTTTTTATCTTAAATTCTTAATTTCACTTCTGTATATATATATA -TATTACCTCAGAGACACTATATCGCAAAACTACAGTTTCTGTCTTCATAA -CATGTCGTTTCATAGTGAGAGCCTGCATGAGAGTGTCGGTTTTGATGTGA -AGCAGATTTGCGACTAAATCCACGACTTCTTCATTTTCAATATACCCACT -TTCATCGCTATGGTAGCCATGTCTCTGGAAAATTATAGGAAAAATAAAAA -AAATTTGATGATGTTATTATATTAGGAATCCTCTAAACAAGGGTTTTCAG -GTTTTTTGGTTTTACGATTATTCAAATTTTTATGGAAATTATTATAATTC -AAATAATTTTCGTCACTATTATAGCCATGTTGTTGAAATAATATGCTATT -TTTAAAGGTGGAGCACCGAAATCTGGAAACTATTTTTAAATGAGTCCAAA -TTTTCCCCTGATTCCGAATATCTATGCGAAAAAATTTTAAAAAATTCATT -TATCAAATTTTTCAAATTTTTCAAACGCCGAATTTTCGCGCCAGAAACGC -CGTGTGCACGTGGTATCAGAGTGTCTCATTTTGGCTTGATCTACGCAGAT -CTACAAAAAATGCGGGAGAAGAGACGCAGAGTTCTCAACTGAGTTCGCAT -GGTTAAAAATGTGCTGACATCACATTTTTTTGGCATTTTTTGTAGATCAA -ACCGTATTGGGAGAGCCTGGCACCACGTGAGTAGGCAGGCATTTTTTGCC -TGACTGCTTGCGGGTGCCTCGTTTTTTCCTCAGAATTTTTTGGCGCGAAA -TTCAAATTTTCAAATAATTTTGAATATTTTCGAGTGAAGCTTTAAAAAAT -TGTTTGTGCCAAATTTGAGTTTGCAAATAAATTATCAAAAAATGTGCTGA -CGTCACGTTTTTGAGCAAAAAAATCCCGCATTGTTTGTAGATCAAACCGT -AATAGGACAGCCTGGCACCACGTGCGTGTGTCGATTTACGAGATTTGTGT -ATATTTACGAAATTTTTTATCTTTATCAGACTCTGATTTCCGTTTCTCAA -CGAGTTTTCTTCATTTTTGTATGTGATTTTTTTAAGGTCCATTAAATATT -TTATCATCAAAACCCTAGCAAAATTTTTGGTTTTCAGTCGGTAAAATCAT -ATAGGTAATTGGATTTTCCGTCAAGTTGTGACCTAATAGTAAGCATTGGA -AATTTTGCCAGTTTTAAATAATTAATTGACCCTAAAACACACATTTCAAA -AAAAAACCGATAAAAATTAAAAATTCCGTAAATATACACAAATCTCGTAA -ATCGACACATGGCTCTAGCGCGAAAATTCAAAAACTCTTGGGTGTACAAA -TAGCGATTTCAAGCTCAAATATAAAATCGTGGAAATTTTTTAAAAATTTT -TTTCACATAGGTATTCGGAGTCAGGGGAAATTTGGAGTCAATTAAAAATA -TTTTCCGGATTTCGGTGCTCCGTAGAACTCTCTGAATAAAATTTTAAAAC -TATGGCAATAGGCAATTATTCGGTAGTTAACTTCTGAGTTGTATTTCTTT -TTGAATCTAAACCGTCCCAATCATTTACCTTGATATATGTGATATTGCCA -AGAAGCAACACTGCCGAAATAATCCCGAAGATGGTCTGCTGGGTCTTTGC -ACAAAATCCGACGGAGCTCATTGCATGCCTCAACCTATCAAACTCATTCC -GCTCGTTCACACCTTCCAGTGCAAATGGCTCGTTCTGGAAATTTTTAATT -TTTTTTTAATTTTTTAAAAAATCGCTTTGAGGTCAGCGAATGTATCCCAT -ATTCGCTCCAAACTTTTCCCAGCTCACCTGATTCAAATACTTATAATCAT -GTGGCTTCAACAAGAAATATTTCTTCCTTTCTTCCTCGTCTGCACCCTCC -AGAAGGTAGTAGAATACGTGGTAGTTTCTGAAAAAAATATTAAAGTCCAA -GTGAGACACCAAGGGAGTTTATGTACCGTTCTCCTTTAGTTTGAAATATG -ATGCGTGATTTTTCCAGCAGGTAGATCTCCACGTTTGCTCTGAAAAGTAC -AAGTATAAGGCATTTTTTGTGGTATAGACATCAGGAGAAGGCTTCAAATT -TTACGTTCAGGTCAATTTAGGTCATAGTGCCTAGTAAGTATGGTACCTAT -AAGCTTGATTACTGCCAAAGTAAAAATTTTCCAATTCCGGCAATTTGCCG -ATTTGCCAGGCATTCCAATTCCGGCAATTTGCCGATTTGCCAGGCATTCC -AATTCCGGCAATTTGCCGGTTTGCCGGATTGCCGGAAATTTAAATTCCGG -CAATTTGCCAAATTTTTTTTCATTTTCGGCAATATACTGGATTGCCAAAA -TGTTACGGCAACTTGCCAATTTGCAGGAACTTTTCATTTTCGGCAAATTG -CCGGTTTGCCGATATCCCAGAAATTTTCAGGTCCGGCAAGTTGTTGATTT -GCCGATTTTCCCCGGAAATTTCAGTTCCGGCAACTTGCCGATTTGCCGGA -AATTTTCAAATCCGGCAATCGCGGGAAATTTCAATTCCGTCAAATTACCA -ACATGCCGGATATTCCAATTCCGGCAATTTGCCAATTTGCCGAGCATTTA -AATTCCGGCAATTTGCCGAATTGCTGAAAATATCAATTCTGTCAAATTGG -CAATTCGCCGGACATTCCATATCCGACAATTTGCCGATTTGCCGATTTCC -CAGAAGTTTTCAATTCCGTCAAATTTCTAATTTGCCGGAAATTTCAATTT -TACTAAGTCGCCTGCTAGCCTCCTAATCTCACCCGGAAACCATTCCATTC -TCCCGATAGTTGATTTTGATGAATTTTCCAAATCTGCTACTATTATTGTT -CGTTAATGTGACAGCATTTCCAAAAGCCTCTAGAACAGGACCAGCTGACA -GAAGTGTCTGCTCAGTACTGCAGCCTGTTGAACCTTTCTGTGATAGCGAT -ATCAAATGGGACATCAGATGATTCGTGGATTCCGTTTTTCCCGAACCACT -TTCCCCGGAGATTACCACGCATTGATTTTCCTTGATACGGAGCATGCTGA -AAAAATTGTTTTTTTAAAAATTAGTAGTGACATTTAGTTAATCCAGCATC -AGAATGTATATCTCTGAAATTTTTTTTTTTTGAAATCAAAAGTGCTTTGA -GGGTCTTGAAACGAACACATAACTGCAAAAAAATTGGTGGCCGAGTTTAT -AATCGGCCACTTGGCAAATATACAAGCCAATACACAAAGTGAGCACCTAC -GTGGCCGAGTGAAGAGAAAACTCGGCCACCGATTTTTTTTGGTCACTTGA -AATTTCAAAAAATAGTAACTGGGTTCCGGTAAGAACTTAGAACTCACTTG -TGGTAACAGACATCGGCGATTGCAAAAATGTGCGGTGGTAGTGAGCCGAG -CCGCTTACTTTGAAAGTATAGCCTAGCATATTTTGGGTTGTAGATCGGAA -AAAAGCAAAACGGGTTCACGGCTACTAGAATTGGACCGATGTACGTGTAA -ATGTGCCCATTCGCGAATCTTTCCCGCAAATTGTCCAAGAGGGTTTGCTC -CGTGAGCTCTGGCAAGTTACAGAGATCGGCGTACTCGCGGTCCTGAAAAA -TTTTAAGGTTTAAAATTTTTTTAAATATAAAAATATTTAAAGGTGGAGTA -CAGGAAATCTTTTTTAATTACTCCAAATTTTCCACTGATTCCGAATATCT -AAGTAAAAAATTTTGAAAAAATTTCCCTGATTTTGTATTTAAGCTTGAAA -TTACGATTTTCATTTGTGCCCGCACCACTTTTTTCAAATACGCCCAAAGA -AATTCGCATTGGAGCGCGTTTGCATCGTTTGATTTTCGTCGTTTATTTTA -TTTATTTTCCACGGGGTTCTGGCCTTCTTCATTGAATTTTCGCGCTTCAT -TGACAATCGCCTGCCGGACAACACATGGAAAAGTGTCGTGTACTCCACAC -GGACAAATACATCAGTTTTACAACTAAAGACAAGCCGCGACGCGACACGC -AATGCGCCGTAAGTCTACACAAAATCTCTCCGACCCAAAATGGCCTAGTT -CGGCAAACTCTGCCATTTCGATTTATGAGGGAAGCCAGAATTTCGTGATT -TTCGCCGAATTCAATTTTCTTGAACCAGTTTCAATCATTTTTGTCGAGTT -TTTGCTAGTTTTTTTTTTGACAAAAAGGAATGAAACTGGTTAAAAAAACT -GAATTTGGCAAAAAATAAATAAAATCTTTAAATGAAGGAAATCAAAGCGC -GCTCCAATGCGAATTTATTTGGGTGCGCATTTGACAAAAACACGTGGTGT -CAGGCAAGGGTGTCAATGTCCCGTAAAAATTTCGAAAACGGGACAACGGG -AATTCCCGTTCCCGTGAAAATTTTAAAAACGGGAAAACGGGAATTCCCGT -TCCCGTGAAAACTTCAAAAACGGGACAACGGGAATTCCCGTTTTTTTGAA -AACACTCAAAAAACGGGACAAACTGGGCGGTTTAAAAAAAAGAGTGCATA -GTTGGCGTAAATTTTAGTGTATTCGAGGCAAATTATAAAAAAAAACTGCA -TTATAAACATTTTTATCGATTTTTTCAATATTAAACAGATATTTAAAAAG -CCAAAAAATGAGGGAAAATGTCCCGTTCCCGTGAAAATTTTAAAAACGGG -ACAACGGGAATTCCCGTTCCCGTGAAAACACCCCAAAAACGGGACAACGG -GAAAAACGGGAAACGGGAATTGACACCCTTGGTGTCAGGCTGTCTTATTT -CATTTTTATCTACAAAAACAGCGGGAATAGTTTTCCAGAAAAATTCTAAC -GTCTCTTAACCAGGCGAAATAAAATGAGAAGTCTGCGTCTCTTCACCCGC -ATTTTTTGAAAATCAAAAAAAGAGACCGGGCACAAATTAAAATCAGGGAA -AATTTTTTTAATTTTTTCACATCTAAATTCGTAATCGGGGGGCAAATTTG -GAGTGATTTAAAAATATTTCCCAGATTTCGGTACCCCACCTCAAAAAAAA -ATAATTAAAGAATTGCCTTACCTGTGGCTGAACCAAGAATTTCGTAAGAA -AAGCGTCAATCGATGAGGCGACCTCTGCACTTCCAAACCGAGTGCCGCCG -GTTGCCGCCCGATAACCGCGGTGTCGAAAAACAAATCGATTTTTTGGAGT -GGCACTGTCCACCACTACAGGCAGTCTTGACCAGATGGCCTGTACCGCGA -CTGGGTATTCCCCGGGGTCTAGGCGGCGTTCTTTATAGGTTTGACCGTCG -GGGGTGCCCATCATTTCGAAGAGGTCAAAGTCTTGTACCGACTGGCCTTC -TAGTTCTGGAAATTTTGACTTTAGAAAAGAAATCATTTTTTTCCTTTTTT -TTTTAAATTAGCCCGTGGCTTTTTTCAAAATTAAAAGAAAATTTGAAAAA -ACATTGCATTAGAGCGCGTTTGCATTCACTCCATGCAGTCCAATTTTGCT -GGGAGCTTGAGTGTCTCATTCGACTTGATCTACACAGATCTACTAAAAAT -GCGGGAGAATAAAATCCACTGATATTGTATGTTTAAGAATGTGCTGACGT -CACATATTTTTGTGCAAAAAATTCCCGCATTTTTTGTAGATCAAACCATG -ATGGGACAGCCTGGCACCACGTGAGATTGTGTCGACAAATTTTTGTTGAA -GATGTATGGCCAAAAACGGCACATTTAAGTAATTTATCAGTAGAGCGCGT -TTGAAATTTTTTTAAAAATTCTTTTTAAAAAGAGTTCCCACTACCCCAAG -TCCTCCGATTTTTCTAAAAACTAAGAGAAGGGAATCTACGACCCTGAGCC -TTTAAAACCTTACCAGCTCTCCCGGCGAGCACTTTTTCGATGAGCTCCTC -CGTCGTGCACCGCTTATGAACCTCCAAGTGTACCGTATCATTTTCACAGT -CGGGATTGAAGCTGTGCATATAGACGGCTACCGTATGTGTGTGTGCATCG -TCTGTCGCGTTGATTGTGTGAGCACGTCGGGGAAAACATCCCGTCGCTCC -AGCTGATATTGAGTCAAATGACATTTAGTTAATCCAGCATCGGGATGTAT -ACGTCTGTAAAAAAAAATTTTTTTTGAAAGTAAAAGTGCCTGGAGGATCA -TGCAACGAACACAAAAATTTCACAAGACCGCGAAAAAAATTGGTGGCCGA -GTTTTCTCTTTCGCGGTCACTTAGGAAATACTAAAATCGCACGGATTTCT -GGCTTCTCTCATAAATTGAAATGGAAGAGTTTGCCGAACTAGGCCAGTAT -AGCTCGGCCATATCTGGGGTATGTTTACGACTTTCCCACGCGTTGGGCGA -TTGTCAATGGAGCGCGAAAAACTCAATGAGAAAGGCCTGAACCCCGTGAG -ATCGAAATGAAAATTTGCTAAATGGCCGAAAATTGAAAACTCGGCCGCCA -ATTTTTCCACACGGCCACAGGAAAAATCGTAACAAAAATTGAGAGAAATT -TATTAGAAAAAATCTGAAAGTAATTTTTATTGCACCGTGGCCGCAAAATG -TAAAAACACGGCCACCGATTTTTTTAATGTGGGGAAAAAGTTGGTGGCCG -AGTTTTATATTTTGCGGCCACTTAGAAAATATTTAGATCGAAGGGAAATT -TTGTTGAAAATACGTTTAACGAAAACCAGTCAATTTTTGTTACATGACCG -AAAATTGAAAACTCGACCACGGATTTGTTATGCTTTATAAATTTTTGAAA -CTATTATTTTTTGATTCAGAAATTTTTGGAATTGAAAAAAACTCGGCCAC -ATTTTTTTTCTCACGGTCACAATTTTCTTTGTGATCGTAAAAATGGAAGC -TCGGCCATGGTGGCCGAGTTTTTTTCGCTGCCACTGGTAACACGTGGTTG -GGTGAAGAGAAAACTCGACCACCGGTTTTTTTTGGCCACTGAAATTTTTA -AATTTCAAAATATTTTAAATTTTGCTGCAATCTTTCACCACAACCGCGAA -AAAATGAAAACTCGGCCACCAATTTATTTATTTTCACTGGGAGAAAAAAT -ATTGTTAGCCAAGTTTTCTTTTAGGCAACAGAAAATCAAAAAATGAGCGA -TTTTTGTTACGTGGCCGTGAAAAGAGAAAACTCGGCCACCAATTATTTTT -AATTTGAGGCACTGTTGTAAAATCTTATAAAAAAACAGGTTTAGTACATT -GAACTCAAAAATAAGGAAGATTTTTGGAAAAACAAAAATTGCTGGCCGAC -AGCTGGAAAAAACTCGGCCACCAACTTTTTCCGGTCACACAGCAAAATCT -CTCGATTTTCGATGTTTGAATATTGAAATCTGGGTTGGATTTTTTAGTAT -CATTTCATTTCCGGTGGAGAAACGAGGGAGAGAAAAAGAGAAAAAAGATT -TGTAGTGTCCCGGGAAGCTCTCTTTCTCATGTGGGAAGAAAGTGGAAGAA -GCTTCTGCAGCAGCAGCAGCAGTGGTTCACGAAAGAGAGAGAGAGACATG -TTGGACATGAAAATGATGAAAAATAAGAAGATGAAGAAGAGAATTACACA -CTACCACCACAACACAGATTATTTTTATCACGTTTTGAGGGGGCGCTTCA -CACAATTTTCATGGCCTAGAAATTTAAATTTGGTGGCCTAGAAAATACTA -TATTAATTATATTAATTATTCTACGAAATTTCAATAATTTAAACGGGAAA -ATTTATTTTAAAAAAGCCTAGAAGAGGTTTTGAAATTGGTGGACTAGGAA -ATGAAAAATTGTGTTTTTGGAATTTTCTAGGCCATTTGAACTTCCTGACG -TCCACAATTTTCATGACTTCGAAATTTGAATTTGGTGGCCTAGAAAATCA -TAAAAACTAAGAAATCGAGAAAAAAGCATGGATGAAATTTTGAATTTTAT -AGGTCATTTGAAATTTGTGGCCTAAAAAATGAAAAATGATTTTTTTTTTT -TTGAATTTTCTAGGCCACTTGAATTTCCTGACGTCCACAATTTTCATAGC -CTAGAAATTTAAATGTGGTGGCCTAGAAAATAATTAAAACTAAGAAATCG -AGAAGAAAAGCGTGGAAGAAGTTTTGTATTTTCTAGGCCATTTGAATTTG -GTGGCCTAGGAAATGAAAAAAAGATTTTTTAGGAAATTTCTAGGCCACTT -GAAGTTGGTGGCCTAGGAAATTAAAATTTGTGTTTTTGGCATTTTCTAGG -CCATTTGGATTAGGTGGCCTAGGAATTGAAAAGTAGTTGTTTTGGAATTT -TCTAGGCCATTTGAATTTGGTGGCCTAGGAAATGAAAAAATATTTTTTAA -AGGAAATTTCTAGGCCATTGAAGTAGATGGCTTAGGAAATAAAAAAAGGT -TTTTTAAAGGAAATTTCTAGGCCATTGAATTAGGTGGCCTAGGAAATGAA -AAATGATTTTCTTAAAATTTTTTAAGCCACTTGAATTTGACGGCCTAGGA -AATGAAAAATGGTTTTTTGGTAATTTCTAGGCCACTTGAATTTGGTGACC -TGGGAAATGAAAAATGATTTTCTTGGAATTTTTTAGGCCACTTGAATTTG -ACGGCCTAGGAAATGAAAAATAGTTTTTTGGTAATTTCTAGGCCACTTGA -ATTTGGTGGCCTGGGAAATGAAAAATGATTTTCTTGGAATTTTTTAGGCC -ACTTGAATTTGACGGCCTAGGAAATGAAAAACAGTTGTTTTGGAATTTTT -TAGGCCACTTGAATTTGACGGCCTAGGAAATGAAAAATAGTTTTTTGGTA -ATTTCGAGGCCACTTGAATTTGGTGGCCTGGGAAATGAAAAATGATTTTC -TTGGAATTTCTAGGCCATTGAATTAGGTGGCCTAGGAAATGAAAAATGAT -TTTCTTAAAATTTTTTAAGCCACTTGAATTTGACGGCCTAGGAAATGAAA -AATGGTTTTTTGGTAATTTCTAGGCCACTTGAATTTGGTGACCTGGGAAA -TGAAAAATGATTTTCTTGGAATTTTTTAAGCCACTTGAATTTGACGGCCT -AGGAAATGAAAAATAGTTTTTTGGTAATTTCGAGGCCACTTGAATTTGGT -GGCCTGGGAAATGAAAAATGATTTTCTTGGAATTTTTTAGGCCACTTGAA -TTTGACGGCCTAGGAAATGAAAAACAGTTGTTTTGGAATTTTTTAGGCCA -CTTGAATTTGACGGCCTAGGAAATGAAAAATAGTTTTTTGGTAATTTCGA -GGCCACTTGAATTTGGTGGCCTGGGAAATGAAAAATGATTTTCTTGGAAT -TTTTTAGGCCACTTGAATTTGACGGCCTAGGAAATGAAAAATAGTTTTTT -GGTAATTTCGAGGCCACTTGAATTTGGTGGCCTGGGAAATGAAAAATGAT -TTTCTTGGAATTTTTTAGGCCACTTGAATTTGACGGCCTAGGAAATGAAA -AATAGTTTTTTGGTAATTTCGAGGCCACTTGAATTTGGTGGCCTGGGAAA -TGAAAAATGATTTTCTTGGAATTTTTTAGACCACTTGAATTTGACGGCCT -AGGAAATGAAAAATAGTTTTTTGGTAATTTCTAGACCACTTGAATTTGAC -GGCCTAGGAAATGAAAAATAGTTTTTTGGTAATTTCTAGGCCACTTGAAT -TTGACGGCCTAGGAAATGAAAAATAGTTTTTTGGTAATTTCTAGGCCACT -TGAATTTGGTGGCCTGGGAAATGAAAAATGATTTTCTTGGAATTTTTTAG -GCCACTTGAATTTGACGGCCTAGGAAATGAAAAATAGTTGTTTTGGAATT -TTTTAGGCCACTTGAATTTGGTGGCCTAGGAAATGAAAAATGATTTTCTT -GGAATTTTCTAGGCCACTTCAATTTGGTGGTCTGGGAAATGAAAAATGAT -TTTCTTGGAATTTTTTAGGCCGCTTGATTTAAGTGGCCTAAGAAGTTAAA -AATAGTTGTTACGGAATTTTCTAGGACATTTGAACTTGGTGGCCAAGGAA -ATGAAAAACTTTTTTTTTTGGAATTTTCTAGGTTTCTGTAATATTAATTT -ATTCATTTAAAAAATTAAAAAACATTAAATTTTTTTTAAATTTCGTGTTT -CAAAAAAAAAATCAAATTTGCCCAAAACTTCAAAAATAAGCTAAAAAATT -GTAAAACGATACAGAACGGCTAATAAAACTTGAAAATAATAAGCGTGATG -AGTCGGAAAGAGCCGCCGGCTGGGACCTTCTTTTTCTCTTTTTTTCTCCT -CTCCCATCCCGAGCAGGAGCAACACAACGAGAGAGCACAACAAGAAGAAA -AAGCAGATAGATATATAGATATATGTTGTCTTCTCTTCATATTCTTTCTT -TTATCTTTTCATTCGAAACAACACTTGGTTCATTTCTCCCGTTGGACGGG -GGGGGGGGGGGGGTGACGCGGGAGACGAAAAAAAAAAGAAAAATTGGGAT -GGGAGTTGGAGAATGTTTGGAAAAAGATTGATTGATCAATCAATTTGCCA -GCCGAGTCTCGGCTATTTTCGGAAATCGGGGCTATGCAAATGCGCCCTAC -TGATAAAATGGGACGTGTCATTTAAACTCCTTGGTTTTTTAAAAAGAAAC -GCAAAATCGGCAAATTTCCAGTTTGCCGATTTGCCAGAAATTTTCAGGTA -CAGCAATTTTCCGATTTGCCGATTTGGCGGAAATTTCAATTTCGACAAAT -TGCCGGCTTGCCGAAATGCCAAAAATGTCCAGGTCCGGCAATTTGCCAAT -GTTGATTTTTGGCAAGTTGCTGGTTTGCCGGAAGTTTTCATTTTCGGCAA -ATTACCGATTTGCCAAAACGCCAGAAATGCTCAGGTTCTCTAAACCGCTG -GTTTTCCGGAAATTTTTCATTTTCGGCAAATTGCCGGCTTGCCAAAATGC -CGGAATTTTTCAGGTCCGGCAATTTGCTGATTTGCCGGAATTTTTCATTT -TCGACAAATAGCCGGTTTGCCGAAACGCAAGAAATGCTCAGGACCGGCAA -TTTGCCGATTTGCCGGATATTTTCATTTTCGGCAAATTGCCGGTTTGCCG -ATATGCCAGAAATGTTCAGGACCGGCAATTTGCCGAATCGCCGGAATTTT -TTATTTTTGGCAAATTGCCGATTTGCCGAAAGGCCAGAAATGTTGCGGTC -CGGCAATTTGCCGAAATGCCATAAATGTTCAATTTCGGCAATTTGCTGAT -ATGCCGGAGTTATAAATTTCGGCAAATTGCCGGCTGGTCGATATGCCGGA -AATTTTCAGGTCCTGCAATTTGATGATTTGCCGAAAAATTTATTTAAAAA -AAAAATTAATTTTCGCCAGACAGGAAGTCTCTAAAATCTCATTTAATAAG -AAGAAACAAAAGAAACAAATAATGGCCTAACAAGTTTCGAGTTACAGAAA -CCTAGGCCACTTTGAACACCGGCGTGGCCTAGAAACCCAGTTCCACAAAA -ATAAGAAAAAATTAAAACTCGGCCACATAATCTAGGCCAGGAGCATACAA -ACACTCCACGAATATTAAAGACTCTTTCTAGGTTAGTGGCCGTTAACGAT -GGAAAACTCGGCCATCTGCCAATTTTGTTGCTTAAAATTGGAAAAATAAA -GTTTTTTTAACTTCAAAAAAAAAAGATCAAAAAGTGAAAAGCGGGGATTT -TTCTCACACAATTTAATAAATCTGTAGCCGAGTAGCGGAGAGCTCTCGGA -GCTCAACGTGAATTTCTATTTGGACGGTAAACATACTCAGCCACCCCACC -CCAGCCCACCGTTACTGTCTTTTTTTTTCTTTTTTATTATCAACCAGCAC -TTATCACCTTTATCTTTGTGTGATCCCGCGCCGCGCAAGAACGAGAGAGA -GAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGA -GAGAGAGAGAGAGAGAGAGAGAGAGAGGGATATTGGTGAGACGCAGACAA -TTAGAGTCACTCGTGGGCTCTTTCACACATGTGATATTGAACGAGAAATT -GCGCACCTAGGCCACAAAAAAAACAGTGTATTCGATTTCATGATAGGGGA -GAAGCTGGCACGGTGCCAAGTTTCAGAAAAAATATGGAATTTTTGCTTGA -AGCATGGTGAATCAGACGTGCTTACGTCACAATTTTTCGGGATAAATATT -CCCGCATTTTTTGTAGATCAAACCGCAATGAGACATCCTGATACCACGTG -AGGTTAATTAAAAGTATTGATCGGGATTTTGAGCGTCAAATATGGTGTAT -TTACCGGCAACCCTGATGCGCCAGATTTGACGCGCAAATCCTTCATTTTA -ATAAAGTTGGGCGTCAAATGTGATGCCTGAATTTTCAATTTTTTGAAATG -TTTTGATTTCGTGAAAAATAACGGCGAATTTCAGAAAATTTATAGAAAAT -TTTCATTTGTTGCGACCAAAAAATCTTAAAAACGACCAAAATTCTCAGGA -AATTCACATTTTTCGCCGAAAAAACCATTTTGCGCGTAAATTCTGATGTA -TTTTGCCGTAGGCTATGTGTGAAAACACTGCCGGTAATACGTCATATTTG -ACGCGCAAACCACAAAAATCCTCGAAATTATTCCGGGTGCACAAAATTCT -GAGAATGCGTACAGCGCAACATATCTGACGCGCAAAATATCTCGAAGTGA -AAAATACAGTAATCCTTTTCAAATGACTACTGTAGCGCTTGTGTCGATTT -ACGGGATCTCGACTTTCGAAATGGATTAAAATATATTATTTATCAATAGA -ATATTACAAAAAGAAGTTAATTTCGTAAATCGAGCCCGTAAATCGACACA -AGTGCTATAGTAGTAATTTTAAGAATTACTGTAGTTTTCGCTACGAGATA -TTTTGCGCGTCAAATATGTTGTGCAGTACGCATTCCCAGAATTTTTCGTT -CCCTTTCACAAAAATCTTCAAACTTGCGCGTAAAATTTGGTGCATTGGTG -CCTGTGAGGGGTTCACCTATACAAGTGGTGCCAGGGGCTGTCCCATTACG -GGTTGATCTACAAAAAATGCGGGATTTTTTTGCCCAAACCATGCGAAATC -AGTTGAGAACTCTGCGTCTCTTCTCCCGCATATTTTGTAGATCAACGTAG -ATCAAACACTCTGACACCACGTGGGCCGATGATGTAAGTGCACCAGATTA -CACGCGCAAAAACTGAAAATCTGAAAAAAAAAAAAGCGAAAACTGTCAAA -TTTGAGCGAGTTTTTTATTCCACGAATCACAAGAAAAATCAATAAAAAAT -CGATAATTAAAAAGTGAGTATCATATTATTCGACAACAGAATTTCCAGTT -TCATCAGTGAGCATTGTAAGTATACGATGAGCCATCGACGGTCCAACACG -TCTCCCGTTCTCTGCCACAAGTTCGCCAATCTCTTGAATAGCGAGCGAGT -AGTCCATTTTCGAGTATTTATCGATTGCGGCAATCGGATCAGGGATTAGT -TCGAGAATTGCACGTCGCTGAGCATCCGACAGCCGATCGATTGTTGTGAG -CATTTTCGACCACCAATCCGTGACGATTTCCGAGCGACTTCCGATCACAA -TTCCCTGGAAAAAAATCATCGGGGTTTCATGCTTTTGATCTATTTGATCT -ACAAAAAATGCGGGAATTTTTTGCCCAAAAATATGTGACATCGTCAGCAC -GTTTTTAACCATGTGAAATCAGTTGAGAACTCTGCGTCTCTTCTCCCGCA -TTTTTTGTAGATCTACGTAGATCAAGCCGAAATGAGACATTCTGAGTCTT -GACACGACAAATTCCCGTTAATTACATACGGATGTGAGCCTTTGTTGGAT -GTGAGAGAGTTTCCAGGTTTTTCTCGAAAGCTTTTCTTAAAATTTCATTT -AAAAAATAATTTTTTAACGAAAAACTACAAAAAATCATCCGAAAAACCTG -GAAAATCGATGAAAAACTCTGTGACAAATACAGTACTGTTTAAAGGCGCA -CGCCAGTTTGTGTTCTGAGAATGCGTATTGCACAACATATTTGACGCGCA -AAATATCTAAACTACAGTAATTCTTCAAATGACTACTGTAGCGCGCTAGT -GTCGATTTACGGGTTCGGCTTTCGACAAATTTCGAAAATCGAGCTCGTAA -ATCGACACAACCGCTACAGTAGTAATTTAAAGAATTACTGTAGTTTAGAT -ATTTTGCGCGTCAAATTTGTTGTGCAGTACGCATTCTCAGAACTTTGCGT -TTTCGTGATTTTTTTTTTCAAATTTTAACTGCAGTAAAAAAATAAAACAA -CATAAATTTCATTTAAAAAAAACGATTTTAGCGCTCTTTAAAGGCGCACA -CCCGTTTGTGTTTTAAAAAAAAAAAATGTCGCGTCGAGACCAGATTTCTG -CAGATTTCGCGCCAAGACCCAACCTTATCCCCCTGATACTGTAATTTGTG -GCCTCCTGCCCCTCCTGCACCACCACCACCGCCCCCATCACTTCCAGCGT -CGAGCTTCTTCTTCTCCTGTCTCGCCAAACTTCTCAAGTACTGAGCAGTG -AATAGTGCCAGCTCGGCGATCGTTTCGATTTGCACAATTTGTGCACGATG -TTGCTCGTAGATTTGCAGCGATAAATTGTGCAATTTCTTCTTTTTCGCAA -TTTCTGCCCTGCCGAATGAGACGATGAGCATTGTGCAGCGGCCACCGTTT -TGAAATCCGGATTTTTGCTGGAAAAATAAAATTTAAATGAGATTTTTTTT -AGGTCTCGCAGCGATTTCTCTGGCTGTTTCAATTACGGTTTGATCTACAA -AAAATGCGGGAATTATAAAAAATGTTTGCCCGGTAAAATGTGACGTCAGC -AAAGTTTCTTAACGCTGCGAAATCAGTTGAGAACTCTGCGTCTTTTCTCC -CGCATTTTTTGTAGATCTACGTAGATCAAGCTGAAATGAGACACACTGTG -TGTGCAAACACTATCCACAATACATCATATTTGACGCGCAAACTCTAATT -TTTTTTTCGCTGCGAGACCTAAAAAATCTCAAACTTTCCAGTGAAAATCC -GGATTTTCTTCATTTTAAAAAAGTTGCGCGTCAAATGTGATGTGCCTGAA -TTTTCGCTTTTTTGAAATTTTTTATTTCGTTAAAAATGACGACGAATTTC -TGAACATTTATAGAAATTTTAAAAATTTTCATTTTTTGGGTTAAAAAAAT -CTTAAAAACAACCATAATTCTCAGGAAACTCAAATTTTTCGCCGAAAAAC -CCATTTTGCGCGTGAAATCTGGTGTATTTTACCGTGCCTAGGCTGTGTGA -GAACACTGCCGGTCATACATTATATTTGACGCGCAAACTGCAAAAATCGT -CGGAATTATTTCGGGAACACAAAATTCTGAAAATGCGTATCGCGCAACAT -ATTTGACGCGCAAAATATCTCGTAGCGAAAACTACAGTAATTATGTAAAT -GACTACTGTAGCGCTTGTGTGTCGATTTAAGGGCTCAATTTTCAAAAAAT -CGAGATCCCGTAAATCGACATAAGTGCTATAGTTGTTATTTAAAGAATTA -CTGTAGTTTTCGCTACGAGATATTTTGCGCGTCAAATATGTTGTGCAATG -CGCATTTTCAGAATTTTGTGTTCCCGGAATAATTCCGACGATTTTTGCAG -TTTGCGCGTCAAATATGATGTATGACCGGCAGTGTTTGCCCACATCGCCT -AAGCACGGTAAAATACACCAGATTTTTCGCGCAAAATGGGATTTTCGGCG -AAAAATTCGAATTTCCTGAGAATTTTGGTCGTTTTTACTATTTTTTAATC -CAAAAAAAAATGAAAATTTTTAAATTTTCTATAAATTTTCTGAAATTCAC -CGTCGTTTTTCACGAAATAAAAAAATTTCAAAAAATTGAAAATTCCGCCA -CATCACATTTGACGCGCAACTTTTTTAAAATGAAGAAAATCCGGATTTTT -CTGGGAAATTTGAGATTTATTTAGGTCTCGCAGTGAAAAAAAAATTAGAG -TTTGCGCGTCAAATATGATGTATGACCGGCAGTGTTTGCCCACATCGCCT -AAGCACGGTAAAATACACCAGATTTTTCGCGCAAAATGGGATTTTCGGCG -AAAAATTCGAATTTCCTGAGAATTTTGGTCGTTTTTACTATTTTTTAATC -CAAAAAAAAATGAAAATTTTTAAATTTTCTATAAATTTTCTGAAATTCAC -CGTCGTTTTTCACGAAATAAAAAAATTGATAAAATACACGATAAAATACA -TCAGATTTTACGCGCAAACTGGCAAAAAAATTGATTTTTTGGCTTTTTCG -GACTAAACATTAGAAAAAAGACTATACTCCAACAATTTTTTTCAGTTTTT -TTTTTGAAATTTTTTTTTTTTCAGTTTAAAATGTTTTCATCGCTTTGTTC -GTTTATTTTTGTCTGTTTATTGTGATTTTGTGCGAAATTAATGTAAAAAT -TTCCATATCCAACACTGTTGTGTGATTAATTCGGATAGATAAAAAATGTT -CAGCATGTTGAGTTTAGTTTTCGTCGTCCAATTTAGCTTTTTTTTGATTT -TCAGTCAAGATTTTCTTTCGCCTTCCGCTTTTTGACTTTTCTATGCAGTA -ATGACCAGTCTTGATTTCTAGCTTTTAGTGTTTGGTTTACCATTCTGCTA -TTACATGAGTCACACCTTATCACTAATATAAATGCAGCATAATTTCAGAG -TGAGCAAGCCGCGAGTATTAAACCAGCGCTGTTTTAAACTGATAATGATT -GCAGTTTCCTTCATTCTCACCGAATATCAATTTTTATTCATTCCAGAGTC -TCTCGAACTATGGAAAAACAACTAAAAGCTATGTCCGTCTCGGACAAACC -TGCTGCCCCAGCTGCCCAAAAGCTTGGTACCGCTCCGCTCGCTGCAAAAA -AGACGAGAAATGAGGAGTGGGGAACCAAGGTCAATATCGATACCAACATT -CGCAAATTGAGTAAGTTTTTATTTTACAATTACCAGTCGTTCGAGCTTAT -ATATCAATATTTTTTAGCGATCAAACCGAATCAGCCAATTTACAAGTACG -CTGTGCAAGTGAACTACGTCTTCCGGAAACCTGATGGAACTGAGGCGACA -ATCGAAATGTCCAAATCAGCCAAAAAGGGAACGGAGCACGACAACGACAA -AACACGCTGCCAGAACGTTTACAATGAGGCGATCAAGCGTTACGATGAGC -TGAAAACCGGAGGACCGTTTTTCTACGATCGTCAAGCCTCTTTGTACACT -CTGACCAAATTGAAGAATGAGGTGAATTCGATTTTTTGCTTAAAGTTTAA -TATTTTGCGTTTCAGAGCATCTCTTTCGTTGTTACTGACAAGATTTGCAA -GCGACAAAACTTCAAAGAGGCACAGTTTGTTCTCAAAAAGGTGGATCAAT -CGTTCCAGTCAACATCGAATGACGTCATCAAGACAACCAACTCGTGCCCA -GCCAATGCCGACAAAACTTTGCTTGAGGCAATGAACATCATTGTCTCGGG -ACCAGCGTTCGAAAAGTATGCCGCTTTCAGAGATAATCAAGCTATTTCAT -CTCGTTTTCAGCAAAAATGTTATCACCGTTGGAGCATGCGTTCATTACCT -CATCGACCCAACTGGAGTCGAGTAAGAAACTTTAAGAAATTATCATATTA -GTATTTAATTGTTTTTTCCAGCGTCGCGTACAAGGAATACCCTGAAGGAC -AACTCTACTCAGGAGTTGGTGTTTCAAAGTCGGTGAAGACATTGGAAGGA -ACGGACAAGAAAGTTCCATCACTCTTCATGACAACTGAAAGTTAGTTTTT -CAGAAAATCTAGATTTTTTTCAAAATGTTATAAAATTGTTAATTTTCAGT -GAAGACAACATTGTTCCATCCGGATTATGCCCCACTTGTGGAACTTTTGC -AAACGTTCAGAGGTTTCAGCACAACTCTCAAAGCGAATTCTCCAGCCGCG -CAGAGAATTGAGAAAGCCTTTGTTGGACTGGATGTTGTCTTGAATTACGG -TGTGCACAAGGGTCTCGGAGAGGATGGTGTCGTTATGAAGATCCGTCGAT -TCCACACGTCAGCTAAGGAGACATGTTTTGAAGTTGAGAAGTCAACTCGT -GAATTCACGAACGTCTTTGACTACTTCAAAAAGAAGTATGGAATCACTTT -GAAGTATCCCGATTTATTCACCATTGAAGCGAAAGGGAAACAAGGAAAAA -TTCATTTCCCTGCGGAAGTTCTCCTTCTCTGTCCGAACCAGACGGTCACG -AATGATCAAATGATCAACAATGAGCAGGCGGACATGATTAAGGTAATTTT -ATATTTTAAAATCTGAATAATATCCCGAATCCTTTTTCAGATGTCAGCCG -CACAACCACATATCAGAAAGACGACAACTGATACTATCGTGAGAAACGTC -GGATTGGCTTCCAACAATATCTATGGCTTCATCAAAGTTGAAGACCCAGT -CAACCTTGAAGGAATGGTTCTTCCAAAACCTAAGATTGCGTTTGCCGGTA -ACCGACTCGCTGATTTGGCAAATCCGAAGTCTAGATTCCCCACCGACTTC -AATCGTGCTGGACAATATTACGATGCCAAGGAATTGACGAAATGGGAACT -GGTCTTTGTTCAAAACGAAGAAGTCCAGTAAGTTTCAGTTTGTAATTTTT -CATTTTATTGACTCAATTTCAGAGGACTTGCTAAGCAGCTCGCCGATGAA -ATGGTGAATAATGGTATGAAATGCAGCAACCCAACGATGAGTTTCATCAT -TAGAGGTGATTTGGAACCAATCTTCAAGAAAGCGAAGGCTGCTGGAACGC -AACTTCTCTTCTTCGTTGTCAAATCTCGTTACAACTATCATCAGCAAATC -AAGGCGTTGGAGCAAAAGTATGACGTGCTCACTCAGGAGATTCGCGCTGA -AACCGCCGAGAAAGTCTTCCGTCAACCACAAACTCGTCTTAACATTATCA -ATAAGACGAACATGAAACTCGGAGGACTGAACTATGCTATTGGGAGTGAA -GCGTTCAACAAGCCAAATAGATTGATCGTTGGATTTGTTACTTCTCAACG -AGTTGGTGGAAATCCAGATGTGAGTCATGTGTTACAGCTGCATAATCATA -TTTCATTTTTTCCAGTATCCAATATCAGTTGGATTTGCTGCAAATATGCT -CAAGCATCATCAAAAGTTTGCTGGTGGATACGTGTATGTTCATCGCGATA -GGGATGTTTTCGGATCCATCATCAAGGATACTCTCTTGACAATCTTCAAA -ACATGCACTGAGCAGCGCGGAAGACCAGATGATATCCTTTTGTATTTCAA -TGGAGTTTCCGAAGGTCAATTCTCAATGATCAACGAGGAATTCAGTGCCC -GAGTGAAGGAGGCGTGCATGGCATTCCAAAAGGAGGGAACCCCGCCATTC -AGACCACACATCACCATCATCGCCTCATCAAAGGCTCACAACGAGCGTCT -GTACAAATCCGACAAGGGACGTATTGTTAATTTGGAGCCGGGTACGGTCG -TGGACCATACCATTGTGAGCAATGTCTACACTGAGTGGTATCATGCCTCA -GCTGTTGCTCGCCAAGGAACTGCAAAGGCTACCAAGTTCACTCTCATCTT -CACCACTAAAGCAGGCCCACAAGCTGAGCCATTGTGGCATCTCGAGCAAT -TGACCAATGATCTTTGCTACGATCATCAGATTGTCTTCCATCCGGTCGGA -CTTCCCGTCCCACTGTACATTGCTGATCGTTACAGTCAACGTGGAGCAAT -GGTTCTTGCCGCCAATCAAGGGTAAGTGACAGTAAAATGTATACGACATC -TCATTTATTATTTTCAGTCCAATCTACAATGAAGGACAAATCGATCTCGC -GGCTACCAACAGTGCATATGGCTACGGAGAGAAGAAGCTCTTCACCACTC -GTTTCAATGCATAATTATCTGTACTCCTCCGTTTCTTTTACTTGGCTGTA -TAATGTTTTATTTCCGTCAACCCAGAATACTTTCGCTATGATTGTATATT -TTTTAGCATTTGGTCATTGTAATTTGTAATTATTGTCGGAATGGATAAAA -TGATTTAAGAATCAAATGCATCGCTTCTTGGACAATTCCTGTTGATAATC -TCATTCTGATATTTTCAAAAGTTGTGGTATTGATTTTAAAAATTAAAATA -TTTGCAGCTGCCGCTGTGACTGGAGAAGTTGATGTTTTATTTCTTCCAAT -TCAGCTGTTTGTACCTGTTTTGTAATGTTATTACTTTCTTTCGAACAAAA -TGTCATTCTTTTTCTGGCAGAAAATTCCGCTTTTTAAAAATTATTTTTAC -AACATTACAGATGGATCCTTCTGTTGTGTCTCGATTGGAGAATGTTGCGA -ATCGAATGGAGAATATATTGCTGAAATATGACTCGAACAAAAAAGGCAAT -TAAATAATTGTTCTCGAAATTATAAATTTCAAAAAAATCGCTTTTTAGAA -ACTCCGGTCGGCGCGACGCCTCAAATCATTAATCTTTATGACGATGCGAT -CTGTGAGAATCTCGTCTCGTTTTATGATTTATCTGCAAAAATTGGAGGAG -ATTTGAATCGCCTTGGATGCATGGTAAGGAAATATATAATATTTAATTCA -AATTTTATCGAAAATTATGTTTCAGACTAAGAATCTATTTTTCACGCTTT -TTTCGATGTTTTTTGTGGATTGCGTGTGGGCGCAAAAAAGCGGACAACGA -CGAGTTCGCGACTCTTGTGAACGATTTGACGACGGAAATTGTTGCATTTT -CCGATTTCAAGGAGAAAAATCGAAAATCCGAATTCTATAATCATATTTGT -GGACTTGAAGCTGCGGTTGGAGGTGAAAATTTGCCCCTGATTCCGAATAT -CTATGTGAAAAACTCTTCATTATTTTATATATTTCAGCTTGAAATCGCTT -GTTCATCCATTACTTTTTTCAAGCACACGCCATATTCTCATTGGAGCGCG -CCGTGTTGTGTCGATTTACGAAATTTTCCAATTTTTTCAATTTCAGTTTT -TAAACGAGTTTTTATTTTTGTGGGCTTTATTTTTGTGGGTTTTGCTTTTT -GGGTTAAAAAAAATCTTAAAAACAATCATAATTCTCAGGAAACTCAAATT -TTTCGCCGAAAAACCTATTTTGCGCGTGAAATCTGGTGTATTTTACCGTG -CCTAGACTATGTGTGAGAACACTGCCGGTCATACATCATATTTGACGCGC -AAACTGCAAAAATCGTCGGAATTATTTCGGGAACACAAAATTCTGAAAAT -GCGTATCGCGCAACATATTTGACGCGCAAAATATCTCGTAGCGAAAACTA -CAGTAATTATGTAAATGACTACTGTAGCGCTTGTGTGTCGATTTAAGGGC -TCAATTTTCAAAAAATCGAGATCCCGTAAATCGACACAAGTGCTATAGTT -GTTATTTGAAGAATTACTGTAGTTTTCGCTACGAGATATTTTGCGCGTCA -AATATGTTGTGCAATGCGCATTTTCAGAATTTTGTGTAAAAATTTTTGTG -TTTAGTGATTTTTGCAGTTTGCGCGTCAAATATGATGTATGACCGGCAGT -GTTTGCCCACATCGCCTAAGCACGGTAAAATACACCAGATTTTTCGCGCA -AAATGGGATTTTCGGCGAAAAATTCGAATTTCCTGAGAATTTTGGTCGTT -TTTACTATTTTTTAATGCAAAAAATGAAAATTTTTAAATTTTCTGAAATT -CACCGTCGTTTTTCACGAAATAAAAAAATTTCAAAAAATTGAAAATTCCG -CCACATCACATTTGACGCTCAACTTTTTTTAAATGAACAAAATCCGGATT -TTTCTGGGAAATTTGAGATTTATTTAGGTCTCGCAGCGAAAAAAAAATTA -GAGTTTGCGCGTCAAATATGATGTATGACCGGCAGTGTTTGCACACACAT -AGCCTAGACACGATAAAATACATCAGATTTTACGCGCAAACTGGCAAAAA -AATTGATTTTTTGGCTTTTTCGGACTAAACATTAGAAAAAAAGACTATAC -TCCAACAATTTTTTTCAGTTTTTTTTTGAAAAATTCCATATTTTCTGAAG -TTCAAATAAATATATATTTTTTTAAAGTTCAAAAAATTCAAATTAGCGCG -TTAAAAACGACGTATTCAGGCATCACATTTGACGCGCAATTTTTTTTTTA -AAGAAGGATTTGCGCGTCAAATCTGGCGAATTAGGTTTGTCGGCGGAATA -CACCGAATTTCACGCGCAAAATTTCAAACCTCAATGATAAAATCGGAGAG -CGTATTCGAGGAAATTACGTCTTTCAACGTCTCCGCCGGAACCACGACAG -CGAACAAGTTTTGTGTTGACTGAAAAAAAAATTAAATTTTTCGACAAAAA -AAATTAAATTTTTCAACGAAAAAAAATTAAATTTTTCAACGAAAAAAATT -AAATTTTTCAACAAAAAAAAATTAAATTTTTCAACAAAAAAAAATTAAAT -TTTTCAACAAAAAAAAATTTAATTTTTCAACAAAAAAAAATTAAATTTTT -CAACGAAAAAAAATTAAATTTTTCAACGAAAAAAATTAAATTTTTCAACA -AAAAAAAATTAAATTTTTCAACAAAAAAAAATTAAATTTTTCAACAAAAA -AAAATTTAATTTTTCAACAAAAAAAAATTAAATTTTCCAACAAAAAAAAA -TTAAATTTTTCAACAAAAAAAAATTAAATTTTTCAACAAAAAAAAATTAA -ATTTTTCAACAAAAAAAATTAAATTTTTCAACAAAAAAAAATTAAAATTT -TCAACGAAAAAAAAATAAATTTTTCATCAAAAAAAAATTCAAATTTCCGC -GGAAAGTGCAAAAAATTTACAGAATATTCAAATCGTTCACTTCTCCCGCT -ATCATCTTCACGCAATTCGACACATTTTCGTCGCCATTCGATGCGGGTTC -CCAGTGATGTATCGATTTTCAGTTGATTATCGATTTTTCGCTCCACGTAC -AGTACACTGAGTTCCGCTTCGAGGCCATCTGAAATTTTTTTTTTAATTTT -TTTAACGATTTTTTTTTCAGAAAATCAATAAATCTATTCAGCTGTTTTTT -TTTAACTTTTACACAATTTTCCGTTTGAAAATGTCAAAAAAATGTGTTTT -TGAGCCACATTTTATTCAAAAAATTTTGAAAAATTCCCTGCATTTTCGCT -GTGGGACCCAAGAAGTGCGTGTGCCTTTAAGAATATTTCAATTTTTTTAA -AACTTAAAACAAAGATTTAAAAAATTCTGCTTTCTAAAAATAAATAATTA -TTTATTTTTTTGTGTATTTGTTTGGAAAAAATCAATATTTATCGATTTTT -GTGAATTTTTTTGAAAAAAATCAATATTTATCGATTTTTGTGAAATTTTT -TGGGAAAAATCAATTATTATCGATTTGTGTGAATTTTTAAGAAAAAAATC -AATAATTATCGATTTTTTGTGATTTTTTCGCAAAAAAATCAATAATAATC -GATTTTTGTAAATTTTTTAATCGAAATTCGGCTTTTTCCGGTAAAAACAT -CAAAATTTCGCAAAATTAATCTGATTTTTTCTGCGAAAAATTTAAATTTC -TCATAAAACTTTCGAAAAATCGAATATTTTAAAAATCAATAATTTCGATT -TTTGGTTAATTTTTTTGGAAAAAATCAATAATTATCGACTTTTTGCGATT -TTTTTTTTGAAAAAAATCAATAATTATCGTTTTTTTTTAATTTATTGGAA -AAAATCAATAATTATCGAATTTCAGTGAAATTTTTGGAAAAATCAATAAT -AATCGTTTTTGTGTGATTTTTTTCGGAAAAAATTAAAAATTATCGTTTTT -TGTGAATTTTTTGAAAAAATTAATAATTATCGACTTTTTTTGAATTTTTT -TTTGGAAAAAATCAATAATCATCGATTTTTTTGTGAATTTCTTGGAAAAA -AATCAATAATTATCGATTTTTCCGATTTTTTCCAAAAAAATCGATAAATC -AATAAATTTTCCTTACGCCACGTGTCAATTACAGTCTTCCCCACGTGGCA -AAACGTGTAGAGCTCGCATTTCGAATTGGTTGCCGCCGAAATTTCGCGTT -CGATTTTTCGAGTTTCCTTGTCTTTCTGAAATTTTTTTTTTCTAAATTTT -CTGAAAAATGTTCTTCTGTAAAACCTCTTTTTCCTCTCTTCTCCGCGCCA -TTTCGCTCTTTTTTTTATCCTTTTCCAGCGTTTTTCTCTCTTTTTCAGCT -TCCCGAGCTCGTTTCGCATTTTCTCGGAGTTCCTGAATAAGTTTTAAATT -TTTAAGGGGAAATTTGCTATTTGGAGAGTAAATATTTTCGCTGTGAGACC -CGTGGACCTGAAAATTTTGATTTTCCGCTTAAAATCAACTGAATTTCGCT -TAATTGTGATGTTTTAAGCTGAAAAAGCTGAATTTTGATTTTAAAAAATT -GAAAAAAATTAATATTTTTAAAGGCGCATTTATTGATTTTTTTTCCAAAA -AAAATTTACAAAAAAATTGATAATTATTGATTTTTTCCAAAAAAATTAAC -AAAAATCGATAATTTTTTTTCCAAAAAATTCACTGAAAAATCGATGATTA -TTGATTTTTCCAAAAAAAATTCACTGAAAAATCGATAATTATTGATTTTT -CCAAAAAAAAAAATCACAAAAGTCGATAATTACTGATTTTTTCCAAGAAA -ATTTTAAAAAAAAACGACAATTATTGATTTTTTCCGAAAAAATTACAAAA -AAATCGACAAGTACTGATTTTTTCTGAAAAAATTACAAAAAATCGATAAT -TATTGATATTTTACAAAAAATCGATAATTATTGATTTTTTACAAAAAATT -CACAAAAAAATCGATAATTTTTAATTTTTTTCAAAAAAAAAATCACAAAA -AATCGATAATTATTGATTTTTACCAAAAAAAATCACAAAAATCGATAAAT -ATTGATTTTTTCCAAAAAAATTAACAAAAATCGATAATTATTGATTTTCC -CAGAAAAAATTCACTGAAAAATCGATAATTATTGATTTTTTCCGAAAAAA -TTCACAAAAAAATTGATAATTTTTTAATTTAAAAAAAAATCACAAAAAAT -CGATAATTATTGATATTTTACAAAAAAAAATTACAAAAAATCGATAATTA -TTGATTTTTTACAAAAAATTCACAAAAAATCGATAATTTTTAATTTTTTT -CAAAAAAAAAATCACAAAAATCGATAATTATTGATTTTTTCCAAAAAAAA -TCACAAAAATCGATAATTATTGATTTTTAGGCGGAAAAGCCGAATTTTTA -TCAATTTTTCAAAAAAACAATCGATAGTTTTAAAGGCGCATGCGCTCTCC -TGGGTCTCACAGCGAAAAGTGGATTTTTCAAATTTTTTGGATAAAATTTC -GCTGAAAAACGTATTTTTTTGACAGTTTTAAAGGGAAAATTGTCTAAAAT -CAAAAAAAAATTGTTTTTTCAACAATTTTTTCAGTTTTCGTAAAAATTTC -AGTTTTTTTTTCGCGAGAAAAAAACCAATTCTCGATTGAAAAATCAGAAA -AAATATTTTGGTATAAAAATATTTTTGGTATTACGATATTTTGGGTCCCA -CCTCGAAAATTTAGAGGATTTTTCAAATTTTTAAGATTTTCTTCAACTTT -TAACAATTTTTTTCGGAATAAAAATCGATTTTCGCTGCGAGACCCAAAAA -AAATAGATTTTCTCGAATTTTGCGATGGAACTTTTGATTTTTCGGTGAAA -TTTTCCAAAAAAATCGCAAAATGTATCAAAAAATCAATACTTTCTGCGTC -TCCTTCTCATCGTCGGTTAGTTTCCGTTTTTCGGGTCTCGCCACGACATT -TATGTCAGTATTCTCTTGTGAGCTTGAGCACAACGAGTATGAGCTCGTCT -GATTCTGACGGATCATTTCGTCAAGATTGAGCATTCCCTCATCCAGCCAT -GTTTTTGCCGCAGCTGGAATTGCATCCTTATTCACTGCGTCGACGATGGA -AAAGCTCGCGGAGTACCTGGAAATTATCGATTTTTTATTGATTTTTTATC -GGTTTTTATCGATTTTTTTGATGGGGAAAAATCGGAAAAATCGATAAATT -TCGATTGGAAAATTCAAAAAACTTCGGGTCTCACAACGAAAATTGATTTT -TTTTCTTGGATTTTCAAATTTTTAAACTTTTGTTGTAACAACAGTGGAAA -TTTTTCGAAAAAAAATCAATAATTATCGATTTTTTGAAAAAAGGCAATAA -TTTTCGATTTTTTGAAAAAAAAAATCAATAATTATCGATTTTTTGTGAAT -TTTTGAAAAAAATCAATAATTTTCGATTTTTTGTGATTTTTTTTCGAAAA -AATCAAAAATTATCGATTTTTTGTGGATTTTTTGAAAAAAATCAATAATT -ATCGATTTTTTGTGGATTTTTTGTAAAAAATCAATAGTTTTCGATTTTTT -TTGGAAAAAATCAATAATTATCGATTTTTTGTGGATTTTTTGAAAAAAAT -CAATAATTATCGATTTTTTTTTGAATTTTTTGAAAAAAATCAATAATTTT -CGATTTTTTGTGATTTTTTTTCGGAAAAATCAAAAATTATCGATTTTTTG -TGAATTTTTTTTTGGAAAAATCAATAATTATCGATTTTTGTGATTTTTTG -TAAAATATCAATAATTATCGATTTTTTGTGATTTTTTTCGGAAAAATCAA -AAATTATCAATTTTTTGTGATTTTTTTTTTGGAAAAATCAATAATTATCG -ATTTTTGTGATTTTTTTTGGAAAAAATCAATAATTATCGATTTTTGTGAA -TTTTTTGTAAAATATCAATAATTATCGATTTTTTTGTAATTTTTTCGGAA -AAAATCAATAATTTTCGATTTTTTGTGAATTGATTTTTTTTGGATTTTCA -AAATTTTAAACTTTTAAAATAAATTTTTCCATAGTTTTTTGTTGAAAAAT -TCCTGAAATTTTGAAATTCAATTAATTTTTTCTTTAAAAAAATCGTTGAA -AAATTAGTTTTTTGGAAAAAAAATCAGCGAAAATAGATTTCGCTGTGAGA -CCCAATTGGGCTCCTCAAAGTCCCTGCGCCTTTAAAATATCGTTTTTTTT -TTGTTAAATTTTCCCGCGAAATTAATCAGATTTTTTCTGCGAAAAAGTGA -AATTTCTCAAAGAAACTTTTGAAAAATCAATTTTTTTAAAAAGAAAACCC -CTAATTTTTCCGTTTTTCCCGCTAAAAAAACATCTAAAAAATTTGAAAAA -TCCACAGAATTATCGCTGTGGGACCCAAAGTGCATGCGCCTTTAAGATTA -TCGATTTTTTTCAAATTTTTCAATCGAAATCAGGTTTTTTTTTTCAGCAA -AAATCATAATTTTGCGAAATTAATCTGATTTTTTGTGCAAAAAATTCAAA -TTTCTCTTTTTTTACGTTTTTTCGCCAAAAAAACCATCTAAAAAATTCGA -AAAATCCAGAGCATTTTCGCTGTGAGACCCAAGTCCGTGTGGCTTTAAAA -ATATCGATTTTTTGTTAAATTTTCCAATCGAAATTTGGCTTTTTTTCCGG -TAAAAAATCATAATTTTGCGAAATTAGTCTGATTTTTTGTGCGAAAAAGC -GAAATTTCTCATAAAACTTTTGAAAAATTGATTTTTTTTTTCTGGAAAAA -CCTATTTTTGTCGTTTTTTCGCTAAAAAACATCTAAAAAATTCGAAAAAT -CCCCAAAATTTTCGCTGTGAGACCCAAGGCTCCTGAAAGTCCCTGCGCCT -TTAAAAATATCGATTTTTTGTTAAATTTTTAATCGAAATTCGGCTTTTTC -CGGTAAAAACATCAAAATTTCGCAAAATTAATCTGATTTTTTCTGCGAAA -AATTCAAATTTCTCATAAAACTTTCGAAAAATCGATTATTTTCCGCTAAA -AAATCATCTAAAAACTCGAAAAATCCAGACAACTTTCGCTGCGAGACCCA -AGTCCATGCGCCTTTAAAAATATCGATTTTCTGTGAAATTTCTCACAATT -TCTCCAAATTTCCCGCCGTCACATTCGTCGTTTCCTCAATCATAATACAG -TCCTCATCATCATCATCATCCGAGAGGACTACAATCGCCTCGTCCATCTG -AATAGTGGGAAAATATCGATTTTTTGTAGAAAATCATATATTTAAATTGA -TTTTTTTACAATAAAAAAAATTTTGGGGATTTTTTTGGAAATTTCGGGTA -AATCGTGTAAATCGTGTAATTTAAATTCATTTTTGTTTCAAAAAGTCAGG -GGGGGGGGGGGAAAGAAAAAATTTTTGACAAAGCGTGGAGCGAAAAAAGG -AGTAAATATACAGTCGCGAAAGAACGATCGCTCCGCCAATTTTGCATGCG -GCAAAGGGGCGTGGTTTATTGGGGGCGGGATTCCGGCGCAACCCTGCGGC -ACGCTTTTTTCTCGCTTTTTTCGTGCGGTAATTTTCAGTTATTTTTATTC -GTTTTCTGTTCGAAATTTCACGATTTCGCTCGATTTTGTTCGTTTTTTCG -GATAAAAAAGTGTCCAACTATTTTTTAAATGAAAAATAACCAAGTTTTCA -CAGATTTTACCCGAAAAATGCTTTGTTGGTCTCTCTTTCTGTAAATTACG -ATTGTTAAGAGAGAAAATGGGGGAAAAAAAGGAAAATGTGAAGAGAAAGC -GTTTTTTTAACGTTTTGCTTCGTATATTACAGAAAAAGAGACAAACGAAG -CATTTTTTCAAGTAAAAACTGATAAAACTTGGTTATTTTTCATTTAAAAA -TAGACACTTTTTTATCCGAAAAAACGAACAAAATCGAGCGAAATCGTGAA -ATTTCGAACAGAAAACGAATAAAAATAACTGAAAATTACCGCATGAAAAA -AGCGAGAAAAAAGCGTGCCGCAGGGTTGCGCCGGAATCCCGCCCCCAATA -AACCACGCCCCTTTGCCGCATGCAAAATTGGCGGAGCGATCGTTCTGTCG -CGACAGTATGTAACATGTAAGGTAACAAGGTGGGTTGGTTTTCATGAGAA -AAGGGGGATTTTTTTCCGATTTTTCAGGTGCAGAGCCCACGCTCTCCTCA -AAGCCGAATAATTATTAGAGCGCGCTTGCAGCGACTCGCGTTTCTGCATC -CGCGGTATTTTGACTTTCCACTGAAGAAAGCAGATATTTCAGATTTATCG -AATTTTTAGGTTTAAAATTTTTTTTTTCTGTATTTTTCGAACAAACCTTT -TGTCAAACAGTAAAAATCGAAATTAAAATGACTAAAATGAACTTTTTTTG -TCCACTGGTTGTGAAATGGTTTGAATTTGAAGAAATCAACGGGGTTTTTC -GTATTTTCTGAATATTGTTCTATTAAAAATTGGTTTTAATACATTTTTGA -CTTAACATTAGGGTCAAAAAATGGTTTAAAACCGATTTTTAATAGAAAAA -TATTCAGAAAATACGAAAAATCCCGCTGATTTCTTCAAATTCGAACCATT -TCGCAACCAGTGGACGAAAAAAGTTCATTTTAGTCATTTTAATTTCGATT -TTTACTGTTTAACAAAAGGTTTGTTCGAAAAAAACAGAAAAAAAAATTTA -AAAGCTAAAAATTCGATAAATCTAAAAAAGCTGCTCATTTCAGTGGAAAG -GCAAAATACCGCGGATGCAGAAACGCGAGACGCTGCAAGCGCGCTCTAAT -AATTATTCGGCTTTGAGGAGAGCGTGGTGCAGAGCCCCAATTTTAAACAA -AAAATAGCGGAAAAAAATATTTAAAAAAACGAGGATTAAATAAAAATTAA -ATAATGTCAGCAATGTTCATTGGCATCTCGTCGATTTGTGTCGAGTAGTA -CTGCTCAATGTCGCGGAGAATTCGTACGTCGTCCTGTTTGACGAAATTGA -TGGCGACTCCCTTGCGGCCGAAACGTCCCGAACGGCCGATACGATGGATG -TAGAGCTCACGGTTGTTCGGCAAATCGTAGTTGATTACCTGGAAAATTTT -TTGATGAAAAGCTGATTTTTGCGATTTTCGCCATTTTTTGACCTAAAAAA -TTGGCGAAATTCGGAATTTTTAAACAAATTTTGACGTAAAGTAGGTTAAA -ATTCCAAAATTTTACGGTAAATAGCCTGAAATGCTTTAAATTGATCCTTT -TTTGCACAATTTTAACAATGAAAACCTGTATTTTTCGCTACTTTTAGTTG -AAAAAAGCTTCCAAAACGAGTAAAATTGGCAAATTTTATCGATTTTCGCA -AATTTTTCACCTAAAAATTGAAGAAATCGGTATTTTTAAACAAATTTTGG -CATAAAGTAGGTTAAAATACCAAAATTTTACGGTTTTTAGCAATTTTTGA -GTCAATTTTCAAAATGTTCCAGTATTTTTGCAACTATTTGGTTTTTATTC -ATCTATGTTCTTTGAAAATTCTTTTTTTTAAGGTGAATTAGGTTAGAAAG -GGGTCGATTTTGCAGAATTTTGACAGATTTCGCATGAAAATTTGAATTTT -CAGGCGAAAATCATCAAAAATATGATTTTTTGCTACTTTTAGTTGAAAAA -AGTGTACAAAACGAGTAAAATTGACAAATTTTTATCGATTTTCGCCATTT -TTTCACCTAAAATTTAATTTTTTTTTTCTAGTGAAATAAGTTAAATTCAG -TGTTAAAATGTATCTATTTTCGCTCAAAATTTGAAAATTTTCAATTTTTC -ACTGAAATCCATGAGAAACCAGTGAAAAAATTTTTTCAATTTGAAAATTT -GCAGTGAATTTTATTTTTTCTGCTAATTTTTCGGTGAAAAATGCACTTTT -TCACGAGAATTAGCGGGATTTTTGTATTTTCAAAGTTTTTAGGTCAATTT -TCAAAATGTTTCTCGCTGAAAATTGATTTTTTGTCAATTTTTCACATATT -TTCTATGAAAAATTCCACCTTTTTGCAGAATTTTGACTAAGAAATACGAT -TGTCGCCTAAAAGTTTGAATTTTTCAATTTTTTTTTGCTGAAAATCATCA -AAAATACGATTTTCAACAGAAAATGATGAAATTTTCGCTATTTTTCGCGG -AAAATCATTGATAACCTGATTTTTTCGCTACTTTTAGTTGAAAATAGTTT -ACAAAACGAGTGAAATTGGCAAATTTTATCGATTTTCGCAAGTTTTTAAC -CTAAAATTTAGTTTTTTTCTAGTAAAGTAGGGAAATTCAGTGAGATTTTT -TAATTTTTCACTGAAATCCATGAGAAATTAGTGAAAAAAAAATGTTTTTG -GCCAACTTTTCACATATTTGATATGAAAAATGCCGTTCTGAACAAAAAAA -GCTGTGGAAATTCAACTTATTGTCAATTTTCCGCTGAAAAATTCATTTTT -TTTTCTCAAGAATTCGCATTAAAACTGCGGAATTTCTTGTATTTTCAGCA -GAAAATGATGAAATTTTCGCTATTCTTCGCGGAAAATCATTGAAAACCTG -ATTTTTTCGCTACTTATAGTTTAAAATAGTTTACAAAACGAGTGAAATTG -GCAAATTTTATCGATTTTCGCAAGTTTTTAACCTAAAATTTAGTTTTTTT -TTCTAGTAAAGTAGGGAAATTCAGTGTCAAAATTTACTTATTGGGTAAAT -GGAAATTGTGAATTTCCATTGTAAAAATTTCTGCTGGGAAATTCATTTTT -CCCAAATTTTTCATATAATTAGGCTGAAAAATGCAATTTTTCACAAGAAT -TCGCATTAAAACAGCGGGATTTTTTTTGTATTTTCAACGGAAAATGCTAT -TTTTTGCGGAAAATCACTGCAACTTTTTCCTCACGAGGGCCAAGGAAAAG -TGGTTTCTAGGCCATGGCCGAGGGGCCGACAAGTTTCAGCGGCCATTTAT -CTTGCTTTGTTTTTCGCCTGTTTTCTTTCGTTTTTCACAGCTTTTTCCCG -TTTTTTCTTATTAAAACTGATAAATAAATATTTTTTGCAGATGCTAAAAC -AATTTCCAAGTAAAAAAAATTATGTATTCAGTCGGCAAGCAGCGGTGAAA -GTGGGCAATGTAAAATGATGGATTACGGGAATACAAAACCTGAAATTTTT -CTGAAACATGATACATATGCTGCTTAGATGCTGATACTACCTGATTTTCA -TAACGAGACCGCTGAAAAGTTTTGAGGTTTCCACAATTCAACTTTTTTGG -TGAAAAAATCGAGATTTTCGCACAAAAAGTTGAATTTTGAAAACCTCAAA -ACTTTTTCAGCGGTCTTGATATGAAAATCAGGTAATTTCAGCATCGAAGC -ATCATATGTATCATGTTTCAGAAAAAGTTTAGGTTTTGTATTCCCGTAAT -CCATCATATTGCATTGACCACTTTCACCGCTGCTTGCCGACTGAATACAT -AATTTTTTTACTTGGAAATTGTTTTAGCATCTGCAAAAAATATTTATTTA -TCAGTTTTAATGAGAAAAAACGGGAAAAAGCTGTGAAAAACGAAAGAAAA -CAGGCGGAAAACAAAGCAAGATAAATGGCCGCTGAAACTTGTCGGCCCCT -CGGCCATGGCCTAGAAACCACTTTTCCTCGTCCCTTGTGAGGAAAAAGTT -GCAGTGGGAAAATGCTATTTTTCGCGGAAAATCGAAAATGTACCAAGGAC -ACTTGCGGAACATCAAGTCCTCTCGCCCAAACATCAGTAGAAATGAGGAC -ACGAGTGGTTCCAGCTCTAAACTCCTTCATAACCTCATCACGATCCTTCT -GCTCCATATCTCCATGCATCGATGAGACGGTAAAGTTGGCCTCCTTCATC -TTATCAGTCAACCAGTCCACCTTTCTACGTGTATTACAGAACAACACCGC -CTGAGTGATGGTTAAGGTGTCGTAGAGATCGATAAGCGTGTCGAACTTCC -ACTCCTCCCGATCAACTGCGACGAAGAACTGCTTGATGCCTTCCAGTGTC -AACTCGTCACGCTTCACAAGGATCCGAATCGGATCCGTCATGAATTTACT -CGTCATCTCCAGAATCTCATGAGGAAGCGTCGCGGAGAGCAGCACCACCT -GGGCTCCGGGCGGTAGATAGCGATAGATATCGTAAAGCTGCTCCTTGAAC -CCCTTGTTGAGCATCTCGTCGGCTTCATCGAGCACGAGAAGCTTGATGGC -GCGGGTGCGCAGGTTTCGACGGCGAATCATGTCGAAAACGCGTCCCGGAG -TACCGGAAACCACGTGCTGGCCGTAGTCGAGCTTTCGGATGTCCTCGCCG -AGATTGGTGCCTCCGATACAGGCGTGGCACTGGACATTCATATAGTCGCC -GAGCGCCAGCACGACTTTTTGAATTTGAACTGCCAGCTCTCGTGTCGGCG -AGAGAATCAGAGCTTGGGTCTCGCGGACCTGGGTGTCTAGCGATTGGAGT -ACGGAGATCGAGAATGTCGCCGTTTTTCCTGTTCCGGATTGAGCTTGAGC -GATGACGTCACGAGCCTTGAGAATTGCGGGGATGGCGCGTTGCTGGATGG -CAGATGGCTTTTCGAAGCCGTACGCGTAGATTCCACGAAGCAAGTCTTCT -CTGGAAATCGAAAAAAATTTTGAATTTAGTTTTATATTTAAAGGTGGTGT -AGTCGAATTATTTATTTCTTTATTAGACTCAAAATTGTCTGAAAAAAAAG -TGTACAAAACGAGTAAAATTGGCGACTTTTATCAATTTTCGCCATTTTTC -ATCTAAAAAAATCGACGAAATTCGGAATTTTAAACAAATTTTGACGTAAA -GTAGGTTAAAATTCCAAAATTTTACGGTTTTTAACAATTTTTCCACCTTA -AAGTTGGTGTAGTCGAATTATTTTTTTCTTTATTAGACTCAAAATTGTCT -GAAAACACCGAATTTCATAATGAAACTTCTTGAAAACTGAAAACTTTTCA -AAAAAAAGTTAAGGCCTCTTGAAAAAAGGCCTAAAATTAGTGAAAATTTG -AAATTTGACCAACTTGTCTGTCAAGCGGCTGGAAACAATTTTCTTTGAAA -TTGTCGTCTAATTTTGGGTATACAGGTCGATTACCTTGCGTTTTCAGCTT -TATTTAGGTATTTAAAAGTCGATGGACGAAGAGATTTGTCAAATTTTTTT -CACCAACTATCTTCGTCCATCGACTTTTAATACCTTAATAAAGCTGAAAA -CGCAAGATACGACCTGTATACCCAAAATTAGACGACAATTTCAAAAAAAA -TTGTTTCCAGCCGCTTGACAGACAAGTTGGTCAAATTTCAAATTTTCACT -AATTATAGGCCATTTTTCGAGCCGCCATAACTTTTTTTTGAAAATTTTTC -AAGAAGTTTCATTATGAAATTCGGTGTTTTCAGACAATTTTGAGTCTAAA -AAAGCAATAAAAAAAATTCGACTACACCAACTTTAAGGTGGAAAATTTTT -TAAAAACCGTAAAATTCTGGAATTTTAACCTACTTTACGTCAAAATTTGT -TTAAAATTCCGAATTTCGTCAATATTTTAGATGAAAAAATGGCGAAAATC -GATAAAATTTGCCAATTTTACTCGTTTTGTACACTTTTTTCAACTAAAAG -TAGCGAAAAATCATGTTTTTGATGATTTTCAGCTGAAAATTCAAATTTCA -GGCAAAATTCTGCAAAAAAAGGGTAATTTTTCAGAGAAAATATGGGAAGA -ATTGAAAAAAAAAACTGTTTTCAGCAAGAAAAATGTTTGAAAATTTACCT -TTAAATTTTTAAAAACCGTAAAATTTTGGAATTTTAACCTACTTTACGTC -AAAATTTGTTTAAAATTCCGAATTCCGTCGATTTTTTTAGATGGAAAAAT -GGCGAAAATCGATAAAAGTCGCCAATTTTACTCGTTTTGTACACTTTTTT -CAACTAAAAGTAGCAAAAAAATAATGTTTTGAGGCGAAAATTTGTTTTCA -GCGACAAAATTCTGCAGAAAAAGTTCAATTTGAAGCTTTTCTGGTTATTT -ATAGAGAATTTTCCGTTAAAATCGATAATTCAATACCTCAAGCCCATTTT -GTCAAAAGTTGGGATAATTGAGACCTCCTCAGACGACTCGAACTCCACAG -TCGCCATATCGTCGTTTTTCTTTTTATTTTCCGCCATTTTTGAAGGAAGA -ACTCTGTAAAATCGATAAAAATGAATATTTTCGAGCATTTTTGCAGAGAA -ATTCAGCATTTTTAGGTGGAAATTATCAAAATCAATGAATTTACATCGAA -AAAATCAAGAAAAACGTGTAAAAACGATAAAATTGATTATTTTCGGGCAT -TTTGCAGAGAAATTCAAGATTTTTAGGAGGAAATTAACAAAATAAGTGAA -TTTACATCGAAAAAATTAAGAAAAACCTGTAAAATCGATAAAAAACTAGT -AAAAGAGCAAGATTTCGAATGTTTTCGAAAATACCCTGTTTTTCGAGCAT -TTTTGCAGAGAAATTCAGCATTTTCAGGTGGAAATTTACAAAATAAACGA -ATTTACATCGAAAAAATCAAGAAAAATGGTGATTTATCGGCTATTTTCGC -TCATAATTCGTAGGATTCGATTCGAAACTAAAATTCGAAATTCGAAAAAC -ATGGCCGTGGCCTAGCGTTCCCCTCCTAGTCCACGGCCGCGCACGATTTA -CGGAGAGCACGATTATTGATCGATGACACATGGTTTCCGACTGTTTTTCC -TGTTAAATTTACCCTTAAATCACAATTTTCCATAGAAAATGGGTGGAATT -TTCTCGAAAAAAGAGAAATCACCAAAATCGGCGCCGGTTTCCGATCAGGA -TAATGCGATTTTGGTTTGTTTAATGAGGTTTTTCACATGGAAATTATTAT -TTTTTTGGTAATTCCAGGCGCTCAAAACACAACGGGACAAAATGAAGCAA -ATGATCAAGCGAAAAGAGAATTGTTTGGAGAAGGAACGACAATTGGCAAA -GCAGCTTATAAAGGATGGCCGGAAAGAGTAAGAAATTTCAGAAAATTCAG -TTTTTTTTATTAAAAAAAAAAAATATATATATAAATTTTTAACTAATTTC -AGCCGTGCTTTACTGCTTCTGAAGAAGAAACGCTACCAAGAGAAGATTAT -CGATCAAACCTTGAACCATCTTAGCAAAATCGAGCAAATGGTATTGAAAA -ATCAGAAAAAAATAAAAATTTTCCAGCAAAAAAATCAATAAATTTCCAGG -TAAATGACCTAGAATTCGCAGAAGTTCAACAGCGAGTAACCGATGGCCTT -CGACAGGGAAATGAAGCGCTGAAAAAGATGAATCAACTATTCGATATCGA -TGAAATCGACAGGATTATGGAAGAAACCAAAGAGGCGGCGGAATATCAGG -AAGAAATCTCGAATATGCTGTCCGGCCAGCTTTCCAACACGGATGTCTCG -GACGTTGAGAAGGAATTGGAGGATCTGTTGGCGGCGGAATGGGGCACAGT -TCAACTTCCAGAGGCTCCGAGCCATGAGCTGCCTGAAGCAGAGCGGGAAC -GGCAAAAAGGTTGAGATTTGCCGAGAAAATTCCTAAATTTTCCCTAAATA -AATAATTTTTTTTCAGAAAAAGAGAAGCCACGTCGCGAGAAGATTGCTCT -GGAAGCCTAAATATTGCTTGTTACTGTGAATAAAATAAATTCATTATATT -ATTATATTTTTTATACAATTTTGTCTTACTGGCGTTGTTCTGAACGAAAA -ATTCGTTTAAATAACGCTGTAACAAAAAATCTCATTTTGCGCGTAAAATA -AAATGCCAGTGACGCAATCACCACGACGAAAAATCGCACAGTTTTGGAAA -ATTGCGGTTTTTCAAACTTTTTTTCGCTTTTTTCGGATGCTATTCAAGCG -GCTATAGACTGTTCAAATAGAGATAGAACGGTCAGAAAATGAGAGACATA -GACAAATAAAGAGACAATTTATTGACTTTTTAGGCTATTCTTTGTTGGAA -ACCAACAAATTTTGTGTTCCCAGGCTTTTCTTTGCAAATTCTGAAGGGTT -CTTCTTTGCAGATGCGTCGACGTGTAGCTCTGGACAATGACGAGCATGAT -GGTAAGTTAAAAAATTGGAAAAAAAAACTTTGGTTTCTATTAAATTTTAT -TATACTTATTCCCTTTTTATAATTAAAGGCGTCTAGCTCATTCAAGCTCA -TTCACGACGTTAGTTGACGCATTCCTCCTTGCACGCATGGCCTAGTGGGT -TAAGGCGCTGAACATCACTCAGAAGTCCACAAGTTCAAACCCAACGAGGC -TCCCCCGCTTTTCTAACCCTAGCTTGAGCAATCAAATCGGAACGCGTCGG -AGCTGTCTCGGAGCCAGAAGCCTCATCAAATATTTTGATTGCTTCCAAAC -AATCTATCGCACGTTTGTGCTCCTCATTTCCGTAATGACGTGTGCATGCG -TAAGCTTGATCTTTCCAGTTTTCTAGGTGACTCATTAGAGCAATCGAGTG -AGCAACTCGTTCATTCGGTATTTCATGAGCCAATTGCTATGCGGGACGCG -GGGCTTCTGGAAAAAAATTAAACAAATATTTTTCGTTTTTTTTTCCACAT -GTGTGGATCTCAATTTATTTCTTCTTTTTTTGTTTACCTCATTTTATAAA -ATTCTCCTTTTTTTCTCATTAATTTTTCTGTGGCTTTTTCAAAGATCTTT -TTCAGATTTTCATCTATTTGTTTTAATGTGGAGCAAAATTGAAATTTGTC -TGGTAGATACGGTAGCTTTAAAGGCGCATACTAAATTTAAAGTGACAAAA -TAAATATTTAGTTCCATATGGAATTTCAATTTTTGCTGCCAGGCTGTCCC -ATTACGGTTTGATCTACAAAAAATGCGGGATTTTTTTTGGCCCAAATAAT -GTGACGTCAGTGCGTTCTTAACCATGCGAAATCAGATGAGAACTCTGCGT -CTCAACTCCCGCATTTTTTGTAGATCTACGTAGATCAAACCAAAATGGGA -CATTCTGACACCAGGTATTCGCCGCGGAACCAGTTTTATACCGTATTTCG -TATGCGCCTTTAATTCTACCGTACCCGCTTCTGGAAGTTTGGAAGTTTGA -AAAACTATTAAATAGAATTTATTAATTTTTGCATATTACTTTGTGCAGAA -TACCTCTAAAAATATTAAAATCCAGATAAACATGGTTTTTAAAATGTTTT -GCACAAAAAGCGATGATTTCGCTTCGAAGCCACTTTTATAAAACGCCTTG -TGCGCCTTTAATTCCACCGTACTCGCCAAAATTAAACTGAATGAGCGAGT -TTTGAACTAATTTTTACGAAAAAATCACGTTCTGATCGGTTCTGGTCTTC -CTCTAAAATCGGTTCTGGTCTTCCTCTTTGAATTTTCGCGCTCCATTGAC -AATCGCCTGCCGGACTGGGAAAGCCGTGTACTCCACACGGACAAGTACAT -TTAGTTTTACAACTAAAATCGAGCCGCGACGCGACACGCAACGCGCCGTA -AATCTACACCAGATATGACCGAGCCAAAATGGCCTAGTTCGGCAAATTCT -TCCATTTCAATTTATGAGGGAAGCCAGAAATTCGTGTATTTTTACAAAGA -AATGTGAAAAAGAAGCTAAAATTTCAATGAAATAGAGATTTTTCCCGGAA -TCTCACAGTTTCGCAAAATACTATGGATTAAAAAACGCTGAAACCCAAAT -TTGCGCGTAAAATTCAATGTATAGCGAACATTCACGGATTTCTGGCTTTT -CTCATATATTGAGATGGAAGAGTTTGCCGAACTAGGCCATATCTGGGGTA -GATTTACGGCGCGTTGCGTGTCGCGTCACGGCTCGATTTTAGTTGTGAAA -CTAAATGCATTTGTCCGTGTGGAGTACACGCGTTGTCCGGCGGGCGATTG -TCAATGGAGCGCGAAAAATTCAATATGGAAGGCCAGCACCCCGTGTTAAC -ATTTAAAAATTACAAGATTTGCCCCCTCAAACATCCCTGGAAAAACTAGA -AAAACCTCGTGTGCTTGCCTGACAACAGCTGTTCACCGACAAAAAGATGA -CGGGGAGGGCTTCAACAGAGCTTGTGTTTCCTCGTCAACTCTTTCGAGAA -CTGACAGCACTTTTCATATAACTCATCACTAACTTTCGCTGCTCGTGGCG -GTTTTTTTTAGTTCCCCAGTAATGAGTCAATTTTGTCTGTTGCTCAGAAC -TCTCAATTACCGATGCTATTAGCGGAAGGACTTTTGGAGCGCCGGAGCCA -GAGCAAAATTCATTTTTATTTGAAAAATGAGTGATGAGTTTTTCTCTCTG -TTTTTCCATGTTTTTCTCGTTATTAGGCTGTAACTTTCCACATACACTTG -GTGTCAGAGAGTCCCATCACGGTTTGATCTACAATAAAAGTGTGACGTCA -GCACGTTCTTAACCTTGTGACAATAGTTGAAAAATCTGCGTCTCGTTTCC -CGCATTTTTGTAGATCACACCGTGATGGGACTCTCTAACACCACGTACAC -ATGAAAATTTCGCTGAGAACAAATTTTTGCGCGTCAAATCTGATGTATCC -GGACTGTACCGATATCAATACATCGAATTTGACGCGCAAACTCCGTTTTC -ATGGGGAATTGTTGAAAAAATTGTTTAACTTCCGGAAAATTAACATTTTT -CAGAGAAAATCAAAATTTTTCTGTTTTTCCTTAAATTTCTAGGAAAATTG -TAGCAGATTTTGTTGAAAAAATTCAAATTTCCACTGAAAAAAGTGAAAAA -AGAAGACGATGTGTAAGCCTAAGCCTAAGCCTAAGACTAGGTCTAAGCCT -AAGCCTGAGCCTATGCCTCAGCCTGAGAATAAGCGTGAGCCTAAGCGTGA -GCCTAAGTCTAAACCTAAGCCTAAGCCTAAGCCTGATCCCAAGCCCACAT -GGTGCCAGGCTGACCCATAACGGTTTGATCTACAAAAAATGCGCGAAATT -TTTTGCCCAAAAAATTTGACGTCAGCGCTTTCTTAACCATGCGAAATCAG -TTGAGAACTCTGCGTCTCTTCTCCCGCATTTTTTGTAGGTCTACGTAGAT -CAAGCCTAAATGGGACACTCTGACACCACGTGAAGCCTAATCCTGAGTCT -AAGCCTTATCCAATTTCCGAAAAATCAATAAAAATGCAAATAACATAGAT -ATTCCCGCCTAAAGTTCAATAAATTATTTTTTTTTTGAAACTTTTTTCAA -AACTTGCGAATGCATAGTACCAAAAAACGCCATATTTGACACGCAATTTT -TGGATTGACTTTTTTTTGAATTGATATGTCATGAGCATCACTCAAGTGGT -TCCAAAAAGGCGTCAAGTACTTGAGCCCTCCCTGAGCCACCACCGTCTCC -AGAGAGCAGCCGAAACCAAAAACAAATAGGGGGAAAATGAACAGTTCTCT -CTGTTTCAAAATCTATATATTCCTGTTCTTTGTATTATCTTCCGTGCGGC -TTCAGCCCTCTACTGCTGCTCCAATTCTTTTCCATGTTATTTACCGTACC -GATTAGACGAATGAACAGGACCCCCTTTTACCGTTCAACCGATGAGCCAA -TGTGCTCTTTGTTGGCTAATTTGGGTGTTTTGCTCATTTGGAGGAACACT -AACTTCCCTCTCTAACTACACACTACGTGGAAGAGTTTTTTCAGATTTCT -AGGCCTCGCAACTTTCCTTGGTGGCCCAGAAAAACGCTTAAAACTTCAAG -GTCAAAACGTTCATTTTTGTTGAAAAAAATCGGTTTTTACTTGAATTTTT -GTAAGTGGAAGAGTTTCCTAAATTTCTAGGCCATGTGCTTTTTCCTGCTT -ATCTGAAAATTTTGTTCAAATTTTCTTTTTTCACTTAAATATTCCCCGAA -AATCTTGTCCACAAAAAGAAATTTTTGAACATTCAGATCATTTTTTTAGA -ATGGAAGAGTTTTCCAGATTTCTAGGCCACATGGCTTTTCCTGGTGGCCT -AGAAAATTTTCTGTTGGAAGAATCAGGTTTTTACTTGAATTTTCGTAAGT -GGAAGAGTTTTTTACATTTCTAGGCCACGTGATTTTTTCCTGATGGTCTA -GGAAACTTGTTTTCTCTAATTTTCCCCGATTTTGGATAATATTTGTTTAG -TGGAAGAGTTTTCAGAAATTCTAGGCCACGTGGTTTTTTTTGGAAAAGAA -ATATTTAGATCACATTAACATGTACTTTTATCAGATTTTTTGCCAAAATA -CCAATTTTACAAGCTATTTTTTTGTTATATGTAAATTTTGTGGAAGAGTT -TTTAAAATTTCTAGGCCACCTCTAGATGCACGTGGTGTCAGAGTGTCTCA -TTTCGGTTTGATCTACGTGGATCTACAAAAAATGCGGGAGACGAGACGCA -GAGTTCTCACCTGATTTTACATGGTTAAAAACGTGATGACGTCACATTTT -TTGGGCAAAAAATGCCCGCATTTTTTGTAGATCAAACCGTAATGGGACAG -CCTGACACTACGTGTACGTGCAGATGGCCTAGAAATGCTAAAATCTGTTT -TTTAAATGTAACTTTGAAAGTGAAAGAAACAATTAGAAACAAGTTGGCTG -TCGCCCCCAAAAAGTCTGTTCTGGCTATGTGGTCGCGAAAAGAGAAAACT -CGGCCACCAATTTTTTTCCACGGCCAGATCTATGACGCTATGACGTCACA -TTATCAGCTTGTTTCCGATTTACACACACATACACGTACACTTTCTCCGT -ATCACTTTCACTGATAGCTTGAAACGAGATTAATCATCATTCCAGCTATT -CTTTTTTATTTATTAGGTTAATGCCACTACTACTATTATTTTTTCATATT -AAAAATACAATGAACTATGTAGACATAAATTCAAATGAGATGCCAAAAAG -TGAGTTCGAACTTGTGGAAAATGTGTGTTTTTTAATAAATTTTTCAAAAA -TATAGTAAATTTCTGAGAAATTTTGATTTGAATTCCCGCCAAGCATTTTT -TTGAAAATTTTGAATTTCCGCCAACCATTTTTCCTTTTTTTTCAGAAAAT -GTGAAAAAATTTTCTAAGCAAATTTGAATTCCCGCCAAGATTTTTTTTGA -AAAAATTTCGAACTCGCGCTAAAGTATTTTCTAATAGCAGGATTATTGGA -ATCCCCGCCAAAACATATTCTCAGAAAATTTGAATTTCCGCCAAAACTTT -TTCTGATAAAATTTAAATTCCCGCCAACCATTTTTTCCTGAGAAAATTGG -AAGAACATATTTTCAGTGAGAAAATTTGAAAATATTTTTTTCAGAAAGTT -TGAATTCCTGCCAAAACATTTTCTAAGAAAATTTGAATTCCCGGCAAAAC -TTTTTCTGATAATTTTTTGAAATTCCCCGCAAAAATTATAGTAAATGAAG -ATGATTTGAGCAAAGTTATGACGTGGCCGCGGAAAAAATTGATGGCCTAG -TTTTCTCTTTTCGCGGCCACGTAGCCAGAACAGACTTTTGGGACCGTACA -ACCAACAAATATTTCTTCCCCTTTCAAAAATACATAAAAACCAGATTTTG -ACATTTCTAGGCCATCTAGAGGTGCCTCGTGGCCTAGAAATTTGAAAAAC -TCTTCCAGAAAATTTGTTCTGTATTTCTTGAAAGTGCTCCAACAAATCTG -TGCAAATTTTAAAAACGTTTCAAAATATTTATTGAATAAATTCTTTTGTT -GCACAAAGAGGTATCAAATCAGACCACCAGATTCGACCGTTGATCATTGT -TTCAGTTGATAGGTAGGCAGGCGTGGTTGCCTGAAACCTGCCGGCCTCAC -GCTGGGCAAGAGGCAGGCCGCCTTAATGTCAGGCAGGCAATGCCTACATG -CAAGCCCTACTTCTACGATTATCTCGAAATTTAGCGAGTTTTTATTTGTC -CAAAAAAAATCGCAACTGAACAACATGAAAAAGCCGCCAAAAACTTTCAT -AAAATTCTGTCCGTAGTTTGCCGTTTCTTGCGTCTCATGCTTAATCCCTA -CTGTAATTATGCTGAGATTTTCGATCTTTTTCACTTTTTGAAAATTTTTG -GCAATTCTTTTTAAGTTTGTTGAGATTGTAACTTATGACAAACAGTAACT -AAAAAGCGTGGCCGCCAAATTTTCTAGGCCATCAATATCAGTTGCGTCAT -TTCTTCACCATACTGGACCGAGAAATATTCTAGGACATGTGTTTGCGTCA -TTCCTCTTCCATTCCTAGTCCCAAAAATTCCAAGACCACTGGTAAGTTTG -GCCGAGAAATATTCTAGGCCATCGATGTTAATGACGCCATTTCATACCCG -AATTGGCCACTAAAATTCTTAGGTCATCAGTGACGTCACACCTCTTCCAA -GCCTTGGAATGAGCATTTCTAGGCCCTCTAATCTAGGCTTGGCCGTCAAA -TTTCCTAGGCCAGGTGACGCCATCCCTCTTCCATGCTCGACCACTAGGTC -AAATGACGTCACTTCTCTTCCACCTACCGCACTTTGATTTCCTAGGCCAC -CATGTGACGTCACTTCTCTTCCATCTAGGTTTCCCATGCCCTTCTCCTCT -CACGTGGTATCAGAGTGTCTCATTTTGGCTTGAATACGTTGATCTACAAA -AAATGCGGGAGAAGAGACGCAGAGTTCTCAACTGATTTCGCTTGGTTACG -CACGTGCTGCCGTCACATGTTTTTGGGCAAAAAATTCCCGCATATTTTGT -AGATCATACCGTAATGGGGTGTCCTCTTGTTAAATATCGAAATTTCACTC -AAAAATTTTGAACGTTGAGCTTTTTGTCTCTGGTCAATTGGTCAGCCGCG -CAGTGTTCCGGTGTTTGTGCTCATGTTTTCGTGTGCACATTTGTGCTGCT -GCTAAGGCGTATTTTGTTCCGGGCGGGGACAGGGGGGAGAAGCAAAAATG -TGTCAAATTTTGTTTGTTTTGCCATTGATATTGTCCTTCTGCTCAGAGGA -TTTCCTCATTTTACGCCGTATGTGCAAAAGCATAATCACCACAATAATTT -TGAATATAAGTTTGCAAACGCGCCCTATTGATAATCCTCGCCCGTGTAGT -CTGCGTGCACGTGGTGTCAAAGTGTCCCATTTTGGTTTGATCTCCGAGAA -ATGCGGGAGAAGAGGTGCAGACTTTTCAACTGATTTTGCATGGTTAAGAG -TGTGCTGGCGTCACGTTTTTCTGGGGGCAAAAATTCCCGCATTTTTTGTA -GATCAAATTGCAAAGCGCCCTATTGATAATCTTAGCCCGTGTAGTCTCTT -GTTTAATTTTCAATTTTTCTGGTTCGGCACCTAAACTGTAACTACGACAC -TCGGCAAAGTTAGACTGTTAAACTCCGCCCACTTAATGGCACCTTTTTTG -CAGAAATGTACCCAACCGACAAAGAGCAGACACGGACCACATTTGAGACG -AGAAGTCGGCGGAAACGGCTGGCGCAGGTCGCCGCCACAATTGCTAGCGT -GATATTACTCTTGTTGGCAGGTAAGTAAAAAACTACGACACTCCGAGACC -AAGAAAAAAATCGATAATCGAAATATTGAAAATTGCAAAATTTATTTCGC -CGGATCATTTTCCATATCGATTTTCTGAATGGTATGGTGATAGCAATCCT -CATCGTAGGCACATCCCTGGTGAACCACGTACTCTTGACCTGAAAAATAG -GTTTCGTTCGGTGGAGCACATTTGCATACACTGACCTTTAATCGGGTGGC -GACACGCTTTACACTTGAAACATGCCATATGCCAGTGGACATTGAACGCC -GACACGCATCTCTCAAAAGTCGGCAATTTGCACGCGTGGCATTTTGGTGA -CTTGGCCGCCCGGTGACAGTCCGCGCAACGGAGCGCGTTACCGTACGGCG -CGGGCATTGGATAACACGGAGTCATGCCAATGACTGTCTGGAATTTTGGA -GAAATTTATTGATTTTTTGACGGAATTTAATGAAATAAGGAAAAATCAAT -AATCGACATATTTATTTCGCAAAAAAAAAAAAACATTATTGATTTTCACG -GATTTCTGTCTTCCTCATAAATTGAAATGGAAGAGTTTGCCAAACTAGGC -CATTTTGGCTCGGCCATATCTGGGGTAGATTTACGGTGCGTTGCGTGTCG -CGTCGCGGCTCGGTTTTTGTAGTAAAACTAAATGTATTTGTCCGTGCATG -GAATTCTGGCTTCCCTCATAAATCGAAATGGCAGAGTTTGCCGAACTAGG -CCATTTTGGGTCGGAGAGATTTTGTGTAGATTTACGGCGCGTTGCGTGTC -GCGTCGCGGCTCGTTTTCAATTGTAAAACTGCTGTATTTGTCCGTGTGGC -GTACACAACACTTTTCCACGCGCTGTCCGGCAGGCAATTGTCAGTGGAGC -GCAAAAATTTAATTAGGAAGGCCAGAACCCCGTGTCCGTGTGGAGTGCAC -GACTTTCCCGCGCGTTGTCCGGCGGGCGATTGTCAATGGAGCGCGAAAAA -TTCAATGAGGAATGCTTTTTGCAAAAACAAATTACATAGGCTTCTGGCCT -TCCTTATTGCATTTTTCGCGCTCCATTGACAATCGCCTTAAAGCAGGGGA -GTGTGTGTGTGTGTACTCCACACGGACAACTTAAAATGAAAACCGAGCCG -CGACGCGACACGCAACGCGCCGTAAATCTACTCCGGCCGTGGCCGAGTCA -AAATGGCTTAATTCGGCAAATTCTTACATTTCAAAATATGAGGGAAGCCA -GAAACGTGTGTCACATGTTATAAAATTAATTTTGAAAAAAAATTATTAAA -TTTCGCAAAAATAAATTATCGCTTTTTGTAAGAATTTATCGAATGAATTG -ATTAAAAATTTATCGAATTTTAGCGAATCAGAAAATATCGATTTTCACTA -AGAATTTATCGAATTTTTCGATTTTCGCTAAAATTATCGATTATTGCAAT -GTTTTACCTGACAAACCGAGCATTTCAGGCATGAAATATGATACATCTCG -TCTTGAATTTTGATCACTTTTCCCTGCAAAAATCGATATTTTCAATTGAA -TATATTTCCAAAAATGTGCTCACAGTTTGAGCTTCTTGACGAGTCAGCGT -TGTTGTGCAGCCTTTGCAATGGATATTATATGGAAGAACAATCTTTTGGA -GACGTTTATTGTTCGACGAGAACAACATTTTTCGAATTTTTGAAATGATT -AATTTAAAAATTTAAAAAGGAGAAAATTGAAGAGAAACGTGGGAAAACGT -ATTGATTTTTCAAAATTTTATTGATTTTATAATCACGGGGTTCTGGTCTT -CCTCATTGAACTTTTCGCGCTCCATTGACAATCGCCTTCCGGACAACACG -TGGGAAAGTCGTGCACTCCACACGGATAAATACATTTAGTTTTACAACTA -AAATCGAGCCGCGACGCGACACGCAACGCGCCGTAAATTTACCCCAGATA -TGGCCGAGCCAAAATGGCCTAGTTCGGCAAACTCTTCCATATGAGGGAAG -CCATAAATCCGTGTATAATCAAACGCGCAATTTAAAAAAATCGGTAGTTG -AAATTTATCGATTTTCCCTCGATCTTATCGATTTTTTAAAAGACTTATCG -ATTTTTATCCAAATTTATTATTTGAAAAATCAACGTTTATTGATTTTTGT -CATGATTTATCGATTTTCTCAAGAGATTATCGATTTTTGCTGTCGATGCA -CCATGTGCAAACTTCGCCACGTTTTTTCGCGGCGAGACCCAAATTTTTTG -AATTTTCAGTTCTCGGTCTGGTATACGGTAGCTTCTACCTCTACCGTCGA -TATGTGACAGATGCAAATGATAAACGGGATAATGATGAATATTTGCGAAA -ACTCGTTCGTCAAGTCAATGACTCGCCGGAGACCACGTGGAAAGCCAAAT -TCAATAAGTTTGGTGTCAAAAATCGATCTTACGGATTCAAATATACGAGA -AATCAGACGGCGGTCGAGGAATACGTGGAACAAATTCGAAAATTTTTCGA -GTCTGATGCGATGAAGCGGCATTTGGAGTGAGTTAACTCAAATTTGAGCG -GGAAACAACGATGCTCCGCGCTCTCGCCGCATGTAGTTTAGCGCGTAAGC -TGTGATGCATACGATAGTCCTGCAATGCATCATATTTTACACGCAAATGC -AGAAATTACCAAATTTCGAGAAAAATCTATATTTTCCTTTTAAAAATTAT -CGATTTTTTAAACAAAACTTCTGAATAATTGGATTTTTCCAGAAGTTTTA -AAAAGTTTTGGGTACAATTTTAAAAAGACAGCAAAATGTTCGTAAAACAC -CAGGAAAGAATTTTGCGCTTAATATCTGATGCTTCGTAAACTCCACGGGC -TTCCGGCCTTAAAGCCGAGCTACGCGCCGTAAATCTACCCCGGCCGCAAC -GCGCCGTAAATCTACCCCGGCCGTGGCCGAGCTCAAGTGGCCTAGTTCGG -CAAAATCTTCCATTTCAAAATATGAGTGAAGCCAGAGGCGCGTGAATGAT -GACTTCCACACGGTTCGGTAGAGCGCATTTACACTTATGTACCCTTTGCC -GGGCTGCGTTCAAAACCTAAAAATTTGAAATTTTGCGCGTAAGATCTGGT -GCATTGGGTTCTGAATTATTTCGACAAAACATGGTGCATCATCCCAAAAA -TTGCAATTTTGCAGTGAACTTGAGAACTTTAACAGCTCCGATGTTCCGAA -AAACTTCGACGCTCGTCAGAAATGGCCGAATTGCCCGTCAATCTCGAATG -TTCCAAATCAGGGAGGATGCGGGAGTTGCTTCGCGGTCGCCGCCGCCGGT -GTCGCCTCCGACCGTGCCTGTATTCACTCGAATGGAACTTTTAAGTCACT -TTTGTCCGAGGAGGATATTATTGGATGCTGCTCGGTGTGCGGAAATTGTT -ACGGCGGAGATCCACTGAAGGCCTTGACCTATTGGGTTAATCAGGGACTT -GTTACAGGTAAGCGGTGACGTCATAGGTGGCCTAGGAACCTTTGATCTAC -AATGTGATTGAATTTTATATCACGCAATTTGTAATAATTTCTAAAAAAAA -TTATCGATTTTTCTGAAAATTAACTTGTTCCAAATTTTGAACGAATTTTC -TAGAAGATTTTTGCAATTTATCGATTTTTGCAAGCTATCGATTTTTCCCG -CAAACTATCGATTTTTCTAGAAAATTATCGATTTTTCTAGAAAATTATTG -ATTTTTCTAGAAAATTAACGATTTTTCTAGAAAATTTTCGATTTTTCTAA -AAAAAATTATCGACTTTTTTCTCAAAAGTATCGATTTTTGCAATTTATCG -ATTTTTTGAAATTTATCGATTTTCCCTGCAAATTATCGACTTTTTTGAAA -ATAAGCTTTCCCCAAAAATTTGAACGAATTTTCTAGAAATTATCAACTTT -TGCAATTTATCGATTTTTTTTTTGCAATTTATCGATTTTTTGCAAATTAT -CGATTTTTTGCAAATTATCGATTTTTCCAAACAATAACGATTCTTCTAAG -CCCGTGGAAGAGTTTTTCGAAAACCTAGGCCATCTCTATTTCCAGGTGGC -CGTGACGGTTGCCGTCCCTACTCGTTTGACCTGTCGTGTGGAGTCCCGTG -CTCGCCGGCCACGTTCTTTGAGGCCGAGGAGAAGCGAACATGTATGAAGA -GGTGTCAGAATATCTATTACCAGCAGAAATATGAGGAGGATAAACATTTT -GGTTAGAGATATTTTTTTTTAGAAAAATAGAGAAAAATTTCTGGGATCTA -TTCAAAAATGGCAAACTTTTTGGAAATTATCGATTTTTTCCGGTAAATAA -TTATCAATTTTTTTCTCGGAAAATATCGATTTTTTCGGAAATTGACAATT -TTTTCGAAAATTATCGATTTTTTCCGTTAATGATCGATTTATTCGGAAAT -TATTGATTTTTCCGATAATTATCGATTTTTCGGATAATTATCGATTTTTT -CCGATAATTATCGATTTTCCGGTAATTATCGATTTTTTCCGATAATTATC -GATTTTTCGGATAATTATCGATTTTTTCCGATAATTATCGATTTTCCCGA -TAATTATCGATTTTTCCGGTAATTATCGATTTTTTCCGATAATTATCGAT -TTTTCCGATAATAATCGACTTTTCCGATAGTTATCGATTTTTCCGATAAT -TATCGATTTTTTTTCGATAATTATCGACTTTTCGGGTAATTATCGATTTT -CCCGATAATTATCGATTTTTCCGGTAATTATCGATTTTTTCCGATAATTA -TCGATTTTTCCGATAATAATCGACTTTTCCGATAGTTATCGATTTTTCCG -ATAATTATCGATTTTTTTCGATAATTATCGACTTTTCGGGTAATTATCGA -TTTTTTTCCGGAAATCATGAATTTTTCCAATAATTATCAATTTTTTCCGA -TAATTATCAATTTTTCCGATAATTATCGATTTTTCGGATAATTATCGATT -TTTTCCGATAATTATCGATTTTCCCGATAATTATCGATTTTTCCGGTAAT -TATCGATTTTTTCCGATAATTATCGATTTTTCCGATAATAATCGACTTTT -CCGATAGTTATCGATTTTTCCGATAATTATCGATTTTTTTTCGATAATTA -TCGACTTTTCGGGTAATTATCGATTTTCCCGATAATTATCGATTTTTCCG -GTAATTATCGATTTTTTCCGATAATTATCGATTTTTCCGATAATAATCGA -CTTTTCCGATAGTTATCGATTTTTCCGATAATTATCGATTTTTTTCGATA -ATTATCGACTTTTCGGGTAATTATCGATTTTTTCCGATAATTATCGATTT -TTCCGATAATAATCGACTTTTCCGATAGTTATCGATTTTTCCGATAATTA -TCGATTTTTTTTCGATAATTATCGACTTTTCGGGTAATTATCGATTTTCC -CGATAATTATCGATTTTTCCGGTAATTATCGATTTTTTCCGATAATTATC -GATTTTTCCGATAATAATCGACTTTTCCGATAGTTATCGATTTTTCCGAT -AATTATCGATTTTTTTCGATAATTATCGACTTTTCGGGTAATTATCGATT -TTTTTCCGGAAATCATGAATTTTTCCAATAATTATCAATTTTTTCCGATA -ATTATCAATTTTTCCGATAATTATCGATTTTTCGGATAATTATCGATTTT -TTCCGATAATTATCGATTTTCCCGATAATTATCGATTTTTCCGGTAATTA -TCGATTTTTTCCGATAATTATCGATTTTTCCGATAATAATCGACTTTTCC -GATAGTTATCGATTTTTCCGATAATTATCGATTTTTTTTCGATAATTATC -GACTTTTCGGGTAATTATCGATTTTCCCGATAATTATCGATTTTTCCGGT -AATTATCGATTTTTTCCGATAATTATCGATTTTTCCGATAATAATCGACT -TTTCCGATAGTTATCGATTTTTCCGATAATTATCGATTTTTTTCGATAAT -TATCGACTTTTCGGGTAATTATCGATTTTTTTCCGGAAATCATGAATTTT -TCCAATAATTATCAATTTTTTCCGATAATTATCAATTTTTCCGATAATTA -TCGTTTTTCCCGATAATTATCGATTTTTCCGATAATTATCGATTTTTCGG -ATAATTATCGATTTTTCCGATAATTATCGATTTTTCCGATAATTATCGAT -TTTTCCGATATTTTTTTTCGGAAATGGCTGCCCCATCGCGGTTTGATCTA -CAAAAAATGCGGGAATTTTTAGCCCAAAAACATGTGACGTCAGCACGTTC -TTAACCATACGAAATCAGTTGAGAACTCTGCCGCATTTTTTGTAGATCTA -CGTAGATCAAGCCGCAATGAGACACTCTGGCACCAAGTGTCTGTAATTGA -CTTCACGGAAGAAAATATATTTTTATTTAATGCGCAAAACTAAAATTCAA -AATTTCGTTTCGACCAATACACCATATTTTAAGCGCAAATTTCAATTCAA -ATTTTTGCAGCAACCTTTGCCTATTCAATGTATCCCCGCTCAATGACAGT -ATCCCCCGATGGAAAGGAACGAGTAAAGGTGCCAACAATCATCGGTCACT -TCAACGATAAGAAAACCGAGAAGCTGAACGTGACCGAGTACCGTGACATC -ATCAAAAAAGAAATTCTACTTTATGGTCCCACCACGATGGCGTTCCCAGT -TCCCGAAGAATTCCTTCATTATTCGAGCGGAGTGTTCCGCCCGTATCCAA -CTGATGGTTTCGACGATCGAATTGTGTATTGGCACGTGGTTCGATTGATC -GGATGGGGAGAATCAGATGATGGAACACATTATTGGTTGGCTGTTAATAG -TTTTGGTAACCATTGGGGTGATAATGGTGAGTTTTCGTGCAAATTGCGCA -CGGCCCGGCAAATGGTACATCCATACAAATGCGCTCCACTGATAATTTGA -GTTTAGCCAGGTTTGGGCGCGTTTTAAGGAAAACGCCTTGGTCCAAAAAA -TTTAGAATTTGATTTCGGACATTTTTTATATGCATCACAAAAATGTTGGA -CGAGCCGTTTTTGAGAAAAAGCCCAGGTATACGGTAAACAAATTGCGTAC -AGGTGCCACTTCCCGGGCCGTGATGCGCGTTAAATATAGTGCTTTTTAAG -AATGCGTGTTGCGCAACATATTTGACGCGCAAAATATCTCGTAGCGAAAA -CTACAGTAATTTTTCAAATGACTACTGCAGCGTTTATGTCGATTTACGGG -CTCGAAAAAAAAGTTACAGCGATATTCCATTTTTTCTCATTTTTTGCTTA -TTTTTATTTAGTATTCTCACGGTGTGTCATTCTGTCCCATAACGGTTTGA -TCTACAAAAAATGCGGGAATTTTTCGCCCAGAAAAATGTGACGTCAGCAC -GCCCCTAACCATACGAAATTTGTTGAGAAATCTGCGTATAAATTCCCGCA -TTTTTTGTAGATCACGCCGAAGTGAGACACTTTGACACCACGTGTATTCT -ATCTAAAAATAAATTATTTCAAAAATAGAGCCCGAAAAAAAAAATCGACA -AAAGCGCTACAGTAGTCATTTAAAGAATTACTGTAGTTTTCGCTACGAGA -TATATTGATATTTTGCGCGTCAAATATGTTGCGCAGTACGCATTCTTAGA -ATTTTGTGTTGCCGTAAATAAATTTGGACGTCAAATACAGTGCATATTGC -GGTCGATCGGCTACAATATATTTTGCGAGCAAATTTGGAAGTTTTGCGCG -TCAAATATGATGTAGCCGATCGGTCATGTTACAAAACACCATATTTGACG -CGCAAAACTTTAATTTTGGACAAAAAGTCAGAGAATTAGTATTGCGTAAA -AAACTGGCAATTTTTTTCAGAACATTTCTGAAATTTTCAATATATTTTCA -AACTTTTCGCGTCAAATATGGTGCATCAAGTCGCGAACCAAATACACTCT -AACACGTAGTGCCAGGCTGTCCCATTATAGTTTGACCTACAAAAACGCGG -GAATTTTTCGCCCAAAAAAATGTGACGTCAGCACGTTCTTAACCATGCAA -AATCAGTTGAGAACTCTGCGTCTCCTCTTCTCCCGCATTTTTTGTAGATC -AACGTGATTCAGGCCGAAATGTGACACTCTGACACCACGTGGCCCTAATT -AACTCGTAAAAATCACCGTTTTTTTTCCAGGACTCTTCAAAATCAACACA -GATGACATGGAAAAATATGGTCTAGAGTATGAAACAGCAGTCGTCTAATT -ATAATTCGGCAAAAATTTTTTGTAAATAGTTAAATATTGTCCACCTATTT -CATCCCCACCCGATTGCATCTCAACTTGTCCCATTTCCGAGAAAAATCAA -TTATTTATTTTTATTCGGCCATCATTTATTAGCTCCCTCATTCCATAGTT -TTTTTTTAATTAGATTTTTTTTGGATGCTAAAATTTGCCATTCTCATAGA -CATTTTCAATATTTGTGTAAAATAAATCATTTTTCTGGTCTTCAATTGAT -GGAAAAAAACAAAAAAACAATGCGCGTCAGGTTTGGTGTATTGTGTGCAA -ACACCGAGCGCATATTTTGAAATTTATTTTTTTTTCGAATTTATTAAAGT -TGCTGATTTTCTTTAATTTCAGGCTTAAAAATGTCGGATTTTGTGCCAGA -AACCGAGGAAAATGAAGAAGAATCTCAAAAAATCGATGAAATCCATGAAA -TCCCAGCTCAAGCAATTATCATCGACCAAAGTGAGGAAAATGCTGACTTT -ATCAATTTTCAATTACTTTTTGCATTTTTTCTAGGTTTTTCTCGACGATT -TCTCAACAATAAATGGTACGGAAAGTACGGCGAAGATGGGGATCTTCTGG -AGCACATCGACGAGGACTGGGAGCCCGTAGGCCTCGACGAAGTGGAATTT -CTGAGCCAACTGTGGTTTGAGCAGGAGGATCAGGAGAAAAAAGCTCATAG -GCACTATGATTGGGATGAAGAAAAGAAGGAATGGGTGCCGAAGGCCAAGC -AGGAGGAGGTCAATGAGGATTTTATCGCAGAATATCAAGCGAATTACGGG -GTTCAGTATGATGATATTTATAAAAAAATGGACGAAGAATTGCAAGAAAA -AGCGGCAAAAGCTCAAAAAGAAGATGAAGAGAAGAAGGAGAAGAAGCGGA -AGAAAAAAGTTGGCTTGGGAGCCGGGGAAGACGCTAAAGAGGGCTGGCTT -GACCTAGGAGATAAGGTTCATGCGGTTTATGTGTCAAATCTTCCGGAAGA -TATTACAGACGAGGAATTCCAGAAATTTATGTCAAAATGTGGAGTTATTC -AGCCGGATATTCGAACGAATAAGCCGAAATGCAAGCTTTACCGGGAGGAA -AACGGCAAACTCAAAGGCGACGGAAGATGTTGTTATATTAAGAAGGAATC -TGTCGAGCTTGCCTGTAACATTCTCGATGGAGCGAACTTAAACGGGCGGG -AAGTGAAGGTTGAGGAAGCTCGATTTGAGATGAAGGGCGATTTTGATCCG -GCGAGGAAGCGGCGGAAATTGACTGCGGCGCAGAAAAAACGATATATGGA -GCAGCAGAATAAGTAATAAAAAATATTTGGTGAAATTTGAAATAGCTCGT -AAATCGACATTAAGCTGAAAAAATGAAAAAAAACCAAAAAAAATCGTATT -ACGGGAACACAAAATCCTGAGAATGCGTACTGCACAACATTTTTTTTTTT -TTTGACGCGCAAAATATCTCGTAGCGAAAACTAAGACTACTGTAGCACTT -GTGTCGATTTACGGGCTGCTCGATTTTCGAAATGAATTAAAAGAATTTAT -TTATGTGATATTGAAATTGGGCAAAAAATAGGAAAATAATACAAAAAAAT -CTAAAAAATTTATTTCAATAATCGAGCCCCCGTAAATCGACACAAGCGCT -ACAGTAGTCATTTAAAGAGTAGTTTTCGCTACGAGATATTTTGCGCGTCA -AATATGTTGTGCAATACGCATTCTCAGAATATTGTGTTCCCATAATATAT -CGACGAAAAAATTGGCCCAAATCGTGGATTTTTGTCCGAATTTGATGACA -AATGGCTTTGAAAATCACAAAATTTCAGAGAAAAATTTCGATTTTTGGTT -TAAAAAAACAAAAATTGAAACCCAACAAAATTGTTAACTTGAAAACCTGC -TGAAAATCTTAGAATTTTCAGATTTCACCCAAAAAATACCAGATTTAACT -CGAAAATTGCGAATTTTAGGCCAAATTCCTTGCATTTTTCATAGAAAAGA -TAAACTAACGACACAAAATCAAATGAAATTGACTAAAAAACTATTGAATT -TTGTAGAAAAATCCCGATTTTTGCCTAAATTTGCAAAAAAAATATTTTAT -TTTAGCATTTATTTTTCTTAATTTTCACACTAAAAATTACGAAAAAAGAC -AAAAAAAATTTTTTTCATTCAACAATTTTTTGGGCTAAAATGTGTAATTT -TTGCGGGAAGAATTCGAAAAATTATTAAAAATCGTAGAGACTAACTGAAA -ATCAATTTTTTAGGGACCAAAAAGCCAACTTTTGCCGATTTTACTCAAAT -TTTTCCGTGAAAAATCCGGAATTTTTAAATATTATTTAATTGCGAAATTT -TACAATTTTTACACCTAAAATAAGGGTAATATGGTAGCTGGTCTCGACAC -GACAATTTTTTTGTTAAATTCTAAAAAAGGTGTGCGCCTTTAAAGAGTAC -TGTAATTTCAAACTTTATGGAATTTTTTTTTGATTTTTCAAATAAACTAC -GAAAAATCGAAGAAAATTCCACAAAGTTTGAAATTACAGTACTATTTAAA -GGCGCATACCTTCTAGAATTTTACAAAAAATTTGTCGTGTCGTGACCGGC -GACCGTATTACCCTAATTTTTGGTGTAAAAATCGTAAACTGTCCGGATTT -TTCACTACGAAATTCAAATTCGAGGAAAATCGAAAAAAATTGGTTGTTTT -GGTTCCTAAAAAATATATTTTCAGTTATTTTCTACCATTTTTTAATAATT -TCTCGAATTTTTCCCTCAAAAATTACAAATTTCAACCAAAAATTCTGATT -TTTCCTTTCCAGAATCTTCGAATGGACGCCCGATAAGCCACGTAACTACC -GTCCAAAGTCGGACTGTACGGTTATTGTCAAAAATCTGTTCACTCAGGAA -ATGATGAACAAGAATGCGGCGTTGATGTTGGATTTGAAAGAGGAAATGAC -ACAAAGTTGTCAGAAATATGGAATTGTTAAGAAAGTCGTCGTTTATGCGG -TTGGTATTGAGGAAATTTGTGGAAATTTCGATTTTTGTAAAAAAAATTTA -TTCTAAAAAAATAAATTAAAAAAAAAAGATTTAAAAAATTTAAAGCTAAT -TTTCGAAAAATTGAAGCTAATTTTGGAAAAAAAACCGAAAATTTTTTTTT -TTAGAAATGTCGATATTCATAAAAAAATATTCTAAAAACGGGATCAAAAA -TTTTTGAAGCTATTTGTCGGAAAAATTTTTAAAAATGTAAAGCTAATTTT -CGAAAAAAAACCCAAAATTATTGGATTTAACAAATTTTCAAAAAAATTGT -TCTAAAAAAGATAACCTTTAACATTAAAAAAATTATGGCTATTTTTCGAA -AAATTAAAAAAAAACAATTTTTAGCTAATTTTCGAAAAAAAACCGAAAAT -TTGTGGAAATTTCGATTTTCAAAAAAAATTTATTCTAAAAAAAAATAAAT -TTTTAACATTAAAAAATGGCTATTTTTCGAAAAAACCGAAAATTTTTGGA -AATTTCGATTTTCGAAAAAAAAGTATTTTAAAAAAACAATGAGAAATGGT -TATAAATTGTTCTTTCAAAAATTTTTTACAGCTTTTTTTTTCGAGAAATT -TAAAAAAAAAACAATTTTTAGCTAATTTTAAAAAAAGTAAAGCTAATTTT -CAAAAAGAACCCCAAAATTGATGCATTTATCGATTTTTAAAATAAATTGT -TCAAAAAAAGATAAATTTAAAAAAAAAGTTATTGGATTTTTTAAAGTTAT -TGGATTTTTCAATTTTCAAAAAAAAATCATCAAAATGTATAAATAAATAA -AAACTATGGATTTCGAAAAATTAAAAAAAACAATTTTTAGCTAATTTACG -GAATTAAAACAACAAAAAATTTCGGAAAATCGAAAATTGTTGGTTTTTTT -TTTCGATTAAAAAAATTCAAAATCTTCTGAAAGACATTTTTAAAATTTCC -AAAAAAAAATTATGAGTATTTTTCAAAAAACAAATCGAATTTTGATTAAC -TTCCGATTTTTTTGACATTTTTTGAAATTTGAAAATCATTAATTCAAAAA -TTTTTATTGAAATAATTCAAAAATTTTTATTGAAAAAAAACGAAAATTTT -TGATTTTCGCTTGAATATTTCGGAAAAAACAATCGATTAAAAAAAAAATA -GGCTTCTAGTTATTTTTCAAGAATGCTTTTTTTTTGACAAACTGCTGATT -TTTTGTCAGTTTCGTCGATTTTCGTTGTAAAAAATCAAAAATTCAAAATT -TCTTCTATTACGAGTGCACAAAATGCTGAGAATGCGTATTGCACAACATA -TTTGACGCGCAAAATATCTCGTAGTGAAAACTACAGTAATTCTTTAAGTG -TCTACTGTAGCGTTTTCGGAAAAATTCCACTTTTTTTATTTAAAAAAAAA -AACGAAATATTTTGATTTTTTTTTATTAAAAAAAACGAAAAATTTTGATT -TTTTATTAAAAAAAACGAAATATTTTGATTTTTTATTTAAAAATGAAAAA -TTTTGATTTTCCAAAAAAAAAGGCTCCTAATTAAAAAAAAAAAATTTTTT -TGAAAAAGTGCAGATTTTTGTCTTAAAATTTAAATCAAAAATTTTTAAAT -AGACTTTTTCCATCAAATTTCCCCAATTTTCAGAACCACCCGGACGGCGT -CGTATCGGTAACCTTTCCAACGACAGAAGAATCGGATATGGCTGTAAAAT -ATCTTCACGGACGAGTAGTTGACGGTCGGAAATTGACAGCCGAGCTCTGG -GATGGCCGGACAAAGTTTAAGGTCGAGGAGACGGAAGAGGATGAGGAGAA -GCGTCGGAAAGAGTACGAGAAGTATATTGAGGGTGGAAGTAGTGAGACGA -AGGAGGAGAGCGACGACGATGATGACGATGAAGCTGAAGATAATTGATTG -ATCTAAATTTTTTCTGAAAAATTATTTTTAGTTTATACATTTTTCCGAGA -GGAGCAACCGATCAATTTTTACCAAAACTATGTTCAAAATCGCCCAAAAA -TATCAAATTTAGTGAATTTTCGTTTTCATGGATTTTTCGAAAATTAGCTT -TAAAAATGTTTGCCAAATTTTTCGACGATATCGCGATATTTTAAAAATTT -CGAACAAAAATTGCCTAATTTCAATTAAAATCCCTTTTTTCGAAATTTTC -TAATTTTCTGGGCCAATTGGGTCGTTTAAAAAGAAAAATGGCCAAAATTT -GAGAGTTTTAAAAAAATTCTAAAATTTCAATCCTACGATTTTCCGGGAAA -AAAATTTTCTTGGAAAATTGCTTTTTTTTTGAAAAATTATTTTTAGTTTA -TACATTTTTTTTCCGAAAATAGGAACAACCTATCAATTGAAATTTTCAAA -AAAAAATTAATTAAATTTGGAAGCATTTTCCGAAAAATTGCATGTTTTCG -GTTTTCTAGAAAAAAAAAACTAAAAGAACGAAAAATTTCACCAAAAATCA -AATATGAAAATACTTTCCTAAAAATCTGAAAAAACCAGAAATTTTCAATT -TTCCCTATTCAAAAAAATTCAAAAAAAAAACCAAATTTCAGTTAAAATCC -CTTTTTTCGAAAATTTTAAAATTTTCTGCGCCATTGTGTCGTTGATTTGA -AATTTTTTTCTAAAAATCCGTGAATTTTTGAAATTAAACAAAAAATTTGA -AAAATCAAAAATTATCGATTTTTCAACGAAAAAAATTCAAAAATTTCAAT -CTTACGATTTTCCTAACTAAAAAAAAATTTGAAGTAACGAAAATGTTCAA -TTTTTTCGAAAATTTTCGAGGTCATTTAGAGTTTTTTCTGTGAAAATTGC -ATTTTATATACTCATTTAAATTAATTTTTATATATTCCTTTCCCGAAAAC -TTCAAAAAAAAAACCCAGTGATACAATTAAAATCGAGATAATCACAGACA -AAGTAGGCAGTAGGCAGGCAAAAAACAGGCACATATTAAGGTAATACAAA -ATTCTGATAATGCGTACATCGCAACACATTTGACGCGCAAAATATCTCGT -AGCGAAAACTACAGTAATTCGTTAAATGGATACTGTAGCGCGCTAGTGTC -GATTTACGGGAATCTTAAAGAACCTAAAGAATTGTAGGAAAAATGGAGAT -CCCGTAAATCGACACTAGCACGCTACAGTATCCATTTAAAGAATTACTGT -AGTTTTCGCTACGAGATATTTTGCGCGTCAAATATGTTGTTCAATACGCA -ATTTTAAAATTTCGTGGTCTCATAATAATACACAATTAACTAGTAAATCT -ACAAAATCTACAAAATTCTCTTCATCAACTCTTCCACAGCTCGATCGACC -TGTGCATGAGTCTCCTCGTACGCCCACAGAGAGCACAACGCCACGTTGCT -ATTGTCGAGACGTTCCTTATTCGAAATCTGTGACGACATGCGATCCTTGG -CCTGATCTTCAGTCAGGTTATCCCTCGCAACGACTCGACGGACGGCTTCA -TCTGCTGGCACGAAGACGGTCCACGTTTCGGCGAGCGTTTTGTGCCATCC -GGCTTCGATTAGTGCGGCCGCTTCGATGACTGAATGAATTTTTTTTTCAA -CTTTTGCAGAAAAAATTATGATTTTGCAAAATTAACGGGGAAAATTGGCT -GTTTAAAAAATATTTATTATTTTCGCGTTTTTTTAAAATAAAAATCGATG -AAAATTCTGCAAAGTTTGAAGCTTCAGTACCCTTCAAAGGTGCACACGTT -TTAGAATTTAGCAAAAAATTGGCGTGTTCACGATTTTTTGGTTAAATTCA -AGAAAGTGTGCGCCTTTAAGGAGTACTGTAATTTCAAACTTGCTGAATTT -TCATCGATTTTTCACTTTTTTTCCACGATTAGTAAAATTTGTGTTATTGT -AGATTTTTTAAATTTAATACCAAATTTTCCAAAAAATCGAAAAAAAAAAG -AAAAAATGTAATTTCGTTATTTTCAAAAAAATAAATTGAAAAATTGAAAA -AAAATCCAAATATTCGATTATATTTTTTCAGAAAATAAAAATGAAAATTG -GAAAAAAACATATTTTTGGGTTTTTCGATTTTCCAAAAAATTTAAACATT -TAAAAAATCTAAATTTTCGATTTTTTTCAAAAAAAAAAAATTAAAAATCG -CACAAAAACCAAAAAAAAACATTTTTGGCCGATTTTCCAAAAAAAAAAAG -AAAAATAAACAAAAAACAAATATTTCAAAAAAAAAAACAATTTTTTCCGA -TTTTCCAGAAAAACAACTGAAAATCGGAACAATAATTTGTTTTTTCTATT -TTTCAAAAAATATTGAAAAATAAAAGAAAAAACGGAAATTTTCGATTTTT -TTCCGATTTTCCAAAAAAAAAAAATTCAAAATCTCACAAAAACCAAAAAA -AAAATGAAAAATCAAAGAAAAACGAAAATTTCGTTATTTTCAAAAAAATA -TCGAAAAAACTTTTTTTTCTTCCGATTTTTCTGAAAAACACTGAAAATTG -TGGAACAATAATTTTTTTCTATTTTTTTGGTCTCCACGATTTTTCGCGAA -AAATTTCAAAAATTAAAATTTTTTTTTAAATCCAAATTTTCACTTCCCCC -CCCCCCCCCCCCTCACCAACAACTTTCGCCGTCGACTTCTTCACAATCTC -CATAGCTTTCTCTTTCACCTCCGGCCAAACAAGCTCACTCAGCTCGCGGA -GCTTCACCTTATCCGAAAACACAATCGTTCCAAGCTTCCGGCGGTCTACA -ACTCCATCGACAACGACATCCCCTCCAAAATGTTCGCCGATTTTTCGATT -CAACGAGCTTCCCCGTTCATAGCACGTGTGTGCGAGCTTATCACAATCGA -TAACATCGAAATTATGCGTTTCACGGAGATATTTCCCGATATGACTTTTT -CCCGACGCAATTCCTCCGGCGAGCCCAATGATGTACGGGGCGCCCGTTTC -TCTTGGAACCGCCCGAGCTGGACGGAGCAAGTGACCCAGATCCTCTCGTC -GTCTGGAGCTTGAGCTGATCTTTGTCTCTTTCAGGATCTCATCGGATCCT -TCCACCAGCTCGACAATTATCACATCCAGCTGCGACATTCCTTGCTCATT -TCTCTTTTTGTTCACCGCATCGGCACCTTTAATGGTCTCCCGGGACACTA -CTATCGCTTCGAGGTCTTTTATTCGTGTTGAAGGACCGAATGGGTCGATT -ATTGGCTCCGCGAGACATTTTGCCTGGAAAATTATGGGGGTTCTATTGAG -CAAAAATGACCATTTTTGGAAAATTAGAAAATCGGAAAAAAAAATTTCCC -GAAATTTTTTATTTAGAAAAGTTTTTAAAAAACAGAAATTATATATTTTT -TGAGTTTTCCAAAACAAAAAATCGAAAAAAAATATTTCGATTTTTCGGAT -TTTCCAAAAGAAAAAATTTAAAATATCGAAGTTTTTAGATTTGCAATAGA -AAAATTGAAAAAAAAAACGGAAATTGTATTACGGGAACAGAAAATTCTGA -GAATGCGTATTGTACAGCATATTTGACGCGCAAAATATCTCGTAGCGAAA -ACTACAGTAATTCTTTAAATGACTACTGTATCGATCAAGCCCGTAAAGCG -CTACAGTAGTAATTTAAAGAATAACTGTAGTTTTCGCTACGAGATATTTT -GCGCGTCAAATATGTTGTGCAATACGCATTCTCAGAATTTTGTGTTGCCT -TAATGCAATTTCCGTTTTTTTTTCAATTTTTTCTTTTGAAAATCTGAAAA -TTTCGATTTTTTCCAATATTTTCTTTTGGAAAATCCGAAAAATCGAAACA -AAAATTTTTTTCTATTTTTTAAATTTTTTTTTTTGGAAAATCGGAAAAAA -ACCAAAATTTTAGTTTTTTAAAATATTTTATGGACCAAAAATATCGATTT -TTCCTAAAGTTTTATAGAAAACTGAAAAATTTAAATATTTATTGTTTTTA -ATTTTTAAATTTTTATGGAAAAATTTCGATTTTTTTTTTTGAAAAAAAAG -CTTTTTTTAAATTTTTCTTTATTTTTGGAAAATCGAACATTTGCTATTTT -TTTCGATTTATTAATTTTTTTGTTGGAATTTCTAAAAATCGATGTTTTTT -TTTCAAAAATCAGCGGTTTTTCCGAAAAATGGCAAAAATTTTTTTAAAAA -ACATTTATTTCTTTTCCTATTTTTCGAAAAATAAATAATTTTTTCTGGCA -ATTTTTAATGAATTTTTGATCGGTAAACTCTTACAGTCCCGGAAATATCC -TCTACAAAATCGACAACTTTCTTAATCCGAAACTCCACAGGCTCAATCAT -CTCGAATAATGATTTTTCTGGAAAAAAACCAATTTGTTAAAAGTTTTATT -TCCAAGCTATAATCTAACTAATAATCATATCCTTATCGGTGACCCCCACG -ACAATAACATCAGAAGCGAGCTCGGCAGCCTTGTTGAGCAACACTTTGTG -CCCATTGTGAAGCCGATCGAATGTGCCGCCCAACACGACTTTTTTGTACT -TTTTCGCCGCCGCCAATTTTTCCGCGTTCTCCAGCAGCTTTTCCTCGCCG -ATTAGCACATAATTCTCGGGATTTCCGCGGATTTCCGACACAACTAGACG -GACGTCGAGCTTCGGGCATGAGCTCGCCGATGTTAGGTAGATTTTCGAGA -CTAGCTCGTCGGTTCGCGGCTCGTCCGGGTTTAATCTGCAAGGAATCCTT -GTTAACCTTGATTTTCGAGCCGGGAAAAAGCCCAAAGCACTTTACCTCAC -ATAAAGCTTCGAGCTTAACGCGGCGGCCGCAGACGTGAGCAATTGCTTCA -GTTTTTGCACATTTTTGCTATTTAACACGAGAAGTCCGTATTTCGAGCTC -ATTGAGAATGATGAGAAATATCAGGGAATATTCCTCAAATTTTAAATAGA -AAAATTCGCTGCCACGTTCGCTGCTCTTATCGGCTGCGCGTCTCTATTTC -ACACACTGTCTCATCTCTCGTCTCGCGTCTCTCGTCTCTAACGCGTGACG -GTGGAGCGCACTTCCCTCCTTTTTGCTGTAAAATCTTTCAGACATGCCGG -AAACAAGAAAAACAAGAAATTATTGAACTGAAAATAATGTAAACGTACTC -ATCGTATTTTTAGCTTCAAAATAAGATATCTTAGAGCATATAATATTGCT -TCTAAACGAAAACCAAAACATCGCTGAAAATGTTGTGAATTTTATGAAAA -TCTAGGATCATTTTTCCCATTTTTATGAAAAACAACAATAAAATGAGAAA -AATTACATGGGAAAACCGAAGAAACTTAAATTTCGCGGTCAAAATTCGAA -TAGAATTACTGTATTTTTCGCTCAGAGATATTTTGCGCGTCAAATATGCT -GCGCGTGCGCATTTTCAGCGTTTTTTATTTAATAAAACAGTAATAAAATG -ATTAAATGCATTTTGTGTGATTTTCAGCCCAAAATGTTTGAAATAAATTG -TTGTTGTTCAAGCCAGCATTTTTAAAAACTTAAATATATGGGAAAACCAT -AAAAATAACACAAAAGTTTGGCAAAATTTTGGAACTACAGTACTCTTTAA -AGGCGCAAGCCCTTTAAGACAAATTTGTCGTGTCGAGACCGGACAAATAT -TCTAAATTTCTTTTATACATACGCAGATTTAAAGTACAGAAGAGCGCATT -TGCACATTGCGCAATTTCTAAATTTTTTCTAACAATAAAAATTAAAACCA -AAATACTTTATTCAATACCACAAATACCACAAGTTCATTTATCTTATTCA -ACCTCTTCCGCCGACGTCGTCTTGTTGTTGCTCTTCCCCTTCTTCTTAGA -CTTCTGAAATTTTCTCATATATGCAAACGCGCTCCGATCTAACAAAAAAC -CTTCTTCTTCTTTTTCTTCTTGTCTACATCTTCCTTCTTTGGCTGCTCTC -CAGATTCTCCCCCGGCTCCCGGATCGCTCTTCCCAAAGTCCATCTCCGGC -TTCAGCCCAACCTCAGGCGGCGCGATCATCAGTACCTGCTGGTATCCAGG -ACCCTTGTAATCCGTCATACAATCCCAATCTGGTGGCTCCTGGGTATTTG -ACTTAGACTTCTCAAACAGCTTCTGGATCCCATCAGCGATACGATCGTAC -TCCACAAACTCAGCGACATCCTTGGGCTCACGGATGATGGTCAGAAGATC -AAAGAACCCAGCAGTGGTCTCCGGAGTGGTTCTCCAAACCGACGCGACCA -TCGGTGCAGTGATGCGACGTTTCAAGTGGAGCACGTCCTGTTCGCTTTCC -TTGTTGAGCAGTGCCCATGGGAGAGCTCCGAGGAAGAACTCGAGCACCAT -GTACCACCAGGACTCCATGTCGTCCTTGTAGCCGAGATTTTTCTGGGAAG -AAAAAAGTTGTTTTAAAGAAATTGTGAACGGTAAGGTTACCCCCTGGTGA -GCATGAACGCTCGCGTACTTGACGACTCCTCTGTAGTGAATCGCATTCTT -TCTCATCTGCTCCTCAGCTTCGTCGTTCTTCTTGACGAATCTTAATTTTA -AAAAAAGTTTTCGGGGTAGATTTACGACGCGTTGCGTGTCGCGTCGCGGT -TCGATTTTAGTTGTAAAACTAAATGTATTTGTCCGTGTGGAGTACGCGAC -TTTCCCACTCAAAATAGGATGGAATTGAATTCGGAGGTGTCACTGTTGCA -AATTCGGATTGTCTGAATAAATATAAAGTGAGATTTTGAATTTTGCTCCA -TTGATAATGGTGTTTTTTTTTGAAATTCTGCAAACATTAATTTCTAGAAA -ATTTGAGTTTCCTCCAAAATTTTTCACAGAAAATTTGAATTCCCGCCAAA -ATTTTTTCTCTGAAAATTTGAATTCCCGCCAAAATTTTTTCTCTGAAAAT -TTGAATTCCCGCCAAAATTTTTTTCAGAAAATTTTGAACCCCGCTTAAAT -TTTTCTGAACTAGGCTATTTTGTCTCGGCCATATCTGGGGTTGTGGTTTA -CGGCGCGTTGCGTGTCGCGTCGCGGTTCGATTTTAGTTGTAAAACTAAAT -GTATTTGTCCGTGTGGAGTACGCGACTTTCCCACGCGTTGTTCGTCAGGC -AATTGTCAATGGAGCGCAAAAACTGCCGACCGCTCCAAATAACTACTTTT -TGCACTTCATTGCATACACACAGCAGCTCGCGGCGTCGGCATGAGGCCCG -CATTTCGCGCCTCACTGGAAGCCCCAGATGCCAAAAAATCTACCTCGGTC -TCTTGCACAACCCGAAATCCAACAGGTAAACCTGATGGTGCTGTCCGTCA -ATCTCTCTTCCAATACAGAAATGCGATGGCTTGATGTCGCGATGAATGAA -TCCATTCCGGTGGAGGTCACGAATCGCGGCCAGCGTCTGCTCGGCCAAGT -GAAGACCCGTCGCCATGCTGAACTTGCGATCCTTGTTCGTGTTCATCATC -AGCTCGTATAGGTTCTCGCCATACTGAAATATGGAATTTGGCTGAAGTTA -GGCAACGAAAAATGGTACCAATGGCATCACAATGAAGAGGAAGCGATTTG -GAACCGTGCCACGTTCCTCGATATTCGTGAAGAATGGAGATGGGTGGTGG -ATCGACGCGAGGACAACTGACATTTGACGAAGAAGCTGGAATTTTTTTTG -CTCTCTAGAAACGGTTTTCACGGCGGCCGACAATTTCCGAGTTTGGAAAC -TCACTGCACTTAGTCATGTAATTTTATAATGAGTGGCTAAACTCGGAAAT -TGTCGGCCGCCGTTAAACCACAAGACAGTTGGTTCCTTCGCCGCGACCGA -CACTTTCCGGGTTCCGCGCCGCACTATACAGAAGGCTGGCTGCGCGAGGC -AGGCTAGACCGCGGCAGGTGTTTTGGCGCCTACATGGACTTGCTAGCTTG -TCAACAAGGCAGCCTAAGCGTGCCTGCAAAAGGTAGGCAGGCACGCTTCT -AAAACCGTGCCAACACACCATAAATAACTCACCGAGCTCTTCATGTTCAA -CGCCTCGCATTTGACCGCAAAAAACTTCCCATCACTCTCGCGTTTTACCT -TGTAAATCGAGCCGAACGTGCCCGTCGCCAGCGGTTTCGTGACTTCATAG -GTGCCGTTTTGTGCTCGAATGAGCTCCTTTTGCGGTTGTCCAGGTCCGAC -TGACGTCATTGATTTAACACCGAAATGTCACGATTATTCGGAAGTGAATC -GATAATCGAAAATCGGAGACTCGAAACTTTTCGAAATAGATTTTATTATC -TTTGTAGGGTTTTTGGAGTTTATGATGATAATGAGGAGGGGGGATTTTAT -GTGGATTAAGAGGCTACGAGGAAAATATTTATTTTTTAAATATTTTATTG -TCATTCTTTTCTTTTCTAGATTTTCACGTTTCTTATTATTAAAAAAAAGT -TTTTCAGAATTTATTTCAAAATCCCGAACATAATCTGAAATTCAGAAATA -CTACAAAAGAAAAACGAAAAAAAAACTGAGAAAAATGGTCCAGATTCTCC -AGTATTGTTAGGCGTACCCCCCCCCCCCCCCTACCTACCTACCTTCCTTC -CTCGCCTACATGCATACCTGCCTACCTACACGCCTGAGTGCCTGCCTACC -TTCCTGCCTACGTTTATGTCTACATTTTTTGCCAGCCTTTTGCCAGTATA -CTTTACGTGTGTTCTTAATTACGTGCCTATCTACTTACCTTTCTTCCTCG -CCTACATGTATACCTGCCTACCTACACGCCTGCGTGCCCGCCTCCTGCCT -ACCGACTCACCTACCTGTTTGCATACATGCCTGCCTACCTTCTTGACCAT -GCCGAGGCGCCTATCTTACTACTTGCCTACCTACACGCCTGTCTATTGCC -TACCTGTTTGGTTACATGTGCCTGTGCCGTACCTGTGCCTCAAAAACATC -TTTATTTTGTAATAAATAATTTTAATAAAACTTTATAAAACAAAAAAAAT -ACAAAATTGAAAATAACCTAACAAAAAGTCTTTTCAAACCCCTTCGAACT -GCTCAACTGATAAAAATTCGTGTTATACTTCAACAATTTGAACTGCAAAT -CCGATTTGACACAGCTAAACTTGTATTTTGTCGCTTTATTCCTGCACAAA -TGTGCTCCTGGGCAATTGAGACTATTCGAATCGGTGTAGTAGGTGGTGAA -GCTCTTTGAGCATCTTATTGTAGAGTGATCTTCTCGAAGACGGCCCAGAA -TTGCGGTGATTGAGGGATTTGTGATGGTTCTGGGGATTTGATGTAATAAA -TTTAAATTGTGTGGTTTAGATGCAGAAAAAAAAACTAAGAATTCAGACTA -AGACTTGAAAAAGAGCCAAGAAAAGGGCGGAGCCTATTATCGATTTTTCC -ACTTGCCGTTTATGAAGTTTATCTACACTTATATAGTCTATTATCAATAC -TAAGTTAAACAGTATATGGTATAATAAATACTATGACTGCAAGAAAAATC -AATAATAGGCTCCGCCTCTATATTTGTTTTTTCTCGTTTTAAATCCAAAC -TTATTCTACGCCGAACCTATATTCTTTTATATTTTTTGAAATTATATATC -CTTCTATTTATAAGATTTTTCCAGCCAAATTTTTTTTTCTCAGAAAAATT -GAGTTTCCCGCCAAAATGGGTTTCTCAAAAAATTTGAATTTCCCGCCAAA -ATTTTTTTTCTCAGAAATTTAAAATTTTCCGCAAAATTTTTCTCAGAAAA -TTTGTATTCCCCGCCAAAAATGTTTTCTCATAAAACATGAATTTCCGTCA -AAACTTTCTCATAAAATTTGAATTTCCCGCCAAAATTTTACGAGAAAATT -TGAATTTCCAGCCAATCTTTTAATGAGAAAGTTTGAATTCCCACCAAAAT -GTTTTTTTTTCTCAGAAAATTTGAATATTCCGCAAAAATGTTCTGAGGAA -AATTGAATCTCTAGCCAATTTTTTCTCATAAAATTTGAATTTCCGGTCAG -CTTTTTTCTGAAAAAGTTTGAATTTCGCGCAAATTTTTTTTCTCAGAAAT -TTTAAACCTCTGGCTTTATTTTTCTCAAAAAAATTAAAATGTCCTGCCAT -TTTTTTAAAAAAAAAATTCACAGAAAATTTGAATTTTTAATTTTAAAATT -CACAGAAACTGACTTCCTTATCGACATGCCAATTGTCACACGATCCGCTG -ATTTCAGAGCTTCACCGCCCGTAAAATTGCCACGTATCATTGAATCCACG -TCAGCAGAGTCGGGAATTTCAAAAATTTTACTATCATCCATTTGTTTGCT -GGAAGCGTTAATTATCGATTTTTATTTTTTTATTCGTTATATTAATTTTA -TTCATATTTTTTGAAAAATAAAATCAATTTCACTCTCGGATTTCTGGCTT -CCCTCATAAAATGAAATGAAAGAGTTTGCCGAACTAGGCCATTTTGGCTC -GGACATATCTGGGGCAGATTTACGGCGCGTTGCGTCGCGGCTCGTTAAAA -ATAGATTTATTTGTCCGTGTGGAGTACACGACCTTCTCACGCGTTGTCCG -GCAGGCAATTGTCAATGGAGCGCGAAAAATTCAATGAGGAAGGCCAGAAT -CCCGTGTTCACTGATTTTTTGAATTTACAATTTTTAAAGTATCGAATAAA -AATTTTAATTGAAAAAATCGATTTTCAAAAAGTTTTAAAATTTTTTTAAA -ATTTGAATTTAAAAATCGATTTTAAAAATTATTGATTTTCGAGCAAACCT -TTTCAATTTGTACGGATGTTCCACGGGCTCATTGAGCCAAACACTATCGA -TTAAAGATGGGCGTGTCACCACTTTTGCCACGCCCCTTTCATTCCGATAT -TCCAATAACCCGACGAATATCTCTGATTCGTAATAGTTGGCGAACTCGGA -AAAATAGGAATCGAACGATTTCGGCACGAGAAGATCAGACCACTCGAGAA -ATGTGATGAAGCTCCCCGAGCTCTGAAAGTTTGGATAAATAGAGTTGTGA -GCCTAGTGCAAGTTGAAAAAATCGATAAATTATCGATTTTCTGATTGTAC -GAATTTAGGCGGGAATTCAAATTTTCTGAGAAAAATTTAGGCGAGAATTC -AAATTTTCTGAGAAAAATTTAGGCGAGAATTCAAATTTTCAGAGAAAAAA -TTTTGGCGGGAATTCAAATATTCTGAAAAAAAATTTGCCGGGAATTCAAA -ATTTCTGAAAATAAATTTAGGCGAGAATTCAAATTTTCAGAGAAAAATTT -TGGCGGGAATTCAAATTTTCTGAAAAAAATTTAGGCGAGAATTCAAATTT -TCTGAGAAAAATTTAGGCGAGAATTCAAATTTTCAGAGAAAAAATTTTGG -CGGGAATTCAAATTTTCTAAGAAAAATTTTGGCGGGAATTCACATTTTCT -GAGTAAAACTTTGGCGGGAATTCAAATTTTCTGAGAAAAATTTAGGCGAG -AATTCAAATTTTCAGAGAAAAAATTTTGGCGGGAATTCAAATATTCTGAA -AAAAAATTTGCCGGGAATTCAAAATTTCTGAAAATAAATTTAGGCGAGAA -TTCAAATTTTCAGAGAAAAATTTTGGCGGGAATTCAAATTTTCTAAGAAA -AATTTTGGCGGGAATTCAAATTTTCTGAGTAAAACTCTCTGGCGGGAATT -CAAATTTTCTGAGAAAAATTTAGGCGAGAATTCAAATTTTCAGAGAAAAA -TTTTGGCGGGAATTCAAATTTTCAGAGAAAAAATTTTGGCGGGAATTCAA -ATTTTCTGAAAAAAAATTTCGGCGGGAATTCAAATTTTCAGAAAAAAAAT -TTTGGCGGGAATCCAAATTTTCTGAAAAAAAATTGGCCGGGAATTCAAAA -TTTTTGAAAAACATTTTCGGCGAGACTTCAGGGGTTCTCATAAGAATTCA -AATTTTCTGCAAAAAATTTTGGCGGGAATTCAAAATTTCTGAAAAAAAAT -TTGCCGGGAATTCAAAATTTCTGAAAATAAATTTTGGCGGGAATTCAAAT -TTTCTGCAAAAAATTTTGGCGGGAATTCAAATTTTCTGCAAAAAATTTTG -GCGGGAATTCAAATTTTCTGAGAAAAATTTTGGCGGGAATTCAAATTTTC -TGAGAAAAATTTTGGCGGGAATTCAAATTTTCTGAGAAAAATTTAGGCGA -GAATTCAAATTTTCAGAGAAAAAATTTTGGCGGGAATTCAAATATTCTGA -AAAAAAATTTAGGCGAGAATTCAAATTTTCTGAGAAAAATTTAGGCGAGA -ATTCAAATTTTCAGAGAAAAATTTTTGGCGGGAATTCAAATATTCTGAAA -AAAAATTTTGGCGAGAATTCAAATTTTCAGAGAAAAATTCTGGCGGGAAT -TCAAATTTTCTAAGAAAAATTTTGGCGGGAATTCAAATTTTCTGAGTAAA -ACTTTGGCGGGAATTCAAATTTTCTGAGAAAAATTTAGGCGAGAATTCAA -ATTTTCAGAGAAAAAATTTTGGCGGGAATTCAAATATTCTGAAAAAAAAT -TTGCCGGGAATTCAAAATTTCTGAAAATAAATTTAGGCGAGAATTCAAAT -TTTCAGAGAAAAATTTTGGCGGGAATTCAAATTTTCTAAGAAAAATTTTG -GCGGGAATTCACATTTTCTGAGAAAAATTTTGGCGGGAATTCAAATTTTC -TGAGAAAAATTTAGGCGAGAATTCAAATTTTCTGAGAAAAATTTTGGCGG -GAATTCAAAATTTCTGAAAATAAATTTTGGCGGGAATTCAAATTTTCTGC -AAAAAATTTTGGCGGGAATTCAAAATTTCTGAAAAAAAATTTGCCGGGAA -TTCAAAATTTCTGAAAATAAATTTTGGCGGGAATTCAAATTTTCTGCAAA -AAATTTTGGCGGGAATTCAAATTTTCTGCAAAAAATTTTGGCGGGAATTC -AAATTTTCTGAGAAAAATTTTGGCGGGAATTCAAATTTTCTGAGAAAAAT -TTTGGCGGGAATTCTAATTTTCTGAGAACATTTTTGGCGGAAATTCAAAT -TTTCTGAGAACATTTTTGGCGGGAATTCAAATTTTCTGAGAAAAATTGTG -GCGGGAATTCAAATTTTCTGAGAAAAATTTAGGCGAGAATTCAAATTTTC -AGAGAAAAAATTTTGGCGGGAATTCAAATTTTCTAGAAATCAATTTTTTC -AGAATTTCAGAAAACACCACCCCGGCTATCAATGGAGCGCATTTTCAAAG -TCTCACTTTATATTTATTCAGGCAATCCGAATTTGCAACAGTGACACCTC -CGAATTCAATTCCATCCAATTTTGATTTCCCATAAAAATCTGGAAACGAG -TCAACTGATATTCCTTTGAGACGCTTCAACTCTTCTAGAAATTCGAAAAA -CGGGCGACTTGTAGTTGCCACGTATGTTTGGAGATGGCCGCCGAAACTGG -AAAAAAAATTTAAAATAAACTGACAAGTCTATATATTTTTTCTTTAAATT -TTTTTAATCGAAAAGCACCCCTATTATATAAATTCTTTTTTAACCTACCA -TTTTTAATAATTGATGGCCGAGTTTTCTTTTTTAGGCCATGTTCAAAAAG -CCGGTCGGTACCGGTTTTTGGTGACCGAATTTTCAAATTTTCTAGGCCAC -GTAGAAAAACCAGGTCTTCTTTTCACACATTGATTGTTTAATTTTCTCAA -AGAACCCCCTCTCCTATAAAATCACGGTTAATAATGGGCGATAAGTCGAT -GGCCGAGTTTTTTTTATATATTTCTAGGCCATGTAGCAAAAACTGACCCT -TTTTAACCCCAGAATGTTCTCAAAAATCGTATTTTTTAATTGTGGAAAAG -CCCAGAAAATTATGTATGCTGCAAAATCACAAGTCGGCGGCCGAGTTTTC -TCTCTTCCTAGGCCACGCTGCAAAAACTAACCTTCCGTTTACATATTGAC -TTTTTCAAATAATTTCAAATAAAAATTATTCACTTATAAAATCATTTACT -TCATGATTGAAAGCTTTTGCAATTGGTTAAAACCGGAAATAAGTCGATGG -CCGAGTTTTCTCTTTTCTAGGCCACGTACCAAAAGTGTCCCTTTTTTACC -CCAGAATGTTGTCAAAAATCGTACTTTTTATTTGTGGAAAAGCTCGGAAA -ATTATGTTGTAAAAAATGAGTCAAGTCGGTGGCCGAGTTTTCTCGTTTTC -TAGGCCACGCTGCTTAAACTGACCTTCCATTTACATTTTGGCTTTTAAAT -TCAAATAAAAATTATTCCCTCATAAAATCGTTTACTGTCATTGTGAGAGC -GGTTAAAAACAGGAAAAAAAATGGTGGCCGAGTTTTTTTTTCTAGGCCAC -ATAGCAAAAAACTCACCTAGTATACACATGAGCAGCTAACAACACATTCT -GCCATCTAACATTATTATAAATAGGCGGAGTACATACAACCAAATCCTTC -GGCTTATTATCCGCCGGCAAATATCGAATTTTCGCGGTATGCCCATTCAC -AAGAAGCTCCAGCTCCGTGAGCTCTTCCTCAAGCACTATAGTACCCACAA -GTGTCACGTATTTGCATAAATTATGCGGAGTTGCTCTGTGAATTTGAAGT -GGTTCGAGTACGGTTTTTGTGTCGTCACTTCGGATTGCGATAATCTTACG -ACGTTCCCAATGTGCATCCCGAGGCGCGATAAAGGTTAGTGTTACTTGGT -TTTTGTAGAGACTGAAAAATTTCAAAAAACTTAAAAACTAACGTAGTTTA -AAACATTATTCTTCTTTTTTTATTCTGAGATATTTTGATTTTGAAAAAAA -AAAATTTTTTTTACGAAAAAAAAATTGGCAAAATACCTCAAAAACTGTGA -GTTTGTTGAAATTTAGTTTTTACAACCACGGGAATTAATTTTTTAAATTA -AAAATATTTTACGTGTAGTCCTCTCGAATAATTTTGAAAAATATATGAAG -TGTTGAATTCTGCCGAGTTTTTTTGTCCGAGTGGACTACAAAAGTGCAAA -GAATTTGGAATTTTTCAAACTTTATATTTAACAGCAATCATCAACAACTT -AAAAAAATTTAGATTAAAAAATTTTTTTTGGAAGTTTTCGAAAAAAATTT -TGGAAAAATTTTTAATTTTCAGAAAAAAAAACCAGTTTGATTTTTTTCTT -AAATTCTTTTTTGAAAATTTGTTGAAACTTTTTTTTAAATGCTAGACTTT -TTTTTTGAATTTTCACGCGGTTCTGGTTTCCCTCATATTTTGAGATAGAA -GAGTTTGCCGAACTAGGCCATTTTGGCTCGGCCATATCTGGGGTAGATTT -ACGGCGCGTTGCTTGTCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAAA -TGTATTTGTCCGTGTGGAGTACACGACTTTCCCACGCGTTAGGCGATTAT -CAATGGAGCGCGAAAAATGCAATGAGGAAGGCCAGAACCCCGTGAAAAAT -ACATTTTAAAAAATACTTGAAAAATGTTTAAATTTTCTTTTTAATTTTAA -ATTTGAAATTTTGTAACTTTACAAAAAAATAATTTTTCGAAATTTTTTTC -AAATATTTTTTTTCGAATTCTTTTTGTTGAAATTTCAATTCTCTGTTCTA -AAAATCAATATTCCTTACCTGTATCCCACTCCATAATAGTACGCAGAAAC -AAAAAATAGGTCTTTCTCGTCGTTATCCAATTCTTTAATCTTATTAGTGT -ATGAATTTCGAACACGTCTTAATGCAGGCAAGGGATGTATTGAAATATGT -ACAAATGCTAATAATATTACAAATAGATATAGGGTCCTGCAACGAATTAT -CAACTGCTCGTAGAGTACGGAATAGGGTTTGAATTGAAAATTGTTCAGTT -TCGTGTCGGAATTCATTTTTATTATGGGGAGGAAAACAATCTAGTGTGGT -GGTAGTGGTAATGACAATCGCTATTTGAAATCATGTTGAATAGCTGCGAT -AAGTATCGGGCGCCAGCGTGGCCTAGGATTTGGGAAAACTCTTCCACCAG -AAGCTAGTCGTGGCCCAGGCTTTGAAATTTGATTATTTGATCAAGAAATT -TACAACTAAATTTAAAATCAACAGTTAAGACATTTTTCATAGACTTTTCG -AAAAATTTCTGATTTTTCCATATCAAATAACCTCGGTACGCATCTAACCG -TCAGTTGCCTCGTGGCCTAGAACTTTTGAAAACTCTTCCACGAGAAGATC -ACCGTAGCCTAGAAAGTTTTGAAACTTGTGTAGTTCGCTTGGAATTTTTT -TTTGGTTTTTTTGTCAACTAACTAGGTTCAATAGCTATTAAAAAGTTGCA -AAATTGGGCAATTTTTGTAAAAATTCACAATTTTGAAACTTCTCTAAAAT -TATTAATTTTGTAGTAAGAGGACTCAAAATTGATCTTCAAACACTAAAAA -ATAGCCCCTTTTTAGAATATAGTGGTTTCGAATATTTTTTGAAAAATTAT -TTTTTTTTACCCAAAAAAAAGGACAGTCATGGCTGAAAAAAAATTTGGAA -AAAATAAAAAAATTGTCTAAATTTGTTGAAAACGGGTAATTCATGCATTC -TGAATTCAGAAAATCTAGGTTTAACCCATCAAAAACCATTAAAAGCGGCA -AAAATGGGTATTTCATTGTAAAAATAATGCATATACAATAAACAATGTAG -AGGAATGTTCAAAATCTGTAGTTTTTTTGAAATTTTTTTTTTATTTTTTG -GTTATTTTTTTTGCAAATTTTCTCGTATATTTAATTAGTTAGTTTGCATG -TTACATGCTAATGAAAAGGTTTTTTTTGCATCCTGATACATATAAAAACC -GAGAAATTCACAATTTCACAATCAGTAAGGTATTTAATTTTTGTTAACTT -TAGTCTTCTGCTCCTCTAAAGCTTCTGGAAGAGGACACTTTCTAAATTTT -CAAAATATTTTTTGCGCCACTTTCCTGTCAAATTTCTGGCATTATTACAT -CCAAAACCCAATAAAAATCGGAATTCCATAGCTACGACAACGTCAGCAAA -AGCGGAAAGAAATTTTGTTTGCCTGTCTAACGAGTCACAAAGCATACACT -GACGTTTCTATCAGAAAAGACAGGATTTCGTATCAAAACAAAAATTGGGT -GCGATTGCTCGATGCACCATGTGATATTTTGCTTTTTTTAAAAATTATTT -TGCTCGTAATGTATGGTGCACTTATTCCGTGGCTGCAGAATTTGCACGCG -GTGTCATAATGCCCATTTCGACTTGATCTACGTAGATCTACAAAAAAATG -CGGGAGTTGAGACGCAGAGGTAGGGCTCAACTGATTTCGTTTGGTTAAGA -GCGTGCTGACGTCACATTTTTATGGGCAAAAAATTCCCGCATTTTTTATA -GATCAAACCGTAATGGGACAGCCTGACACCATGTGAATGCAAACTTTACG -CGAAAATTTTTAGATTTTTAATAATCTTAGAATTAGCTATGGTTTTATAG -AATAATATCAAAATTATCCAAAAAAAAAAACACATTTTTTCAAAATTTTA -GATTTCCAGTTTCTATTTGAACTTTAAAAGACTAATCCAAATTTTGTTTT -GTTTCAACGATTTTTCATTGATCTCTCCAAAGAATTCATTGAAACACATC -ATTCACAAAACTAAAAACTCCCCGACTTGGCTTTCATTCCGAGATGACAA -ACTTTTTGGTGGCAAAGGTTCTTTGGGGGCATAGTATCCAAGGAGACAAA -GTATCCAGTAGACAAACTGGGGTGTATCTTGGGGGGCATATCTTTGGTGA -CAACCTTTTTTTCGACTAGATTTTTATATGTATTTTTCAACTAATTTTTG -TTCACATTTTTCTGGAATAAGTTTTTTAATGCAATTTTCAATCGATTATC -GGTTATAATTCCCTCACAATTGAATGTATGAACGATGGTCTTTTGGGAAA -AGCTGTAAAACGTCCAACTAACTTGGAATATCGTGAGGCTCTTCCTGATG -GTCTGATCCTTCAGCTCCGAAGGATCACATGGGTACCTTCTGATGTTCTG -ATCCTTCAGATAAGAAGGATCGTAAGGGTACCTCCTGATGGTCTGATCCT -TCAGATCCAAAGGATCACGAGGCTCTTCCTGATGTTCTGATCCTTCAGCT -CCGAAGGATCACATGGGCACCTTCTGATGATCTGATCCTTCAGATAAGAA -GGATCGTAAGGGTACCACTTGATGGTCTGATCCTTCAGCTCCAAAGGATC -ACGAGGCTCTTCCTGATGTTCTGATCCTTCAGCTTCGACAGATCATATGG -ATTTTTGACAAAATTTGAAAAAAAAAATTTTGAAAAAAAACTCGAAATTT -TTTTTTGTTATTCTTCATTCTTTAAAGAATAGTTCAAATTTATCATGATA -GGACCGAAAACTTTCAAGAAACAGTATAACTATACATGATAATCAGCTTC -TACCAAATAATGATAAATTCTCCGCGATGACAAACTTTTCGGTGACAAAG -TATCTTGGTGGACAAACAAAAATTACCGAAAACTGATGTAAGGAATAGTG -AAATAGAGTCCTATGGACTATTAAACATGTTCAGTAGGTGTATTCAGGAC -TGTCCGTCAAAATAAAAAAAAGTTTGTCAGACGAAGTTCGAACCTGGGAC -CTGTAGGATGCAAAGTGCGCTCACTACCACTACACCAGCTATGCGAAAGT -CGGCGAGCCTCATCGAAGGCTATTATAAAACTTAGTTCGCACGAGTATGA -TCGACATTCAACAAACAGTAATATCTCTCAACAAGAATTTCTTCATGGAA -TTGAGGTCATTTGACTATTTTTATCGGTTTTTCAAGTTGAGCATAGGGTC -TTTTAATTTTTTGAGCATAGAAAATCATGAAAGCTGCCTGTTCCTTGTAT -CCTGGATCGAAATAGACGTATCTGGCCTAAAATATTTCCTGAACAGTGAT -CATTTCATGTCCATTGTGTGTTTCTCTGTATTTTGAACCAGAAAGTTGAA -CAAAAATGATAATATTATATCGAAAAATGGAACAAATACAAATAATTTTT -AGGCCTAATCAAATTTCCTCCGGATATTGTTTTTTTTGTCATGATTATAT -GTGTCTAAATTTTTTATAATGTGTTTTATAACAAAATTCGTCATTATTTC -CTTCATTTCAAGCAAAATTTAACAGTTCGAGCTTAAAAATAGATGTTGCA -AAAAATTTAATTCGTTTCGATGAATACGGTATACGGTCGGTGTTTGCGTA -CTTTGGCGTTTGCGTATGAAGCATCCTATTTGACGCACGAAACTTTCAAT -GAAATTTAATGCAAATTCTGCATCGAAAAGGACATTACGATGGAAATAAT -GACGAATTTAATTATAAAACACATTATAAAAAATTTAAAAACATATAATC -ATGACAAAAAAAACAATGTCCGGAAAAAATTTGATTAGGCCTAAAATTTA -TTTTTTATTTTTTTCCATTTATCGATTCAATATCAACATTTTTGTTCGAC -TTTCTAGCTCAAAATTCATAGAAACTCACGATGGACATGAAATGATCACT -TTTCAGGAAATATTTTAGGCCAGATACGTCTATTTCGATCCAGGATACAA -GGAACAGGCAGCTTTCATGATTTTCTATGATCAAAAAATTAAAAGACCCT -ATGCTCAACTTGAAAAACCGATAAAAATAGTCAAATGACCTCAATTCCAT -GAAGAAATTCTTGTTGAGAGATATTACTGTTTGTTGAATGTCGATCATAC -TCGTGCGAACTAAGTTTTATAATAGCCTTCGATGAGGCTCGCCGACTTTC -GCATAGCTGGTGTAGTGGTAGTGAGCACACTTTGCATCCTACAGGTCCCA -GGTTCGAACTTCGTCTGACAAACTTTTTTTTATTTTGACGGACAGTCCTG -AATACACCTACTGAACATGTTTAATAGTCCATAGGACTCTATTTCACTAT -TCCTTACATCAGTTTTCGGTAATTTTTGTTTGTCCACCAAGATACTTTGT -CACCGAAAAGTTTGTCATCGCGGAGAATTTATCATTATTTGGTAGAAGCT -GATTATCATGTATAGTTATACTGTTTCTTGAAAGTTTTCGGTCCTATCAT -GATAAATTTGAACTATTCTTTAAAGAATGAAGAATAACAAAAAAAAATTT -CGAGTTTTTTTTCAAAATTTTTTTTTTCAAATTTTGTCAAAAATCCATAT -GATCCGTCGAAGCTGAAGGATCAGAACATCAGGAGGTACCCATGTGATCA -TTCGGCTCTGAAAGATCAGATCATCAGGCAGAGCCTCATGTTCTTTTGGA -GCTGAAGGATCAGAACATCAGGAAGAGCCTCATGATCCTTTGGATCTGAA -GGATCAGACCATCAGGAGGTACCCTTACGATCCTTCTTATCTGAAAGATC -AGATCATCAGAAGGTACCATGTGATCCTTCGGATCGGAAGGATCAGATCA -TCAGGCAGAGCCTCATGTTCTTTTGGAGCTGAAGGATCAGAACATCAGGA -AGAGCCTCGTGATCCTTTGGAGCTAAAGGATCAGACCATCAGGAGGTACC -CTTACGATCCTTCTTATCTGAAGGATCAGAACATCAGAAGGTACCCATGT -GATCCTTCGGAGCTGAAGGATCAGACCATCAGGAAGAGCCTCACGATATT -CCAAGTTAGTTGGACGTTTTACAGCTTTTCCCAAAAGACCATCGTTCATA -CATTCAATTGTGAGGGAATTATAACCGAAAATCGATTGAAAATTGCATTA -AAAAACTTATTCCAGAAAAATGTGAACAAAAATTAGTTGAAAAATACATA -TAAAAATCTAGTTGAAAAAAAGGTTGTCACCAAAGATATGCCCCCCAAGA -TACACCCCAGTTTGTCTACTGGATACTTTGTCTCCTTGGATACTATGCCC -CCAAAGAACCTTTGCCACCAAAAAGTTTGTCATCTCGGAAAGAAGGCCCC -CCGACTTTGCGCGTAAGATATGGTGAGACCCTAATACATCATATTTGACG -CGCAAAATATCTCGTAGCGAAAACTACAGTAATTTTTTAACCGTCTACTG -TAGCGCTTTTGTAGATTTACGGGATCTCGATTTTTTTAATGATTAAAATT -AAACAAAAAATGAGAAAAGAACACGAAGAAACGAAGAAAAATGAAATATC -GATGTCACTTTTCGGAAAAAAAATTAATTTCAAAAATTGAGCCCGTAAAT -TTACACATGCGCTACGGTAGGCATTTAAAGAATTACTGTAGTTTTCGCTA -CGAGAAATTTTGCGCGTCAAATATATCGCACAATACGCATTCTCAGAATT -TTGTGTTCCCGGAATAATTTATTTATTGGTTTTTTTGGTTGTATTGGTCC -CAAAAATCAACAAAAAAAAATTTTTATGAAAAATTTCTGTTTTCTTCCGT -TTAAAATCAAAAGTTGGTTTTTTTTGTTGCTTTTTTTGATAAATTTTTGC -AACCACCCTGATTTATATTCCCATAAATATTTAATGTCCCGCTTATGATA -TCTACTGCTTCTTTGCAAAATTCCTACCTGCGGACCAAATACACCATACT -TGACGCGCACTTTTTTTTTGATTTTCAGCTGGACAAACACATTTTCAGCA -TGATTCTGACTTATTTATTTAACTCTTATCACTCTTATCGTTAAAAAACG -CCCTTATAATCATCAACCTATTTTCATTGTCATTCAAAAAAAAAAACTAT -TTCGTACTCGTCGATCGTACTAATTTGTCATCGTTCCGTTCCGTCGAGCA -AAAATCAATGTAGTTTTACGTTTTCCGTTGAAAAAAAATCCAAAAAAAAA -TCCAAAAAAAATCCAAAAAAAAATTCCTTGTTAATTAAAACCGTGAATAA -AAAATTCAAATAAAAAGTTCAAACGTTTCGTTATAAAAATGTACACCGGT -AAGCTCAAAAATATACATTTCAGATTCTAACAATGTGCGACGATACGCTC -GCATTTTGTAGTCCAGCTCCATTCAGTGATGATGTAGAGGTTATTAAACA -ACGTGAGGCGATCGATTATTCCACACAAATCACTCTGGAAGATGCGATTT -CTGGGAACGGTAAGTGCGCTCCGTTGTACTCATAGTTCGCTGAATGAAGG -CATGTATAAGTTCTCAAATTTTCAAATGAAAATTGCCAAAAAAGGTTTTT -AGTTAAAATTTAAAAAATTATCGATTTTTAAATTTATGAAAATTTTTTCG -AAAAATTTGTGTTTTTTGTTTTTGTTTTATTGATTTATTGATTTTTTGGC -GAAAATGTGAAAAATCGAAAAATTATGGATTTTTTCTTGGAATTAAAAAA -AAAAAACTTTATCGGCTAAGCGAAACTTGCTTTTTCGGTTTATTGATTTA -TTGATTTACTTGAAAAAGTACTTGAAAAAATCAATACTTTTATCACGGGG -ATCTGGTCTTCCACATTAAACTTTTCGCGCTCCATTGAGAATCGCCCGCC -GGACAACGCATGGGAAAGCCGTGTACTCCACACGGACAAATACAATTAGT -TTTACAACTAAAATCGAGCCGCGACGCGACACGCAACGCGCCGTAAATCT -ACCCCAGATATGGTCTGGTCTAGTTCGGCAAAAACTCTTCCATTTCAATT -TATGAGGGAAGCCAGAAATCTTTGTTTTTATTTTATTTTGAAATCTCTAA -ATTATCGATTTTTTGGAAAAAAAGTTGTTTGAAAATTCGATAATTTTTTA -ATGATTTTTTGGAAAAATTAAAATTTTCGCTTTTCAAAAAAATCAAAAAT -TATTGATTTTTGAAAAAAAAAACACGGCATGCAATTCCTAGACCACCAAT -CAAAAACCTCTTCCAGTGACTCGTCCGGTCCGTGTCTACGCTGACGGTGT -CTACGATATGTTCCACTACGGCCACGCGAATCAATTCCTGCAGATCAAAC -AAACTCTTCCGAATGTCTACCTTATTGTTGGCGGTGAGTTCGGCCCGCGA -AATTCAAAATTTTTAATTTAAAAAAAAAACGATTTTTTCCAGTATGTTCC -GACGAAGAGACTATGAAGAATAAGGGGAGAACTGTGCAGGGCGAAGAAGA -GCGGTACGAGGCGATTCGGCATTGCCGGTACGTCGACGAGGTGTATAAGG -CGTCGCCGTGGACATGTCCGATACCGTTTTTGAAGGAGTTGAAGGTAAAT -TGCGCGTGAGATTCGGTGTTTGCACAGTTTTATCTCCAAAAACGAAGGAA -ATTTTATACCTAAATTTCGGAAAAAAATCAATAAATTATTGCCTTTTTTA -AACGTCACAAAATCGATAATAATTTGAAAATCACAATTTTTTTTTTATTT -TCAAAATTTCGTTGTTCTATCACGGGAACGCAAATTTCTGAGAATGCGTA -CTACACAACACATTTGACGCGCAAAATATCTCGTAGCGAAAACTACAGTA -ATTTGTTAAATGACTACTGTAGCGCGCTAGTGTCGATTTACGGGCTCTAT -TTTAAGCTCAATTTTAATTTCTATCGATAAATATATGATACAAAATATTG -ATCCCGTAAACCGACACTAGCGCGCTACAGTAGTCATTTAATGAGTCACT -GTAGTTTTCGCTACAAGATATTTTGCGCGTCAGATATGTTGCGCAATACG -CATTCTCAGAATTTTGTGTACCCCGTAATAAAAATTCGAGTTTTTCTAAA -CAAAAAGTTTAATTTAAAAAACCTCTAATATTCGAGATATTCGATTGGCG -ATTTATTGATCTATTGATTTTTCGATAAATATTGATTTTTCAATTTTTAC -AATATTCGAAACAATTATCGAAATTTCAAAAAACTAACAAAAAATATTTG -CGGAGGAAAATCGATAACTTTTCAATGTATATTTTCTGAAATTCCATAAA -ATTGATTTTTCTAAATTTAATTTGTTCGATTTTCGGGTTCTCGGTTTTCC -TAATTTCTGTAATTTTGAGTCGATAATTTTTTGTTTTTTTTTTTCAATTG -AAACTTTTATTGATCAAGGATTTCTGGCTTCCCTCATAAATTGAAATAAG -AAGAGTTTGCCGAACTAGGCCATTCTGGCTCGGCCATATCTGGGGTAGAA -TTACGGCGCGTTTCGTGTCGCGTCGCGCCTCGATTTTAGTTGTAAAACTA -AATGTATTTGTCCGTGTGGAGTACACGACTTTCCCACGCGTTGTCCGGCA -GGTGATTGTCAATGGAGCGCGAAAAATGCAATGAGGAAAGCCAGAACCCC -GTGATTGATTATTGAGTTTTGGAAAACTATTTTAAAAAACCTGATTTGAA -AGAAAATATCGGTAATTTTTCGGATTTTTAACAAGAAAAAGGTTTTTATT -TCCGGAAACTTTCATTTAATAATTATTTATTTATTGATTTCTCGGAAAAA -TTTGCCGAAATCTATCGAACTATAGTCGAACAATTGGACGAAAAGTCGAA -AAAAAAATTCTAGGCCACGAATTTCCTCTTCCAGGTTGACTTTATGTCAC -ACGACGCTCTGCCATACCAAGGTCCCGCCGGAGAAGACATCTACGAGAAG -CACCGCACTGCTGGCATGTTCCTGGAGACGCAGAGAACCGAAGGAATATC -GACGAGCGATTCGATTTGTCGAATTATCCGCGACTACGACACGTATGTCA -GAAGAAATTTGCAGAGAGGATATTCGGCCACCGATTTGAACGTTGGCTTT -TTTACAGTGAGCCTGGCCTAGAAAGGGGTGGCCTAGAAAGAGGTGGCCTA -GAAAAACAAAACTCTTCCATTTTTTTCAGACCAGCAAATATCGTCTGCAA -GACACCGTAGTGGGAATAAAAGAAATGGGCCGTGGCCTGCTGCAAACGTG -GAAAACGAATGCGGATTACTTGATTGAAGGATTCTTGACGACATTTGCCA -TCAGTGATCCGAAACCGTTGCCGAACAACAAAAGTGCCGATGAAAATGTG -GAAAATAGGGAGAATATTGAGAATTTTTAGAAAAAATTCGTGTAAATTAT -GGGAATAAAAATTTGAATACTCGTGAATGTTTACTGAATTTATGCAATTT -ATTTTTTGAAATTTTCAATTTTTTTGGAAAATTTTTTTTTCTTAGGCTTA -GGCTTAGTCTTTGGCTTTGTTTTAGGATTAGGCTCAGGCTTAGGCTTAGG -CTTAGACAAAAACTTAAGCTTAGGCTTAGGCTTTTGATTAGGCTTAGGAT -TAGTCTGTCTTTCACTTAGGTTTGGCGTCATTGGCGAGCGTTAGCTCGCT -ATTTAGGCTTGGGTTAATTAGGCTTAGGCTTAGGCCTAGCTTTAAACTTA -GGCTTAGGCTTAGGCTTAGAATCAGGCGGGCTAGGGAAAAAAAGAGAAAT -TCCAAAAATTCCAGAAAAAAGGAAAAAAGGTACATCCCGAAGTCGGGTCA -AAAAATAAAGTGAAGAAATGAAATTTTCACGAAAATGAATGAATATTTTT -GAGTCTCGCGGATTTATTTTCATAATCATATTCTGAACGTATTATTGACT -CGTCGTGTGGGACATTTCAATGGATTTTCCGTAAAAATCTCTGTAGAATT -CCGCATCGGTCAACGATTCTTCACAAGAGCCAAACTCGGCGAGTCGGTCA -AACAAATGTTTGAGCTCCTGAAGAGTAGTTCAAAATTATATATGAATTGA -TTTATCTTGCAAACCTTTCTCCGTTTGTCGGTAAAAAGTCCTTCGGGGCA -GATTTCCGTATCAATCAGACGATTTGCAATGTATACAATCCACATGAGAT -TTGTTCGCCTTGAGAATTTCTCCCAGTTGCCCCTGGAACGTTAATTTTTC -TGAATTTCTAGAAAGGATATAGAAATAGCAACAAAAAAAAAAATTTATCC -AAATAATGAGCTATTTAATGTAGTTTATATTACTACAAATACTTTTCTCA -TAAGAACGTCTTGTTCTTGATAAATGTGTGCTTTAAGAAAAAAAAAAGTC -AAAAATAGAGTCCTGAGATGTCGGGCGTTGTACCTATTAGGGGTGTCAAT -AAGTTCCGGGTCAAAATTCATAACTTTTTTCGTAGCAAATCGATTTTCTT -GAAAATGTGGGAATTTATGTTATCAAACATGGTCTTTCATTTGACGGCAC -TTTCAAAAAGTTTTGACCACTCCATGTACCCTAGCTCGGATCCACTTTTT -TCAGGCGTATGCCCGATCTCGCTTCTTTGTAACTTTCAATTGAGACTTAT -GTGCGGATTTTGATTTATTAAGTATACAATGTAAGAATACAATAAAAATT -TGAGAAAAAATTCGTTCAAAAAAACAATTTTTTTGATCGGCAAAAAACCC -TCGAAAAAAATTTTGTCGAAAACTCTTGATTTTTTGTACAGGAATGATGC -AACCAATTCTGAACAATTTTTTAACACATAAAAGTTTTGAATTTAAGGCG -TCACACACAAGCGGCAATGGAAAAAATGATTTTTTAGTGAATTTTTTGAA -ATTTTTGAGAAATTCTCGAAATCTAAATATTAAATTCAAATGTTTTGTGT -GTTGAAAAATTGTTCAGAATTGGTTGCATCACTCCTGTACAAAAAATCCA -GAATTTCCGACAAAAATTTTTCCGAGGATTTTTTTGACGAACCAAAAAAA -TTTGTTTTTTTGAAGGAATTTTTTCTCAAATTTTTATTGTATTCTTACAT -TGTATACTTAATAATTCAAAATCCGCACATAAGTATCAATTTAAAGTTTC -AAAGAAGCAAGATCGGGCATACGCCTGAAAAAAGTAGATCCGAGCTAGGG -TACATGGAGTGGTCAAAACTTTTTGAAAGTGCCGTCAAATGAAAGACCAT -GTTTGATAACATAAATTCCCACACTTTTAGAAAAATCGATCAGCCACGAA -AAAAGTTATGAATTTTGACCGGTAACTTATTGTGCTACATGCTTGTTGCG -AAATATACCTATTTACCTATACCTATACCTATACCTGCAATTTTCTCTCA -TCTCTCGATATACTTCAAATTGTGGAGCATCTGGTCCTTCAAAAATCGTC -GTATCCTCTTCCAAATCCCAGTAGATAGTTGTCGAATCTAAAATTATATA -TTTTTAATTATAAATTGTATATTTTTTTAATTTAAAAAATAACAAACCTT -TCGAAATGCGGCTAAGTGTGAAATCAATAATATTGACCTTAATTCCATGG -GTCCTCAGTGGAATTTTCTGCCCATGCACAGTGTAGGAGAGCTCTTCCAC -TCCGTTCCGATCGATCAGCACATTACTAAGATTTAAGTCCCTGTGCTCGA -ATTCAAGAGCTGCTTCAGCTGCAACCATTGAGAGAACGAGCTGGTGAATG -ATGGAAAATAGTTCATCTTCACTTTCAAGGACAAAATCTGCCAGCGAGAT -TCCACCATTTGCCGAGACGAAAAGGATAAAGTTTTGATGTTCTGAAGAAT -AAACATCTGGCCTCAAATGTTCGGATTCATTGAGCTTATCGTAGGCATCC -CAAGCTCTCAGTAATCCCTTAGGATATTCCCCCATGACTATTTGGGCTGA -AATCATTTCGATAAAATTCGGCGTAGAATTCCAAGAATTTGGGTCTCTCA -ACGCCGACAGTTCCTTCATCACAATCACCTCTGACAAAACGGCGTGGGTT -GTTGGAATTTCCACGGATTGATTTCCATAGAAACATCCGTTGTTTTCGAA -TGGCAAAACTTTGATAGCAACCGGTCTACCATTCCAGACAGTTGAGAAGA -CTTCACCGTACGCTCCTTCGCCGAGCTTCTTCACTTTTCGAGCATCTAGC -GCCGACGTTGGTAGGCTACCCCATGGTTTTGCTTCTTTTTGGCCAACAAC -ACGGAGAAGTTGTGCCATGGACGGATCTTTATTGTGAAATGTGATACTGC -CAATGGGGATATTTCTAGAATCAGGATGAGCTGACCGAGCACTTGGAGCT -CTTTTGTTCAGTTCAGCAAGCATGCACAGTTCGAAAGCATGCACAGTGCG -AAAATGACTTTTCTGAAATTGTCATCAAAAGTTCATTTTGAAAATTCGTT -TCGGCAAAAAATGCAAATGCATTTCTGAAACTCACCAGTTGTCTCTGAAA -TCGTCGTTCGTTGGTCATGTCGAGTGCAAGAACGGTGGTGGTGACCACTG -CCGTCTTCGTGAACCGCATCCAAGACATGTTTCGGGAGATAACTATAGAA -ATGAAGTTTTGAAAAAAAAACTCAAGACCACAATTATTGAAACACGTTAT -TAGGCCAATAACTTCACACGTGAATTAATACATTATTCATGTATTTTTCT -TTGACTGTTATCACGGGTTTCTGGCTCACGGTAGTTCAGCCACGGTAGCA -CAGAAAATAGATGACCACGTTCATGATAATCAGTCTGAAACCTATATTGG -CTGCTATCTCGAAAACTCTCTAAAAACGCGTTTTGAGAAATTATTGATTT -TTTGGAGAAAATCAGAAATTATTGATTTTTTGGAGAAAATGGGAAATTTT -TCATTTTTATTGGGGAAAATCAGAAATTATTGATTTTTGGAGAAAATCAA -AAATTATTGGTAATTTGAAGCAGGGGTGGGCAGCAATTGCCGTTCGGCAA -ATACGCAAATTACCGGTGTGCCGATTTTCCGGGAATTTTCATTTTCGGCA -GTTTGCCGGTTTGCCGATTTGCCCGACATTTTTCAATTTCGGCAATTTGC -CGGTTTGGCGATTTGCCCGAAATTTTTCAATTTCGGCAATTTGCCGGTTT -GCCGATTTGCCCGACATTTTTCATTTTCGGCAATTTGCCGGTTTGCCGAT -TTGCCCGAAATTTTTCAATTTCGGCAATTTGCCGGTGTGCCGATTTGCCA -AAAATTTTCATTTTCGGCAATTTGCCGGTTTGCCGATTTGCCGGAAATTT -TCATTTTCGGCAATTCGCCGGTTTGCCGATTTGCCCGAAATTTTTCAATT -TCGGCAATTTGCCGGTTTGCCGATTTGCCGGAATATTTCATTTTCGGCAA -TTTGCCGGTTTGCCGATTTGCCCGAAGTTTTTCAATTTCGGCAATTTGCC -GGTTTGCCGATTTGTCGAAATTTTTCATTTTCGGCAGTTTGCCGGTTTGC -CGATTTGCCCGAAATTTTTCAATTTCGGCAGTTTGCCGGTTTGCCGATTA -GCCCGAAATTTTTAAATTTCGGCAATTTGCCGGTTTGCTGATTTGCCAGA -AATTTTTCAATTTCAGCAATTTGTCGATTTGCCATTTGCCGGAAGTGTTC -AGAAGGATTTTTTTATAATAAGGAACCACTTAAAACTGTGCCGTTTTGAA -ACTTTTCCCCGTTTTTTTAAGATGATTTCATAGAATTTGCTTACTTGGTT -TGCCGAATTGCCAGAAGTTTTTCAATTCCTACAAGTTGCCAATTTGCCGG -AAACTTTTTAATTATGGCAATTTGCCGGTTTGCCGATTTGCCAGAAATTT -TTCAAATTCGGCAATTTGCCGGTTTTCCGATTTGCCGGAAATTTTTCAAT -TTCGGCAATTTGTCGATTTGCCGGAAAATTTTTATTTATGGCAATTTGCC -GATTTGCCGGAAAAAAAATCGTTTCCCGCCCACCCATCAGTTGATGAGTT -CATCTTTTTTTTGTGTCTCTCCCATCAATCTTAAACTCGACCCGGACTGG -CAAACGCATATCTACAGTTTTCTCTTCTTAAAATGGTGGTCTTAAGTTTC -GAAGACTATGCGTAATTTCTAGCGAAGTGGCGAATTTATGATGATTTTGC -AATTTATCAATGAAAAAAACAAAAAAAGCATTTCCGCGTGGCAAATTATC -ACTGTTGTGCCGCGAATAGTACTGATATAATTTTTTTTTAAATTGAATCA -GTTTGGAATTTCGAATTTTTGAAACAACCGCCGGCAAAATGAATAATATA -CTGTGAGTTTTCAAAGATTGTTCCCCGGTTTTCTTGTAGATTTTTGTGCA -ATTTCAAAATTTCGACTTTCAGCGGAAACAAAAATACAAAAAGGTCGAAG -AAGAAGGACGGAAAGTTTACGAGCAACACTGCTACTGATCTTGTTGAGGC -CCCAAAACCAGGTGGAGCAAAAGGATCCAAAAAACCAAAACCATCGAAAG -GAAATGACGACAGGGGACGCGGCGAACCGGAAATGACTGCACAATCCAAA -AAAACCAAGAAAGCAAAAAAAGTGAGACAGAAGAGAGATACAAAGGCACC -GGTGAGTTCAATTTTATAGTTTTATAGATATAATTGTATCAGGGGTGGGC -GGCAATTGCCGTTCGGCAAATTGATTTGCCGCCAAATTCGGCAAATCGGC -AAATTGCCGGTTTGTCGATTTGCCGGAAATTTTCAATTCCGGCAATTTGC -CGGTTTGCCGATTTGCCGGAAATTTTCATTTTCGGCAAATCAGTTTTGCC -GGAAATTATAAGACGGAAACACTGTCTTTTTGAATTGTTCCCGTTTTTTC -TACATATTTTCATAGAAATTCATAGAGACAATTTGCCGAAATTTTTCGGC -AAATTGCCGTTTTTCCGGCAATTTACCGATTTGCCGGAAATTTCCATTCC -GACAATTTGCCGATATGCCAATTTGCCGGAAAAAATCGTTTGCCGCCCAC -CCCTGAATTGTATCCCTTTTTAGTCTCCTGCAATGTCACCTCGATCACGT -GAAATGCTGTCAGACAACAAAAAGACGACCGTTGAGGATGATCCAGCAGT -TCCAATAACAACAAGTGTCGCTGGAGCAGTCACTTCTACGATTCCTGCTC -TCATGTCCACTGAAAACGCGTTTCAGCCACCCAAAGACCTTATCTCGGGA -AGAAAGCCAAAAGGTGCTCCGAACTTGTCTGGCAGCGTTCCACTTTCACA -CAAGAGCTCACTGACTGGAGGTGCAGATAAGTGGGTTGGAGAAGCCGTGG -CAAAGAATTGGATGGATTCGATCGGTTAGCATCCTTTTTTTTTTGATTGG -AGGCCCCGGCGGCGTAAAAATCGTGCCAGAGTTGCAAGAGTGGGCGTTTT -TTTTTGTTTTTCTGTTGTTGGTGGGGCCTTATTATTATTTGGTCGATGGT -GATTTTACTTTACTGGTGGAAATCCGCTAATAAAACTAAAAACATCGGGA -TATAAATAAAAACCCAACTTTAAAAAGCGAACCAATCAGCAGTTTGCTCC -GCCCACTATTCAACCAATCCAATGATTGGTTCGAAATTGGGTACTCATTT -TAGAGGGAATTCAAACGGAAGATTAGCAAGTTCGGTTATTGTTTCATTAG -AATATCATTGCTTATATATATATTTAAAAAATAGTGTACGTCATCAATGG -GCGGAGCCTCTCCCATCGTGGTGAGACCCATCGTGGTGAGACACATCGTG -GTGAGACCCATCGTGGTGAGACCCTTCGTGGTGAGACCCTTCGTGGTGAG -ACCCATAGTGGTGAGACCCATCGAGGTGAGACCCTTCGTGGTGAGACCCA -TCGTGGTGAGACCCATCGAGGTGAGACCCTTCGTGGTGAGACCCATCGTG -GTGAGACCCCCATTAATTTTGGCGTGAAATTCAAATTTTCTAAGAACAAT -TTTTTGGCTTTTTTTTTAAAGAAAAATCTGGAAAATTCTAGCATTTTTTT -AGAATAATCTGGAAATTTCTTGAACTTTCTAGCTAAATCTGGAAACTTCT -AGAATTTCCTAAAATAATCTGGAGACTTCTAAAAAAGATCAGGAAATTTC -TAGAACTTTTTTAGAATCTTCTGAAAACATCTTTCTAGAGTATACTAAAA -ACTTCTAGAATTTTCATAAAATTCCGCGAAGCTCGAGGAAGAGATTTGTT -CAAACAATTTAATGTGGAGCCAGTCGGAGCACGCGCTTTGCGCGTGCGAA -CGGCTGGTTTTAGATATTTTGTAGTATTTTTCAAATCTTAAATTTTCAGA -CACAGCAGAGGTGAAAAAGGAATACGATAAACTGCAATCACAGAAAATCG -ATGTGGAGAAGGACTGTAAAACCTGGAAATCCAACCCAAAATTTAACCAA -TCGGAAGACTTTCCTGCCTTGGACTCCAATCTCGTGAAACTTGGCAAAGA -CTATGTGAACATCAGTCTTGTAGATGTTCCATTGGGAAGAAATGTTCATC -TCGGTCAAGCTCCGGTCACGAATACGGAAGAAACATTCTGGAAAGCTGTG -TTCGACAAGCGAATCACTCACATTGATCTACTCGTCGGCGATGAAACCAT -CGAATTCTTCCCTAAAAAGGCAGAAGATTATACAAATTATGGTCAGATGT -GGATCAATAACCGCCGTGTCGAGTATGTCAATGACGATGTGTACCGATTT -GCAATTGAAGTAGTGCCCCACGGATGCTCCAACTCGATCATCTGCAATGT -GACTGTTATCAGCAATTGGAAAGTGGACACTGTGCCTTTGAAACAAGCAA -TCGCCATCAAAGAGGCACTTGGTCTAAACTACTTCTTGCTGAAAGCACCC -GCTGACGAGCATGCGATGATCGTCTCACCACGTGGAGCTGGACGAGCTGG -CTACTTTTTGGCACTTGCGGTTGCAGTCAACACAATTGATACAAAGCTTG -CCGAACCATGTATTGCGGATATTGTCAAATCGATTCGCTCCCAGAGACCA -AGAGCCGTGGATTCATTTTGTCAGTACTGCTCCCTGTACATTTCGTTGCT -CTACTTCATCAAGGTATTGGTTTTTGAATTCTTGTAAAATGAGAGAATAA -TTCTCAAATTTACAGAAGAAAGTGACAAAACCAGCAGAAGGGGATAAAAA -GCCAACACTGAGCAACAAATACATCTACAAGAAGTCGGTTGAGTTGACCA -AGCAATTCACCGTTCTCCTTCTCGAAGCGAGTCAGCAAAGTGTGATGGGA -CCTGGATAGTTCTTCTCCATTTTGAATATGGAAAAGCATTTGAAGTGATC -TGGGTTTGAAAATGAAGAATTTTATAAACCCTGGATTATTTCCGAAATCT -TGCTTCCTGCCTGCTGTCTCATTGCGGCTTGATCTGCAAAAAAAGCGGTA -ATATCTCCCCCAGGAAAATGTGACGTCAGCACACTCTTAACCATGCGAAC -TTAGTTGAAACGTCTGCGTCTCTTCTCCCGCATTTTTCGAAGATCACACC -AAAATGGGATACTTTGACAACACGTGCCTGCCATCGCTTCCTGACCGGGG -ATTTTGTTAGAAAATTCGTGGAAAATAGGAAGAAACATTTCGAGAAAATG -GAATTATTGATTTTCTGATTTTCTCAAACAAAAAAAAATTAAAATCGATT -GATTTCTGGCTTACCTTACCTAAATTGAAATGGAAGAGTTTGCCGAACTA -GGCCATTTTGGCTCGGCTATATCTGGGGTATATTTACGGCGCGTTGCGTG -TCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAAATGTGATTTGTCCGTG -TGGAGTACACGACTTTCACATGCGTTGTGCGGCGGGCGATTGTCAATGGA -GCGCGAAAAATACAATGAGGAAGGCCAAAACCCCGTGTATTGATTTTTCG -AAAATTTCGGAAAAATCTCTTTGTTTTATTCATTATATTTCTCCTAATTT -CTTTGAAATGTTCAAAAAATCTGATTTTCTTTTTTTTCCCGAATTTTTGA -AAAATCGATATTTGCTATCCATATTTCTCGAAAAGAAAATCGATTTATTA -ATTTTTTTCCGGTTTCCTGGAAGCTAATCAATTCAGAAAAAAGAATTAAG -CTATGAATATATACTTATAAAAGTCGTAAAAGGTATGGAAATATAAATTA -TTTTAAAACAGCGATTTCTGACTGAAGCATCTCAACTACCAGGGCCTCAA -GTTCTTCTTATCCGACAAATGAGACGAGTCGGAGCTATAATTGTGCCGAT -ATTTTCCGGGCGCCGTCTCTTCGAACTCGGATACGGTAGCCTGCCCGACG -TATTTGAAATCGCCCATTAGCACTTCGTGGCAAGCGCCGATTGATGCTCC -GTGGCCGACGAGTAGGAGGTTTCCTGAAAGAAAATCGATAATTTGCGGCG -TGTTTTTATTGATTTTTATGTGAAAATTGGCAAATTATTGATTTTTCGGC -TGAAATCATAAATTACTGATTTTCTGTTAAAATCAGTAATTTATTGATTT -CTTCGGCTAAAATCAGAAATTATCGATTTTTCTGTGAAAATCTGAAATTA -TTGATTTTTCTGCGAAAATCAGAAATTTACGTAGTTTCGCAAAAATTACC -TTCATATTTCTCGAAAATCGCCCGCAGGGTCTTTCCGACACGTGGCACAC -ACGCGTCATCTCCACATCCTTCGCGGGGTAGTGTGTACTGAAAAAAAAGT -TCGGTAATTTTTCTAGGTCTCGCAGCGATTGCCGCCACCGGTATATTTTC -ATTTTTCCAACTATAGCGCCAGCACCGGCGCCGGCATCTTTTTATTTTTC -CACGTAGCACGTCGGCGCCGGCAGCCGCGCAAACTATTTTCGCCGCCGCC -GGCATCTTTTTATTTTCCACATAGCGTGCCAGCGGCGCCGCCGGCATATT -TTTATTTTTCCACGTAGCACGTCGGCGCCGGCAGCCGCGCAAACTATTTT -CGCCGCCGCCGGCATTTTTTACTTTTCCACGTAGCGCGCCAGCGGCGCCG -CCGGCATGTTTTTATTTTTCCACGTAGCGCGCTAGCGCCGCCCCCGGCAT -CTTTTCATTTTTCCACGTAGCGCGCCAGCGCCGGCAGCCGCGCAAACTAT -TTTTCGCCGCCGCCGGCATCTTTTTATTTTCCACATAGCGTGCCAGCGGC -GCCGCCGGCATATTTTTATTTTTCCACGTAGCGCGCTAGCGCCGCCGCCG -GAATTCATTCATTTTTCCACATAGCGTGCCAGCGGCGCCGCCGGCATCTT -TTTATTTTTCCACGTAGGGCTCTAGCGCCGGCGGCATTTTTCATCTTTTC -ATGCAGTGCGCCAGCGCCGCCGCCGGCATCTTCTCATTTTCCACGTAGCG -CGCTAGCGCCGGCGGCAGCGCAAACCATTTTTCGCCGCCGCCGGCGCCTT -TTCATTTTTTAATTAGTGCGCCAGCGCCGCCGCCGGCATCTTTTGATTTT -TCCACGCAGTGCGCCAGCGCCGGCAACGGCGCAATTCTAATCTCGGTCTT -TTTTGAGCGATACCTTCGAGAAAACAGGAATATAGTCCAAATCAACAAGC -GGAAATTTCTCAGCTAGTTTGTCGGTTTCCCAGAATCCAGGAGGCTTATC -ACAAAGATAAAGTGCCTCACAAAGGCCACCGTCCGCCTTCACTTTCATTC -CTTTATCCTCAATAATCGTCGAAGCTGTCTCAATTGTCCGATCGAACGGC -GAGGCAAACGTATGCGAGATTTGTGCATTTTCGAACCGATTTTTGCACTC -TTTCGCCTGTTGCCGACCGCGCACGCTGAGCATCGAATTGTCCGACGTGA -GACCGTCGGCTCCGTCGAGTTTACGCCAATTTCGATTGATATTGTCCTCG -CTGCAATGCAAAAAATCAATAATTTCTGATTTTCACCGTAAAATCAATAA -TTTCTGATTTTTGTTGAAAAATCATTACTACCGATTTTAACTGAAAAATC -AATAAATTCAGATTTTCATTTTTTTTTTCGAAAAGTCGATAATTTCCAGA -TTTTCATCGAAAAATCAATAATTTGTGATTTTCACAAAAAATCAATAATT -TCAGATTTTTACCGAAAAATTGATAATTTCAGATTTTCACCGAAAAATCA -GAAATTATTGACTTTGGATAAAAATCAATAATTTACTGATTTTCATCGAA -AAATCAATAATTTCAACCTTTCGCAGAAAAATCGATAATTTTTAATTTTC -ACCGTAAAATCAATAATTTCTGATTTTCACCAAAAATTAATAATTTTAAT -TTTTTTTTCGAAAAATCAATATTTTCTAATTTTTATCGGAAAATCAATAA -TTTCCGATTTTCACCAAAAAATCAATAATTTCAGATTTTTATCGAAAAGT -CAATAATTTACGAATTTGACAAGAAAAAATCAATAATTTGCTGATTTTAA -CAGAAAATCAATAATTTTTGTTTTTCATTGTTTTTTTTTTCGAAAAATCA -GTACTTTTTTAATTTCCCCAAAAAATCAATAATTTTTGATTTTATTTTTC -GAAAAATCAATAATTTCAGATTTTAACCGAAAAAATCAATAAATTCAAAA -AATTTCATTTTTTTTTTGAATTCTTAAAAGTACCGTTCCGCGTGTCGAAC -AATCCAAATTTTCCGTGGATAAGTGATCGGCATCCTATCGAGATCGGTTT -TAGCTGAAAAAAAACCTTAAAAAATTGGAAAATTGTGTACTCCTCTCGGA -CACGTGGTGTCAGGCTCTCCCATTACGGCTTGATCTACAAAAAATGCGGG -ATTTTTCGTTCTTAACCATACGAAATAAGTTGAGAACTCTGCGTCTCTTT -TCCCGCATTTTTTGTAGATCAACGTAGATCAGACCAAAATGAGGCACACT -GAATGAAGACACCAGGATTTTTCGAAAAACTCTAAAGAAATTCTGCAAAA -AGTGACGTCATGAGGTATATAGGTATGAAATCGAATACTTGGTATCAAAT -GACGGAAAAATAAACGAAAGTTGCAAAATTTTTTGATGGAATTTATTAGA -CTTTGGCGGGAAAACAGATCAAATTTACATTAAAAAATACGGGAAAAATA -CGGGGAAAAAAACCAAATTATTGCCTAAAAAATTCAGGATTAAATTGCGA -GTTGTACTTTTTCTTCTTTCCACGCTTCTCCTCCGAATCCTCGGCGGCTT -TTCGTTTCTGCAGCAGCTCAATTTCCTCGGGATGTAGCAAAGCATGGGCT -CTCGCTTTCTCGACTCGTTCCCGTTTCAGACGCTCGTCTCGCATGCTCGC -CAGCTTCTGCCGTCGTTCTCGATCGTATTCCTCTTCGAGTTGACGTTCTT -CAGAGCTATCACGGTGGCGGTGCTTTTCTGGAAGAAAAATTGGGGGGTTT -TTTTGTAGTTTGTAGTGGTGAGCACCCTATATTGGAGGCGCGAAAAAAGA -GATTTTTCGAATTTTTTTGTAGATCAACGTATGGTTAAGAACGTACTGAC -GTCATATAATTTTGGGCGAAAAATTCCCGCATTTTTGGTAGATCAAACCG -TAGTTGGACAAAAAGCAGATTTTTCGAAAAAAAATTACGAATTTCTGGCT -TTCCTCATAAATTGAAATGGAAGAGTTTTTGCCGAACTAGGCCATTTTGG -CTCGGCCATATCTGGGGTAGATTTACGGCGCGTTGCGTGTCGCGTCGCGG -CTCGATTTTAGTTGTAAAACTAAATGTGATTTGTCCGTGTGGAGTACACG -ACTTTCCCACGCGTTGTCCGGCAGGCGATTGTCAATGGAGCGCGAAAAAT -TCAATGAGGAAGGCCAGAACCCCGTGGTGGTTCGATGCACAAAACTGATT -TTTTTTTTGAATTTTTGGGATTGCGCAAGAAATTTCGCCGAAAAAGTCGA -TAACTCAAAAAATTCTAAAAAATTTGGATAATCTGGAGAAAAAACCCAAA -ATTTGCTGAAAATTTCGAAAAATTTAGCTTTAAATTTTTGCGCATGGCCG -CCGGAAAAGAAAAAAACTCGGCCACCAATTTTTTGGCGGCCATGATGCAA -GACACCATATTTGACGCGCAAAAAAAGGTGTTTTTGGATGTTTTTTTCTT -TTTCCGCCAGAATTTTTAATAAATTTCCAGGGACAAAAAATCATAACCTG -TTGCAAAAATGTTTTTTTTTTCGAAAAATTCAATTTTGCGCGTCAAATGT -GATGCTTTAAGCTCTGTGGCCGCCGAAAAAGAGAAAACTCGGCCACCAAT -TTTTCACTCTCCATTGACAATAGCCTGCTGGACAACGCGTGGAAAAGTGT -CGTGTACTCCACACGGACAAATACATTTAGTTTTACAACTAAAATCGAGC -CGCGACGCGACACGCAACGCGCCGTAAATCTACCCCAGATATGGCCTGGC -CTAGTTCGGCAGAAACTCTTCCATTTCAATTTATGAGGGAAGCCAGAAAT -CCGTGGCCGAAAAAGAGAAAACTCGTCCACCGATTTTTTTTTCTGACGGC -CATGACAAGTTTGCGCGTCTATAATACATCATATTTGACGGGCAAAAAAT -TTTTTAAAGTTTTTTCGAATTTTTGTGATTTTCGAGCAGAAAAAAAAATT -GTCTGAAAATTTATGTGGCCGCGGTAAACTTCGGCCACCGATTTTCGACG -ATTTTGCCCGTGTTTTTGACGGAAAAAGCACCATATTTGACGCGCAAATT -TTCAAAAAAAAAAAAGCCCAAAAATCGCACTTTTCTTCTTCTTCTTGTCT -TTTTTATGCCGTTTCTTCGCCTTTTCTTCACTATCACTATCCTCTCGTTT -CCGCTTCCTCTCCTCTTCCAGCTCTTTCCGCTTCAAACACGGCAGAGCAT -CGCGCGCTTTTCGTCGATCAAGTGGCTCGGCGGCTCTTCGCAGCGGCAGC -TCCTCGTACCACTCTTTTTTCTTGTTTAAATCGTTCGTATTATCCGCGAA -ATACACCTGAATTCCCATTTTCGACTCCCATTCCTTCTTCTCGGCAGCTT -TTTCCGCTTCGTAGTCGCGGTTTCCGGATCCATAGTTTTTTCGTTCTTCA -CGTTCGAGATCCTGCAAAATATCGATTTTTTTTGGAGAAAAATATAGTTT -TTTTTTGGAGAAAATTATCGATTTTTTGGAAAAAATTATCGATTTTTCGG -GGAAAATTAACGATTATTTTAATAGAAAATTATCGATTTTATTTGGGAAA -AAAATCACTGATTTTTTGGAAAAAATTATCGATTTTTTTCGGAGAAAAAA -TATTAAATTTTTTGCAGAAAATTATCGTTTTTTTTTTTGAAAAAAATTAC -CGATTTTTCAGAGAAAAATATCGATTTTTTAGAATAAAATTATGGATTTT -TAAATATAAAATTATCGATTTTTAGGGAGAAAATTATCGATTTTTTTTGG -AGAAAAATATTGTTTTTTTTTGGAGAAAAATATAGATTTTTTTGAAGACA -TTTATCGATTTTTTGTTGATAAAATTATCGATTCTTCGGGGAAAAATATA -GCTTTTTTTGGATGAAATTATCGATTTTTTGGGAGAAAAAATACCGATTT -TTTTGGATAAAATTATCGATTTTTTTGAAGAAAAAGTATCAAATTTTTTG -AAGAAAATTGTCAATTTTTTTGGAAATAAATATAGTTGTTTTGGATAAAA -TTATCGATTTTTCAGCTAAAAATATAGATTTTTTTAGATAAAATTATTGA -ATTTTAAAAAGAAAATTATCGATTTTATGGGTAAAAAATAACGATTTTTT -TGGAGAAAATTATTGATTTCTTCGGGGATAAATATTGATTTTTTCGGGGA -AAATTATCGATTTTTGGATAAAATTATCGATTTTTTGGAAAAAATTATGG -ATTTTTTTTGAAGAAAAATATTGATTTTATTGGAGAATAATATCGAATTT -TTTCGGGAAAATATCGATTTTTTGGAGAAAATTATCGATTTTTTTTGAGA -AAATTATCGATCTTTTGGGTAAAATTATCGATTTTTTGAAGCAATTCTGA -GCCAAATTTTGAATTTTCGAGCGGCAATTTTTGCACAAAGCATCATATTT -GACGCACAAAATTCGAATTTTTCAGAATTAGTTTCACAAAAAATCCATCT -ATCACCTGAAACAAGTTCACATGTCCCGTTTCATCTGAAATGCTGACATC -TTTTGCTGCTCCAGCTGAGCTCGAACCAGCTCCTCCACTAAACATCGTCT -CCATTCGTTGATCGGCTCGGGCTCTCAACTGCATCAGGCGCCGCTCGTTT -TCCGCCTGAATTTGCCTGTCGAGCACACGCTGCTCATCTTCGGCGGCTTT -TCGCTCGTCTCGGCGAACCCGTTCCATGTTGGATTTTGTCCGAACGTGCC -ATGATTTGTGATGGAGAATGTTCATCTGGAAGCGGAAATTATAGAGAAAA -AATTGATAATTGTGCTCGAAATTTGGCTCTGGAAGAAGCGCAAAAAATCA -ATAATTTCGTCCAAAAATCTATTTTTTTCAGAAAAACCAAAAAGCGTTTT -TTTTTCCAAAAATAAAGATAATTTTCGTCCAAAAATCGATAATTTACTTC -TAAAAGTCTCAATTTTTCCAACAAAAAAAACAATTTTCGTCGAAAAACCG -ATGTTTTCAGAAAAATCAAAAATCAAAAAAAAAATTAAAAAATTAAAAAA -AAATCAATAATTTTTTCTAAAATCTTGCAATTTTTTTCTAAAAATCGTTT -AATTTTCTTCTAAAATCGATATTTTTCCGGATTTTTTCGTGAAAAAAATC -GTCAATTTTATTGAAAATTTTGCTAAATTTCGAAAAAAAATCTTGAAATT -TCGATGCACCATGATTTTGAAAATTCTGCTCCGGATCAATTTTTCGAGAA -AAATTATCGATTTTTGGAAACTATCATACAAAAATCGATAATTGTGCTCG -AAATTTGGCTCTGGAAGGAGGAAAAATCAATAATTTTCTTCTAAAAATCG -ATTTTTTTTCCAAAAAATCAATAATTTCGTCGAAAAACCGATGTTTTCAG -AATAATCAAAAAAAAAATTAAAAAATTAAAAAAAAATCAATAATTTTTTC -TAAAATTTTGCAATTTTTTTCTAAAAATCGTTTAATTTTCTTCTAAAATC -GATATTTTTCCGGATTTTTTCGTGAAAAAAATCGTCAATTTTATTGAAAA -TTTTGCTAAATTTCGAAAAAAAATCTTGAAATTTCGATGCACCATGATTT -TGAAAATTCTGCTCCGGATCAATTTTTCGAGAAAAATTATCGATTTTTGG -AAACTATCATACAAAAATCGATAATTGTGCTCGAAATTTGGCTCTGGAAG -GAGGAAAAATCAATAATTTTTTTCTAAAAATCGATTTTTTTTCCAAAAAA -TCAATAATTTCGTCGAAAAACCGATGTTTTCAGAATAATCAAAACAAATT -TCAAAAATAATAAAAAAATCAATAATTTTTTCTAAAATTTTGCAATTTTT -TTCTAAAAATCGTTTAATTTTCTTCTAAAATCGATATTTTTCCGGATTTT -TTCGTGAAAAAAATCGTCAATTTTATTGAAAATTTTGCTAAATTTCGAAA -AAAAATCTTGAAATTTCGATGCACCATGATTTTGAAAATTCTGCTCCGGA -TCAATTTTTCGAGAAAAATTATCGATTTTTGGAAACTATCATACAAAAAT -CGATAATTGTGCTCGAAATTTGGCTCTGGAAGGAGGAAAAATCAATAATT -TTTTTCTAAAAATCGATTTTTTTTCCAAAAAATCAATAATTTCGTCGAAA -AACCGATGTTTTCAGAATAATCAAAACAAATTTCAAAAATAATAAAAAAA -TCAATAATTTTTTCTAAAATTTTGCAATTCTTTTTTCTAAAAATCGATAT -TTTTCCGGATTTTTTTCGTGAAAAAAATCATCAATTTTATTGAAAATTTT -GCTAAATTTCGATAAAAAAACGATTATTTTGAAATTTCGATGCACCATGA -TTTCGAAAATTCTGCTCCGGATCAATTTTTCTAAGAAAATTATCGATTTT -TGGAAATCATCACACAAAAACCGATAATTTTGTGAAAAAATTCGATTTCG -ACGCACCATGATTTCGAAAATTCTCAGAATTTTAGAAAATTTATCGATTT -TGTGTAGAAAAAATTCGAATTCCAGTGGAAAAATTTTCTTTTCTCAAAAA -ATGTTTGATTTAAAAAAAATCGATTTTTTCAGAAATTCAGGCATTTTTTT -GCAAAGTAAATTGGCAAAAATCGATGATTTCACTGTGAGAATGGGAATTT -TTGTCAAGAAAAATATAAAAAATTGCCTTAAACAATTAAAGTGGTTGTCA -AAAAATTGAAATTTTGGAAAAAAAAATATATTTACAGATGAATTTATTAG -AAAAATTCCACAAAAAAAGAGGTTCCATCTAATATTATTATGTCGCATTG -GGGGTTATATCACATAATTTTTTTTTGTTTCGGTTGCCGTGGAGAAGGGG -GAAAATATCACATTTTTCAGAGGAAAATCACAATAAATATAAGGAAAATT -TACAAAAAAAGGCGCGGGGGGAAATTTCTTCACAAAATTATCGATTTTTG -GGTGATAATTTCCAAAAATCGATAATTTTTATAGCAAAATTGATCCGGAG -CAGACTTGGGATAAAGCAATTTTTGGAGGGGGAAAATGAACAAATTAATA -AAATATAATATATTCGGGGCAAAAAATGGGAAATAATTAAATTGTCGGAA -CATATAAATGATTAATTGATTGAGCCAATGGCATTGGTTTCATGTGAGCC -AACGCTTCATTACAGAACACTTCCTCCCGATGACGTAGCGGACGAGAATG -CTCGACACGAGCAAGACGGTAGGCTCTAGAGGCGTTTATCTGGAAATTTT -TAGTGAAAAAATGAAGAAAAAAAGCTTTTTTCGCTGAAAATTCCAAGATT -TTCGGTTTTTTTTTTGCTAATTTTTTTTAAATTTGCCTTGAAATAAATTT -CCAGATGTTCAGTAGTTTTTTTTTCCTTCAAAAATCGATTTTTCAATTAA -TCAAACATTTTTCAGAGTATTAATAATTATTTTTCCACCAGAATTTGAAT -ATTTTATCCAAATTCTGAGAACCGGCTCACAGAGCGGCTTTTACTACGTG -GCCTAGAAAAATCAAAAACTCGGCCAATGATTTATCTGGGATTTTTGACG -TGGGATGTTTCTGAAACTTGACGAGAATGTTCTCGAATGGGGGTTCTATA -GTTCCACCGTGGCGATTTTTGAGAAAATGTTCCGTATCCATGTTATGAAG -GTGGCCGAGTTTTCTTATTTTACGGCCACGTAATAAAAACCGCTCTGTGG -GCTCCTGAGCAGAATTTTCGAAATCATGGTGCATCGAAATTTCAAAATTA -TCGATTTTTTTTTTGAAATTTAGCAAAATTTTCAATAAAATAAGAAATCA -TGGTGCATCGACAAACCAATTTTTTCCATTTTTTCGGAATTTAAAATAAA -ATTTAAAAAAAAGTAAAATTCTGGAATTTTACTTTTTAAAAATATTTTTT -TCAAATTCTGGCAGTTTTAAAATAATAAAAAAACGTTTTTTTTCCATTTT -TTTCAAAAATTTTTTTCTGAAATTTAGTACTACAAATGTAAAATTTACAG -GGTTTTCACAGGAATTTTCAATTTTTTTGATTCGCTTTTCTTCAAAAATT -CTAAATTTTCAGGTTTTTTTTTCCAATAATTTTTAATTTTTGTGAAAAAA -AAATGTTTTTAATTTTTTCAGACTTAAAAAATTGTGACAACTTTTTTCAA -TTTTTTCCGCAAAAATAAATTTTCGGAAATTTCAAATTTCCTACAAAAAA -CCCCTTACCACAGTAAGCCTAACCAACTGTGAGAGCTCGCTCATCGTGAC -TAGGGCTCCGTCGAAAAGCGGCCCAAACTCCAGAGCCGACGCCGTATCGA -CGCGCACTCGAACCATCTGAAAAACCAAATAATGGAAGAGTTTTTTTTCG -GCCAAGCCAGGCTGCCCCATTTGATCTACGTAGATCTACAAAAATTGCGG -GAGAAGAAAAAAGAGACGCAGAGTTCTCAACTGATTTCGCATGATTAGGA -GTGTGTTGACGTCACATTCGCAAAAAATTCCCGCATTTTTTGTAGATCAA -ACTGTAATGGGACAGCCTGGGACCACGTGCAGTGTTAGGCTGTACCATTA -CGGTTTGATCTACAAAAAATGCGGGAATTTTTTGCAAATGTGACGTCAAC -ACACTCCTAATCATGCGAAATCAGTTGAGAACTCTGCGTCTCTTTTTCTT -CTCCTGCATTTTTGTAGATCAACGTAGATCAAGCCTCTCTCTCTCTCTCA -CCTTATCACCGACTTGCTCCAACACAATCAGAACATCACAAAACTTGGTG -GCAATCGTTTCGCGGGTGTACACTTTCCGTGTGTTCTCAGTCCACACCAC -ATGCACCTCATCGTTTCCGATATGCTTCCACTTCTGCTGCACATCGCCGT -TGAGCATCGTGCTCACATGGAATATCACCTCAGCCTCGGCGTCTGCAAAG -TACGGAGCCCGTGTCTCTACGGGCAGGCCACCGGTGTAACCATCGTGTCC -TCGACCCACTTTGACCTCCCATCCGAGCTCCGACGTGAAGCTGTCAAATT -GCGCGGAGGCGGAGGCGGTGGTGTTGGACAGGATCGATGCTCGATCTTCC -TGCGATTCTCCTACATAGATCACAGCGACTTTGTGGACTTCACGAGAAGA -AGTCTGATCTAAATGCTTCAAGTCACGCGGGAAATTCGCGTGAACCTGAG -ACACAAGTGGGACGAATCCCAGGGAAGCCGACAGCGATCTCCATTCGAGA -AGCTTCGCGTTCGGAGTGAACGCTGGCAAATGATCGTGAGCCGCCGACGA -TGTGCCAAGTGGCTGTGGCTGCCGTCTAGACGTCTCAATCATCGATGTAA -ACTGTGCGGCACCATCGACAGGCGACGGGCTCCCACGTGACGGGGGGTAG -TCCGGTAGATCATCGAACGGATCATCCATCGCTCCGAGGATCCCCTGGCT -TTCCCGACCGGGACGTTTTCCCTTGAGAGCCTCTTTGCGTAGCCAATTGG -TCACGTTGGTGGCAGGCTTGCGGACATCCTCATGGGTATCTAGATCCCAG -ATATGCCGGCCAACTACCGTTCGGGAAGTGATTTCGCAGGGGGATTTGGC -GTGGAAATCCTTTCGGGACACCGAGATAATCGCCGATTGCCGATTAATAT -ACACGGTTTTATCCTCTCCTTGTAGTGGCGGTGCTCCTGCAGAGCTCCAT -CTCTGAACCTCAAAACCTCGCACCGGATACTGACCACCGAGCGTGACAAG -CTCTCCATGGAGCACCATATGCCTATCGGCCAAGATACCGCGAATGACGA -GTGGCATTTGAGGTTGTGGCCATTGCATACAAAGCTTCACCATCTGCCAC -TCGATCTCGGTTCTCGTACGCTCATCGCGTAGGAGCGAGGCGGCACGGAG -CAGCGCCTGGAGCAGTGTGGTGCTCGAGAACTGGGCGAGCGAGGCGATCG -ACGAGCAGAAGAGCGGAATGAGCCGCATCGCGAACTGATGGGTTTCGATG -GTTTTCAACGCGGTGAGCACCAAGTCGATTTGGGCTTTTTGCACGATGAG -GATGGCTAGCGAGTTCACGATTACTACGGCGTTCTCCGATACGTCTGTAT -TGACAAGCTGATCGAGAAGGATTTGCTCGGCTCCAGGATACGATGAAGCT -AGCATTGAGAACAACTTCAACGAGTTCGAGGACACCTTCGTGTCCTTCGA -GCTCTTCGCCGCCTGCAACATTTTCGGCAAATGCTCCAGAGCTCGCGGAG -CAACAATTGATAGTTCGTGTGCAGAGAGCCCACAAATCGCCGGAACCACT -AGTTGCTCCTTGGATTGCATAAGACGGATGAAGCAGAGAAGAATGTTGGC -CGAGAGCAGTGGCGGTGGCCGACGGATCGTTGATTCGTTGAGAATTGCAC -TTAGAGCCGGAACACAGCGGGGCAGCAGGATTGGGGGTACGGTAACGAGG -CGGCACGCGAGCCAGTGGGCCAGTGGGTGCAGGTTTACCTGGAAAGCAAA -ATTTTTTTTGGCTTTTTTTCAACTCGAATTTTTTTTCTAAATTTTTTTGT -AAATTTTCTAAAAAATAATTGTTCGATTTCAGAGTGCCTCATTTCGTGCG -TGATCTACGTTGATCAACAAAAAATGCGGGACTGATTCTGCATGGTTAAG -AACGTGCCGACGTCCTATTTTTTGGGCAAAAAATTCCCGCATTTTTTGTA -GATCAAACCGTAATGAGACAGCCTCACGTCGTGCCAGAAAGTCCCATTTC -GTGCTTGATCTACGCTGATCTACAAAAAATGAGGGGCTGATTGTGCATGA -TTAAGAACGTGCTGACGTCACATTTCGTTTGGCAAAAATTCCCCCATTTT -TTGTAGATCAAACCGTAATGGGACAGCCTGACACCACGTGATCTTCAAAT -TCCCGCCAGCCTGAAACCCACCAAAAGCAAGTTCTCAATCGTCAATGACA -TGCAATCGATTGCCACGTGGGCACTCGAGTTGGTATACGGATCCACGAGT -GAGATGACACGACGCCACGTTTGAAGCCACGCCAATTTGTCGCCAGACCA -AGACTGAAAAAGGGAAAAAGTGTGATATGCGCCTTTAAGAAAGGGTTACT -ATAGTTGTCAACAACAGAAAAAAATGCTGAAAAGGCATTTTTCAGGGTCT -ATTTTCACAATGAGTTTGGGTATAAATTGGAGAGTTTTCCATAGATAATG -CGTACTGCGCAACTAATTTGACGCGCAAAATATCTCGTAGCGAAAACTAC -AGTAATTTTTTAAATTACTACTGTAGCGCGCTGGTGTCGATTTACGGAAA -TTAATTAAAATAATTGATAAACAAAACAGAAACTATGTTCAAAAATCGAG -ATCCCGTAAATCGACACAATCGCTACAGTAGTAATTTAAAAATTACTGTA -GTTTTCGCTACGAGATATTTTGCGCGTCAAGTATGCTAAAAAATATGTAG -TTGTGGGAGCCTTGTGAATTTTTAGAAGGTTTTTTGAAAAATAACTCGCC -ACTATTAAAAAAAATATATATTTTGAGGCATTTTCAAAGGGTTAAAGTAA -TTTTTTACTTTTAAAATCGTTTTTTTTTATAAAATAAATTTTAAGCGTTT -TTAGTACAATTTTCGTAAGTTTTTCGTTTTTTTTTTGGTCATATTTTGTA -GTTTTTTACACTATTTTCCAGAAATCGTCAGAAAAAGCACTTAGAAACGG -GCTAGAAAAACGGGGTTTCGGCTTGCTGCGAAACTTTTTTTTTTGAAATT -ACCGCGCAAAAATAAATTGTCATTCAAGTAATGTTGCAAAATGTATTAAA -ATATAGGTTTTTAAAAATGTATTTTAATACAGTTGTGACGTAATTTTTCT -ATTTCAATTTTTGCAAAATAAGAAAAAAAATGAATGTAAAAAAGTTAGAA -AGTTTTTAAAACACATTTTATACAGGTCATTACGCTCTATTTTCTGCCAT -TTAAAGCGAGAATGTTTTTTGACACTACATATATAATATTAGGTCTCCAA -ATAAGATCCGGGTCAAAAATCATAACTTTGTTCGCTGTGTATCGATTTTT -ATGAAATTGTGGGAATTTGTGTTATCAACCATGATCTTTCATTTGACAAT -AGTCACAAAATTTTTTGGCCGTCCGAAGTGCCCGTACTCGGAGCCAATTT -TTTCAGACATTTTTCAGATCTCGCTTCTTTTCAGGTTTCAACTGAGGTTT -GTGTGCGGATATTGCTTAGTTTAGTACACAATGTAAGAAAACAAAAAAGT -TTGGAAAAAAATCCGTCCAAAAAAAATTTTTTTGTCGCTCGTCAAAAAAT -CTACAAAAAAAATTTTGTCGAAAATTCTTGAATTTTTATACAAAAATGAT -GTAACCGTGTGCAAACTAATTTTAAACATACAAAACATTTGAGTATGAAA -TTTGGATCTCGAGAAATACTCCAAAAACTCGAAAATAGTTCGAAAAAGCT -GTGTTTTTTGTTATTTTTTTTAGTGTGACGCACCAAATTGAAATTTTTTG -TATGTGTAAAAATAGTTTGCACATGGTTACATCATTTTTGTATAAAAAAT -CGAGAATTTTCGAAAAAAAATTTTTTTGAAGATTTTTTGACAACCGACAA -AAAAAATTTTGTTTGGACGGATTTTTTTCCAAACTTTTTTGTTTTCTTAC -ATTGTGTACTAAACTAAGCACAATCCGCACACAAAGCTCAATTGAAAACT -GAAAAGAAGCGAGATCTGAAAAATGACTGAAAAAACTGGCTCCGAGTTAG -GGCACTTCGGACGGCCAAAAAATTTTGTGACTATTGTCAAATGAAAGATC -ATGGTTGATAACATAAATTCCCAAAGTTTCATAAAAATCGATACACAGCG -AACAAAGTTATGATTTTTGACCCGGATCCTATTTGGAGACCTAATATATA -TATATATATAAAGATACCTACCGTAACCGCATTTGTAATATCATCAGTGT -CATGAAAAACGTTATCCTCTGCAATTGTGTTCGACGATGACATACTATCT -CCAGTCTCTGACGAATCATTTCTCGGGTCTTCCATCATTGCCGATTCGAT -TGCCTGTCGTCGACTGTTCTGTGAGACTTCTGTCGCTTTTCGGAGAGCTT -CTTCACGGGAGAATATGTCGATATGGGCGAGATGGAGGATTAATGCTCGC -GTTACACTGTTCACAATCTGAAGATTTCGTTTTATTTTTTTGATTTTGGC -TGGAATTTCATAAAGCTATGCTTTTGTTGAAATTTTAGTTTAAAAAAATA -AGGTTTTTGAACTGAAAATTGGGATAAGAATTAGAAAAAAATTTGTTTTT -TCTCTAAAACTGCTGCATTTTATTCAATTTTGTAAGATTTTCTGTACAAA -ACATAATAATTTTTGAATTTTTTTTCCAAATTTTTTGAAATTTCAGCAAG -AACTGGACAAAAAGCACTACTTTTACTAAAATTGGCAGCATTTAGGAATT -TCTGAAAAAAACAATTAATTTTCATTATTATTGTCATATTACAGGAACAC -ACTATTCTGAGAATGCGTATTACACAACATATTTGACGCGCAAAATATCT -CGTAGCGAAAATTACAGTAATTCTTTAAAAATGACTACTGTAGCGATTGT -GTCGATTTGCGGGCACGATTTTTTGAAATGAATTTTAATCATATTTTGAG -CAAAAAATGGGTCAAAAATCAAGCCCGTAAATCGACACAATCGCTACAGT -AGTAATTTAAAGAATTACTGTAGTTTTCGCTACGAGATATTTTGCGCGTC -AAATATGTTGTGTAATACGCATTCTCAGAATTTTGTGACTTTTCAAAAAA -AAAAATCGTGATCAAAAAAAATTTTTAATTGTTTTTTAAGATGAAATTAC -GATTTTTTTCGTTCTCTATAAATTTTGATCAAATTTATTTCAAAAAAAAA -AAAAATTCTTTCTATATTTTTTTTTTCGAGTTTTTTTTTCTATCTTCTGT -ACAAAACACAGCAATTTAAAAAAAAGGCAAAATTTTAAGATTTTTCTAAA -TCTAGATTTCTAATTTTCCTCGGGGTTCTGGCCATCATCCTCATAAACAG -AAATGGAAGAGTTTTTGCCGAACTAGGCCATTTTGAAACTCTTCCATTTC -AATTTATGAGGAAGGCCAGAGCCTCGTGGAAAATTAGAAATTAGATTTCG -AAAAATCTTAAAAGTTTGCCAATTTCTTATTAGATTGATGTGTTTTGTAC -AGGAAATTGAGAAAAAAATCGGCAATTTTATACAATTTAATTTTAAAAAA -TATAGTTAAAAATAGAAAAATTCAATGAAACTGGAAAAAAATGTTTACTT -TGAAAAGTTAAAAAAAATGAAAAAAAAACTCAAAAATTGAATAAAATGCG -GCAATTTTTGAAAAAAAAGCTTTTTTCCATAGTTTCTGTCAATTTTCGGC -TAAGATTAATTTTTTTTCATCAAAATTTCGATTTTCATACTCTCTTACCG -AAGCCCATTGCTCAGCCATCGGTATCCAAACACCCTTCTTCATGACGTCA -TGCACCTCATCCCACACCTCATCGTCAATTTCGATGCGTCTGACAGCCTT -AATCACGACGACATTCGAGATGAGTGTCGACGTAAAAGCAGCCGACACAT -TCTGGGAAAACGCGTCCGATTGGCGACAGATTTTCGAGGCGCATGTGCAG -AGTCCCGCCATTAATTCTGACCAGAATTTTTGGGGAAGCGGTTTTGGGAG -TTGAATTCGATGGGAAACCAGCTGCTTGCACGATGTTAGAATCGCAAATG -CTATGGAGATTGCCGAGGAGTGACTGGAAAAATATTTTTTTTTAATTTTT -AAAGGGATTTTGGGAAATCGAAAAATTTAAAAACTCGGATTTATGAAGTT -TTTGGCAAACCGGCAACTTCTGGTTTTTGGAATTTCGCCACTTTTTAACA -ACCGGCAATTTGGCGATTTGCAAATTTTTGGAAAACCGGCAATTTATGGT -TTTTTTTTCGGAATTTTGCTAATATTTTTAAAACCGGCAATTTGCCGATT -TGCAAATTTTTGGAAAACCGGCAATTTGTGGTTTTTGGAACTTGGCCACT -TTTTATAAACCTACAATTTGCCGATTTGCAAATTTTTGGAAAACCGGCAA -TTTCTGGTTTTTTTTTGGAATTTTTCTAAAATTTTAATAAACCGGCAATT -TGCCGATTTGCAAATTTTTGGCAAACCGGCAATTTGTGGTTTTTTTGGAA -TTTTTCTAAAATTTTAATAAACCGGCAATTTGGCGATTTGCAAATTTTTG -GAAAACCGGCAATTTTTGATTTTTGGAATTTTGCTAAAATTTTTAAAAAC -CGGCAATTTGCAAATTTTTGGAAAACCGGCAATTTGTGGTTTTTGGAATT -TTGCCACTTTTTATAAACCGACAATTTGCCGATTTTCAAATTTTTCGGCA -AATTGCAGGTTAATAAAAAGTGGCAAAATTCCAAAAAAAAACCAGAAATT -GCCGGTTTTCCAAAAATTTGAATATCGGCAAATTGTAGGTTTATAAAAAG -TGGCAAAATTCCAAAAAACCACAAAATGCCGGTTTTCCAACTCTTTCAAC -GAGAGTATCCAATTTTTTAAATAGAAAAATTGCCGTATTCCCTACCGTTC -TCCACACATTTGCCGATTTTCAAATTTTTGGAAAACCGGCAATTTTTGAT -TTTTGGAAGTTTGTAAAAATTTTTTAAAGCGGCAATTAGTGGTTTTTGGA -TTTCTGTCACTTTTTATAAACTTACAACTTGCCGATTTCAAATTTTTGGA -AAACCGGCAATTTGTGGTTTTCAAGTTTTCTGCTAATTGGCAAACTGGCA -AAATGCCTTATTTTGGAAGTTTAGGTAAATTCTCAGAACACCGGAATTTT -GACATTTTTCAAAATTCCAAAAACCACAAATTGCCGGTTCGCCAAAAATT -TGCAAATCGGCAAATTGCCGGTTTTTAAAAATTTTTGCAAAATTCCAAAA -AACCACAAATTGGCGGTTTGCCAAATTTGCGAAATTCCTAAAACTGGAAA -TTGACGGTTTTCAAAAAAAAAAAAAGAAGGGAAATCGGCAAATTACAGAC -TTACAAAAAGTGGCAAAGTTGCAAAAGCCAGAAATTGCCGGTGTGCCAAA -TTTGCGAACATTTGAAAATACCACAAATCAAATTGCCGGTTTGCCGAAAA -TGTGCAAATCGGCAAATTGCCGGTTTTTGAAAATTTTTGCAAAACTCCCA -AATTTACAGAAAAAATTCCAAAAATCAAAAATCCGAATTATTCCAGAATT -TTTTCTTCGGAAAAATTAAAAATTGTTCAATTTTCCAACATTTTCAACAA -GCGTATTATCGAAAAAATACAATCGCACAAATTTCTCGTAATTTATTTTT -GATCTACCTTGTTGACTAGGCTCCGCCCCTAATCTTGTTGCTGTTGTTAT -TGTTGTTGTGGCTGTCTAGTTGAAGGAAGGGGCGGAGCCTATTCAACGAG -GTAGATCAAAAATAAATTATGAGAAATTTGTGCGATTGTATTTTTTTTCG -ATAAAATCCAATTTTTTAATGGAAAATTGCCAATTCCCTACCGTTCTCCA -CATTGAGCCAAATACGGACTGTGAAAGAAGCCCAACAAGATATTCGAGAG -CAACAGCGAGCATCGTTCAATCGATACTTCTCCAGACGCTACGAATGGTG -GAATTTCGTACTGCAAAAGCCATGCGGAGAGCACATTTACCACTTTATGA -GTGACATTTGAGCATGCCAATGGGAGTTTCATTGCTTCACGCATTAGTGT -TAATGCTACGTTTGTTGCCTGGAAAAGGACAAAAAAAACTATTTTTTTAA -ATGTAAGTAATTAATTTATTTTTTGAAATCTCTTTAAATGTGGTGTAGTC -GAATATTTTTTCAATTGCTTAATTACCCTCAAAATTGTCTGAAAACACCG -AATTTCATAATGAACTTCTTGAAAACTTCTCAGAAAAAAGTTATGACGCC -TCAAAAAATGGCCTAAAATTGGTTAAAATTTGAAATTTGACCTACTTGCC -AAGCGGCTGGAAACTAGCTTTTTTTTGAAATCACTGTCAAATTTTGAGTA -TTCAATTTAATTATCTTGCGTTTTCAACTCGATTCAGGTATTTTAAAATC -GATAAACGAAGAGATTTTTAAAAATTATTTACCAAATCTCTTCTTCCATC -GATTTAAAAATACATAAATTTAGTTGAAAACGCAAAATAATTAAATTGAA -TACCCAAAACTTGACTGTGATTTCAAAAAAAAGTTAGTTTCCAGCCGCTT -GACAAGTCGGTCAAATTTCAAATTTTAACTAATTTTAGGCCATTTTTTAA -GCCGTCATAACTTTTTTTTTTTGAGAAGTTTTTCAGGAAGTTTCATTATG -AAATTCGGGTGTTTTCAGATAATTTTTAGTATAATAAAGCAATAAAAAAA -ATTCGACTACACCAACTTCAAAAATGTAAGCAATTTTATTTTGAAGGCGG -TTTTCTTTTACTTTTCTAAAAAAAAAATTTATTCAATTTTACGATTTTTT -GCGTAAAAAAACACGGTCAAATTTTTGTTAAATTCGAAAAGGCGTGTCCA -TTACGGTTTGATCTACAAAGAATGCGTGAATTTTTAGCCCAAAAAGTGTG -ACGTCAGCACGAAAATTCTGCGTCTCTTCTCCCGCATTTTTTGTAGACCT -ACGTAGATCAAGCCGAAATGGGAGAGCCTGACACCACGCGCGTGTGCGCC -TTTAAAGTGAGTACTGTAATTTCAAAAATTCCACAACATCGAGAGTTTGA -AACTACAGTACTACTATTTAAAGGCGCACACACTTTTTCGAATTTAACAA -TAAATTGTCGTGTTGAGACCGTATTTAGGGCTCAAAAAAAAAATAATTAT -CTCGTTAGAATATTCGGGAAAGTTGCAGTTTCACTGAAAATTTGAATTTC -CCGCCAAAACGAATTTTCTCCGAAAAATTTGAATTTCCGCCAAAAAATTT -TTTTAAATCAGAAATTTGAATTTCCCGCCAAAATCGTATTTCTCAGAAAA -TTTGAATTTTCGCCAAAAATAAAAAAAAAAATTTTGGCGCGAAATTCAAA -TTTTCTGAAAAAAAAATATTTCGGCGGGAAATTCAAATTTTCTGAGAAAA -TATTTTTTGGCGCAATTTTTCATAGAAATTTAGTTCTTTTGATGTGTAAA -TTTCCAAAAATTTCAACAAAAAATCGCATTTTTCTTATTTTTTCCCCAAA -ATTTTCAAATTTTCTCCTCCAAAACCACGGAACTTTATGCGACGAAAAAA -GCGCATTTCGATACAAAATCAACGATGCATGTGTAGTTTGTAGTGTTGGT -TGTCCTCCAGCCGTTGTGTGAGTTGTTGCCGATGCAATATTATTAATCCA -TCGAATTAGCCAATATCTTGCAATTACCACCGGATCAGCTGTATCCAATG -GTTCACCATTCTCATCGGCTCCTTCCCAGCCACCGAATACATCGACTCCG -TTCGTTTCCAGATCGGTGAAGCATTCGCCCATGTATAGCTTTATTACTCT -GAAAATTGAAGAGTTTTGTACTCCTCTCGGACAATTGGAGGTGATTTTTT -TTTTCGAATTCTTTAAAACAAAAATTTCCCGAAATTGAGCTTTTAAAATT -TTAAAATTTCAAAATTTCAAAATCAAAAAAAAAAAAAAAAACTTTTGTAC -AAAATTTAAAGTGGAGAATTTTTGTATTTTAGACAAATTTTTTAAACATT -TCTAGCAGAGTTGAAAATTTCAGGCAAATCGGCAATTCGCCGAAATTGAA -AATTTCTCATAAATCGGAAATTGCCGAAAATGAAAAATTCCGGCAAGTCG -GCATATTGCCGGAATTGAAAATTCCTTACAAATCGGCAATTTGCCGGAAT -TGAAAATATCCGGCAAATCGGCAATTTGCCGGAGTTGAAAATTTCCGCCA -AATCGGGAATTTGCCGAAATTGAAAATTTCGTATAAATCGCCGATTTGCC -GGAGTTGAAAAATTCTGGCAAATTTGAAAATCGGCAATTTGCCAAAGTTG -AAAAATTCCCGGCAAATCGCCAATTTGCAGATTTTTCGACCGAAATTTGC -CTACCGGCAATTCCTGCCGACCCCTTTTTTCCGAGAAGAATTAACTTTCC -ATTTCTAAAAAATCTGTAATTTGCCGGAGTTGAAAATTTCCGGCAAATGG -GCATTATGCCGAAAATGAAACATTCCGGTAAATCGGCAAATTGCCGAAAA -TGAAAAATTCCGGCAAATCGGCAATTTGCCGAAGTTGATAATTTCCGCCA -AATCGGGAATTTGCCGAAATTGAAAATTTCGTATAAATCGCCGATTTGCC -GGAGTTGAAAAATTCTGGCAAATTTGCAAATCGGCAATTTGCCAAAGTTG -AAAAATTCCCGGCAAATCGCCAATTTTTTGCCTGTTGTGCATATTATTTT -CACGACTAAAAATCGTAATAAATTAAATTAAATTAAATTTGCCGATTTTT -CGACCGAAATTTGCCTACCGGCAATTCCTGCCGACTCCTTTTTGCCGAGA -AGAATTAAAATTTCCATTTCTAAAAAATCTGTAATTTGCCGGAGTTGAAA -ATTTCTGGCAAATTTGCAAATCGGTACTTTGCCGGAGTTGAAAAATTCTG -GAAACCGGCAACCCGGCAAACCGCCAATTTGCCGATTTTTCGACCGAAAT -TTTTTTTTCCTGTCGACCCCTTTTTCCGAGAACAGTTAAATTTCCAAAAT -TCTCTAAAAACCACAAACTTCTCAATAATAAAATTCGCACACTCCTGTCG -CTTCCCCTCATCATTCCACTCAATCCGCACAGTTTCTCGAGTACAGTACT -CCAAAAACTTGTCCAAATAAACTTGGAGCATTTGAGCCCGTTCTTTCGAA -GTCTGCGACGCCGACGCTGTCGACTTAATCGGCCCATTCCTCAGTCGTTC -ACACCAATCACCGGCTCCCGACGATTGACAGTACTCGTTGAGCACATCTT -CCGCATTTTCACCACTGGTAAGCGGGAAGAATGGTAGAAGACACTGAAAG -ACACGATCCAGGTCTGGTGTCGCTTTTCCGTACACTCCGAGACATTGATA -GAACACTAGGAACAAGCGAATCGCAATTTTTCGCACTGCCATCAAATTTT -TCGGGTAGACTGCTTTTTTGAGAAGCGATTCGATTGCATGACGTTGCCAG -CCTGAGAGAAATTGGGAAAATTTTTAATTTTTATTTAAAGGTGGGGTAGC -GCTAGTGGGGAAATTGCTTTAAAACATGCCTATGGTACCACAATGACCGA -ATATCATGATATAACAATTCAAAAAAATTTTCTAAATTTTATATGATTTT -TTGAAAATTGAAAAAATCTCAGTTTTTGTCTAATTCCAATTTGAATTACC -GCCAATTGAATTTGTTCTATGGAGCGCGCTTGCACGTTTTTAAATTTATC -TATTTTATTTTTTGTTATTTTTTGTTATTTTTCCACCAATTTTTAATGTT -TTCGGTGTATTTTTGCTCGAATTTTAGAGAAAAAGTCAAAATAAATGCAA -ATTTTCGATTAAAAAGCACGCTTACAGTCGTAAATCAGTGAAATTAATTA -ATTCAGGTTTGAAATCGTTTAAAATCGTTACTTTGTCATTTTTACGCCTG -TAAGCGTGCTTTTTAATTGAAAATTTGCATTTATCTTGACTTTTTCTCTA -AAATTCGAGCAAAAATACACCGAAAACATTAAAACTCGGTGGAAAAAACA -ACAAAAAATAAAATAAAATAAATTAAAAAACGTGCAAGCGCGCTCCATCG -AACAAATTCAGTTGGCGGTAATTCCAATAGAAATTAGGGGGGAAAACTGA -GATTTTTTCAATTTTCAAAAAATCATATAAAATCAGGAAAATTTTTTTGG -ATTTTTTATCATGATATTGGGTCATTGTGGTACCATAGGCGTGTTTTAAA -GCAATTTCCCCACTGGCGCTACTCCACCTTTAATTTCTGACGGTTTTTTT -TCGGTTTTCCTTGAAAAATCCTCTAAAAATCGATAATTTGTAAAAATTGC -GTTGTTTTTCCGGGATTTTTTTCGGTTTTCCCACGGGGTTCTGGCCTTCC -TCACTGAATTTTTCGCGCTCCATTGACAATCGCCCGTGTACTCCACACGG -ACAAATCACATTTAGTTTTACAACTAAAATCGAGCCGAGACGCGGCAGCC -AACGCGCCGTAAATCTACCCCAGATATGGCCTGGCCTAGTTCGGCGAAAA -CTCTTCCATTTCAATGTATGAGGGAAGCCAGAAATCCGTGTTTTCCTCAA -AAAAATCCTCTAAAAATCGATAGTTTGTAAAAATTGCGTTGTTTCTTCGG -TTTTTTTTGCAATTTGAGGGTTTTTTGTCGATTTAACACGGATTTTTGGC -TTCCCTCATATATTGAAATGGAAGAGTTTCTGCCGAACTAGGCCAGGCCA -TAACTGGGGTAGATTTACGGCGCGTTGCGTGTCGCGTCGCGGCTCGATTT -TAGTTGTAAAACTAAATGGACTTTGTCCGTGTGGAGTACACGGGCGATTG -TCAATGGAGCGCGAAAAATGCAATGAGGAAGGCCAGAAGCCCGTGCGGAA -AGACGGGGAATCTCCGAAAAACGGGGAAAATCTACAAAAAAATGAGTTTA -AAAAAGACTTCCTCAAAAAAATTCAAAAATTGTGGTTTTTTTTTTAATTT -TTTGTATTTTGATAAATTTTTTGCGACATCAAAAAATGGAAGAACTTTTT -TTTTTCGATTTTTGAATTTTTTGTTGGTGAAAAAGAAGAAAATTTCGAAA -ATTCGTTAGGGAATGGATAAATTTTAATCAAAAATCGATTTTTTAAAATT -ATTTTTTGCAGTTTTGCATAAAAAATCCAGATTTTTTCGCATTTCGCGCG -TAATTTTCATTTTTGTCGTTTTTTTTTTCTGAATTTTCCGAAATTTCTGG -AAATTTTTTCTTTTCTTGTTCTGAAGCTTATGCCTAAGCCTAAGCCTAAG -CCTGAGCCTAAACTCCAAAAACGCACCACTTCCAACAAGCTCCGGAGCCA -AACAGAGCACCTGCTCCAGTGTCCAAAGCCCGGATTCAGCCTCAATTGCA -CTATCGATTTGACTGCTGACATCGTTGACGAGCAGAAGCTCGTCAACGAG -ATGAAACGTCTCGAAACTGTGCTCATCGAGCAGTTGACGCTTTTCCTGAA -GAAATGTTGTGGTCGAATTAATGCGAAATATGGGAAAATTCGGGTTAAAA -TCGATGAAAAATCGTGGAAAAACGAACATTTGTGGTTAATGTGTCGAGCA -GAATCTTCAAATGTTTCACACGGCTCACACAATCCCTGTTCAAGTCGGTG -AATCTTGAAATGCTCGCCTGCACATCTGACGATTTGCCCTTTCGGGCAAA -CATTTTCCTGTGATTTTAGGCGATTTTCTGCAAATTTTCGCTGTTCAAAC -GTTTAAAATCGACGGAAAATGCGTATATTTTACTAAATATGCGAGAAATA -GTGATTTAATTCGAAAAAATCAATATAAAAATGGAAAAAAACTACAGTAG -TAATTTAAAGGCGCATACCTCGAAAGTTAAAATCGTGCCAGGACCCGCCG -CAATTTAGAATCGATTTTTAGATGAAAACTTTTTTTTTCTTACTAAAAAT -TAAAATTTTTCACTGAAAATTTCGGTTAAACTCTGACTTTTAACACGAAT -CTTATCAAAACTATGACAATTTCTAGTGAAAATCGCCAATTTTGTGTGTA -AAATCAATTTTTTCAGTGAAAAATGTTTTTTTTTGAGTTAAAACTAAATT -TCGAGCTTGAAACTAGAAAATGTCAAGTAAAAAATTCATTTTTAAGCGAA -AAATTAACGTTTTTTTCCAAATTTTCGCCTATAATTCACACAAAAAATAC -TGAGTCAGCAAACAATGTGGGAGCATCCCGAAAATGGTGCAGAATGGTAG -AGCAAAAACGAAAAATCGATGAATTATTGTGGAGAGAGAGGAAATTTTAT -TCAATTTTTGAGGAATGGAGGTTAAAAAAAAGAGTAGAAACATTGAAAAG -TGGCAAAGAAATCCAGCTTGAAACCGGAAAAACTCCCAGAAAACGAAGCA -AATAAGAAAATCCCACAAAAAATCCGAATTTAATTGCAGTTTTCGACCGA -AATTCAGCCAACCAGTGAGTGGTTCAATTATTAAAAAGCACATATATACA -TATAACTTTATTCAAAGGACATAATCCATATAAAGTCTGTCAAAACGGAA -AAGGTTCTTTCCAAACACACAATTGGCCCCCTCTGTCCAAAAGAGAGAGC -ATGGGAATCGGAGAGGGCGGTGAGAGAGACGCAGACATCGAGATGACACT -TTTTGACAGCAACACTGTGTGTGTGTGTGTGTGTGTGTGAGTCTCTGTGA -TTGAGTGAAAGCACTTTTGGGAATATATACTGGTAGAAATTTAATTTAAA -ATGATAAAAAATTTCTTGGGATTTTTTTTTTTGAGTACTGTAGCCACAAA -AGTACGTAATTTTCTTGAAAATGCGCCCATGGGGTCCCAATGACGTAATA -TCATGATAAAAAATTTTTGAAAATTGGAAAAATCTCAGTTTCCCCTCCCC -CCCCCCCCTAATTCCAATTTGAATTTCCGCCAATTGAATTCGTTCGGCGG -AGCGCGCTTGCATTATTTTTATTAATTTATTTAATTTTCTCTGTTGTTAT -TTCACTGATTTTCTTCATTTTTTGGGGATTTTTAATTGGGAAAAGAGAGA -AAAATGCAAGATAAATGCAAATTGTTCATTAAAAAATCACTGAAAATGGG -TAAAACTGTGAAATATGCTAATTTCAGGCTTGGTGTCGTCGGAACTCATA -ATTTCGCAGTTTTACCCATTGTCTATGATTTTTTAATGAACATTCTGCAT -TTATCTTTTTTTTTTAAATTCAATTTCTATTAAAAATCCCCAAAAAATGA -AGAAAATCAGTGAAATAATTAGAAAAAATAAAATAAATTTATAAAAATAA -TGCAAGTGCGCTCCACCGAACGAATCCAATTGGCGGGAGTTCAAATAGGA -ATTAGAGGGAAAACTGAGATTTTTTTCAATTTTCAAAACAAAAAATCATA -AAAAATAAGCATTTTAGCTTAAAAACTCGAAAAATCATACAAAAATTAAT -TTCAAGTTGTCCACGAGTAGTACGCGACGCCTGGTTGCAAAAATGGCGTA -GATTTCGATTATTAAAAGCTTAAAAATCATTTTTTTTTACCAATTTCCAA -TTAAATATCCTAATTTTAATCTCAATTTTCTTGAAAGACGTGCAAATATA -GATACATCTAACATAAAAATTCTTCGCTGCGAGACCCAGGACCCCATAAA -TCGCCTGCGCCTTTAAATTTATATTTATTTTCTCTCTCAAACAGCGATGA -AAATCACGTTTTTGAACCAAATTTTCCAAAAAATAAGACAAATTTCTATT -TTAAAAACCACTTTATTCGGTCATTGGTCGCTAAATAGCAAATTTTGAGG -CAAAAAAAAAACGAACAGACAACGGAAAATCGAGTGAAAACAAGTGAGAA -CACAGCAAAACTAGTCCTAATTAATTAAAGGCGCATCACGTGGAAAAGAA -AACTGTTGTGGAAGAATAAAAAATGGAACATGAGGGGAAATATTACAAAA -ATAGTAAAAGATGCATCAAGATTAAGATTATTTTTCGAAAATCGAGTCCT -CCGCCCAGGAATTCATCATAATTTTCGACTTTTTTTCGGAGATTGCTGCA -CATTGTCGGCTGCTCCGGTGGTTTTTGGAAGGTTTTGAGAGCTGAAAGAT -TTGAATTTTTTGGAATTTCGAGAAATTTCTTTTTTTTTACCCGAAGCGCT -TTGAATCTGGCGAGCTGCATTTCCAGCTTGCATTGTGCGTTCAGTGACTT -TGATTCCTTGAAGTTTTCTGAAAAAAAAACACGAGTTTTGACTTGAATTT -TCTGAATTTTTAACACGGATTTCTGGTTTCCCTCAAAGAATTGAAATGGA -AGAGTTTTTGCCGAACTAGGCCAGGCCATATCTGGGGTAGATTTACGGCG -CGTTGCGTGTCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAAATGTGAT -TTGTCCGTGTGGAGTACACGACTTTCCCACGCGTTGTCCGGCAGGCGATT -GTCAATGGAGCGCGAAAAATTCAATGAGGAAGGCCAGAACTCCGTGATTT -TTCTTTTACTCGGCGTAGATTTCGCAGTTTCAGACTGTTTTTCAGGTCTA -ATCAGCGGAATTTTCGTTGATCCCGCCAATCTCGGTGATTTTCTGAGCCT -TTTTCGCTCAGGTTCTGGGATTTCAGCTTTTAGAGCAATCTTTGAAATTT -CGACAAGTTTCTTGAAGTCCAACGCAATTTTTTCAGTAGAATTCGCAGTT -TCCGGCAATTTTTCTGAGCAAATCTTCGAAATTTCGACAAGTTTTCTGAT -TTTCGGCGTAGATTTCGCAAATTCTGACGGTTTTTCTGCAAATCCCGGTG -ATTTTCGGCTCGGGGAGCTCCCAGCTGCTCTATTGTTCAGCATTGTCTGC -TCAGTAGCGGGGGCGTCTTGATTTTCAGTAGAATTCGCAGTTTTCGGCAA -TTTTTCTGAGCAAATCTTCGAAATTTTGACAAGTTTTCTGATTTTCGGCG -TAGATTTCGCAATTTCTGACGGTTTTTCTGCAAATCTCGGTGATTTTGGG -CTCGGGGAGCTTCCAGCTGCTCTATTGTTCAGAATTGTCTGCTCAGTAGC -GGGGGCGTCTTGATTTTCAGTAGAATTCGCAGTTTCCGGCAATTTTTCTG -AGCTAATCTTTGGAATTTCGACAGGTTTTCTGACTTTTGGCGTAGATTTT -GCAGTTTCTGGTGATTTTCGGCACGATGAGCTCCCAGCTTCTTCATTATT -CAGCCTTTTCAGCTGGGCTTCTTGAGAGCCTGTAATCACGTCGCCGTCGT -CATCCTCTGAATCATCATCCGACCAAATTTCGATTATTTCCTGAAAAAAT -CGATTTTTTTTGCTTTTTTTTGCTCTTTTCTCATTGTCAGCTTTTCCCAC -TTTCCAGCAATTTCTCCACGGCGTCGGAACGTATCCTGGTCGCCGATCGA -ACTGGATAACTGGCCGGCTGGCGATAAATCGGCGAAGATCTGCTACTATC -TCGTCTGAAAACGTTTTTCTGCTAAAACCTGCTAAAAATCTGGCTAAAAT -CACCTGATAACATTACAATATCATCATTTCCGGGCATTTTTGACGAAAAA -AAAGCGGAAAATATTTAGAATTTCGAAAATGAAGAGAAGCGTTACGGTAC -TAAAGGCACATGGCGTAAAATATTCCGCAGGACTCGCCGCGATTTATGAT -TTTCACTATTTTTTTTGGGCAAAAGTTGACATTTTTCAGAATAAAATTCA -AAATTGTGTTGATAAATTGTTTATTTGATTTTTTTTTCAAATTTAAATAA -ACTGTAAATTTTAAATTTTCCCCCAAATATTCGCAAATTCCCTTCAAACC -AAGTTTTAATAGCACAGTAATCCCCGAGCAATCGCGCTCCACCGGACTAA -CCTACACACCGCGAATTTTGAATTACATCCCTCATAATTAATTGTTTTTG -CCATTTTTTCGCTATTTCCAGTGGATTTTAATGAGTAAAAGCCTACAAAC -CGACGAAAATGGCGGTGTCAGTGAAAGTCCATCAAATTGCACATATTGCT -ACACGCTGGAATGCTCTCTACGCATCGAATCCACCTCATCAATCAAGAAA -AAGACTCCAATCTCCTCGAAAAGCGCTATAATGACTGTCGGCAGAAATGC -GCAGAGGTTTTAGTCGAATAAATGCCTGTTTTAAGAGCAAGAAATTCCAG -AAAAATTCACCTTCAAATCGAGCTAAAGACCACCGCTACCGGACAGCCCG -CTGTAGTGTGCTATGACGTCACAGATGCAGTTGTACACTTGCAAAGCGTT -GCAAATGGGAAGTGTACTGTAGAAATTCCTTCGCTGTAAGACCTAAAAGA -CCAGAAAAATGGAAAATATCTGAAAACCCCAATTTCAGCTCGTTAATGTT -CCAAATGTTCAATTGCGCGCCGCGAAAGCTCAACGTCTTCATGAAATCTC -TCCAAGCAAAGTTGGATATTATGAAAATGGAGAAAAGCCCAATTTCAGCA -GTGTAAAATCGATAAATTATCGAAAAATCAATAAAAATCCCTTCAGACCC -CGGCAATTCTCACGTCCGCCGGCAGTTTTCAGCGTTCTGAGCCCGCTGAC -GATCAGCGAAATGCGAAAAGTGAAGAAGCTACGCGAACCGTCGGCGCTGG -CGAGACCTTCGAAAGAGGCGACCACACCGAAGCGGCGGTAATTTGAAATT -TTCACATTAAAAAAAAATCGCGAATTTCAGCACTTCCTCAATGAATTTGC -TCGCCGGCGGCTTGGAAAATCGAATTATGAATCGATCGATTGGGCTGAAA -AGGACGACCAGTTTTGCTAGAGATGATCGTGAAAAAGCCGAGGTTCTGCA -GCTAAAAATCCGTCAAAAATCGATAAAATTTCGTTTTTTTTCCGTGAAAT -TCCAGGTTTTTTAGTCCAAAAGCACGGATTTCTGGCTTCCCTCATAAATT -GTAATGGAAGAGTTTTTGCCGAACTAGGCCAGGCCATATCTGGGGTAGAT -TTACCGCGCGTTGCGGCTCGATTTTAGTTGTAAAACTAAATGTATTTGTC -CGTGTGAAGTACACCACTTTCCCATTGCCCGGCGGGTGATTGTCAATGGA -GCGCGAAAAATGCAATTAGGAAGCCCAGAAACCCGTGAAAAAGTGTCACG -CGGTTTTCAAAGTAGAGGTGCAAGCGCGCTCCACCGCTCCACGGTGCTTG -GCGGCAAAACCAGAATTTTCGCTGATTTCAAGCATTTTCCGTCGTTTTTC -ATGATTTTTCATGTCGAAATAGTGTTTAAAAATGTCTTTAATGCTGAAAA -GTGAATATTTCAAAAATTTTGACATGAAAAACTGAAAAAATTATCGGAAA -AGTGTATTTTTTGAGTTTTTACTTATTTTTCGGTTTTTAAAAAAATTATT -TCTACATAAAAATTGATGAAAACAGCATATGAAGTGCAAAAAATAAAGAA -GACTTACATAAATTTTGACAAAAAATCACGAAAAACAATAAAAAAAGTCG -AAAAATGATTGGAAACGGAGAAATTTTCCCTTTTTATGTAGAAATTTTGA -ATTTTTTCAAAATTTTCTCAATTTTGAAACACAAAACATGAAAAATGATT -GAAAATATTTGAATTTTTAGTTTTCGCGCCAATACCTAACGAGACCCATC -GGTGTGACCATGGAGCGCGCTTGCATCTCGATTTTAAAATTCGTATGAAT -TTTTCGCGCTCCATTGACAATCGCCTGCCGGACAACGCGTGGGAAAGTGT -CGTGTACTCCACCCGGACAAATCACATTTAGTTTTACAACTAAAATCGAG -CCGCGACGCGACACGCAACGCGCCGTAAGTCTACTGAGCCAAAATGGCCT -AGTTCGGCAAAAACTCTTCCATTTCAATTCATGAGGGAAGCCAGAAATCC -GTGTTTTAACCTAGAAAATCAAGAATTTTTTTGGGAAAAAATGCCAAAAA -TCCCAGATTTTCCCTAATTTTCAGCTAATTTTTCCCCGAAACAGACAATT -TTCAGACCCTTGTCTCCCTGAAATCATTCAAAGATGCTCCTGCAATTTCC -GAACGGATTCAGCTGTCAGATGAGCAAAAATCGGTTGTCCGATGTGTGAT -AAATGTAATTTTTCGTTCGAAAAAAAAAATTATCGAAAATTTGCAGTCTC -GAACGAGTGTCTTCTTCACGGGATCCGCTGGAACCGGAAAATCTGTGATT -CTTCGGAGAATCATTGAAATGTTGCCCGCCGGGAACACCTATATCACCGC -AGCGACAGGTAGAGGATCACTTTGAAATATTTGCAAAAAATCGTGTCAAG -ACCTCCCCCAAAAAATTTTCATGTACCTTTAAAAAATAGAACCGACTTTT -TTTAATTAAAAAATCATTAAAAATTAGAGGAAAATTTGGGAAAAAAAATC -ATTAAAAATTCTTTAAATAATAATTGTTTATTTGTCACAAGAAATAGCTA -CACCGGAAGATAAAGAAAAAAAGTAAATAAAAAAGATGTGTGGACAAATA -AGTAAAATGACCAATTGGACCAGCTATAGCCCGGGAGGTTAAGTTGGGGG -GAAGAGGGTGTCAAATGGGATAGAGTCTAGGCGCGACGCAAATGCATTTG -GAGTTAACAGTTTAGGGAAACGTTTTGCTATTCGATTCCACAACGACAAG -TTAACATGTAGAAAACATTTAGACGGAACACCACAGACAACAAGTAGATA -GGGGTGACGAGTAGAGCGTGAAGCTCGAACGAACGATGATAAGGACGGGA -AGTGATACTCGCTTGAAATAATTTTATGGAAGGTTCGGAGGATTTGAAGA -ACCCGTCTATGGTGGGTAGACAATAAATTAAATTGGGAAAGCCTACTACT -GTATGACGAGTAAGATAAATTGCACCTTTGAAAGACACACTTTGAGAAAA -ACCGGAGGGGAGATTCTAGTTTTTTGGCAAGTTCGGTGGAGTTGGGCGGG -AAGAGCTCGCAGCCATATTCGAGTACGGGGCGGATGTAAACATTGAACAG -TTTAAAATAGAATTCGGGACTTTTAGAGCGGAATGAACGAAGGATTTGGC -GACACTTAAGGAGGGCACTATTAGAAGTCTGATTAATATGATTAACAAAT -GATAATTTGGTATCGACAATGATTCCAAGATCTCTGATAGAATCACGCGG -TTTAATTTCAACACTATTTACAAAGTATTTATGACGGGGGTTCTTTTTTC -CAAAATGTAATACGGCAGTTTTGTGCTCAGCAAGATTTAGACGCCATTTT -TTACACCAATCAGCGACAATATTGATGCTTGTTTGGATAGAGGTGGGGTC -CGATCCGAGTAATTTTAGATCGTCGGCAAAGGCTGTAACATGGACATCAG -GGGGGAACAAATCTAATAAGCCATTAATATACAAAAGAAAGAGGAATGGT -AAAATTGTGGAAAAAACCGTAAAAAATCAACAAATTTCGAAAAAAAATCG -TAAAAAATTGAGACATTTGAAAAAAAAAATCTAGCAAAATTTGAAAAAAA -AATCGTTTAAAATTCAGCAAATTTATTTTAAAAAATCATTAAAAATTCAG -CAAATTTGGAAAAAAAAACAAATAAATCTGTAAAATTAAAAAAAAAACCA -GTAGAATTTGAAAAAAAATTGTTTAAAAAATTCAGCAAATTTCTAAAAAA -AAATCATAATTAATTGATAAAAATTTTTTAAAAACGTAAAAAAATATTTA -AAATTCTGCAAAATTTGAAAAAAATCGTTTAAAATTCAGCCAAATTTCGA -AAAAAAAAGCATTAAAAAAGAGAAAAATTGGAAAAATTCTGCACAATTTT -TTAAAAATTATTATTCTGAAAAAATTTAAAAATTCATGGAAAAATCTGCA -AAATTATTTTTTAAAAATCGTTAAAAATTCAGCAAAAATTGGAAAAAAAT -CGTTTAAAAATCAGCAAATTTCGAAAAAATAAAACATTAAAAATTCAACA -AAATTAAAATTAGAAAATCATTAAAAAATACAGCCAAACCGTAAAAAATC -AGCAAATTTCGAAAAAAATTCGTTAAAACTTCAGCAAACTTCTAAAAAAA -ATCATTTAAAAATGCAGGAAATACGAAAAAGAAACATCAAAAATTGAGAC -AATTGGAAAAAAAATTCGTTAAAAATTAACCCAAATAAATTTGCTGAATT -TTTTAGATTTTTTTTTTTATAAATTTGCTGAATTTTTGAAAAAAATTCAG -CAAATTTATTTTAAAAAAATCTAAAAAATTCAGCAAATTTCTTTTTTAAA -AATCGTTAAAAATTCGGGAAAACTTGGAAAAATTGTGCAAAATTCAGAAC -AAAAAAATTTCAAAATTTTCCCAATTTTTAAGTTTTTATTTAGTTTTCAG -AATTGTTTAATAGTGAAAAAATCATAAAAAATTCAACAAAATTTAAAATT -CAAAATTTTCCAGAATTTTCATGGGTCCCGCCACGATCCACTCCAACCTT -CAAAAAATCATGTAATTTCCAGGCGTTGCGGCTTCCCAAATCGGCGGAAT -CACACTTCACGCGTTTTGCGGTTTTCGCTACGAAAATTCGACGCCTGAAC -AGTGCCTAAAACAGGTTTTACGCCAAAATCACATGGTCCGACAGTGGAAA -CAATGCTCACACTTGATAATTGACGAGATTTCCATGATTGATCGCGACTT -TTTTGAAGCTCTCGAATATGTGAGCTCATTGCGTTTTGATCTACAAAAAA -TGCGGGAGTTTTCCCAGCATTGCTCATTTGATCTACAAAAAATGCGGGAA -TTTTCCCAGCATTGCTCATTTGATCTACAAAAAATGCGGGAATTTTCCCA -GCATTGCTCATTTGATCTACAAAAAATGCGGGAATTCTCCCAGCATTGCT -CATTTGATCTACAAAAAATGCGGGAATTTTTCAAGTGTGACGTCAGCACA -CTCATGCGAAATCTGCTGAAAAGTCTGCGTCTCTTCTCCCGCATTTTTCG -GAGATCAAACCAAAATGGGACCCGAAAATTCCAAAAAAAAATCGATAATT -TCCCGTCCCAGGTCGCCCGTACCGTCCGTAATAACGATAAGCCGTTCGGT -GGAATTCAGCTCATTATCACTGGAGATTTCTTTCAATTACCGCCCGTCTC -GAAGGATGAACCAGTTTTTTGTTTTGAGGTGTGCGGAATTTCGGAGCATC -GTTTGGACCGTCTAACTCTTAAAAAAATTTTTTTGCAGAGCGAAGCCTGG -AGCCGATGTATCCAAAAAACGATTGTCCTGAAAAATGTGAAACGACAAAA -TGACAATGTTTTTGTGAAAATTTTGAATAACGTTAGAGTTGGAAAGTACG -TAAACTACTGGAAAAATTTAAAAATTTCGAATTTTTCAGGGTTTTTTACT -AGAAATTTTGATTTTTTTCAGTGAAATTCCAATAAAAGCTGGAAATTTTC -AGAAAAAAGGAAAAAATATGAAAATTTGTAATTAATTTCGAAAAATGCTG -AAAATCTCCAAAACCTTCCAGAAAAGCTGGAAATTTCATAAAAATTTGGG -AAAATCTGAAATTTTCAGAAAATTCAAAAAAAGCAAAAAATCTCGAAAAC -CTTCCAGAGAAGCTGGAAAATTTCAGAAATTTCCAAAAAAATAAATTCTG -AAAATTTCATAAAAATCACTGATTTCTGTCTTCCCTCATAAGTTGAAATG -GAAGAGTTTTTGCCGAACTAGGCCATTTTGGTTCGGCCAGATCTTGGGTA -GATTTACGGCGCGTTGCGTGTCGCGTCGCGGCTCGATTTTAGTTGTAAAA -TTAAATGTATTAGTCCGTGTGGAGTACACGACACTTTCCCACGTGTTGTC -CGGCAGGTGATTGTCAATGGAGCGCGAAAAATTCAACGAGGAAGGCCAGA -ACCCCGTGATAGACCGGCCAACACGGGGTTCTGGCCTTCCTCATTTCATT -TTTCGCGCTCCATTGACAATCACCTGCCGGACAACACGTGGGAAAGTGTC -GTGTACTCCACACGGACAAATACATTTAGTTTTACAACTACTAATTGAGC -CGCGACGCGACACGCAACGCGCCGTAAATCTACCCCAGAAATGGCCGAGC -CAAAATGGCCTAGTTCGGCAAAAACTCTTCCATTTCAATTTATGAGGGAA -GCCAGAAATCCGTGTGAAATTTCCAAAAAGAAGCTCCAAAAAAAAATTCC -AAAAAAATCTCGATAGCCTTCCAGAAACGCTGGAAATTTCAGAAAATCTC -CTGAAATTGATAAAAATTCGAAAAAAATCTCAAAATTGTTAGAAAATCAG -TGAAAATTTGGAAAATTCAGAAATTAAAAAAAAAATTTTTTTTTGGAATT -TAGAATTTAGAATTCTTCAAATTGTCGAAAAATGCTCCAGAAAACTTGTA -AAAATTTAATTTTTTTTTTTTTGAAATTTCCAAAAAATTTATTTATTTTT -CAGATGCGACTTCAAATCAGCGGATATTCTAAAGGAATCCTCGAAAAATC -AATTCCCATCCAGCGTAATTCCAACCAAACTGTGCACACATTCAGATGAC -GCCGATCGAATTAACAGCTCAAGCATCGAGACAACACAAGGCGACGCGAA -AACCTTCCACGCCTACGATGACGAGAGTTTTGACACGCACGCCAAGGCCC -GAACGTTGGCACAGAAGAAGCTTGTGCTGAAAGTTGGAGCTCAGGTGATG -CTCATCAAGAATATCGATGTGATCAAGGGACTTTGTAATGGGTCACGTGG -ATTTGTGGAGAAATTCTCTGAAAACGGGAATCCTATGATTCGATTTGTAT -CGCAAGCCGATGCTTCCATTGAGGCACGTTTTACAGAAATGACCATTTTA -TGGGCGTGGCTTTTTTTTTGGAAAATTTTTTTTTTCCAAAATTTCTGGAT -TTTTCTCTAAAATGGAAAAAACCCACGAAAATTGTAAAAAATTTGAAATT -TTTTAAATCGGAAAAAAATAAAATTTTCTTTCTTAAAATTAGGCTTAGGC -TTAAGCTTAGGCCTGGGCTTAGTCTTAGGTTTATGCTTAAATTTGAAAAA -AAAAATTTCTAATTTTTTCCAGATTTTTCCGTTTTTTTTTTCAGAGAAAA -TCTAAAATTTTCGATTTCTACCTGTTTTTCAAAAAAAGTTAAAAAAAACA -TTTTCGCAAATTTTGTAGAAATTTTTCTTTTTTTTTTCTTAAAATTAGGC -TTAGGCTTAGGCTTATGCTTAGGCTTAGGCTTAGGCTTATTCGTAGGACT -ATGCTTTGGCTTAGACTTAGACTTAAGCCTAAGCCTAAGCCTAACCCTCT -TAAAAAGTTACAAGAAGGTTTTTCCTTGCGCTTGGAGCGCAAAAGAAAAG -AAAAAGAGCTATTCAGACTTAGGGTGCCCAACTGGAATAAAACATTGGAA -ATCCTTATGACACACTTAAGCCTAAAGGCCCGAAAAACATACTAGGATGC -CCAACTGGAATAAAATATTGGAAATCCTTATGACACACCGGCGGTATGGC -GCGGCTTAAGCCTAAATAGCCACTTTTATCAAAATACATTTGAGCTCGTC -TTGCGTTTTACTTTGACTTCTCAGGCAACTCAAAAGTAATCTGTGGATAT -TTTTCAGTAATCTAAATGAAGACTATAGATTACTAAGAAACTTGGAGATT -TCATAATATTTGGGGGGATGCGAGCATCCATTGGAGATTTGCCATTTGAT -AGAACTTTTAGCGGCAAAAGTCCAAAACAAAGCTCACAGTGGGCTCTCAA -AGATCATAAAATAGCACTGTAACGAAGAACTTTAACGATCTAACGAAGCA -ATTTTACAAATTCACTTTGGTAGCTCATATCTCCGTGGATAAAATTTTTA -CAGAAAAGTCATCAACTGATAAGTTGTTGATATTGTTGTAAAGAACAAGT -TTGTAGTTGAAAGTTTTTTTTACCAAAAAATTTTTGTTTGAGAGAAAAGC -ATTAGAAACGGAATAGCATCATAAAAATAACAACAGCAGTTGCCGCACTT -CACGCGGTTCTATCTCAAACAAAAGCGGAGATATGAGCTACCAAAGTGAA -ATTGGAAAATTGGCCCTCCAATGCTTCGTTAAAGTGCTATTTTCAGGATC -TTTGAGAGCCCGCCGTGAGCTTGGTTCTGGAGTTATATTGATCAAATTGA -CCCTCCAGTAAAGGAGGACCTTTGATGAATATAATCACTCTGATGGTATT -TAATTCCGATGAGTAATCCATTTTTCTTTTTCTCACATTTGTGAACCAAA -AATAAGTTTTAAATTAAGGCGGGATATTCTAAGGTGTGATAACATATGTT -ATTTATTTTTAAATTTAAATAAAGTTTTTTTTTAATTTTTGCTAAAAAAC -GAATAGTTTACAACCGCCTCGCTCAAATGTATTTTGATAAAAGTGGCTAT -TTAGGCTTAAGCCGCGCCATACCGCCGGTGTGTCATAAGGATTTCCAATA -TTTTATTCCAGTTGGGCATCCTAGTATGTTTTTCGGGCCTTTAGGCTTAA -GTGTGTCATAAGGATTTCCAATATTTTATTCCAGTTGGGCATCCTAGTTT -TTTTTTTTCGGGCCCTTAGGCTTAAGTGTGTCATAAGGATTTCCAATGTT -TTATTCCAGTTGGGCACCCTAAGTCTAAATAGCTCTTTTTCTTTTCTTTT -GCGCTCCAAGCGCAAGGAAAAACCTTCATGTAACTTTTTAAGAGGGTTTC -ATATATTTTATTAAAATCGGGGCGAAGCCCTGATTTTAAATCCATATTGT -TTTTGTTTTTGTCTTCCACTATCCCTGCAAATAGGAAAGAGAATGTGTTC -TTTCTGATGAAGTAAAAATCATCATAAAATCTTGAAAACTGAGAGCAGGA -GGTAATATTTGAATATATTGGGTTGTAAATGTGTGTCTCCCTGTGGGTGG -GGTGGCGATGTGTTGGCAGCCAATCCTTCAACGAACTGTATCTCCCGCCT -GTATCTCCCTTCAAAGTGAGAATTGGGTTACAAAAATTTGAGGGAATATG -AAAAAAGGTGTGAGGATTTCAAAAATATTATTGTTGAAACACCAGACCAA -ACCACTTTTTCTGGGCAAGAGACAGAAAATTAATTTTTTGAAAAATTTCA -AACTGGCACAAAATTTTTTCAAAAACAAATTTTCACAAATTGTTAAAAGA -TGCCATTTTTAATCAATATTGTTCATTGAACACAGAAAAGAAAACGAAGA -TTCATCAAAAAATGAGTGAAAAATCGCAAAAATTCGAAAAAATCCGTGCT -GAAAAACTCGAGTTTTTGGCGGTGCTGAAAAAAATTTTCACTAAAATTTT -TTTGAAACTTAGTTTTTCGGATTTAGCGTCAAATTTTGAATCTATATAAA -AAAAAAAATTAAAATTGATCTCAGATTGAGTGAATAATAAACGCTCAAAG -TTGAAAAATGAACAACGCAAAAACGGCAGTAACTTGCTTCAAGGTCGGTT -GTCTCAGTGAGTTTTCACTCAATTTTCGAAATTTTTTTGCTCTATCGCTT -TAGAAATATTTGTAATTTCATTTTTTTTCCTCAAAATCAAAATATCTCAA -ACGACCGCCATCCTACGAGAAGGGAAAAAAAAAGTTTTTGGAAAAAAAAT -CAAAAATTTTTTTTCTGCCTCGATTTTCAAAATGAAAAAATCACTTTTTC -GGAATAAACTTTTTCACAAATGTATTTTGATAAAAGTGGCTATTTAGGCT -TAAGCCGCGCCATACCGCCGGTGTGTCATAAGGATTTCCAATATTTTATT -CCAGTTGGGCATCCTAGTATGTTTTTCGGGCCTTTAGGCTTAAGTGTGTC -ATAAGGATTTCCAATATTTTATTCCAGTTGGGCATCCTAGTTTTTTTTTC -GGGCCCTTAGGCTTAAGTGTGTCATAAGGATTTCCAATGTTTTATTCCAG -TTGGGCACCCTAAGTCTGAATAGCTCTTTTTCTTTTCTTTTGCGCTCCAA -GCGCAAGGAAAAACCTTCTTGTAACTTTTTAAGAGGGTTAGGCTTATGCT -TAAGCTTAGGGTTAGGGTTAGGGTTAGGCGTAGGCGTAGGCTTAGGTTTA -GGCTTCGGCTTCAGGAATATTTAAAAAAAAAATCGAAAAATAGATTTTGC -GAAAAAAAATCGTGATAAAGCCTGCTAAAATTTTCAAAAAAATTAAATTT -TTCAAATTTTTCAAATTCCCAAGATTTTGGTCTCGCAGCGAAAACATCCA -ACTACAGTAACCCTCGCCCTCTCCAATTTTCAGATCCGCCGCTCCAAGTT -CTCAGTCCGCATTCCCGGGAGTGATGCTCCGTTGATTCGCCGTCAACTCC -CACTCCAACTCGCCTGGGCCATCTCCATTCACAAATCGCAGGGAATGACG -CTCGACTGTGCGGAAATTTCGTTGGAGCGCGTTTTCGCCGACGGACAGGC -GTATGTGGCGTTGTCGCGCGCACGATCACTGGCGGCAATTCGAATTATCG -GCTTCGACGCGTCGTGTGTCCGAGCGAATTCAAAGGTGAACAGGGGATTT -TCGAGATGGAAATCTATGAAAAATGGATGGATGGTGTTAGATATCTCCTT -TTCGTGGGTTCTCTCACGTGGTGTCAGAGTGCCTCATTTCGGCTTGATCT -ACTGTGTAGATCTACAAAAAATGCGGGAGATGAGGAGACTCAGACTTCTC -AACTGGTTTCGCATGGTTTAGAACGTGCTGACGTCACTTTTCTCTGGGCA -TAAAATTCCCGCATTTTTTGTAGATCAACCGGTAAGGGATCTCTCAGCTA -CGTGGAAAATTATCGATTTTTTATCGAATTTTTTGCAGGTTATCGATTTT -TACAAATCCATCGAGGCAGAATGCGACGACGAACAGGACTGGGAAGCCCC -TGCTGCTGGACCAAGGCTCAAGCGAGTTCGATCGATTTAATTTTTTTTTT -TAAATTTTTTTGTGATCTCCAAATGTTCTGTCTTTCTGTCTTCCCCCCCC -CCCCGCCAAAATTCATTAACTGTTTTATTTCACAACACTCTGTATCATCA -TAATTTTCACATAAAATTGGCTATTTCAATGTTGACGTCGAATTTTTAGT -CCTATCAGCGTCATCGGATCTGAAAAAATGGAAAACTTGAACAAAAAAGC -AGGGGGTGGCCTAGAAAGCACAAAAAAAACTCGGACACAGTTCAACGGAG -GCAGTTTTTGGAAAAAAAAAAACGTCATTTTCGTATAGCCACACTGAAAT -TGAAAGAATTCTGGCCGAGTTTTCCAAATTCTAGGCCACCATGCAAACCG -ACATTTTGGGCGGAAAAGTGCCGGTGGCCGTGGAAGAAGGAAAAACTCGG -CCACTCTTCTATGTACTCCTCTCGGAGAATTGTGTTTTCCATGGCCGAGT -TTTTGTGTTTTCTAGGTCATGTCGGCATTTTTCTTAGTCAGTTTCAAAGG -AAATACGATACCTGGTCTCGACGCGAAAATTTTTTAATTAAATCCAAAAA -GACGTGCGCCTTTAAAAAGTACTGTAATTCCAAACTTTCGTTGTTGGGAA -ATTTTTATCGATTTTTCGTAGTTTTCAAAAAAAATAATCAAATGTACACA -GGGTTCTGTTCTTCCTTATTGATTTTTTCGCGCTCCATTGACAATCGCCC -GCAGGATAACGCGTGGGAAAGTCGTGTACTCCACACGGACATCGAGACGC -GACGCGACACGCAACGCGCCGTGAATCTACCCCAAATATGGCCGAGCCAA -AATGGCCTAGTTCGGCAAACTCTTCCATTTCGATTTATGAGGGAAACCAG -AAATCCGTGAGTAGTGAGAAAAACAACGAAAAAATCGATAAAATTTCCCA -ACAACGAAAGTTTGAGATTACAGTAGTCTTTAAAGGCGCACACTTTTTCG -CATTTAACATAAATTTGTCGTGGAGAGAGTATTTTTGGCGCAAAACTTCG -CATTCGGGTAATGATAATAGAAGAATTGAAACTCACAAATTCTCCGCCGT -CTCCTCAAGCAGCAGCGGCACAATAAACATGAAATACACGGCCAACACGA -AATGAATCGGCACCATCGACACAATGAACAACGACATTCGGAGCATGTGC -TCCAAAACTGTCGGCCGCAACTTTTTCGACGGATTCTCAAAGACGAGATA -CACTTGCATCGGGCTGTGCACATCTTGAACCGACTTCTTCTTCATTACAG -CGCTCCCTTCTCTGGGCAGCAGGTAGCGTGTCCACGTGGTGTAGGGTGAC -TCAGTGGTTGTGTGATTTATCGGCGTGAGCTGGAGCATTTTTGCAGAGTC -GCAGGCCAAGGTAGCGGAGGTGTTGGCTCTGAAAGTAGATTTCATACAGG -ATGGTAATTTCGGGGAGTACTGTAGTGGTGTTATAGTGGTACTGTAGGAG -TACACTGTAGGGGAACTGTAGGGGTGCTGTAGCAGTACTGAGGGGGGTAC -TGTAGGAGTACTGTAAGGGTGCTGTGGGGGTACTGTAGGAGTAATGTGGG -GGTACTGTAGGAGTACTGTAGGAGCACTGTAGGGGAACTGTAAGGATACT -GTAGGAGTAATGTAGATGTACTGTAAGGGTACTGTAGGGGTGCGCTAGTG -ATACTGTAGGGATCATGTAGGAGTACTGTAGAAGTCCTGTAAGGGTACTG -TAAGGGTACTGTAGAGGTGCGCTAGTTGTACTGTAAGGGTACTGTAGGGG -TACTGTAGGTGTACTGTAGGAGTAAAGTAGATTAACTGTAAGGGTACTAT -AGGGGTACGCTAGTGGTACTGTAGGAGCACTGTAGGCGTACTGTAAGGGT -ACTGTAGATGTACTGAAGTAGTTCTGTAAAAGGTACTGTAGGGGTACTGT -AAGAGCACTCTAGGGGCATTGTAGGGGTACTGTAGGTGTACTGTAAGGCT -ACTGTAGATGTACTGTAAGGGTACTGTAGTTGTTCTGTAAAGGGTACTGT -TGGGGTACTGTAGGTTTACTGTAAGGGTACTGCAGGGGTGCTGTAGGGAT -ACTGTAGGAGTACTGTAGTGGTTCTATAGGAAGACAAACTTTTTTTTGAA -TTTACTCATCGGAGAATCTAATATTTTTCACCAAATCGATACACCATAAA -AATTTTAGGACCCAAAGCTAAAAAAAAAAACCAACTTCTCCAATATCATC -TCCATCAATTCCAGTTGTTCTGTGCAGTTCGCCATCCCTTCCTTCTTCAA -TTCCTTCGCCCGATTCTCCAAATCGTCCACCATCTTCACACCCCGCCGAC -ACGCCGTCTCCACATACCGTTCCGTACCAGCTTCCGCAATTTTCATAAGC -TTCTCGACAGACTCGTTAAACTTGCGTGTTGGCTTGAACAAATGGGAACC -TCGAATCGCCTCGGGAACCGGATTTCCACCTCCTTCCACCAGGAGGCTGA -ACAGTGTCGTTTTCTGCCTGACGGCCTTAGCCAGGACGTGCCCATAGTTG -ATCATGTAGATTTGCCCGTTTTCAGATATGTTGAATGTTTCAGCAGATGA -GAACATTTGAAAATTATTTGATTGTGCGTGTTCATGCACCACAGTAATGA -ATGCGAGGCGGCAAATTAAAACTCTGAAAGTTTAGATAATTGTACTTTAG -TTGAAATCTACTTTGGTTGACAGGTGCATCGACTAGACTAAAAAAAAAAG -CAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTA -GGTAGGTAGGTAAGTAGGTAAAGCGAGACACGGTGCATCGATCTGACTTT -AAAAATCTCAATCTCGTATCTTAAGCGTCTTTGGTTCTGTCAGGGAAGCA -GGTAGGGGGGAGGTAGGTGTGATCAGGCAGAGCACCGGAGTTAATATCTG -GTGGATTGTGGGCTGCTAATAGGTAGGTAGGCAGGTAAGCAAGCAAGCAA -GCAGGCAGGTAGGTAGGTAGGTAGGTAGGCAGGCAGGTATCAGTTGACAA -CTTTTTGATGAAACTAAACGGAGCCGAGTTATAAGGTGCCAAAGTTGCAC -TAGACATGGTGCATCGACCTAACTTGAACAACTCGTATCTCAAGTGTCTT -TGGTTCTATTTGGGAGGCAGGTAGGTAGGCAGGTAGGTAGGTATATCTTA -GGTTGTTTCAAAACTATTATACATTAAAAATCAATAAAAATATTTTGCAC -GAATTTTATCAGTTGACAACTTTTTGATAAAACTAAAAAGAGCCGAGATA -TTGTAAGTTGCAAAAGTTGAACGAGACATGGTGCATGGAAGGTAGGTAGG -TAGGTAGGTATTTAAGTAGGTAGGTAGGTAGGTAAGCATTCCGTATTTCT -CTCTACTTTGACAGCTTATATCCTGGTTGTTTTGTGTTGTATCAAAAAAT -GTTTAACAAAGATAACATAGAAAAATATTTAGCACGTAGCAAATTTAAAA -AACTAGGTTGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGAAAG -GCAGGCATGTAAGTAGTAGGTAGGTAAAAGTACTCACGTGGAGAACATCA -AGCAGAAGATCGCTGAGCAAATTGAAAGTGGTACTGGAAGTTGAGCAAGT -ATTTTGGAGTATTTTTCTGGAAAAAAATAAGTATTCAAAGTAACTAAAAT -AAAATACCAACTCCGAAACTCAAACTTCATAATAAACAAAATCGTCAGAA -TCCCACTGGAGAGGACTGCAAAAGTCACTGTCGTGTTGGCAGACGTCTGA -TAAAAATCGAGGGTGTGTCCGGATGGTAGGAGAAGCACATTATCGTGATA -CTTTGACACAAATTCCTCAATAGACGCCAACGCTTTTCCGAAAACTGGAA -TCGAAATGTTCAAAGCATTGAGAATTATTTTCTGGTACTCTTCCACCAGG -ATGTTGTACTCCGAGTTTAGATCCGCTGAAAAATTTAAATTTGTATTAAA -TTGGGCAATACTCGTACTTGCCTACCTGCCTACTGGTAGGTAAGCAGCCT -ACTTATTTTCAACTTACAAAACTCCATATACTTTGTAACGTTTTCCAATT -TCGCAAAAATCGATTTCTCGAAATATTTGCACTTCCCCTCGACAAATGAT -TTCTTGGCGGGAATCTTCAGGAACAGCTGAAAATTTTTTTTTCCGGTGGC -CGAGTTTTTTCACGGCCACGACGTACCTTATTAAACATGGTGAAGTTGGC -GTAGTCATGCAAGAACCAATTTATTCGGCGGCGTTCGTTTTCGGTGACGG -CGAAGTCTCGTTTGAACAAGCACGGTATGTAGGACAGCTTACGGTGGAGA -CGCTCTTTGATGGCTGGAAGTTATGACGTCATGAATAATAAGGGATGAGA -TTTCTAGGCCACGTGTGACGTCACAGCAATCCCCGAAACCTTTTTGGATG -GCCGAGTTTTACCGATTTCTAGGTCATCGAGCGAAACTTTTGTGATACTT -TGGCAATGGTCATCAGGTAGACAAACAACGTGATAATTTCTAGGCCACGC -TTGACGTCACGTGGCCGAGATTTCGCGCCAGGACCTAGAACTAGACATGG -TGCATCGACCTAACTTAAACAACTCGTATCTCAGGTGCCAGGTAGGTAGG -TAGGCAGTCAAGCAGATAGGTAGGTAGGCAGGTATTTTAATTTCATTTCT -GCGGCTACAACACAATTTCTCTTCCAATCAAGGACGTAAATTTCTAGGCC -ACACATGCAGAGTGCGGACTAATAATTAAAGTGTTTTACGACATGGCCGA -GAAAAGAGAAACCTAGGCCATGGTAGTTAGGTGTGACGTAACGCCACTAT -AAAACTATAAAACTCACGCATAAAACTGTGATCATTGGCGGTTTCGAGCA -TCGTCCTTCCATAGACCGCATCCTGAGTACACTCTCGTAAATTGGCGGCC -AAAATTGTTAGACCAAGGATACAAAATATGGGGATAATGGTGAATCCGGA -GCGATTATCATCCAACCAATACACGATTACTTCGATAACCTCGAAGAGCA -GCAATTTCCAGACGACGAGGAATATCAGCAGAGCTGTGATCAGGCAGAGC -ACCGAGATTATTATCTGGCGGATTGTGGGCTGAAAATAGGTAGGTAGGTA -GGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAGGTAAG -TAGGTGGTAGGTAGGGAGGCAGGTATCAGCTGCCAACTTTTCGATAAATA -TTAAACGGAGCCGAAATATAAGTTGCCAAAGTTGTACTAGACATGGTGCA -TCGACCTTACTTAAACAACTAGGTAGGTAGGTAGGTAGGCAGGCAGCTAG -GCAAGTAGGTAAACTCACCAAATGCCTGAAAACAATTGCAAGAACATCGG -AATAACCCGAGCTCCTCCCGTTCAACGTCGCGACCACAAGCGCGTGCACA -CTTTTCCGCAGCTTCTCATCATCGCGATCAGCGCAAAAATCCTCGATTAT -CTCGAATCGATGGCTCTTTTTTGTGTGCGCCGGGTCTAATTTATAGCTGA -TCGGCTCGGGAAACCAATCGTCACACTGCAGCTTCGCATCCTCCAAGCTG -AAGCCGTGAGAAAACTGTGCACTGCATAGGAATAGAAGTAATTTCAGTTT -CATTTTGTTCTGGAAGAAGGCATTTTTATGGATGGAGTTTGAAAATAATA -ATTAAAAAAAAAACTTACAGCTGGAACTTTGTGAAATCGATAATGAAACA -ATAAATCTAAAAAAAGCTCAAAAAATTTTTGACAAAATTTAAAACTGTAA -CGTGTATGAAGGTCACGTGAAAACTGAAAACTCACCAAAAATGTCGAAAA -ATAGCAAGAAACTAGGCACACGTAGACTTATGGTAGGCAGGAAGGCGTAG -GCGTTGATCCAGGCAGGGTCACGTCTTGAAGGCAGACTGTTAGGTATAGG -TAGGCATAGGTAGCCATGTAGGCGTAAAGGCAGGAAGGCATCTCTAGATC -CTTTTTGTGGCAGATTGGCCGCTTTGCAGGCAGGCAGGTGTGGGTGGCCT -AGTAGACCGAAAAACAAGCAGGTAAAGTTCCTATAGTAGTAGGTAGGCGA -GCCAAACCTTTTTTGTAGATGATGAAGTAGGTGTAGGCCGTCTTTTGAAG -GCAGTGAGGCAGACAAGGTTAGGTCGTCGCAAAGGTTGGCTGGAAGGTAG -GCACGTGGGTCAGCAGATAAGCGTAGGCAGGCATAGGCAGGAAGGCATAG -GCAGGTAGACGTAGGCAAGTAGACGTAGACAGGATAAGATTCAAATATGA -AAATCGTGAAAAGGGGAAAATTTCTTATTCTTCGAGTGCGCGACAGTATG -CGTAGGCAGGTAGGCGTTGGCAGGTAGGCGTAGATAGGTAGGCGTATGCA -GGTAGGCGTAGGCAGGTAGGCGTAGTCAGGTAGATAAGCAGGTAGTCGTA -GACCGGGTAGGCGTAGGCAGGTAGGCGCATGCAGATAGTCCTAGGCAGGT -AGGCGTAGGTACGTATGCGTTGGCAGGTAGGTGTTGGCAGGTAGGCGCAG -GCAGGTAGACGTAAGCAGGTAGGCGTAGGCAGGTAGGCGTAGGTAGCTAG -GCGAAGGCACGTAGGCGTAGGTAGGCAGGCATAGGCAGGTAGGAGTAGGC -GTAGACATGCGCACATGAAAACCTTATAAATGTTTCAACCCCATCATCAT -CATCCCATTTTTCTCTCGATCAAAACGAAAAAATGTGCGCAAACACAAAT -TGCATCCATTTCTCTCTCTTTTTTACTCACTTATATATCTCTCATCACTT -TATCCCCCGTTTTTCAATCCCTTCCAAACACTTCCAAAACTCTCCAGAAC -TCCTAGAGAGTAACACGAGAGAAAATATTTGAACTTTTGTCTCGACCAAG -TTTTTTTTTTTGGGATTTTTTCTTTGGATTTCTACAAATTTGATGTATTT -TTTCCATTTTTCGTGCAAAATATGGTAATGGACTAGGTTTTTGCTACGTG -GCCTAGAAAAATCTCGGCCACCGATTCTGAGCTGTTGCAGCGGCCGCGGC -CGAGGGTTTTTCTCTTCAATCGATACCAATCCCTCTTTTACGCAAGGAAT -CACGTGGAGTCAGAGTGTCTCATTTCGTCTTGATCTACGTAGATCTACAA -AAAATGCGGGAACTGATTTCGTATCGTTAAGAACATGCTGACGTCACATT -TTTTTATCATAAAATTCCCGCATTTTTTGTAGATCAAACCGTAATGGGAC -AGCCTGGCACCACGTGCTCTTCCAACCTTTATATTTTTTTTGACAAAATC -TTGAGAATTTCTAGAATTTCAACGAAAATCCAATTTTATACCTAAACTTA -AAAAAAAATTGCTAAATTGTGTTCGACTAGCAAAAAATGCACCCAGTTTT -ACAAAAAATCTTTTTTTCTGAAAAAAAATTCAGTGGAAAATGTCTATAAT -TTTCAGTAATTCATACTAAAAAAAATCCAATTTTTACAACAAGTTTTTGT -GGCCGCGGCCGAGGTTTTTCCTCTTCCACGTGGTGTCAGAGTGTCTCATT -TCGGCTTGATCTACTTAGATCTACAAAAAACGCGGAAACTGATTTCTCAT -GGTTAAGAACGCGCTGACGTCACATTTTTTTGATCGTAAAATTCCCGCAT -TTTTTGTAGATCAAACCGTGATGGGACAGCCTGGCATTACGTGAAAACAA -ACAATGCAAGCGCGCTCTAATGCGAATTTATTTGCTCTACCACCAGATAA -ATTCCACTTCTTCACAATAAACCTAAATATTTTTTGTGTCAAAATCTTGA -GAATTCTTAGAATTCCAGAATTTCAGCGAAAACCTAATTTCCGATTTTGT -TATTGTTCAGGGGAACAAGTGAGCCACACAGCTTCCGCTTCTGCTCCGAA -TTCGATTCCCCTGAGGCATTTTTGTTCGAAAAAAGCCTCATTTGTCATAC -TTGTCGGCAACTTTCTTCGAAGTTTTTGTTCTTGTTTCAAATAATTTTTC -TTCAATACTTGTTCCTTCCGTCCCAGCAGATGTTCTTTTGCGGGGGGGGG -GGGGGAGGGGAGAAAAAAAATAAGAGAAGAAGCAGAAACTCGACACTTTT -GTGTCCGCATTTCTCGTAAAGTTTTCAGATTTTTGAGCTTTTCAAGCTAT -AGCTGAACCACCTAGCAAATTTCGCCGCAGAGTTGATTTCTCCGGGAGTG -GGCTTTCTACTGGAGACCTCACTTTTTTTGCCTTTTACTAGAGCTTTTTA -ATTTTTTAATAATTTATTGCAGCTCTATGGATTTTCCAAAAAAAACCACC -GAAAAGCCCGAAAAATCAAAATTTTCGTTTTTAAAACCCTAAATTCCATA -CTCCGTCCAAAGAACACTCACATAAAAATGAAGAGATTTCGCAAAAAAAG -TGAAATCCAATTCAATTTATTTCAATTTTGAAGAGTGCGTTCGTCAGCTT -TTTTTTCGACAAAAAAAAAAGAAAATGTGTAGTGTAGTTTTCAACAGATT -TATTGTTTTATTAATATAATAGAAATCAAACCTTCTTTCTGCCTACCTAC -ATGGCTACCTACATGCCTACTTGCAAGTAGACCTGTCTATCTAGGTACTT -ATCTCACACCTCTTTACCTACATACCTACCTTCCTACTCACCTGCCTACT -CATGTAGACATAAGTGATCGTCAAAAAAGAAGCTGATGGATCAAAAGTTT -TTGGAAATTTATTTCGATTTTCAGGTTTTAAAAATTGCGGAAGATGTTTA -ATTTTTGACGATTAGTTTAGAATTTTTTTTAATTAAGAAAAAAAAATTAT -TATTTTATTTTTAAATTACTCCAAATTTTCTTCTGATTCCGAATATCTAT -GTGAAACTTTTTTTAATTCCTTGGTTTTATATCTAAGCTTAAAATCGCTA -ATTTCATTTGTGCACCCAAGAGATTTCGAATTTTCACGGGGTTCTGGCCT -TCCTCCTTGAATTTTTCGCGCTCCATATAATATTGACAACCGGGCAACGC -GTGGGAAAGTCGTGTACTCCACACGGACAAATACATTTAGTTTTACAACT -AAAATCGAGCCGCAACGCGACACGCAACGCGCCGTAAATCTACCCCAGAT -ATGGCCGAGCCAAAATGGCCTAGTTCGGCCAAAACTCTTCCATTTCAATT -TATGAGGGAAGCCAGAAATCCCGTGTAATTTTCGCGCCAGAGACGCCATG -TGTCGATTTACGAGATTGGTGTATATTTACAAAATGCGTAATATTTATAG -AATGCTGATTTCCGTTTTTTTTTTTTGAAAAATGTCATGTGTGCACAAAT -TAAATTCGGCGATTTTAAGCTTAAATATAAAATCAGGGAAATTTTTTAAA -TTTTTTTCACGTAGATATCCGGAATCAGGGGAAAATTTGGAGGCAATTAA -AAATGTCTCCCTGATCATTTAAATTCTTTAAAAGTACTCTTCAGAATCCT -TTTTTCCTAACCAAATAAAATAATTTCTGACGCCTTTTTTTTCTCTTTTC -AATAAGAAGCAAAAAACAGACGAACCTATTCCAATTTCCCACCACACCAA -TTCGTTCTTTCCGCATTCTTTTTCTTCCATTATTTATCTCCCTTTTCCTC -CATTCTCTGTGCTCTTATATATATCCATCATCCCATTTTCTTTCTTGTTG -TGTGGTATGCTCTTTTTCATCCATTATTCGAAAATTCTCATTTTCCAAAG -TTTTTTGTCAAATACATTTTAAAAATTTTTTAAACCAAATCTCGCCGTCC -ATCGATTTTAAAATACCTTTTTTGAGAAGTTTTCAAGAAATTTCATTATG -AAATTCGGTGTTTTCAGACAATTTTGAGTCTAATAAAACAATTTAAAATT -TTGACTACATCACCTTTAACTTGTAGAATGCCGTTTAAACACACTTATCA -CTTTTTCAGAATCCCATATGCAATGGTATCACTTGCTCCTGCTAATTCTC -ATGATCCTGGTCCTAATCCCATGTTTCTGGCAAGCTTGGCTACGATTTTC -CCGTCGATTCTCCGATTCCTATGATCTATCAAGAAATGCGCAAAAGCGTG -ATGAGATTTCAAAGGAGTTTTATGTATAGCTTACTGACAGGATTTCAAAA -AACAGTTACGGTAAGATTTTTCGAAAAATTTCACGGATTTCTGGCTTCTT -GCCGAACTAGGCCATTTTGGCTCGGCCATATCTGGGGTAGATTTACGGCG -CGTCGCGTGTCGCGTCGCGGCTCGATTTTATTTGTAAAACTAAAGGTATT -TGTCCGTGTGGAGTACACGACTTTCCCACGCGTTGTCCGGCAGGCGATTG -TCAATGGAGCGCGAAAAATTCAATGAGGAAGGCCAGAACCCCGTGCCTGT -ATAGGATATTTTGAATCTCAAAAGAATTTGAAGATTTGAGTTTTTTGAGT -TTGAGGTGGAAAAAATCGTAAAAAATTCCTTTCCGATAAATTTTCGGATG -CAAAAATGTGATCCATGCTGTAAAAAATCCAAGAAAGCCAAGAAATGTGC -GGAGCCTATTTTCCGATTTTATATTACTTTTTATTTCAAAACTTGATTCA -AAAATATCAAATTCGGAAAAAAAACCGCAACTTGGTAAAATTTCCTCGAA -AAATATTCTCCGCTTAGGCTCCGCCCCTCTCTTGGCATTTCGAATTTTTT -CGTTAAATTTTTGGAAACTGAAATTAAGTCCAAAAAGAACCAAGAAACGG -GCGGAGCCTATTATGGGATTGAAAAGACATGGTGCATCGATATGGAAACG -GCTTTTAATTTGGTTTTTTTTAAATAAGAAACTAGTAAAATTCAAGTGGC -CTAGCTTTCAACTCTTCCATAATTCCAGGGTACATTCCAACTGGTCATTG -CTCATTGCTCTCTCTTTATGCTTCTCATCACCAACGAATCCACTCAATTT -TCACTCAAGCTGTCATCTCCAGCAGTGTCTCTCAATTTAATTATGCTTGA -AATTGTTTTATAAAATGAAACAACACATACTCTGTAAAAGCAATTTATTA -TTAAAAAGTATATATATACACGTATTCCTGGGTGGGTATTGAGACTAACG -GAAGCGACATGGAGGAGAATTTGAATTTCATTAAAAAAAAAAAACAAAGA -GGTAGGTTACTGTAGCATCCAATCTGGAGGCTGCACAAAGAAGACTCCAC -CGTCAGTGGCGCAATATGTTGGACACACCTGGAACGTTGAAACATTATTT -ATTTCTTTAAAATTTTCTTTGTCTAAGCCTGAGCCTAAGCCTGAGCCTAA -GCCTAAGTCTAAGCCTAAGCCTAAGACTAAGCCTAAGCCTGAACCTAACC -CTAGGCCTAAGCCTAAGAAAAAGCCTAAGCTTGAGCCTAAGCCTAAGCCT -AAGCTAAAGCCAAAACCTAAGCCTAAGCCTAAGCCTAAACCTAAACCTAA -ACCTAAGCCCGAGCTTAAACCTGAGCCGATACCTAAGCCTAAGCCTAAGC -CTATTCCTAAGCTTAAATATAAACCTAAACCTAAGCCTAAGCCTAAGCCA -AGCGCTGAGCGTAACTTAGAGCCTAAGCTGAGCCTGAGCCTAAAACTAAG -CCTAAGCCTAAGCTTGATCTTAAGCTTAAACCTAAGCCCTGAAAATTTTT -TTTTGAACTCCACAACAAAATTTGTAGAATGTTTTTAAAAATTGGGATTC -TGAAATTCCCCGCCAAAAAGTTTAAAAACTTCACATTTTAATTTATCTGT -AAAATTTATATAAATCCCTCTTAGATTTTGAATTTCGCGGCAAAACTTGT -AGAACATTTCAAAAATTTACTTTCGCGCCAAAGATTGTCGCGCGAAATTT -ACAATTTTTCTATAAAAAATGTATTTCATAGAATTTCAAAAAATCGAAAA -TCGCGCCAAAAATTTTTAAAAATTTTTTTCAGTATTGTGACGTCATAGAC -TACAAACTAACCCCTCTATTGCCTTCCTCCCCGTGCTCTCCAATGAGTCC -TTCGGCTCCAGCGGCTCCATCATTCCCTGGGAACCCGGGCTTTCCTTTTT -TTCCTCGTGGGCCTTGTGCACCAATCGGGCCGTCGATACCAGGCATACCA -GACGGTCCTGGCGGCCCGAATTCTCCTTCCTCTCCGATCGGACCTGCTGG -TCCCGGGATGAACGGTTTCGGGGTGGCGTCCGCACCCGGGTCGCCCATTT -CTCCATCCAGTCCTGGGATTCCCTGAGGGCCTTGTAGGCCTTTTGGTCCC -ATTTTTCCATTTTCCGCGCGAAGTCCATTCTTTCCGGGTAGTCCTGGCTT -ACCAGTGTCTCCTTTCACTCCCTGAAAATTTAGTTTAGTGGTATAGGCCT -ATCAAATAGGCTTACCGTAATCCCAGTGGTTCCTTGTACTCCTCTCGGAC -ACGGATCCGCACACAAAGACTTATAATTCACAGGAGGCTCACATGGTAGG -CGCGCTGGAAGTCCAGGCGCACCTTCCGATCCTTTCGTTCCAGGAAGACC -GTCTCTTCCAGGGATCCCCGGGGGTCCTTGTGGATGACGGCACTCACATA -CTCGGGATCTTGCGGTTTGGCCGGTTTCGTGTAGGAAATCGTCGATTTCA -TCTCTTTTCTGGCGGGTTATGTTTTGGAAATCGTTGGCGACATCGGATAG -CATGCTTTTCATCTCGAGGGCGCTTTCCTGGAAATTTAAATTTGCTTGAA -ATTTTCAAACTTGTTATATTATAATTTACAAAATACTGACTGCCTTTGTA -AGTTTTTTATTACAGGAACACAAAATTCTAAGAATGCGTACTGCACACTA -TATTTGACGTGCAAGATATCTCGTAGCAAAATCTACAGTAACTCTTAAAA -TGACTACTGTAGCGCTTGTGTCGATTTACGGGCTCGATTTTCGCAACTTT -TTTTCTTTCGGATTTCCTTCGTTTCCTCGTATTGTTTTCTAACTTTTTAT -TTCAAAATTTCAATATTCTATCGATAAATAAATCATTTTAATTTATTTCG -AAAATCGAGCCCGTAAATCGACACAAGCGCTACACGAGTCATTTAAAGGA -TTACTGTAGTTTTCGCTACGAGATATTTTGCGCGTCAAACATGTTGTGCA -ATACGCATTCTCAGAATTTTGTGTTTCTCTAATACTGTGTTTTTAGGATT -TTGAATGAAAGGAAAAGCCCGAAACTTTTAAACAAATTTTTCGGTGCATT -CTGTATCAAAAAAGCTGAATAAAATTGTACAAAAAAATGCCACATTTTAT -TGAAAAATTGATAATAAAATAATTTGTTTTCAAATAATTTTTGAATTTCT -CAATTTTTTGGAATTTTTGGATTTTTTCGGGCCAGAAAGTAGGCATTCTC -ATGAACTGATGTTTTCTTCATAATAATATATTCAAAAAAACGGTCTCCCA -CAAAAAAAGGTCCGAGAGGCGAACAAGGTTGTAAAACGTTGCTATTGTTT -ATTTACAACCGCCATTATACCCCTATAGGGGTTGTAACACCACATAACAA -TTTGATAAGATGCACACAGTAGGGAGAGGGACCTAATTTAAAAATATAAG -AATTTTCTCATTAAATACAATTTTTCTCTATTTCTTTCAGGAATATCGAG -AGGAAAATCAGCGAAATTTTTGGAAATTTTTGGTTTTTTTCTAACGAAAC -AAAAAAAATTTGAAAAATTTCAAGAAATTCTGTGTATTTATCGATAAAAT -TTCAGAAATCAAGGGGGTCGTATAGAAGTTAGACGGTCGGTTTTTCGACT -TTCAGCTAACTTTATGAAATTTCATTTGTTCAGGTTTTCTGACATTTAAA -ATCAAATGGCATTAGCAGTTTTTCATGAAAAGTTTCAGAAAGTCTCAAAA -CTCCAAATTTTAGGAGGGTCGTATAGAAGTTGGACGCACTAAAAAAAAAG -GAAAAATGTGGTTCTAATTATTACGGAAACACTAAATTCTGAGAATGCGT -ATTGCACAAAATATTTGATGCGCAAAACATCTCGTAGCGAAGACTACAGT -AATTCTTTAAATGTCTACTATTGTAGCGATTGTGTCGACACGTGGTGCCA -GATTGTCTCATTTCGGCTTGATCTACGTAGATCTACAAAAAATGCGGGAG -AAGAGACGCAGACTTCTCAACTGATTTCTCATGGTTAGGAACGTGCTGAC -GTCACATGTTTTCGGGCCGAAATTTCCCGCATTTTTTGTAGATCAAACCG -TGATGGGACAGCCTGGCACTATGTGTGTCGATTTACGGGTTTGATTTTTG -AAATTGATTAAAATAATTTAGTTATCGATATTATATTGGAATTAAACAAA -AAGTGAGAAAATAAATCGAGCCCGTAAATCGACACTACAATAGTCATTTA -AAGAATTACTGTAGTTTTCGCCACGAAATATGTTTGCGCGTCAAATATAT -TGCGCAGTACGCATTCTCAGAATCCGTAATCCTCAAACTTCTCACCTGAC -AGTACTCGGCATCGTTGACAGTATTCTGAATAGCCGGTCGAAGTATTGAG -GCAAGGGGTCCTACAGAAACAATAAACGACGACATCGTGGATAGCGAGAT -AAATAGTGAAACTATGATTAACGTGGCGTATGCCGTTTCTCGAGCATTCT -CGTTCATTTTCCAGGAGAAGCCTCCAAGAGAAGCCTATGGAGGATCCAAC -GAAAAGTGAGTAAAGAAATGATGCGCTGGCGCGGAAAAACGAGAGCGATT -ATGTATGGGAGTGACCCAAAAACACGGAAAAGTAACGGATAACAAGAAGA -AGAAGGGGGCAACTTTCTCTTTCTTATCATCATCACCATCATCATTATCT -CCTTTCTCGGGATTCCGTCATGAGAATGAATCCATTTACTCGTTTTTTTT -GTGTCCATTTAAGTTTGTCTATAAATATGGCTAATTTCAACTTTAAAATC -AAATAATGAAACTAGTAATTCTACTCATCTCTCACGCAATTCCTTTCTTT -TATGTGATATATAACTTTTATTCCATATTTAAAGAAATTTCAAGTTTAGA -GTCTAACTTGAAAATTGCCAGTGATGAATATAAAATTAGAATGAAGAATA -TTTCCAGAGAAGTTGGAAGTGTAGTCTTGGAGGAGAAGAGAGGAAAGAGG -TGAGGAAAAATTACGTTTTTTTGAAGTTTTTTCTTTAATTTTCGAAGGAT -TAGGCTTAGGCTTGGGCTTAAGTTTAGGCTTAGGCTTAGGTATAGGCTTA -GGCTTAGGTTCAGGCTTAGGCTTAGGCTTAGGCTTAGGCTCAGGCTTTTG -TTCAGGCTTAGGTTTAGGCTTAGGCTTAGGCTTAAGCTTATGCTTAGGTC -AAAGTATAGGCTAAGAGGCCTAGGCTTAGACTTAGGCATAGGCTTAGGCT -TAGGCTTAGGCTTAATCTTAGGCTTAGGATTAGGCTTAGGCTTAGGCTCA -GGCTGAGGCGTAGGCTTAGACCAAGGCGTAGGCTTAGGCTTAATCTAAGG -CTTAGGTGTCGGCTTAGGCTTTAGCTTAGGCTTAGTCTTAGGCTTAGGTT -AATCTTAGGCTTAGGATTAGGCTCAGGCTTAGGCTGCGGCCTGGGTTTCG -GCTTAGGTATAGGCTTAGACTGAAGCTTAGACTTAGGTTTGGGCCTAGAA -TTAGGCTTAGGCTTAGGCTTAGGCTTGGGCGGGGCTGGGCGGATGAGAAA -AAGAGAAAAATTCCAGGAAAATCCAAATAAAATCCAGAAAAAATAATAAA -AAAAAGGAAAAAACGGGAAAAATGGGGCATTCCGCGTCTGCCGCGTCAAA -AACTTTTCCTTAAAAAACGGACAGAGAAGGACCAAAAAAGACAAAAGTTT -AACAAAAAATAGTTAAACATTTTTTTTGACGGGGTTGAGCTCACCCAGCT -GAGCTCACTCCATAATTGCACACAAAATTCTCAAAAAATTAATTTTAGAG -ACTACACAGAGGCTAGCAAATGCACATGCTCTTCAACGATTTCTCAGAAA -TGCCCGCCAGGCTCCAAAGGTGCTCCAGGAGCCGATGGTCTGGACGGGAT -CCCCGGCTCCAGAGGTCTGAATGGTATGGATGGAGAGGCTGGGCACAGTA -ATATGGATGTTTGTGAGTTGCCCAAGATCTTTTATTTTTTGTAAATTCAT -ATTCCAGTCATGTCACCAACAGGATGCATCCGTTGCCCAGCGGGTCCTCC -AGGTTCTCCTGGTGATCATGGTTCTCCTGGTGAACCAGGGTACCCGGGAC -CTTCAGGACCTCCAGGGGAACCCGGTTACGCAACAATTGGGCTTATCGGG -CCACCTGGACTCGCAGGCCAAGATGGTCTAGATGGAGCTCCTGGCGAGCC -GGGAGTAGGTGGAATGGATGCAGTGAAGATTGTTTCAGTTGATGGAAAAA -TTGGAAGAAGAGGAGAAGCGGGGAACAAAGGAAGCAAAGGATCTCGAGGA -GGAGTTGGAAAAGCTGGAGGGCCTGGGGTGGCTGGAGAAATGGGAGAAAA -AGGAGCAAGAGGTGAAGATGGAAAGCCTGGAGAGTCTGGAAAGGTGAATT -CTCAGAAGTTGATCGATGCACCAGGGCGACAAATTAAGCGAATCGGCAAA -TTGCCGATTTGCCGATTTGCCGGAAACTTTCAATTCCGGCAATTTGCCGG -TTTGCCGATTTGTCGGATATCAAATTTGCCGGAAATGTTTAGAGGGATTT -TTTAAAAGACGAAAACACTTAAAACTGTGTCTTTTTGAATTTTTTCCCGT -TTTCCTAACTAGGGAATATTGTTAATAGGGGAATTGCTAGGAAGAAAAAA -CAAACTTTAAATGACAGATGAGGTCTTTGGCTACAAAAATCATTTTTTTC -ATTATTTTCATTTTCATAGAATTTGCTCACTTTTCAAAATAGACGTAGGA -ACATTCATAGGATGCGTTTAATTTTGCCATTTGAAATTTAAATTCTGAAA -TTTCCAAAAAAAATCGGCAATTTGCCGGTTTGCAGATTTGCCGGAAATTT -TCCATTCTGGCAATTTGCCGATTTGCCGATTTGCCGATTTGCCGGAAACT -TTCAATTCCTGCAATTTGCCGGTTTGCCGATTTTCCGGAAATTTTAATTC -CGGCAATTTGCGGATTGGCCGATTTGCCGGAAATTTCAATTCTGGCAATT -TGCCGGTTTGCCGATTTGCCGGAAATTTCAATTCCGGCAATTTGCCGGTT -TGCCGATTTGCCAAAAATTTTAATTCCGGCAATTTGCCGGTTTGCCGATT -TGCCAAAAATTTTAATTCCGGCAATTTGTCGATTTGCCGATTTGCCGGAA -ATTTCAATTCCGGAAATTTGCCGATTTGCCGGAAATTTAAAATCCGGCAA -TTTTCCAAAACTGTATAATTTTTCAGCCCGGCGCACCTGGAATCCCTGGA -AAAGATGGTACATACTGCCGATGTCCCGATCGAAATCGTTACGATATTTA -TCCATATAAATCGAAAATCTGATAATAGTAATAAAGATAATAATACAATA -AATACAGACAGGAAACGAAAAGCGAGCACTGACGATTGTATGATACCCGA -AACATTAAGGAGGAGCACAAAAAACACAATGAAAAGACACAGAAAAATTG -AAATTTGAAAAACTGGTAACGAGACTAGAATCGTCATGATGATCTTGTTG -AAAAAATTGGAAAAAAATTAAGAATCTAGAAATTGATTAGGCGCAGACTT -GACACGATCTTGGGCACCGAATCCGCATTTCAGGCCAATTTTCGCATGCT -CCGCCTTGAGCCCATGACGGGCAGAGGGAGTCATGATCGATGCATCTGAA -ATGGGGAATATTATTTTTTATTTTAAGCTTCAGGTTTAGGCCTATCGACT -TTGGATCTCAGGCTCAGGTCCTTAAATTGTGTATCTCAAGCTTAGGCTCT -CTCGCTCAAGCCTTTAGATTTCAAATCTTAGCCTTAAGCTCTCCGACTGA -TTTAGGATATCAGACTAAGGGCCTAGGACTTTGGGCCTGAGGCTTAGGCT -AGTATTCAATCTCAAGCTTAGGATCTCACGCTTAAGCTCTCTGACTCAGG -CCCTTAGATTGCAAAAACCTTTGCCTTAGGCTCCCCGACTGATTTAGGAT -ATCAGACTTAGGGCCTAGGACTTCGGGCCTGAAGCTTAGGCTCTCAGATT -CAGGCCCTCAGACTTTGAGTCTAAGGCCGTTAGACTACGATTTTCAAGCT -TACAATTAGGCTTTTAGGCTTAAAATCAAAATCCAATTTAGTTTTTTAAA -AATAATCAAACATTTCTAAACCGCAATTTTTTAAAAATTACCCTAAATAT -TTCAAATTTTAGGCTTAGACTGTCAGACTTAAACCTTTAAACTTTTGGTC -TCAAATTTAGCCTACAAGTCTGTGGACCTAAGACTTTGGACCTCGAACTG -CGGCCCTTAGATCTCATGCTTGGGCTCTAATATCCTGGCCCTCTAGTCCT -AAATCTTTTGATCGTAGTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCT -TTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTT -CAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCA -GGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGG -CTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAAGCTTTCAGGGT -TTCAGGGTTTCAGGCTTTTAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTT -CAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCA -GGCTTTCAGGCTTTCAAACTTTCAGGCTTTCAGGCTTTCAGACTTTCAGG -CTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGGCT -TTCAGGCTTTCAGGCTTTCAAGCTTTCAGGCTTTCAGGCTTTCAGGCTTT -CAGGCTTTCAGGCTTTCAGGCTTTCAAACTTTCAGGCTTTCAAACTTTCA -GGCTTTCAGGCTTTCAGACTTTCAGGCTTTCAGGCTTTCAGGCTTTCAGG -CTTTCAGACCACAACTAGACCGGCAACACACGTGTTGTCTAATTACTCAC -CTCTTTGCCGGCGCTCTATGCATATTTGATGGTAACTCGATTGTCTTTGA -AGCTATCACTTTCACAGCTTCCCAAGTTTCCCGAGCTGTTGGAATGATCT -GAAACATCAAAAATCATCATCAAAAATCGTGGTGAGACCCAAAATTACCT -GATTCTCAGCCAGCAAGAATCCATCCCAAACTTGCTCTTCGGGTCTCAAC -TCGAACAGGAATGAGTACTTGACGTGGGCTTTTCCCTTTGCCCAATCTTC -TGAGCCACCGGATGCGGGGTCTGGAAATATTTTGAAATTTTATACATAGG -AGCCTTAAGAAATAAGAGCTTACAAAGTGTATCTGCACCGGTTCCAACTT -TGTACTGCGTGTTGTAGACACTATTCAAAGCCTGAGCTGCTGAGAGGGCA -GTGGATCTCTGAAATGTTTAGAAAATATGACCATGACTTGGGCAAACAAT -TCCCGCATTTTTGTAGATCACACCGTAATGGGATAGCAAAACACGTGGTG -CCAGAGTGTCGCATTTCGTTTTGATCTACGTAGATCTACAAAAAATGCGG -GAACTGATTTCTCATGGTTAAGAACGTGCTGACGACAAATTTTTTTGAGC -GAAAAATTCCCGCATTTTTTTGTAGATCAAACCGTAATGGGACAGCCAGG -TACCAAGTAAAAAATTTACTCACCAAATCATTCAAATCATTTGAATAAGT -TCTGACTTGATGGCCGAACGGATACATCAAAATTTGAGAGTACGAGTGGA -AGGTGAGGAATGTCGAAATACGGTGTCGCTGCACGAAATCTCTAACCGCC -GCAGTCTCGGGCTCCGAGAAGGCGTAGGCTCCCTGATAGATTTCCGAGCA -AGGATCAGTTGATGAGCCGACTTGTCCGAAGAACCAGTCAAAGTTTCGAT -TGAGGTCGACACCTTGACAGCAGGTTGTTGTGGGAGGTTGGAAGAGTCCT -GAAAGGTTTTTATTTTTGAGATTTTTAACTTTCACGGAGAATTGCCAAAA -TCTTAGTTTTCATAGCCTGTGTGACATTATTTGGGCGTAACTAAAGTCCA -GAAAGCTTATGCCTTGTGCTGATGAATTTTTGCAAAAATTGTGCCCAGTT -TTGCCACTTTTTAGTGGTTTTTGATGGGTTAAACCTAAATTTTCTGAATT -CAAGTTTTTATTTTTTCCAAATGTTTTTTCAGCCATCGAATGGCTGTCCT -TTTTTTCGGGCAAAAAAATAATTTTTCTGAAACTATTTGAAACAATTATA -TTCTAAAAAAAAGGCAATTTTTTAAATTTTTTCTAGTAAATTTTGAGTCC -TCTAGCTACAAAATAAACCATTTTAGATGAGTTTCAAAAATGTGCATTTC -TACAAAAATTGCCCAATTTTTGCCACTTTTTGGTGGTTTTTGATGGGTTA -AACCTAGATTTTCTGAATTCTGCGTATATAAATTACACGTTTTCAACAAA -TTTAGACATTTTTTTTATTTTTGCCCAATTTTTTTCCAGCCATCTAATGA -ATATCCTTGTTTTTAAGCAAAAAAAAATTTCTGAAACACAATTATTATGA -TCCAAAACAGGGGTGTGCGGCAAATCTCAAAATTTGCCGAGCACGGCGAA -TTTGGCAAACGGCAAATTTGGCAAATTCAGCAAATTTGCTGAGCTTTACA -AACTCCGCAAAAATTTGATACTTTTTGAAGCACCTAAACTACTAATTTCT -GAACAAAAGTTCAAAATAACTTGATTTTGTGCCATTTTTCTAAATTTTTG -GAAATCAATAATTTTGTCAATAATTTTGGTTAAAATTGTATTGTCAAATT -TTTGACGCGGGCGGCAAATTTCAAAAATTTCTGAGCTCGGCAAACGGCAA -ATTCGGCAAATTTGTCAAATTTGCCGCACATTTTTTTTTGGTTCAAAACA -TAATAAAACACTCCAAAACATTTTAGATTTTTCATAATTTCCGGTCGAAG -TTTTTGCAAATTGCTAAAATTTTGAAAAATATGAGTATTTGAGGAAATCC -AAAGCAATGCCGCATGTTCCGACCCCTACAATGTTTTAATACAAATGATT -AAAACAAAATTACAGTAGACAAAATGTAGAAAAAAAATTATTTTTGGTCG -ACTTCCAAAATTATGAGTGGCAAAAACTTTGTAATTGTCACTTTTTGACA -GTAAATAAAAAATTTTAAGAATTTTTTTGAAAAGTTTTATTATGATATTC -GGTCATTTTGGGACCAAATGAGTGGTTTTTAACAATTCCGGCACTGGCGC -TAGTCCAGCAATTGCCGTAATCTTAGTTTTCATAGCCGACATTATGCGGG -CCTAACTGAAGCCCAGAAAGCTTGTTTACAAAAATGAGCAAGCAGAAAAA -GATCAATCTCCCCAACAAACCTGTTGCCTGTTGAATACACTTTGGTGGTG -ATCGATTCTTTCTCCACAGTCTGATCTCCGGATCATTGCTACTTCTACTG -TACTCATAACCATCCGGATTCAGCAGTGGAACAATATACCATTCGAGTTG -ATCTACGAATTGCTTGATTTGAACATCTTTGTCGTACTGGGTGACCAGTT -GGTGAATGAAATAGAGTACTGTCGATGGTGACACCCATTCACGAGCATGG -ATTCCTCCGTCCACCCAGATGCCACGTTTCGTACCTCCGTTACGCTTGTT -GGTGATCTGGAATTGAGGAAAATTGGGGTGAGATGGGATCACTAAATTCT -GAATCTAGTTTCTGTGCTACTGTGTGTTACGTTTTTTGCGCTCCATTGGC -AATCGCCTGCCCATCAAAAACCGTCAAAAAGTGGCAAAACTGGGCAATTT -TTGTAAAAATTCACAATTTTGAAACTCCTCTAAAATGGTTTAGTTCGTAG -CTAGAGGACTTAAAACTGATTTTTGAACCCTAAAAATTGTCTAAATTTGT -TGAAAACGGGTAATTCTTGTATGCTGAATTCAGAAAATCTAGGTTTAACC -CATCAAAAACCATCAAAAAGTGGCAAAAGTGGGCAATTTTTGTAAAAATT -CACAATTTTGAAACTCCTCTAAAATGGGCAATTTTGTAGCTAGAGGACTC -AAAATTAACTTCCAAACTCTAAAGAATTGTCCTTTTTCAGAATATAGTGG -TTTCAATAATTTTCGAACAGAATTTTTTTTGCCCAAAAAAGGATGGCTGA -AAAAAATTTTGGCCGAAAAAAAAACAGTTTTACACTGAAAGCCAAACCGC -GACGCGACACGCAAAGCTCGGTAAATCGACCCCAGCCGTGGCCGAGTTCA -AATAGCCAAATTCGGCAAACTCTCACATTTCAAGCTATGTATTTCAAGCC -AGAAGCGCGTGCGATTTCTCAAAAACCGGCAGCTCAGTTGCAGGAGGACT -TTACGAAAATTTTGAAAATTCCAAGGTATAATTGGTAGGTTTTTCGGCAT -GTTGCATGGTACTTAAAATGTTTTTTTAACTTTCAAAAGTGGCTTTTATT -TTGGTTCTTATTGCAAGCCTAATAATAAAAATACTATCCACGTTTTAAAT -GCTTCCATGGTAGGCAGGCGCGGTTTCAGGGCCGACATGGAAGCCCTACA -TGTCACGGATTTCTGGCTTTCCTCAGAAATTGAAATGGACTAGTTTTTGC -CGAACTAGGCCAGGCCATATCTGGGGTAGATTTACGGCGCGTTGCATGTC -GCGTCGCGGCTCGATTTTAGTTGAACAACTAAATGCATTTGTCCGAGTGG -AGTACACGACTTTCCCACGCGGGCGATTGCCAATGGAGCGCGAAAAATTC -AATGAGGAGGGCCAGAATCCCGTGATCGTCCGAAGCAAAGTTAAAACAAC -AAACCTTAATCAACGGGATCTGCCGTCCTTCGTGAGTCGTTCCGATTGGC -TGCACAGACACAAGCTCCGGATAAGTGATGGCTAATGAGTTCAGGTAGTT -GATAACATCAGCAAACGAGTGATATTGTGCAAGGTTAAATTGAACCTGCA -ATAAGTTATCATTGAACTATGTATCATTGAACGTGGTGTCAGAGTGCCTC -ATTTTGGATTGATCTACGCTGATCTACAAAAAATGCGGGAGAAGAGACTG -ATTTCGAATGGTTAAAAACGTGCTGACGTCACATTCTTTTGGGCTAAAAA -TTCCCGCATTTTTTGTAGATCAAACCCTAATGTGACAGCCTGACACCACA -TGTATTCACTCACTTTCTGCTCCCTCCAATCATGCAGTCGAACTTGTTTC -CGAAGCTTATCCCGCTTCTCCTTCTGCTCGACAATCACTCTGAAATCGAT -GAAAAGATTGTAAGTTGGGCTTAATAGTGTCCCCCCACGACACCCATCAC -GCGTAACGAGCCGTGACGCGTTTGAATAAAGAGGGTATTTGGACTTGTGA -TCCCCGCGAAAACCTGTATCGCACGTGATGCCAGGGTGTCTCATCACGGG -TTGATCTACAAAAAATGCGGGAATTTTTTGCCCAAAAATGTGACGTCAGC -ACGTTCTTAACCATGCCGAATCAGTTCCCGCATTTTTTGTAGATCTACGT -AGATCAAGCCGAAATGACACACTCTAACACCACGTGGTATCGCCGAAAAA -CTCACTTCTGAACGTCATCAATCATAACGGAATGCTTAATCGAATGATCA -TCGAGCTCTTTCATAAACTGCTGAGTTTTCTCATCGGATATCATCACATG -AACCTCCTTGCCAGCTTCCGACGGGGATTTCCAAAAATCTAGCTGAAAAT -TTTAGTGTGTCTGAAGCACCCTTATCAGTTCATATTATATTTCAAAATTT -TTCTCTAACCCCTCAAAACCGTACTCTACATCGCCGTTCTGGCCGAGTGG -TCTAAGGCGCTGCGTTCAGGTCGCAGTCCTCTCCGGAGGGCGCAGGTTCG -AATCCTGCGGACGGCAGATTTCTTTTTTGAATACTACTCTTCAAACAATG -CATGATGAAGAAGAAGAAGAAAAAGAGAAGAACGTATTGGCTTTTCCTTT -TACACTTTTGAAATCCCTAGGAACAGGTTATAAACAGCGATGTAACATGA -AAAGCAGCAGTGAGAGTGATCGAAAACGAGCTGATTATGATTTGTTCAAT -TATATGACACCGCTATTGTAATGGTTGGTTTGTTGCGTGGAACATCATAC -CTTTACATCGTTTAAATACAAATTATGAAGAATGTCTACTTGATCTTGGG -TCGTCGGCTGCACCCTCCATACTGTGAATTTTCTGAAAAATCGAGAGTTT -ACCGGCTTTTGGGGGAGATTTTACCATTGACTTTTGACTTTTTGGAGAGA -TCTAAATCTAGTAGATCATGCGGCGGTTAGGTCTATTTGAAATAAAAAAT -AATTGATCTAGATATGAAACATGGAGATCTAAGGGTTTTGGTAAAGTTGA -GTAGAATTTTTAATTATTTTTTTGAAAATTTGTTTGCAACATTTTACAAA -AAAAGACGAATAAATATTGACCAAAAAAATTTTTTTCAATAAAAAATGTT -TAAAAATTAACCACCTTTTAGCTTTTAAAGGTGGAGTAGCGCCAGTGTGG -ATTTTGTCTAAATACACTTATTATGAACCAAAATGGTCAAATATCATAAT -AAAACACTTCAAAAAATTTCTTTATTTCAGATTTTTCATAATTTCTGGCC -AAACTTTTTGCAAATTTCCAAAATTTTGAATGTCGCAGTTTCCGACCCCT -ACAATGTTTTAATACAAATAATTGAAACAAAATTACAGAATAAAAAATGT -AGAAAAAAAATTTTTTTTTTGGTCGACTTCCAAAATTATGAGTGGCAAAA -ACTTTGTAATTGTCACTTTTTGACAGTAAATAAAAAATTTTAAGAATTTT -TTTGAAAAGTTTTATTATGATATTCGGTCATTTTGGGACCAAATGAGTGG -TTTTTAACAATTTTCCCACTGGCGCTACTCCCCGTTTAAAGTTCTATGCT -TTTTAAAACTCACGTTTTTTTTTATGAAGTCTATTTTAAAAAATCTGGAC -TCTCAGTGGACAGTTCAGCATTTTTCGAAATTTCAGAAATTTAAAACATA -AGTCGGAAGTGGTCCTAAAACTTCAAAAAAATTCTCACAATATGTTTTTT -TGATGAAAACAAACTTATATAGTGCCAAAATGACCAAAATTTTTTTAAAA -ATAATATTGAAAAATCTTTAAAAAATCTCTTCTGGTTTTTATTTATTTTT -AAAAAATTCATATTGAAATATTATAGTGCTTTAGATTGCTCGGAAAAAAT -TCCACAAATTTTTTAATTTTTCATAAGTTTTATAATGATATTTGGTCATT -TTAGCTCTCTCGGGTAATATTGCAAACCCACGTGGTGCCAGGATTTCCCA -TTAAGGTTTGATCTACAAAAAATGCGGGACTTTTGCTTAAAAAGATGTGA -CGTCAGCTCATTTTTAACCATGCGAAATCAGTTGAAAACTCTGCCGCATT -TTTTGTAGATCTACGTAGATCAAACCGAAATGAGACATTCTGACACCGTG -TCCACCTTCAAAGTTAGTAATTGCATGAACAAAAAATTCTGAGAATGCGT -ATTGCACAACATATTTGACGCGCAAAATATCTCGTTGCGAAAACTACAGT -AATTCTTTAAATTACTACTGTAGGTCGATTTGCAGGCTGGATTTTTTGAA -AAAAAAATGAATTAAAATTTAATGGAATATTTCTATCTCTATGTATTAGA -AAATAAGGCCCGTAATGAGACGAGCGGGCCTGCCTACCTGCCTGACTATA -GAAGGCCGCCTTAAAATCAGGCAGGTAGGTTTTAACGCCTAGCCTACAAT -AAACATAAAGAGAAATGCCTAAAATAACAATAACTTTCCATTATCCTTTC -TTATCGTCCTCCCCGGCGATCGCCTAAGATCATAGATAACAACTAGCCGC -TTTCGGTCATGCAATTATTATATTATAATTGATGGATGGATGGGGGATAA -TCCAGAGAAAGGGGAAAAAGAAACTTAGAATCCTAGAAAACAGGTTCCCC -TGACTCAAACAAAAAAACCTACTTTTGATGTGCCAACACGGATGGCACGA -CGAGACCGATGAGGACGATGATGTTCATCATCATCATCTTCATCGTAGTA -AAACTTGGGGGGTGATGAGGGGCAAAAGGATGCCCTCCGCGCGTCAAGTG -TTCGTTGAACAATCCGACGCAGACGGTTAAACAAAGCAACACAGTGGTGT -CTCCGCCCAACTTCCGCGCGTCCGCCGCCGCCCTGTGTACTGTCTTGTCC -TATCCTATCTCTCTTTTCTCCACCCCGGCTTGTGTGTGAGATTCTTCTCA -TTACTAGAAGAAGGTCTCTAGTAGAAGAAGAAGAAGAAGAAGAAGACGAC -GATGGAGAAGAAGCTGAAGGCACGACGCACTGTTTGCGCAACGATGTTTG -TTTTTGCGCGCGCGAGCGCCGCATTTAAAACGTGTAAATCGGTTTCAAAA -GCGCGCGCGCGCGGTCTTCTTTCTCCGCTTGCGCGCACGCATTGACAAAA -AACCGAAAGGTGCAAAAGTGAAGAGGCCAACTACTTTCGTCCTCTTTGAG -CACCTAATTGTGGAAAGCTTTTGCTCTGATGTGAAATGAAGTTGGGTAAG -CTATTCCTGTCTGGGTGATGTTTTCAACTTCCGGGGGCATTGTTGGGAAA -GTGAGGACCAAAATAGGCCATAAAAAATGAAGATATACATGCTTAGGCTT -AGGCTTAGGCTAGGCTTAGGCTCAGATTCAGGCTTAGGCTTAGGCTTAGG -CTTAGGCTTGGAATTAGGCTTGGCGTCAGTGGCGAGCGTGAGCTCGCCAC -TGACGCTATTTAAGCTTGGGTTTATAGCGTTTTTTTAATTTTTCAAAGGG -TTCCCGTCTGCCGATCAAAGCGAAATTTAACAGAGAGTCGTATAGGCCGC -CAAGAAGCTGAAGTTTCAAATTGATTTCATTAAAACTCGCTTAGGCTTAG -GCTTAGGCTTAGGCTTAGGCTTACGTTTTAGCCATATGCTAGCTGATCCG -GAACATATTTTTAAAAATTGCAATATTTGACCAAAAGCTGTATTTTTCAA -AAATTCAAAAGTACGGTGAAATCATATGAAGTGCTTCTTTTTCTTTCATT -AAACTGTTCAGAATTGTCATTTTTACTAGAAAATACCAAAAAAATATGCT -AGCTTGACCGGAACATATTTTAAAAAATTAGAATTTTTGACCAAAAGCTG -TTTTTTCAAAAATTGAAAAGTACTGGAAAATCATATGAAGTGCTTCTTTT -TTCTTTCGTAAAACTGTTCAGAATTGTCATTTATACCAGAATATATTAAA -CAAAGTATGCTACCTAATCCGGAACATTTGTTTCCAAAATATTTTAAAAA -AAAGATTTAGCGGCTCTGACTAAATTGTTTGTTCGTTTTTTCTGGACCCT -TTTTTCCCCTTTTTTTGGGTGAAAAATTTTGTAAAAAATTTGACCGAGGT -GTAGAGTTGAATTCATCAATTTTTGACATTTTTTGAGTACGGGCACATGA -AAACGAAATTTCCAAAAACGCTTATTTCTCGGGATATAGTTCAATTCTAC -CAAATTTTTCTTTGCAAATCTGCTAATTCTACAAATCTACTAACCGAGGT -GTAGAGTTGAACTCATTTCCAAAAAGAAGTAGCAGTCCTGAAAATGTTTT -AGTGAGTCTTCTCATTACTCTAGAGCCCGAGCCAGTAAAATTGCTCCAGA -AGTAGTAATTTATAAATTTTTGATGATTTTATGCTGTCCAATGATAGAGA -AATTGTTAAAATTTTCAGATCAAATTGGAATTTTCACAGCCAAATATTTT -GGAAAATTTTCCACAAAAAATTGGGCGGAAAATTGGAATATTAATTCGAT -TTAATTCGATTTGGAGCAGTGTATAAATTCAAAGTTTCCTCCCTTAACAG -CCATTCAAATGCACTTTTTTCTTCGTTTAGTTTTTCTTATATATGGCCTC -CAGGCTCTCACCAAGTTCCGTTTTACCGGAGAGTTTAAGTGCAAACATAA -ATTCCTGAGATCCCATGTTGTAGTTTATGAAGACGATGAGGTGTTGTGAG -TAGAAATGAAAAATGAGAAATGTTGTATTTAATATTATAAATTGTTTCAG -CGACAACGTTATCAGTAAACACCATTACGTGTTCCATACAAATGCACCAC -ATATGTATCTCGTTGAGGCTGAAGATACCAATGACGGATTGCCAAAGTTT -TTGGATGTATTACTTTTTAATTTCCCGCTTTTTCTCTAGTATTTCTCAGA -AAATTTGAATTTCCCGCCAAAATTTTTTATCAGAAAATTTGAATTTCCCA -CCAAAATTTTTTATCAGAAGATTTGAATTTCCCACCAAAATTTTTTCTCA -GAAAATTTGAATTTCCCACCAAAATTTTTTCTCAGAAAACTTGAAATTCC -CGCCAAAAACTTTTTCTCAGAATTTTGAAATTCCCGCTAAAAAATGTTTC -TCAGAAAATTTGAAATTCCCGCTAAAAAATTTTTCTCAGAAAATTAAAAA -TCCCCGCCAAAACTTTTTCTCAGAGAATTTGAATTTGCCGCCAAAAAATT -GTTTTCTCATAAAATCTGAATTTCCCACCAAAATTTTTTCTCAGAAAATT -TGAAATTCCCGCTAAAAAATTTTTCTCAGAAAATTTGAATTTCCCGCCAA -AAAATTGTTTTCTCATAAAATCTGAATTTCCCACCAAAATTTTTTCTCAG -AAAATTTGAAATTCCCGCCAAAAAGTGAACATTCTAGGAGTTTGGCAGTT -TACCAAAACCTTGACTGACCATTTTGGAAAATCGAATAACCTCTTAAATA -AAAACTCTAACTTGTAAAAATTTAAAAATTTAAATATATAGCTTTGCAGT -CCTATTTCGAGTTATACATGATCATCGTCCACGATTGCACGGATAATGGG -AAATACAAGTTGTTGACAGTTGACTTGGGATCTTATTATATCAAGGATGG -GTAGGTACTTTCTACAGGGCAGGCTAGGGCTTCCATGGGAAGCAGGAGCG -GTTTGCCGGCTTCTCGCCTGATTCCTGCACTTTGGCAAAAAGTCAAAGCC -TCGATGCTCACACATAGGGCTGGCATATTGGACGTCCGGTTTTTTGAAAT -TTTAAATTTTTCCGAGAGGTAGTTTTTTTTGTACGGCGGCCGACAATTTC -CGAGTTTGGCCACTCATGATAAAATTATATGATTAAGTATAGTGAGTGGC -CAAACTCGGAAGTTGTCGGCCGCCGTAAAAAAAACTACCTCTCGGAAAAT -TTTAACATTTCAAAAAACCGGACGACCGGACGCCCAATATGTCAGCCCTA -CTCACACCAAATAGTACTATAAGCGGTTTTTTTTGCCGCAGCCGACACTT -TACGGTTTCCACGCCGCACTGTACAGAAGGCGCGGCCCGAGGCAGTTGTC -AGGCGTTTTGGCGCCTATATGCAAGCTCTAGGGCAGGCATTTCTGTTTTC -AAAAAAATGAATATTTTCAGGCAGTACGATGAAACACGCAACATTGATCT -GAACAATGCCGGTGAATGGACAAACGAAGTAATCGGAACAAAGGCGATGG -TGATGTCCAAGATATTTATTTTCAATGTTTGATAAAATTGTTCATCAATA -TTCGAGCCTACCTGCCTACCTGCCTACAAGGTAGCCTACATATATTATTT -TTCCTAATTAACAAAAATATAATTAAAACATGATTAAGATTTTCTGAAAA -TGAGCAAAAAGTGTTTTTAACTTCCACTTTTTGCCCAACAGGTTTAAGAT -AGGCATGTGACAAAGCCTACATTCAAGGCAACCTACGCCTGCCTCGGTAC -ATGGTGCATCGACCAATATTTACCTCTTAGCTTCGAGAGCTTATATCTCG -GTTACATTTTGCTCTATCAAAAAATGGCCAACTGAAAAACTGTTCTCCAA -TGCTTTTTCTACAATTTTGTGGTTAAAATTTTTTTAATATCTTGAAAACT -AGCGAAAATATAAGCCACCAAGTCGCGCGCCGCCCCCCGAGAAAGCAATT -CCAACCCAAGTTTATTGCAATAAAAACCAGTAGAAACGAAAGAAATGAGG -TTGATTTTGGAGACTTTTCAGGTGACACGGGGAGCTTTTACATTGTTGGC -ATTATTCAGATTCGATTGAGAAGGAGAAGTCGTGGGGAGGCTGAAAAATG -TTCTAAAGTTGTTGAAAAAAAAAACAAATCTGCATTTTTTAAAAACCTGA -TTCTTAGACTTCCATCCATTGCCATAAGTGCACAGAACAGTCTGTTGCTC -TTGCTCTTTGTGCTCCGTGTCCTCGGAGCCATCATCAACCTTGTCTGGAA -CTGTCGGTGTTGGCTCAGTTGACGGAGCAAATGAGGAGGATGGTGTCGCA -GATTCTTCAGTTGGTTTGGGAGATGATGGCGGAGCTGGCTGAGGTGGAAT -TGGAGATGCTCTTTTTTTTGGGGTTACTGCAGACTGTTTGCTCTTCAAAC -TCTTGCTCCGCGATTTTGTGCTCTTTTTTGTTTTCTTCTTTGGCTGCTTT -TGTTGCTTCTTGCTTTTTATCTGAAAATTAGAGTTTCTAGGCAATCAAGC -GATTTTCTAGGCCACCAGACATATATTTAGCCATGTCGGAATTTTCTAGG -CCATCACAGACAGTTCTAGGCCATATAGAAATTTTCCTAGGCCACCTAAA -ACTTTTCTAGGCCACCAACAGTTTTCTATGACCGCGATTTTTGCTAGGCC -ACCAACAAAAGCAAATAACACATTTTCTAGGCCACCAACAGAATTTCAAA -TTTTTCTAGGCCTTTAACTCACATATTTCACAATGGAAGCGGCGGCGAAC -ACGATGAAGGCTACAATGAGAATGCCAATAATTATGAATATCACTACTTT -GGTCCATGGCGTCGATGATGCTGCAAAAATGGAGGTACAAATATGCAAAC -GCGCTCTACCGCACTACCAGTGCGGTAGAGCGCGTTTCAAACTAACAGCC -AGAAGTTGGCGCCGGTGGTCGCTGAGTGGAGGTGGACATTATCAGGAAAT -GAATGAGAAAATGGAGAAATTTGGGAAAATTGATTAGAGACGTGGGATTT -TTTTTTAATTTTTATAATATTTTTGAGTAGGGGGAAGGGGTGAGGGTCAC -GGAAAATACCAAAAATTTGTGATTTTTCCATTAAATTGGAGCAAAATTGA -CACCATACCTCGTGGCCTAGAAAACTGCAGAATTTCTAGGCCACACACGT -TACGTCATAATTTACCTGTTAAACCAGGTAACCAACAATCAAATCAAGAG -TAATTAATCATCTCCTATCTTCTTTTATTTCTCCGTTCCTACTCCCAATG -TTTTTTTTTTGTAATTTGTGATCACAAATTGTTGCATTTTGTAGTACGCC -ATGTACGTCTGTGTACTACTTTTTTCTGAAAAGAATACAAAAATGTTCGC -TTTCAGGAAAAAATAGTGAGAGGTAGAAGAAAATTACGGGGACTAGAAAT -ATGTAAAAGTTCGACAACGTAGGCAGGTAGGCAGGTAGGCAAGTAGGCAG -TTAGGCAGGTAGGCAGGTAGGTAGGCAGGATAGTAGGCTGCCAGGCATAA -TAAAGATGCAGGCACGTAGGCGGATGTTGCAGGCATGAGAAGTCACGGGG -GTAGGCAGGCATGTGGGTATGTAAGCAGATGTAGGTATGTTGCAGTCATG -ATGAAGGCACGTGGGTAGGTAGGTAACTAGTTAGGCTGGTAGGGAGGTAG -ACAGGTAGGCAGGCAGGCAGACGCGTAGGAAGAGTTAGCCAGGATGCAGG -CACGTAGGCAGATGTAGGTATGTTGCAGGCATGCTGAAGTCACGTGGGTA -GGCAGATTGGTAGATGTGTACGCAGAGTAGGTATGTTGCGGGTATTATGA -AGGCACGTGAGTAGGTAAGCAGGCAGGTAGGTAGGCAGGCAGGTAGGTAG -ACATGTAAATATGCAGGCATATACGTAGGGAGAACAAGCCATAATTCAGG -CACGTAGGCAGATTTAGGTATGTTGTAGGCATGATGACGTAACGTGGGTA -GGCAGATAGGCAGGTAGGCAGGCTCGTAAGCTGGCAGGCATAATAAAGAC -ACATAAGCAGGCATGTAAATCTGCAGGCAGATACGTAGGAAGAGCAAGCC -AGGATGCAGGCACGTAGGCAGATGTAGGTATGTTACAGGCATGATGAAGG -CACGTGGGTAGGCAGGTAGGTAGGCAGCCAGGCAGGATCGGAGGTTGGTA -AGCATAAAAAAGACAGGTAGGCGGGTAGGCAAGCATGTAAATGTGCAGGC -AGATACGTAGAAAGAGCAAGCCAGGATGCAGGCACGTAGGCAGATGTAGG -CATGTTGCAGGCATGATGAAGGCACGTGAGTAGGTATGCAGGGAGGTAGG -TAGGCAGGCATGCAGGCACATAGGCAGATGTAGGTATGATTCAGGTAGGC -AGGCAGGTAGGAAGACTGAATGCAGGCGTGTTGCTAGGCAATAGCGCCCT -TTCCTTGTTATGACAATCTCGATAATCTAATAATAAGCTATTCAATCATA -TCACTGCGCCGATACACAAACTACCTGTTTTTTTGAGTATGCGTCTCGTC -CCGTCTGCCCAAAAGCTTCTACAGAGTGATTAGACGGTATAAGGGGGAGA -GATAGGATAGATTTCAATCATTCTCACTTTTTTCGTCCCTTTCTCTGTCT -TCCTTCTCCCTTTTTTTACAGGGCGCTTTTCCCTTTTTCGTGTGTGTGAA -GAGAGAGAGTGCATACAGGTGTAGAGGACGCCCAGACATCGAGACGGAAC -AGGATTCTTCATCGTCTTCAGCTATTTGGAAGAAGGAGTAGAAGGTGACG -GTGTGTGTTTGGAGACGTGTAATCATCATGTCTTATAACACTTCCTTGCT -CATTTTTCTCTGCTTCTCTGCCGTCTCTCTATCCACACAGTCTTTCGCCG -TTTATCGATTATTACCCAAATCACAGACGGATTTTCAAGCTATACAGAGG -TTATACAAAAATGCGACGGATCATGATGTGAGTTTTGTTTTCGCATTTTT -GAGCAGATACAATTTCTAGGCCACGAAAAATTTTTCTAGGCCGTTGAAAA -AATCACTAAGTTTTCTAGGTCACAATTTTGAGCAAGTTCTAGGTTATTAG -ATTATTACGCCATGGTGCATTTTTCTAGGCCATCAGGAAATTTTGCAGGC -CACCATGAGTTTTTGATGCAGTTGAACTAAGTTAGTGGCCTAGAAAAACC -TTTGTTAGCCTAGAAATATTTTCGCCGGCCTAAACACATTTTTGGTGGCC -TAGAAACACTAACTTTTGGTAGCCTAAAAATTTTCTGTGACCTGGAAACA -TTGTTGGTGGCCTGAAAACATTTTTGGAGGCTTAGAAATATTCTTGGCAA -TTTGAAAACATTTTTGGTGGCCTAGAAATATTTCTGATGGCCTAGAATGT -TTTTGTGGTCTATAAATAATTTTGGCGGCCTAAAAAAATTTGGAATGGCT -TAGCAAAATTTTTTTGGTGGTCTACAGCCATTTTTAACGACCAAGAAACA -TTTTTGGTGGCCTGAAAACATTTTTGGTGGCCTAGAAACATTCTTGGTGG -CCTGAAAAAACATTTTCGGTGGCCTAGAACCATTTTTGGAGACCTGGAAA -TGTTTTGGTGGCCTAGAATATTTTTGGTGGCCTAGAATATTTTTGTTGGT -CTAGAAATATTTCTGATGGTCTAGAATGTTTTTGTGGTCTATAAATAATT -TTGGTGGCCTAGAAATATTCTTGGAGACCTGATAACATTTTTGGTGACCT -ATAAATATTTTTGACAGCCTAAAAATTTTCGGTGGCCTAGAAATATTTCT -GATGGCCTATAATGTTTTTGTGGTCTATAAATATTTTTAATGACCTAGAA -ACATTTTTGGTGGCCTTGAAACATTCTTGGTGGCCTAGAAATGTTTTTGG -TTTCCTAGAAACATTCTTGGAGACCTGAAAACATTTTTGGTGGCCTAGAG -ACATTTTTAATGGCCTAGACACATTTTTGGTGGCCTAGAAATGTTGCTGA -TGGCCTATAATGTTTTTGTGGTCTATAAGTATTTTCGGTGGCCTAAAATA -TTTTTGGTGACCTAAAACATTTTTGGAGACCTGGAAATGTTTTGATGGCC -TAGAAATATTTGTGCTGTGCTGAAACATTGTCGGTGGCCTAGAAATATTC -TTGGAGACCTGAAAACATTTTTGGTGGCCTAGAAAAATTTTTAGTGACCT -AAAAACTTTGGGAATTACCTGGAACCAATTTTGGCGACCTAGAAAAATTT -TCCGTGGCCTAAAAATTCCCAATAATTAACAAATTTTTAGTTAAACTTCT -GGAAAACGGGCAAGGACAAGCACGGGTTTTGGGATGTGATGGTGGATATG -AAGAATTCGAAATATTTTTTGGACTTTCTACAAGTAAATGATATTTCTTA -CATAAAGACGATTGATGACGTGGAGGGGTGAGCTTTTTCTGAAATTTTGA -AAATTACATAAAGAATATGTGCTCTATTGATAAACTGTTAGGATCACCGT -AAATCGACAAGAATCTCCGTAAATCCACAACGGCCCCATCTCAAAAATTC -CTAGGCCACACGTGTGACGTCATTTTTCTTCCAGATTAATAACAAAGCAC -GAGAACAACAAGACCCTCTCGAACATGTTCCCCCGTCTGTGGGATGACTC -CTCGTCTGCTCACTATGACTTCCACACCTATGGATCCTATCAGCGAATGA -CTGATTGGATGAAGCAGCTGGTGGTGAAGTATCCAAAGATGGTTCAGTAT -ATATCGATTGGAAAAACTACGGAGGGCAGGAATATCGATGGAGTTGAGGT -AGGTCTAGAAGGCTGCCTTAGGTCTAGGTCTAAGTCTAGGTTTAGGTCTA -GGTCTAAGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGG -TCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTC -TAGGTCTAGGTCTAGGTCTAGGTTTAGGTCTAGGTCTAGGTCTAGGTCTA -GGTCTAGGTCTAGGTCTAGGTCTAGGTCTATGTCTAGGTCTAGGTCTAGG -TCTAGGTCTAGGTCTAGGTCTAGGTCTAGATCTAGGTCTAGGTCTAGGTC -TAGGTCTAGGTCTAGGTCTATGTCTAGGTCTAGGTCTAGGTCTAGGTCTA -GGTCTAGGCCGATTTCGATTTCTATGTGTATGGCCTATAGTGATTTTCAG -ATCGGCGGAGACTCCCGCACCAAAAAGATTTTCTGGATCGATGGAGGTAT -TCATGCTCGAGAATGGGCGGCCCCGCACACGGCTCTCTTTTTCATCCATC -AGGTATGTGATCCCGCCCCGTCAGAAAAAAGTGTGTTCCGATTAGTTCCG -CTTGGATTACACAAATGTTGGCAGAGACAGAAAAAGGGAAAACTTGATAA -CAAATGGGTTGGAAAAAACGTAATCGGATGATGCAATCGCGCTCTATTGC -ACTACCTCAACAAAACATTTTTTTGCAGCTTACCTCCCGCGCAAACGAGC -CCGGAATCAAGAAATTGCTGAACGAGATCACATTTGTAGTGGTTCCCTGC -TTGAATCCAGATGGCTATGAGTTCACGAGATCCTCCACAAATCCACATGT -AGGTTGGGGTAAGGTTACTGTACCCCCCCCCCCCCCCCTCCCCAACTCAA -AGGCGCAAGCACTCCCAAATTTTTTGCAGGTTCGTCTGTGGCGTAAGAAT -CGCTCGAAAATGCAATGCCGTAAGGACATTTGGGGACGCAATCGCTGCTG -TCGCGGTGTCGATTTGAATCGTAATTTCGATTTCCACTTCAGAGGTGAGA -GAGAGAGGGTGAAGTGGTTTTTCTCAAAGTGGACTTGAAAATTAAGGGTC -AAAGTTTTAAAAGAAAACTTTGAAAAAAACTTGGGAATTTGTTCACGAAT -ATACGAAGTTGCTGAAAATTTGTAAAACGTTTTGGAACATTCTAAAACTA -TTTGAATTTAAATAATTTTTTAAACATACCAAAAAATCATGGATGTTCTC -AAAATTCACGAAAGTTTCGAAAATTCCCTACAGTACTCCTGAACTAGCCC -TACAGTATCCTTAAAGTACCCTACAGTACCTATACAGAACTCCTGTAGTA -CCCTTACAGTATCCCTAAAGTATCCCTACAGTACCCCTACAGTTTCCCTA -TAGTACCCCTACAGTACTCTCGCAGTATCCATACAGTAGCCCTACAGTAT -CCCTACAGTACCCCTACAGTATTCCTACAGTACCCCTACAGTAGCCCTAC -AGTACCCCAGTAGCACCCTTACAGCATCCCTAAATTATCCCTAAATTATC -CCTACAGTACCCCTACAGTACCCCTACAGTACCCCTACAGCATCTCCATA -GTACCCCTATAGTAGCCCTACAGTATCCCTACAGTTCCCACACAGCCCTT -ATAGTGCCTATACAGAACCCCTATAATACCCCATACAATACACCTACAGT -ACCCCTACAGTATCCGTAAATTACCCCTATAGTACCCCTACAGTACCCTG -ACGGTACTCCTACAGCACCCCTACAGGACCCCTATAACATCCCTACAGTA -CCCCTGCAGTACCCATACGGTTTCCTTACAGTATCCCGTGAGTATCCCAA -CAATACTCTCACAGTACTGCTACAGTACCCCAAAAGTACCCCTACAAAAC -CCCTACAGTACCCCTACAGAACCCTCACGGTACCCTACCGTATCCCTACA -GTACCTGAAGCTCCAAAAATTTCCCCCACTTCCAGAAAGCGGTACAAGCG -ACGACCCGTGCTCCGAGATCTACCAGGGACCCTCTCCATTCAGTGAGCCC -GAGGCAAAAGCCGTACGGGACGCGTTGTTGTCGCAGAGATATAAGGGAAG -AACCGACGCCTATATCACACTACACACTTATTCACAGGTACTGTTAAGCA -GTTGAAAACTTTTTCTCGGCCACCGATATTTTCTCGGCCATCGATATTTT -CTCGGCCATCGTTATTTTCTCGGCCACCGAAATTTTTCGCGGTCATCGAT -ATACTCTCGTTCACGGATATTTTTCCCAGCAACAGATTTTTTTCTCGGTC -ACCGATATTCTCTCGGCCACCAAAATTTTGTTTTTCGTGGCCATCTATAT -TTTCATCGGCCATCTATATTTTCTAGGCCACCAATTTTTTCTCGGTCTCC -GATACTTTCTCGGCTACCAACTTTTTCTCGGCCACCAACTTTTTCTCGGC -CACAGATTTTTTTCTCGGCCATTAATTTTTGACGGCCACCGAAATTTTTT -CGGTCACCGATATTTTTCACGGCCATCGATATTTTTTGAAAATTTGATTT -GAGCAAAATATTTTCAGATTTGGATTCATCCATATGGTCACAAGAAGGAT -GCATATCCAGGAGATATTAAGGATTTGGTGAGTGATGACGTCATTCTTCT -TGAAACGTTGAAACTCAAATTTCCAGTACGAAGTTGGCAAAAAAGCTGCT -CAGGCTCTGAAACGGGTTTACGGCACAAAATACGTAGTCGGAAGCGGTGC -GGACACGCTCTACCCGGCGTCTGGAGGATCTGAAGATTGGGCAAAGCACG -AGGCGAAGGTCAAATTTGTGTACCTTCTAGAATTGAGGCCCGACGAGAAA -AGTAAAAAAAAAACGTTCAAAGTTGCTGAAAAAAGTTGGGCGATAATTTC -AGACTGGGATGGGTTCATACTGGACGAGAAGGAGCTGATCCCGACGGCTC -GGGAAACTTGGGAAGGTGTCCGAGTTGTGGCGGAAGCTGTGCTCGATCGG -ATAGTTGCCGGCAAGTCGACGGCTCCAAGAGGTAGGCAAACTTTGATGTG -CCTGCCTGCCTTGTGCCTACAGTTTTATTACGAGTAGGCACGGAGGTAGG -CAAGTAGGCAGGCAGAAATGTGGACCGATAGGCGTAAGGTTAAGGGCTTG -CGAAGCTTTTGCGTAGGATTGCGAAGAAAAAGAAAAATTTTTAAATTACA -GTGCGCACGGCCTAAAGGAGATGGCTTCTGAGGTAGTCACTACGATGCTC -CGCTTGCTCTGACCACGCCCCTTTCCTGGTTTCTCGATTTTTGTTTTAGA -AATTACACTTGTTTATTTTATGATTGTTGATAAATGTTTTTTTAAACATA -ATTTTTCTTGAAAAAACAACTTACAATTAGAGAAAATAGCAGCGAGCGGT -CGTGGCCGCGAAATGAAAAACTCGGCCACCAGCTATAAAATTAAAACGTA -TAATAATTTGGTGGTTCAGTTTTGCAGAAAAAAAATGGCTGGCCGAGTTT -TCACGTTTCTAGGCCATCTAGCAAAGTTGCTCTGAAGCGCTTTCGCGAAT -TCGTTTCCGAAAAAACTGTAGGTGAAAACTCGACCACGCTTTCTTAAAGC -CACGAAATTTTGAAATAATTTCTCGGTCACCAATTTTTTCTCGGCCACCG -ATATTTTCTCGGCCACCGATATTTTCTCGGCCATCAAAATTTTTCTAGGC -CACCAACTTTTTCTCGGCCATCTATATTTTCCCGGCCTCCGACATTTTTT -CTCGGCCACCGATATTTTTCGCAGCCGTCTATATTTTCTTGGCTACCAAT -TTTTTCTCGGTCTCCGATACTTTCTCGGCTACCAACTTTTTCTCGGTCAT -AGATATTTTTCGCAGTCATCTATATTTTCTCGGTCAGCGATATTTTCTTG -ACAACCCATGTTTTTCTCGGCCACCGATATTTTTCTCGACCATCTATATT -TTCTCGGCCACCAAAATTCATTCTCGGCCACTTATATTTTTCTCGGCCAC -CAATATTTTTCTCGGCCACCTATATTTTCTCGGCCACAGATTTTTTTCTC -GGCCATTAATTTTTGACGGCCACCGACATTTTTTTCGGTCACCGATTTTT -TCTCCGCCATCTATATTATCTCGGTCACCAATTTTTTTCGGTCATTGATA -TTTTCTCGGCCACCAATATTCTTCTCAGCCATCAATATTTTATCGTCCAC -CGATATTTTATCGGCCACCGAAATTTTTCGCGGTCATCGATATACTCTCG -TTCACGGATATTTTTCCCAGCAACAGATTTTTTTCTCGGTCACCGATATT -CTCTCGGCCACCAAAATTTTTCTCGGCCACCGATTTTTTTTCCTGGCCAC -AGATATTTTTCTCGGCCTCCGATATTTTTCTCGGCCACCGATATTTTTTC -TCGGCCACCAATTTTTTTCTCGGCCTCCGAAGTTTTTCGTGGCCATCTAT -ATTTTCATCGGCCATCTATATTTTCTAGGCCACCAATTTTTTCTCGGTCT -CCGATACTTTCTCGGCTACCAACTTTTTCTCGGCCACCAACTTTTTCTCG -GCCACAGATTTTTTTCTCGGCCATTAATTTTTGACGGCCACCGAAATTTT -TTCGGTCACCGATATTTTTCACGGCCATTGATATTTTTTTCGGTCACCGA -TACTTTCTCGGCCACAAATATTTTCTCGGCCACCGAAATTTTTCGCGGTC -ATCTATATTTTCTCGGCCTCAGCCATCGATATTTTTCTGGACCGTCTAGT -TTTTTTTTGGCGGCCGTGACCTCCAAATAGAATTACAAAAATAAACGATA -CATCTCATATTTCTGTGCAAATCCTCAAGTACCCCCCCCCCCCCCCCTAT -ATTTATTGTTCCAGAAGCCCCAAAAGCTCGCGGATTCCGATTCGGCGACG -GCACCGAAGGATCATGTTTCGATGTCCGACACGCGTGCAAACGATGGGTT -CAGGAACGGGAGGAGCTGTGCAGGACGGTGCCAATTTTCATGCGCGAGAA -CTGTGCCTACTCTTGCAATTTCTGTTGATTTTTTTGGTGTGCCACTTCTT -TTTTTCTGTACATATATCCATTTTGTCTTCTACATACATATATATATGTA -TATGAAATGTTTAAAAACCTAAAACCTAAAAAAAAACCAACCTAATACAG -TGTTCACGAGCGCCCCCCGCCGCCGGCGGCTCCTTATTTGCCTTGTGCTC -ACCGTGAGGTGGCTCCGCGCGGGAGCCCCAGTGATGAGCATCTCTTTTGT -CCACACGAATAATACAATAACACGGGCTCCTCTTCAAATATGACAAAATG -TCAAATTTTGGCGTCTCTCCTGACTTGGAGCTTCTGGGTCTTCAGACACG -TTCTTGTGTGTGAGGCGAGATGCGATTACCCTCTATATTATTGATTTTTG -GAGCATTTTTTGGTTTTCTAGGGGCTATTCATAATACAGATGATAATGCC -GGCTATCATAAGTAAGTCCCCAAAATACCCATATGGCCTAGAAATTCGGA -AAACTCTTCCATTTCACTTTTGGTAGGGACATTTGGTTTCTGTGCTAGCT -TTTATGCTGAACATGGTAATTTAAATTTCCTAGGCCAGTGTATATGTTTT -TCTAGGCTACGACATACAATTTTTTAGGCCACAAAATATTTTTTTTTAAT -TGCGGCTTATAAAAATGTTCCATAAATTATCTATTTTTGAATTACAGTCT -GAAAATTTCCATTTTTCAAGGGCACCTTTCTAGGTCACAAAAACGGATTT -TTTCAACATAGGCATTTTTCAACTTTTTCTAGGCCACGACAGATGGAAGA -GCTTTTCGTAAAAAAAGCTCGGCCACCACCCCACCTAACCAAAAAACTTC -CAGCTTCAAACTAATCCGAATCAATCCGGAAACTGAAGGAAGTGTGAAAT -ATCTTCGAAGTCTGTACGAGGATCCCTCTCCGTACGAGCTGGATTTCTGG -CAGCCTCCTACGAATATCGGTTAGTGTGACTTACCCACGTGATGTTAGCG -TGCTCCATTTTAGTTTGATCTACGTAGATCTACCAAAAATGCGGGAGAAG -AGACGCAAAGTTCTCAACTGATTCTGCATGGTTAAGAACGCACTGACGTC -ACATTTTTTGGGAAAAAAATTTCCGCATTTTTTGTAGATCAAACCGTGAT -GGGACAGTTTGCCACCACGTGCTTACCCAGGAAAATCTGAAATTTTTCGA -ATTTTCAGGAGCTATCGTAGACTTGACAGTTGCTCCGGCGGATGCTCCAA -GATTTGTGAAGGATTTGGAATCGAAGAAGATCAGCTACATCGTGGCGGTT -AATGATTTGTCAAAGTTCGTTTTTTTTTCTAGGCCACGGCCATCTGTGAC -GTCACTAAACTAGTTTCCAGAGCAATCGAAAACGAGCGCGGAAGCGACAA -ATTCTACAACCCGGTCGCTGGTTTTGCATACGACAAGTACAACAGTTTGG -AGGAGATTCAAACAGAAATGAAGCGGCTTAAGAAGGAATACCCGACCATG -ATCACGCTTATCGATATCGGACAAAGTCACGAGAATCGTACGCTTTTGGT -GATGAAGGTAAGAGCGAACGCGCTCTATTGAGTGGGCGTGGTCACGTCCA -CGTTTTGCAAAGTGGGCGCACGGTTCCTTTACAGCGGTCCCAGCTTTTGA -AGTTTTGAGTAATTTTTATATGGGAATTGCTAAAATTCATTTAAAAAAAA -CCCAAAAATACTTTTAAAGTCGTAACGAAAAAAAACAACCGTGCGCACGT -CTTGCAAAAAGTGGGCGTCCCAAAATTTAAAAACGACGGAATTTCATTAT -TTCAAACGCTCCAAACTCATTTTCACTACAAAGACATCACGCGCCTCCTG -GGAAAGCCCTTACTCATTTGCTGGATATATGACGTCACTAAATTAGTAGA -TGTGTGAAACCGCGCTCCATTGTACTACGCAACACCGATCCCACGTGGTG -TCAAAGTGTCCCATTTCGGTGTGATCTACCATAAATGCGGAAATATTGAC -GCGGATTTCTAAACAGATTTCGCATGGTTAAGAGCGTGCTGACGTCACAA -ACTTTTCTCTGCAAGAAATTCCCACATTTTTTGTAGATCACACTAAAATG -GGACCGTTTGACGCCACCTGCGCTCTCACTTTCAACACTCCCATTAAGCA -TTTCATGTACGCGCCAAAACGCACGGATTTCTGGCTCCCCTCATAAATTG -AAATGGAGTTTGAAAAAGAGTTTGCCGAACTAGGTCATTTTGGCTCGGCC -ATATTTGGGGTAGATTTTCGCCGCGTTGCGTGTCGCGTCGCGGCTCAATT -TAAGTTGTAAATCTAAATGTGTTTGTCCGTGTGGAGTACCCGACTTTTCC -ACGCGTTGCCCGGAATGCTATTGTCGATGGAGCGCGAAAAATTCAATAAG -GAAGGCCAGAACCCCGTGAAAACGCCTGCCGCGCCCCCGCCTGCCTTGCA -GCGCGGAACCCAAAAAGTGTCGGCCGCGGCGAAAGGCCCTCGCACTATGT -GGTGTTAATACCTAGCTATTGACTTATCGCCATAGTGTAAAAAAACCCAA -ACTCCCAAATTTTCAGATAACCGGAAAACGAAACCCCCTCGGCTCGAAAA -TCTCCATGTGGATTGACGCTGGAATTCATGCTCGAGAATGGATTGCTCCG -GCGACCGCAATGTACATTGCTCATGAGCTTCTCCTCGGGTATGAAAACGA -CGCGACGGTGGCTAAGCTGATGGACCATATCGATTTTTATATTCTACCTG -TGATGAATCCAGATGGATATGAGTATTCCAGAGAAAAGGTTGGTTTTTGA -ACCTTAAAAAAGCCTTAAAACTAGTGCTCTATTTCAGAACCGCATGTGGA -GGAAAAACCGGAGCCCCGCAAAATGCGCCCGGCAAACTTTCAGTACGGTC -TGCTGCTCTGGAGTCGACCTCAACAGGAACTTCGATTGGTTCTGGGCCTG -TAAGTCACGTGGTGTGAGAAAGTCTCATTGAAGTTTGATCTACAAAAAAT -GCGGGAATTTTTTGTAGATCAAAGCGAACTGGGACTTTCTGACTCTACGT -AGTTAGCTCAATATTAGACCTTAAAAAATAACTTAATCTTAAAAATTTCC -AGCCACCGGTTCGTCTTCGGATCCGTGCCACGACACGTATCACGGCTCGG -CGGCCTTCTCGGAGCCTGAATCACAAGCTGTCAGGGATTTCCTGGAGCAA -AACACACCCGAGGCGTTCATCTCGCTGCATTCCTACTCCCAAATGTGGTT -GATACCATATGGACACAGAAAACAGAGTTATCCACAGGACTACCATACTG -GACTGCGGCCATTGGCTCTGCGAGCAACTAAGGCGTTGTATGAGTTGTAT -GGGACGAAATATCAAGTCGGGACCGGCGCTGATTTGATGTGTAAGTTAAT -ATCCTTTTTTTCGAATTTTTAAATTTCTAAGGATTTCAAGAAATTTTAAA -ATTTTGAAAATTAAAAAAACAATTTTTTTCGGAATGTTTAAAAATTAAAA -AAAAAATTTTTTTAATAGATTTTTTAAAGCTTTTTTTTGGAAAATTTTGG -ATTTCTGAATAATTTTTTTTTCAGAACTGGAATTTTTGAGTTTATTAAAG -ATTTTTTTAGGACTTTTTAATTTAGACATTTCCTGAAAAATTTTTAAATT -ATTAAAATTTCGAACTTTTTCGATATTTTCGGATTTTTTTGCAACCTGAA -TTTTATTTTTTTTTTGGATTTATTGGAATCAGGGGTGGGCAGCAAGATTT -TTTCCGGCAAATCGGCAAATCGGCAATTTGCCGGAATTGAAAATTTCCGC -CAAATCGACAATTGCCGGAATTGAAAATTTCTGGCAAAACGGCAAATCGG -CAAACTGCCGGAATTGAAAATTTCTGGCAAACCGGCAAACAGGCTAATTG -CCGATTTGCCGAATTTATCGATAAATCAGTTTGCCAAACGGCAATTTCCC -CCACCCCTGATTGGGATCTTTGAAATAAAACAGGAAGAAATTTTAAATTG -TTGGAAATTTTGTAATTTTCCGGAATTTTAATAAAAAAATGCTGAAAATT -CTAAAAGTTTTGGAACTATGTAAAATTATTTGTGATTTAAAAAAAAACAT -TTTTTGGACTTTTCTGAAATTTCACGGATTTCTGGCTTCTCTCATAAATT -GAAATGGAAGAGTTTTTGCCGAACTTGGCCATTTTGGCTCTGCCATATCT -GGGATGGATTTACGGCGCGCTTCATGTCGCGTCGCGGCTCGTAAAACTAA -ATGCACTTGTCCGTGTGGAGTGAGGAGAAAATTCAATGAGGAAGGCCAGA -ACCCCGGATTTTTGAAATTTTGAAGTTCTGAGAAACCTGTGACTTCTACA -CTAACCCTGAAGAATTTCAGACGAAGCTTCTGGAGGATCACATGATTGGG -CTAAGGGGCAGCTTAAGGTCCCCTATGCCTACCTGATTGAGCTCCGACCA -AAGAACACCATGATGGGGTAAGCAGGACGATGGATCCTATCAAAATTAAA -ATTTCATTCCAGCCACGGCTTCCTTCTCCCCGAACGAGAAATTGTGCCCA -CTGGACTGGAAACCTTCGAATCCATCAAAGTGGTTGCCGACGAGCTTGTG -GCGCAATTTGTGGAACCTGTGATTCGAGCCAAGCTGACCACAACCACAAA -GCCCGCAATCCCACCGTATCGGCGTGGGTACTCTATAATCGACACCACAA -CTATGGAGCCGGTCGATGAGATTACACAGAAGCCTACAGAAGCTCCAACC -ACAGAGGAGCCCACCACCACTACTACGGAGGAACCTACAACTACCACAAC -GACCGAGGAGCCTACCGAAGCCCCAACAGAACCCAGTCCGACTACTGTCG -AGGCCACCGAGGCTTCTACAACACCAGAAGCTTCCACATCCTCTGAGACA -AGTACCACAGAGAATTCTGAACCCAACCAGAAGACATCCACACCAGTGGC -ACCTGAAGCAAGCACCGTTGAGGAGGTTGGTTTTTGGCTTAGTCTCAGGC -TTAGGCCTAGGCTTAGGCTTAAACTTAGCCTTAGTCTTAGACTGAGGTTT -AGGCTTAAGCTTAGGCTTCAGCTTAGGCTTAAACTTAGTTTTATCTTAGG -CTGTGGCTTAGTCTTAGACTTAGTTTTAGGCTTAAGCTTAGGCTCAGACT -TCGGCTTAGGCTTAGGCTTAGAATTAGGCTTAGTTTTAGGCTTAGACTTA -GTCTTGGGCTTAAGCTTCGGCTTAGGCTTAGTCTTAAGCTTAGGCTTAGG -CTTGCACTTGGGCTTGGCGTCAGTGGCGAGCGTGAGCTATTTAGGGTTTT -ATGCTTAGCTTTAGACTTAGGCTGAGGTTTAGGCTTAGGCTTCGGCTTAA -GCTTAGGCTTATGCTTAAGCTTAGGCTTGGACTTAGGCTCATACTTAGGC -TTAGGCTTAGGCTTGCACTTGGGCTTAGGCTTAGGCTTATGCTTAGTTTT -AGGCTTAGATTTAGGTTCAGGCTTAGGCTTATACCTAAGCAAATACATTT -TTGGAACTATTTGGATATTTGCCAGCGACCTATTTTATCAACTTCGAATT -TCCCAAACCATTCCAGGAAACAATCACACCGATCAAATGCGTCGACTACG -GTGACTACTGTCGTCTTTGGGGAGTCTTACAGCTCTGCTATCGGGATCAG -GTCTCCAAGTTGTGCCCCAAGACTTGCGACTCGAGGTGCTCTTTTTCGGT -GTGAGGCGCACGCTGGAAACTATCGTATGACAAATTGTCAGCTTATGTAT -GTATAAATGATTTCAAACTTTTGTAATTGTGGACTAAAAACTACATTTTT -CATGCCTGACTGACTGCCTGGCAGCGTGTCAGCGCCCGACATTTTCTGAG -TTCCACGACGGGATCCTGGCAGGCGTAGGCGTGCAATTTTTAACTCATCA -AATTGCTTGGAATAATTAAGCACTGCTACAAATGATGTCACTAGCTACAA -ACTACAAACTAGGAATTTCACACTACAAACTACAAACTACAATCTTAGCT -CTTCAAGCTATGAAATACAAACTAAGAAATTTTTATTTTTCAATATTTTT -TAAACGAGGTGTAATTATGGGCGTATATAGTAAAAACTGGAACGACAAAA -TGCAAATCACAAACTACAAACTAGAAACTAAAAACTAGAAACTGCAAACC -ACAAACTACAAACCACAAACTACAAACTACAAACTACAAACTACAAATTA -CAAACTACAAGCTACAAACTACTGAACTCTGAATAAATTTGAACGTGTAA -ATTTTGCGTTTTTGTGCAATGATTGGACGTATGAATTGCGAAACCATAAG -TGTTTAATCACATACTACAAACTACAAACTACAAACTACAAACTACAACC -TAGAAACTACAAACTACAAACTACAAAATATAAATTACAACCTTCAAGAA -ATTTGTATTTTTCAATATTTGTCGAACAAGTTTTAATTATTCGACGAATA -AAGTCAAAGCTGAAATCATAAAATGCTAACCACAAACTACAAACTACAAA -CTACAAACGGCAAACTACAAGCTACAAATTACTGAACTCTAATAAAATTT -GAAAGTGTACTCATGGTTTTGTGCAATTACTGGACGTATGAATTACGAAA -CCATAAGTTTTTAGTCACACACTACAAACTATAAATTACAAACTACAAAC -TACAAATGAAAACTACAAACTACAAACTGGAAACTACAACAGCAAACTAC -AAACTACAAACTACAAGCTACAAACGCTTATATAATTCGATTTTAGTTAT -TTTCTGTTTTTTATTTTTCCAAATTCTCAAACCTGAAATAAAATTACCTA -CACACAAATGTTTCTCATTATGCATCGAATGACTAATATTTTCCAATAAA -CGTTTTGAAAAAGTATGGAAGAAACAAAAAATGGAAAACAAAGGCGGAAA -TATGCATTTTTCTTCTCATTTTCTTGAAATTCGTGTGATTGTACTTATTG -ATTTTTTGTTGTTGTTAAAAACGTGGTAGGCAGGCATTCATGCCTACGTG -CCTGCCTACCAGTCGAATTCGAACCCGCAAGATGTCGGCCGCTCCCTTCG -ATTTTGGAAGTTTTTACTTATTTTCCTCTTCTGCTAACACATTAGACAAT -TATTATTCAACCCGTGTACACAATAGGGCGGCTAATAATTAGGTTGGCAG -GTAGAGGTGTACAGGAAACGTTTATAAGCTCTTTATTTACTACTGAGCTA -CCACTTATTTGGAGCCAATGCATTTTGTTTCTCAACAAGTTGGAGATTCC -AGAACAACCAAGATTTGGGCGGGGCTTATTTTGAGGCAATTTTTCAACTG -TACAGTAGATTCATATAATTTAAGTTTTGAAAACATTTAGGCGGGAATTC -AAACATTTATTTTTAAAACCATCTTGGCGGGAATTCAAATTCTAGTTTTT -CGAAAACACTTTGGCGGGAATTCAAAATGTTATTTCTTAACAACTTCCTG -AAATGCTCTAGAACCTTCTGGAATATTTGAGAAAACTCTAGAATGTTCTA -GAACCTTCTGAAAAATTCGAAAAAAGTCTAGAATGTTCTAGAGCCTTTTG -GAAAATTCGAAAAAAATCTGGAATATTCTAGAACCTTTTGGAAATTTTGA -GAAAATTCTGGAATGTTTTGGAACCTTCTGGAAAATTCGAGAAAATTCTG -GAATGTTCTAGAACCTTCTGAAAAATTTGAGAAAATTCTGGAATGTTCTA -GACCCTTCTGGAAATCCGAGAAAATTCTGGAATGTTCTGGAACCTTCTGG -GAAATTTTTAGAAAAATCCTGGAATTCTCTAGGACCTTCTGGAAAATTTG -AGAAAATTCTTGTCGCCAAAGTTTTGTGAAAAAATTTAGCTGGAAACTAA -ATAATTTTGTGAGAATTCAAACTTTAATTTTTCCAATTTTTTCGGATTTT -TTTTTTAGCTTTTAAGCTTTTTACATTTTCTATAAATTTTAGATTTCAAA -AAAAAATTGGCGAAAAATTTTGACCAAATTTTTTGGCTTTATAGCATAAT -TTCAAAAAGTTTAAAAAGTCCAAACTTTGCTCCAGTCCCCAAAAAAAAAT -TTGGTGGAAAATTCAAATCATGTTTTTTTTTCAAAAAATTTCATGGCCTA -GAAATTTCAGCAAAGCAGTAAGGCCGCCTACCTCCCTTCAATCCGAAAAA -TACCTAAAAATCAATCCCAAGCAATTAGTCTCATCAAGAAAGAAAAGAGC -TCTGCTTGTGCCCACTCCTCATCTCTTCTCATGTATTTGCTTTCAATTAA -ACATCTTACTCAGACAGCATAACGAAGGAAACAAAAAACGAAAGAATAAC -GAAATGAGCATATTTCCTTTATTTATTCCTTATTTATGTATTCAGGTAGA -ACAAAAAACCGGCTCGGCGGGTTTATTTGTCTGTAAATCTTATGCCTACA -CGCCTACCTACAGCGGCCCTGACTGCCTATTTGCCTAGTGTTTTTTGTCC -TTTTCGGTTGGTTTTTTTGAAAATTTTTCCTGATTTTTTTTGTCGTTTTT -TTTCCATTTTTCTGAATTTTTAGGAATTTATGGAAGTTTCTCTTTTTTCT -CCCCCCCTCGAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC -TAAGCCTAAGCCTAAGCCTAAGCTTAAGCCTAAGCCTAAGCCTAAGCCTA -AGCCTAGGCCTAAGCCTAAGTCTAAGCCTAAGCCTGAGCTTAAGCTTAAG -CCAAAGCCTAAGCCTAAGCCTACTCCTATGCCTGAGCCTAAGCCTAAGCT -TAAGCCTAGGCCTAGGCTAAAATAAGCTCGGCCCCTTTCTGGGCCAAAAT -TTCATGTACCTCCTAAAATTGTTTCATCCTAAATAGCCAAAAAACTTGGA -AAAATCTATTTTTCAAATTTTGTAAAAATGTCAAAGAAAAATTCTCAGAA -GTGCGGGAAAGTTTGACCCAGAAAGGGGCGGAGCCTATTTTTGGATAGGC -TCCACCTCTTTCTAGGTTTTTTAAAATCAAATTTAGGTGTTTCCTGGTAA -GTTTTAGTGGTTTCATTTTTTGTATTCATCACATTTCTTTTTCATTTTTT -ACATTTTTCTCATAATTAATTTTTGATCTACCTGTTGAACTTGACCCCGC -CCCCCAATCTTGGTGCCTCAAAGGAATCGGAGGAGTCTAGTCAACAAGGT -AGATCAAAAATAGAATATGAGAAAAATTTGCCATCGTGTTTTTCGATAAT -ACTACAGTTTCATACAATAATCCCACAACTTAAAATTCAGCAAATAACCA -GGAAATGGGCGTGGCTTAGATTTTCAAGGTTTCGTTGTTTTTTCCAGGTT -GTACTTCTGATCTGAACGGGCTCCGACAAAAAATGCACAAAATTCGTAGT -AGTGATGTGTGACGTCTGTTCTGATGACTCGAATTCATATTATAAAAGTC -GAAAAATTCCTTCCGAACGAACCCCCCATCATCCTAACATCATCCAGATT -TCTGCACCCGCCCGCTCATATAATCTGCTTTTCTTCACCCATAATCTTTT -TGCTTATTTCTCAATCTCCGTCTTTCTTGCGTTTTTAATTAATTCAAGAA -ATCAAGCAGTTGTGGTTAATGGCGTTCTACGAATTGCTTTTTTCTTGTAT -TATGATATTTTAATTAATTTTATTTATTTAGTATCTAGGCATGTACATGT -GCAAGTTGAGTTGAATAACCTGAAAATTTTGTGCCAAGTTATGGGCGGGG -TCTTTCATACATTTTTTAAATTGTTTTTTGGCTAAATTTGTATGTATTTG -CTTTGAAAGTTGTGTTTTTTTTCAATTTTCTTTAAAAAAAAACCAAAAAA -AAAAATTGGTATGTAGTAACGTAGGTAGGCAAGAAGTAGGTGTGTAGGTA -GGGACTTGAAAATAGCAGCTATGAATAGGTGCGGTATTTGAAGTTTAGGC -AGGTTCGTAGGCAGATAGGTGAGTAGAAAAATCATTCAGAAGACATTCAG -GTAGGCTCACTGGTAAACAGGCATAATGTAGGTACGTAGGTTAACACTTA -CGTACGAGGCAGTAGGCATCAGGGCTTTGTGGCAACCGGCAACCGGCAAC -CAAAAACCAGGTTGCCGGTTACCGAAAAATTGCCGAAATTTCAGCAACCA -AAAGTCGCCAGAATTTTCTCGAATTTTCCAAAAGGTTCTAGAACATTCCA -GAATTTTCTCGAATTTTCCAAAAAGTTCTAGAACATTCCAAACTTTTCTC -AAAGTTTCCAAAAGACTCTAGAACATTCCAGAATATTCTCGAATTTTTCA -GAAGGTTCTAGAACATTCCTGAATTTTCTCGAATTTTCCAAAAGGTTCTA -GAACATTTCAGAATTTTCTCAAATTTTCCAAAAGGTTCTAGAACATTCCA -GAATTTTCTCGAATTTCCCAAAAGATTCTAGAACATTCCAGAATATTCTC -GAATTTTTCAGAAGGCTCTAGAACATTCCAGAATTTTCTCGAATTTTCCA -AAAAGTTCTAGAACAAGTTGCAGAAATTTTCAGCGTACGGCAACTTCAGC -AATTGCGGGTTGGCATGTAGGCAGGCAGGCATGTTAGTAGGCAGTTTTGA -CAGTTTTGAAGTTAACAATCCTACCTGATGCACAAGAAAATGCGCGGCAA -TTGCGGACCGGCAATTCTACAAAATGAGACGGTTGGGCATGTTCTTCCGA -TATTTTTTATAAAAATTTAATGATAAAGTATAGAAAAATATTTGTTTTAT -TTGAAAATAAGTTTTATTTGGCTAGGAACAACCGAAAAAGTGCTCAAAAA -TTGTCGGAATCTTGAAAATTGCCGTGAAAATTTCCAACATTTCGACTATT -TCTGGAGATTTTTACAATTTTGTCTATTAAAAAAAAACAGTTACTTTCAA -ATAAAGCAAATATTTTTCTATATTGTGTCATAAAATTTTAATGAAAAATA -TCGGGGGAACATGCCCAACCGTCTCATTTTGTAGAATTGCCGCGCACCTT -GTTAGTTTATCCCCGTAAACCTCCAATCAATAATTGGCAGGAGTCCTTCC -GTCCGTCCAAAACGTCATAAAAACTGGAGATGGCAAAATTGGAGATGTGC -CAAGTTTGCTGGAGAGGTGGGGGGAAGGAGACAATCATGTTGTCTGCGTA -TCTCCAGACTCGTCTGCTATCTCTCTTACCCGGCAAATGGGACCTCCCCA -GAACGGTGATTTTGTCCTTTCAACACCTTTTTTGTGTTTTTGTTTGTTTG -ACACCTTTTTTTCACTACTTTGCGGGAATTTAGACTGATTTCTCATGGTT -AGAAACGTGCTGACGTCACATTTTTCGCGGGAAAAAAAACCCGCATTTTT -TGTAGATCAAACCGTAATGGGATAGCCATTCTAACAATTCACTGTTTTTT -TTCTGAACAAGTCTGAAGTTTTGAGTTCAGCACCCGCAATTCTGTCTCTG -ATAAGTTTGAAAGTTTCAAATTGAAACCTCTCAATTGTCGGACCAGCGCG -CTACTTCATCATACCCCGCAAATTGAACTGCTCGCGGCAAAATTTAAAAA -TTGATGCTTCTCCAGAAACATCCCACCAGAAACTACCTAAGACTGAACTT -CATTAACTTCTTTTAAACTTAAACAACGATCATAATACCTTAAAAAAAAC -GTTTGTACGTGGTGTCAGAGTGTCTCATTTCATTTTGATCTACATAGATC -TACAAAAAATGCGGGAGAAGAGACGCAGAGTTTTCAACTAATTTCGCATG -GTTAAGAACGTGCTGACGTCACATTTTTTAAGACAAAAAATTCCCGCATT -TTTTGTAGATCAAACCAGCCTGGCACCACGTGCGTTTGTAATCGTTCAGT -AGGTAGGTAGACACAGGTCAGTAGGCATAGGCAGGCGGTAGGTCTGAGGT -AGGTGTTGTTGACCACCACGTAGCAAAACATGCTTGACGACTAGCCTCAA -ACGGATAATCACAAAGTTCTACGTAGTTATGATTTCAAGCCGCCCAATGA -GCACATTACGCTGACTAAGCCACAGCTATAAGACCCTCCTCCGAGTATAT -TCATCACCAAACATCCAGTTTCCAGTTTTGCAGTCTTTTTTTCTGTTGGA -AAATAAAGAGAGTACATCTCATTAGACATTAATGAACAATTTCAAGTTCA -AAACTATAAATATAAATAAAGCTAGTAATTGAGCCAGTCCAACCAAATTT -CCCACAAGTTCATTATAAACCTTCCAATTTCCCAATCCCATGTACTCCTA -CTAATCAGTTTCTTTCCTTCCGCCCTACTTTCCAAATTCATTTATCCGCT -TTGCATACTTTTCGGTAATCTTGACGATTTTCAGAGGTTTCTAGAATTTT -TTATTTTTTCAAATTATGCAAAAATAAATTTTTTTTTGTATTCTCAAAAA -ATTGCTAAAATTGTCCAACTTCCCATTTCTCGGAAATTGACGTAATTGCA -GTTTTTTGAATTTTTTTGAAATTACTGATTATCAAATTTTGTTGGAAAGT -TTCCTTTCACCTACACACCTACCATATGCCTATCTGCCTAGGTGCTTACC -TACACGCCTGCTTCGTGCCTACCCGCCTACCTGCCTGGTTTATTTTCAAA -AAGTGCAAAGAGCCAAAAGTTTCGAATTGTCAAAATTGCTCGGAAATTTT -TTGAAATTTTGGAAAATGCCAAAGTTATCAAATTCCGCATAATTCCAAAA -TTGGCAGCCCGACATCATGCCTGCCTACATTCCTGTCTGCATATAGGCCT -GACAAAATGTCCATCAATGTATGTACCTATTTCATACCTATCTACCTGTA -TAAACATAGTTCATCTCTACCTCAAACAGCATGTTACAGGCTTTCTTCTT -ACCTACCTACTTCATTAACTGCTGTTTATTGACCTGTCTACGTGCCTACC -TCATGCCTGGCATGCCTACATACCTACCTCATTTATCAGATCCTCATGAA -GCCTATTTACAAGCCTACTTCCAGCCTACCTATTGTGTTGATTACGATCA -CCGTCTCTAGGTTGCCTAACCTGCCTAATTGTGTCTACCTACTTAGCTAT -CTCATGCCTGCCTACTAACCTGCTCAAGTACCTACTTCATGCCTACCGGC -CTACGTTCCTACCAACGTGCCTACCTGCCTGCTCACTAGCCTAAGTGTCT -GCCTACATAAATTGTCCGTTAGCACATCAAACTTTTCATATATACAAAAA -ATTGCATAAAAAGAAGATAATCATTAATAACAAGTGGGTAACTCAAAAAG -GAAATTGGTTTATCTCCCGGCTCCGAGAGCACCAGCACTTTGCTTTTCCG -TCACTACAACCTCTAATTTTGTTTTGTTCGAAGGACTTTTTCCGATACAT -ACTAATTTTTTCGGATCCGGTTGGCTCTGGATTTCAAGTTTTATAATAAC -TTGGGCTCCCAGTGACGTCACCAAAGGTGCAATTAGCCTTTAGTAACTAA -ACAGCTTGCTCCTAGTTTACTGCTCCGTCTTCTCAAATGAAACAGAGAGA -GAGAGACCCCTCATCGAAAATTCAATTAAACGCTAAAACGTAGGTAGGAA -AGAGAGAGAGAGGGAGACTCCTCCCAAAAAAAAAAGACAGGGGGGCTCTC -TCTCTCTCTCTCTCTCTTCGAGCGGCAAATCGGCTTCCGAATTCATTCAA -AAACAAATTATGTGCTCAACCACCACCACTACCACCGGCTCCAGGCGGGT -AATTACACTTGAAAACCAAGTACTAGGTTTCGTGGCCGGGCAAACTTTTT -CTTATTAGACCCCGGTGGAATTTTGTAGGTCTATTTAAAATTGCAATTGC -GCTATTTTGTACTGTTTTTTTTTTGACAAACTTTGAAGCTTGATGTCAAG -CTGGAAAAGCGCTCTAATGACAATTTTGACTGCAAACTCGCTCTGTTGAT -AAATGGTCCGTGTACTCCACGGGGGCAATTAAACTGGATTTTTTTCGATT -AAATAATATCTTGATTTTTTGCAGTTTTGGCTTAGGCTTAGGCGTAGGCT -TAGGTTTAGTCTCGGGCTTAGGCTTATGGTCAGGGTCAGGCTTAGGCATA -GGCTTGGGCTTAGGCTTCGGCTTAGACTTAGGCTTAGGCTTAGGCTTATG -CTTAGGCTTAGGCTTAGGCTTAGGCTTAGGCTTAGGCTTAGGCTTAGGCT -TAGCCTAAGGCTTAGGTTTAGGTTTAGACTTGGGTTTAAACAGGCTCAGG -CTTAGGCTTAGGCTTAGGCTCATGCTCAGGCTTAGGCTCAGACTTAGGCT -TAGACTTAGGCTTAGGTTTTGGCTTAGTCTTAGGTTTGGACTTAGTCTTA -GGCTTAGTCTCGGACTTAGGCTTAGGCTTAGGCTTAAGTTCAGGCTTAGG -TTTAGGCTTAGTCTGAATATTTGGCTTAGCCTTGGGCTTAGGTTTAGGGC -TTAGGCTTAGGATTAGGCTTTGGCTTGCCGGCCACCTGGGATATTGTGGT -TTGACAGGGGTAGGCTATCCAAATTTTAAAAAAATCGGCTACAAAATTAA -TATTTAGATGGGCCTATAAACCATTTCTCTAGGCCATCCTGCAAAATTTC -CAAGACAAAAAATTTCAGCCGTGAATAAAGTTTCCGTTTTCCTAGGCCAC -CTCCAAATTTTCCACGTCATATGTAAGGTATCGGAGGGTACTGTAGAAAA -TTATCAAAAATCAGCAAAGAATAATAAGCATTAAGAAAGTTTTTTGTGTG -TGTGTGTTTTTTGTGGGAGAAAACATTTCCCCTCTCCTTTTTTCCTGCCT -GCTCATTTGGATACCACCGCTAACCCAACTTGACTTTGATTACCCATTTC -CGTCCCCCTTCTTCGTCTTCTTCTACTCCGGGATAGAGAGAGAGCTCTAT -ATAATTACTTTCGTCTTCTTGATCCGTTACCGCCCATTGGCAATTGGTTT -GAGCTGCCGCCGGAGAATATATACATGCATGTCTAATTTTTTACTGGAAA -ATCTAGGAATTTTTACGTTGAAAATTTGGTTAAAAGCGTACAGATCGGCC -CATGCTGGTGATTGTACGAAATTTTAATTTCAAAGTATCTGCAGAGGAAG -CTAGGCCACAAGCCCCTACGTGGCCGTCAAAATTGAAAACTAGGCCACCG -ATTTTTTCTCGGACTTTTTATCTACTTTTGCTATTAGGCCCTGTCTTCTT -TTTTGCAACGTTTTTCTACTAGGTCACCAAATTTTTCCTAGGCCAAGCTG -CCTAAAACTCGGCCACCGATTTTTATTTGCGTCGGTCTGTAACATTCAGG -CTCCGACCAGCTCGACTTTTGCTACGTGGTCGCCAATTTTTCCTAAGCCA -CATCGAAAATGACTCGCTGTGACATTTGTACTTTTTTTCACACGGCCTAG -AAATTTTGAAAAAAACTCGGCCACTGATTTTATCGGCCTTGGAATCCTAT -GTAACTTTGTGGCATGATTTTTTATTTATTGTCCATCCAGTTTTTCGTCT -GAAAATTACAAAATGTTTTAGTGACCGTTGGAGAAAACTCGGCCACCAAT -TTTTTTCTCGGCCAAGTTACCAAATTACGGGATACCGTGTTCTCTATCAT -ATTTCTGGCTCAAAACATACTCTACTTCCGTGCTGCCTACGTGGCCGCTC -AATTAGAAAACTCGGCCATCATTTATTTTCTAGGCCATGTCGAAAATAGG -TAATGTAAATAGGCAAAGAAATGCGGTGGTTCAAGTAATTTTGGGAAATG -GATTTTAAAAAGTTGAAAAAATAAATCAAATGAATAAGTCTGAAACACGC -AAACCTTAAAGCTAGGCCATCAATTTTTTTCTCGGCCAGGTTGCCAATCT -ACGGGAAACCGTCATGTTTCTTGCTCAAAATTACACCCTATTCTCGAAAA -ATTTTTTTTACGTTGAGTATGCTCTCCTGCCTAGGTGGCCGCCCAATTAG -AAAACTCGGCCACCCATTTTTTCTAGGTCATGTCGAAAATAGGCGATGTA -ATGGGGTAGTTCAAGGAATTTTGCGTAATGAATAACCCCAAAAATGTTTT -CAATATATGGCCGCCAAAAAAGAGAAAACTCGGCCACCAATTTTTTCTCG -GCCAGGTAGGCTACCAATCTACGGGATACCGTGCGCTCCATCCTATCTCA -GGCTCAAAATTACGCCTTTTTTCTCGAAAAATTTTTGCATACTCTCCTCC -CGTGCGGTTCTTAATTAATGAAAGACGTTTTTTTTTCTCCTTGTCTAACG -AGTGTATATGCAGAATTCAGGATATGCGTCTTCTTTTCCGAGTTCTTGTC -TTCAAAGCGAAAAAAAAAGTGTGTGTGTGTGTGGACATAGGAAGACTCGT -CTTCGAAGAAGACGCTCATTAGCTCATTTCATCCACTCGCTAATTTCATT -AATTTTGTGCTTCTTCGCCTGCCTTCCGACGTGTTTACCCACACCACCAC -CACCACCACTCAGTACCTCCTCACTCACCGTGGAGAAAGATGTTCTGGAT -TTTTTTAAGCTTTTGAGTTTTGTGTCCTACCTCACTTTTTAGGCTCCACC -CACTTCTTGGCCTGTTATTTCGGTTTATTAGAATTTGTGTGGTGTACTAC -AAATTTCGATCCGAAAAATGGCAAAAAAAATTCAGCTGACTGAATTTTTT -TGAACTTTCAAAGGTTCAGTTTTTGCAACCTAAACCTCTCTTAACTTTAA -CTTTTCAAACCCCGCCCATATCTTGGCTTTTCCAGAAATCCGAGTAATTT -TTTGGGAAATTTATGGTACAACTAGCTATCAGAACAATTTTTACGGAAGT -TTTTTTAATTTTATTTTAATTTAAGTCTACTGAAATTGACCTAAAATATA -TTTTGAAAAATGCTTTGATCCCGAAATTGGCCAAAAAACGTTGATCGAAT -TTTTTTGAACTTTCAAAGGTTCCGTTTTTGCAACCTTTAAGCCCCGCCCA -TTTCTTGGCTGTATTGTATTCAAAGTTAAAAGTTGTTCATGTTGTACTAA -AATATGCAAGTATCATAAAAAATTAACTTTTTAAGCTCCACCCATTTCTT -GGTTTTTCTGGAAATCCGAGTAATTTTCTGGGACTGTTATGGTACAATTA -GGTATCAGAAAAAAAATCAAGGAAATTTTTTACTTGGATTTATGTCCACT -GAAATTGACCTGAAAATGTTTTGAGATTTTAAAAAACTTAAATATTTTGA -TAAAGGTAGAATTTGAATTCCCCGCCCATTTCTTGGCTGCAGTTCCCAAC -TGTCCAACTTTTTGAATATTTTCTCAAACTTCATGGCCTAAAATTCCAAT -TCTAGGCGATCTACCTTGATAAGAACTTACTCCTGAGTTATGTTTGAAAA -ACATAGTCCATCCGTGGCCTAGAAATCCAAAACTAGGCCATCAGATTTTA -GGTTCCTAGGCCCAATCACAAAGCCAGCAGTTTTAAGTTGTCAAATTTCA -GTGGCATAACCTCATAATTTAGACCTATTCTATTAGGTCAGCCTATTACA -GTTTCTGGCCTAGAAATTTTCCTTGAGTTTGAGCCCACTACCCCCACACC -CACATGGCCTAGAAACCCAAGCCTAGGCCATGTGTCCCCGCATTCTCACT -CACTTTTAATTTCTTAATCCACTTACACAATTCTCTCCCCCTTTTCCAAT -TTCACATCGAACCCGGGAAAGCTCATTAGCTCATTTGTTGTGTGTGTGTG -AGTTGAAGAAGCGGGGGGAAGGGGAGCCCCCCTTTTGAGTGGACGGGGAG -CTAGAATGGAAAAAGAGAGAAGGAGGAGAGCCATTTTGAATGGGTATGCA -ATTAGCAATCGATGCAAATTAATTAAACAAACAACGAAATGAAAGGGGGG -GGGAGGGCAATCGCCTGCCTTCACTCACATGTCCCCTGCTGGAAATGTGG -AAATGTAAATTAAAATTAGAAAACTAGCAAAAAAGTGCGTTTTTTATTCC -TACTTGTTAATTAGTTTAAATTTCTATATATGTATGGCTTTGACATGCCA -ATTTTGGCGTCTAAGGGTAGGTATAGGTGGGCGATGCACCATGTTAAATG -GTCGATGCATCATGCCAAATAGTAAATGCACCATTACACATTGAAAATTT -AGCATTATACACTCCATATAACTGAAATTCGGGGCCCAATCAATATCATG -CCGCCGACATCTCACGGACTCCGCGCGCCGCTATGTTTAACTCGCAGCGG -GCGGAGACAGCTGGCCGCGCCCACAACGAGTTAAACACAGCGGCGCGCGG -AACTCGTCAGATGTCGGCGGCCTGATATTGGTTGGGTCCCGAATTTCAGT -TTTATTATTTGGAGTGTATAATGCTAAATTTTCAGTGCACCGTGTTAAAT -GGTCGATGCACCATGATAATGCTAAATAGTCCATGCACCTTGTCTAGAAA -ACTCGTTGAGTACTGTACTTATGAAACAGTTTAGCAAAAAAAAATGTCAG -CCTGTTTGGCTCCGCCCCGAAAGTGGGCGGAGTCTAATTTCTTGAATTTT -TTTTTTTCAAAAATTGTTTTAAAAATAGCTCTGTGAATTCCACCTCAAGC -AACTATTTTTAGTGGAAAGCAAATTTTTTCAAAATTTTGCGCAAATGGTT -CTGAGGCTCCGCCTTGAAATTGGATGCTCTTAATTAAGAAAGAAGTGTTA -GTCCCGCCCCTTTATTGGAGGAACTCAAAACTGGGAGGAGCTTAAGAAGG -TTATAAAATTTTGCTAATTAAAACACCCAGCTCCGCCCACTTATATATTA -GTTGACTCCGCCCCACCCATTAAAAGTGGGCGGAGCTTAAAAATATTGAC -CACGCCCCTTTCTTGGGTAGTTTTAGCGTTTTTCATAGAGTCAATTTTCA -CGGCGGACCCCGGATCGATGCACCATGATTTGACGCGCAACCCAGGTAGT -ATGACGTCACTCGTGGCCGAACTCGCGGGGGAAATTTGTACTTACAGCAA -TAAATTTCGGTGTCTCACGGAGCACCTGCACACGTACCGATCATGAGTGA -TGCTTCCCACCACAAGACATACACATACACACACAAACCTACTAATTAAG -ACAAATTATAGAACAAGTGGGGGGAGAAGGGTAGAAATAAAAGTGAGCAG -TGCGAGAGAACGCGTTAGACGGAGAAGCTGCTCTGGGAGACGTGTGAGAG -GCATATAAGTTGGATTAGTTTACTGCTCTTTTCATGGGAAAATCAAGTGA -GCTCCAAATATTTAATCTGACTTTGATTTGGTTTGATTCTGAAATTTTTT -TGGGATTTGCAGAAAAAATACGTTTTTTTTTTGTATTTTGGAATCGCACC -AATACGCTGCGTTGCCCTCCTACAGTGCAACTGAGCCACATTTCTCTTCC -ATAACTTTTTTCTTAATCTCAAAGATTAAAACTCTGCAAAAGCTCAATAT -TTTATAAATGATAAGGATTAGCAAAGTGTGGGTGATCTTCCAGAGGGGGG -ATTACCATAATTCATTACTCATTTTTCAAGTTTCATCTGTGTTTTGTTTG -ATAACCTAGGTGACCTACTAGTTTACCTACAGGGCTGGGACCAAAAAAAA -AATTTGGACCAAAAAACAAAAAAACAAAAAATTGAAGTTTTTGAAAAACC -AAAAAAACCAAAAAAAAACAAAAAAAAACAAAAAAAACCAAAAAATTTCT -TATGCTTAAGTTGATTTTTAATGGGGTTATTCAAGTAATGTTGCAAAATG -TATTAAAATACATTATGACGTCACAACTGTGTTAAAATACATGTTTTAAT -GTATTTTAATACATAATAGTCTCGAGTCGAGACTAGACATGGTAAACACT -TTTTTGGATTTTTTTGGATTTTTTGGTCCCAAAAAACCAAAAAAAACCAA -AAAATCGATTTTTCGTCAAAATACCAAAAAAAACCAAAAAACAAAAAAAC -CAAAAAATTCTCAGCCCTGGTTACCTGTCAGCAAATAATTTTCCCCTATA -TACCACCACTTCAGGAGTAATCAACACCCCAAAACGGCAATTATTTATTA -TTCTCCTCACCTTCTCAACACTCCATAGCGCCAGCCAGCCTAATTTGATT -GTTTAATTCGATTCAGGGCACCCCACCACACACAAATTTATTAATTTTTG -TCTTTCTCGCCATTTTCCAATAATTTTCCCGGCTTGTGTTAGCTTTATTA -TAGAACTTTTTAAAGCGATTTCTTAGGAATTTATGTGTGACGTCATATGT -GGCCTAGAAATTTGACGATCTCGGCCGTCGGGGTCGATGAACCATGTTGT -GATGTATAGGTGGCCTAGAAAATTTTAGGCCACCATGATAGTCGTGGCCT -AGAAATTTGGGCGCCTTCAGGTGGCCTAGAATGTGAAAAGTGACGTGTGA -CCTAGTTCTTTTGACGGTCAGGCCAATTTTCCAATTCGATGCTTTTTTTT -TAATTAAGGTCCATATTCTGCAATTTTAGGCTCCGCCCATATCTTGGTTA -AACATTTTTTTTTTGCTTTTTTCTGCAATATTCATTCAATCCATCATTGT -TCTCAAAATTTGATGCACCATGATATGGCAGTGGCCTAGAAAGTGCGACG -TCACTTATGGCCTAGAAAATTCGAGGATCTTGAAATGGGAGAAAGTAAAA -AAGTAATCAATGCCCCCTGACGGTCGTGGCCTAGAAAGTTAGAAGATCTA -GAGGAGGGGAGTAGGAGATCGATGCACCATGTACAGCTACAGTGACGACT -CACGTGGCCTAGCTTTTTCGCAGGCCACGGCCATAAAAAAATGTATGAGA -TCGATGCACCATGTTTGTCGCGGACTAGAAATCGAGAATGTGGCGCACGT -CACGCATGGCCTAGTGACTTTTACGGTCAGGCCGAAACACAGGACGTGGC -CTAGAAGTCATTCTGTTAGTCTAAGACTCTGCAAAAACTCTCAAAAAAGG -TGAGCCTATGTGCCTGCCTACTTGCCTACATTCTTGCCTACCTGTTACTG -CTTTCTAATCTGTACCATGTTGCACCTACAGTACCCCCTTCCGCCCCCGT -AAAGACTTTTTCAAGCTCAAAAGTGCAGAAAACACAAAAAAACCAAGCCC -AATCTACAAAAGCTCATCTATTCGTGCTTGGATTAAAATGCCATTAAAAT -GATTAATTAAGAGATCGAGACTGGTTGAAAACTGATCGGATTAAAAAGCG -ACTGAGGTCCGCGAATGAGCTTTTCATGCAACTGATGAGCACATTTCCTG -TGTATGTACACTGATGATAAATCTCCTTATCTTTTCCGAGACATAACAAT -CTCAATGTTCTTCATTAGTTTCTTCATTTCCTTCTGAAATTTGTTGCTTT -GATTTATTAAAATCTGTCATTATGTAAGATCCATAATTCGTGATTCGAAA -TTTTTTACAGTTTTTTTTAAATATAGAAATTTGAATAACTTTCCTACCAG -GCTGCCCCAATACAGTTTGATCTACAAAAAATGCAGGAATTTTTTGCCCA -AAAATATGTGACGTCGGCACGTTCTTAACCATACAAAATCAGTTGAGAAC -TCTGCGTCTCTTCTCCCGCATTTTTTGTAGATCACCGTAATACAATGCAA -AAATGAGAGAAAAAAATTTGAAAAAAAACCTATCCAAAAATTTGGCATTT -TCAGATTTTTTTTTTCGAGCAGACCTAAAAATGTTTCGATAAATTCTAGA -TTTTTTGAAAAACTGTCTGAATTTTTTTTTTTGAGAACAATGATTATATT -TTAAAGATCAGTGTTGACTTGAATCATGTAGCGTAAAAAAGGTTAAAAAA -AAACCAAGATATGGGCGGAGCCTAAAATTACAGAAATTGGACCGTAAATT -TTTCAAAAAATTTTTTTTTTTTCAAAAACCGAAATTTTATTTTAATTTCA -AAATTTCCGCTTCGGGGTTTCTTGATTTTTTCAATTTCAATTTCAATTTT -TTAGATTTTTTCCCGTAAAAAACCCAAAATAAATTTACTGAAGCTTCACT -ATTGGATTAAAAATTTATAAGGTTCTTTGCGGGAAAATTAGTAAAAAATC -GAAAATATATTTTAAAAGAAAAATCAAAATTAATACAAAAAATTAAGGCT -TCCATGTAGGTTCGCGTGGTGCCAGGCTATCCCATTATTTTTTCTTTTTT -TTTTTTTTTCCCCAGGAAAGTGTGACGTCAGCACGTTCTTAACCATGCTA -AATCAGTTGAAAAGTCTGCCTCTCTTCTCCCGCATTTTTCGAAGATCATA -CCAAAATGGGGCACTTTGACGCCACGTGTAGACTGTAGGCCATAAACCGC -CTGCCTGCCTGATTTTCAGGCTACCTACGCCTGCCTGTCGCCCCAATCCA -CGCCTTATGCTAAAACACATTCATTTCTTAATTTGATTTTCACCAAAGTG -ATAAAAAAGATAAATTAAAAATTAGTACATTCTCGTCAAAATGCAAAAAG -AGTCGTAAGGCAGGCAGGTTTCAGGCAGGCCCTGGCTCACGCCTGCCTAC -GATGCCGGTTACTAAATTTCCAAAATACCTTATTTACTCTACAAATCCTC -TACCCCGACATTACATCTCAAAACTCATCCTATTAATTTCTGCCTTAGGC -GATAGCACTACTAATTGATAGGAAAAGACGACTTGTGTGTGTGTGTGTTG -AATTATTATACTAATTTGATTTTAGGCAGCCTCTTTCGTCAAAAAAAAAT -AACTTGTGTCACCACACCACACCTCCCACGTTTTCGGTGAGTGAAGCTTC -TGCTCGCTGTTAAGCAGATATTCATAGGGAAATCATCCGTAAATCCATTC -AAGTCCTCTTTATTTTCTTCTTCTTCGACCAAATTAGTATACAGATGTCA -TCAACTTTTTTGTTTCTTTTTGAGGGCCCAGGCTGTTCATTACAGTTTGA -TCTACAAAAAATGCGGGAAATTTTTTTTTGCTTTTTGCCCAAAAGAATGT -GATGTCAGCACGTTCTTAACCATGCAAAATCAGTTGAGAACTCTGCGTCT -CTTCTCCCGCGTTTTTTGTAGATCTACGTAGATCAAAACGAAGTGGGAAA -CTCTGACACCACGTGCTTTGAGAAAAAATTTGAAAAAAACCTTTTTAAAA -ATTTGGCATTTTCAGTTTTTTTTCTTTACAAAATTTTTTTGAACGAATCT -AAAAATGTTTCGATAAATTCTAGATTTTTTGAAAAACTGTCTGAAATTTT -TTTTGAGAACAATGATGACTTGAATATTGTAGAAAATCGTAAAAATAAGT -TTTAAAAAACCAAAAAAAAATGGGCGAAGCCTAAAATTACAGAAATTGGA -CCATAAAAGTTTCCAATTTTTTCTTCACAACTTTTTTCAAAATTGCTGAA -ATAAAAAAAAACTATTATTTAAATTTAAATTTCAGAAATCCTAATTTTGA -CGCCGATTTTTAAAATTATAAGGATTTGTTTTTCCTGCAAATTCTTTTTT -AGAAACTTACAGTTTGTCGGTTTGTCGATAGAGCGTGCTTATTCACCAGG -CTGTCCATTACAGTTTGATCTACAACAGTGCGGGAACTTTTTTTTTGCTT -TTTGTCCAAAAGACTGTGATATCAGCACGTTCTTAACCATGCAAAATCAG -TTCCGCATTTTTTGTAGATCAACGTAGATCAAACCGAAATGGGGCACTCA -GACACCATTTGGGGGGCCTAGAAACCGGTCCCTTTCTCATTCAAAGTGCT -CTCTGTTATCAAGTCTCCCACGCTTTATGCATTCAACTTTGTACAGTTCA -CACGAGCACCCACGACTTGATTATTCAACATTATACAGAACTAACTATTC -GAATCTCAACATGTCTTCTTGCCGAATTTAATCAACTTTGACTTCTTCTT -CTTCTTCGACTTCTTTATACAACTACTCATCTTCTAGTTGCCCCTCTAGT -TGCCTCACACAAGCAAAATTTCTTTTGAAATGAAATTTAAACGAATTGAC -TAGTCAAAATTTCATCAATTTTCTACTAGAGAGAAGCGACGAGATTGACT -TTTGGCAAATATAGAAGAGAGAGGCACCGAAAATGAATTAGATTTAACAC -AACAACGAGTAGATGAGTTGTGTGTGTCAACGATGATGATGATGATGAAA -AGAGCAGAGGAGCAAGCATGAGTGATTTCTGCGGCGGAGGTCGCGGCGGA -TGAGGAGCATGAAGAAGGCTAACGAGCTGTATGGCGATGCGGCTAAAAAT -TGATGATTACTGTAGATTTGGAGCTTTACACCGTTTAACTGGCTACGATT -ACATACAGACTTGTTTTAGAATATTCTGTATTTGAACCTAATAATACAAA -TTGCCGGTGTGCCGATTTGTCGGAAATTTTCAATTCCGGCAACTTGCCGG -TTTGCCGATTTGCCGTAAATTTTCAATTCCGGCAACTTACCCGTTTGCCG -ATTTGTCGGAAATTTTCAATTTTGGCAAACTGCCGGTTTGCCGATTTGCC -GGAAATTTTCAGTTCCGGCATTGTGCCGGTTTTCCGATTTGCCGGAAATT -TTCAATTCCGGCAATTTTCCGGTTTGCCGGTTTTCCGTTTGCCGGATAAC -AAAGTGTTTAGAGGGATTTTTTTATAAGAAGGAAACTCTTAAAACTGTGA -CTTTTTGAAATTGTTTCCCGTTTTCTTTCGATATTTTCATAGATTTTGCA -AGAATGCGTGCAGTTTTGCCAGTTTAGACGTAATTGAATTTCTGAAATTT -CAAAAAAAAAAGAGCAAAATCATAAATTTTTGACATTTGTCATTTTTTCC -GGTAATTTGGCGATTTGCCGGAAAAAAATCATTTACCGCCAACTCATGGT -ACGTCTAACCGCAAAAATTTTTTGGGAGCCTTTTCTGGCTTTCTTTCAAG -CTATCGTAATGTGACCACACACCTTTCTATAATTTTCAGTATTTACGCCA -ACCGAGAAGATCACAGTAGTTTAAGGTTATGGTGCAGTTTCTGGTCAATG -GATCAGGTCTCTTACCGCGAAAATTTTAATACCGTGAATGTGAAGCTTTG -AAAATTTTCTGCCGTAAATTGTCAATTTTCTGCCGCACTTTGTCAATTAT -CTCATAAAGGTCACTTAAGTTAGCCAAACCGTGAGCCAAAACTGCCCCTT -ATTCCTCATGCCGTCTTGGAGGAAATCTAGAGCAAACCCTGGTCCATATT -CGGACAAGGTCCCCTTTCTTCCCCCAAGCGTCTATCTAACTTTTCCTAAC -TACATATAACGGAATTAATAATCCTATCCCCAATTTAACGTGTCCTTAGT -TCTCTCCCTCCTCACCGTCTTCTAGTTTCATCCATGTCTCGCCTCATTTC -ACCCGATTGACGATCATCTCGGCTCCACACTTTGACACCATAGCGCGAAT -GAAAAAAAAGAGTGAGAAAAGGGGAAAAAAGTTGCTGCCCTATTATTAGG -AGTCAAATAGACACACACACACACACACTCAATTTTAATGGATTACGCAC -GATTTGACACCATCGACACCAATTTGGAAATGGGGGCACATAGATACATA -CACAAAAGGAGTTGTACTACTAGTTTTGGAACTAACATCATTCTAACATC -TTTTCATTTATGATTTGATTTATGCAAATGTCCTTGATTCGTGACTTCTT -GTATAGTAGTTGGGATAAGTATAATCATGGTAGTTGCTCAAGACTAAGCT -CTTTAGCAGTTTTAAGGTATGCCCCAGTTCGGGATTCCGGCTTGCTTTAA -GATTGTGTCAGGTCCGGCCCAGGTTGTCTAAAAAATACAGGTCTGCTCCA -GGACGGTATACCATCACTATATATAAAGCACGTGTCGTTCCGTCACTTTG -TAGTTTGATCTTTGATCTTTGGTCTTTGAACTCTGTAGTTTGTAGTCTCA -TCACACAAGAGAGGTCACATAGGCCCGGCCCCTTTTGTGACGTCATCACA -AATTGGCGGGAAATTCAAATTTTCTGAGAAAATATTTTGGCGGGAATTTA -AAATTTAATTTTTTGAAAACATTTTGGCGGGAATTCAAAATTTAATTTTT -CAAAAACATTTTGGCGGGAATTCAAAATTTAATTAGACTGTTCTCGGTTC -GGCCCAGATATATCCAAAGTCTTTCTCAAGACCACTCTAGATCTGTTCTA -CTGTTACCCAAGACTGCCGCTCCACACCCTGTATAAGTTGGCCCTAAGGC -TCCACTGAGTTTGATCTAAATCTTGCCAAGCCTGTATCATACCTACCTAG -GCCCACCACAGGTGCATCTCTCACAGATCTTCCACAGGTGTTTCTAAGTC -TGCATCAGATCTGCACCAGGTCTGTTTTTAGTTTTGCCTGGGTGCAGCCC -AGTAGTCTACCTCACTATCAAGCAGGTCCTGACACCAGTTCCTAGGTCTC -ACATTCAGGCTTCTAGGCGGATAGTCTACCTAGCTAAAGCTTCAACCTCC -ACTGTTTTAAAGGCTTCCCCTTTCTCAAACTTCAACTAACATTAATACAT -ACATATGTTATTAATTCGCGACTCGGCGACTAATAACAATAATTCAAAAC -CTCTTTCCTGGCAATGCTTCCGGTACTCAACACGGAGAGAGAGGTGGCAG -GTATCCGGTAATTTATTAACTCGAGCCGCGCACCCTGGCTCCCAGAGCAC -ACAGCCCCGATGATCGCTCATGCACGAGTACTCACGAGGTGGTGGTGAGA -GGTAGGTTGGAGAAAGCGGTTCTACCTTCACAAATTTCAATTTCAATTTC -CTCTCTCTCCGTTTTACTCGGGCCCCCCCCCCCCCCTTCTTTCAATTTTT -CGCCCCAAATTTGTGCTCCTTTAATGGAAAGTTTTTGAGTGTGTGAAAAA -GAGAGAGAGAGAGACACCTTCGTGTCACGCCAATTGCACTAATATGTGCT -CTCCCCACCTAGAGCTACCAAAATGTTCAATTCACAATTTCCGAACTAAT -TCGTGTCAAGTTTTTAGTTGGTCCTAACTCTTTGGCCTAGAAATTTAGAT -TTCTAGGTCATCCATCTAGATGCGGTGGCCTAGAATCCTAAGCTTTAGAT -GCCCAGGCCATCAGGCCTAGATTCTGAAATGTTGTGATTTTTCTAGGCCA -TCAACTTTGACCCAAAAGCCCTCTAATTTTTAGGCCATGAATCTAGGAAC -CTATCTAGAGGCCTGATCCTTTGCTTTCTTGCCAAAAACTAGAGATCAAT -GCCCTAGAAGCTCACAAAACTTTGGCCTAATAATTTCTAGGCCACCAATT -TTTTAAAGATAGCCTAAGTCATCAACCTAAAATTCACGGCTTAGAAATCA -TGAAATTCGCTTTTAAGGCCTCTGACTTCATAGCAGTGGCCTAGAACTCC -AACTGTCAGTAGTCTGTAAAAATGAGCTTTTTGGGCCTCGAACATAACAT -GGGACATGGAAGCCTAACATTTTTAGGCCACTGACTTTAAAGCAATGGCC -TAGAACCCCGTTTTTCTGTAGCCTAGACTATCATCTAGAAATCAATGGCC -TAGAATCCTAAAAATAATATTTTTCGGCCACCAAAATTTTAGGAATGGCC -TAGAAATCTATTTTGTTGTATTCTAGGCCACCATCGACAAAGGAATGGCC -TAGAATCCCTAAGAATGTGATTTTTAAGCTACCATCTATGTACCCTAGAC -CAATATTTAAAATTCAATGGCCTAGAAACTAGAATATTTGATTTCTAGGC -TACTAACTGTTGTGTGCTGTATCCTAGACTATCATCTAGACCCCAATGGC -CTAGATTCCTGAAAATGTGTTTTTTCGGCCTGAAATAGGCCTAACATTTT -CCAGTCCACCAACTCTTTTAAGATGACCTATAAGTTTAATCCTAGCTTGC -CAACTATAAATAATTGGCCTAGAAGCTCCTAGGCCACCATCTAAAAATCG -ATGGCCTAGAAACCTCCCATTTTTTGTATCCTAGGTCACCAACAACCACT -GATGCCCAAGACCCCGGCTTCTTATTTCATAATGAGCAGCAAAATGAGCT -ACCGTACCCCTTCTACACACTTCCTCCCTCTCCACACCCATTTCCCCTCA -TTTTCGTCTATTTTAGCGGCGGCGGCGCGGGATAAATTTGTGAGAGGTGA -GCTGCTCACAATAATGGGCTTGTTGTAATAGGCGGCAGTGGTAGTGGTGT -ATGGATAATTGTGAGTTCCCAAACACACAAAACTTTTTCGCCGCAATTGT -TATGCAACCAACATAATAATAATAATAATAATAAGTGAATGTGCATAAAT -GTGCTCTTTTTCGCGTCTCCACACCCGTCCTGATGGGGACGACGCTTCGT -TGAATAGTTGGAATAATAATAATAAATTGGAAAAATTTGGGCGCCCCCCT -CCTAACACCCTAACACACACGAAATTTCATTTCGCGCGCGCTTCGAAAAC -AAATTGAAGACAAGTTTTTCGCGAGACAAGTTATGATAATTTGTGGGATG -TGGTCCCCGCCGGCAGCTTCCATCAATTTGGAGCAAATTTGTGCTCTCGC -AAACCTTCTTAAAGAAGGGTTACACTAACAAAGTTTGTCGGAATCGATAT -TTTTGTAAGTGGGCCTGAACCCCCGGTCTTTAAATTGATAGGCATTCTAG -GGCTTCCATGGGAGACAGGCGCGGTTTTAGGGCCTGACGTCTGCCTCTCG -CCTCATTTCTGCACTATGGCGAGAAGCCAAAGACTTGGTGTTCACACTTT -GTGCCAGAGTGTCTCATTTCGGCTTGATCTACGTAGATCTACAAAAAATG -CGGGAGAAGAGAAGCAGAGTTCTCAACTGATTTTACATGGTAACCAGAGC -GTGCTGACGTCAAATTTTTTTTGGACGAAAAACTCCCGCATTTTTTGTAG -ATCAAAAACCGTAATGGGACAGCAGGGCTTTCCACCAGAATAATTCCACT -TCTTCACAATAAACCTATATATTTTTTGTCAAAATCTTGAGAATTTCCAG -AATTTCAACGAAAACCACTGCTAAAAGTGGTTCTTTCGCCGCGGCCGACA -CTTCTCGGGTTCCGCGCCGCACTATAAAGGAGGCGCGGCGCGGCAGGCGG -CGCGAGGCAGGCGTTTTGGCGCCTGCACGGATGCCCTACACCAAACTGCA -AACATTTCTAGTTCCGTTTTTCGGACTCTACGCCTTATTTCGGTCTTTTT -GTCACAACTTCGCTACACTGTGTTTTTCTCCACTTCTACGACTTTAAAGG -AGGGCGCATTTATGCGACTCACGTGATGTCAGGCAGTCTCATTGCGGTTT -GATCTACAAAAAATGCGGGAAACTTTCCACCAGGAAATTGTGACGTCAGC -ACACTCTTGCGAGATCAGTTGAAAAGTCTGCGTCTCTTCCCCCGCATTTT -TCGAAGATCAAACCAAAATGGGACATTCTGACACCACGTGGTGACTTAGG -ATCAATGTAGATCGTTTTATAGGCCATCCATTGATTTTTAGAGCTCGTGG -CGGGACCATTTTAAATGAATTTCCAAAATTTCCAAAAACCTAATTTTTTT -GTCAATTCACAAGTCCCCCGGACCCCCTCCATTGTCCCCCCGTTCACAAC -TTCCTCCCTCGTTAACCACCCATTTAGCGGGACAAAATTAGCGAATCATT -GACTCATAATCAAGTAAATCGGTGAATGCTCGACGAGCAAGAGGGGGGGG -GGGGGGTCTAATCGAATTACGGGGGAAGGGACCCCTCCGCGCGACACCTC -GCTGCCAATTAACAAGTCAACTACTTGGGGGGGGGGGGGGGCCTCCTCAC -AACAATGTTTGTATTATATTTCTTGTTATTATGATTATTATTATTATTAT -TATTAGAAATTAGTTAGTATGAATATATAATATCAACTAAAAACAAAATG -ACAGTTAATAATAATTGAAGTCATCCAATAGGTGCCAATTAGTCAAAGAG -AGGGGTCTGTGAAAACAGAAATAGAAGAGAGAAGGCGGGGGAGAGGGGCG -CTCTCAAATAATTAATCTGGGCTCCGTGGGCTCGTAAAATTCCGATAAAA -TGGCTTGTTTGTAATTAGCTAATTCACGGAATCTTTTTTTTTTGTTGGGG -TTTTACTATGTTTTTGAACAACTTCCTGTTATAACATGTTTCAAAAAAAC -TATTGACCTCAATGGGGACTTGAACCCTGGTGTTGAGATTGGTAGTCTGT -TAACCAGTACACCAAAAATTGCAATTTTTGATTTTTGTTTTGTCTATTTT -TTTGAATACAACGATAAGTAAGGATCATTTAGATTTAGAAAAAAAAAATC -AAATTTTGTAAAAATTTTCTAAAAAGTTATGAACATTCCACTTTCACAGA -TTTCTGGCTTCCCTCATAAATTGAAATGGAAGAGTTTTTGGCGAACAAGG -CCAGATGCGTTGCGTGTCGCGTCGCGGCTCGATTTTAGTTGTAATGCATT -TGTCCGTGTGGAGTCCACGACTTCCCCCGTTGTCCGCCAGACGATTGTAA -ATGGAGCGCGAAAAATTCAATGAGAAAGGCCAGAACCCCGTGCACTTTTT -TGTTTCTAAAACTGAAAATTTTGAATTTTGAAATTTTCCTTGGTTTTACA -GTATACAAAATCTTAGTTAGAGTTCGCAAAAATTATTGACACTGGTGGGG -GCTCGAACCCCTGAGGTGGCATCCCTGTTAGCCACTGCGCCAAAATTGCT -AAAACTTCAAAAAAAAAATTTTAGACCGTTTTTAAGGTTTTTAGACTTCC -GACTCTTCAAAAATTCCTATACAAAGTCTTCGTAAAACTAATGACTGGGG -GGCTCGAACCCCGGTCATCATATCAGTAGTCATCCCTGTTAGCCACTACA -CCACTTGCCCAGACGTGTTTCTGGTCTGTTTTACGGTGCAGCGTGGCCTA -AAAAAAACTAGTCAGCCACCAATTCGAAAAGTCCATAGACCAAGTTAATA -TAGAAATTCTTCAAATTCGAGCCAACCAACTAATATATTCACTAACCTAT -TTTCGCCGTGTTCTTCCTGTGTGTGTGTGTGCCCCTAGTTAGGCCTAGCC -CCCCCCCTTATTTTACTTGCTTCACAATTCAATTGGCCCCCACACAGTTA -CAGTAGTCATAATCATTTTGTGTCGGGTTTTCGACACATCGTTTAAACGT -GTTACCTCTCTCGGGGCCCCCTCTTCTCCTACTTCTTATTTGCTCAAAAT -TTGCGCGTCGAAATTTCTTCGTCGTGCGCTGCCCCTTCCGAATAATCAGA -TTCACCAATGTATAAAATAGGCCACGCCTCACTTTTTCCACACCCATCAT -CTTCCCTCAACTTTCCTCTTCTCAAATGCCTAATCAGCCAGTTATAACGA -GGGTGCTCTTCGTGTGGCGCCCCGCCCATTTTATTGCTCCTCTCACGCTT -CATTCTCACTTTTTCTGGGGATCCTTTTTTTTGCAGACCTAAAAATTTGA -GCTCAGCCATATTTTTTTTGTAAATATAATCAAAAAAAAATAGACATTAG -TCAAAAAAGTTGTTTTAAGCCTAAAAAAATTTTTCAGATAAAAAACGTTT -TTCTTTAACTTTTTTGAACAGTTTTTCAGTGAAATATTTTTAAATTTTTA -TTTTAAAAAAATGTTTGTTTATCTAAGCCTAAGCCTGAGCCTAAGCCTAA -TAACCCTAAATAGCGTCAGTGTGGGAGCTCACGCTCCCCCACTGACGCCA -AGCCTAAGCCTACGCCTAAGCCAAAGCCTAGGCCTAAGCCTGGGCCGAAG -CTGAGACCTAAGCTTAAGCCTAAGCCTAAGACTAAGACTGAGTTCAAGCC -TAAGCCTAAGACTAAGCCTGAGTCTCAGCCTAAGCCTAAGCCTAAGCCTA -AGCCATTTTTAAAAAGCTTAAAAATTTTTGCAATTACTATTTTTTCTGAA -AATCTGTAAAAATATCGAATTTTTAGAGTTGCTATAAAATTTAAAATAAT -ATTCAAAAAATAATCCGAAAAAATTAAATTTTTTTTCTCAAAACGTAGAT -CATACAGAATCAGCTTTAAAAAATTCAAACCATTTTTCGTTTCAAAAATG -TTCAGAAAATTTGTAAAACTTGAGTTTTGAAGAAAGTTTTCATAAACTAG -CTCTTGAATAGGGTTTTTAAGTAGGCGTTAAAACGCTTGCCTGCCTGACC -TTCAGGCGACTTTCGCCTGCCTGCTTGACTTTCAGACGTTCTCTGCCTGC -CTGCCTGACTTTAAGGCGACCTCCGCCTGCCTCTCGCCTCAATCCGAGCC -TTATCTCTTAAAATGTTTTTCATCAAATTGATAAAAATACGGAAATTACA -AAATTTTGTAAGTTCATGCCAAAATGCAGGCATCAGGCCCTGAGGCCACG -CCTGCCTAGGCCTCCGACTTTCGTTCTACAATTGTCGTTGCCGTTTCCTT -TATCCCATTTTCATACCCCAAAGTTATGATTTTTCTTACACCCCTTGCGC -TGCTGCTGCTTCCGCTCCCGTGATCTTATGAATCAGTAGTCAGAACTGCA -GGTGTGAATCTCCACAATGATCACCCAATAAACGCGAAACACCATTAGAA -ACAAAGTGTCCCCCGTTTTTTTTTTCTGAGAGTGTCGGCACCCCCCTAAC -ATATGCGGGGAACATTGTCTCAAGTTTTGTGTGCTCCTCCAGCTCCTCCA -TATGGTTACCGTAGTCCCCTGTCAGTGTTGTGTAATTGTTGTTGTAACTA -TCCCCCGAATACCTCTCCTCACATTCATTCACAACACAGGTGTCAACTCA -ACTCTCAGTGCTCATTTGAAGTTTATGAAGTTTAGCTTCCGGGGATGGCT -CTCCTGGGCTCCCCGCTCCCTCGAAAATTTAATTAATTGCAAGCACATGT -GGTGGTGGTGGGGCGAGCTCCGCGCTTCCCCCCCCGCCCCGATTCTCTCT -CTCTCATTTGCGACTCATTAGATTTTAAATCACTCTCAAACTTTCCACTT -TTCCAACTTTCGCGTTTTTTAAATTTTTTTTTCACTTTTTCCTCACAAAT -TCATCCAAAAAAATTTCCAGAGTTGCCCCGCCCATATATTGGCTAAATGG -TAGAATGGACGTGGCACTTTTGACAATGGATGACAACAACAAACCGCCGA -CAAGTTCAGAGTCTACGGAGAGTAGGGGTGAGTTTGGCCGGGGGACCGAT -AATTTTTAGGCCAAGACTTCTTTTTTTTTAAATCATTTTCAAAGGTACGT -TACCTTCACGTGGTGCCAGGTTGTCCCATTGCTTTTTGATCTACAGAAAA -TGCGGGATTTTTTCCCCAAAAAATGTGACATAAGCAAGTTTTTAAATCTT -TTCTCCCGCATTTTTTTGTAGATCTACGTAGATCATACTCTGACACCACG -TGTACCTTGAACCTCCTGGCTTTCTGAAACTAGAGTTCGTCGCTAGAGCG -CATTTGCATTGTCGTGGTATTTAATTTACAGTACCGCCAGAATCATGTCG -CGCCGCTTGTAGTCTAGTGGTTAACACGCTTCAGCTCTAAACAATAGGTC -CGGGGTTCGATTCCTTGCAAGATGAAATTTCTTTCTCAAGATGGAGGTAC -ATATGTGCTTTAAATGTGCACTAGAGATAGCGAAACTGATACCATGGTCC -GACATGTACAGGGTTCCGCGCGCGCCTAGGGCCTCCAAAACGCCTGCTGC -TCCAGTTTTGCGGCGACCTCCGCCTAACTCGCGGCGCGCCTTCTGTATAG -TCACGGCCTTCTGTCTTCCCTCATAAATTGAAATGGAAGAGTTTTTGCCG -AACTAGGCCATCTTGGCTCGGTCACATCTGGGCTCGATTTTAGTTGTAAA -ACTAAATGTATTTGTCCGTGTGGAGTGCACGACTTGCCCACGCGTTGACC -GGCGGGCGATTGCCAATGGAGCGCGAAAAATTCAATAAGGAAGGCCAGAA -CCCCGTGTATAGTGCCGCGCGTGGAGCCCGAAAAGTGTCAGCCGCGGCGG -AAGAACCACATTCCATAGGACTAAAAAACTAAAGTTCTCTCTTTCAGAAA -CATCACCACCAATGATGCCAGATTCTGCGGAGATAATGCGACTTCTTACG -GATCCTTCGACGGCTCAGATGTTTGGTAGGTCATAGATCAAATTTTTTCC -GCAATTTCCCGAAAAATTTCAGCCAACGAAAACACAAAATGTCAGCTGGG -ACGGATTCTCGCCGCGTCAGGCTTCGACGAGGCGAGCCTCTCCTCCTCGT -TTCCGTTCGATCCGACGCTCGGCGCGTTCGCCGACATTTCCCAATTCTCA -TCACTCCGAAATTCGTCGAAAACGCTGAAATGTCCAAAGTGTAATTGGCA -CTACAAGTACCAGGAGACCCTTGAAATTCATATGAAGGAGAAGCACAACG -ATGTGGATGTCAAGTGCATGTTTTGTGCCGAGAACCGTCCCCACCCGAAG -CTGGCTCGCGGTGAGACGTACTCGTGCGGTTATAAGCCATATCGATGCGA -TTTGTGTCGGTACAGTACGACGACAAAGGGCAATTTGAGTATTCATATGC -AAAGTGATAAGCATCTTCATGCAGTGCAAGAGCTCCCGAATAGTATAGGT -AGGTGGGGGGGGGAGGCGAAGGGTACTGTAGTTTTCGTGGTGGGACCCAA -GAATTTGAATTTCACAAGAATTTAACTGTTGAACTCGAACTTTTCGATTC -TAGGGTCTCGCCACGCAAAAACACTTACGCCAACTTTTTTGAACCCTAAA -AAATGATACTCAAATTAGAGTTCTCAGTGAGCTAAATTCGATTTTACAGT -ATTTTTTTAATTTGACGTTCTGTGGGTCTTACACTCAAAGGGTACTGTAG -TTTTCGTGGTGGGACCCACTTGTCCAAAAATGGACGTGATTATATTTGGA -TTAAAGCCCCTAACTTTTCTGATTTTTTTAATAAATTGGTTTTATTTTGA -AAAGACTGAGAAAATTGAGTTTAGATCGAAATCAATAAAAATCGCGTCGA -GACCCAAATTTCCCGGGTCTCGGCACGAAAATGGGGGAGAGGGTACTGTA -GTTTTCTGGCTTCTCTCATAAATTGAAATGGAAGAGTTTTTGCCGAACTA -GGCCGGCCATATCTGGGGTAGATTTACGGCGCGTTGCGTGTCGCGGCTCA -ATTTTTGTTTTAAAACATGAGGAAGACCAGAATCCCGTGTTTTCGTGGTG -GGACCCAAATGGGTCATGATTATACTTATTTGAAAGGCCTTAAGCTGAAT -TCAGATTTAAGATTTTTATTATTTTAATTCAAAAATATCCTGAATTTTCC -AGAATTCGCAGCCAACTTCGCGTGTGGTGCTCCAGTTAGCCGAAGTAGTC -CAATCGAAGAGTCCGACGGATCCCTGGTCTGCTTGATCTGCGGTATCTTC -GCCACCGAATCTATCGCCGAAATGATGGAACACGTGGAACAAGACCGTTC -CAGGACGTTCCAAGGAGACGTTACCGTCCTAAACGGGAGCTTCCGGTGCC -ACTTGTGCCCGTATAATACCACATTGAAAGCCAATTTTCAACTACACACA -AGGACGGATAAGCATCTGCAAAAGGTTCAAATTGTGAGTTTTGTATTCCC -CTCTCATCATCTTCTTATTTTTATTGTGTCGCCCTTTTCCCATTTTTGTG -TGTCTGTGTGTGTATGCGCACCGATTTGCATATACACATAAATTCATGAT -TTAATAGCGTAATGAGTAATATTTGCTTTGCCAAGGCTAACAGTTTTCGT -ATTTTAAAGCCTTTTTTCTACAATTTTTGAAAAAAAAATTCAAAAATTTG -AACATTTCAATATATCCCTAGAAAGCTCAAAATTGTAGTGAAAATTTTGA -ATTCAGTACGCTGAGACCTTTAAAATAAGTATAATCATTACTAGGTTTTG -GTTCTGACGCGAAAGTGTTCGTGGCGGAGCCCAAGCAAGGCGTAATTGAT -TATAGGGTCTTTGCACGCAAAAAATTTAAGGTCCGGTAGGCGTGGCGGGG -AGTTTTTCTTGAATTATTTTAGTTTTTCATAAATTTTCAATTTTTTGGAA -TTTATTTTTCTCTCCCTTCCCCCGCGTAGTCTGAGCCTAAACCTAAGCCT -GAGTCTAGGCCTAAGCCGAAGCCTAGGCCTAAGCCTGAACTTAAGTTTAA -GCCAAAGCCTGAGCCTAAGCCTAAGCCTAACCCTAAGCCTCAGCCTCAGC -CTAAGCCTAAGCCTAAGCATAAGGCTAAGCCTAAGCCTAAGCCTGAGCCT -AAGCTTTAGTCTAAGCGTAAGCCTAGGCCTAACCCTAACCCTAAGCTTAA -GCCTAAGCCTAACCCTAAGCCTAACCCTAAGCCTGAGCCTAAGCCTAAGC -CTAAGCCTAAAGTCTTCGTGTCGAGACCCAATTATACTCAATTGAAAGCT -CACAATGAGCTGAATTCAAATTTCTCAATGAAAATGTGAAATACTTTGAT -TTTACGGTCGGTGGCTTTACTCCCCCCGAACTTTGGAAAAAACTCTGAAA -TTTTTTTTTCATTGAATTCCAACCGGTTTCTACTCTCTCCGGCTATTAGT -GTATGTGTCTTTCACTTCTTTGTTCTCGTCGGGTTGTTCCCAATTTCCAA -CCCTCGTTTTACTCATTCCCCCTCTCATTTTCCCAATCCAATTAGTTATA -CCTATGGGGGGAGGTGACGGTGATGATTCTCGCCATTAAGACCCCCCCCC -TCTCCTGGGCCGATTGAGATGGAAACAAAACAAAACTGTCAATTTGAATA -AATTCGCAATTTGACGCGGGCGGCGCAGCGGGTTGCCGAGAAGGATATAA -ACTGGGGAACTCTACTTAGCCCGTAAGGTGTCGGCTGCTACTATTTTATC -ACATCTCAATTTTTACGGAATCCCGTAAGGCGTCGGCTGCTTCTCTGTTT -TTGCATGTTTTTACAATTTCGGCCCGTCCGATGTCGGCTCCTTCCAATTG -TTTTGCAAAACAATTTAAAATTTGAGCCAGCAAGGTGTCTGCTGCTCCGG -CTAGATTTCCAATATTTAAATTTTGCACAATCCTGTAAGATGTCGGGTGC -TTCTCAGTTTTTACAAAGTTTTTTCTCAAATACGGCCCGCGCAGTGTCGG -CTGCCACCTCGTATGTTTCATCAAACTTGAACGATTCGAGCCCGTTAGCT -GCCCGCTGCGTCTTTTTTTTTCTCAAAATTCCAGCCCGTAACTTTTCGGT -TGCTGAAATAAACAAAATTTTTACGAAATTTTAACCCTTGAAGTGTCGGC -TGCAAATTAAGATACCTACTCATTCAGATTCCCGTCTCTCCCTCTCCCTC -TCTCTTCATTGGGGAGTCCTTCTCCCGAGAGAAAATGAATAAAACTGTCA -ATTTGAATAAATGCACACAGCGGGAGATGTTTTTCTGTGAAGACTCCACC -GTCTTCTTCGTCTTCTGCCTATTAAGCGATGATCCTTTCACTTAACTGTC -GTTCCCTCCCCCTCTCCACATACCAATAAACCTTGCCAAAAGGTCGAGTA -TGCTTTGCCCGCCATCGTGCCGGAGGTCTTTTTTCTAGACTATGATGTTT -TTTTTTGGAAAAACATTTTTCTATGGATCGATGCACCATGATGCCGAGTT -GCCGAGTTTTCAATTTAATCAATTTTGAGATTTCAATTTTAGTCCCTTGT -ACATATTAATTTTTTTGGAATTAACATTAAAATTTGATAAACTGTAGCTA -CAACTATTTATTTTTGTGCCAAATTATACTATCCAATTTGACTTGTCTCT -TGATGCACCATGACTAACTTTCTAAGATCTCATATTTTGGCCTAAAATTA -TTCTCAAATATTTAAATTTAAACTTTAATCCTATTTTTTTTAATTCCTCG -GAAAAAACCCCGTTAACAGAATTCCCAATTTGGCCTCCAGGAGCTTTTGT -CGATGCACCATGTTCAACATTTTTTCAAAATTTTGCTCATTTTGACCTGA -AATTTTGTCATTTTTTTATGTTGCAGGGTTTTTTATTTTGTGATTTTTGC -GATGAAAACCACATTATGTGGATGAAAAAAGTTTGGAATCTAGTTTTCCC -GTTAGGCTGCCATATTGCTATGTAGTTGATGCACCATGTCCAGCTTTCTG -AAATTTTACTTTTTACATTTTTTGCTCAGTTTGACTTTAAAATTTTGTTA -GTTTGACCTTAAAATTTTGTCAGTTTGACATTAAAAATTTGTCAGTTTGA -CCTTAAAATTTTGTCAGACATATAATTTTTTTGTGTTTTTTGGTTAAAAA -ATTGAAGGTTTTTCGCGATATTTAACACATTACATGGAAAAATTCTTTTG -ATCGAGTTTTCTAATTTGTTCGTGTAGCAAGTCGATGCACCATGTCCAAT -TTTTTAAAATTTTACTTTTTTTAAATTATTTGCCCAGTTTGACCTTAAAA -TTTTGTCAATTTTACCTTAAAATTTTGTCAGTTTTACCTTAAAATTTTGT -CAGTTTGACCTTAAAATTTTGTCGGTTTTACCTTAAAATTTAATCAGACA -TATAAACTTTTCTGTTTTTTGGGTTTAAAAATTGATTTTTTTTGCGTTAT -TTAACACATTAAATGGCAAAAAATCATGCACCATGTCTAACTTTTTCCAA -AAACACTTGATTTTTCCCTAAAAGTTTGTCAGAATTATACATTCCTTAAG -TTCAAAACCGTACGGAAAAATTAGAACCCATGTCGATGCACCATAAGCTT -TGGCTCGCTGAGCTTCGTTGCTGCTCCTGCATATCTCTTACCCCCTCTCG -CCGCTCTCAGAACATTGACCAATTACTTGGGCGGAGCGCCGTTTTGAAGT -CGATTGGCTGATGAGTGTCCCGCCCCGCCCCCCGTCCCGCAAATTTTCGG -AGGAACTTTGCACTGCACACACACACACACAAATACACAAATACACGCCA -ATTATTGTCGATTTTTCTTGAAAATTTCTTCATTATTGTATATTGACTTT -TTTTGTCGTCCTCTAGTCTTCCGCCATCCTCGGCGTCTTCATTCGTTTCA -TTATTTCATACACCTGTTACCACTTAATTCGCCTATTATCCTCCTCATTA -CCTTCATTTTTCGGTCGGCGTTGACGTCGACATTGGCGCCCGAAATGAGA -GGAATAGGGGGGGGGGGGGGGGGGTATAGACGACGGCGACTACGACAACC -ATGATGACGATCATTTTCGTTCTATTCATCTAATCCTGCTAACCGTCGAT -TTGTCCCCCTCCGTTTTTCAACTTACCAAAACTTTTCGGTTACCTTGGGA -ATTGGTCCCCTTTTATAGGCGCGTAAATTGACAACATATTTTGCTCACTT -TTTCGAAGTTTCACAATTTTTAGTTAGTCCGTTTTTTCAATCTGGCCGAG -TTTTCAATTTTCCCCGGCCAGGGAATTCTAGTAGTATTCACATAATTTTT -CTTATTTTTGGTTTTCTAGGCTACGATAAAACTCCCTATGCCCGGCAAAA -CTTCTAGGTCCCCCATTTTACACCTGACTTCCTACCTATCTGAAATGCCT -ACTTGCCTTTCCACCTGACTAAGATGCCTACCTACCTAAAACCTACCTAC -CGAACTATAAGATGACTCCTTACCTACATAAGACTTGCCGATCTGAAATA -CCTACCTACTAAGACATGCTACCTAGCCTACCTATCTAAGATACCTACTT -ACATATAATGTACCGACACAAGACTTGCCTACCTACGCAAGGCATGATTT -TTTAGACCTACCTACCTGTACTTAAGATTTAAGACCTAGATCTTATTACA -TAAGAATTTTCATCTTAGATACCTACTCAAGATCCTACCAAAGATGCATG -CCTACCTATGACCTACTTACTTAAGATACCTGCCTACCCAAACCATACTA -CCTAGCGCTAGCGCCCACCTACCTAAGATACCTACTTACCTATAATTTAC -CTACACAAGACTTGCCTACCTACGCAAGGCATGATTTCTTATTGTTAGAC -CTACCTACCTAACTATAAGTACTTAAGATTTAAGACCTAGACGTTATTGC -ATAAGACTTTTTGTCTTAGATACCTACTCAAGATCCTCTTACCCAAGATA -TACCTAGATGAACTTCCGACCTAAGATGCCTACCTACCTAAGCCCTGTCT -ACCTAAGACCTACCTATAAGAACTTCCTACCTAAAAACACCTACCTAAAA -TAAGCCTTCAAGCTCAAAAATTTTTAGAGCATCTGCATGAGATAAGGCTG -AAAAATATTAACGAATAAGTGGAGAGCGATTAAGTTCCTGCCCTCTTAAA -GTTCGGAAGTAGGCGCCGCAAAACCCCATTACTATTGCTCATCGAGCCAT -TTCCGGTACTCAGTACTTTTTCATCCCCCACTCACTTTTTTCTCTCTTCT -CGATTTGATTTGCATTCTTTTTCCCCTCGAATTTCGAGCTGAGCCCGGTT -GATTTCCCGCACTTTCTCAATTCTTTCCTTAAGCCACCCCACTTGACCAG -GAGCAGTTCATTCAAACTCGCACTTAATCATATTATGACCCCCCCCCCCC -ACCCCTCTTAATTTCCTAATCCCCCTCCCCCTCCTCCTCATAATGACCAA -AAGACAATTGCAGGCGAACCATCTTCGTGAGGGAACCCGTCCGCACACGG -CAATCTACCGTCTGTCGAGCACAAAGACGAGCGTTCAAGTGTTGTGTCGA -CAGTGTCAGGAGGTGATTTCCAGTGGCGAATCGCTCCGCGAGCATCGACA -CTTTCACGCCCTGCTTGCCGCCAAGCAACGCTTGTGGCGATGCAAGTTGT -GTAGGCTGGAGTTCGACTCGGTTCTTCTTGCAGCTGGTGAGTCTTGATAG -TTTTTTTTAGGAAGAAATTATATCTGTAAGTCCCCCAAATATAAGGCCCC -CATGTCCATCTTAATGAAGCTTCTGACTTAATTTTTACTATAGATTTTGA -ATTTTGTCTATCGGAAGAAAAATTAGGTTCACCATGATTTTTCGATTTTT -TCGATGCACCATGATTTGTTGCTAGAATAGAAAACAATTCGTGGCCAAGT -TTTTTAATTATTTCTTTTTGTCGGCCAAGTTGCAAAAGTCACCTTTTGTG -TATGGATGCACCATGACCCTTTTCAGTGGATTTTGGCCCAAAAATCGTCA -AAATTTTGAATTTTTAAAAATCAAACTCTAAATTACCTTTTTTTTTCAAA -TTTTCTTAACAAATTGGAGCATTTTAGAAAGTTCCGATGCACCATGATTT -TTGCTAGAATTGAAAAAAAAATTGTCGGGCAAGTTGCAAAACTCACATTT -TATGTATCGATGCACCATGACCATTTTCGAAATTTTGCGGTATCTATTCA -AATAGTGCACATAGCCGTAAAACATTGGTGGTGGCCTCGTTTTCTCATGC -TTCGGCCACGAAAAAAAAAATTCTACAGTTTTTTGGATCGATGCACCATG -ATTATTTTTCAGTGAAAGCCTGTTTTTGCTTAGCTCAAAGGCCGGCTTAA -TGTTCCCACAAAACGTAATCCAAAAATTTAAATTTTACCGTCAAACTTTT -AGCCTGGCGTACACTAAAAATTGTAAAGTTTCAATATATCAAAAATATTT -CTGGCCTATAAAATTAAACCTGAAAGCTTAGAAATCCAAGATATTTTTTA -AAAATTGATGTCCAATACATGGGTGTGCAGCAAATCTTAAAGTTTGCCGT -GCTTAACAAACTCCGAAAAAGTGTGATATTTTTTTATGCTTTTTGGAGCA -CCAAAACTACTGAATTCGAGCTTAGCAAACGGCAAATTCGGCATATTTGC -CGCACACCCCTGGTCCACTAGTTAAGCAAAACCCACCGCTGAAAACTAAT -CAATTGGTGTTTGAAACGGTGTGTGCTACTACTAGAATTTCGCTGTTCAA -AATCTCTTTATTAAACACTTCTTTGTGTCTATTCTGCCCTTTCCTCCTCC -CCGCGCAAAATCCACTTGTACCTCTAATTACGGTCAACAAGTTTGCGGGT -TTAGTTTAGTGAATGAATTGTGAAATGAATGAATGAATGAATGGATAGGT -AGGTGTGTATGTATGTGGAAAAGTGCGACACACACAACCAGCCGTCCACC -ACCGCCACTACCACCAGCAGTAGCAACAGCCATCAAATATAATCCTTGCA -TTTCATTATTTCATAGTGTCATAGATAGTAGCAGGCCCGAGGTCCGAAAG -GCCTTGACAGCGGTTTATATTCATTTCATTTGACACCCCCCCCCCCCCCC -CCCCCTCCTACTATTCTTCTTCTCTACCACATACATTCACATAGTCAGGC -CATTCATGTTTTTCACACAATTTTGTTAATAAAGCCGCTCTGGCGCCACC -TCTCAGTAGTCCTTCTTCTTCATCATCATCACTCCCTCTCCCTTACCAAT -AACCAAAAACAGTCATTGATGCGTATCGGAATTATAATCGCGCATTTATT -GTAGGACACATGACTTGCCACGAGCCGTCCACTTGGCCCAACGAATCACT -TGGTGAGTCTCTTTACAGTGAATCTTGAAATTTGTGTTGTTTTGTTGTGA -AATATTGTTAATCGTTTTTTTATTAGTATCTCCAATTAGGCCAAAACTAT -AATCGTGAAAGAATAGTTTCTGCACATGGTGCATCGACCTGATATATCTC -ACTTTTTTTGGGCTTCATCAAAAACTTGTTAGCTAATTATAGTTAAGCAT -CACATCTATTGATATGTTCAATTTGAACAGAATATGGTGCATTGCATTGT -ATTGCAACTGAAACAATTTTATTGGCGCATAACATTCAACTATGTAGTTT -ATGTACATCGATCTTAATTACCGTATTTCCTCTATTAGTATTGCACCCGA -CTAATTAACTTTGAAACGTTATATCTCGGTTCATATTGAAGATATCAATA -TATAATTAACTATGAAATAATAGCAAAAGAACTAACAAATATTTTGTTAG -TTGACCATTTTTGAATAGGACAAACGATTACGGAGATATAAGCTGTCAAA -AGTGGACAATGGGGTGCAATACTAATTGTGTAAATACCTTATATCTCGGT -TAGCTTTGGTTTTAACAAAAATTTTAAACTGACAAAATATAAGTCATCTA -AATGTCTATAGTTTTGTAGTTAACAATTTTTTGATATCTTTAAAATGAAC -TAGCGATTTTCGACATGGTGCATCAACCTCAGTTACCTAGTCTAACTTTG -CTGGCTTATTTCTTAGTTTTAGTATTAACCGTTCATTTTAATATACTTTT -ATAGATAGTTAACAATTTTTTGATACCTTCAAACTGAACCGGAGCGATTT -TAGACATGGAGCTTTGATCCTATCTTGCCTTAATTTTCAAGCTTATCTTT -TTGTTGTAAAAAAAATTTAGACATGGTGCATTGACCTGAACTACCTGATA -TATCCTACTTGATATATCTTCAATTTTAGCAAGTTTTGGAAAAAAAAAAT -TTTAATGAAATCGATTTTTTTTTTCAATTTTCAACCTTCCGGCCAAAATT -TTCAATTGAGTTTTGACCTTTTTTTTTAACCCGGCAAAAATCTAAAAACT -CCCAAGAACAATCTCCCACAAAAAACTAAAAACTTGTGAATCTAGATTAG -TCAAAAATTTGCACCTTCTTCCCATGGGATGGCTCAATCGAACCCAGTTG -ATGAATCGGCCTGTGGGCCGCGAGCAGTCGCCGCTCTAATTTGGAGCATT -TGTATATATATAGCGAAGAATTTCACGTGACCAATGAAACCAATAGAAAT -CCAATCATATTTTTGTTTTGTCTCTAAATCATCTCTTCCCTCTCTCTCTC -TTGCCCCTCCTTAACCAATCAGAGACGCACACACCGCACCGCCCGTCCGT -CATCGTCATCGAGTTCCGCAATTAGTCGTCTATTCTCTCCGTTTTTGATT -GGAGATGGAGCGAAAATGAAAGAGAAAGAACGAGAGAGAGAGAGAGAGAT -TAGCTCTTAGATTCATTCAACTAATCTTGAAATAACACACACACACACAT -ACACAAATGAATTATCTTCATTTCAAATCATGGAAATCAGCAAATTCGCT -AGAAATTTCATGGAAGGGGAAGCTTGAATTAGGAGCACTACTTGATACCG -AGTTGGAATTGTAGTCTTTTAATATTTGAAGAAATATCACAATTTTTCAT -TTTAAACTTCTAAAAATATGCAAGTTACTTGATGCATCATGCCTCTTTAG -ATAACGTTTTTTTTAGGCTTAGGCTTAGGTTTAGGCTTAGACTTAAGCTT -AGGCTTAGGCTTAGGCTTAGGCTTAGGCTTAGACTTAGGCTTAAGCTTAT -TCTTGAGCTTAGGCTTAAGCTTAGGCTTAAGCTTAGGCTTCGGCTTGGGC -TTAGGCTTAGGCTTAGGCTTAGGCTTAAGCTTAGGATTAGGCTTAGGCTT -AGGCTTAGACTTCTAGATACTTTCTCAAACCACCAAATTACTGTATATTC -TCTATCATAGATACTACTTCCATTTGGCAGCTTATAACTCAAGTCTTTTG -TTAGAGATATCACTAGCTTTAATTACAACATTATAGGTTAATAAATACAC -CATATTTTGTTAGTTTAAATTTTTTGATTAACCTAACGAGAACCGAAATA -TGAGTAGTCAAAGATTATCGATGCACCATGGTACTACACTTTACTTTGCC -GGCTCATAACTCGGTTTATTTTCAGGATATCAAAAAGGTTTTTACTACAA -ACCTATAGAGAAACATATAATAAAAATATTACTATTTTGCAAAATTTTGG -TAAAACTAATAAGAATTGAGATATAGGCCGTTGAAGTTGCATGATGCAGT -TCAAAGCCTACGGTTTTAGACTTATAGCTTTAAAAGGAGGTACCGTATTT -CCTCTATTAGTATTGCACCCATTGTTCAACTGTGACATCTTATATCTCAG -TTACTGTTTGTTCTAATCAGAAATTGTCAACTAACAAAATATTTCTTAGT -TCTTTTTCTATCATTTCTTAGTTGACCATATATTGATACCTTTAAAATAA -ACCGAGATAAAACGTTTCAAAGTTAAGTAGTCGGGTACAATACTGATGGA -CGAAATACGGTATTGAATATTTTGATCTACGTAACTATTTGATCTAAAAT -CTCGATATCATTTTAATTTCTGATCCATAGCTTTGCGTTCAATTATCCTG -CCTAAAAAATCTCTAAAAATAACGTCTACGAGAGCGGGTGAAACAATAGG -TGGTTAGATGTAAGTTGATACCCCTGAAGGGCATCCGGGATCCCCGCGCA -AAAACAGTACAAACATGAGATGTACAATCCCCCATTTTTTTGTGGTCGCT -CTAAGTTGAAATCGATGCAAAGACATTGTCAATATAGCCGTGACGCGACG -GGCGGGTGGGCTGGCGCGCTCGATGAATCAAGATCGTTTTGGGAAGAGAG -GGACTGAAAATATTAAAACAACATTTGCATTTTGTAATTGTTTGAATCAT -CATCATCATCATCATCATCAATCATATCATAGAGGTGGCGAAACTTTTCC -TGCTGGGAATGTGTCTCCTTTTTAGTACAGTCAATAAATGTGTCACTTTT -GAACGGGGGAAAAGCTTTTCTGCTTTTCTTCGCTCTCCACCTCCTTCCCT -CCTCGCTCATAAATTTCCATTTTTCTCTTTACAAACATTGATTGATTTCC -TTATTCTATTGACTTTCTGATATTAAATTGATCATCTACTAAAAGGTATA -TATATATATAAGGTATATCAACTCTTGGAGCCCATATCTTTAATGCTCAT -CAAACTCCCAGTTAGGACTGGGAGTGAAGTACTGGGTGGTGGGATAAGAA -AGTTAGGATGTGACGGGTTTCATGCTCATCTCGAGCTGCCAATCTTGCAC -ATTAAGCAATTGGCTCATTGGCATGCTCTTGTCCTCTGGGCCTGCCGCGG -AGCCATCTCCCGTTTGATATCTGCTCCCGGGGGACGTTCCCAACTTGGCC -GGAGAGAGGCGCCGCGAGCAGCACAAGCTCAACCAAAACTTTTCTAATGT -AATGGGCCGGAATTAGGGGAAGAACAAACGAAGGAGAGGGTGGGGTGGAT -GAGGAAGAGAAAAGAGCACCACCACCAACTGATTTGATGGTTGGAGAGGA -GCTCGTTTTGTTTTCTTGTCGTCGTAAGAAGAAGAAGAGAAGCGCGCTAG -TTAGTGGTTAAACGAATCAAGACCCGAATGTGATAGATGTGCCGCCAATT -TAGCCAGTAGGATTTTTGCTGATTTTGCACACATTCATTTTTCGCTTGCC -TAGACATTACATCCCATCTTATTCCGCTTCATTCATTGTCGTGATTTTAA -GATTTGGGGGACCTAGGAGCCTCTACAGTATTATTTAAATTTCACTTTTG -TTTGGATTTTGAAAAGAGATGCGTCATACATATTCATTTTAAGGCACCTA -TGTATACAGTTCAAAATTTTGGAACATTCCTGGAATAGCGATCTTAAAGC -GGGAAATATAATGACATTATCTGACAATTTTTTCGAACACCTAAAAAACT -TGAATAAAGCCAATTGAATCGTATCCCTAATGGTTTGCAAAGTTGGGCCA -TGCTCTGAATAGCTTAGAGTTCCATCCTGACCTGGAGCTCGCCAGAAGCT -GAACGCACTGAACTTCCAGTCAAGCCTCTTTTGAATAAGTCTAGTTGCAG -ACTAGAAGCCTTAACTACCTGATGAGATTTTCACCCTTCTCTCATTAGTC -TATTTCATTAAGCATGAACTTACACGAGAATTCCAATTACATTACCATGT -AACATTACTTAAGATCCCATTTCCACTTAATTTGTGAAAATCGATACGGT -TTTATAAGAAGTGTTTTGTCCTTTTGCCTATAGCCTAGAGCAAAAATACC -CAAATTATTTGGCAGATCATGTCTCCGACAATATTCTGATCGATTAAGAA -ACTTTTGCAAATCTGCTCGGTTTTTTAGTCTACATTCGCCCCCAGATAAC -TGTTCTCGGCAAGTTGCCGATTTGCCGATTTGCCGGAAATTTTTCTTTTC -GCCAACTTACTGATTTGCCGGAAATGTTTAAGGGATTTTTTTGAAGACGG -AAAATTTTTTCATTAGATATGTTCATAGAATTAGCTTGCATTACAAAATA -GGTGTATGAACATATTCAAAGGATGCGTACAATTTTGCCGATTGAAATTG -AAATTCTGAAATTTCCAAAAATAAATGTGCAAAACCACAATTTGCCGTTT -TCCGGCCAATTCGGCAAATCGGCAATTTTCTGGGTTGCAAATTTGCCGGA -AATTTTCAATTCCCTTTATTTGCCGGGTTGCAAATTTGCCAGAAATTTTC -AATTCCGCAAATTTGCCGTTTTTCCGGCCAATTCGGAAAATCGGCAATTT -TCCGGGTTGCAAATTTGCCGGAAATTTTCAATTCCCTTTATTTGCCGGGT -TGCAAATTTGCCAGAAATTTTCAATTCCGGCAATTTGTCAGTTTGCCATA -AATTTTCAATTCCGGCAATTTGTCGATTTACCGGAAAAAATCGTTTGCAC -CCACCCTTGATGTGAACGCTAGCACTACCTCCTAGTATTAAGGCTCCAGC -TAATTTCTATATCATGGCTCCCAACTATACGTTCCTCCCTCCTCCCCCTT -CCCAATTTCGAATGGGCGCCAATTATTGCTCAATTCCCATCAGATTGGGG -GGGGGGGGGGGGGGGGCATTCGTACAGTGTCAACACGAATAATAATTATG -AGCCCTCTTCTATGCCCAAAGCGCGGCGTCTTCTTCTTCACCCCTCTAGG -AAGTTCTCATAATTAGCATTTTGTAAGACTCGGTGTCCCCCTTTCAAGTA -TCTCTGGATGATTCCCCCCTCTCGCACACACTCTTCCCATTTTTTTTTCA -CAATAATCATAATCATCAAGTTGGACACCAAAAAAGCCATAAATTCGATT -CCGGTCGAATCGAGAGAATTGGAAGAGAGAGAGAGAGAGAGAGAGAAAGA -GGAAATGAGACAGAGGGGTGAGAGATGGAAAACGAACAAGTGTGATGGTC -GTCCCCCCCCCCCCCCCCCACGGGGCCGCTCCTCATTCCTATATTTATTT -ACAGCTCTCTCTCTCTTTTTCTCTTCAATTTCCATCTCTCTCTCCTCATC -TACAGTAATCGGGGAGGGGCTAGTGATAAGCCTCTCCCCGCCCCCCCCCC -CCCGGCGGTTAGGTGTCAGAAATTAATCATAGAGGCCACGCCTCTAATGT -TTTCGGAGCATCATCCTTAATTCTTTAATTCATTAACCTTAATTCATTAG -TCTTACACTGAATTTCATAACTAAACTTGTTGAAAAAACTTCTCAAAAAA -AAAAGTTTTGGCGGCTTAAGAAATGGCCTAAAATTAGTTCGACTTTTCAA -GCGGCTGGAAACTAACTTTTTTTGAAATCCCCCCTAATTATGGGTCTACA -ACGTAAATAAAAAAATTTGGTGACCAAATTTATTTAGGCCAAATCTGGTG -TTCAAATTTTTTAGGCCAAATCTGGTGACTAAATTTTTTAGGGCCCAATA -TGGTGAAAAAATTTTTTAAGGCCAAATCTGGTAACCACAATTTTTTAAGG -CCAAACTTTTTAAAGACCAAATTTTTAGAGCCAAATCTGGTGACCAAATG -TTTTTAGGGCCGAATCTAATGACCAAATTTTTTTAAGGCCAGACCTTTTA -AAGCCCTAATTTTTTAGGGCCAAATCTGGTGACCAAATTTTTTAGGCCAA -GTCTTGTGATCAATTTTTTAGGCCAAATCTGATGACCAAATTTTTTAGGC -CAAATCTAATGACCAAATTTATTTAGGGGCCAAATCTGGTGACCAAATGT -TTTTAGGGCCAAATCTGGTGACCAAAATTTTTTAAGGCCAAATCTAGTTA -CCAAATTTTTTAAGGCCAAATCTGGACACCGAATTTTTTAGGCCAAGTCT -TGTGATCAAATTTTTTTAAAAATTTTTTTCAAATCTGGTGACCAATGTTT -TTTTAGGGCCAAATTTGGTGGCAAAATTTTTAAGGCCAAACTTTTAGGAC -AAATCTGGTGACCAAATTTTTAAGGCCAGAATCCACAACTTTTTTTTGAG -AAATTTTGAAGAAGTTTCTAATTCACCTAATTCATTACTCTTTTTGAATT -TAATCTTCGATATTCCAGATTTCAAAACGATGGAGGATGCGGCGTACGCG -TGTGCTGGCTGCGAATTCACCACAAGTGAGTTTTTTTTGTTGTTTCCTTA -TCAGCATCAGCTCTATGCCTTCTCCCCACCCCACCCCGCTCCTCCTGTAA -CCTTCAATTGCCATTCATTTCACACAGTAATAGTACCACACAACACCCTT -CCATGCCTTCAATTTGACTCATTAATAGCCCTTTTCACCATGTCTTTTTT -CCCCCTCTTTCTCTCTAATACTCAACCTTTACCTACCTACCCGCAATTTA -ATTGGCAACTAATTCGGATACATTCGGACGGCTCAAACGATGCGCGTCCG -TCGTCGGGTGCCCGAGACTGGGACCGGTTTTCAGAATGTCAGTGTATGTG -TGTGTGTGTCTACCGGCTGGCAGGCAGCCACACCACTGCGATTCGTTAAT -TTATTGTGAGATGATGACTGTACATTATTTTGAGTGCTGCTGGTGCTGGT -GGTGTGCATCATATAATTATAGCCTAGTTGATAGAGATATATCGACACAC -ACACACATACACATTTACTTTCAATTGCTTCTACCCAATCTTTTTTCTTC -CATTCTCCAATTCCTCTCCTTGCTCCCATTTCGCCCTTTGATATTCACCG -CGTTTCGCGTTTCGCACTAATTTCGCGCCCGGACCGGTGTGCTCGGCGCG -GCACGTCTTTCATCTTTTTGCCTCAATTTCATTATGATAATAATAATCAT -AATAATTATGCGAGACACGGCAAAGACGCGCTCAAGAAACTGATAAGTGT -GTATAGGTCGGGTCCTTTTGAGAGAGAGAGAGAGCGAGGTGTGATAAGCG -CGTCTAATGAGCATGGGCAATCATAACATTCCTATCAGCATATCAGCATT -AAAACATTTTTTTCAGAAGACGTGTCGGACTTTGAAGAGCACGCAAAAGG -ACACGAAGAGGAGGCGGGAGCCTCTTCACAGAAGGCGTGTGCGCTGTGCC -TTGAGCCCACCGACGACCTCGAAAAGCACCTTGTCGAGCAGCATCGCATC -GCCGAGAGCGCCATCGAAAAGTTCCTGCTTACTGAGAGAACAGCCAAGTG -AGTGTTTTTTTTTGTCTTCAACTCAAATATCTAGTAGTAAGTCTTATACT -TGGCTTATATTTCAGCGGTTTCAAAATATTTTTGATAGCTTTAAAAACCA -TAGAATAACAATTAATTTGACAACAATTTTGTCGTTTGAATTTTTTGACA -AAAATTTTGTCGTTTGAATTTTTAAAATATGATCAAAGACAACCGAGATA -TAAACGGTCAAAGTCCAGTGAGAGGGGCCATACTAATAGGGATTATACGG -TAGGTAACGAAATTTTGATAAGACTTATAAGGACAAAGATAATGGAGCTA -GAAAGTTTAAACTAGTCCAATTTGAACAATAAAAATATATATAACGTACT -TTTTAGTATAAATATTTTAAAAGTAGAGTAATCTGAGATACAGTAAATTT -TTAACAATTTCTAGTCGATGCACCATGTGCAAAAACTAGTCCAGTCCTAA -AATTAAATAGCACGTACTTTTTAGTATAGATATTTCAAAAGTTAAGCCAT -CTGATATACAGTGAATTTTACCAATTCCTAGTCGATGCACCATGTGCCCA -CTTAACTTTCACGGCTCACTTCCCGGCTAATTTCAAACATTTCAAAATAT -TTTCAACTATTCAACTATAGAGGGGTTTTTAATAAACATTTTCTCAGTTG -ACGACTTTTTTATAGAATCAAAGACTACCTAGATATAGCTAGTTAAAGTC -GAGATGCAAGATTTTTCGGAAAAATCACGTGGTGTTTTCGGTTTGATCTA -CGTAGATCAACGAAAAATGCGGGAGAAGAGACGCAGAGTTATCAACTGAT -TTCGTATGGTTAAGAACGTGCTGACGATGTCACATATTTTTGAACAAAAA -ATTCCCGCATTTTTTGTAGATCAAACCGTAATGGGGCAGCCTCGCACCAC -GTGAAAAATTAGTTTTTGAGGCTTTTCTAGTCTAGAACTAAAGTTTTTTT -TTTGATTGGCCTTGTTTTTTCTAGTCTTAAACACCAGGTAGATCAAAACA -AATTTTTTTTCAGAGTTTCGATTTTTATGAATTTAAAACTTTCAAATTGT -CGCACTTCCTGTCCCTTTCAACCCCAAAAACGTTACGATTTTGTGCTATC -ATAATCATTAAACCATGCTTGCTTGTGTCAAGTTGCACAGGGTGCGCCGG -GGGGGGAATTGGCATTACTGTAAATTTCCTGCGTCTCCATCCTTGCCCCC -AGTGTCCCCATCGGCAATTAGAGAGTACGATCCGATTTTGCATATTTTAT -TCACGTCGCCTCTTGTTTACTCGCTCTAAATTTCAATCCGTCGCCAACCC -CCCCCCCCTGCCTGCCTCTTCCATTCATCATGAGTATTAGTGTATTGATT -AATTTTCGAATTCACGAATGAATTCATTGCTGGCGCCCTGCTACTAGTAA -TCAGTGAGGTCATAGCGTTGTCCTTTCGATAGGGCTAATTAAATGTTTCT -CTAGGAGCGGGAGGATAGATTTGAAATCAGGTGGGCGTCGGTTTGATCTA -CGTAGATCTACGAAAATCGCGGGAATTTAGACGCAGACTTCTCAACTGAT -TTTGCATGGTTAAAAACGTGCTGACGTCATATTTTTAGGGGAAAATATCC -CGCACTTTTTGTAGATCAAACCGTAATGGGACAGCCTGACACCATGTGCT -CAGTTACAATTGGAGGGTTTTGTCGGAAAAAAATCAATTTTTTAAACTGA -CAACACATTTTGCTCATTCTCCAAAACTGAGCCAAATGTGTTGTCAAACT -TTTCTTGAAATTTTTTTGAATCGAAATTATGTTGAGGTGAATTTTCAAAT -TTCAAAAAATGCCCCATTTCTATCAATTTGTCTTCACCTATGTTTTCGAA -TAAGGGCGAGGCGAGAGGCAGGCGGAGGTCGCCTTAAGATCATAAGATAG -CCTTATGTGATGACGAAAAATGCCAAAAAATGTATTTTTATATAGTTTCC -CCGTGTGTAGAAAAATGTAAAAAGAGCATGCATTTTGTGCATTTTTTGAC -ATTTTTCTGCATTTTTTTTTGACATTTTTTTTTCATTTTTCCACACAGAT -GAATAGCGGAAAAACGGAAAAAAATACATTTTTGCATTTTTCATGATCAC -ATGATCAACCCCATAAGGTTTTTTAAGGCATAATATTGATATTTTTTATT -AGTCTACTTTGCATAATGCCTACTATTGAAGGCAAATCAAATCGACATCA -CTTTTTGCTCATTTTCAAAACTGAGAGGCACGGCTTCTATGTTGACTACT -AAACCAGTAATAACACTTATAAAATGTTTGGAAAACACTCATACACATTG -CCACGTCATTTGGATGGAAGGGACCCCATTTGTTGAATCATAATTGATTG -TTAAACTATCATCACTCTCCCCCCGCCCTCCTCATTGGACCCCACGGCTC -CAAACTGTCTCCAATTTGCTCCCCGTCCTCTTCTTATCACCTTGACGCGT -AATTGAATTTTTGCGGATTTCTTCCTCCCCACCGCTTCCTTTGCTCCTTG -GGGGAAAAGTATGGAGAGTGTTTATGTGTGTGATTGAATTGAAGAAGGTG -GCTGACTCATTCTTTCATTTTCCTCGCTTTCTTTGAAAGAACAACTTGAC -AGTTTCCCCCCCCCCCCCCCATCTTATAATAATAATTACTTGCAGAGAAG -CGTCGTGTTCATCGTCGTCGGAGCCGAGCTCAGAATTCGCGCATCGCTGC -TCGAGGTGCTCGATGGCGTTCCGAAGCGAGTCGCAGCTGCAGACGCATTC -CCTTCAGCACGTGTTCAACACGTTCCACAAGTGCCCCACGTGTGGCGATT -CGTTTGATGAGAATACTATTGTGGTGAGTGAATTCACAACACTTTTGGCT -CACAGTCACGCTTGATCTACGTGTTTTTAGACAATTTTGAGTCTACACGT -GGTGTCAAAGTGTCTCATTTCGGCTTGATCTGCGTTGATCTACAGAAAAA -TGCGGGAGAAGAGTTTTGGGCAAAAAATTCCCGCATTTTTTGTAGATCAA -ACCGTAATGGGACAGCCTGGCACCACGTGCTCAGTTAAAGTAAGAGGGTT -TTGTCACTAGATTTATTTTTTGTAAACTGACAACACATTTTGCTCATTCT -CCAAAACTGAGCTAAAAGGGTTGTCAAACTTTTTTTGAAATTTTTTTAAA -CGAAATTAGTTTTGCTAGTTTTCCTAAAAGGAGCAAAAAGTGTTGTCCAA -TTTTTATAAGAAGGTTTTTGTCGCCTAATCGATTTTTGTAAACTGACAAC -CCTTTTCGCTCTTTTTTCAAAATTAATTTTTTTCTTTTGGCATTAATCCC -ATTTTTTGTAAATTAACAAAAAAATTTCAAAAAATCTTCAAGTATTTCTA -CAGGGTGGCCTAGATTCTCTATAGGGTGGCCTACATTTTTACACTGGTTG -TCTAGATTCTTAAACAGGGTGGCCTCGATTCTGTACAGGGTGGCCTAGAT -TTTCTACACGGTGGTCTAGATTTTCACTGGTGGCCTAGATTCTCACACTA -GGTGGCCTAGATTTTTCCACTAATAGCCTAGATTCTTTACAGGGTGTCCT -AGATTTTCACACTGGTGTCCTAGATTCTACACAGGGTGACCTAGATTTTT -TACACTGGTGGCCTAGATTCTCTACAGGGTGGCCTAAATTCCTTATAGGA -TGACCTAGATTCTTAAACAGGATGACCTAGATCTTGACACTAGTGGCCTT -GATTTTTTACAGGGTGGCCTAGATTTTCTACAATGGTCTAGATTTTTTGC -AGGGTGGCTTGGATTCTTAAACAAGGTGGCCTAGATTTTTCACAGGGTGG -CCTAGATTTTATACAGGGTGGTCTAGATTTTTACACTGGTGGCCTAGATT -CTTTACAGGTTGGCCTAGATTTTCTATAGGATGGCCTAGATTCTTAAACA -GGGTGGCCTAGATTCTTTACAGGGTAGCCTAGATTCTTCACAGGGTAGCC -TAGATTTTTACACTGGTGGCCTAGATTTTCTAAAGGGTGGTCTAGATTTT -TGCACTGGTGGCCTAGATTCTTAAACAGGCTGGCCTAAATTCCTTAGGGG -ATGCCCTAAATTCTTAAACAGGATGACCTAGATTTTATACAGGATGGCCT -AGAACTACTTTTTGTAAATCGACAGCACTTTTTGCTCGTTTTCCAAATCG -TTTTTTTTTCAGACCCATATGTTGGAGCACACCAAAGAAGAATGCGAAAT -GTGCTCTGAAACATTTGCCACAAAAGAGGCATTCCTCTCCCACCTGAACT -CAGCCCGACACCTACAACAGGCAAAGAAGCAGCTGGAAAACTCACTGGTC -GACTTAAACTCTCAGGTGAGCCGCCGCCGTGCCTCCTGCCGCCTGGCTAC -CGTAATCACCGTACCCATTATTTAATTGATTTGCTTTTAGCCACGCCGCT -GCTGCTCGGAGCGCAGAGGTGACAGAAAAAGCCGACAAAAAACAACATTA -AAATTATTACACTTTTTTATGATTGAATGCGAGAGAGATGTATGTGTGTG -GAGAGATGGAGAGGCGCATGAAATGGTGTTCGGGTTCCATAGCAAGCTCA -TTGAGCACAATGATTTTTTTTTAAATATATTTTATTGGAAATGACAGAAG -CTGAAGCTTGAAAGGAACGTCCAGTTTTAAATTAAAGTATTGATTTAGCA -CGTAGTTTCAGCATGTCCCATCACGGTTTGATCTACAAAAAATGCGGGAA -TTTTCTTCCCAAAAAATTTGACGTCAGAACGTTCTTAACCATGCGAAATA -AATTGAGAACTCTGCGTCTCAACTCCCGCATTTTTTGTAGATCTACGTAG -ATCAAACCGAAATGGGACACTTTGACACCATGTGATATTTAAAGGGTCTA -GAAAGAACTTAAAATAGCCTAGCCAAGAAATGGGCGGAGCTTTGGTAGGA -ATTTTCATAAGTCGAGGACTCCGCCCATTTCTTGGCCAATTTGGGTTTTT -GGCCTTCAATTTTTAGTGTTCACTAATTTCCAATAAGTTTAGGATTGAAA -AAGTTTTTGAGGTGAAAATTGATCCTAGCATAGGCTCCGCCCATTTCTTG -GTTTTTTTTTTGTTTTTTTTTCTTTTAAACTAAAATTCCACTGAACTTGT -CTAATTTCAGTTTCCAAAAATTTAACGAAAAAATTCGAAATGCCAAGAAA -GGGGCGGAGCCTAAGCGAAGCCTATTTTTCGATGAAATTTGGCCAAGTTG -CGATGTTTTTGAATTTCATATTTTTGAATCAAGTTTTGAAATAAAAAGTA -ATATAAAATTGGAAAATAGGCTCCGCCCATTTATTGGCTTTGTTGGATTT -TTTACTGCATAGATCACATTTTTGCATCCGAAAATTTATCGGAAAGGAAT -TTTTTTTCCCAATTTTTTTCCGTAAACTGTATCATCAAATTCTTTTGAGA -TTCAAAATATCCAACATAAGCACGGGGTTCTGGCCTTCCTCATTGAATTT -TTCGCGCTCCATTGACAATCGCCTGCCGGACAACGCGTGGGAAAGTCGTG -TACTCCACGCGGACAAATACATTCAGTTTTACGCGCCGTAAATCTACCCC -AGATATGGCCGAGCCAAAATGGCCTAGTTCGGCAAACTCTTTCATTTCAA -TTTATGAGGGAAGCCAGAACTCCGTACATAGGCGCAATAAAAGGTGAAAT -AGGCTCCGCCCATATCTTGGATCGGTTCCAATAATGTATCCAAATTGACA -TGTGTTAGTTACACTTGTTCCTAATCCAAAATTCTATCCGAATTTCAATT -TCCCAAAGTCAAAAAGTCAACAAGTTCTGTTCTTATATGTGTAAGGCGCG -CGCGAGCGCGATCGTTTGTCTCTAGTATTTGCTCATCTCTCTCTCTCTCA -ATTACCGTACCCATTATCATTCCGCCCATGGATGATGATGATGATGAAAA -TGAGCGGTGGGCCCCCTCTTCCCCTGCCTCTTTTCGCGCATTCATCATGT -TTGTACAAAAGGCGGCGGTTTGAGAAAAGAAGACAGTGAGAGGGAGGGAG -AGAGAGAGGTGATGAAGGTAGTAAACGTGTGTCGACAAACACATATAGAG -AACGATTCGTGTGAAATAGATGAGGGCAAATAGGACGAATTTATTTAAGA -GAAGAATAAGATGCTTTGGCCCAGATGAGGGGGGGGGGGGGGTATCATGA -AGGTGTGATGACGAACCATATTCCTTCAATGTTTGTTGCTCGCTTAACCG -CCGTCGCCGCAATTTAAATTGTTTCGACTGGGTGATCAGACAAATAAGAA -GACGTAGACGGTTTTTCTTGGGGGGGACGTTCAGCTTTGATTCCTTTCAA -ATAATCGATGCGGCCTAGCTTTCTGATCTCCAGAAACCGCGGGCCTTCTT -TGCTAAATTTTAAGCGATTTTACTTCCTCCCCCCCCCACTTTGATCTACT -TTAACAGCTTATATCTCGGTTGTCTTTAGCTTCATCAAAAAGTTATCAAC -TAACAAAGTGCGTGCCAAATATACTTCTACAATTCGGTAGTTAGTATTTT -TTGGATAAAAGTTAAGACAACCGAGATATAAGCTGTTGAAGTAAATTTCT -AGTTTGACTTACTCCCCCAATTTTGATCTACTTTTACAGCTTATATCTCG -GTTGTTTTTGGTAACAGCAAAAAGTTGCCAACTAACATATTACGTGCCAA -ATATTTTTCTAAAATTTGGTAGTTGAAAATTTTTGAATAAAAGTTAAGAC -AACCGAGATATAAGCTGTTGAAGTAGATTTCTAGTTTGACTTACTCCCCA -AATTTCGATCTACTTTGACAGCTTATATCTCGGTTATTTTTGGCAATATT -AAAAATTTGTCAACTAACAAATTACGACCCAAATATTTATCTACAATTTG -GTAGTTGAACATTTATGTTAAAAGTTAATACAGCCGAGATATAAGCTGTT -GAAGTAAAGCAGTGGTGGTGCTTAGCTCGACCTATATTTTTGAATTGCAT -AACAGTTATAACTAACTTATTTTATGTGAAACCCTATTCTAGCTAGTTGA -CTTACAAAATCTCCAGAAACTTTTGCCTGCCTACCACCTTTAGCAGCATA -AGCGCCTATAGGCACACCTACTGCCTACACCTATGCCACCTACTGTACAC -CTACTGCCCATACGCCTACTGCCTTTTGCCTACTTTCTACATAACTTTGA -ACTGCCCGTTTCTAACCAATAATCTTTTACAGGACGTCGAAAAGCAGCGT -ATTTATGTGTGCAACGTCTGCAAACAATCCTATCCACAAGCGGCTAATCT -CGACGTGCACATGAGGTCAATGACACATCAGAGCCGGATGAGCCGGCTGT -CCGAACTTGTGGCAACCGGGGAGCTTAATGGGGAGAAGGCCGTGTTTGAG -CAACCAGGAATACCGGCACCGACGATAAACAGCTTCATTGAGACGGTAGG -TGAGGGGTTTGAGCAGGCATAATCCTGAAAATCATCTGTTTGGTTTCTGT -GAAAAACTTTTGTGCGGAAAATAGTTTATTTATAGTTCAATTTGAAAAAA -ACTGGTTTCCGATTTTCAATTTTCAATTTTCAATGTTCGATTCTCGATTA -ATAAAATTTCCAATTTCCAATTTCCAGACAACCAACCAATCCTCACTGAA -CGACCTGATGTCACTGCTCACACGAAGCGAGTCGGATGAGATTCGAGAAG -AAGTAAACGGCCTTCAAGTCATGACACAGATCAAAGTCTACGGTGAATCC -AAGATCACTAGCCTAGTCCCAGAGTTGGCCGGGAAAATCGATAACATCGC -GCTCTTCGATGACTCCCGTGCGGCAGAGGTGTCGAAGATCGATTGCTCGG -CTTGTGGGCAGCAGATCTCAGGGATCCTTGCTTTGAACCTCCATTATGAA -GAGTCCCACTCATCGAAGATCCCGAGTGACGTGTTAAGAAAGTTCGGAGA -GCGGTTACTTGCCGCATTAGAGGACGGGTTGAGCAGAGAGAATTCCGTGA -AGAACGGATCGCAAAGCCCTCTGAGCAATGACGATGAGCCCATGGAGAAG -AAGATGCGGCTGGAGAATATGCTTCCTGAAATGGACAAGAACGCGGCAGC -GTCGCAATTCGCAATGTTCCAACAAATGATGAACTGCTTCCCGTTCATGG -CACCACCAGGCACGTCTAGTGGCAACTTTGGCTTCTCGCCAGAAATGATC -AATCAGCTCATGAATCCTGCGGCGGCGGCGGCGGCGGCGACTGCAGCAGC -AGCAGCCCACGCTGCCAACAACTCGCCGGCGAAGAGAGCAAGAACACGGA -TCACTGATGATCAGCTCAAAGTTTTACGGTAAGTCGTCTTGTGTGTGATT -ACTGTAAGCTACGGCGAACAGGAGAGACCCGAGGGGGGCGGTGGAAAATG -AATTGCAAACAATAGGTGGGAAATGGTCGGCGCCGTGATCAAAATGAATG -AGAAATGAGAATGAAGAACAAACATTGTGTGTGAGTGTGTGTGTGTGAGA -CGAGACGAAAATCAATCAATTTCTGGAAAAAACAACACATATATTTTCCC -GGCGAACTTTCTGTTTGAGGGACCGTACGGAACAGGACCCCCCTGAAAAA -AAAAATCCGGAAAATCCTAAGCCTAAATAGCGAACGCTCGCCACTGACGC -CAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCCAGCCCAAGCCTAA -ACAGGAACCCCCTGAAAAATCAAAAAATCCGGAAAATCCTAAGCCTAAAT -AGCGAACGCTCGCCACTGACGCCAAGCCTAAGTCTAAGCCTAAGCCTAAG -CCTAAGCCCAGCCCAAGCCTAAACAGGAACCCCCTGAAAAATCAAAAAAT -CCGGAAAATCCTAAGCCTAAATAGCGAACGCTCGCCACTGACGCCAAGCC -TAAGCCTAAGCCTAAGCCTTGGCCTAAGCCCAGCCCAAACCTAAGCCCAA -GCCTAAGCCTTTCACCTTCCTAATTTTCAGGCAGGCCCTAAAAACCGCGC -CTGCCTACCATGGAAGCCCTAATCTGTGCGCTTTAGATTCTGAACCCTTA -AATATGTTGCACGGCCGGGCAAAGGGCACATCAGTGTAAACGCGCTCTAC -TGATAATTCGAGTTTAGCCAGGTTTGGGCGCGTTTCAAGGAAAAAAACTT -TGGCTCAAAAAATTGTGAATTTATTTTCGAACATTTTTATATGCATCACA -AAAATGTTAGACCACCCGTTTTTGAGAAAAACGCGCCCAAACGTCCAGGT -ATACGGTAGACAAATTGCGTACAGGTACCACTGGGGGGTCGTGTTTGGGC -TTTAGTTTAGCTAAGGGAATCTGTAGCGGCCCAACGGCCTAACTGCAAGC -CTCAGCTTATTCGCCATAGGCTTGTCTGCCGTATTTCAAGCCGATTCCAA -CAAAAAACTTCCAGCCAATACTTCAACATCAACAACTCGCCGTCAGAAGC -GCAAATCAAGGAGATGTCACAAAAAGCGAGCCTTCCGGAGAAAGTCATCA -AACACTGGTTCCGCAACACACTTTTCAAGGTTTGTTTATTTATTTTACAA -AACTATTCATATTGTTATTAGGCTCGGAAATGAGCGAGGTGAGAACATGA -GTGTGGTAATTAGTCATCGGATGAATACCCACACAAGAGGGAGAGCAAAC -AAGAGAGCAATTGAGACGAGGGAGGGAGAGAGGGAGAAAATAAGAAAATG -TTAATGTCAGTTGGGTGCCAGGCGCTCGGCCAGGACCACAGGCCGGGAAC -CATTTAGTTTTGATTACGATTTCCGTCGTGACTCATGATGGGAATTGATA -TTTGTGCCTGTGGTGATAGAATAGTTAGAGCAACTATCAGGAAGGGGACA -AGTCGCAGTGCGAGACTATTAGAACCTGCAAGGTTTATTCTGATAGATTT -GGGACTAATAAGGACTAATTTGGTAGAGACTAATTGGCTCTCTTGATATA -TACCAGCTTAATAATTTCTACAAAAAAAACTGTAAGAACGCTTCGAGATT -CGAGCTTCGGGAAAGCTTAAAGGATGGGTACCGAAAAATTTTTTTTCCCT -GATTCCGAATATCGATGTGGAAAAATTCAAAAAAAATTCCCTGATTTTAT -ATTTGAGCTTGAAATCACGATTTTCATTTGTGCCCACCTGGTGTCAGAAT -GTCTCATTTTGGATTGATCTACGTTGATCTACAAAAAATGCGGGAGAAGA -GACGCAGAGTTCTCAACTGATTTTGCATGGTTAAGAACGTGCTGACGTCA -CACTTTTTTGGGCAAAAGCAAAAAATTCCCGCATTTTTTGTAGATCAGAC -TGTAATGAGACAGCCAGGCACCATGTGTGTGCCCCGGTTCAATTTTCAAT -TTTTTAAACCAGTTTCTTTTTTTTTAGTCGATAGGTTTTTTTCTGAAAAA -TATTTTTTTTGCCAAAAATGAATGTAACTGGCTAAAATAAACTAAAAATA -AAACGATGCAAGCGCGCTCAAATGCGAATTTATTTGGGCGCGAATTTGAA -AAAAGTGATGCGGGCACAAATGAAAATCGGCGATTTTAAGCCTAAATATA -AAATCAGGGAAATTTTTTTGAATTTTTTCACATTGATATTCGTAATCAGG -GGAGAATTTAAAGCCAATTAAAAATATTTTCCAGATTTCGGTGCCCCACC -CTTAATGAGATAAAAGAGCAAAAAAGGTGTTTTGTAACTTTTTAAGTTTT -TTCTTTTTCAGGAACGCCAACGCGACAAGGATTCCCCGTACAACTTCAGC -ATCCCTCCCCAAATGGGAATCGACTTGGACATCTACGAAAAGACCGGCGA -GACAAAAGTACTGTCGCTTAGCAATGAAGCACCAAAGTCTGAGTTGAGCT -CTGCGCGCGCCACACCGACAATTCCGACTCCGATACCGCTCATCGTTGAA -GAGAAGAAACCGGAGCCAAAGAGCCAGACACCATCGTCTTCTTCCTCTCA -GCTCAACCTGCAGGCTATGTTATCTCAGATGCAGGGAAGTTTTTTCGACG -CGTCAAACTTCATGTCAGCATCAGTGAATCCGATGACACCGAGCACTCCT -TCCTGCAACACGTCGTCCAGTGGACGACGAGCCAATCGCACGAGATTCAC -AGATTTCCAGCTGAGAACTCTACAGCAATTTTTCGACAAGCAAGCCTACC -CGAAGGATGATGATCTTGAAGCGCTGAGCAAGAAGCTTCAGCTGAGTCCA -CGTGTGATTGTCGTCTGGTTCCAGAATGCACGGCAGAAGGCCAGAAAGAT -CTATGAGAATCAGCCGAATCACGAGAGTTCCGATCGATTTGTGAGAACGC -CGGGATCGAACTTTCAGTGCAAAAGGTTGGTTTTAGTGTTGGAAATTAAC -ATTTAAATTTAAATTTTCCTAAATTCCAGGTGCAGCCAAGTATTCCAACG -CTACTATGAACTCATCCAACATCAACAGAAAAAGTGCTACAAAGACGATG -TAGCAGCCCTGGCAAGTGACAACAAGAGTGTCGAAGAATCACTGACGGAA -GAAGAGAAATCCCAGCTTCTGGCTCAACAACAGGTCGCCCAACTAGCCAG -CACTCTGGAGCTCCCAAAGTTCCAGCCGGCAGAGCTTTTGAAAATGATCG -GAGCTAATTCGGTGACTCCATCCTCGTCGGCTGCAAGTCAGAAGTCTAGC -AACGACGTTCTGCTGAAGATGTGTGAATCGATTGTTGGTGGGAGCACACC -TAGTACATCATCGTTCCACAAACTTTGTATATTCTGCGCTCAAGACTTCA -AGGATCGGAGTGCGATGAGTGAGCACATGGCTCAGAAGCATCCCCAGCAT -ATGCTTCTTCCAAACTTCGATCTCGACATGATGCCAGACGCTGGTGGTGC -AGAGCTTCTCATGGATCTTAAGGACTCTGCGTTGGATCTTTCGGGCTCTT -CAGTCGACTACCGGGATTCTATCTCAACATCTCCATCTCGATCCGAAGAT -GATGTTCTCACAGAGGCTCTGGATGATTCTGCATTTGCCGCGTTCGGACT -ACAGCTTGCAAATTCCACAAGCGGCTCGGAATGCAGATCTCCGGCGAGCA -ACAAGAGATTCCGAACTCATCTCACACCGATGCAAGTGCAAATGATGAAG -AGCGTGTTCAACGAGTACAAGACCCCATCCATGGCAGAATGTGAGCTTCT -CGGCAAGGAAGTCGGCCTTCACAAGCGTGTCGTTCAAGTCTGGTTTCAAA -ATGCGCGAGCCAAAGAGCGAAAGACGCGCGGTGCAGTTGACGAGGACTCT -CGATCCGGAGAACTTCACTGTGAAATTTGTGATAAGACGTTCGCGACGAG -GCTTTCGCTGCAAGACCATCTGTTTGCCGAGCAGCACATTGAATTTTTAA -GGAATAATCTGAAACGGGAAGGGGTCTCCGAGTTGACGACCGCTTCGGTG -ACCGAGTGCTCTCCAGAGAAAAAGTAAGAAATTTAATTTTTAATTTAATT -TTACATATATCATTACCCTATATAACCTTAAAAATTTTCCAGAGCAAAGC -TTCCGAACCCGCTGGATCTTGCCAGTTTCCCGTTCCTCAACACGTTCGAC -ATTCAAATTTACGGAACACCCATCGCCTTTCTGCAGGTGCCTGATGAGAT -CAAAAAGCAGATCACTGATGATATCACGGCTGGAAAATCGCGAACCACGT -TCTCCCAGGACGGTTTTCCGCTCGACAAGTTGAAAGAGTCGCTGCCCGAG -GATGAGAAATCAAATTTGACAGTAACCCAGAAAGATGTGAGCTTTTTTTT -TTTGGGAAAAATTTTGAACAATTTGGCAATTTCAGGTCGGATGGGCGTGC -CCGGCATGTACATTTGTCTTCCAAGAAGAAAAGAAGCTCCGTGAGCATCA -AAAAGCCATGTGCCAAAGTGATAAGGTGGGCAAGAAATTAGGAAACGGGC -TTGAAGTTTAGCTTATAGTTAGGCAAGTGGTGTCAGACTGTCTTTGATCT -ACAAAACATGCGGGAATTGGAATTTTTCCCAGAAAAATTGTGAAGTCAGC -ACGTTTTTAACCATGCAAAATCAGTTGAGATGTCTGCGTCATTTCTCCCG -CATTTTTTGTAGATCTACGTAGATCAAACCGAAATGAGGCACTTTCTGAA -TCCACGAGCTAGGCTTAAGCTTAGGCTTAAGCTTAGGCCTTTTCTCAGGC -TTAGGCTTAGGCTTATGCTCAGGCTTAGGCCTTTTCTTAGGCTTATGCTT -GGGCTTAGGCTTAGGCGTAGGCTTAGGCTTAGGCTTAGGCTTATGCTTAG -ACTTAGTCTCACTATCAGTCTTAGGCTTAGGCTTAGACTTAGGCTTAAGC -TTAGGCTTAAGCTTAGACTTAGGCTTAGGCTTAGGCTTAGGCTTAGGCTT -AGGTTTGGGCTTAGGCTTAGGCTTAACCTCAGGCTTAGGCTTAGGTTTAG -GCTCAGGCTTAAACTTAGGCTTAGGCCCAGGCTTAGGCTTAGGCTCACAC -GTTCTCACGTTCTTAACCATACAAAATCAGCTAAGAACTCTGCGTCTTTT -CTCCCGCATTTTTTGTAGATCTACGTAGATCAAACCGAAATGAGGCACTT -TCTGAATCCACGAGCTAGGCTTAAGCTTAGGCTTAAGCTTAGGCCTTTTC -TCAGGCTTAGGCTTAGGCTTATGCCCAGGCTTAGGCCTTTTCTTAGGCTT -ATGCTTGGGCTTAGGCTTAGGCGTAGGCTTAGGCTTAGGCTTAGGCTTAT -GCTTAGACTTAGTCTCACTATCAGTCTTAGGCTTAGGCTTAGACTTAGGC -TTAAGCTTAGGCTTAAGCTTAGACTTAGGCTTAGGCTTAGGCTTAGGCTT -AGGCTTAGGTTTGGGCTTAGGCTTAGGCTTAACCTCAGGCTTAGGCTTAG -GTTTAGGCTCAGGCTTAAACTTAGGCTTAGGCCCAGGCTTAGGCTTAGGC -TCACACGTTCTCACGTTCTTAACCATACAAAATCAGCTAAGAACTCTGCG -TCTTTTCTCTCGCATTTTTTGTAGATCAACGAAGATCGAGCCGAAATGAG -GCACTCTGACATCACGTGGGCTAAGACTTAGGCTTAGGCTTAGGCTTAGG -CTTAGGCTTAGGCTTAGACGTAGGCTTAGGCTAGTTATTTGTAACTTTTT -TAAATCTCCCCCGAGTCAAAAAAAAAAACAATTCAATTCCAGACGCTAAC -CCTGGTGCAAACCCACTACTCGTGCAAAAGCTGTCAAAGTGATTTCTGTC -TTCAATCCGAGTATCAATTCCATCTCTCAATGCCTCCTCATACTACTACT -ACTACCACGACGACGCCATAACAAAACCCCCCAAATAGTCACCTCATGTC -ATTTCATTTGCCGTCTTCACTCAAGGACCTATTTCCGTCTCTCTCTCTCT -CTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTTCTCCTCTCG -CCTTAAAAAAACCACAACTCCTTATCCCGATCTGAGCTCACTTCCTATCC -CCCAAAGTAATTTCTTTGTAATATCTATATCCACTTTTTTTTCGACACAC -TACACCACATCCCGCCGCCTATCCCCTCCCCCCCCACCGCTTTATGACAC -AAAAACTGGTTTCGCTTTTGTCTTCAATTTCACCCCAACCGCCTGCAGCT -TCTCATAATAATTAATAATTTTTCTTACCATGCACAATGATTTTGATAAA -TATATATATATATAGTCATCAGGATTGCCCCCTTTCTAGGATATGTTTTT -TTTTGTCTTCACACAATTTTCCCATTTTCTATGATAAGAATTATTTCTTT -GTCCGGTTGACACATGTAGATGTTCCCCTTCCAATTTTTAATAGATTTCT -ATTCTAGTTTTTTGCAGGCCTCACTATTCTATTGCAATAATCACTTGGAT -TTCATGTATGGAACGCAATAATAATTCAATAAAATATTGGTACTTCTTTT -TTGAAACACACTAATTCAAACTCACGCGGTTCCAGGCTGTCCCATTACGG -TTTGATCTACTAAAAATGCGGGAATGTTTACTCCCAACAAAATGTGACAT -CATCAGCACGTTTTTAACCATGCGATATCGGTTGAGTACTCTGCGTCTCT -TCTCCCGCATTTTTTGTAGATCAAGCCAAAATGAGACACTATGACACCAC -GTGTAGACTTAAAATTGACTGAAACCACCGAATTTCATATTGAAACTTCT -TGAAATCTATTCAAAAAAAAAGTTATGAAGGCTCAAAAAATGGCCTAAAA -TTTGTTAATTTAAACAAAAGACACTTAAAACGGTGTCTTTTTGAATTTTT -CCGTTTTTTTAAACATATTTTCATAAAATTTACTTATTTTTCAAAATAGA -TGTTGGAACATTTATAGGATGCGTTCAATTTTGCCATTTGAAATTGAAAT -TCGGAAATTTCAAAAAAAAAAAAAAAAAGTGCGAAACCAAAATTTTCCGA -AAATTTTCGGCAATTTGCCGGTTTGCCGGAAATTTCAATTCCAGCGATTT -GCCAATTTGCCGAATGGCCGGAAATTTCAATTCCAGCAATTTGGCGATTT -GCCGATTTGCCGGAACCTGCTAACCTACCTACTAACTTGCTAATCTTCAA -GGTTTTTAATGAGTTTTCAATAGAAAATTCGGTGTTTTCAGGCAATTTCG -AGAAAGCAATACAAACGTTTAACAAAAAAAAGACGCTTTTTCCTCTTATC -CGATTCTCAATTCTCAATTTTGCCTTATCAATTTATCCTCTCCTCACAAG -GTGACACACACACACACACACACACACACACTCGTTTCTCGACAAAAAGC -TATGAGCTAACAAGCGCCTTCTCGCGTAAGAATACATCCACTGATAAGAC -ATCTGATAAGAGTGGAACCCGTCCGCCATTGTCTCGAGAAATACACGCCT -CCGCCCGGGAGGACAGGTTATCCCACCTCGTCGCTTCACTTCATTGTTTC -AAACGATTCCATCGGCTTGCGCTTGGATTTTCTCTTATGCAACTTGCCAT -TCTTCTTTTATTGCTTAACATCATGGTTATTTATTAGGGAAATTGTTCTA -CCCTGACTTGAAATGACTGAAGACGGCCTATTTTACTTTAATTTGAAGAC -TCAGAAGACTACTATAAGCGGTCATTCTTGTTGCGAAAATTTCTGCATTT -AAAGGTGGAGTAGCGCCAGTGGGAAAATTGCTTTAAAACACGCCTATGAT -ACCACAATGACCGAATATCATGATAAAAAAATTCAAAAAAATTTTCTAAA -TTTTATATGATTTTTTGAAAATTGAAAAAATCTAAGGTTTTCACTTAATT -CATATTTGAATTACCGCCAATTGGATTTGCTCGATGGAGCGCACTTGCAC -GTTTTTAAATTTATTTATTTTATTTTTTGTTATTTTCCACCGATTTTTAA -TGTTTTCGGTGTATTTTTGCTTGAATTTTAGAGAAAAAGTCAAAATAAAT -GCAAATTTTCGATTAAAAAGCAAGCGTACAGGTAAATCAGTGAAATTAAT -CAATTCAGGTTCATTTTTACGCCTGTAAGCGTGCTTTTTAATCGAAAATT -TGCATAAAAAACATTTAAAATGGGTGGAAAATAACAAAACATAAAATAAA -TAAACTTAAAAACGTGCAAGCGCGCTCCATCGAACAAATCCAATTGGCGG -TAATTCAAATAGGAATTAGGCAAAAACTGAGATTCTTTCAATTTTCAAAA -AATCATATAAAATTTAGAAAATTTTTTTGAATTTTTTATGGTGCGTCCAT -AGAAAAACCGGAGTTCCTCGCTTTTTTTTCCTCGAAATTCAAAAAAGTAG -GCGTGGCCAACCAATCAGCTGTTGTTTCTTGTTTTCTCATTGCTCAGCTT -AAAATTTTACAGCCTCTAATTGGTTGAACACGCCCACTATTTTGAAATTG -ACCAATAACAAAGCGAGAAACTTCTTGTTTTTTCCGCAGACTATGGACGC -TTCCGCACGCGGGAAATTCCCGTTTTCCGCAGACTATGGACGCACCATTA -TCATGATATTGGGTCATTGTGGTACCATAGGCATGTTTTAAAGCAATTTC -CCCACTGGCGCTACTCCACCTTTAATGCATTCTGCGTCTATTTTATACAG -TTCTGACCATAAAAGCACACAAATTTTTGTCTCAAAGTTTAGGAATATAT -AGATTTAAGGAAGAAAGTTTTAGTAAGAAAAAATATAGTCTTCTTCATGT -TTTCTTTTTTTTTACAATATCCATTTGCCATCCGTTTTTTTTTCTGCAAC -CTTCGATAAATGTTTGCTTGGATAACTATGTAAGGTGCTTTGAACACTCG -GCATTTGGGCTTCTTGCCCAAGTTTAGCCCAAAAATATTAACTTGGATCA -GAAGTTGGGCAATACTTTGGCAAAACTTGGATTCAGGCAATATCAAAGTT -TAACCCAAGTTTCACCCAACAAACTTTGGCCTAAACTTTTTTTGTTTCGA -ACTTGCGTAGAAGTTTTTGCCCAATTTTCGCCCAACTTTTGCCCAACTTT -TGCCCAAGTTTAGCCAACTTCTGTTCCAAGTTAATATTTTTGGGCCAAAC -TTGGGCATGAAGCTAGAGCCGAATGCCGAGCTAATTTTATTTGACTCTAT -CCGAATTCTGCTAATTCTCAAAAATCCCCCAATTGCCAACCATTTCAGAA -TGCATTGGAGTAGTTGGGCGATAGCGCTCAACGTGCTCGTGCTGGCTTTG -GCCGACAGTGCTCCTGAAAGATTCCCAGAGGATCATGTGGACCTGGTACT -TCCTATGAAAAGTATCCACCATTTCACCTAAACGTTTCCTAATCATCTTG -ATTACAGTGAAATACGACAGTCATCTTCGACAAGCTGATCTTCCACCGCA -CTTCATTGGTGCCAATGAGACGAACTTGGTTCCGCTCACCTTGAGATTGG -AGACTAGGAGGAAGAGATGCTCGTGTGGATGTTCGGGATGTGATCTTTTC -CCGAATAGATCTTGTTGTTCGAGCTGTAAGTTTGCGATTCTATAAGACTT -GTCAACGTGGTGTCAGGCTGACCCATTACGGTTTGATCTATAAAAAATGC -GGGAAGTTTATGACCAGAAAAAAATGACGTCATCACATTCTTAACCATAC -GAAATCAGTTGAGAAATCTGCGTCTCCCATTTCTTCTCCCGCATTTTTTG -TAGATCTACGTAGATCAAGCCGAAATGAGACAATTGAAATTCCAGCTTGC -TGCTCCTCTCAAAAACCAATCCCACTTGCCTGCTGTCCGCCACCTCCCCC -ACCAAAACCGTGTTGCCAGCCAGCCTTCGGCCCTTGCTGCCCGGCAACCC -CAAACTGTTGCCCGAAACCCTGCTGCCGAGGTCGTCGCCCCGAATACGAA -GAGTACGAGGACGAGGAAGGCAACCCTGGAGGCGTCCCAGCACCACCAAA -CCCACCAAGAACTTGCTGTCCTCCACCAACACCTGCTGCTCCACCACCGC -CACCACCTCCACCACCACCGGCTCCGGAAGCTCCAACGCAATGCTGTGGA -TCACAGCCTTATGGAAGAACACCGTGCAGGTCCGGATGTCCGAATGGAGA -TTGTGGATGCGGAAGACCTTGCTGTTACTATCAGAACCCCACATGTTGTA -ATCAAGGGCAAAAGGCTTGCTGCCCACCTGAACAGCCTTGCTGTCCTGAG -TTGAAGCTGGATAACTGCCTCGCTTCGGTCCCACCTTGCCTTCGCGCCTG -TCCATCGTGCCCTTGCAGAAAACGTCTGATGCTTGGGAAGAGAACTAAGA -GAGACGCACCGGGGCTTCATTGCCAGCCAAGTAAGCTATAAGTTTAGATT -TTCACGTAGTGTCAGGCTGTCTCATAGTGGTTTGATCTACAAAAAATGCG -GGAATTTCTCGCCCAGGAAAATGTAACGTCAGCATCAGGGCTGGGACCAA -AAAAAAAATTTTTGGACCAAAGAAGTTTTTGAAAAACCAAAAAAACCAAA -AAAAAAACAAAAAAAAAACCAAAAAATTTTTGATATGCTTAAGTTGATTT -TTAATGGGGTTATTCAAGTAATGTTGCAAAATGTATTAAAATACATTTAT -GACGTCACAACTGTGTTAAAATACATGTTTTAATGTATTTTAATACAGAA -TAGTCTCGAGTCGACACTAGACACGGTAAACTTTTTTTTTAGATTTTTCG -TCAAAATACCAAAAAAACCAAAAAATTCCCAACAGCATGTTCTTAACCAT -GCGAAATCAGTTGAAAAGTCTGCGTCTTTTCTCCCGCATTTTTCGAAGAT -CAAACCAAAATGAGACACTTTGACACCACGTGGATTTTCAAAACGCTGAA -AATAAGTAAAATAAATAAAAAATTTTCAGTCGGACTCCTTGGTCAACAAT -CCCCACCGACTCTGATTTCAAAGCCGGTAAAGACCATAATAAAATCAAAA -TCCCGCGTTGCTGGAACCAAGACATCTCAAGTGTCCGTCACCAAAAAGCT -CATCGAACAATCCTCTGACCACGTGGAATCGCCTCCAACAGCCGGAAGAC -TCTACGACTTCCGAAGAGCCCACGTTCGAGTCAAGAGAAACATGAACTTT -GGAAATGGAGCATGCCAGCTGTGTCTGAACGGAACTCCGCTCAAGAGAAC -CAAGCGGTCTCTCGATTGTGTTCCGTGTACCTACCTACAACCACAATACT -CTGATTGGAACCCGTTCCTCGGAGATCAAACGCCACGCGGATCGCAGTCG -CCAGTTGGAACTCCACTCGCCGGGCACAGAACTAAGAGAGCTGGCGTGAG -TTTGACTCATAGAAATTAACGAAGCTAAATTTATTTTTGCAGTGCCTTCC -TCATCCACAATGTACCCTGCATGTCCGTCGCTATAAGAGAAACCTGATCG -GATCCCAATATTGTGAGCCATGCAATGGACACTACGGTAGAAAGAAGCGG -GAAGCCGAGAGAGATCAGTGCTTGAAAAGAGAGAAAAGATATGCAGATGA -ACAGTGTGATAACGATGAGTTCAGTATCAATGAGCGAAGCAAACGACAAG -CCTACAATCCAAAAGGAATTTTGGATATCGTGAAGCTCCTATCCAAGGCC -TCCTCAGGTGGCAACAATCCAGGAGGATGCATGAAGTTCCCAGCCTGTGT -TCTGGCTCAGAAGAAGAGAAGAAAGAGAAATGCAGATCGGCTCGACACGT -ACTACAAAGCTGTGGAGGAGCACAAGAAGCTGGTGGAAGAGTACGAGATG -GCGATGGAGGAGCACAAGAGAGTCAAGCGGCAGTTCTTCGCTCCGGATAA -TGCTGCATCCTGTGTTCCGTGTCCGGCATGGGTGACACTTGCCTTGGCTA -GCAGAAAGAAGAGAGAAGTCGAGAAGGTGGAGAAGCATATGACGATGAGC -GAAGCTATCGCGGATATCAGAGCAAAGAAGGGGTATAAGGAAGGATTTGA -TGATGATGATGAGGTGAGGACTAGACCTGAAATTTTAGATCCTGTAAGAA -CTTTTTGAAAATTCCAAAAAAAAAACCCCCTAATTGAATCACGCGCGCAC -GCGCCACTGAGAAGGATACTGTATTCGCGGCGAGACCACCTGCACATCTA -ACTCCCAAAAGTGACGAATTTGGCCTAAAATGGACTTTCTTCATGGGATT -TCCACAGTTTTCACCATTTTTTTGACACAGTTCATGACTTTTTACACTCA -AAAAATTATTGGCGTGGTCATTTCACAATGATTTCAACAATTTACTGGAT -TTTACGCGTGTACTTCATCGTGGCACACCAAAAATTGATCTGGTTCATGT -GGTGTCAGAGTGTCCCATTTTGGTTTGATCTACGTAGATCTACAAAAAAT -GCGGGAGTTGAGAGACGCAGAGATCTCAACTGGCGTCACATCAATGCGGA -TTTTAAAATTTTCATTTCAGGACGACGAATCCTCTGAGGAAACCATCGAG -ACCCGCAGAAAGCAACGCCGCTCCTGCCAACAAAGTGACGATTGCCTGAA -CAACGTCGAGTACGCAGTCTTCCAAAAAGTCTATGCAGACAAGAGAACCA -AACGAGAAGCCGTGTTCCGTCGTAAGAAGTGCTCGAGGTGTGGAGTCTCT -GGGCTCACGCCACATCGTGTCAAGAGAAACTTCGGGCAGCCGAATATCAA -CGTCTCGGAGCAGAATTGCATGGCATTCCCACAGTGTCGGCATAGAGTGA -AGAGAAACTTTTTGGGAGAAGACTGTAACATCTGTACACAGGATACTGGT -CTGAAGCGGAGGAAGAGAGACTTCGGAACAGCGGTAGGTGTTGGTTTAAT -GAGCTTCCTTATCTTAAAGTTTTCAGCAATGCTACCCATGCCCAGGAACA -CGTTCATAACTTGAAGCGACTCCCTCCGATTCTCACATATCACATAAATA -CCACCTCGTAATAATAATTCAACATGACTAATAAAACAAATAAGTACATA -CATACATTTATATTAGCTTTTAGCACCCGTAGCAATTTGGAGCAAGAAAA -TATGTGTAAAGAAATTGGAGATGTAGTAGATTTGGTCGTTATAGTGATCG -CAGATCTTTCAGCTCTTTGAGCCGGAATATTGACTGGCTTGGAGCCAGGA -GATGAACCTCGCGGGGGAATGAGGCAAAGTAGGGGTGAAGCATTGCACTG -GCTGCGGAGACACGGCTTTCCGGGCGGAGCTGTAATTTTGAGGGTTACAA -GATAGGTGTAGCTCGATGTCGATTCATTTAGACTAGCATTGCAGCCAGGG -CTTAAGCTTTCGGCTTGAGCTTGCACTCAAAGATTGCTGCTCAATATAGC -TCGCGAAGACTGATTTGTCAAAGATTAGACTAGTAGGCCTGGACTGACTT -AAAGGTGGAGTAGCGCCAGTGAAAATTTTGTCAAAATACATACATAATGA -TCCGAAAAAAAAACCAAATTTCATAATAAAACAATCCAAAAAATTAGATT -TTTCACAATTTCAGGTCAAATTTTTGGCAAACTGCTAAAATTTTGAAAAA -TGAGCAATTGAGGAAATCTAGAGCAATGTCGCATGTTCCGACCCCTACAA -TATTTTAATACAAATAATTAAAACACAATTACAGTATAAAAATGTAGGAA -AAAAAATTTTTTTTTTGTTGGTCGACTTCCAAAATTATGAGTGGTAAAAT -TACAGTAAATAAAAAATTTTCAAAATTTTTTTGAAACGTTTTATTATGAT -ATTCGGTCTTTTCGGGACTAAAGGAGTGGTTTTTACAAGTCTACTTACCT -GAAGAAGCATCCCCAGAAGTTCCTGACCAGTCTTCAGAATCTTCGTGAAC -ATCGGGTTCACCGCGATGAACGACAACTCCCGATACCTGGGGAACAGTTC -AGGGGTGTAGCCTGGTAATGTCTTTACCTGAAACAAACATCTTTATCTCT -AGATTTTAGATTCCCTCACCTCCGGCCACTTTTTCTCGTCTGGAGTACCC -CGAATGCTGAAGATCATATCCAACTGGTCCTTGGTGCCGGGGTAGTGAGA -GTCCTTGGATCCCGGGAACAAAGCGGCGCCCGTGCAAATTTCAGCGAATA -TGCAACCGACTCCCCTGCAAAGTTAGTAGATATAGTTGGTACCTTTTATA -AAATAATATCCTCCTACCACATATCCAGGGAAGTTGAATAGTCGGTACTT -CCCATGAGAACATCAGGCGGGCGGTACCATAAAGTGACCACCTCGTGAGA -ATATGTCCTACTCGGCACAGATTTCGCCCTGGCTAGACCAAAGTCTGCGA -GTTTTAAAACACCGTCTTCGTCGAGAAGCAAGTTTTGTGGTTTTAAATCT -CTGAAAATCAGTTTTTATCAAGAGTTATGGCCGCAACGGCGCCTCCGCCG -ACCCCAGCGGTCGCCGCGCCGGCCTCCGCGGAACCCCGAAAATGTCCGCC -GCTCCAAACAACCACTTTTTTGCACTACGTTGCGCACACACCAGGCTACT -CATTTCACGCCAAGCTGCGGAACACCGAACGTGTCCGCCGCTCCAAATAA -CTCCCTTTCGCAATACGTTGAGCACACACCAAGCTGCGGAACTCCCAACG -TGTCGGCCGCTCCGAACAACCACTTCTACGCACTTCATTGCGCACACACC -AGGTTACTCATTTCACGCCAAGCTGCGGAACCCTGAACGTGTCCGCCGCT -CCAAACAACTCCCTTTCGCAATACGTTGAGCACACACCAAGCTGCGGAAC -CCCCAACGTGTCGGCCGCTCCGAACAACCACTTCTACGCACTTCATTGCG -CACACACCAGGCTACTCATTTCACGCCAAGCTGCGGAACCCCGAACGTGT -CGGCCGCTCCAAATGACCACCTTTCGCGCTTCAACGGCGTCGGCGTGAGG -CCCGAATTTCGCGCCTCACTCTGCTGGGAGCCCTATCAACACTAGGGAGC -AGTTTGAAAACTAACCTATGAAGAATCTTCTTCCTATGACAAAAATCGAG -TCCGCGGAGAAGTTGAAAGAGGAGAAGCTTGATGTCAATGCTATCCAACC -CATAGACGTTCTGCTCCAGGTACTTGCTCAAATCCATTTTCATGTACTCG -AACACAAAAGTTAGCTGGTGGTGTTGATAGAAGATGTCGTGCAAAGAGAC -GATATTCGCATGACGGAGGTTTCTGAGAAGCGAGGCTTCACGGATAGCGG -TGAATGGGAGACCTTCTTGAAATTGAAGTTTGATCTCTTTCAAGGCGACT -ATGGATCCGTCAAGTCTGAAAATATAATTTAGTTTGGTAATATCAGCTGT -TAAAATATCTAACTTCGATTCGCACTTATACACCGTTGCATAAGATCCTT -CCCCCAGCTTGTCAATTCGTTTGTACAGATCATTCACATCCTGCGGTGTC -ACTTCCTCCTTCGCAGGAAGCGTTATCGTATTTGGATCGTAGTGTGCTGA -TCGTGGTCGACGTCTTCGAAGATGTGTGAAGTCGGCCACAGTGTTGCTAG -ATGGTGGTGGTGGCATTGATGGAGAGTTCTTGTTTAGGGGCACGGTTGAC -ATGGTTTCAGATGGATTGTTGGAGCGGGAACGTGATTGGCGGCTGAAATG -GTATTACTAGGGTTTGATTCGGAAAATTTTCTTAGAAAAACAGTTTGGCG -GGAAGTTTAAATTTTCTGATTAAAAATGTTGGCGTAAGTGGTGTCGAAGT -GCCCCATTTTGGTTTGATCTACAAAAAATGCGGGAGTTGAGACAAAGACT -TTTCAACTGATTTTGCAGGATTAAGCTGACGTCACATTTTCCTGGGGGAA -AAATCCCCGCATTTTTTGTAGATCAAGCCGCAATGAGACAGCCTGACACC -ACGTGTTGACGGGATATTTAAATTTTCTGAGAAAAACATTTTGGCGGGAA -GTTCAAATTTTCTGAGAAAAACATTTTGGCGGGAAATTGAAATTTTCTGA -CAAAAAAATTTTGGCGGGAAATTGAAATTTTCTGACAAAAAAATTTTGGC -GGGAAATTGAAATTTTCTGACCAAAAAATTTTGGCGGGAATTCAAATTTT -CTGGGAATTAACTTTGGGGAGAAGTTCAAATTTTCTGTAAAAATTTTGGC -GGGAAATTGAAATTTTCTGACAAAAATATTTTGGCGGGAAAATCAAATTT -TCTGAGAAAAAAAAATTTTGGCGGGAAATTGAAATTATCTGACAAAAATA -TTTTGGCGGGAAAATCAAATTTTCTGAGAAAAAAAAATTTTGGCGGGAAA -TTCAAATTTTTTTTTTTTGAAAAGAAAATTCTACGGACCGGAAACGGCCC -AACTACGGCTCAAGAGCCGTCTCGGTCGGTAAATGTGTTTTTTGCTCTAA -ATAATGCATTTAACGACGTAAAAATGCTTAAATTAGCCAACTGGTATCAT -AGGTATTAAAAAAATTCGTTTTCTTAAAATCCATTTTTTCCTCTTAATGG -CCATTTTTTTACATTCCCCGTAGTTTGCCCGTAATTGGTCCGTCCCGCTT -TTCATATCCGTAGTTCACCCGTTAATGGTCCGTTCCCGGTCCAAGATCCG -TAAACGGACCGTACCGGCTTTGCCTGTGGTCAGATATAACTAGTAAGTCA -AGTGGTGTCAGGCTGCCCCATTATGGTTTGATCTACTAAAAATGCGGGAA -TTTTTCCCCCAGAAAAACGTGACGTCAGCACACTCTTAACCATGCGATAC -CAGTTGAAAAGTCTGCGTCTCTTCTCCCGCATTTCTCGGAGATCAAACCA -AAATGAGGCACTTTGACACCACGTGGTAAGTTATAACAAACATAACAAGG -TGTCGAAACTACTGTAATTATAGTCTTACTTCAATATACAACCTAATAAG -AATCTCCACCACTTACCTCAAAAAGCTGAAAATATTCTTATTATGATGTT -CTGGTGTGCTTCCACTTCCGGACCCCGATGATGCCCCATTCACATGATTG -GAGTGCCATGATTGTGTCATTTCATTTGTTCCGTTTTTCGAGATCGGAGA -TTTGGTGGAGCCTCCTGAAAAAACAGAAATAAATGTGGAATTATATGGGG -GCTCATATGTTTTCGGAACTAACCTTTTTGGGAGAAGACTCTGGAGAGCA -TTTTTGTGTAAACTGACTAACTTGTGCCACCCCCCGCACCCCATAGAATA -AATTGGCTAAAATTTCGAAAAAAAAAACTCGCCACCGCCGTTATTCTTGT -ATTTCTTCTCCTTATTCCGACTCCGACGCAAAGTGAAAATTGACGAGGAC -GGCTGGAATAATGTTTTGTGTTTGTGTCTTGTGGAAGAGATGCAGAATCG -CCGGAAGTTTAGAGGGGGTGGCGTGACTTACTGACCTTCCGGGTGCTCGG -CGAGCCGTCCACGTCCTGAATTCGTTGCGGCGACATTGTGGTGATCTGGA -ATATGTGGAGCGTAATCGAAATATTTAGGCTTAGGCTTAGGCTTAGACTT -AGGCTTAGGCTTAGTCTTCGGCTTAGGCTTAGGCTTAGGCTTAGGCTTAG -GCTTAGGCTTAGGTTTAGGCTTAGGCTTAGGCTTAGGCTTGGGACTGGGC -TTAGGCTTGAGCTTTGGCCTAAGCTTAGGCTTAGGCTTACGCTCAGGCGT -AGGATTAGGCTCTGGCTTTGGCTTTGGCTTAGGCTTAGACTTAGGCCTAG -GTTCACGCTTAGGCCTAGGCTTACAAGAAATATCCTCATTTACCGACCGA -CTGTGGCCTAGGATTTCAAAAAATGACCCTTTTTGAAAAATCGAAAAATC -GAAATATCGACGAATTTTCGTTTTTGAGGCGTTTTTTTAATTTCAATTTT -TATAATTTTTTTCGGTTTTTCGATTTTTCTTGAAAATACCAAACTCACCC -TATGCAAGTTCTCCGACGACTTCGAACTCCTAACAGCGGTGAGCTGTGGA -TGATGTATCATAGACAGTGAGCACGATGCTCTCATAGGCCTCTCGGCCTC -CTCCAGCCCAAACCATACTCCAATATGCGAGGTTATTTTTCCCCACATTT -GATTGAAAGATGGTATCTGCAAGTGAAATTTTTGGGTGGGGAAAAAGAAC -GTGAACGAATAATTTGGAGCAGCGGGGGGGGGGGTGGAAAAATGAAGAGC -TGCTCGGAGGAGGGAGCCGTACTACGAAATGAGAAGAGGAGAAGCCGGTG -TGACGGCGGGGCGTTAATGGGTTACTAAAGCCTCCACATTCCCATTTTCA -GCCGTTTCGAAACAAAGAAAATAGAAGAAAAAAAAGACAGATGAAAAATG -ACTTGGGTGGGTTCGGTGAAAAACAGGAAGCAGGAAGAGTGAGGAAATTG -GATGGTGGAAGAGTTTTGGCATTTCTAGGTTACCGGGAATCTTTAGAGAC -ACCTGGGCTGTCCCATTACAGTTTGATCTACAAAAAATGCGGGAATTTTT -CGCCCAAAAAATTTTCAACAAATTTAGATATTTTTTACATTTTTTCCCCA -ATTTTTTCAGCCATATTTCAGCCATGACTGTCCTTTTTTTCGGGCAAAAA -AAAATTTTCTCTGAAAATGTTCGAAACTACTAAATTATGCAAGAAGACAA -TTTTTAAGGTTCGGAGATCAATTTTGAGTCCTCTAGCTTCAAAATTATCC -ATTTTAGAAGAGTTTTAAAATTGTAATTTTTTACAAAAATTGCTCAATTT -TGCCACTTTTTAATAGTTTTCTAAACCTAGATTTTCTGAATTCTGCATAT -ATGAATTACCCGTTTTCAACAAATTTAGACAATTTTTTTCATTGTTTCCA -AAATTTTTTTCAGCCATTTTTCAGCCATTACTGTCCTTTTTTTGGGCAAA -AAAAATAATTTTTTGAAATTACATTACACACCTTCCATGTTTTCTTCGTA -GATTTAAGGTCCATGTCCACTGCTTGGTGGAAGAGTTTTCCGAGTTTTTA -GGTCACCGGAGAATTTGAGTTGGAAGAGTTTTCGCATTACTCCCCAACTG -TGATAGAACTTCAAAAATGAATATGCAGGGACATCACTCAAATTTGACAT -GTCAGTTTAAAGGAACACGCTGATTTTCCGAGTGGGTCTCGCCACGATCC -AGGTGCTAAATTTTCACAGTTTTTAGTATGTACCTAGTGGCTTATTTCTA -AACAACACGCGCATAACATCGGAGTGTCGTTGCATAGGCCACTCTAAAAC -ATAAACAAATGTGTGAAGAAAAATTAAACACAACTAGCACGGATTTCTGA -CGTCCCTCAGAAGTTGAAATGGAAGAGTTTTTGCCGAACTAGGCCAGGCC -ATATTCGGGGTAGATTTACGGCGCGTCGCGGCTCGATTTTAGTTGTAAAA -CTAAATGTATTTGTCCGTGTGGAGTACACGACTTTCCCAAGCGTTGTCCG -GCAGGCGATTGTCAATGGAGCGCGAAAATTCAATGAGGAAGGCCAGAACC -CCGTGGGATTTTGAAATTTTTTTCAGATATGACAAAAAATGACAATGCCA -AATTTAAAATGCATTAATAGCGGACAGAGGAGAGAATAAGTAGGGAAAAA -AGAAGAAAAAAAAAGACGGGCGGCGCTTCTCTCATAAAATAGTAATTGGT -CATTCTAAGTGTGCCTATTGTTCCTTATTTTTCGCTTTTTCTTGGCTCAT -TTTAGCTCAAAAACCAAATGTCGAAGAGTTTCTAGAGAACTAGGCCACGA -GAGGGAAAAACTAGGTCACTGGAATTTCTACGCTAAAAATTTGGCCCAGC -ATATTTACCTACGTGGCCGTAAAAGAGAAAGTTCGGCCACTAACTTTTTC -GGGCTATCAAAAAAGGTTTACCAAAACTTTATAAAAAAGAAACCACTTGT -GGAAAATGGCCGTGCATACTAAAGTTCGGCCACAAACTTTTTTAAAACTT -TTTTGCTCAAATTGAAGTACAGGACCACTTCGATGGGCGGTTTTCACTAC -TTGGCCGTGTAAGAGAAAATTCGGCCACCAACTTTTATTCAAGGCCACAC -CTCCAAATCCTTCAAAGCTTCAAAAATTTTCTACGTGGCCGTGTACGAAA -AAATTCGGCCATCATCTTTTTTTTGGGTCACGTCGCTAAATTCTTCAGAG -CTTCAGAGATTTTCTACGTGGCCGCGGGAGAGAAAATTCGGCCACCAAAT -TATTTTTTAAGGCCAAACCTCCAAATCCTTCAGAGCTCATATTTTCTACG -TGGCCGTGTACGAGAAAACTCGGCCACCAAATTAATTTTGAAGGCCCCAC -CTCCAATTTCTTCAGAGATCATATTTTCTACGTGGCGTGGCCGTGTACGA -GAAAATTCGGCCACCAAATTCTTTTTTAAGGCCAAACCTCCAAATCCTTC -AGAGCTCCTATTCCCTTCGTGGCCGTAGGAGAGAAAGTTCGGCCACCAAA -TTAATTTTTTAAGGCCACGTCGCCAAATCCGTCATATTATGAGGAAAAAA -GTAAAAAATAATACTAATAACAATTGAAGAAAAATTGAAAAATATAAAAA -TATAAGAGACTAGTAAATGAAGAGGAATGAAGAGCGAATAGGAGGCCAGA -GAGAGAGAGGGGAGGAAATTGTGCTGTTGAAGACCTTGAAGAGAGAGGCA -CAGCAATAGATAAATTGAATTACAATGGGGTGAGGAGCCGGGTCTGTCCC -CCCCCCCCCCCCCCCCCAAAAAGTGCGAACAAATGTGATGAAGCGCAGAG -AAAATCGGGAGGGGGGGGGGGGGGGGGGGCTGTGCTCCAGGTTGATTGAG -CCAAGTGTTTCGACTTTTTGCCGAACACGTTGAGCTCTCCGATGAGCCGG -GCTCACCGGAGAGCCCATGGAGCCCCATGAAGCAGAGGGTCACAAGGTTT -GAGACTTCCGGGAGATAGACTGCACAACGTACAAAGACTAAAACTTTTTT -TTTTTGCAGGTGAGGCATGAAATTTAGAGCTTTTTTGCAACAAAATCCAA -CATTTTTTTTGTAAAATAAGGTCAAATGACGAGTTTTTTCTATAATCTGG -CCGAGAAAACCTGAAAATTGATCTACCTTGATAAACAGGGCGCGCGGGTG -TAAAGCGGAGCGTCGTTGTGAAGCTGAAATATTGTTGAACGAATTCTGGA -ATTCTGGCTTCCCTCATAAATTGAAATGGAAGAGTTTTTGCCAAACTAGG -CCAGGCCATATCTGGGGTAGATTTACGGCGCGCTTTTTTTTGGGCATAAA -ATTCCCGCATTTTTGTAGATCAAACCGTACAGCCTGACATCACGTGTTTT -TGGCCCCGCTAAACAGGGCGCGGGTGTAAACATTCAAATATTATGTGAAA -AAAACGCATGAATTTGAACAATTTTGCGTAGAATTTTTGAACAAAAAAAT -ATATGAATAACTAATGCAAAACGAACAGAACTAAATTTTCTGAAATTGAA -GAGAGGGGAAAAAAATTGGGAAATTTTGGACATTTTTCCCAACGACGCAT -TGAGCCACCGGACCCAGATGAGCAAATAAACCGGGGGAGCAGGAGGAAAA -TGGAAATGACAAAAAAGGCGGAGGAGGAGAAGCTCACGTATTTAGTATCC -CATAGAAAGAGTCAATTTTCATAAACTGCGACAATTGACTACCAGGGAGC -AGTTGCGCTCTACCGACAAAATCAAGCAAGGTCCACGTAGTGCCAGTCTG -TCCCATTACGGTTTGGTCTACAAAAAAATGCGGGAAAATTTGGCTCAAAA -AAATGTGACGTCAGCACACTCTTAACCATGCGAAATCAGTTCCCGCATTT -TTTGTAGATCTACGTAGATCAAGCCGAAATGAGACACTGTGGCACCACGT -AAAGGTCCTTCTTACAGAGTGCGCTAGAGCGCGATTGCCAGTTTTCTAAA -AAAAAAATCTAACATGAAAAAATGTGCGTAAAAGCGGAGTTTCGTTGCGA -TGTAAAATTTGGAGAAAAATTGAAAACTGAGGAGGAAGAAAAAGTTAAAT -GCCTCTTCGCAAGACCGGGATTAAATAGTATTTTACTTCTTTTTTTTCCT -TCAACTTTTTGAAATTTTTGGCGGAATGGGGAAAAGGAAAAAAAAACGAA -ATCATCGATAAAAACAACACTAGGCCACCCAGAAGTAAACCTAGGCCACC -TTATAGAAATTCTAGGCCACCCTGTAAGAATTTTAGGTCATCGCGTAGAA -AAGCTAGGCCACCCTGTTGAACTGCTAGGCCACGCTGTTGTACACTTAGG -CCACTCTGAAAAAAATCTAGACCTCCCTGTAAAAAATCTAGGCCACCTTG -AAAGAATTTTAGGTCATCGTGTAGAAATTCTAGGCTACGTTTTCGAAATT -CTAAACCACTCTGTAGAAAACTTGGGTCATCTACCGAAATTCTAGGCCAC -CCTGCAGAAAACTTAGGCCATCTACCAAAATCCTAGGCCACCCTGTAGAA -AACTTAGGTAATCTACCAAAATTCTATGCCACTCTGTAGAAAACTTAGGC -TACCTCGTTAAAGTTCTAGGCCACCGTGTAGAAATCTTAGGCTACCTCGT -TAAAATTCTAGGCCACCCTGTAGAAAAATTAGGTGATCTACCAAAATTCT -ATGCCACCCAGAAGTAAACCTAGGCCACCTTGTATAAATTCTAGACCACC -CTGTAGAAAACTTGGGCCATCTACCAAAACTCTAGGCCACCCTGTAGTAA -ACTTAGGTCATCTACCAGAAAACCTAGGCTGTTCCGTTACGCCGCATGCT -AAAAAATCCAGACCGCCCTGTAGAAAATCTAGGTCACTCCCTACAAAACC -TAGGCCACCCTGTGAAAATTCTAGGCCACCTTGTGAAAATTCTAGGTCCT -TCCCTAGAAAAACTAGGCCACCCTGTTAAACTCTTAGGCCACTCTCTAGA -AAAACTAGACCACCCTGTAAAAAAACCTCGATGGCCTAGAAAAAAGCTTG -GGAAATTTTGTGGAAAAAGTTAAAAAGGAAAATCTAGGCCACCCACAAAA -AAGCTAGGCCACGTGGCAAGAAACTTCAAAAGTGACGAATGATGAGACGA -GAGGCGTATGTTTGAGGTCAAAAAGGGTGAAAAAGAAGAAAAAAAGACGA -GGCGGAATGTTTCTTTTTTCTTTTCAAACTGAGCATCTCCCCGTCTCTCG -GCCACCAATACTACTACTACTACAACTATTCATGTTTTTAGAGAGCCCCC -CCCCCCCCCCCCCCCGGCCACTTGTCAGCTTTTTTGACGGAAGATGCCAA -CACACAATCGAAGGGGAAACCATAAAAACCCGCCAACGACACTCCGTTTT -AAGGCCCGGATGCCCAGATGTATGAAAAAATGGAGAAACTGAAGGCTTCT -CCCCTCCCCCCCCCCTCCCTTAAAAAATGATGAATTACTAATGGTGCCGC -CCATGTTGTGTTTGTTGCTTTCCCCCCGTGCTCCATCATTGGGGGAACAT -GACAGCCACCTTGAGTTACATGTATACAAAGTGACAGGAGGGAAAGATAG -GGGTAAAAGTGCAAAAAGGGAGTCGCGGGTTCGAACCAGTGAGGGTTTGC -AAAATTTGGGCTGTGCGCGGCGCCTTAGACTACTGCGCCACGCGTGCGAA -CTGTAAATAGAACTGTCAGGCTAAATACGAACGTTCGGTTTTTAAACTCG -ATTGGCAAAAATGAAATGAATGAATAGACAGGAATGACTCATATTTTTTG -CATAAAGGGGCCTGGGTCTGGGAACTAGGAACTAAACTAAATGAAGGAAA -ATTGAGGCATCTCCCGCCAATTGAGTAGAAAAGTGATGAGAGCGGCAAAA -AGAGATAGGGGGGGGGGGGGGGACCCATTCATTTTACACTGGACACCACA -CTCCCCACTCTCTCTTTGATGACGAAGGACATGAGTACGAACTCGCGAGC -ACAGAAATACGACACGTTTTCTTCTCATTTTTTTTTTGCAAAAGGTGATG -ATGATAATCGCTTCTAAACGAGGGGAAGTGTACTAAATAATAAAATTGCG -AGTGGATATTGGATTTTTTCGTTATTTTCCGCTCTGAAAAACCTGAAAAT -CAGTCGGAAATTCGAGTTTTGGCTAACTTTTTGTAAATTTTGTTTAAAAA -ATCACTTTTCGCTGCGAAACCACCTGAAAGGATATAGTGGGCATGCGCCT -TTGAGCGCTACAGTGGAGGGAATGCAGTATCTCTTGGAAGTCAGATTTGC -CGATTGTTTTAACGCAAAACCTGAAGTATAGAAAAGAAAACATGAAAATT -TATTGAAAATATAATAAATAAATTAAGCAAATTACATATCAACTGAGAAA -ATCACCTGCTGGAGAGAAAAATTGAAAAAAAACCAGAAAATCGGCAGGAA -AGCAATAATCGAGCAAGATCCTTGGAATTTTTAGGTGCAGATATCGGTTC -AAAAGGAAAACACTATTTTAGCTTTTTTTTGTCTTAAGTTCAATGTTATA -ACACAAGAAACGATATTTCTATGGCATAATTTTTGGGTCCTAGAAAGCAG -ATTTTCACGTAGATTGGTCTGAAAATAATATTGGAGTAATTTTTATTATT -TTTCCTTGCATTATAAAATTATTTCTCTTTTATTTCTCAATTCTAAAACT -ATTTTCCCGTTCTTTTTCCCTATATCTCGCGCTTCTCCGGGATGTTGCAT -CCCATTCGACGTGAGGAGTCTCGGAGTCTCTCCGCTGCAAACGCGCTCCA -CTGGACACAGAAAATAAAAAAAATAAATTGTTCGAATTCATGCAATTTTC -TTCTAATTTTCTCCGTTTTTCGTCAATTTTTCTGCAAAAAAGACAAAATT -TACAGGTAGCAATGTATGGGGGATATCAAGGAGCATATGGGTAAGGCTAA -AAACTAGGAAAAACTAGGAAAAACCCATGGAAAACTAAAAAACTCTGAAA -TTTCAAATTTCAGAGCCTACGGGAACCAGCAGGCGGCTTCACAACCATAT -CAACAGCAAGGACAACAGAATTATTACCCGTAACTCGAAAAAAATTCAAA -AAATTCGAAAAAAATCAATTAAAAAGATCAAAATTTTCAATTTTTTCAGC -GGAGTGAACCCGTACGCGGCGAATTATGGGTACGCGGCAGCACAGCTTCC -ACCACCACCTCCACCACCGCCAGTATGCCTTAAAATTGAAGAAAATTTGA -TTAAAAAATTGAAAAAATGCAAATTTTCAGGTAGCCGATCCATACGCCGG -CCAATTTCAGACATTTCCCTCTCAAGCCACCAAAATAGCGCCGAATCCCT -ACTTTAAAAAGCCACAAAATCAGCAGCAACAGGGTATTTTCGCCGTGTTT -TCTGGCTGCAAAAAAATTAAATTATCGATTTTTTTAAGGCTACGACGCGG -CGGTCTACAATTACGCTCAGCAGAATACTCCGAAAAATTGGAAACACGGC -GGCGGCGGCCGGCAGGGGAGACAGGGATCTGGCGATAATAAACAGTACTA -TTGTGAGGTAAAAAACGTGGAAAAAATCGAGTAAAACACAGTTTTTTATT -CAAAAATCTGAGAATTTCCGTAAAAAATCCTGTTTTTTGACGTTTTTAAG -CAAAAAAATCGGGTTTACAGCACTTTTAGAGATAAAAAAGTGGAAAAAAT -CGAATTTTGGACCTGATTTTGGGCTTGAAAGCATGATTTTTATCAGAAAA -CACAGTTTTTTTTGTCAAAAATCTGAGAATTTCTATGAAAAGTCTTGTTT -TTGGATGTTTTTAAGCAAAAAAATCGGGTTTACTTCATTTTTAAGGGTAC -AAAAGTGGCGAAAAGTTAATTTCTTGTAAATTTTCACATGCAAAATATTG -AATTTATTAGGTTTTTTCCAGAAAAAGTAGTTTTTTTGCTACATTTACAG -GCTTTTAAAACTGAAAACATGTTAAATTTCGAGGAAAATCGACAAAAAAA -CCCATCTTTTGGCCAAATTTAAATTTTTGAGCAAAAAAATCGGGTTTGCA -GCACTTTTAAAGATAAAGAACTGAAAAAATTCAATTTCTTGGAGAAAAAA -GCAATTTCAACACCAAAAATAGCAAAAAATTCGGGAAAATTGTCAATTTT -TTTGAAAAAAAACTTGAAAAACCGGATTTCCAGTTGTTTTTTCATGATTT -TTTCTCAAAAATCTCATAAAAATTGGAAAAAATTCCGAATTTTTTACTGA -AAATTCGAGAAAAATTGAAATTTTTTCAATTCCGATTTAAAAAACATTTT -TCGCTAAAAAATTGAATATTTTTAGGCTTTAAAGTTCGGAAAAGATGCTG -AAAATTCGGAATTTTCTGTTTAAAGAAATTTTTTTTGTGCTGAAAAATTG -ATTATTTTTATGCTCCAAAAACTGGAATTTTTGAAAAATTCGGACAAAAA -AATTTTTTTATTAGTTTTTAAATTTTTTTAATTTTTCAACCCGCTTTTTG -CCCAAATTTAGATTTTTTATTTAAAAAATCGGGTTTACAGAACTTTTAAA -GGTAGAAAAACTGCAAAAAGTTAATTTCTTGGATATTTTCAGGCTTTAAA -GTCCAAATAAACATGTTGAAAATTGAAATGTCTTCAATTTCGATTAAAAA -CATTTTTTTCGCTAAAAAATTGAATATTTTTAGGCTTTAAAGTCCAAAAA -ACAAGCTGAAACTTGAATTTTTTTCATTTTCAATTTAAAAAAATTTTGCT -CAATAGATTTTCAGGCTCCAAAACACTGGAATTTTGGACTTAATCGAAAA -TTCGGACAAAAAAATATTTTTATTAGTTTTTAATTTTTTTAATTAAAAAA -AATCCCAATTTCCAGGTGTGCAAAATCTCATGCATTTTTAGGGTTAAAAT -TGGAAAAAATTATCAAAAATTTTCGAATAAAAATGGAATAAATCTGATTT -TTATAAATTTTTCGAAAAAAAAATGATTTGTTGGCAAAAATTAAATATTT -CAGGCTTTGGAAGTCCAAAAACCATGTAGAAAATTCGGAAAAAATCGAAA -AATTGGAAGAAAAAAATTTTTAATTTCAAAAAATTTCAAAAAAATATTTA -AAGCTGGTGTAGTCGACTTTATTTATTGCTTAAGTAGACTCTAAATTGCC -TGGAAACACCGAATTTCATAATGAAACTTCTTGAAAACTTCTCAAAAAAA -AAAGTTATGACGGCTCAAAAAATGGACTAAAATTAGTTAAAATTTGAAAT -TTGACCGACTTTTCAAGCGGCTGGAAACATTTTTTCTTTGAAATCACCGT -CAAATTTTGAGTATACTGTGCAATTATGTTGCGTTTTCAACTTCATTTAG -GTATTTTAAAGTCAAAGGGCGGCGAGATTTTTAATTTTTTGAACCAAATC -TCGCCGACCATCGACTTTAAAATATCTAAATCGAGTTCAAAACTCAAGAT -AATTACATTATATAATCAAAATTTGACGGTGATTTCAAAAAAAAGGTAGT -TTCTAGCCGCTTGAAAAGTCGGTCAAATTTCAAATTTTAACCAATTTCAG -GCCATTTTTTTAGTCGTCATAACTTTTTTTCGAGAAGTTTTCAAGAAGTT -TCATTATGAAATTCGTTGTTTTCAGACAATTTTGAGTCTGATAAAGCAAT -AAATAAATTCGACTACACCGCCTTTAAATATTTTTTTGAATTTTTTTAAA -ATTAAAATTTTTTTTTCCAATTTTTCGATTTTTTCCGAATTCTCCACGTG -GTTTTTGAACTTCCAAAGCCTGAAATATTCAATTTTTGCCAACAAACTAT -TTTTTTTTCGAAAAATTTATAAAAATCAGATTTATTCCATTTTTATTCGA -AAATTTTTGATAATTTTTTCCAATTTTAACCCTAAAAATGCATGAGATTT -TACACACCTGGAAATTTGGAATTTATTTGTAGAATTTTTGGATTTTTTAA -TTAAAAAAAAGTTTTTTCCGATTTTTTTTCCGAATTTTCAACATGGTTTT -TGAACTTCCAAAGCCTGAAAATGATTTTTTGAATAACTTTTTGATTTTTT -CGGTTATTTTTGGTTTTTTTTTTTAATTTAAAAAAATTAAAAAATTAATA -AAAATATTTTTTGTCTGATTTTTCGATTAAAGTCCTGAAAAAAAAATCTA -TTTTATAGCAAAAAATCCTAATTTTCAGCCTGTTTTTTTGCCTTGATATT -CAATTTTTACAAAAAAATTTTTTTTGGAGTTTTTTGCCTAAAAAATCGAA -AAAAAAAATCATCTTTTCTCGAATTTTTGGAAGAAAAATTAAAAATTTCA -AAAATAATTCAATTTTTTGGTGTTTTTCGGGTTTTTTACATAATTATTTT -TTAATTTAAAAAGTTTGTAAATAACCATAAAAATTTATAATTTTTTAAAT -TAAAAAATAATTATTAAAAAAAACTCGAAAAACACCAAAAAATTGAATTA -TTTTTGAAATTTTTAATTTTTCTTCCGAAAATTCGAGAAAAGATGATTTT -TTTTCGATTTTTTAGGCAAAAAACTCCAAAAAAAAATTGTTTTGTAAAAA -TTTAATATCAAGGCAAAAAACAGGCTGAAAATTCGGATTTAAAAAAATAA -TTTCTTGCTATAAAATAGATTTTTTTCAGGACTTTAATCGAAAAATCAGA -CAAAAAATATTTTTATTAGTTTTTTAATTTTTTTAAATTAAAAAAAAAAT -CAAAAATATCCGAAAAAATCGAAAAATTATTCAAAAAATCATTTTCAGGC -TTTGGAAGTTCAAAAACCATGTTGAAAATTCGGATAAATAAAAATATTTT -TTTGTCCGAATTTTCGATCAAAGTCCAAAAACTTCCAGTTTTTGGAGCCT -AAAAATAATCAACTATTGAGCAAAATTTTTTTAAATTGAAAATGAAAAAA -ATTCAAGTTTCAGCTTGTTTTTTGGACTTTAAAGCCTAAAAATATTCAAT -TTTTTAGCGAAAAAAATGTTTTTAATCGAAATTGAAGACATTTCAATTTT -CAACATGTTTATTTGGACTTTAAAGCCTGAAAATATCCAAGAAATTAACT -TTTTGCAGTTTTTCTACCTTTAAAAGTTCTGTAAACCCGATTTTTTAAAT -AAAAAATCTAAATTTGGGCAAAAAGCGGGTTGAAAAATTAAAAAAATTTA -AAAACTAATAAAAAAATTTTTTTGTCCGAATTTTTCAAAAATTCCAGTTT -TTGGAGCATAAAAATAATCAATTTTTCAGCACAAAAAAAAAATTTTTAAA -CAGAAAATTCCGAATTTTCAGCATCTTTTCCGAACTTTAAAGCCTAAAAA -TATTCAATTTTTTAGCGAAAAATGTTTTTTAAATCGGAATTGAAAAAATT -TCAATTTTTCTCGAATTTTCAGTAAAAAATTCGGAATTTTTTTCCAATTT -TTATGAGATTTTTGAGAAAAAATCATGAAAAACCAACTGGAAATCCGGTT -TTTCGAGTTTTTTTTCAAAAAAATTGACAATTTTCCCGAATTTTTCGCTA -TTTTTGGTGTTGAAATTGCTTTTTTCTCCAAGAAATTGAATTTTTTCAGT -TCTTTATCTTTAAAAGTGCTGCAAAAAACTACTTTTTCTGGAAAAAACCT -AATAAATTCAATATTTTGCTTTTTTTTTTCCTTTTTTTGTGAAAATTTAC -AAGAAATTAACTTTTCGCCACTTTTGTACCCTTAAAAGTGCAGTAAACCC -GATTTTTTTGCTTAAAAACTTCCAAAAACAGGAATTTTCGGGTTGAAAAA -TTAAAAAATTTTAAAAACTAATAAAAATATTTTTTTGTCCGAATTTTTCC -AAAATTTCAGTTTTTGGAGCCTAAAAATATTCAATTCTTTAGCGAAAATT -GTTTTTTTTTCAAAAACTTCCTACGACTACACCACCTTTAAAAAACCAAA -TTAAATTAGAGAAATTCTTCAAAAAATCCCCAAATTTCCAGGTTTGCAAA -ATCTCGTGCGCCGGCGGAATCACATACAAAGAGCATCTGGAAGGTCAACG -GCACAAGAAAAAAGAAGCTATGGCAAAACAGGGCATACCGAGCACTTCCC -TCGCTAAAAATAAGCTTTCCTATCGTTGTGACCTATGTGACGTCACTTGC -ACCGGTCAGGACACGTATTCGGCTCACGTTCGTGGCGGAAAACACTTGAA -AACTGCACAATTGCACAAAAAATTGGGAAAACCGGTGCCTGAAGACGTTC -CGACGATTATTGCTCCGGGAGCCGATGGGCCGACGGAGACGAAAGCCAAA -CCGAAATGGCATCAACAAGCTCTGCCTGGCGGGAAAATGTGCGGAATTTG -AAAAAAAAATTTTGGAAAAAAACGAGAAATTGCACATTTTTAGGCTCAAA -AATCTGAAAATTTAGCAAAAAAATTTAGAAAAATTTGGATTTTTAGAAAA -AAATTAGCGTTTTCTCGCCAAAAATGCTCAATTTTCGATAAAAATGTACA -TTTTTTTTTTTGGATTTTTAAAAAAATATTTTAGGGCTCAAAAATCTGTA -AATTCTGCAAAAAAAATTCTAAAAAATTTTGAAATTTTGAGATTAAATCT -TTCGCCAAAAAAACGAAAAATTTGAATTTTACAACTTAAAATGCTCAATT -TTCGAGGAAAATGTAAAATTTTTTTTCAATCTGAAATCTGTAATTTCTTT -TAAAAAATCGATTTTTTAAAAAATTTCTACTGTAAAATTTTGAAAAAGTT -GAACGACGTCAAAAAGAAGGTAAAAATCCGAAAAAAAGCAACAAAGAACT -AGGAATTTTAAAATTTCCAAAAATGGTCTGAAATTTTGAGAAATCAAAAA -AAACAAGTTTCTTTCAGTTTTTTTTAGAAAAAAAAATCGTATTTCAGAAT -TTAAATTTAAAGCATATTTTAAACTTTTAAACGCAAAAACATTATATTTT -TCTTTAAAAAAAAAACAATTTAAACGCATTTATTGCTTTATTAGACTCAA -AATTGTCTGAAAACACCGAATTTCATAATGAAACTTCTTGAAAAAAAAAA -GTTCTCAAAAAAACAAGTTATGATTGCTCAAAAAATGGCCTCAAATTAGC -GGAAATTTGAAATTTGACCGACTTGTCAAGCGGCTGGAAACTAGCTTTCT -TTTTTGAAATCACCGTCAAATTTTGAGTATAAAATGTAATTATCTTGCGT -TATCAACTTGATTTAGGTATTTTAAAGTCGATGGACGGCGAGACTTTTAA -AGGTGGAATACCGAAATTTAAGACTTTGCTTTTTTAGACCGAAATTTTGG -CAACTTATCGGTGCGACACTGCAAAATTGCCAAAGTTTGAGATTTTAGCT -AAAAATAGGCCGTTTTTTCCAAAAACTTTGATCGGCCATAACTTTTTTTT -GGAAAATTTTCAGAACGTCTCATTACGAAATTCGGCAGTTTTGGGCCATT -TTGGGTCTAAAAAAGCAAAGTCTTAAATTTCGGTACTCCACCTTTAAAAA -TCTCTCCGTCCATCGACTTTAAAATACCTAAATCAAGTTGATAACGCAAG -ATAATTACATTTTATACTCAAAATTTGACGGTGATTTCAAAAAAAAAAAG -TTTCCAGCCGCTTGGCAAGTCGTTGAAATTTCAAATTTCCGCTAATTTGA -GGCCATTTTTTGAGCAATCATAACTTGTTTTTTTGAGAACTTTTTTTTTC -AAGAAGTTTCATTATGAAATTCGGTGTTTTCAGACAATTTTAAGCCTAAT -AAAGCAATAAAAAATTAGAATATACCACTTGAGAAAAATTAAAGATTTTT -TTAAGTTTAAAATAAAAAAATATGTTTCTTTCCGATTTTTTGATAGTGAG -ATAAAAGTTTTGGCGGGAAATTCAAATTTTCTAGAAAAAAAATTGAAAAA -ACTCATAGTGTATAACTGCACAGAACGGCTGGTTATGAGTATAGGTGTCA -AAGTGTCTCATTTCGGTTTGATCTACAAAAAAAGCGGGAATTTTTCCCAA -AAAAAGTTACGTCAAGATGCTCTTTTTTATTAAATTTAATTAAAAAAGAG -AGCATGCTGACGTAACTTTTGAGGAAAAATTCCCGCTTTTTTTTGTAGAT -CAAGCCGAAATGAGACACTTTGACACCACCACGTTCAGACAAAATCCCCC -ACTAAATATTTGGTAAAACTAGTTCAAAACCCGACTGTAGTACATTTTTG -GCAGAAATTTGAAAATTTCAACTTAAAACCGCTCAATTTTTCCAAAATTT -CACAGTATGCATTTCAAAAATTATGGTTTTGTTTTTTTTTAATCGAAAAA -TATATTTTTAACAAAAATGGACCATTTTTAGTTGTAAAATTCAATTTTTT -GGCGCTTTCAAATTTTTAGGCAAAAAATGTGCAATTTTCTCCAAAAATTT -TCAGATTTTTTAACCCTAAAATTAAAAAAAAATCTAAAATATTAGAATTT -CCCGCTTTTTTTTTCAAATATTTCAATTTTTCCAATTAAAACACAAAAAT -TGAGCATTTCTAGTTGGCACATTCAAATTTTTAGGCGAAAAATTTGATTT -CAAAATTTCAAAATTTTTCAGAATTTTTTTTTGCTAAATGTTCAGATTTT -TGTGCGCAAAAATATTTGAAAAATCCAAAAAAAAAACTCGAAAATTGAGC -ATTTTCAGTTGTAAAATTCAACTTTTTAGGCGGAAAAATGTGCAATTTTT -CCCCAAAAAATTCAAATTTTCCAACTTTTCTCTCAAATAGCACAGAAACA -GAAAATTTGTTATACCTAATGTGGAAAAACTGAATTAAAACAGATTTTTT -GAAAAAATGCACTTTTTTTTTTGCCAAAAAATAGTTCAAACCCCGACTTT -TTGTTCCAGAGTTTCCAGGTCATCGGTATCATCGCATAAATAAATTTTGC -GGGAAAAATTCCCGCTTTTTTTGTAGATCAAACCGAAATGAGACACTTTG -ACACCCCACGTTCAGACAAAACCCCGACTTTTTTCCAGAGTCATCGGCAT -CAACACGGTAAACTTCGTCGGCGGTACGAAGCTCAACTCCACCGGACAAC -TCGAGGAGAAGAAGCGCGAAGTTGCTGCCGCCGTGAGCTCAGTCGGCCGG -AAAACCGGTGGTGCTGCTGCAACGACGACGATTGAGGTGGAAGACGAGAA -GCTCCGAGCAATGATCGCCGCCGAGGAGGTACAACCTGTCGGCGAGGAAC -ATGTCACTGAAGAACGTGATGCTACCGGAAAACTGGTGCAATTCCATTGT -AAACTGTGCGATTGCAAGTTCTCCGATCCGAATGCCAAGGAGATTCATAT -CAAAGGTCGTCGACATCGTGTCAGCTATCGGCAGAAGATTGATCCGACGT -TGGTGGTGGATGTGAAGCCATCGAACAAAAGATCACAGGAGAAGCGGAAG -AATCAGCTTCCAGCAGTTCATGGTGTGTGGATTTTTTAACAAAAAATCAA -CAACAACACAAAAAACATGTTCCAATAAAATTGGAAAAAAAAATTTAAAA -AATCCCAAATTTCCAGGTGTCTAAAAATCTCATGCATTTTTAGGGTTAAA -ATTGGAAAAAATTATCAATTTTTCGAATAAAAATGGAACAAATCTGATTT -TTATAGAAAAAATAATAATTTGTTGGCAAAAATTGAATATTTCAGGCTTT -GGAAGTTCAAAAACTATGTAGAAAATTCAGAAAAAATCGAAAAATTGGAA -GAAAAAAATTTTTAATTTGAAAAAATTCAAAAAAATTTAAATTTTTTTAA -AAATTGAATTTTTGAGTAAATAATTTTTTGCTATAAAATTCAATATTTTC -AGGCTTTCAAGTCCAAAAACCGTGTTGAAAATTCCGAAAAAATCGAAAAA -TTGGAAAAAAAATTTTAATTTAAAGGTGGACTACGCTCAGTGGGGGGAAA -TTGCTTTAAAACATGCCTATGGTACCACAATGCCCGAATAGCATAATAAA -AAAATTTTAAAAAATATTCTAGATTTTATATGATTTTTTGAAAATTGGAA -AAATCACAGTTTTTGCCTAATTCCTATTTGAATTACCGCCAATTGGATTT -GTTCGGTGGAGCGCGCTTGCATGTTTTTAAATTTATTTATTTTATTTATT -GTTATTTTCCACCGATTTTTAATGTTTTCGATGTATTTTTGTTTGAATTT -TAGAGAAAAAGTCAAAATAAATACTAATTATCGATTAAAAAGCACGCTTA -CAGGCGTAAATCAGTGAAATTAATTAACTCAGGTTCGAAATCGTTTAAAA -TCGTTACTTTTTCATTTTTACGCCTGTAAGCGTGCTTTTTAGTCGAAAAT -TTGCATTTATTTTCACTTTTTCTTTAAAATTCAAGCAAAAATACACCGAA -AACATGAAAAATCGGTGGAAAATAACAAAAAATAAAATAAATAAATTTAA -AAACGTGCAAGCGCGCTCCATCGAACAAATCCAATTGGCGGAAATTTAAA -TGGGAATTAGGCAAAAACTGAGATTTTTCCAATTTTCAAAAAATCATATA -AAATCAGAAAAATTTTTGTTTTTTTTTTAATTTTTTTAAACATGACATTC -GGTCATTGTGACCCCATAGGCATGTTTTAAAGGTGGTGTAGTCGAATTTT -TTTTATTTCTTTATTAGACTCAAAATTGTCTGAAACCCCGAATTTCATAA -TGAAACTTCTTGAAAAATTTTCAAAAAAAAGTTATGGCGGCTCGAAAAAT -GGCCTAAAATTAGTGAAAATTTGAAATTTGACCAACTTATCATTGTCGCA -TCGGCTGGAAACAATTTTTTTTTTGAAATTGTCGTTCAATTTTGGGTGTA -CAGGTCGATTATCTTGCGTTTTCAGCTTTATTAAGGTATTTAAAAGTCGA -TGGACAAATGGATCTGTCAAATTTTTTACCAAATCTTTTCGTCCATCGAC -TTTTAAATACCTAAATAAAGCTGAAAACGCAAGATAATCGACCTGTATAC -CCAAAATTGAACGACAATTTCAAAAAAAAATTGTTTCCAGCCGCCGCAAC -AATGATAAGTTGGTCAAATTTCAAATTTTCACTAATTTTAGGCCATTTTT -CGAGCCGCCATAACTTTTTTTTTTGGAAAAGTTTTCAAGAAGTTTCATTA -TGAAATTCGGTGTTTTCAGACAATTTTGAGTCTAATTAAGCAATAAAAAA -AATTCGACTACACCACCTTTAAAGCAATTTCCCCACTGGGCGCTACTCGA -CCTTTAAAGGGGGAGTAGAGTTTGTGGGTATTTTGCTTAAATAGACTAAA -ATTGGTCCAAAACCACCGAATTTCATAATGAGACTTCACAAAAAATCTCC -AAAAATTTTTTATGGCCGGTCAAAATTTCGAAAAAAAAAGATGCAACTTT -TGCTAAAATCTGAAATTTCGCACACTTTTCTTTGTCTAGCAGCCGCTGGA -TTTTAGTTTTTCTAAAATTATCACCCTCTAATCCTTCTTTTTGGTAATTT -ATCTCGCGAAAATCCGTTGATTGAGACAACTTTTAGGCCGATAGGCATCC -AAAAATGATCAATCTAGGGATGCCTATCGGCCTAAAAGTTGTCTCAATCA -ACGAATTTTCGCGAGATAAATTATTAAAATAAGGATTAAAGGGTGATAAT -TTCAGAAAAACTAAAATCCAGCTGCTGTGACAAAGAAAACTGTGCGAAAT -TTCAGATTTTAGCAAAAGTTGCATCTTTTTTTTCGAAATTTTTTATTTTG -ACCGGCCATAAAAAATTTTTGGAGATTTTTTGTGAAGTCTCATTATCAAA -AATTCGGTGGTTTTGAACCAGTTTTAGTCTATTTAAGCAAAATACCCACA -AACTCTACTCCCCCTTTAAAGGAATGAAAATAATTATTGGAACGTTTGTT -TTTTAAAATGATTTTTTGTTAAAAAATCCACACCGACGAAAAATCCACAG -TTTCAGAGCCTCCGAGCTTCATGAAAACGCCGTGGTTCGCCCCACCGGCT -CCAGAAGGCCGGGAATTCAATATAGTAGATGATAGAACTATTAACGAAAA -GTACGCCGGGCTTAATCCGGGCGTCGAGTTCATTTCCAATGTGGATCGCC -TTATTTCGGATATCAATGAATCGCTGAAGTATGTGTCGGATAAGATCGAG -CGAGACGTTCGGAAGATCCCTGAAGACGTGGTGGAGCTTCCCACCACCAC -CACCACAACGGAGCAGCCGCCGCGGACAGTGTTGGGATGCTCGAGAGTTG -GAATTATTGCGAAGGGAACGTTCATCAAAGGGGATCGGTGTGCGGAGGTG -GTTCTGACGTGTACGCCGGTGCCGACTTCGGGGCTTGTTGAGCAGATTAG -GCGGTTGTTTGGAGAGTCGACGGTACGGGCCGGCCTTTTTTTTTTGCCGG -AAATTTGGGGATTTACCGGTTTGCCGGAATGTTTTTTTTTCCGGCAAATT -GCCGGTTTTCGCCGGAAATTTGAAAAACGGCAAACTGGCAATTTGCCGGA -AATTTTCAGTTTCGGCAAACTGCCGCGATTTGCCGGATAACAATCGTTTA -TTCCGGCAAATTCGGTAAGTTGCCGGTTTGCCGATTTGCCGGTTTGTTGA -ATTTAGCGGAAATACGGCAAACGGCAAGTTGCCGGTTTCCCGACTTACCG -GAAATTTGAAAAACGGCAATTCGCCGGTTTGCCGGAAATGTGAAAAACGG -CAAATTTCAGAATTCGGCAAGTTGCCGGTTTTTGCCGGAAATTTTCATCT -TAGGAAAATTGCCGGTTTTTGCCTGAAATTTTCATTTCAGGAAAATTGCC -GGTTTGCCGGTTTGTCGAATTTTCCGGAAATGTGGAAAACGGCAAGTTGC -CGGTTTGCTGATTTGCCGGAATTTTTAATTTTCGGCAATTTACCGATTAG -CCGGAAATTTTTTAACGGGATTTTTGATAAGACGGATTTTTTTCCGGCAA -ATTCGGCAAGTTGCCGGTTTGCCGGAATTTTTCATTTTTGACAAATTGCC -GATTCGCCGAATAATAATTATGCCAGAAATTTGAAAAACGACAAGTCGCC -GGTTTGCCGATTTGCCGGAAATTTCAAAAAACCGGCAATTTGCAGAATTT -TGCCGGAAATTTTCATATTCGGCAAAGCTACCGATTTGTCGGATTTTTTA -AACCGGTTTTTTCATAAGATAGATTTTTTTTCCGGCAAATTTCCGGCAAG -TTTCCGGTTTGCCGGAAATTTCAAAACCGGCAATTTTCCGAATTCTGCCG -ATTTCTTGTTTGACAATCTCAATAATTACACAGACATCTCTAACAATTGA -GCCGGATCCCGAGTCCCCATCAAGCCTTATCGTCACAGCTAACTACTTTC -CCAATATGAAATGTCGTATTCTAATCACTTCAGCTGTAGTTAGAAAAGAC -GATGATAGTATTGTAACTGGATGTGCTGCTGATAAGGATTTGTGCATTTA -TGCGCTCGCTTCTATTCGGAATACAAAGTGGTATGATGTGAGTTTTTTTT -AAATTTTACACATATTTTAAATTACTTTATCATTGGAAAATCTAATAAAT -TAGAGCCCAGTTTACAAAAAAATCTATATTTTTCCAAAAAAAAAATTGAA -AAAAATCGATAATTTCTCAAAAAATGTTTACAAAATCGAACTTTTTCCAA -AAAACTTTGAAAAAATCGATAATTTTAAATAACTGCTGACAATTAAAAAA -AATCGAAAATTTCTCAAAAATTGAAAAAATTAATATTTTTCCAGAAAAAA -TTGAAAAAAATCGATAATTTCAAATAATAGCTGAAGATTTTTTAAAAAAA -TCGAAAATTCGAACCTTTCTCAAAAAATTTGAAAAAAATCGATTTTTTTT -CCAAACTTTTTTTCATCAAAAATTTCTCAAAAATTTGGAAAAAATTAGAA -AAAATCAATATTTTTCCGAAAAAATTTGAAAAAAAAATCGATAATTTCAA -ATAATAGTTGCAATTTTTAATTTAAAAGCGAATTTTTCAAAGATTTTTCA -AATTTTTCACGTTTTTTTCTCTGGTTTTTTTAAATTAAAAAGCGTAATTT -TTACCGAATTTATCATTAAATTACATGAATTTTTCTGAAAGAGCGAGAAA -ATTAAAATAATTCGGAAAAAAAACAATTTTTTTCCAAATTTTCCAAAAAA -TCCCACAGAAACCACCAAACTTTACTTTTTTTTTTTAACAAAAAAAAGTT -TTAAAAAATATCAATTTCCGGCTTTTTTTCTGCCAAAAACTTTGGAAAAT -GTGGGTAATTTTGGCTTTAAAAGTTTAAAAATTGAAAAAATCAGGAAAAC -TTTTTGAATTTTCAGAGTCACTGCCAATACTTGAACTCGTGCCAATCAGT -TATTCGACTGCTCCGAGATTTGCGAAATAAATATCCTGAAGTTGCGTGTC -TTGATGATTATGTAAGTTTGAGAGTTTGGAAAAATATTCGAAATTTTTTG -TGAAAAATTTGGTAAAAGTTCAAAATAATGTATAATTCTTTAATTTTTTT -GCGAAAAAATTAATTTTTTGAAAAAAATTCTCTATATTTTTTGCTAAAAA -GTTTAAAAATCTAAATAGTATGAAAAAATATTTTAGCAGAATCAACAAAA -ATTGTATAAATTCATAATTTTTTGAAAAAAATGAAATAAATTTTTTTTTG -CGAAAAAAATATGCGAAATAGGTTTTTTTAATGCAGGAAATAGTTTTATA -GCTGAAAAAATGAGAAAAAACGGAGAAAATTGAAAAATTACGTACATTTT -GCAGATTTTTTGCTCACAATTTTGTAAAAATTTCGGCAAAAATATCACCT -TATTCAAAAAAAAATTGCTAAAAAAAATTTTTATAATACAAAAAAAATAT -GAAATCTATCTATTTTTTTCAAAAAATCTACCTAAAAATCTATTAATAAT -TTTCAATTTTTTTGTGAAAAATTTTGAAAAAATTCAAAATAATGTATAAT -TCTATAATATTTGGCGAAAAAAATTAATTTTTGAACTATAATTTTTTTTT -TGAAAACTAGTTTCAAAAATCGATATTTCACCTAAAAAAAACCCTAAAAA -TAGGCGGCAAACTATTTTTCCGGCAAATCGGTGGTAATTGCCGAAATTTT -TGGCAAATTGTGGCTTTGCAATTTTTTTTTTGTTGGAAATTTCAGATTTT -CAAATTTAATCGGCAAGAAAACTGAAAAATCCCGTTTAAAAAATTCCGGC -AAATCGGCAAACCGGCAAATTGCCGAATATAATATTAGGTCTCCTAATAA -GTTCCGGGTCAAAAATCATAACCTTGTTCGCTGTGTATCGATTTTTATGA -AACTTTGGGAGTTTATGTTATCAACCATGATCTTTCAATTGACAATAGTC -ACAAAATTTTTTGACCACCCCAAGTGCCCGTACTCGGAGCCAATTTTTTC -AGGCATTTTTCTGATCTCGCTTCTTTTTATCTTTGAATTGAGGTTTGTGT -GCGGATTTTGCTTTGTTTAGAATACATCATTAGAAAACGAGAAAAGTTTG -GAAAAAAATCTGTCCAAAAAATTTTTTTTGGTTGATCGTCAAAAAAGCTT -CAAAAAGATTTTTGTCGAAAATTCTAGATTTTTCATACAAAAATGATGTA -ACCAAGTGTAAATTATTTTTATACATACAAAACATATCAATTTAGTTCGA -TACACTAAAATGATAATAAAAAATATAATTTTTTCGGATAATTTTTGAGT -TTTTTGAATATTTCTTAAGTTTCAAATTTCAAACTAAAAGGATTTGTGTG -TGTAAAAATAATTTACACTTGGTTACATCATTTTTGTATCAAAAATCTAG -AATTTTCGACAAAAATCTTTTTGAAGCTTTTTTGACGATCAACCAAAAAA -AATTTTTTGGACGGATTTTTTTCCAAACTTTTCTCGTTTTCTAATGATGT -ATTCTAAACAAAGCAAAATCCGCACACAAACCTCAATTCAAAGATAAAAA -GAAGCGAGATCAGAAAAATGCCTGAAAAAATTGGCTCCGAGTACGGGCAC -TTGGGGTGGTCAAAACATTTTGTGACTATTGTCAAATGAAAGATCATGGT -TGATAACATAGATTCCCAAAGTTTCATAAAAATCGATTTGCAGCGAACAA -AGTTATGATTTTTGACCCGGAACTTATTTGGAGACCTTATACAATTTTTC -AACATTTTCCAGAAAATGGAGCTAATCGTCTCGAACATTATCGATTCATC -TCCAATGTCACTTGGACTATCCGATGCGTTTAAGCGAATTGTCGAAGCAC -TTGCATCTGGATATTTGTATTCTGGTAGGGGGGTTAACATTTAATTTTTT -TAAAATATTGAAAAATGAGCATATAAAAAGTTTTAAAATAATTCAAATTT -TTACAAAAAAAAAATTTTTTTTTTCAATTATTTTGCGTTTTTGTATGAAA -ATTGTGTTTTGAGAACGGAAACTCTTTTTTTTTAATTAAAATTTTGAAAA -AAAATCCTGGAAAAATGCTGAATTTTTCGGGATTTTTCGGAGCACATTTC -CAAGCTCTAAAAATTGCTGAAAATTGAATTTTTCAGAATTTTTTTGAATT -TTGCACAAAAATGACTATTTTAGGAACAAAAAAAACATTTTTCAATCACC -GAAAAAATGTATTAATTTTATATTTTAATGTTAAAAATACGGTATTTAAA -TTTTTTTTAAACGTTTTTTTTACACAAAAAGTTGAAATTAGGTTGAACCC -GGATAAAATTTAGAAAAATTAAAATTTCAATTTTTTTTGCGTTAAAATAT -GTTTTTTAAGGTTGAAAAAAATATGTTTATTCAAATAAACACATTTCTTG -AAAAGTTCTTTTGATTTTTAATATTAAAAAATTTATTTTTCAAAAAAAAA -TTTATTTATTTAATTTTAAAATTTTAAAAACTTTAAATGTGGTGTAGTCG -ATTTTTTAAATTGTTCTATTAGACTCAAAATTGACTGAAAACACCGAATT -TCATAATGAAACTTCTTGAAAACTTCTCAAAAAAAAGATATGACTGCTCA -AAAATGGCCTAAAGTTAGTTAAAATTTGAAATTTGATCTACTTGTCAAGC -GGCTGGAAACTATTCTTTTTTTTGAAATCACCGTCAAATTTTGAGTATAA -AATGTAATTATCTTGCGTTATCAACTTGATTTAGGTATTTTAAAGTCGAT -GGACGGAGAGATTTTTAAAGGTGGAGTACCGAAATTTAAGACTTTGCTTT -TTTAGACCCAAAATGGCCCAAAACTACCGAATTTCGTAATGAGACGTTCT -GAAAATTTTCCAAAAAAAAGTTATGGCCGATCAAAGTGTTTGGAAAAAAC -GGCCTATTTTTAGCTAAAATCTCAAACTTTGGCAATTTTGCAGTGTCGCA -CCGATAAGTTGCCAAAATTTCGGTCTAAAAAAGCAAAGTCTTAAATTTCG -GTATTCCACCTTTAAAAGTCTCGCCGTCCATCGACTTTAAAATACCTAAA -TCAAGTTGATAACGCAAGATAATTACATTTTATACTCAAAATTTGACGGT -GATTTCAAAAAAGAAAGCTAGTTTCCAGCCGCTTGACAAGTCGGTCAAAT -TTCAAATTTCCGCTAATATGAGGCCATTTTTTGAGCAATCATAACTTGTT -TTTTTGAGAACTTTTTTTTTTCAAGAAGTTTCATTATGAAATTCGGTGTT -TTCAGACAATTTTGAGTCTAATAAAGCAATCAAAAAAATATTCGACTACA -CCACTTTTTGGCCTATTTTTTTGGCCTAAAATTGAAATTTTTCCAGCAAT -CCTAAGCGATCCGTGTGAGACGTCTCGTCCGAACGTTCTCGATGCTTTAA -CCGACGAGCAGAAGCATTCGTTGACCGCCCTGGCACAGAATTTTGTTCGG -CAAATTGCATTCAATCAGATACATGAGGTATGCGGGGATTTTTCCTGTGC -AGAAAAAATGTTTAGTAAATTAGGGAAAAAAACCTTGAGTTTTTAAAAAA -ATCTGTGGAAAATTTGAAAATTTTCGCAAAAAAAAAATTATAATAAAATT -AATTTCAAATTTGCAAAAATTTCAATTTTTCAAATAAATTTTGAATTTGC -ATTCCAAAGTCACTAAAATGGAAAAAATTGCTAAAAATTGAATTAAAAAT -ATTTCTTTCCTGAAAATTTTTTATTTTCCGAGAATTCTGAAATTTCTTTT -AAAAAAAATTAAATTCGCGAAAATTTGAAATTTTTTGGAATATTGCAAAA -AATTGCTAAAAATTGAATTTTCCTATATTTCGATTTTTTAGATTTTTTAA -AAAAGTTTTTTTTCAGCCATTTCTGGCCGAAAATTGAGAAAAAATAGTCA -GAAAATTCAAAAAATTGCTTTTTTTTTTCAATTTTCCGAAATTTTGAATA -TTGATCGTCCGAAAATTTAAAAAATAATCGCTAAAAAGTTGAAAAAAAAA -TTATTGAAAACAATTTTTTTAAAATAATTTCTAGCAGATTCCATGAAAAA -AGGCTGAAATTTACGAAACAATTTTTTTTTCAAATTCAATTCAGAAAAAA -TTGAATTTTCTCTGATTTTGGGCCGATATTTATAAGATTTTTCAGAATTT -TCCAAAAATTCTTGAGAAAAATTGAAATTTTTCTGCCGTATTCCTATGAA -AACAGCGGAAAATTGAATTTTCCAAGTTATTTTTATAGGGAAAATTATAG -TGACTCTATAGAATTCATGAAAAATTCTGACAAAAAACCAAACATTTTGG -CCCAAAATCAGAGAAATTTCACAAAAAAAAATGCTGAAAAATTTAATTTT -CAGCAATTTTTTTTTCAAATTTTTTTAAAAAATAAATTTTCGTAAATTTC -ATAATTTTCAGTTTTTTTCCATTTTTTTAAAGAAAAATTATTTTTCCAAA -AATGTGCAGAAATTTCAGAATTTTCGGAAATTAAAAAAATTTTTAGCAAA -AAAAAAAATTTTTTAATCCAATTTTTATGATTTTTTCACTTTTTCGGTGG -TATTAGGACTGCAAATTCAAAGTTTCTTGGAAAAACATAAATTTTCAGAA -AATTTAAAATTAATCTGATTATAATTCGGAGCATAAAATGTGCTTTTATC -AACAACATTTTTTTTTTCGAAAAGTCAAATTTTTCCACATTTTTAAAAAT -TCCTTTTTTTTGTATATATTCGGATTTAAATTTTTTTTTTAACGGGTTTA -AGCTATTTTCTGAGCAAAAAAATTGAATTTTTCTAAAATCACCATTTTTC -TTCCAGATTCTCGGAATCGATCGTCTTCAAGACACTATTGATCTACCAGA -GGATGCTCCGATGCTCAAAAGACCACTGGAGAGCAATGAAAATGCTGAAA -ACGCAGAAAATCTCGACGATTCGCCAGTTTCCAAAAAGGAGAAGCTCGAC -GAGGAGCCCGCCGATATTTGAGCATTTTTATTTTAAATTTGGTTTAAATT -ATTTAATTTTCCTCTAATTTTCCTCATCTCTGTGTTTTTTTCTAATGTTT -TTGGGTCCCGTAGCGAAAAAACGAATGGCTCTCTTCGCGGTGAGACCTTG -AAATTTTTATTTTTCTACTATTACCTCCCCCTGCAAACGCGCTCTATTGA -CGACAATTCGCAATGGAGCGCGATTGCATATTTTGTTACTACATTTTCCA -CACTCATGTTCGATCTTCCACTAGGGGAGGGTCTCGCAGAAGGATTTTTT -GAAAAATTTAGATTTTTTTTTGAAAAATATTCGAAACAATTTTACGTTTT -TCGAAAAAAGTCCTAATTTAGCCTAAAAAATCAAAAATTGATAGGATTTT -TGAAAAAAATTCAAAAAATCAAAAAAAATTGCAAAAATTTTTATTTTTTT -TTTTGAAGAAAATTTTTTGTAAAAATTTGATTTTTTTGAAAAAGTTTGAA -TTTTGAATTTTTTGAAAAATTCTAAAAATTTTGAATTTTTTGAAAAAAAC -TCAAAATTTTTGGAAAAATTTTGAATTTTTTTGAATAAATTCAGAACTTT -TTGAAAAAATTCGAATTTTTCTGAAAAAAACTCAAAATTTTTGGAAATAA -TTGAATTTTTTCGAAAAAATTCGAGAAAATTCCTAATTTAGTCGGAAAAA -AATATTAAAAATTGATACGATTTTTGAAAAATTTTCCCAAAAATTCTATA -GAACTGTCCTGAATTTCTAAAAAAAATTCAAAAAAAAAACAAAGTTTTTT -AGAAATTTGCAAATTTCTTTAAAATTTTGGAAAAAAATCTATTTTTTGTT -GAAAAGTCTGCAATTTCTAAAATTTTCCTATTTTTTCTGCTAAAACCTGC -AAAAAAGGACCCTCCCCCTAACTATCTTGTTCCTCCAAAAACCGACAATT -CTTCTGTTTTTGTGTTATAATCGTCCTTTTTCTTGTTCAACAAAACAAAA -ATTAAAATAAATTAGAAGAAACGGTAAATTTAGATACGTTTTTGCCACGT -GGCCGAGGTTTTTCACGGCCACGTGGCAAAGGCCGGCAAGAAATGCGCTG -TGGTGGGAGAGGAAATTGATAGGGAAGAAGGAAGAAGAAAAAAAAAAGAA -AAAATCAATATTTTAAAGCCAAAAAAAATTTTTCTGAAAAGACTAGCAAA -ACAGGAATGGTTATGGGTAAAGCCGAGGTTTTGAAGGAGAATTTTTGGGA -AAAAAATTGCAAAAAAAAACGAATCGGTAGGGACGGACCGGCAAGATTGA -TTGAAAAATTGACGAAATTATCGATTTTTTGGCGGCGCACGGGGTTCTGG -CCTTCCCTCATAAATGGAAGAGTTTTTGCCGAACTAGGCCACCAGGTCAT -AACTGGGGTAGATTTACGGCGCGTTGCGTGTCGCGTCGCGGCTCAATTTT -AGTTGTAAAACTAAATGTATTTGTCCGTGTGAAGTACACGACTTTCCCGG -CGCGCGATTGTCAATGGAGCGCGAAAAATTAAGGGCCAGAAGTCCTCAGA -ACCCCGTGCAAAAATCGATAATCCCGTTTAGAATCGGTGAGGGCGTGGAA -AGAAAGAGATGATGAAACGGGAATGAGCAAAATTGCAAAAAAAAACAACA -AGAAATTCCAGAAAATTCCATAGAAAACGGGGTCTAAAGCACCAGATTAG -TGTTGTGCGTGGGCGTCCACTGTGACGTCATCACCTTCCACTTTTCGTAG -TTCGACTCGAGCTGATCGGAGAGCTCGCCGAGCTTGGCGAACTCGGTGAA -TGTGGCGAATGCTTCGCGGGCGAACATGTCTGTAAAATCAGAAATCAGGA -GAAAATTCAATTTTGCGCGTCAACTTTGATGTTTTTTTGTGTTGGTGAAC -TTCAGAAAATTGAATTCGCCAAATTTTACGAGCAAAATTGGGTTCTTTTG -GTATTTTTCGTGGAAATTTAACCAAAAATCGAGTTTTCTACGGAAATTTA -ACGTATTTTATCGATTTTTCATCAGAAATCAGTAGAAAATTCCGTTTTGC -GCGTCAATTTTGATGTATTCGGGTCGGTGAACTGCACCAAACTGGATTCG -CCAAATTTTACGAGCAAAATGGGGGTTTTTGCAAATTTTTCTTGGAAACT -CAGTCAAATATTGAATTTTTCGTGGAAATTTAACCAAAAATCGGGCTTGC -TACGGGAATTTAACAAATTTTATCGAATTTTATTTTGCGCGTCAAATTTG -ATGTTTTTTGTGTCGGTGAACTTCAGAAAACTGTATTCGCCAAATCTTAC -GAGCAAAATTGGATTTTTTGGGTATTTTTCGTCCGAAATTGATTTGTCCA -GTGAAATTAAACGCGATTTATCGATTTTTTATCGGAAATCAGTAGAAAAT -TCAATTTTGCGCGTCAAATTTGATGTTTTTTGTGTTGGTGAACCTCAAAA -AACCGTATTCGCCAAATCTTACGAGCAAAATTGTATTTTTTGCGTCTTTT -TCGTGGAAATTTTTACAAAAATCGTTCTTTTAAAAAAAAAATTCCACACA -AAAGTACAATTTTCACACAAAAACTGCAATTTGCGCGTAAAATATGGCGC -AATCGGTTGAGTGCGGCACGCCGACTCAAAAACACCATATTTTACGCGCA -AATATTAATTGAAGCGCCTTCACGTGGTGTCAGGTTGTGTCATCACGGTT -TGATCTACAAAAAAATGGGGGAATTTTTTGCCCAATAATATGTGACGTCA -GCATGTTCTTAGCCATGCAGAATCCGTCTAAAATCCCGCATTTTTTGTAG -ATCAACGTAGATCAAGCCGAAATGAGACACTCTGGGCTTCAAAACACTCA -CCAATAAAACCGCATTGTGTGATCGGAACGTTACACGTGTTCCGATCGAA -TACCTCCATCGTCACAGGCAGCCCTTTCTCTTTTTCTTCTCGAGTCTGGA -AAATATTGATTTTTATTTTATTCTTGGAATTTTAAATTTCAAACAGTAAA -AAACCAAAAATTATCAGTTTTAACTTATCCAAGTTAAAGAACTACAGTGA -AGAGAACTACAGAAATATTAAAAAATATATCGATGCACCAAGAGCCCAAG -AAATCTCTGAGAGCCCATATCTCGGCTCATTTCGAAGTTACAAATAAACT -GCAAACTATAAAAATATAGAAAATTAAATTTCAATTATTTTGTTAGTTAA -CAAAATTTGGCTAGAATTGAAATGAACTGGGATATGGGCTGGCAAAGTTC -ACTGAATTTTTTCTTTTTTTTTCTTTTGTTTATTTTGATCTCTACACCAG -GGGTGAGCAGCAAACGATTTTTTCCGGCAAATCGGCAAATCGTTAGCTTG -CCGGAATAGAAAACTTCCGGCAAATCGGCAAACCGGCAAATTACCGATGT -GCCGAGTTTGCCGGCAACCGTATGTTCCCTATGAGTATGGCCACCCATCA -ATCGACTTTGTCGGCTTATATTTCAGCGGTTTCAGAAGTTTTTTGATATT -TTCAAAAACCAGAGGATAACGATAGATTTGAAAAATATTTTGTCGTTTGA -ATTTTTAAAATATGATAAAAGACAACCGAGATATAAACGGTCAAAGTCAA -GGGGGGCCATACAAAAATTTTTTTTTGGAAATTTAGAAAAAAATGTGTTT -CCGTCTTATTAAAAAAATCTCTCTAAGCATTTCCGGCAAACCGGCAATTG -CCGCCCTCCCCCGACCTACGCACCTGTTCAAAGTACTCCTCAACAATCCG -ATGCGCCCATCGCTGACACAATCCCCACTCTCTCGCCGGATTGGAGATGT -CGGCGCACTTGACAAGCATATCACATATCGTAAGTGAATTCGTGTCACGT -TGCTCCTCCGGCACATCTGTCACATGCATCTTGTTGAACTTGGCGAGGTA -CTCAAAGTGTCGACTGATGTCCGTAGCCAACACCATCTCCACCATCGCAT -GTCGCATTTGGATGAACTCCTCGCGCGACAGACTCGAGAAGATGTTCACG -TTGGCGTTGTGCTGAAGGGTTAGCTGAAAGGCTAGTGCGATGTGATGATT -CTCCAGGATCGAGTTATCATTGTAAAGTATTGCAAGCGACTGTCGCGTAT -TGATCAGGTACGCGTTTCCTCTTCCAGGATGGTCTAGATCATGCACCGCC -GCTGCGAGAAGAGCCGCCACCGCATGACTTTCATTCACGTGCACGGCGAC -CGACGGGGAGTCCAGGAAGAATGAGGTGGCCTGTAGGACGTCGGCTGCGT -GAGTTGCGTTGTGATACGTGTTTCCCGCATGGTAATGAGCCTCGATGGAT -AGAATCCAACGGTGGAGGAGATCGTCGGAGCAGCCGAGCACATCGCAAAC -CTTCCACCTCTCGAAGACTTTCATTCCGACTTGGGAAAGAGCGTGGTGAT -CCGACACCTTTTCCAGATGAAGGATGTCGAATTTCCAGCAATTGTCGTTT -TCCAGCGCGTTCTTCACGTCAGCAGATACCCGCCGACGTTCTCCATGGGA -TCCTCGCTTCTCTCGATGCGCGTCGACGACGCTTCGCTTTCGCTGCCTAG -CTGGATGATGGAGGCGAATGAGACCATCGTAATATTGAGTTGCTATCCGA -TCGGCGTCGCGGAATCGATTGATCGACGGCGCGTACAGCTCGTGCGACGA -CAGCACCTTCATCGCGTCCTTTATCGTTTGTGCCGGTTCTCCGTCGACCC -GTGCCGACACGTCTCGGAGCATTGTGAGCACCTCGGAGATGGGCGCCTCG -ATGCCGCCCGTCTGCGATTTCAGGCTTTTCAGGGAGACGTCGCGGAAGAT -TGCGGCGGTGTCACCGGTGGTGTTTGAGCGTTTCATATACACGAATTGAC -TACTGCAAAATTCATAGAATTTTTTGATTAATTGGTGGCCGAGTTTTTTA -AAATGGTGGCCGAGATCTTTAAGTTGATGGCAGAGTTTTATAGGTTGATG -GCCTAGTTTTTTAAAATGGTGACCGAGTTTCTATGCAATTTTGTGGCCGT -GTTTTTGTATAAGTTGGTGGCCGAATTTTATAAATTGACGGCCGAGTTTT -ATAGGTTGGTGGTCGAGTTTTATGAATTGGTGGACGAGTTTCTATACAAT -TTTGTGGCCGAGTTTTTGTATAAGATGGTGGCCGAGTTTTTTCAAAATGA -TGGCCGCGATCTTTAAGTTGATGGTCGAGTTTTATAAGTTGGTGGCCGAG -TTTTATAGGTTGATGGCCGAGTTTTTATGTAATTTGGTGGCCGAGTTTTA -CAAGTTGATGGTCGAGTTTTATGAATTGGTGGCCGAGTTGCTATACAATT -TTGTGGCCGTGTTTTTATATAATTTGGTGGACGAGTTTTATAAATTGGTG -GCCGAGTTCTAACGGATTAAGCAAAGGAAACTAGAACAGAATTTTATTGA -AGAGAAAACTAGGCCATCAGCTTTTCAAGAAAAACTCGGCCACCAAATTT -TCCAGCAAAAAACTAGGTCGCCAGTTTTTCCAGCAAAAAAACTCGGCCAC -CAAATTTTCCAGCAAAAAAAACTGGGCCACCAAATTTTCCAGCAAAAAAA -AAATCGGCCACCAATTTTTCCACGGAAAACTAGGTCATTTCATTGTTCGT -TTGAGAGAAAGCTAGGTCACGTACATTTTCAATAAGAAAACTCGGCCACC -AATTTCTTGAGCATAAAAAATTCGGTCATCAATTTTTATAGAGAAAGTTC -GGCCATCAAGGTTGAAAAATAAGCTAGGCCACCGATTTTTTTTGTTGAAA -AAAACTCGAACACCTAACCTATTTTCCTTTTTTTTTCAAGCCTAGAAAGC -TCGGTTATCGAGTTTTTAGGCCACCGATGCATTTTTTTAATCGAAAATCG -AAAAAAAAAATCGGTGGCCGACTTTTTCATTTACGGCCACCAATTAAAAA -AAACTCACTTGTTAGCAAACGGGACCCGTATAAATTTCCAGTCGCAACTC -CGCCGCCGCTCCTCTTCGCCACGTGCCCTCGGCAGGGACTTTCGTCGCAT -TTCCGATTCGGGTTGTCCGATCACCTCGGATCGTATGCATCCCGTCACGT -TCTCGTAGGCGCGGTTAACGTACTGCACTACTCGTTGCTCATCACATATT -TCCACTGCTTGATCCGTCTGAAAATACGCAAAATTTGAAGGTTTGTAGGC -ACACGTGGCGCCAGTCTATCCCATTACGGTTTGATCTACAAAAAATGCGG -GAATTTTTCACCCAAAAATATATGACGTCAGCTAGTTCTTAACGATTCTC -AACTCCCGCATTTTTTGTAGATCTACGTAGATCAAGCCGAAATAAGAGAC -ACTCTGACACCGCGTGTAGGCAGGTAGGCGTTCAGCCAGGCGATTAGGCA -GGCAATTAGGCAGGCGATTAGGCAGACTAGTAGGAGGTAGGCAAGTAGGC -ATGGAGGCCAAAAGCTCACCTCATCCAAGACGGCGAAAAGGGCGGGCAGC -GCGCGGATCCGATTCGCGAGCCGCCCGACGTAGTCGAAGAGCACCACGTC -ACGCGTATTCCACGTCACATGCTGAAAAGAAACGAATGAATGGGAATCAG -TGTGAATGAAATATTAATTAGAATTGAAAATGAGAAAGTGAGAAAACGGA -TGACTTACATGAATGATGTTGGACTGCGCAAGAGCTCTCCGTCGCTTTTC -GCTGATGTGTCTGGAATATGTGATTGTTAGATTGACAATTCTGGCAGAGT -GGTCTAGAAAATTGGGGAAAACTCGGCCACCGATATGTTTTCTTTGGTTG -TGGTTGGAAAATTTTGGCGACCGAGTTTTTCAACGTATCCAAATTTATGT -GGCCGTGGCCGACTAAGGCCACATAGAAAAGAAAAATACCGAAACAATTG -GTGGCCGAGTTTTATCAACGTAGCCTAAATTAGGTGTACTTGGCCGAACT -TTTCTTCTGACGGCCACGCAGCAAGGAAAAAATAATGAAAAAAAAGTTGG -TGGCCGAATTTTAAGCCTACACAAAAAGTTGGTGGCCAAATTTTAAGCCA -ACAAAAATTGGGGGCCGAGTTTTTGTTTTTTGAAAAAATTCGTGGCCGAG -AAAATGGGAAAACGCGGCCACCGATATTTTTTCTTTGGTTTCTGGCTGAA -TAATTTTGGTGGCCGAGTTTTTGTTTTGGATAGGTTGGTGGCCGATTTTT -ATCATTTTAACCTAATTTACGTGTTCTTGGCCGAACTTTTTTCTGACGGC -CACATAGCAAGGAAAAAATAACGAAAAAAAAGTTGGTGGCCGAATTTTAA -ATTCACAAGAAAAGTTGGTGGCCGAATTTTAAGCCTACAAAAAGTGGCGG -CGCTTTTTCTACAAAAAATTGCTGTCATTATTTTAATTGGAAAAACTTGT -GGCAGTGATTTTGTTTTGAAAAAAATCGTGGCCGAGTTTATCTGTAAAAT -TGGTGGCCGAGTTTTATTCACGTAACCTAATTTACGTGGCCGTGGCCGAC -TAAGGCCACATGGCAAAGAAAAATACCGAAACAATTGGTGGCCGAATTTT -TAGTCTAAAAAAATGGCGGCCGAGTTTTTGTTTAAAAAACCGTATTTAGT -ATATCTGGGACGAAAAATGGTGGCCGAGGTTTTTCAATGTATCCAAACTT -ATGTGGCCTTGGCCTATAGCCTAGCTTTCCTAAACCATTTGTTTAAAAAG -TTGGTGGCCTAGTTTTCCAGCATAATCCAACTCACTTCTCGGCGATCGAC -ACAATCAACACCTCCTCTGTGCTCACCGATGAGACGTCTCTGAAAAAACG -TTTCGTTAGTAGATCATGGCTGACGATCAACGCTGCTCCCTTACTTGGCG -ATTTGCGATGGATGAGGTACTCGAAGATCTATGAATACAGCTAAAGGGCA -TATTGATTCAACGTCGGATGTTGCCTGCAAGAAAGTGTACATATTCAAAA -ATTTCCAAAATTCAATTTCCTTTTTCCCGCCCGTGTCCGAATTTCCGGAA -CTGACCACGTTTCAGTCATGGTCTTCGTAATTCCCAATTTCCTTTCTCCC -TTATCTTTTTACGTCAATCATGATAGCGGTGATACGTGTTTCGAGGGTAT -ACATGCTCACACAACAATGCACTTAATCAGCTAATCTCTCCCACACCTCC -ACAGAGAGAGTGTATGAGCAAGAGAAAGAGCACCTGCTTCTTCCAGATTA -GTGAGCGAGCCTGTTGTCATCTGACTTCTGCTGACGGAGGGAGCTTGAAA -AGCGGAGCAGGAAGAGGAGAAGAAAAAGAGCATTCAGAGATAATTACGCG -CGAGTCGTAGTAGTATGTATACACTGACTTCTTCTTCTTCTTCTTCCTCT -TTTTCCCCGTCTTCTGCTCGTTGATGTCTGCCATTATATTGATCATTAAC -GAGGGCCTAAGAATCCTGGAAGAGTTGTGAGGTCACACTGATGGCCTAGG -AATCTCAAAGGCAGGCCATATCATATTGCAGGCCATATCAGGCCCCATAG -CCTGGCCATAGTAGGTCACCACAAGCTATGGACTGCCCTCAAGATTTTGG -CTCAATTTGGATAAGCTTCTTCGGAGCCCCTGGGCTTAACAGACTGACGT -CATAGGTGGTATATCTCGGCTAGGCGGAAACTCGGAAATGTGAATTTTTT -GACGCAAACCAAAGATCTTATAGATCCTTGAAATCTTCCACAGGACTTAG -CAGACCGGAGGCCTGGGAACTATGCAGTTAGAGGTAATCGCCAAGTCCAG -GGCTCCGAAGAGAGAGGGCCCAGGGCTCCGAAAAAAGCTTAAATTTTGGG -CCAAAATTTCCCAAATTGGGCCAAAATTTCAAAAGTATGTAGTAGGTTTC -AACCCTCATATTTCCCGGGATCATGATTTTGTGGACTATTATTTTCAGGC -TGTGGTGGCCTGCTATACCCAGACTATGTACTGGGCCAAGCTCTGGCCAG -GTTATGGCCTTTAATAGCCTTGAATTTTGGAGTCAAAGTTCTTGCAGAGC -CTAGGAGACGCTTACCACTTCGGATCAAAGGCCTGATCTAAAACTCAATG -GATCATGACCCTAGAACCTCAATTTTCATAAGCCTAATACGCAGCTACTG -GTCTAAGCTCTGACCAGGCTATATGGCCTGATATGGCCTGAACACTTCGG -TGGCCTAGTCTAGGTTTTTCCAAGCCCCAGCGGGCCTCAATTTTCATAAG -CCTAAAGACGCAGCTACTGGGCCAAGCTCTGGCCTTGAATTTTGGAGTCA -AAGTTATTGCAGAGCCATCATGCCTAGGAGGCCTAATCTAGATTTTTTCA -AGCATTGAGGCCCCCACGGGCCTCAATTTTCATAAGCCTAAAAACTCAGC -TGCAGCCTTACCTGTGTTGGAAATGATACTGTACAAATCCATCCGGATGC -CCGTAACGAGTCGAGGAGCACACTCTCGCCGGTGCCTTCCGTCACGATCA -CAGCCTGCAAAAAACGCATTATTTATAAGATCTTACAGGGGATTTTCAGG -ATTTTCAGGAGGATTTTGTCGTGTGCCAGACCTCAAAGCTCGTCGGGATA -AAATGCTGATATTGATTGACATGCATATATATAGATATATATGAAGTTGG -AAGAGCGGAAGCAGCAGCAGTGGCAGCAGAACTTGTGTGTGACGGGGATT -TGTGGGAACAAGGCGCCAAAGAAGACGAAGCAGAAGAAGAAGAAGAAGCC -GGGGGCAAGCAATGAATGCAATGTATGTAGGAGTATGTAGGAGTATGTGT -GTGTGTGTGTGTGTGTGCGAAAGTCTCTCTATGTGTGTGTGTGTGTGTCA -CAGGTTATATATTGCGTGTGCACAAAAAATGTATGAGGTCTCCTGATGTG -TGTGTGAGTCTGTGAGTCTGTGAGTGCAGTGTACAACACCTTTTGCGGAG -TCTTATCACATACTGATACGAAAGTGTTTGTATTTTTATATTTCTTTGCC -ACGTCACACTTTATTCAATTTTTCGCGTGTGCCTCTCGCCCCGTCATTGG -CACGCAGTAGAAAAAGAAGTAGAAGAAGATGCGTCTTCTTGTTGCCATAT -CCCATCCAACTTTGTTACTTACGGAATTCGCGCGCGCGCGCGGGGAGGAG -AAGCAGAAGACGACGACGACGAGCTCGAAAGAAGACGAGTCCGCCTGCGT -CTCTGCAGTGATCTCGTGTCCCTCGGCAGCGGCTGCGGCGCGCGCTTCAA -TGAAGACGAGAGCTCCCCCCCCCGGCGGCGCCGAATACGCGATTTGTCAT -CGAGATGAGCGCTTTGCTGACAGAATAGAATGGGCAAAAACAGGAATACG -GAATACAGTAGTCATGTTTTGTTGCAATGTTATGGGAAAGCTGGCTTGGC -GTGGTCGTCGAATTTTTCGCGCTTCATTGACAAAGAACAAGGGAAAGTCG -TGTTCTCCACACGGACAATCACACTAAGTTTTAGGACTAAAATCGAGCCG -AGCCAAAATGGCCTAGTTCGGCAGAAACTCTTCCATTTCAATTTGTGAGG -AAAGCCAGAGTTCTGTGAACCTCGGACCTGCGATCGCCGACCTGCGATCT -CCTAGACAAATGCTCACCCCAGCGCGGGACTCGGGAAAGTTAGCGCCAGG -AGAATAATTTTTGAATTTGAAGAAAAAAAAAGAGGAACTTACAGTTTTCA -GCATCTTCACTTGCATCGGCCCAAACGTGTCATGTGCCGTGGAGCTGCTC -GTTGCGGCGACAGTTAGCAGAGGTGTTGGTGGAGCACCACGCGATCCACC -TCCACCACCACCATTCTCAGAATACGACCCACCGCAGCACCATCTCATTG -CAAACACTGGCCTGGATGCTGCTGCTGCTGTTGCTGCTGGTGCTCTCTGT -GCGCCTCTTCTAGCTGCGGGCGTGTGCTGCTGCCTCCTGCCAGCTTGACT -GTGTGCGCTAGCCCCGAGCACACTCTTTTCACCCTCTTCTCCCCCCACCC -CGCTTCTATCGCCCATTCTCTCAATTCTTCTCTGCCTCCTCCTCCTCCTC -CTCCTCCTCCCAATTCTCATGTCATCGGGGGGCCCGTCGTGTCGTCGAGC -GCCCTCTCGCGTCTGCAATGTCTCGGCGCCGCCGCCGTCGTCGTCGTCGT -CGTCGTCGTCTTCGGGGGGTTGTCATCTGCTGTGTTCACACTGATGCCGC -CGCCTTCACCGCCCATCTCATCGTCTCCTCCTCTGTGTGGACCCGCCGAC -CGGCCGGCGCGCCTTCTCCCATCAGTTCTATCTCTCTCTCTCACTCACTT -ACTCTCAAACCGCGTCAATTGATCTCTCTGGCACGCTCTTCGCTCGGCGA -GCTGTATTCGGTGTCGGTTTTCAGTCTGCGTCTCCGCGCCCCGGTGCAAT -GCATATGTTCCATCACGTTCTGCTCCTCTTGTTGCTCCGTGTGCTGCCGT -GTTTTACGCAATTTCAGGTAAAATTGATACAATTGATACAATTGATAATT -ATCGAAGTGTCCTCTATGTGTACTCACGCTGTTAATTTAATGGCCTAACC -ACAGAATTATGCTTCTTTAATTTTTGAACTCGTAGCTCCGTATGTTAAAT -CCACTATGAGATTCCTTGCCATGTTTTTGCAATATTTTTTTGTTTGTTAT -GAGAAAGTGTATGTGTTCTTTGTTTGGTCACATGGGAACCGCTGGCCTGA -GAATGGAAGGTTTTCTGGGACAGAGCTTTTGAATCCGATAGCCTACAATA -GGGCCCCAGTGCAATAACGGTAGGCAGGCCCGAGGCCTAATTTAGTCCAA -ATAGTCCTTATTCAGTCTAGATGATTCAAAGCTAAAATCAAAGGGCTGTT -CCATTACGTTGTGATCTACAAAAAATGCGGGAATTTTTCGCCCTAAAAAT -GTGACGTCATCACGTTCCATGCGTTATTATTTATGAAGTCTGCGTCTCAT -TCTCCCGCATTTTTTGAAGATCTACGTAGATCAACCAAGCGCCTTACCCC -TAGCCTCTAAGCTCCTAGGGCCCTCTAGGACCATTTAGGCTTTTTGGACT -GTCTAAGACCAATTGGGCTTTTAGGCTCCTAGGTCCCTCAAGGACCGTTA -GGCCTCTTGGACTATCTGAAACCATCTGGGCGTCTAGGCTCCTAGGGCCC -TATAGGACTATTTAGGCCTCTTGGACTATCTAAGACCATCTAGACTTCTA -GGCCTCTAGGGCTCTCTAGGACCATTTTGACTTGTTCTATAGGACCTTGT -TCGACTAGCTAAGACCATCTGGGCTTCTAGGCTTCTAGGGCTCTCTAGGA -CCATTTAGGCCTCTTGGACTATCTAAGACTAATTGGGCTTCGAAGCTCCT -AGAGCCCTCTAGGACCATTTAGGCCTCTTGGACGATCTAAGATCATCTGG -GCTTCTAGGCTTCTAGGCCCCTCTAGGACCTTCTAAGACCCCAGTCTTTA -TTCCCTAGCCTCTAGGCTCATAGGCCTCGATTCCGCAATTCTAATGGCTT -TGGGAGCCCAGTTCTAAGGCCCATGGACTTCCACAGTAGCTTTTCAGTCA -ACCATTTCCAAGTTAACCAAGGACCATTTAAGCCTTTTGGGCTATCTAAG -ACCATCTGGGCGTTTACTTTCTAGGCCTTTTCCTGCCTATTGGGCCCTCT -TGGACCTTCTAAGACCCTGGCCTTTAATCCCTAGCCTCTAATCCTCTAGG -CCTCGATTCCGCAAATACAATCCCAGTTCTAGACTCTCAGGGCCCTTGGG -CTTGTAGGCTTTCAGTTAACCATTTCAAACAGGTGCCGTTCCGCTCCATC -TCTTCTTGCTCTCTCGTGCTCCTCTCCTACACCATCTTCTCTCATTGTTC -TGACGGATGGATGAGCTGTCATCATCATCATCAAAGCTCCAAAGACAATT -GCCATCAATTTGTGCCGCCGCTGTGCTAAGTGGTCTTATTCCGCCGGGAC -AAAAAAAAAGGGAAAATTCTCTGGGAATTTGGACTAACACCACCTACTAT -TACTGTAAAAAAACATTTGGAGAAGGGGGAAACGAACTAAAAAAAAACAA -ATTAAAATCGGCGTATCAAATTGAAATCATATGATTCGTTGCCGTCGTCT -TCTCTGCAATGATCGTTTGTTCCGTCGTGTCAAACTAACCTACTCAATGT -CATAAAGAACAAAGAATGAATTCAATAAAACAAGACGAAAAAATAAATAC -ATTCAGGTACTGTACAGAGAGAATCAGGATCACATCTGGAATAGCTCGCA -GCCTGTTCGATTCTGGGAGCTTGTTGAGTATAGGCCGACCACTACGCCGC -CGCCGACCACTACGACAGAGTATATACCGCCACCGACGACTACGTATGTT -CCCTGAACTTTAAAGTTGCATTTTTTTTTAAAGGATTAGGGGTTTTAATT -GAAATTTCAGAATTTTTGGTAAATTTTTTAAAATTAGTTTTATTTTTTTA -CGGGCTTTTGCGATTATTACTGGTAGAATGAAAGTATGTACATTTCTTGT -AGATCAGAAAATTTAATTTTTGATATCCGATAAATGTTAAAAACTCGATC -GAAAAAAAAATAAATTTTTCCAAAAACTAAAAAGTTGCAAAATTTATTTT -TTTTACAATTCAAAGTTTGTAATTTTTGACAAAATACATTCAGAAATTTT -TTTGGAATAGGGGTTTTAATTAGGCTTGGGCCTAGGTTTGGGCTTGGGCT -TGGGCTCAGGCTTAGGCTTATGGTTAGGCTTAGGCTTAGGATTGGGCTTA -GGCTTAGGCTTGTGCTGAAGCTTGGGCTTGGGCTTAGGCTTCAGCTTAGG -CTCAGGCTTAGGCTTGTGCTGAGGCTTGGGCTTAGGCTTAGGCTCTCAGG -CTTAGGCTTGGGCTTGGGCTTGGGTATGGACTTAAAATTTTTTTTCAAAA -ATTTTATTTTTCGAAAACTTATGGTTTTACCGGTATAAAGTGCCTTTTTT -TGTACATAAAAAATAATTTTTAAATTTTTTAACGTTCCTAAAAACTAAAC -AAACTGTAAAGAAAATTTTGTTTAAAAAAAAAATCAATAAAACATATTTT -CAGTAATTTCCAAAATTTGATTTCCCGGTAAAAATCAACAATTTTTTATC -GGGGCCACAAAAAAAATTCGCTGAAAAAAATTCAATTGGATGTATTTTCT -GCAAATTCGAGTCAATTTTCTGAAAATAGTTGTTTATTTTCCCTGATTTT -TTGGCGTTTTTTCCTTTTTTAAAGGAATTTTAGGACTTTCTGGGATTTAG -AAGGGTTTAGCCTAGGGAGTGATTAAGCCTAGGCTTAAGCCTGAACCTGA -GCCTAAGCCTAAACCTAAGCCTAAGCCTAAGCCTAAGCCTAACATCAAAA -AAACCGGAAAATCCTAAGCCTAAATAGCGTCAGTAGCAAGCTGACGCTCG -CCACTGACACCAAGCCTAAGCCTCAGCCTTTAACGAAAAACAATTTTGGC -ACAAAAATTGCAAAATTTCCGCTTCTCCGCTTCTCTTAAGACATTGAATT -TCCAAATTTAAAAATTTTTAGAAAAAAAAAAACCTCGGTCCAAAATGATC -TGAAAATTCTTATTTAGGCTTTAAAAAATTTCACTTTTTTCTGCGACACT -TTCCATAACACCACAAATTCGGCGAATCGACCTGTTGATGATCTTGTCTC -GACCCGCTCTCTCTCTAAGTGATTATAACAGAGATACACCCACACACCCA -CACACGTCATCTATTATGTTCTAGAACTTTATACTTTATGATCAAAACCG -AATGCTACAAACTAAAAAAACATCACCACTTTTTCCAAATTTTCGTCACA -TTTTTGCAGTCCGACCACAACTACAACCACCAAAGATCCATGTGAATCAT -CGCATCCGTTGGATCTGACGCGTCGGCTACGGGACACTGCCGGCTACAAT -CGTATCTATATGGCCAGCGACTTTTCGTCGGCTCGCAATGAGTTTCCTGA -TCTCAGGGGTTTGGCTCACAAAGCTTCAACGGACTATCATTGCGGGAAGA -GGTGCCAACGGTGAGCTCTCAATGCCTACCTGCCTACTTGTTTGCAGTAT -CAAACATATAATGCCTACAAGCCTACGCGCCTACCTTGGTCTACGAGCCT -GAACTTGCACATTTTCTGTGCCTAACATGCACGCTATACTTTTGTCTGCC -GTTACGCGCCCCCCCCCCCCGCCTATCTGCCTACAAGTCTCCCTTTTGTC -TTTATGCCTACGCGCCTATCACATGCCTACCTGCCTATTTGCTTGCGGTC -GAGTCGATACATATCATGCCTACGAGCCTACGCGCCTACCTTGGGCTACT -AGCCTGAATTCGCATTTTTCCAGTGCCTAGCTTGCGCGCTATACCTATGC -CTGCATTTACGCGCCTTCTCCCCGCCTAGCTGCCTACAATCGCACTTTCT -GCCTACCTGCATGCTTTCCTACCTATTCGCATACTTAGGCGTACCTACCA -CAAGCTTAGCTACCTACAAAACTGCCTTCTGCCAACCTGCATGACTGCGT -ACCTTTTCGCCTGCTTAGGTGCCTACCACAAGCCTCCCTTTTGTCGATAT -TCCTACGCGCCTATGGCATACCTACATGCCTACTTGTTTGAGTCGATACA -TATCATGCCTACGCGCCTACCTTGGCCTACCTTGGCCTACAATCCTGAAA -TTGCACTTTTCCTGTGCCTAGCTTGTACACTATACTTATGCCTGCCTTTA -CGCGCCTTCTCCGCGCTTATCTGCCTACAAGCATACCTTCTGCCTCCTTG -CATGCCTACATACCTATTAGCCTGCTTACGCGAACCTACCACAAGCCTAG -CTGCCTACAAACCTCCCTTCTGCCTATATGCCTACGCACCTAACTCCTGC -CTGCCTATACGTCTACCTCATGCTGAAAACAGACCTGCCTTGTACCTACC -TATGCGCCTACCTAAGATTTGCCTCCTACGTGCCTGGCTGCCTATTTTGC -CTATAGGCATTACTGTCAGTGCGTCTACCCAGAGCCTACCTTTAGGTAGA -CGTTTGCCTACCTAAAGCAACCGCCTACAAGTCTATTCGCCTGCCTCCTT -GCCTACCTACACACCTCCCTTATCCCGGCTTTTCCACCTGCCTATGCGCC -TATCTCATGCCTACCCAAGACCTGCAAACGTGCCTAGCCGTATGCCTACC -TAACTTCGCGCCTACATATGCCTCCCTTTCAGATCGAGTCAACTAATTCG -AAAAATCATAAAAACCGGCCAACCGGCAGAAGCCGAACGTGCTTGGTGGG -ACGAGGAAGAGTGGGAGGAGGGCGAGAGACGCAGGAAACGAGCCATCGAA -TGGAAGGATACAGATGATCGTCTGCTAATGCGAAATACCGGAACATCACG -TCATATTTTGGGTAGGTAGGTGGGTGAACACAGCAAGTGCGCTCCATCGC -GCGGGACACTTTTCCCGCGCTTTTTAGGAGGTCAAACACGGAATTTTTCC -AGGAATGACTGTGGCGGTGGAATGCGATGATGAGACTGGAGAATTTAATA -GTGGTGGATACTCGTTGTGTACTACGTGCCGTGCTGTTCGACACTTGCCA -TCCACGTATTTTCCACGTGTCATTAATGAGCTGATTTGCTCGCAGAAAGC -GTGTTTGCGAGGAGAAGGAAAATGCATACAACGGGTTATGCCGATGAAGG -TATGTAATTTTTTTGTTTTTGCAATGGAGCGCGTTTGTACTCACTCCACG -AGAATCACGTGGTGTCAGAGTGTCTCATTTCGGATTGATCTACAAAAAAT -GCGGGAGAAGAGACACAGAGTTCTCAACTGATTTTGGATGATTAAGAACG -TGCTGACGACACATTTTTATGGGCAAAAAATTCCCGCATTTTTTGTAGAT -CAAATCACTTGGAGAATATTATTTTTATTTGAATATGATCCTTTAAAGAA -AAAATAAAATTTGACTGAATTTCCCGCCAAAAAATTTTCGCAGAAAATTT -AAATTTCCCGGCAAAATATTCACGGATATCTGGCTTCCCTCATAAATTGA -AATGGAAGAGTTTTTGCCGAACTAGGCCAGGCCATATCTGGGGTAGATTT -ACGGCGCGTTGCGTGTCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAAA -TATATTTGTCCGTGTGGAGTACACGACTTTCCCACGCGTTGGTGATTGTC -AATAGAGTGCGAAAAATTCAATGAGGAAGGCCAGAACCCCGTGAATATTT -TCTCAAACATTTTTTTTGGAATTAATGTGCAATCGCGCTCTAACGCAGTA -TCCAAAACTTGGGTCTTTTGGCGGGAAACCCGAAAATTCAAAGTTTTTTG -CTTTAAAATATCGTGAAACAGACGAAACTAGTCGCAAAATTTCAAATTTA -CGGTCTTGCCGCGCCAGTGCGGTGGATCACGATTGCACTTAAGAAAAATG -GCGAAAATCAAAAATTTGGTTTATTTTTGGCAACTATTTTTCATTCTCTA -TCAAATTCATACTGTACACGTGGAAAATCATTGATTTTCCCGAAAATTTG -AATAAATGGGATGCAAGATGCGAGCGCGCCCTATTGTGATTCGTTAAAAT -TCGTTAGAAGCGTCACTGAAATCGAAATTTTTTCTCGAAAAATTGCAGTG -TGCCACGTTGTAAAATATCGATTTTTTGGAAAATTTAATATTTAGAAGTG -CGGATGCATCCTATTGTGCTCCAATAAAATTACACGGGCTTCTGGCATTC -CGCATTGAATTTTTCGCGCTCCATTGACAATCGCCCGTGTACTCCACACG -GACAAGTGCATTTAGTTTTAAAACTAAAATCGAGCCGCGACGCGACACGC -AACGCGCCGTAAATCTACCCCAGATATGGCCTGGCCTAGTTCGGCAAAAA -CTCTTCCATTTCAAAATATGAGGAAGGCCAGAACCTCGTGGAAAATATCG -ATTTTTCCATTTCCACGTGGCCAAAGGAATTGCAAGCGCGCTCCAGTGAA -CTCGCCCAATTTCCATTTTTTTTCAGGTTCTCCGAAACGTGGGCACCCGC -GAGTGTGCTCGCTGGCAAATGAGCCAAATCGACGTGCGAACGTGTTGTGA -TTGTATGCTCAATCCGTCATCACCACTGGTCACCTATTTATGAGCGAAAA -AACCGGGGAAAAAAACACACAAAACAACTCAAAACTCAACAAAAAAAAAT -AATTTTACAAGATTCAACGAAACAACAAAAAAAAGAAACAATGGAAATTA -AATACGGATGCTGCTGCCAAATATGCTGCCAAATTCAAATTCTCGCCTTG -TACACACGATCTTTATTGAAAACGGTGATCAACGGGCACCCTCCACTCTG -ACCTTTTATCTGAAAATAATTGTTTTAAAGATTTATTTGATTAAAAACCT -CGGCCACGGCCGCGACGCAGCCGCTCCGCACGCAGCTGCGTCGCGGTCGG -GTGGATCCTAACCTGAACTTCTCCCTCCAGCTCGTTATCGTCGTCGACCA -CCTCGAACAGTTTGCTAGCCTCGAATAGAAATCTGAAAAAAATAAATTGG -TTTTTTTTGAAAATATATAATGTTTTATGTTTGGGCTTCTGGCCTTCCTC -ATTGCATTTTTCGCGCGCTCCATTGACAATCGCCCCCCTGTGTACTCCAC -ACGGACAAATCACATTTAGTTTCACAACGAACGACACGCAACGCGCCTGG -CCTAGTTCGGCAGAAAAACTCTTCCATTTCAATTTATGAGGGAAGCCAGA -AATCCGCGTGTGTTTTATTGATTTTATTGATTTTTTTACTTTCGAAAATC -GCGTTCCGGCTGGTAGAAGCACAAGGTTTTGCGCGTGTCGGCGATTCGAT -CCCTCGACCATTCTCTGCAAAAAAAATATTTTTTTTTGTGTAAAATTCCC -AATCTGCGAGAACGGGATCTACGAAAAATTTTTTTTTTAATATTTTAATG -ATTTTTTCAGAGATCACATTCTTGCAGATCATCTTTTCGTGGGGCCTCCT -AATTTTTCAGTGCTGCACATTTATTTAACATTCAAAAGTGCTTTTTTCAT -AAAAATTTGAATTTTTTGCCCAAAAATCGAGAAAAACGCCGCTCCGCCTC -TTTTTCCGTGCGGCACTGTGCCTTTTGCAAGCTGGGCACAGTTTTGTAGG -CGTGAGCATGGTCTTACTTGAGCGCTTGAGTGATCTACGAAAAAAAAAAA -GCTTTTTTTAAAATTTATGTCGGAGATCACATTCTTGCAGATCATCTTTT -CGTGGGGCCTGCTTATTTTTCAGTGCCGCTCGGAAAAAGAGGCGGAGCGT -CGTGAGGCACGGTTTTTTGTCACGATTTTACAGTTTTTTGACTAAAATTC -TTGATTTTGGATCATTTTCGTTGATTTTTTTCGGAAAAAGCTGATTTTGG -CAAAAAAAAAATTTTCGCTTTTTTTTGGACAAAGAAGAGCCAAAAAAAAA -AATGAAAAAATCATAAATTTTTTAGTTTTTACATTTTTTTTTTTGAATTG -AAAAATGTTTTTTTGTGTTTTTGGTGAAAAAAACTACTTTTTTTTGCGAA -AAAAAAATAGCAAAAATGACCAAAAATCGGAAAAAAAAAACGCCGCTCCG -CCTCTTTTTCCGTGCGGCACTTCGCCATTTGCAAGCTGGGCACGGTTTTG -TAGGCGTTGTCATGTTGTCATTACTTGAGCGCTTTGAGGCAAAGACTTAT -GGGAGAACGGTGAAATCCAAAATTGGTGGCGTTCGGGAAGAGACGGGGGT -GCTTCTGAAAAAAATTGTTGAAAAATGCAAAAAATCTGAAATTTTAGAGC -ATTTTTCTGAAAAAAATGCAAAAAATCCGAAATTTTTGAGCATTTTTCTG -AAAAAAACGCTAAAAATCTGAAATTTTAGAGCATTTTTCTGAAAAAAACG -CTAAAAATCTTAAATTTCTGAGCATTTTTCCCGGAAAAAAAAAGATTTTT -ATGCACCTCTGCGAAAACTTCATCCATCATGGTAATTGAAAAATCACAAC -TGTCCAAAAGCACCGAATTCACAGTGTCGAGCTCGAAAACGCCGACATCT -TCGACCTAAAATGCTCAATTTTAATGGGGAAAAGCTCTAAAATCATGGGC -TTCTCGCATTCCTCGTTGAATTGTTCGCGCTCCATTGACAATCGCCCCCG -TGTACTCCACACGGACAAGTGCATTTAGTTTTAAAACTAAAATCGAGCCG -CGACGCGACACGCAACGCGCCGTAAATCTACGAAAAAAAAAAGGAATTTT -TGCTGAAAAATCGATAAAACACGTTAAATTTAACCAGAAAAATCAATTTT -CGCACAAAAATTCGCAAAAAAAAAAAATCAAATTTTGCTCATAAAATTTG -GCGATTTCAGTTTTCTGAGGTTCACCGACCCAAAAAACGTCAAATTTGAC -GCGCAAAACTTGAATTTTCTATTGATTTTTGATGAAAAATCGATAAAATA -CGGTCAATTTAACCAGAAAAATCAATTTTTAACGAGAAAAGCCAGAAATC -CGTTGAAAAAGCTCTAAAAATCAAAATACAAACATTCGAGAGAGTCAGAT -GACGGAGACAGACGCATTTTTTCAGAATTTTCTGCAAATTTAGGTCCAAA -CTGACGAAATAGAAGACACGGAGCACACTGGAAATGAAAAAAAATTAATT -AAATGCTAGATTTTTAGCATTTTTTCAGAAAAAATGCACTAAAATTTCAG -ATTTTTAGCATTTTTTTCCGGAAAAATACACTGAAATTTCAGATTTTTAT -TTATTTTTTTTTGAAAAAATGCTACAGACCGAATAGTTTGCCAGGCATTT -CTGCCGCGGAGGAAATCGGCGATGAACTCTGCCACGTAGCGGCATTCGAT -GGGCGGTGGCTGAAAATTTGCAATTTTTTGGCCTAAAATTTGGTTTTTTC -TGGAAAATTCTCTTACCAACGGGAAGGTTTTCGTCTTCGGAATGCCTAAA -TTAACAATACAAGCCCTCGGAGCAATTCTCGCAAGAATTGGAGCCAGCTC -CTTGGCATAAGTGAGATCATAGATGAAGAAGACGAGCCGCTTCACCATTA -CGATGCTCTTGCAGCGTTCACGGCGTTCTGCGTATTTTTCCAGGATACTC -TGAAAAAAAATCCGTTAATTTTAGCCAAAAAATCCGTTAAATTTAGCCAA -AAAATCCGTTAATTTTAGCCAAAAAATCCGTTAATTTTAGCCAAAAAATC -CGTTAATTTTAGCCAAAAAATCCGTTAACTTTAGCCAAAAAATCCGTTAA -TTTTAGCCAAAAAATCCGTTAATTTTAGCCAAAAAATCCGTTATTTTAAG -TCAAAAAATCCGTTATTTTAGCCAAAAAATTCGTTAATTTTAGCCAAAAA -TTCGCTAGTTTCAGCCAAAAAAATCCGTTAATTTTAGCCAAAAAAGAACC -GTTATTTTTAGCCAAAAAATCCTTTAATTTTAGCCAAAAATTCGATATTT -TTAGCAAAAAAAATCCGTTAATTTTAGGCAAAGAACCGTTAATTTTAGCC -AAAAAATCCGTTAATTTAAGTCAAAAAATCCGTTAATTTTAGCCAAAAAA -ATCCGTTAATTTAAGTCAAAAAATCCGTTATTTTAGCCAAAAAATTCGTT -AATTTTAGCCAAAAATTCGCTAGTTTCAGCCAAAAAAATCCGTTAATTTT -AGCCAAAAAAGAACCGTTATTTTTAGCCAAAAAATCCGTTAATTTTAGCC -AAAAATTCGATATTTTTAGCAAAAAGAATCCGTTAATTTTAGCCAAAAAT -CCGTTAATTTTAGCCAAAAATCCGTTAATTTTAGCCAAAAATTCGATATT -TTTAGCAAAAAAAATCCGTTAATTTTAGGCAAAGAACCGTTAATTTTAGC -CAAAAAATCCGTTAATTTTAGCCAAAAAAATCCGTTAATTTAAGTCAAAA -AATCCGTTAATTTTAGCCAAAAAAATCCGTTAATTTAAGTCAAAAAATCC -GTTAATTTTAGCCAAAAAAGAACCGTTATTTTTAGCCAAAAAATCCGTTA -ATTTTAGCCAAAAATTCGATATTTTTAGCCAAAAATCCGTTAATTTTAGC -CAAAAATCCGTTAATTTTAGCCAAAAATTCGATATTTTTAGCAAAAAAAA -TCCGTTAATTTTAGGCAAAGAACCGTTAATTTTAGCCAAAAAATCCGTTA -ATTTTAGCCAAAAAAATCCGTTAATTTAAGTCAAAAAATCCGTTAATTTT -AGCCAAAAAAATCCGTTAATTTAAGTCAAAAAATCCGTTAATTTAAGTCA -AAAAATCCGTTAATTTTAGCCAAAAAAGAACCGTTATTTTTAGCCAAAAA -ATCCGTTAATTTTAGCCAAAAATTCGATATTTTTAGCAAAAAGAATCCGT -TAATTTTAGCCAAAAATCCGTTAATTTTAGCCAAAAATCCGTTAATTTTA -GCCAAAAATTCGATATTTTTAGCAAAAAAAATCCGTTAATTTTAGGCAAA -GAACCGTTAATTTTAGCCAAAAATTCGATATTTTTAGCCAAAAAATCCAT -TAATTTTAGCCAAAAATTGCTAATTTTAGCAAAAAAATTCGCTATTTTTA -GCCAAAAAATCCGTTAATTTTAGCCAAAAAATTCGCTATTTTTAGCCAAA -AAACTGTTAATTTTAGCCAAAAATCCGTTGATTTTAGCCAAACAATTAGT -TATTTTTAGCCAAAAAATCCGTAAATTTTAGCCAAAAAATCTGTTATTTT -TAGTCAAAAAATTCGTGAATTTTAACCGGAAAATCCGTTATTTTTACTAC -AAAAATAGCGAATTTTCGCCAATTTTAACCAAAATCTCTCGATTTTTTGT -CAAAAATGCACCAAATGTGCGCTTTTTTTCGTTTTTTTTTGGCATTTTCC -CTACTTCAATAGCGAGTTTGCAGGTCGTCGTGCAAATTTTGACTTCGATT -TCAACAGAATCCAGCAGAATTCGATCATCAGTCATACATTCCAAACAATT -TTCAGCATCCTTTATGGGCACTTCGATGAAATCTGAGAGAGCAAACACTT -TAGAATTGCCAGGGTTTACAGCTCTTTTAATCACCATCCAACTGGCACGC -GACGTCCATTTTTGGCTGCCCATTCACCCGCTCGCCGCCACCCTTGCAAA -TGTTGTGAAATTTGATGACAAACGGTTCAGAGTACTCGAAATTCTCCAGA -TCGCCGTGCTCGACGAGCTCGTTGTTCGATGGTGCTCTTTCCGGCGTTCT -TTTCCATCTGAAACTGCTGTTTTTCCTTTTTTTTTTTGTCGCAAAATCTT -TTTTTTCACCGAATTTTTCCACCAACCTGAACAGCGAATCTTCGAAAAGA -GACGAAGAATTCGATTTTGGGCTTTCCAAATTTGAAAAATTCAAAGAAGT -TGTCACAGAACTAGCCATTTCGAAGTTGAAATGATTAAAAATCAAAAACA -AAAAATTTCGATAAAAATCAATGTCCGAGAGGAGTACACGCTTGGGAACC -ATGCGCGGGTCTCGCACGGAAGAGACGAATTGAAGTACGGTAGCTCGTAA -ATCCTGTTCCACGATTGATTTTTTTTTAATTTTTGATCAATTTTTTCGAT -TTTATCCCAGAAGTTCTTGAAAATTATCCGTTTTTTTGCAATTTTTTCGG -AAAAATGCTCTAAAATTTAAGATTTTTAGCATTTTTTTCCGAAAAAAATG -TTTTAAAATTGCAGATTTTTAGCATTTTTTCACAAAAAATGCACTAAAAT -TAAGATTCTTAGCATTTTTGCGGAAAAAATGCTAAAAATCTTGCAAAGAC -TGAAAAAATTCGAATTTGTTGTAATATTGCATGTTTTCCGAGGTTTTACA -TCAAATATGTGTAGTTTTCCTTGAAATTTGACGTTTTTCACTGAAAAATT -CTACAAAAATAAGCATTTCTGAGCTCTTTTGTCGCAAAAGTTGATGAAAA -TCGCCAATTTTTCAATAAATATTGCACAGAAACCGTCAGATTTTTAGCAT -TTTTTCGGAAAAATGCACTAAAATTTTAGATTATTAGCAATTTTTCAGAA -AAATGCTCTAAAATTTAAGATTTTTAGCCCTTTTTTTCAGAAAAATTCAC -TAAAATGCAAGATTTTAATCATTTTTTTGCAAGAAAAATGCTCTAAAATC -TAAGTTTTTTAGCATTTTTTTCGGAAAAATGTTTGAAAATCCCTTCTTTA -ACGCCTTTTTCGCACTAAAAGATGCTCAAACTAGTTTAAACTTTCAGAGT -TTTCCCATGCTTTTGCCCCCTCCACTTCACAAGAAACAAGAAACAAATAC -GGCGGGAAAAAAGCGAAAATTCGCGGAAAACATCATTTTCAATGCATTTT -TCATCGCGAAAATTGCCGAATTTCATTAAAAATGGCCAATTTTTGTGCCA -GTTTTCCCAATTAATCATGTATTTTCGATTAACTCGAAGCCCCTGCGCAG -AGAAAAACACAAAAATGTTGCAATTGTTTGTGTAAAGCACTTCTCTGCGC -GTCTGCGGCATCCGATATGACGAGCAATATATATCTTTTTTCTGGGAGCC -TTTTATTTTAAATTTATCATTTTTCATTTAGTTTTTGAGAAAAAAATTCC -CCCAAAATTAACCTAAAAGCCTTGAAAATGTGAATTTTGAGTGAAATTTG -ACGTTTTTCAGCGAAAAATTCTCAATTTTTAGTGCATTTTTGCCGGAAAA -ATGCTAATAATCTTGAATTTTAGTGCTTAGCGGAAAAAAAATTCAAAATG -AAAATGTCGAATTTGAAATAAAATGCTTTAAAATTTAAGATTTTTAGCAT -TTTTCCCGAGAAAAGCTAAAAATCTTAATTTTTATAGCTTTTTTGTTGAA -AAAATGCTAAAAATCTTAAATTTTAGATCATTTTATTTCAAATTCGACAT -TTTCATTTTGTATTTAAGAAAAAATAACCTCAAAGTCTGAAAAATATCGA -ATTTTGAGTGAAATTTGACATTTTTCAGCGAAAAATTCTCATTTTTCCGG -AAAAAATGCTAAAAATCTTGAATTTTAGTGCATTTTTCCAGAAAAAATGC -TAAAAATCTCAATTTTTAGTGCATTTTCCCGGAAAAATGCTAAAAATCTT -AAATTTTAGAGCATTTTCCAGAAAAAATGCTTAAAATCTTGAATTTCAGA -GCATTCTTAATGAAAAATGCTAAAAATCTTAAATTTTAGAGCATTTTTCT -CGAAAAAATGCTTAAAATCTTGAATTTCAGAGCATTTTTTTCGGAAAAAT -GCTAAAAATCTCAATTTTTAGTGCATTTTTCTGAAAAAATACTAAAAATC -TTGAATTTTTAGAGCATTTTCGCTGAAAAATAATAAAAATTTTAAATTTT -AGAGCATTTTTCCGAAAAAAAAAACGCTAAAAATCTTGTAATAACTGACA -AATTTCGAATTTTGAGTAAAATGGCATGTTTTTTGAGGTTTTTCCTTGAA -ATTTGACGTTTTTCACCTAAAAATTCGACAAAAATGAGCATTTCTGAGCT -CTTATATTGCAAAAATTGACAAAAATCGTCAATTTTTCAATAAAAATTGC -CCAAAAACCTTAAAATATTCTGAAAAAAGCCGAAAAAACCCCATTTTTTA -GCCATTTTCTACAGAATTTTACATTTTTCTCAACTTTCTTCACCTAAAAT -CGCCGATATTATTCACATAAAATTCCCTTTTTTTTCAGCGCAATGGGGTG -TATTATGAGCCAGGAGGATGAAGCAGCGAAACGAAGATCCAAGAAGATTG -ATCGATTGGTAAAAATTGGGGATTTTTCGTTGAAAAAACTCGATTTTTTG -TGAAAAAATATAGAAAAATCATCAAAACTGCTTCAAAAACCGAAAAATTT -CACTAAAAACTAGAATTTTTGCTCGAAAACCTCAAAAAATCGCAAAATTT -GCAGTGAAAACTAGATTTTTATTTTTAAAAAATTCAAAAAGTTCATAAAA -ATCAATAAAAAAATCGGATTTTTTTTCTTAAAAAATCTGGAAAACTGTCT -AAAAATCTACTCAAAATCAGTTTTTTTTGTAGAAAATCTGAAAAATAGTC -TAAAAAATTAATAAAAATCGATTTTTTGGGAGAAAATTTGAAAAATTACG -AAAAAAATCAATAAAAAATCGGTTTTTTGGGAAAAACCCTGAAAAATTGT -CTAAAAATCTATAAAAAATTGGATTTTTTAAATAGAAAATCTGAAAAACT -GCCAAAAAATCAACAAAAAATCGATTTTTGTGTGAGAAAACCTGAAAAAT -TATCAAAAAATTGGTTTTTATCTAGAAAATCTGAAAAATTACCTAAAAAG -CAATAAAAAATCGGTTTTTTTTCTGGAAAAACTGTAAAATAGCCTAAAAA -TCAATTTAAAAAAAGTTTTTTTTTTTGTAGAAAACCTGAAAAATTATCAA -TAAAAACCACGAAAAACAGTTTTTCGCTTATAAAAAGTCCAAAAATCCCA -AAATTTGCATTAAAAACTAGATTTTTATTTCAAAAAAATTCAAAAATTGC -CTGAAAATCAATAAAATTGTTGTTTTTTTTTGGAAAAAAAAACCCTGAAA -AATTGGCTAAAAATCCCAAATTTTTTTGCAGCTCAAAGAAGACGGCGAGA -ACTCAATGCGAACCATCAAGCTTCTGCTCCTGGGAGCCGGCGAGTCTGGA -AAATCGACGATTTTAAAGCAGATGCGTATCATTCACGACGTCGGATATAC -GACTGAAGAGAGAAAAGTGTTCAGAGGCGTCGTTTATGGAAATATTATTT -TGGTCAGTGCTCCGATGCACTGAAAAATGACAGGAAATTGGCAATTTTGA -CCAAAATTCGTGGATTTTAACCAAAAAATCCGTTAATTTTAATCAAAAAT -CGGCTAATTTTAGCCAAAAAATTCGCTATTTTAACCAAAAAATCCGTTGA -TTTTAGTCAAAAAATTCGCTATTTTTAGCCAAAAAATCGCTATTTTTAGC -CAAAAAATCCGTTAATTTTAGCCAAAAATTTCGCTATTTTTAGCCAAAAA -ATCCGTTAATTTTAGGCAAAAAATCCGTTAATTTTAGTCAAAAAATCCGC -TATTTTAACCAAAAAATCCGCTATTTTAACCAAAAAATCCGTTAATTTTA -GCCAAAAAATTCGCTATTTTTAGCCAAAAAATCCGTTAATTTTAGCCAAA -AAATTCGCTATTTTTAGCCAAAAAATCCGTTAATTTTAGCCAAAAAATTC -GCTATTTTTAGCCAAAAAATCCGTTAATTTTAGCCAAAAAATTCGCTATT -TTTAGCCAAAAAATTCGCTATTTTTAGCCAAAAAATCCGTTAATTTTAGC -CAAAAAATTCGCTATTTTTAGCCAAAAAATTCACCAATTTTCGTTTAAGA -TTCTCCAATTTTTGACAAAAAAATTCACCGAATTTGCTCAAAATTCTCCC -TTTTTTGGCTAAAAAATGCATAAATTACACAATTAAACCAAAAATTACCC -AATTTCGCCCAAAAACTCTAATTTTTACCAAAAATTCTCCTATTTTTTGT -TGAAAATTCACCAATTTTTTTGCCAAATTTTAACAGAAAAATCTATAAAA -TATCAGGCGAAAATAACCTAATTTTGGTCAAAAATTCACCGATTTTTGTT -CAAAATTCTTCAATTTTACCCAATATCCACCAAATTTTAACCAAAAAAGT -CTAAAAAATTATTCAAAAAATCCCTAATTTTGGCCCAAAATTCTCCATTT -TTACTCAAAAATTCTCTCTTTTTAACCAAAAAATCTAGAATATTAGGTGA -AAAATGCCTAATTTTGGCTAAAAATTCACCGATTTTTGACAAAAAAAACC -TCCAATTTCAGCTTAAAACTCTCTGATTTTTACCAAAAAAATCTAAAATA -TTAGGCGAAAAATCACTAATTTCGGCTAAAAAATCACCAATTTTTGACAA -AAGAAACTCCAATTCCAACAAAAAATTCACAAAATTTACTCAAAAATTGT -CTGTTTTTCACAAAAAAAAAACCTACAATATTAGGAGAAAATTCACAAAT -TTTGGCCAAAAAATCCCTAATTTTGGCCGAAAAATTTGCCAATTTTGTTC -AAAATTCTCCAATTTTCGACTAAAAAAACCTGCCATATTCAGCAAAAAGT -TCACCAAATTTACTCAAAAATTCAAAAAAAATCTAGAATATTAGGCGAAA -AATCCCTAATTTTGTCCAAAAATTCACCGATTTTTGACAAAAAAAACTCT -AATTTCAGCAGAAACTTCACCAAATCATAGCCAAAAATTCACTGTTTTTT -ACCAAAAAAATAGAATATTAAGAGAAAATCCCTAAATTTGTCCAAAAAAT -TAAACAAATTATAGCCAAAAATGCTCTGTTTTTTACCAAAAATTCTAGAA -TATTAGGTAAAAAATCCCTAATTTTTCCCAAAAAATTCACCGAATTTACT -CCAAAATGCTCTGTTTTTGACAAAAAAAAACTCTAATTCCAGCACAAAAT -TTACCAAATTATAGCCAAAAATGCTCTTTTTTTTCCAAAAAAAATCTAAA -ATATTAGGCGAAAAATCCCTAATTTTGTCCAAAAATTCACCGATTTTTGA -CAAAAAAAACTCTAATTTCAGCAGAAACTTCACCAAATCATAGCCAAAAA -TTCACTGTTTTTTACCAAAAAAATAGAATATTAAGAGAAAATCCCTAAAT -TTGTCCAAAAAATTAAACAAATTATAGCCAAAAATGCTCTGTTTTTTACC -AAAAATTCTAGAATATTAGGTAAAAAATCCCTAATTTTTCCCAAAAAATT -CACCGAATTTACTCCAAAATGCTCTGTTTTTGACAAAAAAAAACTCTAAT -TCCAGCACAAAATTTACCAAATTATAGCCAAAAATGCTCTTTTTTTTCCA -AAAAAAATCTAAAATATTAGGCGAAAAATCCCTAATTTTGGCCAAAAAAA -TTACACCAATTTTCCCCAATTTCAGCTTAAAATGTTCAATTTCTAACCAA -AAAACCCCCAAATTTTAACCCAAAAATTCCCTCGAATTTCACCCCAAAAC -CGTCCAATTTTCCAGTCTCTCAACGCCATCATCCACGCTATGGAGCAGTT -AAAAATCAGCTTCACCACACTCGATCACGAATCAGATGCCCGAAAGCTTC -TAATGTTCAGCACAACAGGCGAAGAGGATGAGCTGCCCGAAGAGCTCGTC -GTGCTCATGAAGAGTGTTTGGTCCGATTCGGGAATTCAGAAAGCGCTCGA -AAGGTGGCGAAATTTCGCTGAAAATTGAGAAAATTCGAGGGATTTTCGCT -GAAAATCGAGAAATTTCGGTGGAAATTAGCTTATTTCCATGAAAAAATCG -TTAAAATCCCAGAAAATTGCGATTTTGGACTATTTTTGAGCATTTTTCGC -GTTTTTTCCATGAAAAATTCAATGAAATCGATTTTTTAGGTCATATTCGC -TGAAAATTACCGCTTTTTTCGATGAAAAATTCGTTGATATTCGTTGAAAA -TTATCTATTAGAGCTAATTAAAATTTAAAATTCCAAAAAAAAAAATATTT -TAAAATAATCAATCGAATTATTTTTTGCTCACACTTTCAAAAACCGCTAA -AAATTCTAAAAAAAAAATTTTGGAGCCCCTTTTCCGCTAGAAAATAGCTT -TTTTTCCCTCAAAATCCGGGAAAATTCAGAAATATTTAATTTTTTGGCTA -TTTCTGACTCTTATTCCCACACAAAAATAGTTTTACCAAAAAAAAACAAT -TTTTGTCAAAAATTCGAAAAAAAAATTTCTGGGAAATATTTTTAAATGAC -TCTAAATTTTCCCCTGTACCCGAATATCGATGTGAAAAAATTCAGAAAAA -TTTTCCGCGATTTTATATGATTTTTTGAAAATTGGACAAATTTCAGTTTT -CCCCCCTAATTCCTATTTGAGTTACCGCCAATTTGATTTGTTCGATGGAC -TTGCACATTTTTGAATTAATCTATTTTATTTTTTGTTGTTTTTTCCACCG -ATTTTTAATGTTTTCGGTGTATTTTTGCTTGAATTTTAGGGGAAAAGTCA -AAATAAATGCAATTTTCGATTAAAAAGCACGCTGACCGGCGTAAAAATGA -AAAAGTAACGATTTTAAACGATTTCAAACCTGAATTAATTAATTTCACTG -ATTTACGCCTGTACGCGTGCGTAGATCAGTGAAATTAATTAATTTAGGTT -CGAAATCGTTTAAAAGCGTTACTTTTTCATTTTTACGCCTGTAAGCGTGC -TTTTTAATCAGAAATTTGCAATTATTTTGACTTTTTCTCTAAAATTCAAG -CAAAAATACACCGAAAACATCAAAAATCGGTGGAAAATAACAAAAAATAA -AATAAATAAATTTAAAATTGTGCAAGCGCGCTCCATCGAACAAATCCAAT -TGGCGGTAATTCAAATAGGAATTAGGCAAAAACTGAGATTTTTGAGGCAC -CACGTTTTGAAGATCTGTTCAAAAAGAAGATCTACGTTTTCAGGATCTGG -CACCGTGCCAACTGCGGTTTTCTCGATGAAAAACGTAACAACGATGCTCC -GATGTTACGCGTCGCGTGTTGTTTTGCGTTCAGAAAGATATTTTTTGAAA -TTTTCTTCTTGAAGAAACGCTTAACGACACGCAACGCGTAACATCGGAGC -ATCGTTGTTACGTTTTTCATCGAGAAAACCGCAGTTGGCACGGTGTCAGA -TCCTGAAAACGTAGATCTTCTTTTCGTAGATTTTCAGAATGTAGATCTTC -TTTTGGTAAATCTTCTTTTCGTAGATCTTCTTTTCGTCGATCTTCAAAAT -GTAGATCTTCTTTTGGTAGATCTTCTTTTCGTAGATCTTCTTTTCGTAGA -TCTTCTTTTTCGTAGATCTTCTTTTTGAACAGATCTTCAAAACGTGGTGC -CTCTGATTTTTCCAAATTTCAAAAAATCATATAAAATTTAGAAAATTTTT -TTGAATTTGTTTATCAGCATATTTGGTCATTTTGGTACCATATTTTCCCC -TGATTCCGAATATCAATGTGAAAAAATTCAAAAAAAAAATCCCTGATTTT -ATATTTAAGCTTGAAATCGCCGAATGAGATTTTTCAAATACGCGCGCACA -AATAAATTCTCCTTGGAGCGCGTTTGCCTCATTTGATTTTCTCCATATTT -ATTTTTACTTTTTTTTCAGTTTTTCACAGCTATTTTCATTCATTTTTATT -GTATTTTATAGGTTTTTTTTTTTGAAAAATAAATTTTTCCGTGTGAATTG -AACATTTTATTTGCATAAAAATGAATGAAAATAGCTGAAAAACTGAATAA -AGTAAAAATAAATATGGAGAAAATTAAATGAGGCAAACGTGCACCAAGGA -TAATTTATTTGGGCGCGTATTTGAAAAATCTCATGTAGGAGGCAAATGAA -ATTTAGGCGATTTCTAGCTTAAATATAATATCAGGGAAATTTTTTTTTTG -ATTTTTTCACATCGATATTCGAATCAGGGGAAAATTTGGAGCCACCTGTA -ACAAAATTTTATGAAAAAAAAAACTGTATAATTTCTAACAACTTTTTTTT -TGTAGATCACGCGAATATCAGCTCAACGATTCGGCCGGCTACTATCTGAG -CCAACTCGACAGAATTTGTGCTCCTAATTACATTCCCACACAGGTATTTT -TCACTGGAAAATTCACAAATTTTTCCACTACTAAAAATTCAAATTTCCTT -TGCAGGATGACATTCTCCGCACAAGAATCAAGACAACAGGAATCGTGGAG -ACGCAGTTTGTCTACAAAGATCGCCTATTTTTGTAGGGGGAAAATTAATT -TTAAAAAATTGAAAAAATCGTCGCCGAAATTCAGGGTTTTCGACGTTGGC -GGACAGCGATCCGAACGAAAAAAGTGGATTCATTGCTTCGAAGACGTGAC -GGCACTCATTTTCTGCGTTGCACTGTCAGAATATGATATGGTTCTTGTCG -AAGATTGTCAGACGGTGCGATTTTCGAGTTTTTTGCTTTTTTTTCGTTTT -TTTCCCAAGTTTAGGGTTTTTCGGTGAAAATCTCGGTTTTCTTGGTTAAA -ATGGTTTTTTTTTTGGCAAAAAACGGCAAAAATTGAGGATTTTAGCGTAT -TTTGGCGAAAAATTGAGTTAATTACATGGAAAATTTCAGAATTTGAGTTA -AAATTGTAGTTTAAGGATTTTTTAGTGATTTTCTCGATTTTTGAACCGAA -AAACGTTCGAATTTCATTTATTACGCGCGACCACAAAATGCTGAGAACGC -GTATTGCACAACATATTTGACGCGCAAAATATCTCGTAGCGAAAACTAAA -GTAATTCTATAAATGACTACTGTAGCGCTCTTGTGTCGATTTACGGAAAT -CGTGTATTAATCGATAAAGTATTTTTTTTAGAAACACAAAAATGACAAAA -AAAATACGAAAGAAAATTGAATTGTTTCGAAAATCGAGTCCTCCCGTAAA -TCGACACAGTTGCCATTAAATTAAATAAAATTAATGTTAACTGTGTCGAT -TTACGGGAGGACTCTCGATTTTCGAAACAATTCAATTTTCTTTCGTTTTT -TTTTGTCATTTTTGTGTTTCTAAAAAAAATACTTTATCGATTAATACACG -ATTTCCGTAAATCGACCCACAAGAGCTACAGTAGTCATTTTCAGAACTAC -TGTAGTTTTCGCTACGAGATATAATTGCGCATCAAATATGTTGTGCATGA -CGGATTCTCAGCATTTTGTGGTCGCGCGTAATGAAAAGCGAAAAAATCGA -TATTTTCTGATTTTTGCGCCGAATTTTGTTAATTTTTCTTTTTTTTTTTT -CTGCGAAAACCACATTTTCCTGACTAAATTCAGGTTCAGCCATTTTTTTT -CGCAAAAATCGACGAAAATTGAGAATTTTAGCGTACTTTTAATTTTTTTA -AATTTTTTTCGCTCTGAAAATTATGAAAAAATCAAAATTTTCTCGATTTT -TGAACCGAAAAACGTTCAAATTTCATTTAAAAATCGAAAAAATCGGGAAA -AAATTTTCCGATTTTTGCACCGATGATTTTCGCTAATTTTTCACCACATT -TTTTGCGTTTCAGAATCGAATGCGAGAATCGCTAAAACTGTTCGACTCGA -TTTGCAACAATAAATGGTTTGTCGAGACGTCGATTATTCTATTTCTCAAC -AAAAAAGACTTATTCGAAGAGAAAATCGTTCGATCTCCACTCACACACTG -CTTTCCGGAATATACGGGCGCCAATAATTACGAAGAAGCTTCTGCGTACA -TTCAACAACAGTTTGAGGATATGAATAAGAGGACTACTGGAGAGAAAGTT -GGTGGTTTTTTTGAATTCACTGCAACTTTTTCCTCACGAGGGACGAGGAA -AAGTGGTTTCTAGGTCATGGCCGAGGGGCCGACAAGTTTCAGCGGCCATT -TATCTTGCTTTGTTTTCCGCCTGTTTTCTTTCGTTTTTCATCGATTTTTT -TCGTTTTTTCGTAATAAAACTGATAAATAAATATTTTTTGCAGATGCTAA -AACAATTTCCAAGTAAAAAAATCATGTATTCAGTCGGCAAGCAGCGATGA -AAGTGGGCATTGTAATATGATGGATTACGGGAATACAAAACCTAAACTTT -TTCTGAAACATGAAACATATGATGCTTAGATGCTGAAATTACCTGATTTT -CATAACGAGACCGCTGAAAAGTTTTGAGGTTTCCACAATTCAACTTTTTG -TGCGAAAATCTCGACTTTTTCACCAAAAAAGTTGAATTTTGGAAACCTCA -AAACTTTTCAGCGGTCTCGTTATGAAAATCAGGTAGTTTCAGCATTTAAG -CAGCATATGTATCATGTTTCAGAAAAAGTTTAGGTTTTGTATTCCCGTAA -TCCATCATATTGCATTGCCCTTGTTTCACCGCTGCTTGCCCACTGAATGC -ATAATTTTTTTACTTGGAAATTGATTTAGCATCTGCAAAAAATATTTATT -CATCAGTTTTATTAAGAAAAACGAAAAAAATCGATGAAAAACGAAAGAAA -ACAGGCGGAAAACAAAGCAAGATAAATGGCCGCTGAAACTTGTCGGCCCC -TCGGCCATGGCCTAGAAACCACTTTTCCTCGTCCCTCGTGAGGAAAAAGT -TGCAGTGAGAAAACTCAATTTTTGAATTTTTTTTTCATGAAAATCGGAAA -ATCTTCAATTTTTCCTAATCAATTCCATCTCTACAGAATCAAGAAATCTA -CACCCAATTCACATGTGCCACCGACACTAACAACATTCGATTCGTTTTCG -ATGCCGTCACCGACATTATCATTCGAGATAACCTCCGCACGTGCGGGCTC -TACTAAATTTTTCCGCTAAATTTTAAATTCCGTTTTTTCCCCCCAAAATC -CCCTCCCAGACATTTTCCGGTATTTATGTATTGACCACACACAACTCTTC -TCTCCCGTCTCCGCTGTTCAATGCTACGGTTATTCTCTTTTTTTTTCTTT -TTTTTTCCTGAAATTCCAAGGGTGTCGTTGAAAATCGAAAAATTCGAAAA -ATTTGGGTTTTTTAGAGGAAAAGCCAAAAATTCAATTTTTTTTTCGATTT -TTATTCCGGAAAATTCGAAAAATTTCGATATTTTTTAAATTTTTTACAAA -AAATTCGAAAAATTTGGATTTTTTCAGGAAAAAGCCAAAAAATTACAATT -TGTGTTTAAAAAAACGAAAAAAAAAACCAATTTTTCTGATTTTAATTCCG -GAAAAATCAAAAAATCTCGATTATTTTCAGAAAAATTCGAAAAATTTGGG -GCTTTTTCCAAAAAAGAAATCGTAAAATTTCGATTTTGTCCAGGAAAAAT -CGAAAATTTAATGTTTTCTTTTTTGGCTTCTTCCGGAAAATCCAAAAATT -TTGAATTTTTTGGATTTGTTTTCAGAAAAATTGGAAAAATTTGGATTTTT -CAGGAAAAAGCCTAACAATTTCAAATTTTGCTTTAAAAAAACTTTAAAAA -ATTGATTTTTGAGGAAAAAACGAAAAATTTCGACATTTTTTGATTTTTTT -TTTACCGAAAAAAAAATTGATTTTTTCCAGGAAAAAGCCAAAAATTTTCA -ATTTTTAAGGAAAAATTCGAACAATTTTGATTTATTGATTTTTTATTACG -GAAAAATCGAAAAATTTGGGTTTTTTAGAGTGAAAAGCCAAAAGTTCAAT -TTATTTTTCTGGAGAAATCCAATTATTTCAATTTTTGAATTTTTTCAAGA -AAAATAAAAAAATGTCGATTTTTTCCAGAAAAATCGAAATTTTTCGTTTT -TGAATGAAAAAAAATTTTTCCTTCAATTTTTCCTTTAAAAAAAATAAATA -AAAATGTTCGAATTTCCATGAAAAAAAGTCAAAAAAATTCAAAATTTTCC -ATTTTCCCTGACAAAAAAATCAAAATTTTCCGATTTTCCTAAACCAAAAT -CCCAAAATTTTCTGATTTTCCAATTTTCTCTGAAAAATCGAATTTTTTGC -CGCACACCCCTGGTTTCACGTGGTGGTCAGGTTGTCTCATTGCGGTTTGT -GATCTACAAAAAATGAGGGAATCTTTCCTCCCCCGGGAAAATCTGACGTC -AGCGCACTCGTGTAACCATGCGAAATCCTCTGCTGAAAAGTCTGCGTCTC -TTCTCCCGCATTTTTTGTAGATCAACGTGTAGATCAATCCAAAATGACAC -CTTGACACCACGTGCCTAAGCCCAAGCCTAAACCAATCCATTTTACCGGT -ATATCTCTACAACCTTTCACTGTCTGAAATATCGCGTCATTTTATATTAT -TATTATTATTGTATTCGCTTAAACGACAACAATTCCCCCATTTGATTCAA -AAAGTAAACATTTCCGAACTTTTTAAAAATTTGAAAAATATTTTTAAAAA -ATTTTAGCGTGAAAAACTTGTCCCCCCACCCTGCCTCTCCAAAAAAAATT -AATTTCGGAAGAATTCAGTCCTTGTTTTTGTAAATTGAGAACGTAATGCG -CTTTTTGGTGGTTTTTGCATATTTATCGACACTTGCGTACGCGAGGTATC -GATTCAGATTCCGTGAGTTTTTTACAACAAAATATCGCTAAGCAATCGCG -CTCCAGCGCGAAACTTCAAAAAAAGGCCAAAATTTTGCGTCGCTTTCTAT -GATTTTAAGACGAAAAGCGAGGAAAAATCAATAAAAACAGCGAAAACTTT -GAAATTTACGGGTTTGCCGCTTTTTTTGCGCTAGAGCGCGATTGCTCACT -GAGTTCAAGCGCCCTTCTTATTTTGAAATGGAAGAGTTTGCCGAATTAGG -CTATTTTGGTGCGGCCACGGCTGGGGTCAATTTACGGCGCGTTGCGTGCC -GCGTCGCGGTTAGGTGGACCACGCCTTTCCCACGCGTAGACGATTGTCAA -TAGAGCGCCGAAAATGCAAGGCCAGAAGCCCGTATGAGTGAAGTTTTTGT -TCATTTTCACTTTTTTTTCGTCGTTTTTAACGGTTTTTATGTGAAAATCA -ATAAAAACGGCGAAAATAATTAAAAATTTTCGATATTCCGGGTTTGGCGC -TTGCTTTGCGCTAGAGCGCGATTGGTCACCGAGTTCAAACGGCGCACTCT -GGCTTCCCTCTTAATTTGAAATGGAAGAGTTTGCCGAATTAGGCCATTTT -GGGTCGGCGGGTAGATTTACGGCGCGTCGCGTGTCGCCTCGCGGCTCGAT -TTTGATTGTAAAACTAAATGTATTTGTCCGTGTGGAGTACACGCGACTTT -CCCACGCGTTGTCCAGCAGGTTATTGCCAATGGAGCGCCGAAAATGCAAG -GCCAGAAGCCCGCCGTATAAGTAGCCCATATGAGTGAAGTTTTTGTACAT -TTTCACTTTTTGTTTCGTCGTTTTTATGGTTTTTATGTGAAAATCCACAG -TCTCCTCGTCATCGAAAGCGCACAAAAAACTGCTTACTGGCGCGTTTCGC -GTTTTTGCTAGCGCATTTTGTGGATTTCTCCGAAATTCAGAAATTACGCG -GAAAATAGGCTAGAATTCCAAAATTACAGCCCCGCCTCTTTTGATAATTA -TCTTCAGGATGAAGAAGATGATCGCGAAGGTGGGTGACTTGAAATATACA -AGAAAAATATGATTTCTTCAGAGAAACACCATTTTTACCGTTGATTTTTT -AATATCCCTACTCCTCCTTCAGTTTTTGACCAAATTTTCTCTTTTAATGG -TCTTTCATTTCATTTTGTGCTAATAAACAAATGTTAAGTTCGAAATCTGC -GAAAAAATTCGTTTCAACGCTAAAAAACGACGAAGTTTATTTTTCAACAC -TAAAAAGATTCACTCCCTCCCCCGGCTGTGCCAATGTGCAAGTGCGCCCC -AGCCCAATTCGACGCCGAGGAGACTGTGAAATCATTAAAAACAGTGAAAA -TAACGGAAAATTTCTGAAATTCCGGGTTTGCCGTTTTTTTTTGCGCTGGA -GCGCGATTGCTCACCGATTTCAAATAGCGCACGCGCTTCTGGTTTCCCCC -ATAAATTGAAATGGAAGAGTTTTCGCCGAACTAGGTCATTTTGGCGCGGC -CACGACCGGGGTAGATTTACGGCGCGCTACGTGTCGCGTCGCGGATCGAT -TTTAGTTGTAAAACTAAATGTAGTTGTCCGTGTGGAGTACACGACTCTCC -CGTCCGGCAGGCGATTGCCAATGGAGCGCGAAAATGCGAGGCCAGAAGCC -CGTGCATTTTTTTGCGGGTCCCGCCACGACATTTACCCTTTCAGACACGT -GTATCAAAGAGGACCAGGCGATTTTGGAGAAGGAAAATGTGAACTCGCCA -CGCCAATTTCTTTTTATCGATGACGGACAATCGCCAAAGTGGAGGGAAAA -TGATCTCGAAGGAAAAGGAATTCTTATGAGCTTCGGAAATCGATTGAAGA -ATCTGACAAACGGATATGAGACTGTGAGACTTTTTTTACGGGTCTCGACG -CGATTTCCCACGGATTTCGGGCTTCCCTCATAAATTGAAATGGAAGAGTT -TTTGCCGAACTAGGCCCCGGCCATATCTGGGGTAGATTTACGGCGCGTTG -CGTGTCGCGTCGCGGCTCGATTTTAGTTGTAAAACTGAATGTATTTGTCC -GTGTGGAGTACACGGGCGATTGCCAATGGAGCGCGAAAAATTCAATTTGT -GTCTCGTAACGATTTTATCGATTCTTTTTCAGGGTGCCGAACAAGCTCTG -CGTGTCCTTGAATTCAACAATACGGAACACTTTCTTGTGATCAATTTTTG -GATGAGAAGCTACTATTTCATGAAAAACGGTGATAAATATCAGCTGTCAT -ACACCGGAACCACCATCAAACCCGATTTGAATCACTTTATTCGGTTAGCA -GGCTTGGAGATGCAATATCGCTCCATCGCAACCATTTTTTCAGCGTATAC -TTCATCTGCGCTCCAGCGAACAGTCAGAGTGCGTTGATCGTGTTTGGGGA -TCAGTCGAAACCGCGAGTTTTAAAGTCGAAAAAATCGAAGAGGGAAGCAG -CGCTGATTGATGAGAATTCGGGGAAGAAGCTGAAAAAGTGCCAGAAAATT -CGGACGAAAAGAGCGGCGGCGGTGAATAACTCGACGGAGTGGACACAGAC -GCTGAAGGATACTCGGAGACTTAAACAACGTAGCGAGTGAGTTTGTGCCA -AACGATACTCCGATGTTCCGCTTCCGCTGAGGACACCGCGTCGTTTGATC -TCTGAAAATTGCGAGAGTCAGCCTCGTGTAAGTTTACCGCAAATTTGGAG -GTCAAGCAGCGAGGTCCTCATATTTTGAAATGGAAGAGCTTGCCGAATTC -GGAGTCGATTTACGGCGCGTTGCGTTGCGTGTCGCGTCGCGGCTCGTGAT -TTTCGCATATTTATCGACACTTGCGTACGCCAGGTATCGATTCAGATTCC -GTGAGTTTTTGCAACAAAAAAATCGCTGAGCAATCGCGCTCCACTGGAAA -ACACCCGAAAAGTTTTGAAATTCCGGGGTTGCCGCTTGTTTTGCGCGCTA -GAGCGCGATTGCTCGCCGAGTTCAAACGGCGCTCTCTGGTTTCCCTCTTG -TACGAGACGAGCGTCGCGGTTCGGTCCAGCAGGCGATTGTCAATGGAGCG -CGAAAAACACGTGGTGTCAAAGTCTCCAATTATGGTTTGATCTTTGATAA -ATGCGGGAGACGAGAGACACCGACTTCTCAACTGATTTCGCATGGTTAAA -AGTGTTCTGACGTCACATTTTTCTGGAAGAAAAACTCCCGCATTTTTTGT -AAATCAAACCGGATTAGGACAGCCGGACACCACGTGGAAAAACAAGATGA -GGGAAGCCACAGAAGCCCGTGCAGAGTCTCGGTTTTATCAGTTTTCGAGT -AGTTTCGCACCACAAAAAGCGTGTGACGTCACATTTTTCCGGCCGCAAAA -TTCCCGCGTTTTTTGAAGATCAAACCGAAATGCATTGTTTCAGAATCTAC -TCTTGGGCACGTCTCTCGTTCATTCACCTCGGTTTCGGTATGGTAGTGAT -CGTCAACGCCATCGTTTTTTTGTTCTTTTTCAAGTATTTCAAGAAGTTCA -ACTCGACGGTGAAGAATGGAGATCAGAAGCAGGAATCGGATGAGACTGAT -GAGAAGACTGAGAAGACTGAGAAGCAGGCGAAATAGAACTTTTTAGTCTA -TCTGTGTTGAAATAAAGGAATTGAAAAAAAAAAAAAAAAAAATTTTTTTG -CATATATGCATGTGGTGTCAGAGTGGATTATTTCGGTTTGATCTACGTTG -ATCTACAAAAAATGCGGGAACTGATTTTGCATGGTTAAGAACGTGCTGAC -GTCACATATTTTTTGGGCGAAAATTCCGGCATTTTTTGTAGATCAAACCG -TGATGGGACGTCTGGCATCACGTGTACATGTAGAAATGAGATACAACATG -TTATGTACCGTTATCCTACAGTACTATAGGTGAACCCCTCAATTTTTGAC -CTCCAAAAATTGCGGGAATCTTATAGGTCAACTTGCAGGGGGTCGTGGAC -ATGAATAAGCCAAATTCAAATTATTCAAGCCAAAAAGATGATAGCGCAGA -CACGTGCCCCCAATTTCGGTTTGATCTACTGTGTAGATCTACAAAAAATG -CGGGATTTAGGACGCTGAGTTCTCCACTGATTTTGCAACAAATTCCCGCT -TTTTTGAAGATCAAACCGGACAACCTGACACCACGTGAAGGAATAAACCA -CGCTCTTTTGCCAAAATCTTAAGAGTTTCTACAATTTCAGTGAAAATCCA -GTATTAGATTTGATATTTGAAAAAAAAAAGTTAAATAATGGACGCGGCCT -AGTCTTTCCTCTTCTACTAGCAAAACGCCCTGTTTTACAAAAAAAATCTA -TAGTTTCTGAAAAAAAAATCAGTGGCAAATGTCTACAATTTTCAATATTT -CATACTAAAAAAATCACAAAAAATTATTTTATGGCCGCGGTCGAGTTTTT -TACTCTTCCACGTGGTTTCAGAGTGTCCAATTTCGGTTTGATCTACCGTG -TAGATCTACAAAAAATTCGGGAGTCGAGAACTGATTTTGCATGATTGCTG -ACGTCACATTGTTTTGGGTAAAAAATTCCCGCATTTTTTGTAGATCAAAC -CGGACAGCCTGGCACCGCGTGCGCAGAGAAGAAAAAGCTAATGAGCACGC -GGTGTCAGGCACGGCTTGATCTACAAAAATTGCGGGAATTTTCAACCCAA -AAATATGTGACGTCAGCGCGTGCTTAACCATGCAGAATCAGTTCTCAACT -CCCGCATTTTTTGTAGATCTACGTAGATCAAACCGAAATGGGACACTCTG -ACACCACGTGAATGAGCCAATTGAGCAAAAATCGTACTGAAAGAGATCGT -TTTATTCGCGCAGAGGTTAGTTACACGAATTGAATAGAAAAAATAATGTT -TTGCAAAAAAAAAGTAATGTACATACTCATGGAAATAAATTTATTATGGG -GGAGCTTGATTATTACAAGTCGACGAAGAGCAGCACTCCTTCTTCTCCTC -CTTTTCCTTCTCTTTTTCCTTTGGAAGCTGCGGAGAATTCGACTCGGATT -TCGACATTAGACGGGAGCTGGAGCATCTGAAAAAAAAACGCGAAAAATGG -TAGATCACACGTTTTCCAACCTATTACCTTCTCAAACTAAGACTGGAGAA -GAGCGGTGTACACTTGAGCATGTCCTTCAACTGTATCGACTCGTAGTTTT -CGATCGATTCCTGGAACTTTTCGATCCACAGCTCCTTGTCCGCCTTGTCG -GCGGCTTGTAGGGTGTAGATGCCGACGACTTGGTAGTAGCGGGTTAGGTG -AATTATGACGAACGCGAATTTTAGGGACACTGGAAGAGGAACACACTTAT -AGTGACACTACAGTAGTCCTAGAAGGTATTGGTAAGGTACTGGTAAGGTA -CTGACTGCGCTAATTTTTGTACGTTACACATTTTCCTGGAGTTTTGCAGA -CCTTCAAGAAAATTCTAGCACTTTCCAGATTTTCTCCGAAAAATTCCTGC -ACTTTCCAGATTTTTCCAGAGAATTCCTGCACTTTACAGATTTTTCTAGA -AAATTTTGTTTTTCTCAGAGTTTTTCCTATAACTACAGTAATCCTACAGT -ACCCCGACCATATCGCCCCTACCAACATACAACCCAATATTCCATCAAAA -GACAAAAACTCAAATTTTCCCGAACTACAGTAACCCTACAGTAACTCTAC -CGTATACCTACCGGGCCCCTACAGTACTGCTGCAGTACCTTGACATTATC -CCCTACCAACATACAACCCAATACCTCTTCGAAAGCTGGGAACTCAAATT -TTCTATAACTACAGTAATCCTACAGTACTTCTACAGTACCTCTACAGTAC -TACTACAGTACACCGACCATATCCCCCACTAACCCTAAACCAATATTCCT -TCAAAAGACAAAAACTCAAATTTTCCCAAACTACAGTAAGCCTACAGTAC -TCCTACAGTCCCCCGACCATATCCCCCTACCAACATACAGCCCAATATTC -CATCAAAAAACAGAAAAAACTCAAATTTTCCAAAACTACAGTAACCCTAC -AGTACTCCTACAGTACTCCTACAGTACCTCTACAGTACTCCTACAGTACC -TGGACATCATCCCTCACCAACTTCCAATCTAATACCTCTTCAAAAGCTGA -AAATTCAAATTTCCTATAACTACAGTAGTTCTACAGTACTCCTACACTAC -CTCTACAGTACCACTACAGTACCCCTACAGTACCCCGACCATATCCCCCC -ATTGACTCTAAACCAATATCCCTTCATAAGCACACTACAAAGACTACGTG -GACTACAAACTATGTATGGTCAGACGGATAGTTTTTTTTAATATAAGAAA -TGATGATGAACTATATATACTACTATATATACTGACACTGATTCACCAAA -ATTAGCGACTCTGGCAATTCACCAAAGATAGGGTACGGTACTGGTATGGT -ACTGGTACGATACTAGACCCCAGTTCTTTAATACGATTCCCTAAAATTGC -TCACTCGGCGTTGCCTGGTCGTTGGAGTCCGCATCACAGAACACGCAAGA -ATCCAACGGTACCGGCTGTCGTTGGACGATGTAGTGCTCGGATTTCCCGA -TTGGGACTCCTTTCTGCAACTCTTTCAGTAATAAAACAAGTAATAAAACT -TCGCGGGACTCCTCACCACTTTCAGCTTCGAAGCGCACTTTTTAGTTTTA -GTCAGCACAAACATGTCGTTGAATAGAAACGCGTACATATCAACGGTCCG -CCCGTTTTCCACAAGCTCGAGGGGGCCTTCGTGGATAAGCTTTCGACGCG -GATGAGCCAGAAGGTTCTCGCAGAATTGACGGGATAAGGCGACGCGGAGG -AACTGGAATTGTAAAAAATCAAGGGAAAATGTTGCAGAGAAAACAAATGT -TTCAACTTACATCAGGGACATAAGACTTGGGCTCCAAGTCGCTTATATTC -GGCCAGACAACCTGTGTCTGCAACTGCTGAAGCCTCTCAAAATTATGAAG -CCACTGCACACTATCATCAATCGATCGGAGTGATTCCGTCATTGTGTCGA -TCACCTTCTCCACCTTTCCCTTACTCTCCTCTTCCTCCGATCTTTTGTGA -ATCTCGCGGAGAAGGATCGGAAGCCGAGTGATTCGTTGAAGCGGTGCGAT -CAAAAGATCCTCGAGCTGTAGACGGAAGCATCGTTCATCGGCCAGACATA -TCCGCTCGAATTCCGTGAATCGTTCCTCTTTCTGTCGAATTGAGCCGAGA -TATTCCATGGTTGCCTTGTAGTTGATGCAGTAGGCTTGGTAGGCCGAAAT -TGTGGAGGGGCCTTTGGAGAACTGGAAGTTTAGAGTTATAACAAGGCATA -GTCTCAAGCTATTTTCCAGCCTATCCAAGCTGTGGTCCTGGTGCTTAACA -GTCTTGATTTTTTAGAGCTGGAAAACCGGACTAATCCGGACTACGGAAGC -CTGGTTTTTGTCTAAACGACAACATTGTGCAACAAGGTACGCTTTTTCAT -ACTACTTTTTTTTAAACTTTTGTTTTTTTTTGTTCTTTTTCGGCCAGCTT -TTAGGAACTTTTTTGACCCAACTTCGAAATGTCCCTTTTTTTTGCAATTT -TAGGAATTTCTAGAAATTTCCCATTTTCTCTTTTTCCAGCCCCTTCTAAA -CCTAGGCCTAGGCCTACGCATAAACCTAAGCCTACGCCTAAACCTAAGCC -TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA -AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCTTAAGCCTGAGCCCAAG -CCTAAGCCTAGGCCTAAGACTAAGCCTATGCCTAAGTCCCAGCCTTAACC -CAAGCCTAGGGCTAGTTGAAAGCCTAAGCCTAACCCAAACCCTAAGCCTA -AGCCTAAGCCTAAGTCCAAACTTAGGCCTAAGCATATGTCTAAGCCTAAG -CCGAAAATGTCCCTTTTTTTTGCAATTTTAGGAATTTCTAGAAATTTCCC -ATTTTCTCTTTTTCCAGCCCCTTCTAAACCTAGGCCTAGGCCTACGCATA -AACCTAAGCCTACGCCTAAACCTAAGCCTAAGCCTAAGCCTAAGCCTAAG -CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCT -TAAGCCTGAGCCCAAGCCTAAGCCTAGGCCTAAGACTAAGCCTATGCCTA -AGTCCCAGCCTTAACCCAAGCCTAGGGCTAGTTGAAAGCCTAAGCCTAAC -CCAAACCCTAAGCCTAAGCCTAAGCCTAAGTCTAAACTTAGGCCTAAGCA -TATGTCTAAGCCTAAGTCTAAACCGTAGCCTAAGCCGAATCCCAAGCCTA -AGCCTAAGCCTAAGCCGACGGAGCACGAGGAGAAAGTCCAAAACTTCACA -AAAAAACAAACATTTCTCTCAATCTCGGTCAGTTTTCAAAAATATTTCGA -GTAATTTTTCAGCACAAATAACAAAAACCCACCCTTTCAAACAAGTCCAC -AACTAGCTGTGTGCAGTCCCAATTCTCCTTGTCTACCGTACTGAGCAACG -AGAGGAACGATTGACAGAAGGTTCGAGATATTCTGACAAAATAAAAATGT -GTGTGTGTGTGTGAAATGGCACGTCAGATTAAAGGCAAATAGAAAAAAAA -AACCAATTAAAAACTGAACGAACCTGCAGAGTTGATCCAAATTTCCGAAA -AGGAGGTCCGGCTCGACAAGCAGTAGACATCCCTCGACTTGACATCTCTT -CAGCGGCTCCTTGTAAACATCGCGGAGCACGAAGAGCTGACGATAGAGGA -AGACGAGCTCCGTGTGGAACAGCTCCCATACCGCTTGAAGGTATTTGTGT -TTGGATGAGGGAATTGTCGTGGTCTCGTCTCCCATGAACATTTCCTCAAA -GGATACTGGCTGAAAGTTGGATTTTTTTTTGGTATTGGAGCTCGTCTCTG -GGCTCGTTTTGCAGTTTGTACCCTTAAAAAGACATTAAAAAGACATCAGC -AACAAACTCCAAAATCCCAAGTAGTAAACAGATTTTTTCTAAAACGGCAA -AATTGAGTGAGGAATTTTTATTCGATGCACCATGTTTCTCACTCAAATTT -GACTACTCATAACTTAGTTAAACCTAATCCAATACTTCCTTAAAAGCTAA -AAATTCACATATTCCCAAACTACAGTAAACTACAGTACCCTACCGTACCC -CTACAGTACCCCGACAGTACCCCTACAGTACTTTGACAATATCCCCCATC -AACTCCCTACAAAATCATCAAAAACAAAAAATTCACAATTTTCAAATCTA -CAGTAACCCTAGAGTGATCCTACAGTATTCCTACAGTACCACTACATTAC -CTTGACATATCCCCCACCAATTTCCAACCAAATACCTCTTCAAAAACTAA -AATTCACATTTTCCAAAACTACAGTAACCCTACCGTATACCTGCAGTACC -ACTACAGTACCATTAAAGTACCTTGACATTATCCCCCACCAACTTCCAAT -TAAATACCCCTTCAAAAGCTAAAAATTCAAATTTTCCCGAACTACAGTAA -CCCTACCGTATATCTACAGTACCCCTACAGTGCCACTACAGTACCTTGAC -ATTATCCCCCACCAACTTCCAACCCAATACTCAATCAAAAGCTAAAAATT -AACATTTTCCCAAACTACAGTAACCCTACCGTATTCCTACAGTACCCCTA -TAGTTTCACCTACCAACAACTTTTCCAGCTCATCATCCTCAATCTCATGA -TCCTTAGAAGTCTCCAACGCGGCCTGCACATGCTTAATAATCTCCCTCCG -TTTTGCTCTGCCCGACCACTCGTAAAGTCTCTTCAGAATCCAGGGCGATC -GATTTTTCTGCGGCTCGGAAGCTTCTGCATAGAAGGCTTGAGAGGCTATT -GTGGCACGTTGAAGATCTGAAAATGAAGAATCGGTGGGGATCAGTGGTGA -CAGCGAGGGAGAAGATCTATTTGGTGGGGTGGCACATATAGAAGTGGGTA -GTAGCGGTTTTTTGTGTGATCTTTGTGTAAATAGACATGATATTAGGGCT -TCCGTGGTAGGCAGGTGCGGTTTTAGGGCCTGGCGCTTGCCTGACGCCTG -CCCGTCTCACGCCTGCCTGGCGCCTTTTATTCTGCATTTTGAAGTGAGTT -TTCAAATTTCAAATTTTCTCATTTTTATCATTTTGTTGAAAATCAAATTA -AGAAATGAAAAAAAGTTTAAGTAGGTTTCAGCATCAGGCGTGTATTTAGG -CGAGAGGCAGGCGGGGGTCGCCTCAAAGTCAGGCAGGCAGGCCTTCTTAT -GCCTACACGGAAGGTGTTCAAAAATCGGTTGCGTGTGTCCAGTAATGACA -AGAATCATACAAAGCATTCGACTTTTACACAAAACTAGTCTGTATTCCAC -CTGTACAAAAACCTACCGATCGATGTGATTTTATTTGAATCTGAAAAAAA -AATTTCTCAGAAAATTTGAATTCCCGCCAAAATGTTTCTTTGAAAGTTTG -AATTCCCGCCAAAAACATTCTCAGAAAATTCAAGTTCCCGCCAAAAATGT -TTCTTTGAAAATTTGAATTCCCGCCAAAATTTTTCTTTGAAAATTTGAAC -TCTCGCCAAAATGTTTTTTTTTTGAAAATTTGAATTCCGATAAAAAACTT -TTTACAGAGAATTTGAATTTCCCCCTACAATTTTCACAGATCTACTTATA -TATATATATATATATATATATATAAGTTGAACTTTAGTTTTCAAAAAAAA -ACCGGTCATTTATTAAAGCACGTGGTGTCAAAAAATATTTTTTCGGCTTG -ATCTACGCCGATCTACAAAAAATGCGGGAGAAAAGACGCAGAGTTCTCAG -TTGATTTCTCATGGTTAAGAAAATTCCCGCATTTTTTTGTAGATCAAACC -GTAATGGGACAGCCTGGCACCACGTGCTAAAGTTATAGTTAATTTACAAG -TCCTGGTTGGACCTGCAGGATGTCAGGCGCTGAAACGTGTTTCAGGATAA -AGTTGGTAAACTTTTATAACCAAGAGGAAAGTGTTATCGATATTTTGCTA -GTTGAACATTTTTTTTTGCTAAAAAGTAAGAGTATTTGAGCCAGGCGTGC -GCGGCGATCGGTAATTTCCGAAAATCGGCAATTTCGGCAATTGCCGGTTT -TGTGAATTTTTGGCAATCGGCAATTTTGGCAATTGCCGAAATTGCCAAAA -ATTCGATTCCGCACACTCCTGCTTTGAACTGTGCATTTCCAAAATCCAAT -AGAAATTCTGCCGACACTGTAAAATCCCTACCTGCCAACAATCCTCCGCC -GGAGCTGATTGCCCTATTGAACAGGTGACTCTCGTTAGGGGATATTTGAA -CATGTGGGACAATGATCACATTGTCCGACGAGCAGCACCCTTGGGATGAG -GTCTCCTGATTCTCACTTGGCTGATCAGGAATGATTGCATGGCGACGGGA -AAGTTGCTCCTTGTTAGGGTGAATTGTTTGGGGCTCTCCTTCTTCTGGCT -GGAAAAATACAATTTTTTGAAGTTTTTGAAAGAAAGCTTGTCATTTTTTT -GTTGCTATTTTTTACCCTAAAAATGTGGTTTCAAAATTTTTTTACCTCTG -AATATCTAATCAACGGGGTGAACAACTGCAGATCGACCATACTCGAGCTT -CTAAAAGTTTGAAGGAAGCTTCTCGTGAAGCACGAAAAAAAAAGAAACAC -GAAATAGTTACCCTTACAATTATCAGAATAGGATGGGATGTACAGAGAAG -TAAATAGGAAGAGAAATGAGAAGAGTTGCACTAGAGAAGTATGTACAATT -AATAATTTATGAGCATCTGAGAAAATGAGAGCGACTTGAAAATCTGAAGA -GCAAGGAAGATAAAACTCGGTCTCTTATCAGAAAATTTGAATTCCCGCCA -AAATGTTTATTGTTTAATTTGAACTCCCGCCAAAACTTTTCACAACGAAT -TTGAATTTTTCGCCAAAATTTTTCTCAGAGATTTTGAATTTTCCCGCCAA -AAGTTTTACCAGAAAATTAAAATTCCCGCCAAAACTTTTCACATCGAATT -TGAATAACCCGGCAATTTTTTTATCAGAAAGTTTGAAATCCCGCCAAAAT -TTTTCACATGAAATTTGAATCTTTCGCCAAAGATTAAAATCGTTGGATAA -TTTTAATTCGCGGCTGAACGTTTCCAATTCGAATTAAGACCGGCCAAAGT -TTTTCGGGGTTTTTTTTAAAACTTACTACAAAAAAGCATACATTTATTTT -CCTAACTAGACGCCTTACTAGGTAAAACCCGCTTTTCACATCAAAAACTT -CAACAATGCGTCACCGCCAAAAGAGATTCTTGCACTTCACCACGAATAAT -AGATCAGAAGGAAAAGCGTGTAGTGAGTTGAGAATTATAACTAATTCATA -TCCCCCGAAAAAAAAAACGCTGATGTCTATATTCTATACATGGTGAGAGC -TCACCGAAGAATAGACGGGTAATGAGATATATATGTGATACATAAATGTG -TGCGCCCGGGTATCCGAGAGCCGAAAACAGAAGCATGGAATGGAGCAACT -AGGGAAAATTGTGTTATCACGAGGCACGGCGGGAGACACAATAATATGAT -TTTTTTTCGAAAATTTTCCATTTTCACGTGGTTGTCCCATTACGATTTGA -TCTACCAAAAACGCGGGAATTTTTCGCCTAAAAAAATGTAACGTCAGCAC -GTTGTTTACCATGAGAAATCAGTTGAGAAATTAGCGTCTCTTCTCCCGCA -TTTTTTGTAGATCTAACTTGATCAAGCCGAAATGAGACGCTCTGACACCA -CGTGACGAAAAAAAGTAGATCAAAATTTGGCAAGCCCTTATAAAAGTCCC -TTTTTCAGTTCTAGGCGGAGCTCAGTTTGACTGATGACGTAAACGCAAAT -CTTGAAATTTCGAATTCTCTATGGAAATTAGAACTTCCCGCCGCCGCCAG -ACTTTGTAAAGTTCAACAAAAAGATGAAATATAGAAAAAGTTCAGACTAT -GATAAGGAACTTATGACTAACGTCTCTTGAGGTGAATGAGTATGATGTGA -TTAGTGATGCAAGACGACTAGACCGAGAGAGAGAGAGAGAGAGGCTCAGA -GAGGGGGGAGGGAAGGTAGGTTTGTAGGTAGGCAAGCAGGTAGGCAAATA -GGGGGTCGTAAGTAGAAATTATGAAGGAACCTAGGTCGGCAGCCATAAGG -TAGGCATAAAGTAGGTCAGCATCCAAGTAAGTTAGACAGGTACGCATAAG -ATAGGAAGGTAAGTAGGCGCGGTGGCAAGGAGACTCAAGGCAAAGTAGGA -CAGGAAGTAGGCAGTAGGTAGGCACGATGAAGGTAGGTGGGTAAGCTTGT -AAGAAGGCAGCCATAAAGTATGAACGTCGACAGTAGGCATGCATTTAGTA -GGTAGGTATGAAATAAGAATTAAGGTATGCATAAGGAAGTAAAGTATGAA -TGATGAAGCCATGTAGATACAGAAATATCAGGCAAGTAGACAGGCAGGCA -TAATATAGGAAAGTTAGCAGTAGGTAAGCATGTAGTAGGTACGTGGGTAG -GCATGTAGGTAGGCACGTGGTAGGCTTATGGTAAGCAGAACACAAGCACA -GAAATATGCATATTGGCAAGTATGTAGGCATGCATAAGATACAAAAGTCG -ACCAGGCATGTAAGTAGGCACATAGGTAGGCAGGCTTGAGGCAGCAATGT -AGGTGATCTCGTAAGTAGGTATGAGTAAGGAACCTAGGTAAGTCACAGGT -ATTTGGCACAACCTGTGTTCTTCTCAATGGTAATCAGGCGAACGTGCCTG -CCTGCCTACCTAGAAATTCGGTAAAAATTGTGGAAAAAAAACTAGGGGAA -CCTCTTCCCAATGGAATGCGTAATGTGAGTGGGAGGCGGCAAAAAAAGAG -CGGACGTAAACACTTTTTCCTAATTCTCTTTTTCTCTCGCTCGTGGAAAA -TGAATGAATATTTGATACAATTTTGTGGGTACAGCCAGCAGGAGAAGAAG -AAGCTGATGTCCCGACGCGCGCGCGCGAAAAAAACTTTCAATTCCCTCCC -CTAATTATCCGCCTAACGCCTAATGTGTGTCAAATTTACCATGTATTTTT -TTCTCCTCTCGGCTATGTTTTTTTTTCTTTTTCAGCAAAAAAAAGTACGG -GCACATGAGGTCGGGATGGATAATTAGGGATGTGTGCCAATTTGTTGGAT -AATAGACAAAAAAAGTACGTGAGATTTTTAGAAAATGCTGAGAAAAATAT -CACGAGGCGTTGGGGACGTGGCCGCGAATGAGAAAACTAGGCCACCTTCA -CAGGGCCCTGGCCTTCCTCATTGAACTTTTCGCGCTCTACTGACAAACGC -CCGTGTACTCCACACGGACAAATGCATTTAGTTTTGCAGCTAGAATCGAT -CAGCGACGCGACACGCAACGCGCCGTAAATCTACCCCAGATATGGCCGAG -CCAAAATGGCCTTGTTCGGCAAACTCTTCCATTTCAAATTTTTTATTCAG -TTTAATTTTCTAGGATACGCCTACGAGTGATCTAGGCCAGGCAGTAGGTA -GGCAGCCAGTGTAGGTAGCCCCCTTTTGGTGTCAGGCTGTCCCATCGCGG -TTTGATCTATCAAAAATATGGGAACTTTTCTCCCAGTAAAATGTGACGTC -AGCACGTTCTTAATCAGGCGAAATCAGTTGAAAAGTCTGCGTCTCCTCTC -CCGCATTTTTTGTAGATCAACGTAGATAAATACGAAATCAGACACTCACG -TGGTGCCAGGCTGTCCCATCGCGGTTTGATCTACAAAAAATGCGGGAACT -TGTGCCCAAAATTATGAGACGTCAGCACGTTCTTAATCAGGCGAAATCAG -TTGAAAAGTCTGCGTCTCTTCTCCCGCATTTTTTGTAGATCAAAGTAGAT -CAATCCACATTAAGACCTTCTGACACCATGCCCGAGAAGAGTTCAAAATA -AATTTCGTAGAACATAAATTTTTCCACGTGGATTTTACAGCACAATTGCT -TATAGAGCGCGGTTGCACCCCAAATTTTACAGGAAAAATAGGAAAATTTT -ACCAGATTTCCCGCGCAAGACACGAAACAAGGTCTTAAAAAGTGGGAGAG -CATGAAAAATCCTAAGAAAGTAAGAAACTTCTGGTTTACCACATAACTCA -AATTGGAGATAGTTCGACCTTAAAAATTTTGCACCAAAAAGGGCGGAGCC -AAAAACACCAAAACTTACGTGCAAATTTGTACATGAAAAAACTAAAAAGG -ACACCTAAAACCGGCGAAATATGAAGAAAAACGCTGAAAATGAGCAATGT -GTATCAATTTTTCCCCCGTTGCTTAATTTAATACATGTCTTCCTCTCCCC -CTTCCTTCCTGCTTCACACTCTTTCGGGCGGCGCCTCCTTTTGATTTGAG -ACTTGAGACTTTTTTTTTTGTGATGTGCGTTGAGTAGTGTGGGATGCATA -TATTATGAATCAAAAATCTGACATCAAAAATATCGCTGAAAAAATAGTTA -AAATTTGCTTTAAAACTGCCGTTTTTGATCTACAGGGTGCTTTGGCGCGT -TGCGGTCGCGTCGCGGCTTGGAGTTCTAGGCCACGGCCATTCAATTTGAC -ACTACTACAATCAGAAATATTTTGTAATTCTTAGGCCATCAAAAAATTTT -TAAGCCAGAAAACAAATCCGGAAATTTCTAGGCCATCAAGAATTTCTAGG -CCACATCAGACTACTTTGAAAATTTCTAGGCCACAATGGGAACTAATTTC -TGAACCTAATTTCTGAAATTTCTTGGCCACGATCTGAAATTTCGAAGCCA -TAATTTGAAATTTCTAGGCCACGATCTGAAATTTCTAGACCATCAACAAT -TTCTAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAAATTTGTAGGT -CAAGGTTTGAAATTTCTAAGCCACGATTTGAAATTTCTAGGCCACGATCT -GAAATTTTTAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAAATTTT -TAGGCCACGATCTGAAGTTTTTAGGTCATCAAAAATTTCTAGGCCACGAT -TTGAAATTTCTAGGCCACGATCTGAAATTTCTAGGCCACGATTTGAAATT -TCTAGGCCACGATTTGAAATTTTTAGGCCACGATCTGAAATTTCTAGGCC -ATCAAAAATTTATAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAAA -TTTCTGGGCCACGATCTGAAATTTCTAGGTCATCAAAAATTTCTAGGCCA -CGATTTGAAATTTCTAGGCCACGATTTGAAATTTCTAGGCCGCGATCTGA -AATTTCTAAGCCATCAAAAATTTCTAGGCCACGATTTGAAATTTCTAGGC -CGCGATCTGAAATTTCTAAGCCATCAAAAATTTCTAGGCCACGTTTTAAA -ATTTTTAAAATGTTTAAAATTATAGGTTTTCAAAAAAATTCTAGGCCATC -AAAAATTTCTAGGCCACGATTTGAAATTTCTAGGCCACGATCTGAAATTT -CTAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAAATTTTTAGACCA -CGATCTGAAATTTCTAGGCCATCAAAAATTTATAGGCCACGATTTGAAAT -TTCTAGGCCACGATTTGAAATTTCTGGGCCACGATCTGAAATTTCTAGGT -CATCAAAAATTTCTAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAA -ATTTCTAGGCCGCGATCTGAAATTTCTAAGCCATCAAAAATTTCTAGGCC -ACGTTTTAAAATTTTTAAAATGTTTAAAATTATAGGTTTTCAAAAAAATT -CTAGGCCATCAAAAATTTCTAGGCCACGATTTGAAATTTCTAGGCCACGA -TCTGAACTTTCTAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAAAT -TTTTAGGCCACGATCTGAAATTTCTAGGCCATCAAAAATTTATAGGCCAC -GATTTGAAATTTCTAGGCCACGATTTGAAATTTTTAGGCCACGATCTGAA -ATTTCTAGGTCATCAAAAATTTATAGGCCACGATTTGAAATTTCTAGGCC -ACGATTTGAAATTTCTAGGCCACGATTTGAAATTTCTGGGCCACGATCTG -AAATTTCTAGGTCATCAAAAATTTCTAGGCCACGATTTGAAATTTCTAGG -CCGCGATTTGAAATTTCTAGGCCGCGATCTGAAATTTCTAAGCCATCAAA -AATTTCTAGGCCACGTTTTAAAATTTTTAAAATGTTCAAAATTATAGGTT -TTCAAAAAAATTCTAGGCCATCAAAAATTTCTAGGCCACGATTTGAAATT -TCTAGGCCACGATTTGAAATTTTTAGGCCACGATCTGAAATTTCTAGGCC -ATCAAAAATTTATAGGCCACGATTTGAAATTTCTAGGCCACGATTTGAAA -TTTCTGGGCCACGATCTGAAATTTATAGGTCATCAAAAATTTCTAGGCCA -CGATTTGAAATTTCTAGGCCACGATTTGAAATTTCTAGGCCGCGATCTGA -AATTTCTAAGCCATCAAAAATTTCTAGGCCACGATTTGAAATTTCTAGGC -CACGATTTGAAATTTCTAGGTCACGATTTGAAATTTCTAGGCCACGATTT -GAAATTTATAGGCCGTGATCTGAAAGTTCTAGGTCATCAAAAATTTCTAG -GCCACGATTTAAAATTTCTAGTCCATCAATAATTTCTAGGCCACCAGAAA -ATTTGTGTTCACTTTTTTTTTTGGTTTTTGGTATGTATTTTTCAGAAATT -ATTCAAAATTTGTGGGAGCAACAATATGCTTTTTTAGTTTCTAGGCCACA -AAATTCTTTGGCCATTTTCACATTTTTTCCCGCCGCCAATGGTTCCACTG -GATAATTGAATGTATAGAAAAAAGGGAAGAGTTCAGCTGGCGCAAAAGAG -GGTAATTCGTTGGAAGGGAAAAAAATAAATGCAAATCTTCGCCAAAAACC -AATTTTCGGTCGGAGCTCGGCGCGGGCCGACACACACAAAAATGGAGCAG -AAGAAGACGTCAGAATCTTCTTTTTCAGAAGGCTTTCTCACTTTGAAAAT -GGGGTGTCCAATTTCTTGTTGCTAATTGTTGGATGGGGAAAGAATGATAT -TTTGTTTCAGGTTTCACACAACATCAGCCTAGACATTTTTTTTTTGTTTT -CTCCAAGAGGAGTACACACACTATAAATTGTTGTAAAAATCGAAAAACAC -GTGGAGCCAGAATTTCTTATTTCGATTTGATCTACAAAAAATGCGGGAGT -TAAAACGCAGACATCTCACCTGATTTCGCAAGAGCGTGCTGACGTCACAA -TTTTTTTGGAAAAATATTTCCGCATTTTTTGTAGATCAAACTGCAATAAG -ACAGCCTGGCACCACGTGAAAAATAGTATTCCTCTTGAAAAAGATTTCCC -GAATCAAGTTCCTTGAAAGGAGTACGCAAAATTTTGCAAAAAAAATCGGT -GGCCGAGTTTACTCTTCTGGCGGCCACGTAACAAAATTAACAAGGAAGGA -TAAAAAGGAAAAAAAAATTTTACTCGTAAAAAGGTACCAGGAAGCAATTT -GAGGAAGGAAGGAAATGTGAGTGTCTACTCTAATGATCTACCAGTTTTGG -TGGCCGCGGAACAGAGAAAGCTCGGCCCCCAAGTATTTTTTCAAATATCA -CGGATTTCTGGTTTCCCTTATAAGTTGAAATGGAAGAGTTTTTAAAGAAC -GAACTAGGCCATTTTAGCTCGGCTGGGGCAGATTCACGGCGCGTTGCGTG -TCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAAATATATTTGTCCGTGT -GGAGTACACGACTTTCCCACGAGTTTTCCGACAGGCGATTGTCAATGGAG -CGCGAAAAATTCAATGAGGAAGGCCAGAAACCCGTGAGATATTTAAAAAA -TATTCCAAAACTATTTTTATATTCAAAATTGGAAATTATACATACTATAA -GTATTTTCAACTACATACATGGCCGCGAAAAAAAAAAACTCGGCCACCAA -TTTTCGCGGTCACTTACCGCAGATCTCCATCGATCCTGAAGTCTTGCCGT -ATACAATAAGGGCATTTTTCGGATCATAGTGAATGAATTATTTCAGGAAT -ATTATTTCAAAGAACACACACCACACAAGAAATGTGAAGGGAAGGAAACG -GGGAAAAAGAGACAGGTGGAAAAATACATTTTCTCTATTATTTCGCTCTG -TTTCTGACTAGGAAATGAATCAGAATCAGTGATTAAGAAACTGGGAATTT -ACGAGGTGTTTAGGGAGATGGTGACCGCGAGGATGAGGAAAAACTCGGCC -ACCGCAAGACTTACCGGCTTAATCAATTGATTTCCTCGTATGTGATGGAA -CAATGTGAGAGCCGGAGCTTCACTCGTCATAGCTTTGTGTCTAGGTGGCT -CTCAAGTACTGCTGGACCTGAAAAACTGCAAATTTAATTTGAAATTTGGG -ATGCAAAAAAGTAGCAGCCGACACCTGCCGGGTTCCCGCAAGATGTCGGA -TGCTTCAATTGACCTAGTAGAATCGTTAGTGATCTACCGAGCAAAAACAA -GTATGCTTGCAAGAAAAAAAGGCGTGTGGCTCAAGTTGACAAATTCGACA -CTTTGGACACACGAAATTGGATGAGCCACACCACACCGGCTAGCTCAGAA -GAGCCCCTCCGACGTCAAGGACCCCATGTGCGCGCGCGAGCCGAGATTCT -GGCAACATGAGAAGCGGAGAAGGCGAAGAGAAGAGTGCTAATTTGAACTT -GTTGCTGCAGGAAAAATATCTAGGCTTAGGCTTAAGCTTGGGCTTAGGCT -TAGACTTATGCTCAGGCTTAGGCTTAGGATCAGGCTTAGGCTCAGGCTTA -GGCTCAGGCTTAGGCTCAGGCTTAGGCTCAGGCTTAGGCTCAGGCTTAGA -ATTGGGCTTCGGCTTCGGCTTTGGCTTGGCTTAAGCTTAGGCTTAGGCTC -AGGCTTAGAATTGGGCTTAGGCTCAGGCTTAGAATTGGGCTTAGGCTCAG -GCTTAGAATTGGGCTTAGGCTTTGGCGTAGGCTCAGGCTTAAGCTCAGCC -TTAGGCTTTGGCGTAGGCTTAGGCGTAGGCTTAGATTTAGGTTTAGGCTT -AGGCCTTGGCCTAGGCACAGGCCAAGGTTTCAGGTCACTATCACTTGCTC -CTAGGTGTGGCTGGGGAAATGAAATTCTAGGCCAGTGACGTCAAGATTCT -GGAAGAGTTCCGTTGACGCCACCAAAAGCAACAAAAACTTCAAATCTGAG -AAGATCAGAACAAAATGTACTGAAAGTACAAAAAGCCCGCACTTTTTTCT -CTATTAATACTACTCATTTGAAGAGTGGGGAAAAGAAAAATGTGTTGCAA -GAAATAATTCCGTGCGAAAAAAGTTTGAGAGGAATGAATGGAGCGGAACT -TTTTTTTTTGTTGGAAAATCGTAGGTGTGACGTCACTTCTCTTCCAACCC -CCAGGTTTCTAGGCCACTTAAGAATTTTGCAAAAAAATCACAGAGCAAAA -CTACAAAAAGGAAAGAAGAAATGTGCTCTTGGAAAATAATAAATATTGGT -TACGAAATAAAAGAGAAAAGAGAACGAAAAAAATAAAAAAGAAAATGGTA -ACCAAGGAGGAATGTGGAGAAGAGGCTCTTGTGAGCCCAGATATACCCAG -CAATTAGGGAGCGAGTACTACTGCCGGGAGATGACGTTTCGAGGATATTT -CTCACTGGAATGGAGGGTGGTGGAAGAGTTTTGTAAAGTTCTAGGCCACG -GGTTTTTTTGGCCAATGAGCATGGTGCATCGATGAAAAGCTATTGGGTTT -CTCGGCCACAATAAATTACAAAAACCTAGTACGATGGAGCACACTTGCAA -TAGAATTGCAAAAATTTATTTGAAAATTGAGAAGAAAGAAAATCAGGGGG -GCATAAATGCTCAACAGTGCAATCAAATTGTAGAAGAGCTTTCGCCCAAA -AAGCTAGGCCACGGAGGAGACCGCTGGAGAAAGTGACGTGTATATGGTGG -AAGAGTTTTCTTGTTTTTCTAGGCAATCTTGGGCGATTGCAAAAATTGAA -TTTATGAAAAGATGGCTTGGAAGAGCTTTCGCATAGAAAATCTAGGCCAC -GGCTAGCAATTTAATAGGGGATAGAAAACCGCGTCGGAAGATTATTTAAC -TTTTCCATAAAAATTAGCAAATTTAAGAGAGTTCAGATACTGATCTGGAA -GAGTTTTTGAGCAAAAAACCTTGGTCACGGCCAGCAACTAAAGTAGTAGG -GGAGATAGGGTACCCCGCTAATTTTTTATTTATTTTTCAAAGAAAGTTTT -AAGGTTTCGGGAAAAATTTTGATGAAATGGCTTGGAAGAGCTTTTGCCGA -AAAAACTTAGGCCACGGCCAGCAATCTAATGAGAGGGGGAGGGTTCCCCG -CTAAATTTTTTTTTTGATTTTTAAACAAAGTTTCATGGGTTCGGGGGAAA -ATTTGATTAATTGACTTGGAAGAGTTTTTAAGCAAAAAAAAACCTAGGCC -ACGGCCAGCACCCTAATGAGAGGGGGGAACATAAGGTACCCCGCTATTTT -TTTTTGATTTTTCAAAGAAAGTTTTAAGGTTTTGGAGGAAATTTGATTAC -ATGACTTGGAAGAGCTTTTGCAGAAAAAAACTTAGGCCACGGCCAGCAAC -CTAAAGTAGTATGGGAGATAGGGTACCCCGCGGAAAATTTTTAAATTTTG -GTAAACAACAATGGAAGAATTTTCCGGTTTTCTAAGCCATTGCATTTTTT -CAGCGTCACGGATTTCTGGCTTCCCTCATAAATTGAAATGGAAGAATTTG -CCGAACTAGGCCATATCTGGGGTAGATTTACGGTGCGTTGCGTGTCGCGT -CGCGGCTCGATTTTAGTTGCAAAACTAAATGTATTTGTCCGTGTGGAGTA -CACGACTTTCCCAGGAAGGTGATTGTCAATGAAGCGCAAAAAATTCTCAA -AAAAAATCCAGATTCCCGTGCAGCGTCGCAGGAGATCATTTTCAAGAAAT -CTGGCTCAAGAAGGATTCAGTAAAACAAGAAAAGAAATAAAAAAGGAATG -AAAGGTAAGGGTGGACAAGTCGGCGGGACAACTTGTCACTTGCCATCATC -ATCATTTTTCTTCTCCTCCTCATCAGCTTCTGCTGCTCCGCGAGCTCGCG -ATGACTCTTCTGAAATTCTAAACTTGGCCAACACAACGTCGGCAACGAGT -TTCGAATTTACACACACACACACATACGAAAAAAGCTCATTAATTGGAGC -AGGAGACGGAAGAGAGGGAGGAGAGGCTGCTCAATGAGTTAGAGAAGAGA -GAGAGAGAGAGAGACTGAAAGATGAAGTATAAGCAGAAGTCGTCGGGATG -ACAGAAGAAGGAGGAGAAGAAAACGTGAGAAGGGGGGATGTGGAGACAGA -AGGATATGTAAATATATTAGATTCAAGGATTACAGCAATTTTAAGGAGGC -AAAAAAAAACAACGATGCTCCGATATTTTTGGGGTTACTGTAGTTTTTGT -AGATACTTCCAGAAGTTATAAACAAATCCGAGTTTTTTAAAATTTGCCAG -AAGCACGGGTTCATTGAATTTTTCACGCTCCATTGACAATCGCCTGCCGG -ACAACGCGTGGGAAAGTCGTGTACTCCGCACGGACAAATACATTTAGTTT -TACAACTAAAATCGAGCCGCGACGCGACACGCAACGCGTCGTAAATCTAC -ATATATGGCCGAGCCAAAATGGCCTAGTTCGGCAAAAACTCTTCCATTTC -AATTTATGATGGAAGCCAGAAATCCGTGCAGAAGTTTCTCGGAAAAAAAA -CAGAAAGTTTGCGAAATGGCAACCTCTAATTCATTAACATAAATACATCA -AATATGACGCGCAAAAATGAATTAATTTACTAGTGAAACATGGTGCATTG -AAGTCGGTGTTTGCACAATTTGTACAGATCTGAGGTTCACTAACACCAAT -GCACGGCCCGAGAAGTGGTACCTGTACGCAATTTGTCTACCGTATACCTG -GACGTTTGGGCGCGTGTATCTCAAAAACGGTTGGTCCAGTTTTTTTGTGA -TGCATATAAAAAATGTCCGAAATTAAATTCTAAATTTTTTGGACCAAAGC -TTTTTTCGTTATCACGCGCCCAAACCTGGTCTACACTCAAATTATCAGTA -GAGCGCATTTGCATGGATGTACCACTTGCCGGGCCGTGTTCAAAGGGGTG -CAACGATTGCGCGTCAAATCGAATGCAACTACAGTAATCCCTAGTAGTTG -CGCTTCAAATTTGATGCATTGCACGGCCCGGCAAGTGGTACATCCATGCA -AATGCGCTCTACTGATAATTTGAGTGTAGACCAGGTTTGGGCGCGTGATA -ACGAAAAAAGCTTTGGTCCAAAAAATTTAGAATTTAATTTCGGACATTTT -TTATATGCATCACAAAAAAACTGGACCAACCGTTTTTGAGATACACGCGC -CCAAACGTCCAGGTATACGGTAGACAAATTGCGTACAGGTACCACTTCTC -GGGCCGTGTTGAATGTTTGAGAAATGTTAAAATTTTGAGTTATATGTGCT -GGAAAATTGACATGAACATGGTTTTTTTCATTATTTGCGCGTGAATTATG -GTGCATTGAAGTCGGTGTTTGCACAATTTTTTTCAGATCTGAGGTCAACT -GACACCAAAGCAACAGAGTTGACGCGCAAATTTTAAAATGCGCTTAACAT -TTGGCACGCTTTGCAGTCGGTGTTTGCACATTTTCGATTGTTGTGTGAGG -TTCACCGACACACCAGATTTGACGCGCAAAATTGTACGAAAACAGTTAGT -TAGAAAACTAATAAAAACTATTAATAAAAGTATAGTGCATCCTGAAAAAT -TATTTCTGCAAATGTATCTATAGAATTTAAAACAAAATATACAAAAAAAA -ATTATGAAAACCACGACGAAAAACCCGGAAATGTTTTTTGGGTAGCTTGT -CGATTCCGGAGGGTATTGAATTTCGCGCTCGAATAATATTGTTTCCTATT -CATTTTCCCCAGAATACCTACAGAATTTGGGGGAAAAATATGAACTGGTA -CCTAACATTAACCTACACGTTTTTTAAATAAGTTTAGGCCACGCCCAGAA -AGTAGCTGGGCGGGGTTGCAGATTTTTCTAGCTTTCCGAAATATAAAAAG -TCGGAAAAAAAGTTGTAGTCTGTAGTTTGTAGTTTGTAGTTTGTATCAGG -TTGTCCCATAAGTTTTTGTACTTTTTTTCAAATATTTTTCCAAAACTTCT -AGAAAGTTTTAAAATTTTTTCATCGTAGGTCGTGTCAAGGTCGGGTCGTC -CCCTTTCAGAAAAGATTCATTTCATCCATTTCTACTTTGCCACGATGACA -ATCATCAAACTTGAACGTCGAGACGTTAGATTGCTTCTTCTTTATGAATT -TCGTCTTGGTCATTCAGCAATGGAAGCGGAACGAAACATATGCGGTGCGA -TGGGTGAGGGAGCACTCTCTTATAATACAGCAAAGAGTTGGTTTCAAAAG -TTCAAGAACGGCGACTTCAGTCTCGAAGAAATAGAACGTTCTGGGCGACC -GGTAGAGTTAAATGAAGAAGACCTAGTGAAGCTGGTGGAGGAAGAGCCTC -GTCTTAGTCTTCGTGAAATGGAAGAGAAGCTTGAGTGTTGTCATAGCACA -ATTGCACGTCACTTGGGTCGCCTTGGTTTTACTTCAAAACTTGGAACTTG -GGTGCCTCATGAACTTTCGGCATCACAGAAGCTCACTCGGGTCAACGTTT -GTACTCAACTTCTAACTTTTCGTCGAAAGTTCGATTGGCTGAACAATCTG -GTTACTGGAGATGAGAAGTGGGTGCTCTATGTTAACCATTCCAGAAAACG -TCAATGGCTTCCGATCGGTGAGAAAGGAATACCGACGCCAAAGCCTGATC -TTCACCCAAAAAAGATTATGATCTGTGTCTGGTGGGGTGTTCAAGGACCC -GTGCACTGGGAATTGTTGCCAACTAATAAAACTATCACTGCTGATTACTA -TTGTGCCCAATTGGACCGAGTTGCAGAAAAGACCAACGGAAAATATGAAA -AACTATATTTTCTTCACGATAATGCTAGGCCTCATGTCGCCAAGAAGACT -TTCCAAAAGCTGCAAGATCTTGGTTGGACTGTTTTACCGCATCCACCATA -TTCTCCAGATCTTGCACCAACCGACTACCATTTGTTCTTGTCTCTCAGTG -ACTACATGCGCGACAAGCAATTCGACGACGAAGAGCATCTCAAAACTGAA -CTCTCCACTTTCTTCTCATCGCGTTCGCCGGATTTCTTCTCCCGTGGCAT -CATGATGTTACCTAGTAAATGGCAACAAGTGGTGGACACTAATGGTGAAT -ACTTGTGTGAATAGTACTACTTGTCGCTTGAGAGAAATAAATTTTTTTCA -AAAAAAAAATAGTACAAAAACTTATGGGACAACCTGATAGTTTTAGTTCG -TTATTTGCAAATTGTTAACGTTAGTATTAGGAGAGCCGAAATAAATAAAT -TTTAGAAAAGAAAACGAAATTATATACATAGTTCATTAAAATGTGGTAGT -TTGTAGTTTGTAGTCTATGTATTATGTCTATTCAAATTGTATTCAACATC -AAAAATTAAACAGGAAACTTATATTTAAAAAAAAAACGAATACTGAAAAA -AGGCGGCTGCATAGGAAAAAACAATGATTCTCCTCCAAAAAATAGAATTC -CGCATTTTTTCAGCGGCTATTTTCACGATGATGAGAGGAGACAACAAAAA -CATTTGAGATGAGAAATGAGGGGAATATTGCACAAAAATTGGGAAATGAT -TTTTTTTACTTTATACACAGTTAAAATGCGATGCGCGCATAGTGTTTTTG -GCGTGGATCGCGAGTGGGAGAAAAAGGAACCGGAAATGATGCGCATTGTG -CGTCCATCGCGAATTTGAGATGCATTGTGCGAGCATCGCGAACATAAATA -ATGGGCACATTGTGGATTCTCCTTTCTGATAATATTTTACTCTCTATGGC -TTCACCAATTATCTTTCTCTCTGTGGCTTCCCACTATATTTTACTCTCTG -TGGCTTCACCAATTATTTTACTCTCTGTGGCTTCCCACTATATTTTACTC -TCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCACCAATTATTTT -ACTCTCTGTGGCTTCCCACTATATTTTACTCTCTATGGCTTCCCACTATA -TTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCAC -TATATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTC -ACCAACTATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGG -CTTCCCACTATATTTTACTCTCTGTGGCTTCACCAACTATTTTACTCTCT -GTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTATATTTTACT -CTCTGTGGCTTCACCAACTATTTTACTCTCTGTGGCTTCCCACTATATTT -TACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTAT -ATTTTACTCTCTGTGGCTTCACCAACTATTTTACTCTCTGTGGCTTCCCA -CTATATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTT -CACCAACTATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTG -GCTTCACCAACTATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTC -TGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCACCAACTATTTTAC -TCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTATATT -TTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCACCAAC -TATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCC -ACTATATTTTACTCTCTGTGGCTTCACCAACTATTTTACTCTCTGTGGCT -TCCCACTATATTTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGT -GGCTTCCCACTATATTTTACTCTCTGTGGCTTCACCAACTATTTTACTCT -CTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACTATATTTTA -CTCTCTGTGGCTTCACCAACTATTTTACTCTCTGTGGCTTCCCACTATAT -TTTACTCTCTGTGGCTTCCCACTATATTTTACTCTCTGTGGCTTCCCACT -ATATTTTGCTCTCTGTGGCTTCCCTCTATATTTTACTCTCTGGCTTCACA -GTATATTTTATTCTCTGGCATCACAATATATTTTACTCTTTGGCTTCGCA -GAATATTTTACACTCTGGCTTCACAGAATATTTTACTCTCTGGCTTCGCA -GAATATTTTACTCTCTGGCTTCGCAGAATATTTTACTTTTTGGCTTCACA -GAATATTTTACTATCTATTAATCTATTTCTTCGTATAACAATCTATTTTT -TCGTATAACAATCTATTTTTTGTATAACCAACTTCAAACTCAACTTTTCC -AAAACTACAGTAACCCTACAGTAATTCTACAGTACTCCTAAAACTCCCCG -CAACCTGCAGTTCAATGACACCTCGTTTTCTCACGCGTGACTCATGACTC -ATTAGCTTACATTTCCTTCATCCATCGGTGGTGGGGCGCTGTGTAATATA -CAAGAAGAGACACCACCACACGCTGCTATTTCTGCTGCTGGTCTGTCTTC -GTTTACAGCCACTTATGACTCAGCACTGCCATCAATGACTACTTCCTTCT -TTTTTATCTTTTCGGCTTCATCTCGAGTAGCAAATTTAACAAAATTCAAT -AGGTGTGACGTCATCAAATGCCTTCGTGGCCTAGAAATCCAAGATTTCTC -TCGAAAGGATCAATGTGATGTCATGGCCTAGAAAACTCCAGTGTGAAACC -TAGGCTATGTTAAATAGTCTTGAAAACTCTAAACTGAAGCACATAAGGCT -ATGATGTCATCGCCTAGAAATCCCAATTCTATGACGTCATGAAAGACCTG -AACTGCACCGAACCTAGGAATACCCTCAAAAGGGGTGCTGTGAAGTCATG -TCCTAGAAAACATGAGTGCGAAAACTAGGCCGTAATCTACCATGTGGTAG -ATCATGCGGCCCTATTGATGGCCTAGAAAACTTACAGCTTGAAGCTATGA -CGTCACGACCTAGAAACTCAATAGTTGTGACGTCATCAATGACCTAGGTG -TATCTCGAATGACGCAGTGTCTTCTAGAATTTTCTGAATATCACACAAAA -GTATAACATCTTCTTGAAACCAAATAATTTTGTTGTAACACCCACACAGT -ATTGTAACAAATGATATAATAGCGATCGGAACATTCGAGAAAACTGGAAA -TTTGAGGTCTGACCTTGTTCGGGAAACTTACCAGTGATTATGAGGTGTGT -CGAAAAATGTGGCCTAGAAAATGGGAAAACTCTTCCTTTTTTTTTTTAAG -TCCAGAATTACGTTTTTGAGAACGAGAAGTGCATTTCATTTTTGTTAGGT -TGGAAATTTAAAATTTAAATATTCGTCTCCTAGTTACAGCCGTGGAAGAC -TTTTTCAGAAACTTTAGCCACGTGTCGAAGTCTGGCGGTGCCCACGATAT -TAGAGAATGTTGATATTTCCTATTTACTTATCTCCTCGAAATTTTAAGAT -TAAAGTTACTACCGTTAAGTTACACTGGTGGAAGAGTTTTTAAGATTTCT -AGGCCACGGCAAAGTTTGGGTGTGCCAGTGACCCTAACACTAAATTTTTA -AATTTTTTTCAGCCAAATCATCATATGGTGGCCTAGAAAATTTAACACCT -GAAAACTCTTCCATATTTTTTTAATTTCTGAAATCCAACAAAATAATTTT -CAAACTCCTCTTCCTTTTTTCCAGAAAAATAAATTAATGTAAATCAAGTT -CATCTCCGATGAGTTGTAACGGTGGAAGAGTTTTTCAGATTCCTAGGCCA -CGTCAAAGTTTGAGGGCTTCCCGTGACCCTAACACTAAATTTTCCAATTT -TTTCAGCCAACCCAAATCAGAAGCTTTCTCTTTGTGTAATAACATGACAA -TGGGCTATTATCATATGAAATTTTTTAGGTTAAATTTCTGAGGTCATTTG -CAAAGGTGTCATGACTAGTTTGGAGGCTTTTTTGTGACGGTAGGGGTATG -AAACAGGTTGTTACTTCTCGAAAAGGTATTATGTGGGGGAGAGGAGAAGG -AAAGAAGGAAGGCAGATTAGCCAACAGAGATACAGCAAATTTTGTGTGAG -TGGTGGCAGTTTTGAGAAGAAGCCATGCGCCAAGGTCGGTTTGCCTTCTG -TTTTCTCATTTTTCGGTTTTTTTGTGAATTTTTGTAAATTAAAAATATTT -TTTTATAGAAATAAAAATTCAGAAAAAAATACTGGAAGTTTCGTTTGCCT -TCAAACATTTTTTAAAAATTCACAGTTTTTCAAATAGATGTACTTACACG -TGGTGTCAGAGTATCTCATTTCGGCTTGATCTACAAAAAATGCGGGAATC -TTTTGCCCAAAAAAATGTGACGTCAGCACGCTCTTAACCATGCGAAATCA -GTTGAGAACTCTGCGTCTCTCCTCCCGCATTTTCTGTAGATCAGCGTAGA -TCAAGCCGAAACGAGACACTCTGGCACCATTTTATTTTTTTGGGCAAAAA -ATTCCCGCATTTTTTGTAGATCAAGCCGTAATGGGGCAGCCTAGCCCCAC -GTGCACTTATTCCTTATGCCGAACGACACTCCGATATCCCGTTTTTACAG -TATGACTGTGGGTTACTGTACCATTTTTGGTGCTTTTGTAATATTGTTTT -CTTTTTCAAAAACCTAGGAAAAATTTGAACAATTGTTTTTTTTTAATATT -TGAATTTTTTAGGCTCCCACACATTTTTGCGGGATATCGGAGTATCGATG -TAAACGTTTTTTTTTTGGTTTTTTGTATTAAAAAGGGTTTAAGTGTTGTA -ATAAGACATTTTGAATAAAAAATAGCTAGCGCCGCCACGACTTACTGGCT -TCCCTCCTAAATAAAAATGGAAGAGTTTTTGCCGAACTAGGCCATTTTGG -CTCGGCCGTATCTGGGGTAGATTTACGGCGCGTTGCGTGCCGCGTCGCGG -CTCGATTTTAGTTGTAAAACCTAATGTATTTGTTGTCCGTGTGGAGTACA -CGACTTTTCCACGCGTTGTCCGGCAGGCGATTGTCAATGGAGCGCGAAAA -ATTCAATGAGGAAGGCCAGGACACCGATTCAAAGATATAACGGCCCACAT -TTCAACAGCGGTATATCGGAGTGTCGTTATTTTAAGCTTGCACACGGGCT -TCTGGCCTTTTTCATTGCTTTTTCGCGCTCCATTGACAATCGCCTGCCGG -GCAACGCGTGGGAAAGTCGTGTACTACACACGGACAATTTTTTTTAAGTT -TTATAATGAAAACCGCGACGCGACACGCAACGCGCCGTAAGTCTACCCGG -GCCGAGCCGACACGTGGTGTCAGAGTGTCACATTTCGGCTTGATCTACGT -AGATCTACAAAGAATTTTGCATGATTAAGAACGTGCTGACGTCACACTTT -TTTGGGCAAAAAATTCCCGCATTTTTTGTAGATCAAACCGTAATGGGACA -GTCAAAATGGCCTAATTCGGCAAACTCTTACATTTCAAAATATGAGGGTA -GGCAAAAGCATGGGGAATTTGTGATTAAATTTTTGAAAAAGGAAACAATT -TTTTCCAAATTTCTTCTGAAATTTTTTCAAAAATAAATGTTTTTTTTCCC -TAAAATCTTCAAATTTCTAGTTTCAATCTCTCACTACCGTGACCAAAAAT -TCCTATGATTTTTGACCTCCCGCCACACAGTTTTACCACCAACTTCTTCC -CCCCCCACCCACCCACTTACTTCTCGTATCTGAAACTCCGCCCCATTTTT -CGTGTACTTTACTACTACTTGAATGATGATGAGGTAGAACAAATCTGTGT -TTATTGGCAGAAGCAGTGGTAGCAACAGGAGAAGAAGAAGAAGCATCACT -GTGTGGAACCAGCCAGCTGTGTTGTTGTGGTTTTAGTCGTGGAGAGAGAG -AGGACGACGTCGTGTGTCTTCAATAAAATGAGGATCTCATCGCTCTTATT -CCTGACTTTCTTGGCTGGAATTGTTCAGGTAAGCTGGGTTTTAAGTATTG -ATATTGGTGCTATTTGAAAATTATTTCAAAAATTTTTGGAAAATTTTTTT -TTTTTGGCCCAAAAATTTTTTTTCTAGAACTTTATCATTCCTAGGCATAC -TCTAAATATGTCTGCAAATATTATTTTTTCTGGAAAATTTTGAAAATGTA -TATATGGATATATGCAAGTTTGGAAGTTTTTGTAGTATTATTTTGAAAAA -TTATAAATTTTTTTAAAAAAAATTTTTTATAAATCTAGCAAGAAACGTTT -TTAAAAACAATTTTAGTCAATTTTCTTTTTTTTTTTTTGGAAATTTCACC -AAATATCGGCCCAAAATCTATGCAATACTATTTTTTCACAAAGAAATTTT -CAAAATTTGACATTATACAGATCTAGGGCTTCCATGGTAGGCAGGCGCGG -TTTCAGGGACCTGCCTGAAACCTACCTGGTTGCCGCCGGCCTTAATTTTT -ACGGGAATTTAGAAAAATTTCTAATTTTCTCATTTCTATCAATTTGATGA -AAACCAAAATAAATTGGCGAGAGGCAGGCAAAGGTTGCCTTAAGGTCAGG -CAGGTAGGCGTTTTAACACCTACCAGCTTTACAAAAGCACTATACAAGTC -TGTTTTTGAAATCTCTAGCTTTAAAAATCTTTAAAACAAGACATGGTGCA -AGACAAGACAAAGACATCGACAAATTTTCGACAAAATTAATTTTTTTCGA -AAAACTTTTAGTTTCTTCCAAATTCGCCAAAGTGAAAAAAAAGTTCCTAA -ACGTGAGATTTTGTATGTCTTCTACACATACTAGCCAATATCAATTACAA -TATCTGCCAAGAAAATCTCGAACCAAACACCAAAACGGCGTTTGGTAACC -GGTTTTTTTTCCAAAAAAACTATACATAGTTTCTAGTAAACAAATACGAA -TGGAAAATTCAAGGTGACAGAGAAGAAAAAAAGATTAGAAAAAAAATCGT -TGGTGGTGGCCTAAGAATTGCATGTAACGTCACACCTCGGCCAGGGGTCA -TGGTACATGCTACATGATTACCCATGGCAAAAGAGTGACGTCACTCTCGG -CCATGATTTTTAGGTTTAGGCTTAGGTTTAGGCTAAGGCTTCGGCTTAGG -CTTAGGCTTAGGCTTAGGCTTAGGCTTAGGCTCAAGCTTAAGCTTAGGCT -TAGGCTTACCTTATGAGCCTATAAGCTTTCTGAAAAAGACAAATATTAAA -AAAAAACCAAAAAAAAAAAAAAAAAAAGACAAACAAACAAATAAAAACAA -ACAAACAAATAAAAACAAACAAAATATTTGAATTTTTCTAAGAAGACAAA -TACGTCACTCTCGGTCACGATTTTTGGGCTTTAGGTTTAGGTATATGTTT -AGGCTTAGGCTTAGGCTTAGCCTTAAGCTTAAGCTTAGGCTTAGGCTTAG -GCTCAAGCTTAAGCTTAGGCTTAGGCTTACCTTATGAGCCTATAAGCTTT -CTGAAAAAGACAAATATTTAAAAAAAACCAAAACAAAAAAAAAAAAAAGA -CAAACAAACAAATAATTTTTCAGGCCCAAGACTTCCTTGCAATGTTCAAG -CCGTTCCTCGGAGGTGGCGGTGGTGGCGGTAATCCGTTTGCAAATCCACA -GGCGATCGGCGTAAGTTTTCCGACAGGCAAACAGACAAACAGACAGACAA -TCGAAAGTGGTCCAGGCGCTGAATGTGTTACGCAATTGGTTTTGGGCGCC -ACGCGCGCATATTATTTGCATATATACATACATCATTCAGATAAATGGCA -TTGAAAACGAACAAAAAGTGAAGATTTAGTGGGTTGGCAAATGCATTTTA -TGTTTCTTTTCCAGGGTCTCTTCCAACAATTCGCCGGTGGAAATGGTGGA -GGATTCGGGCAGCTTCTTGCTGGAGCAATGGCACCGGTATGTGTTGCGAC -GTTTAAAACGGAGTGTCGTTGTGAAATTTTCCGCTTTGGAAAACATTGAG -AATATTCGAAAATTTTTGTAAAATTTTGAGATTTTCTTTTTCCAAGCTTT -GGGCTTAGGCTTAGGCTTAGGCTTAGGCTTATGCTTAGGCCTATGCTTAG -GCATAGGCTTAGGCTTAGGCTAAAGCTCATGACTAGACTTATTCTTAGAT -TTAGGCTTAAGCTTAGGCATGGCCTTAGGCTTAGGCTTTTGCTTAGGCTT -TTGCTTAGGCTTTGGCTAAGGCTTAGGCATAAAAAAAGAGAAATTCCCAA -AGTAAAAAAAAAGACAACTTTTGACAAATTTGAAAGTGAAATGTTATATT -TTAAGCCTATTTTTTCCCTAAAAAGAAAAAAATTACTTTTATAGTTTGAA -AACGATTTTTTGGCAGTGTTTCAGCAGTCAAAAATATGGCTGAAAAAAAA -AGTTGATTTCAAAATATTTTTCATCTCAATTAATTCTTTTAAATTTGCTC -TACCAAATTTGAAAAAAATATTGAAAATTATTTTAAAAAATTTAAATTAT -TAAATTTCAAGTAAATTCGAAAATTTTGTTTATTTATTTTATGTTCATTC -TTACAATATAAATTATAATCCTCAAACATTCCAGAAACCAGCACCAGCCG -CAGCTGGACCCCGCTCAGCTCCAGCTCCAACCAACGAGGACTACAACACC -GACATCGACGTTCCAGCTCCAAAGGCAAAAGCCCGTGCAGCTCCAACTCC -ACGAAGAGCACAAGGTGATGATGATGATAATATTGATATGTCTCTGACAC -GTCTTGGCTAACTTGGCTTGGAAAAGCACAATTCCTTTAATACAAAAAAC -TTTTCTCAAAGATTCTCAAAATTTTGCACTTTAATTTTTAAGTTTAATTT -TTAAAAAGTTGTCTCACGTTTTTTAACCAATTTATATGCAAATATGATCC -TTATTACTAACAATATTTAGTAATCTAAACATAAATTGGAATATTTGGTC -TTTTTCCCGCCGAAAATGATCAAACATTCCGAAGTTAGCAACAGAAAATT -GCAGTGAATTGTGTTGGTTTAATTTTACCGTCGTTTTTCATATTTTTTGC -CCGATAGCTTTGCTGTGTTTTGTGCCATCCTTTTCTCTGTGATATACTGT -TACTTACTTCAATAAATGATTCTTTTAAAAGTTTTCGCACAAAAAATTTA -GAGTTGCTGGCAAAAATACACGCCGACACGTGGTGCCAGAATGTCTCATT -TCAGCTTGATCTACGTTGATCTACAAAAAATGCGGGAGAATGGAGACGCA -GAGTTTTCTATTGATTTTGCATGGTTAAAAACGTGCTGACGTCACATTTT -TTTAGGCAACAAATTCCCGCACTTTTTGTAGATCAAGCCGTGGTGGGACA -TCCTATCCCCACTTGCGCTGGGGGGACAAAACCGACATAACTTTTGAAAC -ATATTACACATATACATTTAATATATGTTTTCTGAGAGAAAACGTTTTAG -AAATTTTAGAGAATTTCAGCAAAAAAATTCTGATAGCTTTTTGGAAATTT -ATATTATAAAATTTTTTTTTTTTTTTAATTCTGATTTTTTCAAAAAAGAA -ATTTTGCAAACCGCTTCCAGAATATTTGCCTGTCTCAAAATACCCTAAAA -AACATTAAAATGTTTCAAAAATTATCTTTTGGAACAATTTTACGGGTCAC -GCGAAATACTTTCTTTGTAAGTTTTTTTTCTTTGAAATTTAGATTTATTC -CCAATATACGTAAATTTTTCACTGAAAGTTAGAAAATTATACTTGTTTTT -TTCCAGAAATTGAAATGTACATGATACAAGGCTGCTACATTCCAGCAAAA -TCTGATAAAATTTTAGAAACAATTTTTTGTCAGAGTCTTGAATATTTGAG -CTATAAGTTTTTTTTTTTCAAAAAATTAATCCAGTTTGGCCTAAAAACTT -AAGGCTAAGATTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTCAGCCTAA -GCTTAAGCCTAAGCCTAAGCCTCAGCCTAAGCCTAAGCCTAAGCCTAAGC -CTAAACTTAAGTCTAATCCTAAGTCTATTCACTAAAATTTTGACGTAAAA -CTTGGGACTAAAAATTTTGGACACAAATTTTTTACCTAATTTTTTGGTCT -AAGCCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAA -GTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGT -CTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCT -AAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAA -GTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGT -CTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCTAAGTCT -AAGTCTAAGCCTAATAAGCCTAAATAGGGTCTAACGCTTGCCACTGACGC -CGCTAACGCTCGCCACTGAAGCCACGCCTAAGCCTAAGCATAAATCAATT -TGAAACTTCAGACTTAAATTTCTTGGTGGCCTATACGACTCTCTGTTAAA -TTTCGCTTTGATCAGCAAACGGGAACCCTTTGAAAAATTAAAAAACTAAC -GCTCGCCACTGACGCCAAGTCTAAACCTAAGGGTAATACTAAGCCTAAGC -CTAAGCCTAAGCCTAAGCGTAAGCTTAAGCGTAAGCGTAAGCGTAAGCGT -AAGCCTAAGCCTAAGCCTAAGTGTAAGCGTAAGCGTAAGCCTAAGCTTAA -GCCTAAATCTTTCGACAAAAATTTTGACCTAAAACTTTGACCTAAAATTC -GAGACTAAATATTTTGGACTCAAATTTCGGCCTGAATTTTTGGACTAATT -CTGGGAACTATTCCAGAGTAATTTTAACAAATTGAAAACTTTTTATAGTA -TTCGTAAAACAAAAAATAAATGCAATGTTTTCAGTAATAAATTTGAAATT -TTTGAAAAATTAAATATTTCTTCGAAACTTCGAAACTTCCTTTTCTCTGG -CATAACCCCAAATTCCAGCCGATGCCCCGCCAGTATACCGCCAGCCTCGC -ACAAAAGCCGAAAAAATCGAAAGATTCCGGAATATCGCTCGGACATTCTC -GCCGTTCGTGTACGAGGTGAACACCACACCAGCTCCTCACTTTGACAACT -TCATCTGGCAACAAAATGCACCAGCTGTCACACCGGAGCCATTCACATTT -GCTCCATTCTCCTTCCCAACTCTTGCCACCGTCGCACCACCAGCTCCAGG -ACCCGGCGGCCCGACTCTTGAGCCATTTTTACCGACGACAGCTAGTCCGA -AGCTGTTAGCTCATAACACTGCTAGGGTATCAAAAAATTTGAATACTGAA -TACCTCCCTATAACTTTTTCAAATTCCAGATGATCCGAGAAATCGCTTCA -TTTTCCGACGGAGGACGCTCCAGGGATCAGGATTTTGGCGCAGTTCAAAC -GCTCATGCAAGCCTTCTTCGAGGCAGTCTCCAGTGGAAATAATGGTGGAG -CAGGAGCTGCCGCCGGAGCCGGAACAGCTTTAGGAGTAGGTTAAGCTCAC -TAAAGAGGTCGTGAAGTTTTACTATTTTTTAGGATGCTCCAATGCTTCAA -GCCCATCGAGATGGTACCGAGTTGGGAGCCAATCGCGCGCTGACCAACAA -GCTTTTCGAGTCGGATATGGTGTTGACGGTCAAGCAGATGAAGGCGTGAG -TGTGGGGTACTGTGCAATAAGATTATTGTAGGGGTACTGTAAGATCTCTG -TAGGGATACTGTAACCCTACCGTGATATTACTAAAGGGGTGCTGTAAGAT -TACTGTAGGGGTACTATAGGATTACTGTAGGGGTACTGTAAGATTACTAA -AAATATACTGTGAGATTACTGTAGGGGATGCTGTAAAATTTCTCTAGGGA -TATTGTAGAATTACTCTAGGGATACTGTAGAATTACTGTAGGGAACTGTA -AGAGTACTGTAGGATTACTAAAGAAGTACTGAAGGATTACTGTAGGGGTA -CTGTAAAATTACTATAGAGTACTGTAAGATTTCTGTAGGGGTACTGTAGG -ATTACTGTAGTATTACTAAACAAGTACTGAAAGATTATTGTAGGGGTACT -GTAAAACTACTATAGAGTACTTTAAGAGTACTGTAGGATTACTAAAGAAG -TACTGAAAGATTACTGTAGGGGTACTGTAGGATTACTGTAGTATTACTAA -ACAAGTACTGAAAGATTACTGTAGGGGTACTGTAAAATTACTATAGAGTA -CTGTAAGATTGCTGTAGGGATACTAGAAGATTATCGTAGAGATACTGTAA -GATTATTGTAGGGGTTCTGTAAGATTTCTGTAGGGTTACTGTAGAATTAC -TGTAGGGTACTGTAAAATTACTGTAGGGGCACTCTAAGATTACTGTAGGG -ATACTGTAGAATTACTGTAGGGTTACTATAAGTTTACTATAATATTTCTG -TAGGGTACTGTAAGATCACTGTAGAGGCTACTTTAAGATTCCTGTGGGGG -CACTGTAACACTACTGTAAGATAACTAAAACGGTACTGCAGGGTACTATA -AAGCGACCACCCTAGATTCATGGTTATTTCAGAATTGTGCTCGCCGCCCA -AGAGGCCCGTAACCCTCACGGACGTAAAAAGCGAAAGGTGATTACGGGAT -CCGTGTACCGATGGAAGAGTGTGATTCCGTTCCGATTCAAAGGTGGCGAC -GCGAAATGGAAGAAGCTGATCCGTGAAGGCCTAGGCCTATGGGAGAAGGA -GACGTGTGTGCGATGGAGCGAGAATGGCCCCGGCAAGGATTATGTGATCT -TCTTCAGAGGATCTGGGTGAGTTGACATGCCCATGGTTTTCGGATAGTTT -GGGTTTTTTTTCAGATGCTACTCATCAGTCGGAAGAACCGGAGGATCTCA -ACTTATTTCGATTGGGTATGGCTGTGAAGATGTAAGTTTTAGTATTTCTA -CTATACTATTTATTTTAAATTCAAATTTTCTAGAAAGGAATCGTTGCTCA -CGAAGTCGGTCACTCCCTAGGCTTTTGGCACGAGCAGTCCCGTCCGGATC -GGGATGACTACATCCATTTAAGAAAAGACTGGATTATTAAGGGAACCGAT -GGAAACTTCGAGAAACGAAGTTGGGAAGAAATCGAGGATATGGGCGTTCC -GTATGATGTCGGAAGTGTCATGCATTATGGGTCGAATGTAATTTTAAATT -TTGAGTCGGTAGTTTTTAGATACTGAAAATGATTTTCAGGCTTTTACAAA -GGACTGGGACCAAATTACTATTGAGACCAAAGATAGTAGATATCAGGGAA -CGATTGGTCAACGCCAGAAGCTTTCGTTTATCGATGTTAAGCAGGTTAAC -AGGCTTTATTGCAATTGTGAGTTGTTATGCAAAAATGAAAAAAATTTGAC -CACTGAGCGGATCGAACGCCCAACCTTTCGATCTGGAGTCGAACGCGCTA -CCATTGCGCCAAGCAGTCACATTTTGTTGCAGGAAACGGTGTATAGAGGA -GAAAAGAAAAAAATAGACAACCCTACGTTTTATCAGTGGAGCGCGGTTGC -AATTTAACATTCCAATTTTCAGCTGTTTGCCCGGTTGCCTTACCCTGCAT -GCATGGAGGATACCCCGACCCCAATAACTGTGCGGTTTGTAAATGTCCAG -ACGGGCTCGGAGGAAAGTTGTGTGGACGTGCCGCAAAGGGCACAGATCAT -GGTAAAACTCCACTGGAATTTATGGGAAAAAACCGCCCTAAAATTTTCAG -ACAAATGCGGCGGTGAGCTAACAGCGACCGCCGAATGGCAGGAGATGGTC -TACAAGGGGAAGCGGACGTGCAATTGGAAGGTGAAGTCGCCGAGCGGTGG -GCGGGTTCGGTTGGTGCTCACCGAGCTCAGGTACCAGTGTGCACCGGCGT -GTAAGGCCTACATCGAGATCAAGCATAATACCGACTTCCAGCAGACCGGA -TTCAGAGTTTGGTGAGAACCCTAGATTCCCAAAAAATTCTACACTTTTTT -CAAAAAAAAATCGAAATTCGACCCATTTTGGCGGGAATTAAAATTCTTTT -AAAAATGACAAAAAAAATATTTTTCTGCAGAAAATTTTTCGACTTTTTAG -AAAGCAAGCTTTCACGCGGTTTTGGCTTCCCTCATATATTGAAATGGAAG -AGTTTTTGCCGAACTAGGCCATTTTGGCTCGGCCATATCTGGGGTAGATT -TACGGCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAAATTTAATTGTCC -GTGTGGAGTACACGACTTTCCCACGCGTTGTCCGGCAGGCGATTGTCAAT -GGAGCGCGAAAAATTCAATGAGAATCGAGCCGCGAAGCGACACGCTACGC -GCCGTAAATCTACCCCAGATATCGCCGAGCCAAAATGGCCTAGTTCGGCA -AGCTCTTCCATTTCAATTTATGAGGGAAGCCAGAAATCCGTGTAAATTTT -TAATTTTTTGTTGCTTAAAAAAAAAAACTAAACAACTATTTTCCAATTCA -AATTTCTAGCTGCTTCAACAAAACATATGACGTCATCTCCGACCAATCTG -AAGCCCTGATCCTCTCCAACGCGAACATCGTGGACTACGAGGTCTCCTAC -AAGCTGCAATGGATTCAAGGTACCCCACCCCCCCCCCCTTTTCTATCCAT -AGAGCGCACTTTCTTCCAGACAACGGAAAAGCTCTTCCACCACCGAAACC -CACGTCGACCTGGGTGCCCGGAAAAGAGAATCGACCATTCCGCGGAGTGG -AGAACTCGGGCGGCACCATCGAAAAGTTCATCCTGCAAGCGATCCCAAAG -ATCCGAGACTCGCATCGGCCACTGGAGAGTATTACTAGTATTGTTGCGGA -ATATGGTCTCGCAACGCTACTTGGTATATCGCATAATGGAAAGTAGTCCG -TTTGGAACGATTTTTGCAATCGTCAGAGGAATATATATATATATTTGTAA -ATTTTGTACCATCCCAAAAATCCAATTTTTCTTTCACAATTTTCAAAATT -TGCTCATCTTTCACAATTACTCGGGTTAACACATTTAATGCCTTTCAATA -AATAACAGTTCATATTTAAAGTGATTATTATATTACAGGAACACATATAT -CTGAGAATGCGTATCGCACAACATATTTGACGCGCAAATATCTCGTAGCG -AAAACTACTTTAAAAGACTACTGTAGCGCTTGTGTCGATTTACGGGCTCC -TTTTTTGAAATTTACACGGTTTTCTGGCTTCCCCTCAAAAATTGATATGG -AAGAGTTTGCCGCGAACTAGGCTATTTTGGCTCGGCCATATCGTTCAAAA -ACTACAGTAATTCTTTAAATGACTACTGTAGCGCTTGTGTCGATTTACGG -GCTCCATTTTTGAGATTAATTTTCTTTCGAGTTCCCTTCGTTTTTTTTGT -AATTTTTTGCTTAATTTGAATTTTTTTTTGATAAATTAAAAAAAATGATT -TTACACGGTCTCCTGGAGTGTTCATAATTATTGGAGCGCACTTGCTGATC -CTTGCCGCGCTTATTTACTTTTTCACCGTTAGAAAATGAGTAAAATCAAC -GATTTTGGTCAAGAAATTTAAAATAAAATTATTAATTGATTTCAAAACCG -AGTCCACGTGGTGCCAGACTGCCCCATCACGGTTTGATCTACAAAAAATG -CGGGAATTTTTAGCCCAAAAATGTGTGACGTCAGCACGTTCTTAACCATA -CGTTGAGAGTTGAGAATTCTGCGTCTCTTCTCCCGCATTTTTTGTAGATC -TACGTAGATCAAGCCGAAATGAGACACTTTGACACCACGTGCGAGTCCGT -AAATTGACACCAGTGCTACAGTAGTCATTTAAAAAATTACTGCATGTCAA -AATTAAAATTTCCTGTTCCCGTAATATCGGATTCAGCACGCCACCCTATG -AAAATACCAAAATTGGAAAAAAATCAATAAAAATTTATTTTCACGGAAAA -AAAATTGAGACCACCTTTTTGTTTTCTATCTATATAAACCCGTTGTTTTT -CACAAAAAATTATTGAAAATCCTTCAAATCATATTATTAGTTCGAAACGT -CGACGCGTAGGTGTTCGATCGTACACTGCCGGGAATTGCCGGTTGCGGGA -GTTTCGGCACCGCCGGTTGATATCCTTCTTTGCTAACTTTTGATCTGAAA -ACATTGACTTTTGCTACGTGGCCGTGGAAGAGAAAACTCGGCCACTATGT -TTGTTTTTGCGACAAGGGTATATGCGCAAACCTACAAAATGATCTTCAAA -AAATGCGCGAATTTTTTGCCCAACAAAATGTGACGTCAGCACGTTCTGAA -CCGTGCGAAATCAGTCCCGCATTTTTGTAGATCTGCGTAGATCAAGCCGG -ACCACAAAAATATCAAAGTTTTGAATTTTTCAAAAAAAAAGCACTTACGA -GGATCTAGTCAGCTTGAACAGCAAGTAAATAAGACAAAACGCGCACATGA -TGAAGCTCAAAAGTAGATCAAACGAGAACTTGGTCGCCGAGACCGCATTG -AAACTTCTGTCAAGTGAGAGAAACGGTTGGGTGGCATCGTTCACAAATGA -AAGCATGTAGAATAGTCCAGCAATCGGATAGACTGCCGCAATGACTCCGG -CAAACCCATTGACATCCTGCTCATCAGAGCCCAGAAGCCGGCAGCAAGCA -GACGAAAGAGCAATGGAGCTGATGAGGAATAGAATGAGCTCCCGGCAGAA -GTTGAAGATCCAGTCGGTGCCCGGGCTTGCTGCTCCGATGAAGCAGAGTC -CGGTGAGGGGATTGGCGGCGACGGCTTTTGCGAGTAGCGCGAGCATTAGT -GGAGCCAGCGGGATTCCCAGGATGAGCATGATCACGCGGGTTCTGGAGTC -GTCCTGGAAGATCATTTTTTAAAATTTAATTTTTGAAAATTTATCATGTC -TGGAAAAGGTACAGGCTGACTAGACCTATTTCACGTGGTGTCAGAGTGTC -TCATTTCGTCTTGATCTACCATGATCTACAAAAAATGCGGGAGAAGAGAC -GCAGACTTCTCAACTCTCAACGTATGGTTAAGAACGTGCTGACGTCACAT -TTTTAATGTACAAAAAATTCCCGCATTTTTTGTAGATCAAACTGTAATGG -GACAGCACAAAATTCAAAGCCCTCACCAATATATGCGATGTCCTTGTCGC -CTTATTCCACGACACACAGATCAAGAGCCACCAGAGACGTGAGCAAGTTG -CCGTGTAGTAAATCAGTGAGGCCACTGAAGAACATGGAACATGGGAAAGC -CCTCCGACGACGAAGAGCAGGTGATGGGTGTAGTCGGTGCACGAGATTTG -GAACTTCAAAATTCTTTTTGAATGGCTCAAAAATATTGATTTTGAGCCAA -GTTATGACCATTTGAAGTTGGTGGCCTAGGATTTTCCTAGGAGTATTCTA -GGCCGCCAACTTTGGACAGCCATAACTTGGCTGAAAATCAAAATTTTTGA -AATCTAATTTCACAGTTGAATTTAGCAGACCATGAGCTTCAATTTGACAT -ATTTTTGTGCCTTGCCACGAAAACTCGCAGACCTACAGTAATCCGGCCAA -AATTAATGTTAACTGAAAGCTCAGAGTCTGCTAAATTTAAATACAAAGTT -CGATTTCCAAAATATCGATTTTCAGAAAAATTATGAAGACTCTAAGTTGA -TGGCCTAGCATTTTCCTAAGAGTATTCTAGGCCGCCAACTTCAAACGCTC -ATAACTTGGCTCAGAATTAATATTTTCGAGCAAAATAAAAAGAATTTAAC -ATAAAATCTTGTGATCTACCGGAAACTAGATGAGCGCAATTTTAAATATC -TAGGCCACCAAGTGAAAACCGTGACTCGGCTCAAAACCATTATTTCTGCT -TCAACCAAAAACCAATTCATTTATTTTAATTGAAAGCCCGGTGTCGGCTC -AATTCAAATACCAAGTTTATTTTCAAAATACCAATTTTCAAAAAAGCTAT -GAGCGTTCTAAGTTGGTGGCCTAGGATTTTCATAGATTTTCTAAGCCACC -AACTTCAAACGCTCATAACGTGGCTTAAAATCAATATTTTCGAGCAAAAT -AAAAAGGATTTAATATAAAATCTTGTGATCTATCGGAGAATGCATTTTAA -ACTTTCTAGGTCACTAAGTAAAATATTCGGCCACCAAGCCTCGGCCGAAA -ATTATTATTTCTGCTGAACCAACAACCAAATTCTCCAAAAACTGCTTACC -TGATCTTTAAACGAAATGCTCACAATATAAATAACCGATGTCGCACAAAA -CGAGATGCACGAGAAGAACATGGCAGTTTCCGTAAGTGAGTGGAGCATCT -CGAGACGTCTAAAGTAGATCCTGATTTGTTTTTGGAAAATTAGGCCACAC -ATCACACAATCCAAAACTTACGATAAGCCGACTATGAAGACTGATAGAAT -TGTTAGTATTACAGAGCTCAGCGAGAGAAACAACAAGAGTCGGGTGGCGG -ATTCACGGTCAGTCTGGAAATGTACTCATTTGTTACTGAACTAGGTCTAC -TTAAGCCTAAGCCTAAAGTAAGCCTACCTGCCCAACCTTCTGTGGGTTCG -AGCACAAAGGCACACACTTTGAGGATCGATTCAGGAACACCTCATCCTGT -GGGCATTTTCCGTTGAGGCGGTCGACCTCCCGTTGAATATCTTCTACTCG -ATCATTACCGTCGTCCTCCTGGAAAAGAAAGATGATTGATTTGAAGCTGT -GTATCTAATTACCCCCGTTTGATGATATAGGACCGGAGAGATTACAATCA -GATGTTCTCTGTTTTTCTCTGTTTTTTGGTAGCTAGTATAGAAAACTATA -GAGTACTGTAATTCCTATTTGGGAGCTTGGTATTGTGCTATTATCAAAAA -AATACAATTGCACAAATTTCTCATTGATCTACCTGTTGAACTTGACTCCG -CCCCCAATCTTGTTACTGTTATTATTAAGGTAGATCAAAAACACAAGGAA -GATCAAAAATAAATTACGAGAAAATTGTGCGATTGTATTTTTTTCTATAA -TATCAAACATTTATTGATTTTAGGACATTCTGTGATTAACTTTTATAGTT -TCACGGATTTCTGGCTTCCCTCAAAAAATTGAAATGGAAGAGTTTTCGCT -GAACTAGGCCATGTTGGCTCGGCCATGCGTGGCGCGTCGCGGCTCGATTT -TAGTTGTAAAACTAAATATTTCCCACGCGTTGTCCGACAGGCGACTGTCA -ATGGAGCGCAAAAAATTCATTGAGGGAGGTTTCTATTTGGCAATGCGCTT -TTGGTTTTTCAGTGATCTTTCAAAAAATTTTTCATAATTTTCAAATGATC -ATAACTCTGAAACTAAAATTTTTGGCAAAAAAAGTCGTAATATTGTAAAA -TGTTGCTCATAATTTCTTCTATACGATAAAATTTTTTCAAAATTTTACAT -TAAACAGGCCAATAGGTACAGCGCCCGACAACTCGCGGGTCCAAAAATTT -TTCAAAAATCGTCAAAATTCGACTCGCGAGATGTCGAGCGCTAAATCTAT -TGACTTTATTTTTTTGAATTTTTGAAAAATTTGTTATCCAATAGAAAAAT -TTATGAGCAACATCTTATTAGTTAAGCGTTTCTTGCCAAACATTTTATAT -TCAGAGCTATACTCATTTGAAATTTTTGAAAAATCACTGGAAAACCAAAA -ACGCGGCAAACGATTTTTTCCGGCAAATCGGCAAATTGGCAAACTGCCGG -AATTAAAAATTTCCGGCAAATCGGCAAACCGGCAAATTGTCGAATTTGCC -GAAAATTTCGGCAAATTGTGGTTTTGCACTTTTTTTGGAAATTTCAGAAT -TCCAATTTCAAATTGCAAAATTAAACTCATCCTATGAATGTTTCTACATC -TATTTTGAAAAGTAAGTAAATTCTATGAAAATATATAAGGAAAACGAGAA -AAAATTCAAAAAGACATAGTTTTAAGTGTTTCCGTCTTATTAAAAAATCC -CTCTAAACTTTTCCGGCAAATTGATATTCGGCAAACGGGAAATTGGCGAT -TTGCCGGAATTGAAAAACCCGATACTTACACTTTCTTTCGCTGCAAACTT -TGCCCTCTCATCTTGAATTGCTCCTTGCTCATTTGGCCCTTTCATGCACA -TTTTCTCTCGATTGTTCTCCAACGGGAACTTATCACAACGAATCACATCG -GGCCACTTGAAACCGAAACTTTCCAGCACTGGAAGACACTTTTCCTGGAC -GGAAAGACACAATGGACGGCATGGACCAATTGGGTTGGCTAGCTGAAATT -TTTTTGAACGATGAAATGATAAAAATGTGCGATTCTTCTCTGATTGAACT -CACTTTCTCGTTGCACATCGGGAAGTAGACGGAGCACAGGAAGAATTTGA -GCTGCTCGGAGCAGACAACGGAGAGCAGGGGCTTGTAGGTGAGGATGGAT -TCGGAGGCGTCTTTCCATGATTCCTCGTCGACGAGATTTGGGAAGCTGGA -ATAAGGGCTTGTAAAGTTTGAGAAACTTGAGATTTACAGGGTCAAAAATT -GCTCACGAGCTCTCCCGGTTGCCGAAAAGTTGCCGAAATTTGAGCAACCA -AAAGTTGCCGATTGCCAAAAATTGTAGGGTACGGCAACTTCGGCAATCGC -CGGTTACCGAAGATTTTAGAGTTCGGCAACTTCGGCAATTGGCGGTTGCC -ATTGCTCTCACGAAATTTCCCGCTATTTTTGGAGATTAAACAGCAAGTGC -ACGTGTGGGTGTCTCAAACAGGAAAGAAATCCTGGCAGGAGCCGACTTGC -CGGAAATTTTCAATTCCGGCAAATTGTCGGTGTGCCGATTTGCCGTTTGC -CGGTTCTCAGATTTGCCGGAAGTGTGTAGAGGGATTTTTATAAGACGGGA -ACACTGAAAACTGTGCCTTTTTGAATTTTTTCCCGTTTTCTTTGGATATT -TTCATAGAATTTGCTTACTTGTCAAAATAAATGTAGGAACATTCATAGGA -TGCGTTTAATTTTGCTATTTGAAATTGAAATTCTGAAATTTCCAAAAAAA -TGAGTACAAAACCACAATTTGCCGGAATTTTTCAATTCCAGCAATTTGCC -GATTTGTCGTTCTGCTGGTTTGCCGGAAATTTTCAATTCCGGCATCTTGC -CGATTTGCCGATTTGCCGGATTGCCGAAAATTTTCAATTCGTTAGCCGTC -CACCCTGGATCCTGCCATCCAAAAAAAAACGGAAATTTTTGGCAAATTGC -CGTTTTTCCGCCGGCAAATTCGGCAAATCGACAATGTGCTGTTTTGCCGT -TTTGCCGGTTTGCCGGAAATTTTCAATTCCGGCAATTTGCCGATTTGCCG -ATTTGCCGGTTTGCCGGAAATTTTCAATTCCGGCAATTTGCCGATTTGCC -GATTTGTCGGATTGCCGAAAATTTTCAATTCCGGCAATTTGCCGATTTGC -CGATTTGCCGGTTTGCCGGAAATTTTCAATTTCGGCAATTTGCCAATTTG -CCGTTTTGCCAAAAATTTTAGGGTTCGGCAAATTCGGCATTTGCCGTTTT -GCCAAAAATTTTAGGGTTCGGCAACTTCGGCAGTTGCCGGTTTCCGCACA -TCCCTGTCCCACACGCCCCAGGTGGAAGATGGTGGAAGAGTTTCTAGCGG -GTCCATCAAGGATGGGAATCATCAGTCAACACAATCCTTAGCCGACCTTC -CCAAATTCATCATTCCTTCCTTCCAAAACGGTTTCCGGTCCTTCCAACCG -ATTAATACCAGCCACCACCACACCACCAAACCCTCTCCTTCGAAATAGAG -AACAAAGTTGCATACCCCCCTCATTTCTTTGTTTTGGAGAAAGGGGCGTT -TTGTGGTGCTCGGAGAGCCTGAGGACGTGACAAGTGATATATAGACGGGC -TTATACTATCTGCTCGTCCATATTTCACGCGCCTAGGCAGAGTGCACGGC -GGGAGGTGGAGACGCAGGTTCCCGTCCAACTGCCGCAGAGCATCCCCTAT -CTGCTCCTATCAATTGTTCGGAGAGACTTTTTTGTGAATTTTGCTTTTTG -CAAGAGGTCTGAGATTTGGGATTTGGGCTTTAGGCTTTAGGCTTTGGGCC -TTGCTTTGCGCCAGAGAATGGAAATTTGTCCGTATTTTCCCGGCTTATAT -CAAAAAATGATCAACTATAAAAATATAGAAAAAGATTTTTCAAGTTTTTT -GTCAGTTAGTATTTTTTGATAAAACAAAAGAGAGCCGAGATATAAGCTGT -CAAAGTAGAGCAAGGGTGGTTTGATCTACAAAAAATGTGGGGATTTTTTT -TCAAACTTGCTCTACTGATAAATTAATAAATTACTCCCACAAAATCCAAT -AAGCCTCAAACTTAAGATCCTCCAATCTCATCCCCCTCATAAAACAATAA -TACTAAATCACTAGATCTCCGGTAGTATATATCAGAAGAACAGTTGCTCT -CCCTCTCGAACCGACTTACACTTGAGAAAAATAAATTGTGGAAGAGAAGT -GACGTCATCGTAACCTACCACTTCACAAGTTTATATATATATATATATAT -AAGTACTAGTTAGGACTAGCTAAGACCTAATTAGAACATAGGTATGGCCT -GTAAGTTAGGACCTAATTAGAACTCACTAGGACTATATATATATATATAT -ATATATATATATATGTAAACAAGAACCCGGGCGGGTAACCCCTTACGGTC -AGAGGGGTGTCCTACACCAAGGGTATGTAAACTGTGTCCCCCAGATGGCG -AAGTTGAGAGGGAAAAAGTGAAAAAGCGCGCCACATGGCCTCGCGACCGT -ATGTTGCAATTTCAAGCAACGTTTTTGATTTATTGGAGGAGAAATTTTGA -AAAAGTGAAAAAAAAGTGTGACCCCATATGAGATGCGTAATAAAATTCCC -TACAAGACCTTAAGAAAACGTGGCTGGCTGGCAAAAAACAGGTGGCAATA -ATAACGGAATGTGTATGTGTGTGTGTGTGTGTGTGTGTGCTCGAAGAGCA -TAGGCTCGTAAATCGTTATAATTGATGCTGGAGGAGAAGGAGACGATGGG -CCTCCAAAGTGTTACACCTGGTATTTGTTGGGAAAAATTTGGGGGAAATA -GGCATTAAACTACCTAACCTAATTGAGTTTTTTCAAAGCTTATATTATTA -TAACTAAGAGGTGTGATAATAAATAATTAAAGAACTTTAAAATTATCAAA -AACGCTTTCAAATCTGTAAAGCTGATATTTTAAGGATTTAGTACTAGTTA -AAATCTAGTTGGGACCTAGGTAAGACTATCTAGAAAGTTCGGACGTAACT -ATTTAGGAACAGTTAAGTCTTAAGGCCTGCTTGGGTACAGGTAAAAATGT -TTAGAAAGTTAGGAACTAAATAGGTGAAGTAAGTACTAGTTAGGACTAGT -TAAGACCTAATTAGAACCTAGGTAAGGCCTGTAAGTCAGGACCTAAATAG -GACTTACTAGGACTTAGGTAAGACTAGTTAATGTCTTGTTAGGACTAGTT -AGGACTAGCTAAGACCTAATTAGAACCTAGGTACGGCCTGTTAGGGAAGA -TCTGATTAGGACTTACTAGGATTTAGGTAGGACTAGTTAAGATATAGTTA -GGACTAGTTAGGACTAGTTAAAATTTAATTAGAATCTAGGTATAGCCTGT -AAGTTAGGACCTAATTAAGACATACTAGGGCTTAAGTAGGACTAGTTAAT -ACTAGTTAAGAACTAATTAGAACATAGGCACGGTCTGTTAGTTAAGGCCT -AATTAGGACTCACTAGGACTTAGGCAGGGCTAGTTTAGTTATTGTTAGGA -CTAGTTAGGACTAGTTATGTACCTAATTTGGACTCACTAGGACTTAGGAG -GACTAGTTATAATCTTGTTAGTAATATTTAGGACTAGTTAAAATCTAATT -AGAACCTAGATATATCCTGTAAGTTAGGACCTAATTAAGACTTGATTTGC -TAGGATTTAGACAGGACTAGTTAAGATATTGTTTGGACTAGTTGACTAGT -TAAGACCTAATTAGATCTTAGGTACGGCCTGTAAGTTAGGGCCTAATTAG -GACTGAATAGGACTAAATTTCTTGTTACGAATAGTTAGGACTAGTTAGGA -CTAGTTAAAACTTAATTAGCACCTAGGTACGGTCTGTTAGGGAATACCTA -CTTACCAGGCCTTAGGTAGGACTAGTCATGACCTAATTAGAACCTAATTA -GAACCTGGGCACGGCCTGTTAGGGAAGACCTAATAAGGACTTACTAGGAC -TTTGGTAGGACTAGTTAGGACAAGTTAAGACCTAATTAGAACCTTGGTAT -GGCCTGTAACTTAGGACCTATTTAGGACTTACTAGGACTTAGGTAGGACT -AGTTAGGACTAGTTGGAAGTTGGGACCTAACTAGTTAGACCCTTAATTTT -GTACACATGCTTATTAATATCAATAAAAATTTTAAAAAAAAACGACTTTT -TTAAGTTTAACTATATAAAACTATAATTTGGAAAATTTGCTACTTTGCTT -AAAAATCGAGAAAAAACCTAGCGTTTCTATAAAAAACCATCTTGAAGTAA -ATTTTGAAAAAACCCCGTCATCCAACAAAAAAAAATTCACTCACCTCGTT -AAGTTATACGGCAAATCGTTGCACATCTCATGATCCACCTTTTGACACCT -CTGCCCGTCCACACCAATCACAAAGAGCAACAGGAGCCAGGTTACTCCGA -GGTAACCACGAAATGGTCCCATTAATGATAATGGAATTGGGGGCTCACAG -CCTGGGTGGGGGAAAATATTGAGAGTAAAAGAAACAATGAGAAGAAAGAC -GGAGGATAGGCGGGGGGGGGGGGGGGGGCACACCAGTGGCAGCACCACCA -CGGCCTGTCCGTTGACAAATGACCCAAACGGACGGGGGGCGGGAAGAGTG -TCTGTTGTGTGTGTTGGGAGATGGCTGGCGGTTATCAGATATTTGTATGA -ATGGTATAGAGAAACAGAGACCAAGAGAGCTGAAAGATGGAGAGGCGAAA -GAGGAAGAGAGGGGGGGGGGTGGAAGTTTTTACGAGCCCTGTAATAAATA -TATCGAAGCAGCAAATCATTTGATGATAACGGAGGAGCGCGGGGACGGAG -ACGGCAATCATCATCATTATTAGGACCAGGGGTGTGCGGCGAATTTTTGC -CGAATTTGCTGTTTGCCGAGCTCGGCAATTTACCGAATTTGCCAAGCTCG -GCATATTTCAAAAAAGTAGATTTGCCAAATTTGCCGAACTTGGCATATTT -CAAAAAAGTAGATTTGCCGAATTTGCCGAGCTCGGCATATTTCAAAAAAG -TAGATTTGCTGAATTTGCCGAATTTGCCGAGTTTGCCGAGTTCGGCAAAT -TTGCCTATTTAGCCGAGCACGGCATATTTCAAAACAGTAGATTTGCCGAA -TTTGCCGAATTTCCCGAGCTTGGCATATTTCAAAAAAGTAGATTTGCTGA -ACTTGCCGAGCTCGGCAAATTTGCCTATTTAGCCGAGCACGGCATAGTTC -ACAAAAGTAGATTTGCCGAATTTCCCGAGCTTGGCATATTTCAAAAAAGT -AGATTTGCTGAACTTGCCGAGCTCGGCATTTTTCAAAAAAGTAGATTTGC -TGAATTTGCCGAGCTCGGAATATTTCAAAAAAGTAGATTTGCTGAACTTG -CCGAGCTCGGCATTTTTCAAAAAAGTAGATTTGCTGAATTTGCCGAGCTC -GGAATATTTCAAAAAAAGTAGATTTGCCGAATTTGCCAATTTTGCCGTTT -GCCGAATTTGCCGAGTTTGCCGAGCACGGCATATTTCAAAAAAGGAGATT -TGCCGAATTTGCCGAATTTGCCGAATGTGCCGATGCCGAGCTCCTGTTGA -TTTTTTTCCAAAAATTCAGTAAAACGACACAAATTTGTTTTAAGAATTCA -TTAGTTTCGGTGCTCCAAACAACATCAAAAAATATCAAATTTTTCCGAAT -TTGTTAAGCACGGCAAATTTGCCAAATTTGCCGAATTAGCCGAGCACGGC -TAATTTTGAGATTTGTCGCACACCCCTGATTAGGACCGAGAAAAGGGCCT -AACATGATTTCACAATTTGAAAAATGAAATTCAATTTTTCTTGGGAAAAA -AGTATGAATCTCTTCCTCCGCCCGTTTCCGGCAGAAACAATTGAACCAAA -CGAGCCAAAAGTGCACATTGTGTAACTTTGTTGGGGAGTGTAGATAACCA -GAAGAAACAAGATGGAACTTTCTTGCGATGAACAAATTTTGGAACACTGG -AGGGAAATGATTGGTGTTTTTTAAGCTTTTTAGTCAATTTTTAAAACTGT -TCTACAATAGGCCCAAATAGGCCTAATAGGCAAATAGGCCAAGTAGATTA -AATATGCCAAATAGGCAGTATAGGTTGAATAGGTAAACAGGCCAAATAGG -TCAAATAAGCTAAATAGGCGAGACTGGTGCTCAAATACTTTTTGAACTGG -TAATGTTTTTTCTTCTACACAAAAACAAAAAAGTCCCTGCTTAGTTCCGC -AAAATTGTGATTTTTTTCAAAAGTTACCCATTTTTGCCACTTTTCAATAG -TTTTTGATAGGTTAAATCTAGATTTTCTGAATTCAGCATATATGAATTAC -CCGTTTTCAACAAATTTAGGCAAATTTTTATTTTTGCCCAATTTTTTTAG -CCATCTAATGACTGATTTTGGGCAAAAAAAATTTTCCTGAAATTGTACAA -AACCATTAGAAATTGAAAGGCTCCTCAGTTTAAAGGCACATGAGGTTTTT -CGGAGTGGGTGGCAATTGTCGTTCGGCAAATTTTTTGGTCGACAAATTCG -ACAAATTGCTGGTTTGCCGATTTGCCGGAAAGTATTTTCTTACTTTTCAA -AATATATGTACGAACATTCAGAGGATGCTTACAATTTTGCCGGATAAAAT -TTAAATTCTGAAATTTCCAAAAAAAATGTGCAAAACCATAAATTGCCAGA -AATTTTTAATTCCGGCAATTTGCCGATTTGCCGATTTGCCGTAAATATCA -ATTCTGGCAAATTGAAGATTTGCCTTATTTGCCGACTTGCCGCATTCCCT -GATGTAGGCATCAAAACGACTGAACACCAAGTTTTTTTGAAATTTTTTAA -GTTTACCTTTATAATTTTTAGTGCTCAAAAAGTTCCAAAATTAAATAAAT -TTTGAAATTTGCCGAGCTCGGCAAACGGCAAATTTGCCGCACACTCCTGT -TTCAAATGTTCACCGCATATTTAATTATTCCGGAAATCCCCTCAAACATC -CATCAAAAGTGTTTTCCCTGATTTGTTGACTCTGACACCGACGGTGGTTG -TTCCCCCCCCCCCCCACTCTCTCAATTGGCATGTAAATGAGCCCGTATGA -ATGAAGTGCCTTTTGGCGGCAAAATGCATATCTCCAAGTACCATTGAATT -AATCTTCCATCCCCCATTGTCTCCTTCTATATAGGGGGGAGGATGCGTGA -TTCTTGAAATATGCTCCAAGTGACAAATTGAGCGTGTGTGATGTATCGTG -GCAGATGGCTGGCTGACAACGGATCAGTTCCAAAAACTGTATCAAACGGG -GGGAAGAGAGGGGAGATGAAGGATGGGGGCAGATGGAGTCATCGATGCAC -CATGTTTTTTGGAGCTGTTCACTCAGATATTAGGGTATTTTAATCCCCTT -TTTAAGGTCTATTTCTGATCGTAAAACTTGGTATTTTCAACTCATTTTTA -ACTCAAAAATTTCAAAAGTTTGAAAAATTACACAAAAACCTAAATTTTGA -TCTGGTTTCAGGCATTTTAGTCCCTGTTAAGCGTCTTCGATGCACCATGT -TGTTGTTCAACTTGTTTAAACTTTTTAGTTCCGCATCGAGGAAAATGGAA -AATAAAAAATTATTTATGTATTCAAAAACCATACTTTGATTCTCCGTAAC -AACGCTTTCATGGGAGGCAGGCCCGGTTTCAGGGCCTGACGCCTGCCTCA -AACCTGCCGGCCTCACGCCGGCCTCACGCTTCATTTCTGCATTTTGGCGA -AAAATCAAATACTTGGACATAGTGAAAAGGTGATTTTTTCGACGCGGCCG -ACACTTTTCGGGTTCCGCGCCGCACTATACAGGAGGCGAGGCTCGCGGCG -CGAGGCAGGCGGAGGTCGCCGCAAGGCAGGCGCGGCAAGCATTTTTGTGC -TTACATGGATACCCTAGTCTACACAAAGCACGAATTTCTGGCTTCCCTCA -TAAATTGAAATGGAAGAGTTTTTGCCGAACTAGGCCATTTTGGCTCGGCC -ATATCTGGGGTAGATTTGCCGTCGCGTTGCGTGTCGCGTCGCGGCTCGAT -TTTAGTTGTAAAACTAAATTTATTTGTCCGTGTGGAGTACACGACTTTCC -CATGCGTTGTCCGGCGGGCGATTGTCAATGGAGCGCAAAAAATTCAATGA -GAAAGGCCAGAACCCAGTGAAAAAGATAATTTGACAATTACAAATAATGT -TTTAAAATTTTTTTTTTGTTTTTGATTTTTGGTTCTCCTTGTGTTTTAAG -AACATGATGCATCACCGCTGGAAATTGCTGGATATGTAAAAAAATTATTT -ATGTACATATTTAAAAATCAAATCTTGATTCTCCGGGATAGAAGCATAAA -TCAAATTTATTACTGTAAATTTTCACTTTCAGTACATTTAATTGAAATTT -TTAAGCTTTGAAGTTCAGGGTATCATAGTTTTGCCTCCAAAATCCACTTG -CCCAAAAAACAAGCCTGGGAATTCCCGGCGGGGGACGATGGTTCGATAGC -ATCAATCATATCTGTGTGTGTGTGTGTGTGTGCAAGGCGGGGGATGAGCC -GGCGCGCGAAACGAATAAATCAAGAAACGTCTCTCTTTCTGCGAGCACGG -ATTTTGTTGTGAGCCCGCGCGCGCGCGGTCTATAGGAGGAGAGGGGTATC -ATGCACTTCTAATACAGGGCATACTTCTTTCATTTCCATGTTTTTGTACA -TGTAATAAAATTGTTAATTAGCCAAAAGTGGTTCACATGTTCACGTCGTA -AACGTCGGTTTTCAGGGTGTACTGATAATGAATGTGCTCTGTGTGGAGAC -AAAGAGGCAGCAGAGAGCAAGAATCAGTTAGGTTAGGCAGGTGACTTTTT -TCAATTGTGACTAGGAAAAAGTATTTTGGGAATTTTTTTTTATTTTTTGG -CTTCTGCCCAGATTTTCAGGATTTTTCAAATATTTACAGAAATTTTCGTG -ATTCTACAATAATATTTTTGTAATTTTCTCAATTTTCAAAAAATTGCCAA -TTAATTTTGAAGTTTCGAATGAAGCAATTGCCGAAGTTGCCGACTCCCGG -AAATTTCGAAAACCGGCAATTGCCGAAATTGCCCTTTGCCGGAAATTTCG -AAAACCGGCAATTGCCGAAATTGCCCATTGCCGGAAATTTCGAAAACCGG -CAATTGCCGAAGTTGCCGACTCCCGGAAATTTTGAAAACCGGCAATTGCC -GAAATTGCCGACTCCCGGAAATTTTGAAAACCGGCAATTGCCGAAGTTGC -CGACTCCCGGAAATTTTGAAAACCGGCAATTGCCGAAATTGCCGATTGCC -GGAAATTTCGAAAACCGGCAATTGCCGAAATTGCCGCTTGCCGGAAATTT -CGAAAACCGGCAATTGCCGAAATTGCCGATTGCCGGAAATTTTGAAAACC -GGCAATTGCCGAAATTGCCCATTGCCGGAAATTTCGAAAACCGGCAATTG -CCGAAATTGCCGCTTGCCGGAAATTTTGAAAACCGGCAATTGCCGAAACT -GCCCTTTGCCGGAAATTTCGAAAACCGGCAATTGCCGAAGTTGCCGACTC -CCGGAAATTTCGAAAACCGGCAATTGCCAAAATTGCCGATTGCCGGAAAT -TTTGAAAACCGGCCACTGCCGAAATTGCCGACTCCCGGAAATTTCGAAAA -CCGGCCACTGCCGAAATTGCCGACTCCCGGAAATTTCGAAAACCGGCAAT -TGCCGAAATTGTCGATTGCCGGAAATTTCCGATCCCTGAGTTTAGCCTTT -TTCAGCAAATCAAACAGTTTATGATTATTTTTTCAAAAATTGTTCTGCAG -TGCTCTTGCATCACTATTGTGGCCCTCCTTTAAATACAGTACTTTCTACA -GTACCACTACATCAATGATCCTTCCAGTAATGCCAACACATTGTACCACT -ACAGTAATCCTACAGTACCCTATACAGTACCGTCGCAATACAATTACCGT -AACACTATGGAAATCTTACAATAGACTACAGTATACAAAAACTACAGTAA -CCCCCTTGAAGTTAGTGTAAAACTTGCAAATGTTCAACTCTTTTTTCTGA -TTTTTTTTTGTTAAGTTCAGAAATTGTAGAGTGTTTTTGGCTTCTGCTCA -GATTTTCAGAAATTTTCGTGATTCTATAGTAGTCTTTTTGTAATTTTCTC -AATTTTCAGAAGTCTGCAAATTCAATTTGAAATTTCGAATAGCTTTAAAA -AACTCAAACAGTTGGCACAAATTTTCGTAGATTCATGTAGAATTTCAGCC -TTTTTCAGCAAATCAAACAGTTTTTTATTTTTTTTTGTATTTTTTCAGAA -ATTGTTCTCACCCTCCAAAGTACTATCACGTCCTAACAGTAATATTAGCC -TACCGTATCACTACAGTAATCCTCCAGTACTTCTGTGCATGCTACAGTAC -CCTTGCATCACCATAGTGGTGATCCTTTAAACCTACAGTACTTCTACAGT -AGCACTACAGTACCACTTCAACAGAATCTTTCCAGTAATATCAGCGTATC -GTACCACTACCGTAATCCTACAGTACCGCCACAATACTATTACCGTAACA -CTATGAAAATCTTACAATACACTACAGTATACAGAAACTACAGTAACCCC -CTTGAAGTTGGTGTAAAACTTGCAAATGTCTACCGTAATCCTACAGTACC -CCAATACAGTACCGCCGCAATACAGTTGGCATAACACTATGAAATCTTAC -AGTACACTACAGTATGCAAAAACTACAGTAACCCCCTTGAAGTTGGTGTA -AAACTTGCAAATGTTCAACTTTCTACAAATTTGCCATTAACTTGTAAGTT -GGGGGAGCGCATCGAAGTGTATACATATATGTACATGCCAACCAATTATT -TTCTCAAACAATTTATTAATAGTCGAAGACACCTGAAGCAACGATTAGGA -GGAAGAAGAGGAAGGAGAGATTGGCAGAAGAAGAAGAAGAAGACGAATTA -GTTGAAGAATCTGTTGAAACGGAAGACGTTGTTTGTGATGTCTCTAGCCG -TGCGACAGCTTCCCGTTTCAGACGGAACGATGTTCGCACGGCGATCGGTG -GCGAGATGTCGGACACGTCGATTGTCGACGAGAAGGGATCAGAGACGGTT -GAAGAATGCTGAGGAGGAGGATTATGTCGACGTTCCCGTCCACGACACGC -GGCCTGGGTACACGTGACACAGACGTGAAGGTTACAGAAGATGTTCACCT -CGTTGCTGGAATAATAGTCGTTGAGAGGTGGGTGGTGAACATGAACAAAG -AACTTAAGAGGCTTACCTCGTTGGGAATGCCCAGGCCTTTATGTGGTTGT -AGAAGATGGTCTTACCATTGCGTCGAGTCACTTCAAAGTCTCCCCACACC -TGGAACAATTTTCTATGGAAGTCTCAAATAATATGCAGTTGGTCGATGCA -CCATGATGAATTTTGTGCCAAACATGGTGCATCGACGCTAAATAATTTTC -TTTTGAAATTTAAAGATGTTTTGCTAGACTTTCCCTAAACATCTTTTTAG -TTTTCCAATGTTCTCTAATATCATCATGGTGCATCGAGAAAAAATGTTAT -AGGAGGAGTAAAGAAATTTGAGACTTTACTTTTTTAGACCAAAAATGACC -CAAAACTACCGAATTGTTTAGTAAGACGTTTTGAAAATTTTTCAAAACAA -AGTTATGGCGGTTCAAAGTTCTGGAAAATAGCATATTTTCAGCTAAAATC -TAATGTTTTGGGGGCTGGGGGAGGAATAAAAATGTAATTTTTTTTGTGCC -CCACTGCCCGAAAATGCACTTTAATCGACGAATAAACGGCTTATAAAGGG -CCACAATATTTATAAAAGAGTGATATTATAGTTATAAATAAAAATTGAGT -TCCCGACCGAGAAAAAAATTGGCGAAAATTTTGATTTTAGCTGAAAATGG -GACTTTTTTTCCAAAACTTTGAGCGGCCATAACTCTTTTTTGAGAATTTT -TCAAAACGTCTCATTTAGAAATTCGGTAGTTTTGGGTCATTTTTGATCTA -AAAAAGTAAAGTCTCAGATTTTGATACTTTCTCGATGCACCATGATGAAG -AGAAAAAAAGAGAAAATTTAGAAAAAAAAAAAAAGAACCCTTCCGATGTT -TTGGGAAAGTTTAGCAAAACAATAGATTTGTAAAAAATTCAATTTCATTA -GGTTCCTATTAAATTCTCAATTTTTATCAATGCACCATACATTTTCAGCG -TGAAATTTTGTAAAATGCACAGGAATGAAAATTGATCAGGTGTGTATAAA -ATAAGAAATTGAAGCATTTTGTTTTTTTTTTTGTCGATACACCATGATGA -ATTTCACGTCAAACATGGTGCATCCTGGAAAGGAGAGAGTTTTAAAAATG -TATCATTTTTTTCTCGATGCACCATGAAGATTTATATTAGTAGAACTTAA -ACCGCACTTAGCATAAGTGGCATAAAAATAAAGGTGGAGTAGCGCCAGTG -GGGATTTTGTCTAAATACACTTATTATGATCCAAAACGATCGAATATCTT -AATGAAACACTCCAAAATATTTAAGATTTTTCAAAATTTCCGGTCAAAGT -TTTGGCAAATTGCCAAAATATTGAAAAAAAATATGAGCTTTTGAGGAAAT -CCAAAGCAATGTCGCGTGTTTCGACCCACACAATGTTTTTATACAATGTA -GAAAAAAATTTTTTTTTGGTCGACTTTTAAAATTATGAGTGGCAAAAACT -GAGTAATTGCCAATTTGACAGTAAATAAAAAATTTTCAAAAACATTTTGA -AAAGTTTTATTATGATATTCGATTATTCTGGCACCATTTGAGTGGTTTGT -AGTAATTTCCCCACTGGCGCTACTCCACCTTTAAAATTAAAAAAAAAATC -ATAATGGGTATTTAATATCAATGAAAATTATCGATTTTTCCAAATGTATC -AAAATGAGTGTTCAGCGCGAAATTTTGTGCAGGACTTTTTCTTTCAATAA -TATATCCCGAATGATGCATTAGTTATGGGCTACACGATTTTTAGAAAAGC -ACCTGGCCATGCTTAAAGGTGGAGAACCGAAATTTGATACTCTGTCTTTT -TAGATCCAAAACGGTCCAAGACTACCAATATTCGTATTAACCTGTTCTGA -AAAATTTTCAAAAAAAAAAGTTATGGCCGTTCAAAGTTTTGGAAAAATGG -TCGATTTTTAGCTAAAATCTCAAATTTTGGCAACTTTTCAATGTCACAGC -TGGAGCTTAATTTTAGAAACAACACGTGATAAATTGCAAAAACATGCATA -AAAATATGTTCCAACCGCTCCGACACTAAAAAGGTGCCAAAATTTGAGAT -TTTAGCTAAAAATCGACCATTTTTCCAAAACTTTGAGAGGTCATAATAAC -TTTTTTTTTTGAAAAATTTTCAGAACGTCTTAATACGAAATTTGGTAGTT -TTTGGACCATTTTGGGTCTAAAAAGGCAAAGTATCAAATTTTGGTACTCC -ACTCACTATCGAAGCAGAGCCCCAAAAGTTTGACCGACCCAATTTTGTAA -GTTTCTTCGATGCACCATGATGATTTTGAGCAAAATGTTAGTTTTTTTTT -TTGAAAAACTGGTGGCAGGACCCAGTTTTCGGCAGTTTTAAATGTCGATG -CACTATGTTTTTTTTAATGAAACCGTACCTCCCCAGAAGTCTGCAAAGAG -CATCCGTGTGAGTCCGACAGTGGTAGCTCGGATATCCCGTCATTCGCCCA -ACACCTTCCGATTCGTCCATTCTGATCATCGCTCATTTCAACTGTGTACG -TCTACAATTTACAAATAGTTTCTTTTGATTTATGGAGTTCCTGACTTACA -ACTCTATCACCAACTGCTAACGGACGTTGTAGCTGCTTTGAATCCAAACT -GTCGCCGTCTAGAACACGAACTCGGTAGTCGACTGTCTGAAACATTATAT -GGGTCTCGCAGCGATAATTTTGAAGCCTTACCTTATTATCCGATAGGCTG -CTTGCTGTGGTGGCATCCGAGTTGATAGTGATTCCACCAAATGATACGGT -CACCTGAGATTCTTTAGGAACAGGGGCAGCAGGTATACAGGTCAGAAGGA -ATCGTTTGTCGGTTTCTGCATTGAATCTTAAAAAAAAACGATGAGGAAGT -TATTTTTTATTTTTGTCTATTTTTGTTCGTATATGGTTTTTTAGGTACCA -TGGAATAAAAAAAATGCTCCTAAAAAAATTAGTTTCAATAACAAATATTA -CTGGTACAGAGAGTGTAGATAGTTAGAGAGTGACTGACATCCGGGACCCA -ATGGGGCGGGGCGCGCGGAAGAGACGATTCGTGTCGATTTACGAAATGAT -GACAACGAGGAAAATTTCGTAAATCGACACAAATCGTCTCTTCCGCGCGC -CCCGCCCCATTGGGTCCCGGATGTCTGTCACTCTCTAACTATCTACACTC -TCTGTACCGGTAATACCATAATATGATCATCATTCTACATTAGAAAAAAA -TCGATCTGAAATCACAGATTTTTGGCCTCCCTCATAAATTGAAATGGAAG -AGGTTGCCAAACTAGGCCATTTTGGCTCGGCCATATCTGGGGTAGATTTA -CGGCGCGTTGCGTGTCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAAAT -GTAGTTGGCCGTGTGGAGTACACGACTTTCCCACGCGTTGCCCGACGGGC -GATTGCCAATGGAGCGCGAGAATCTCAATGAGGAAGGCCATGGCGCGCCA -GAACCCCATGATTTTTAGGGTATTTCGAGGTTGGCAAATATTCTGGAATC -TTTTTGCAAAATGTTTTTTTTTTTTTGAAAAAAAAATTCCAAAAAATATC -CTGATCGATGAAAATTGTTGGGTGAAAAAAGTTGCAGATTTTAGGAGAAA -TTTGAGAAATTAGAAAAATTAGAAATTAGGAGAAATCAGAAAATTTCCAA -ACTGCTTTCAGAATACTTGTATATATTGAAATAGCCTAAAAATCATGAAA -TTTTTCAAAAATCTCTAAACTAGCCTCCAAATTTGGTAGTAAAAATTCAC -TGGCAGCAACTTCAGAGCGAGATTTTTCTAGTTTAAAGTGCTCGTATGTC -GCTGAATTTTTTGTAGGTACCTATTTGAAAGCTCTTTTTTCAAAATTCAA -AAATTTAATTTTCAAGTTTAAATTTTGAGTAGCGCCAGTGGGGGATTTTG -TCTAAATACACTTATTATGATCCAAAACTACCTGAGTAATTGCCACTTTT -TGACAGTAAATAAAACATTTACAAAAAAAAAAAGTTTTATTATGATATTC -GGTCACTTTGGGACCAAATGAATGGTTTTTCATAATTTCCCCACTGGCGC -TACTCCACCTTTAAAACTGAGCGGAAATACTTTCCTTGTGAGCATAGCGG -CAAAAAACCTAGTACCACATGGCAAAAAAAAACCCACTCATTGTTAGCCA -TGACAACTTCGATCTCATTCTCCAAATTGCCTTCTCCGTTCTCCTTGGTC -GAGCAGCCAGTCAGCGGAATCTAAGCAAATAATGCCCAAAAATTCAATAC -ATTCAATAGGCAAACCTTCAACTGATATTTGGTGTCCGATTGAAGCGTGC -CATTTGCATAGATACACTTTGGATGGCCCGCGCGACTTTGTATCGTGCCA -CGGAAGTTTTCGTCAAACTTGATTTTCAATAGGAAATCTGTCTGCAATAT -TGAAGACGTTTTTTTCCTTTTGGGTGGTGACCTTCAAGGTTTTGGCCTGG -GTTTTTAATCTTCCATTAAATGCCCTTCAAATTCGCTTTTTCGAGAGTTT -AAGAGAGTTTCTAGGCCGAGGAACTTCTTGCAGCCAAATTTCTAAACTAT -TGTGTTTTTGCCAAAAACAATGAAACATTTTAGGTCATTTGTGACGTCAT -ATTTTTTCCATGCAACTTTTTATTGGCTCCACACATCTTCCAAAAAGCCT -AAGCCTGAGCCTAATCCAATGTCTAAGCTTAAGCCTAAGGTTCAGCCTAA -GCGTACGCCTAAGCCCAAACCAAAGCCTAAGCCTAAGCCTAAGCTCAAGC -CTAAGCCTAAGCCTAAAAAAAACCGGAAAATCCTAAGCCTAAATAGCGTC -AGTAGCAAGCTAACGCTCGCCACTGACGCCAAACCTAAGTCTCGGCTTAA -GCCAAAGCCTAAGCCTAAGCCTAAACCCATGATTAAGCCCAATCCTAAGC -CTACGCCTAAGCTTGAACCTAAGCCTAAGCCTAAGCCTAAGCCTAAACCC -AAGCCTAAAATTTCTAGGCCACCACTAATATTTTCAAAACTCGATTCTCA -AATACTTCATTTTTTCAGGATATGAAAGTAGGACAGAAATGGGCAGGGTA -TATGGTATGGAGCAAATATCACAAGATGGCAGAAACATAGATACGGGGTG -GGAGTGTTGGACTAGGTGACTTTTCTAGGCCATCCCTACCTTATCACACG -CAATAGAAGTGTCCACAATGGCCACCGATCGAATCAGCGGTGGCAGCACC -ACAACCACCGACCAAATGATCCAGTGCAGAATCATAAATTTGTGGAGGGA -AAAATCGATAACAGTAGTGAGGGTAATAGTAGTAATAATACAAATATATA -TGGAAAAATGAATACAAAAAGATGTGTGCGCTGGTTGGGGTGGTGGCGTA -AGAATACAGGTGGGTGGGGGGTATAATTGGAGCGTGGCCGAGGAGGAGAA -TCGCAAAAAAAAGAAGGAAAGAAAGAGGATAGTAATGACATGTTACGGTA -GAAGGACAACTACCTAATTATATGAAAGAGGGGGGGGGGGCGACGAGAAG -AGGAAAAAGTCTTACGCAATTTGCTACTCGACTTTCAATTTCTGCTAGAA -ATCGAAAAAAAAATAGGAAACAAATTCCGACTCTATTCGATATCATCACT -TCCGGGGCACGGCACAGGTCGGATCAGATTCAACGACGTCTCGCGATCCC -GACCCTCTGATCTTACGGCCATCCCATTGTTCACATGATAGTCGATGAGC -TCGGAGATGTTGCTGAACGTGCGATCGCGGGTTCGGACTCTCTGGAATTT -TGAGAGGTTTGAAGGTTTGGCGGGGGGGGGGGGGGAGGGTCTTACGTTGT -GATTGTCCAGTAGGATGAGATGTTTGTGCTCGTTTTCAGCGGTTCGGCCA -CTCAGCACGTACTTGCCGGGCGTGTGGTCGCTTTGTCTGCAAGGAACTGG -ACAAGTTTGAGCGGCCGACAGCTTGCGGGTCTTTTTTTAGAGAAGGGGGA -CTGTGAGGTGTCCGCTGCTTCAGACAATCTTAGCATCATGCAAACCTTGC -ATCTTTTGTATTTCAGGAAAAAAAACGCAGAATTTTTTTTGAACAAAAAT -TTCAGCCTAAAACAAAAATCTAAAAAAATTTTGGGAGGATGAACTTATTA -TACCAAATTTTTCCCTGGTCTTTCAAGAATTATTTAAAGTCCCGTGGCTT -CTGAACATATTATCAAACAAATTACAGATATGAAATGTGACTGAAGCTTT -AAGTCAGAAATATATAAAAAAAGGATTTTTCATACTATTTTTTCAGTCAA -ATTTGATTTTTTTAGACTTTCAGATTTTTCTACGAAGTCTGTTAAAATAG -GCTTATATTAAAAAGCTATCCGATTTACTATTAGTAAAAAATTATAGCGA -CCGACATCTCGCAGGTTGTTAAAGAAAGGTGCATTGACCGGCTCACGCAA -CTTTGGCAGTTTATATCTCGGCTGGTTTTGGTTTTATTTAAAAAATTTCA -ATTGACGAAATATTTATCACTTTTTCTACTAAAAGTTTGCAGTTGAACAC -TTTTTGCTAGCAGCGATATTAACCGAGATATTAGCGGAAAAAGTTACATG -AGAAACATGGTGCATCGACAAGAAATATCTCACAAAACTTTGGCAGGTTA -TATCTCGGCTGGTTGTGGTTTTATTAAAAAATTGTTAATTAACAAAATGT -TTATCCTTTTTTCTACTACAACTTTGCAGTTCAACACTTTTTGCTAGCAG -CGATATAAACTGAGATATGATTGGAAAAAGTTACATGAGAAACATGGTGC -ATCGACAAGAAATATCTCACAAAACTTTGGCAGGTTATATCTCGGCTGGT -TGTGGTTTTATTGAAAAATTGTTAATTGACAAAATATTTATCCTTTTTTC -TTCTACAACTTTGCAGATGAACACTTTTTGCTAGCAGCGATATAAACCGA -GATATGATTGGAAAAAGTTACATGGAAGACATGATGCATTGATCAGCTAT -CATAGCTCATATTTTACTTATCTCAGGTTTTACCAAAAAATTGCCAATTA -TTAAAACATTAGCCTTTTTCTTCGAAAATCAAATTTTGCCCGAATTGCCG -AAAATATAGATTTGATATTTTTTTGTAGATTTAGGAGCCTAAACATTTTT -TAATTTTTTAAGTATTGACCGTTTGCTTTTAAAAATGACTAATCGAATAC -TGAAAACACAGTTAACTTTTTTTTCAATTTTCGAATTATAATTAGGTTTG -AAAATTGCCGAAAATGTCGGCATTCAGTTGGAATTTTGGCAATTGCCGAA -AATTTCCGATTCCCACGCGCCCCTGGTGTGAACCTAGTGAGCATGAAGCC -AAACGTTTTAGAAATTCAGCAAAATTCTAGCTTTTTTCTATAAAAAATCT -AAAAAACCTTACCGAACCAAAAAATCGCCTTCCGTCTTCAACAAAGCCTG -TGCATCCTCTCTGGATAAATTTCCATGATACCAAACTTTCCCCACAACAT -CCTCAGTTACAGTAGGTGCTCGGCAATTCGACACAAATGACTGTCGATGC -AGGGAACTTCGATGTCTCATCGGCGGCGCCGGCACCGTAAATCCATCGTT -AGAAGTTGAAGCATTCGCCTGTGCATCAAAAGTGTTCACATTGATCGCAG -TGGTAAGGACGTCGATGAGCTTGTGCACATCCTCGATGAACACCACGTGG -CATCGACGATCCGTTCCATCCTTGTTTTTTGCAATGTAGCCGAACATTAG -CTCCGTGTCCGTACCCTTTTGGCCTTGGGCTCCGAATGAGAAGAATGAGA -AGGGATGACGTTGAATTAGACGACTTTGTTTTATGATTTTGATCATTTTC -GAGGAAATGTTGATGTCTACGGGGAAGTTTTCTTTTTTCACTTCACCGAT -TACCTGAAAATAAGGATGGTTTACCTGGGCTTTTTCATCGACCCGTGAAG -TGTCGGCTGCAATAATTTTAGTCGAAATTAGTGATAATAACTTTTCTATG -AATAGCGGCTGACATCATTTAGCGCGATTTTTGATCGACCTGTAAGATGT -CGGTTGCTTTAGTACATTCTATAGTGGCAGGCTTTTGGCTGAATTTTACT -GGATATATAAGCTATCAAAATTTGAGCATGTCGATGCACCATGTAATTAT -CTCAGTTTATTTCGCTGCTATCAAAAAGTGTTAAAATGCAAAGTTGTAGT -AGAAAAAACGATAAATATTTTGTCAATTGACACTTTTTCAAAAAAAAACC -AAAACCAGCAGAGATATAAGTAGTCAAAGTTGAGTCAGATATTTCCAGTC -GATGCACCATGTAACCTTTCTCTAATAACCTGTGAGATGTCGGTTGCTAT -AATTTTTTAGTCATTAATTTGGACAGCTTGTTAATTTGAAATAATTCTTG -ATGATATCGTAGCGCGGCCGACATTTCACGGGTCCTTTTTTTTAAACATT -TTGCAAAGCTGGTCATGCATTTTTGGTAACACTTAATATCAAATTAATGA -GAAAATGTTTTGTAAATTTTTACCATTAGCCATGCCCAGAAAATGGCAAG -TTTTTTATTTTATTTTCTTTTGTTTTTTTAATTCACAAAAAAAAACTCAC -CCTACTAACAACTGGATTGATTTCTCGAGCCGCAGTCACGCCAACAGTAG -CTGCAACGTGTTGTATACATTCTCTGAAAATTGAACAGTTACTTTATTAC -GTAGATTTTTTATATATTTGAGCTTGCAGATGTTACCTGCCTTCATGCCT -GCCTACCGCCTGATTTCTAAATTTTTGAATAAGATTTTTTTTTGATTTTA -AGCCATAAGAAAAACTAACGAAACAACTTGAACTCTCATCTCGGAAACCA -TCACGTTAATTGACTCGACTACTGGAACACTTCCGAGGTACTGAAAGACA -ATTTTATATTTTCGGGGAAAAAACTAATAAAAAACTCACAGTAGCCGACA -GAGAAACCCCGCTGCTCCGCAGCTCCTCTGCAAATGAGGGCTCCACGTTG -AGCATCGCCGCAAGTTGATTTTTCGACGGAATTTTTGATTATTTTTAGAA -AAAATCTAACTCGAAATTCGTTACAACCGAAATTTTGCAAGATTGAGTGA -ATGAGGAATGACCGGGAGAGAAACGGAGACGCAGGCGGTGAGCGGAGTGG -GAGAGAGAGCGCGCGAGACGGAGAGGCGCAGGCAGTGGTAGGGAGGAGAC -AGGGAAAGATTAGATTGGTGTTGACTGGGTGAGTCAGCATTCTAATAAGT -TAAGTTGACTCATAACTTTGTTTTTTGATCAGAGGGGGGGGGGGGGGGCC -GTGGCCTAGAAATATCATTGCCTACTTATTACGTCACTAATGGTCTAGGA -AACCTTGATAGCTTTTTTGGAGAAGATATGACGTCATTGGTGGACTAGAA -ATCTTATTTTAGTTCTGGAAGAGAAATATTTTGACCGTGGAAGACAAATT -AATGATGTGACCGGTGGCCTAGAAGTTTCAAATTATACCTGGGGAAATAA -ATGACGCCACTGGTGGCCTAGAAAACTTAAACTATGCCTGAAGACGTCAC -CGGTGACCTAGAAATTTAATTCTGGCGACGTCATAGAAATTTGAATTTTG -ATGAGAAATATAATTTTATTGGTTTTCTGAAAATTGAATTTTATTGATTT -TTTGGCAACCGGGAAATTGGAAAATTTAATAAATTGAACAAATGCAATAA -AATAAGCAGTTTTTCAACAGTCATTACTTTTTTCCGTGAACCGTTTTGAT -TTTAATTTGTAAATCTAGGTCGGAAAAGTCACACACACCGAGGAGCTAGG -CTTCCCTCATCCTCCCTGGATCAGTCGGTAACTGCTTCGACTGGGGAGTG -GGAGTGGGAGGGGTGGGATGAGTTCAATTCTTCTGGAATTCCATAATTTT -TATTTTTGTTTTTTTGCGCCTACATATACCTGTGAAAATTGGAACTCGAC -ACAAAAACCTCTCTAGCGCGGCTTAAATTTACTTCAATTCTTCCGGAATT -CCATAATTTTTATTTTTGTTTTTTTGCGCCTACATATACCTGTGAAAATT -GGAACTCGACACAAAAACCTCTCTAGCGCGGCTTAAATTTACTTCAATTC -TTCCGGAATTCCATAATTTTTATTTTTGTTTTTTTGCGCCTACATATACC -TGTGAAAATTGGAACTCGACACAAAAACCTCTCTAGCGCGGCTTAAATTT -ACTTTCCTGTCCCAAAAACTCATCTATAATATTTTTAAAAAATCTAGAAT -CCAAATCTATCAGATTTTTTTGAATTTTTGATTTTTTTCACATCGAGATT -CGGAATCAGCGGAAAATTTGGAGTCAATTAAAAATATTTTCCAGATTTCG -ATACTCCACATTTAAAGGAGATCACCTGAAACGCCAGAATATGATACTTC -ATACTCTCCATCTTCTCGCTTTTGAAAATAATCAAAAAAAATAGTCGCCG -TATTTATTGATATAGAAAAAATACCAACAAAATTGTAACTATTGATTAGC -CATACAGGGTCTTTAAAGTCAACATTCATAGTGGGAGCTGGAAATAAAAA -TATATAATAACTTGTTAAAAGAATTTATTGTGGAGTTATAACACCTATAG -ACAATTAAAATCACCTGCTGCCTAAAGAGTATTTACCAGAAGCAAAGGTT -TTCTGAATTTAGTGGAGTTTGTCCATTTACTTTTTTGCATGTTATTGAAT -TGAAATGATACATAGTGAAACTAGAGGTAAAATTATTTACTAGGTTTAGG -CTTAGGCTCAGGATTAGGCTTAAGCTTAGGCTTAGTTTTAGGTTTAAGCT -TAGGCTTAGAATTACCGATAACTGATAACTTTTGCAAATTTAGTTTCTGT -AATATCGGCAATAGCCAAAATTGCCGGAAATTTCTGCGATTCGAATAAAT -AAATTGAAATAAAAATTAGTTCCTAAGATACATGTTATCTTTTTGCAGGA -AAGTAGTAAACTCATGAAATGAGAAATTGCGATGAGGAAGGAAACATTCC -TATGGTTCCTTAGACAATTTCTCACCTTACATTAGTATATAATATATAAA -TGATGAATTTGACTTTTTGAAATTCTCTTCAATAAATACATTTAGTTGTT -TTTTTTTTAATGAGTAAAGTTGCAGAGTGTGGAATTTGCTATGAGGAATA -TGGTGAATATTGTTGGAAATTTTTCTGAAAGTTTTCATTTTTTTTGGAAA -TTTAGAGAGTTGGGTGTAATTACTGAAAATTATGTTTTAAAAAAATTATT -TTAATGATTTTTCAAATTTTACAAAAAACTCATTTTTAAATCATTAGAGG -TGAAGTAGCGCCAGTGGGAAGATTGTTAAGATCCACTCCTTTAATCCGAA -AAGTACCGAATATCATAATAAAACTTTTCAAAAGTTTTTAGAAACTTTTT -TATTTACTGTCAAAAAGTGACAACCACTCAGTTTTTGCCACTCATAATTT -TGGAAGTCGACCAAAAAAAAAATTTGTTTTCCTACATTTTTTATACTTCA -ATTTTGTTTTAATTATTTGTATTGAAAAATTGTAGGGGTCGAAACATGCG -ACAATCCTGTCAGTTTTCAAAAATCTCTACTTACAAAATATAGGACACGC -TCCAAAAATGGATGTTTTTACAGACAACGCCATCCGAATCCCTTGCATCG -GCACATGCGGTCATACGTTATGTGACAGTTGTCGTGAGAAAATTAGAGAT -AAAAAATGTCCTCAGTGTAATCAGAAAGGCGCATTTGTTGTGAAAAATGT -GAATAAACAATTTTGGGATTTAATTGTTTTTTCGCAATTTTTAAAACCCC -AGGAAGTGGAAGTTGAGGAGACTGAAGAGGTTGGTTAGAACTTTTTTTTT -GGATTTTTCGGTATTTCCGGGAGGTTATCCTTTGGGCCTAAAACTAGGCC -TAAGAGTAGGCCTAAGCCTAAGCCTAAAACTAAGCCTTAGCCTAAAACTA -AGCATGAGCCTGAGCCTAAGCCTAAGTCAAGCCTAAGCCTAAGTCTGCTG -CTATCAAAAAGTGTTAAAATGCAAAGTTGTAGTAGAAAAAACGATAAATA -TTTTGTCAATTGACACTTTTTCAAAAAAAAACCAAAACCAGCAGAGATAT -AAGTAGTCAAAGTTGAGTCAGATATTTCCGGTCGATGCACCATGTAACCT -TTCTCTAACAACCTGTGAGATGTCGGTTGCTATAATTTTTTAGTCATTAA -TTTGGACAGCTTGTTAATTTGAAATAATTCTTGAAGATATCGTAGCGCGG -CCGACATTTCACGGGTCCTTTTTTTTTAACATTTTGCAAAGCTGGTCATG -CATTTTTGGTAACACTTAATATCAAATTAATGAGAAAATGTTTTGTAAAT -TTTTACCATTAGCCATGCCCAGAAAATGGCAAGTTTTTTATTTTATTTTC -TTTTGTTTTTTTAATTCACAAAAAAAAACTCACCCTACTAACAACTGGAT -TGATTTCTCGAGCCGCAGTCACGCCAACAGTAGCTGCAACGTGTTGTATA -CATTCTCTGAAAATTGAACAGTTACTTTATTACGTAGATTTTTTATATAT -TTGAGCTTGCGATTGTGTAATCAAAAATAAACATTTGAAGCATGATACGA -AATATTTGAACGATTTTTTTTCGGAAAATCAATAAATGAAAATGGAGTTT -TTTTTTTGGATTTTAGCAAACTTCCCAAATGACGGAAAGATCATATGAAG -CGATTATTTTTTCTTTTATAAACCTGTTCAGGATTTGCATTATTATGAGA -AAATCCTAGGCCAATTAGGCTAGCATGTACGGAAGTATTTTTTAAAAATT -TATAAAAGTAATGAAAAGCTGATATTTTCAAAATTCCAGAATGACGGAAA -AATCATATGAAATGCTTTTTTTTTCTTTTTTAAACCTATTTAGAATTGTC -AAAACTACCAGAAAATACTAAACAAAATAGCTTAGCTTGACCGGAAATAT -TTTTAAAAAATTGATAAAAATAATGAAAAGCTGATATTTTCAAAATTCCA -GAATGACGGAAAAATCATATGAAGCGATTCTTTTTTCTTTTATAAACCTC -TTTAGAATTGTCAAAACTACCAGAAAATACTAAACAAAGTAGGTTAGCTT -AACCGGAAGTAATTTTTACAAATTGATAAAAATAATAAAAAGATGATTTT -TTCAAAATTCCAAAATGACTGAAAAATCATATGAAGCGATTCGTTTTTCT -TTCATAAAATAGTTTAGAATTGGAATAATGATCAGAAAATACTAAACAAA -GTAGGTTAGCTTGACCGGAAGTATTTTTAAAAAATTGATTAAAAAAACTG -ATTTTTAAAAAATTCCAGAATGACGGAAAAATCATATGAAGCGATTCTTT -TTTCTTTTATAAAGTAGTTCAGAATTAGCATTATTATGAGAAAATCCTAG -GCGAATAAGGCTAGCATGTACGAAAGTATTATTTAAAAATTTATAAAAGT -AATGAAAAGCTGATTTTTTAAAAATTCCAGAATGACGGAAAAATCATATG -AAGCGATTCTTTTTTCTTTTATAAACCTGTTCAGAATTGTCAAAACTATT -AGAAAATACTGAACAAAATAGGTTAGTCCTAGGAAAGACTAGTTAGGAAA -GAATTCTTAAAATAGGAAGTTGAACAGAAAATCTGGAAGATCTGAAATCT -GGAAAAAGGAACTCTCAAAAATTCAAATTTTGATTTTAGGAATATATGGC -TGTGTAGTCTTCATAGACAATCAAAATAAATTATTTTAATTTTCAACCAT -CTTTATGCACGGGCTTCTGTCCTTCCTCATTGAATTTTTCGCGCTCCATT -GACAATCGCCTGCCGGACAACGCGTGGGAAAGTCGTGTACTGCACACGGA -CAAATACATTTAGTTTTACAACTGAAATCGAGCCGCGACGCGACACGCAA -CGCGCCGTAAATCTACCCCAGATAAAGCCGAGCGAAATGACCTAGTTCGG -CAAACTCTTCCATTTCAATTTATGAGGAAAGCCAGAAACCCGTTTTTATG -TAAAAGTTCATACTGTGCAGTTAATTTAAACAAATCAAAATTTGGAAAAT -GATTTTTGGCTTTGTGCAAACTGTAGCGTTTTAGGCGTTAAAAATCTGCC -AATGAATAAAAAATTTCTTATAAAATTTTTAAAAAAACAGTTATTTGCCC -ATTCCGTTTTTCAACATTTATCAATTACGGTTCCAGTGATCAAATGCTTA -CACGGAAGTCACTGATGACGTTGACTCCATGTTTGGTTGCGATGTGAAAA -AGGTCGTTTTTTGCCCAAATCGAGAAAGGTCACACACACACATAGACATA -CACAAAACCTTATATAATTTGTAAGATATTTTGTTTGATTCGAGAAAAAA -AAGAGAACAGGTATTCCTGCGGCGTCGTTTTTCTAAACGGCAGGAAAAAT -TGAGAGAAAGAAAGAGAAAGAAAAAAGATGGAAAAAAACAGTTTAAATAT -AATTATTAGGTTTAATTATTAGGGGTGCACCATATTGTCGTAGGGGCCCT -TCTCCAAAGTTTTAAGTTTATCGATAGAGCGTGAATACATAAAGAGAGAA -ATTTGACCTGCAAAAAAAATATATGGTTGGTTCCCATGCCATAAAAAATC -CATGCAACAAATGAAAACAACACCTGCCAAGTGTCCTCCGCCAGTCTAAC -CAAGTTTTTCCCTCCAAATGTTCCGTGACATTGTTGTTTAAGGCTTTGTA -CTTTCCGCAGCCGTCTTATTCTTCCCGAAGTGTTCTCCCTAGATAATCGG -GTTTTTTTGTTGAATCGGCTGGGGGTAATGATCGGAGAAGATATATATGA -AATAAATGAATAAAAAAGGAACACCTTTTGGAGAGGCAATGAAAAAGCAA -GCTATGCAAAGTATTGATCCGTTGTTATGAATGGGCTTGCTTAGGCTTAG -GTTTTTTTTAGGTTTAGGCTTAGGCTTAGGCTTAGGCTTAAGCTTAGGCT -TAGGCTTAGGCTTAGGCTTAGGCTCAGGTTTAGGCTTAGGCTTAGGCTTA -GGCTAAATCTAGGCTTTGGCTTAGGCTCAGGCTTGTGCTTAGGCTTAGAC -TTAGGCTTAAGCGTAGGCTTAGGCTTAGGTTAGGCTTAAGCTTAGACTTA -GACTTAGACTTAGGCTTAGGCTTAGGCTTAGGCTTAGGTTTAGGCTTAAG -CATATACCTAGGCTTAGCCTTAGGCTTAGTCTTAGGCTTAGGCATATGTT -TAGGCTTATGCTTTGGCTTAGGCTTAGACCGTGTGTATATCCGAATGTGT -GTTTTATTATGTTCCTGATTCTGAAATCATTTGTTAGTTTAATATCTACA -AACATTCCAAACAGTCTGTATGTGCTGCCAGGTGGCATTTCCTTAATCAT -CTCAAATATATTTGGTTTCATTTCCCCCCATCGCAAAATCCCTTTCTTTA -CCTGTCATTTCGCCTTTACGTTCAACTTATTTGATTTTGTTGTTTTCAAG -TGATAATCACGATTAAACAACGAATGAAAAAAATAGGTATGGAATTACTA -CGGTATTCTTTTTTGCCTATCCTTCTTTCTCTCATTTTCCTTTTGTCTTC -TAACAAGTTCTGCACTTTTGAGGTACATTTCTTCTCCGATTTGATCAGTC -AAAGCTATTCGGTTTAAACCATCTTCTATTCAATTCTGATGATTACTGTT -AGGAACGAGTGGTCACTTAATTCAAAAGGTCGAACTGTTGTACTAATTGA -ATTGGAAAATTTGTAGGTTATTTGACGTTTATCAGAAATTGAAGATTTGA -TATAAAATTTGGTAAAAATGAAAAATAAAGTTTCATTTAGAGTAGTATTC -TGGCTTCCCTTATAAATTGAAATGGAAGAGTTGGCCATATTGGTTCGGCC -ATATCTGGGGTAGATTTACGGTGCGTTGCGTGTCGCGTCGCGGCTCGATT -TTAGTTGTAAAACTAAATGTATTTGTCCGTGCGGAGTACACGACTTTCCC -ACGCGTGGTCCGGAAGGCGATTGTCAATGGAGCGCGAAAAATTCAATGAA -GAAGGCCAGAACTTCGTGTAGTATTAGCAGACCAGGTTTTCACATAAATT -TGAGCGGTGAAACTAAAATTATGACATTTTTACGCAACTTTATGGGCCAG -AAAATTTTTTTTGGAATTTTTTTTTGAAAAAAATTCAAAAATTTTGATAA -AAATAATTGCCAAAAAGACAAATTTTGAGTAATTTTACTGCCTCTAAGAG -TAATGAACAAATGTTTCCAACTTTTTGCAAATTACTTTCTTAGTTCCCTT -GCAAATCTATATAGATTGAATTTGGCCTAAAACCTAACAATTTAGCTGCA -ATATTGTTACAAAAATTTGGGTACAATAGTGTGTTTATTGAAACATGTGT -TCTTGAAGTTGGGTAAGAACAATTGATGAAGGTTGTACCAAATGAACAAA -AAATGTTTTTAGAGAAAGTCTGAAACATTACCTTATTTCTGATGGTCGTT -AATCAAATTTTACTGTAACTGTTATGAAACCTTGGGCATCGTATTTTCTC -TATTAGTGCAGCCGACCACTTTACTTTGAGACGTTATATCTTGTTTATTT -TAAAGATCTCAATATTTTAATAACTACAAAATCATAGAAAAAGAACCAAC -AAAAATTTTGTTAGTTGACAATTTTTAAATAGGACAAACGATAACTGAGC -TATGAGCTGTCAAAGTTGAACAATGGTGGTGCAATAGAAGGAACTAATAG -AAAAAATACGGTAACCTAAATTTTTATGTTAAAATAAGAAGTAGCGGGTT -GATTCCAGAAGTTTTTTTTATAAGGTAACCATCCGCTGACCGCGCCTCCG -GTATCCCTTCAAAAGGCAAAAAGTAAACTTTTCTAAAACTACAGTAATCC -TACAGTAGTCCTACAGTACACCTACAGTACCTCTACAGTATCTTGACGTG -ATCCTCTACCTACTCCCAACCCAGTACCTCTTCAAAGGCTAAAAAGTCAA -AATTTCACAAACTACAGTAATCTTACCGTACTCCTACAGTAACCCTACTG -AACCATTACAGTAATTTGACATTATTCGCCACCAACTCCAAACCCAATAC -CTCTTCAAAAGCTAAAAAGTCAAAAGTTCACAAACTACAGTAATCCTACC -GTACTCCTACAGTACTCATACAGTACTACTACAGCACCCCGAACATATCC -CTCCACTAACCCCAAGTCAATATCACTTTAAATGACGAAAAGTCAATTTT -TCCAAAACTACAGTAATCCTACAGAACTCCTACAGTACCCCTACAGTACT -ACTACAGTACCCTGACTATGTCTTCCACTAACTCCAAACCAATATCCCTT -CAAAAGACGAAAAGTTAATTTTTTCAAAACTACAGTTATCCTACAGTACT -CCTACAGTACCCCTACAGTACTACTACAGTACCCTGACTATGTCCTCCAC -TAACTTCAAACCAATATCCCTTCAAAAGACGAAAAGTCAATTTTTCTTTT -TTTTAATTGAAATTGTCCGTTATTCCCTATTATGTAATTTTCCAAAAATG -CTGCCAACCTCAAAAACTGTTATGTTTTTGTTCATACACATTTAGCCACC -ACCTGCATATGACCCATAAAAAACCATACTTGACACCTGACATACTTGGT -TTCGATACAAAAATCGAGAACATTTGGCAAACCTGAGTTGTCATTCTATT -GGCTATTCACCATGTGCTCTAATAAAGTAGAACTTGGGAATATGTGTCAA -GGCTGTAAATGGGGGAGTAGTATTGTTAACATATGTACTGTGCAATATTC -CAGATGCCAAGTATACAGATTATCTAATGACAATAGGTAATTTGATTTTT -CAGGTGCTATAGTGCTATATTGTTCCAAATACATGATTTTTTTTTAGAAA -ATTGAGGTGTGGTGTCGAATGTCCCATAATTTTGGATAATCAATGGTCTT -TAGCGAAATCCTAATTTGAAGCCGTTTAAAGCTCGAAAGTGCAATACATT -TACAACTGCATTAGCGTTTTATTTTGCTCTGAAAATGACAAATACACAAA -ATTTTGGATTAAACCGCCTGGTTTTAAAACCGAGCTTAAACAATTTTAAT -TTTACAAATTAAAAAGTAAAAATTTTCTAAATTCCCTACACTAAAATTTA -GCGTCCACATCACTTTCTACCCCTTAATTAATTTTTTACTACATTTAACA -AAAATATTTTGAACCGGCAATTGTCAAAATTGCCTATTCCCAAAAATTTC -CAAAACCGGCAATTGCCAAAAATTTTCAAAGCCGGCAATTGTCAAAATGG -CAGCAAACTTCCAAAACCGGCAATTGCAGAAATTGCCTATTGCCAAAAAT -TTCCAAAACCGGCAGTTGCCGAAATTGCCGAAACTGCCGCAAACTCCCAA -GACCGGCAATTGCCGAAATTGCCGGTTGCCGAAAATTTTCGAAACCGGCA -GTTGCCAAAATTGCCGCAAACTTCCAAAACCGGCAATAGCCTAAATTGCC -GATTGCCAAAAACTTCCAAAACCGGCAATTGCCGAAATTGCCGATTGCCA -AAAATTTTCAAAAAAATTTCAGAAATTGATACATTTTTTAATTGTTGTGG -GAATTTTTTTTAATAAATTTGAAACATATCACATCCTCCTGTTTTCAAGA -AAATTAATTCCTTCAGTTTCTGACGACTCAAATCCTCCTCAAATGCCAAA -TTTATTTTGGGAAACTATACCAATTCTCAACAGAATTTTAAAGGTGGAGT -ATTGCCATTTTGTCTAAGTACACTTATAATAATCCAAAACAACCGAATAT -CATAGAAAAACACTCGAAAAAAAATTTTTTTGGTCGACTTCCAAAATTAT -GAGTGGCAAAAACTGTGTAATTGCCACTTTTTGACAGTAAATTAAAAAAT -TTCAAAAAAATTTTGGAACGTTTTATTATGATATTCGGTTATTTTGGGAC -CAAGTAAGTGGTTTACTCCACCTTTAAAAATTTAGCCGTTATACAAACTC -CAAATATATCCATTATTCTTTCCCCTATACCCTACCCATAACAAAACAGA -AAAATTTCAAATTCGCATCGTCGCAACACCACAGCATGTCCATTTGGAGT -GATGTTCCGAGAGAAAGGTCAAATCGTCTACCTCCTTATTCTAACCATCT -CTATGCCTATATATGAGGCTTTAATGAACGAGCGCCGCCGCCGCGCGCCT -AGCGCCTCCGAGTGTCGCAAAGTGCAACTTGTTTGCCACTTAACCTGAAT -TCTACTGTGTTGTATTATGTGAAGAATCGGATAGATGTAATGTGTAACAA -TAAAAAACCACGACGACGACTGAATATGGAATCGGCTAGGTGGTGCAAAA -GTTTCGGAAAGTTTTGGTACCATGGTACCTGTGTAAGCTCTGTGAATTTT -TGAGCCACGATGGGTCTTGCAACGATATTTCGTCGAAACTTTATTCTCGA -AAGTTTGTTCAATTTAAATTTTCCGCAAAAAACATTTTTTGAAAATATTT -TTAAAAATTTGAATTTCTCAGCATTTTTTTTTTAATATGAAGTTTCCAAT -CCCTCAAAAAAAAATTTCAGAGAACATTTGAATTTCCCGGAAACCCCAAT -TTCTGAGAATTTTTCAATTTCCCTTTAAAATAAAATTTCGGAGAAAATTT -GAAATTCCCGCCAAAAATTTATTTTGAAATATTTGAATTTCCCGGCAAAT -ATTTTTTTTTTTGAAAACTTTGATTTAACGGAAAACCCATTTTCTGAGAA -TTTTTGAATTTCCAGTTTAAAGAAATTTCCACGGGTTTCTGGCTTCCCTC -ATAATTTGAAATGGAAGAGTTTGCCAAACTAGGAAATTTTGGTTCGGCCA -TATCTGGGGTAGATTTACGGCGCGTTGCGTGTCGCGTCGCGGCTCGTTTT -TAGTTTTAAAACTAAATGTATTTGTCCGTGTGGAGTACACGACTTTCCCA -CGCGTTGTCCGGCAGGCGATTATCAATGGAGCGCGAAAAATTCAATGAGA -GGAGGCCAGAACCCCGTGAATTCCAGCAAAAAACTTTTTGAAACTATTTG -AAATTCCCACAAAAAAACAGTTTTGCTGAGAATGTTTGAATTTCCCCCAA -AAATTTGACGGAATACTTGAAATTCAAAAAATGTTGTGAGAATATTTGAA -TTTCACGGAAAACCTGTTTTCTGAGAGTTTTTGAAAATCCCTCAAAAAAA -ATTTCGGAGAAAATTTGAATTTCCCTCAAAAAATTTCGAGAAATATTTTA -AATTACCGGCATATTTGACATTTTGAACTCCCCACAAAAAAATTTTTAAA -AATATTCGAAATCCCGGAATAATTTTTTTCACTATAGTCAGAAAAGATCA -ACTGACTAACTTTTCACAAACTACAGTACCCCGAGCATAACCCCCATTAG -TTTCCGATAGCTACAGTAATCCTACAGTACTCCTACAGTCCCCCTTCATA -ACGTTACCCTGATTACTAAAAAATGCCCTTTTAATGCGTATTATCACATC -TCACATGATTAAGACCAAAAGGGGTGTCCTTCAGATAAATACCCGTTCAA -TTTTTTTTACTGCAAACCAGTAGACTTATCTTTTAGGTTATGAAGAGAAG -ACTAAGTGTAAACAAGGTCGTTGGAAGTGATATGTTAAGAAGTTAACGGC -AAAATCGATGCCAAAACTTTCTGAGCTTTGACTTCTACTGCTCAGCTCAT -TCCATAACCATGAGCTCATCAACTTGCCCTCCCCCCCCCCCCACTATCTT -CCACCACACTTTCATTCCTCATTGTCGCAACAAACCCATCTCCGGATTCG -TCCTTTATATGTGTCACAACACAGGAGTACTCCTTAGCGCGCCAACTTGT -AATACCCCCAGCGACTTGGCCCAGAAACTTTCCTCTAATCGCATCCACAA -TATGGTCTGCAAGTACAAGATTAGCACCCCCCATTGTATGTCAATTTGTC -TAGTTTTTTATTCCATTGAACTATTCCACAATGTAGAAAATTGGGGTTAT -GGTACATCGAAACATGGTGCATCACATAATGGTGCGCCCAAATCATGGTG -CATCGTCAAAAATAAGAATCCGAGTCCTCCCAGACATCCATGTAGGTATG -CACTTTCCCGCCTGTTCCGCATCTAACCAACGATTAACTGAATCTTTACG -ACCCTCTCTCCTCCGAATGATGTTGAAAAATGTCGCGCCAGCACCTTTGG -AGGGGGGGGGGGGGGGGTTAAAAAGATTCCAATCTACCACCTATCTTCTC -CATTTATCTTCAATTTTGCCCCCCGCGCTCTTAGATTAAATGAACTTTTT -TGGCTAAATCACAGCACTTTTTATTAAATCTAGGAACTGCATCTAAACAA -TGCATGTGGTTACAGTTACCGAAAAATGTTGAAAATTTGGGAAAAGTGCC -AAAATGTTGAATCAAGTCAGAGAGATTCGAAGACGCTTCTAGCAATTTTT -TGACAGTTCCTGTCCCCTTTCGGTAGATTTGCGGCAATTCTCGGCAGATT -TACACCCGCTTTTGGCGGTTTTTCGGCAACTTTTAGCAATTTTGGCAATA -CTTGAAAACTTCTATTTAGCAACTTTTAGTCAATTTTCTGTAATTTCTGA -GAACTTCCGATTTTCTTTTACATTTTTTTCCGATGCACCATGTCCCGAAC -GCTCGCGCCACGACTTTTTTATTCATTATAGCAGGTCCTGTTTTGATGCA -CCATTTCCCAAAGAGCCCTGCAATGCTGGCTCATGTCACGATGTACCATG -TCCTGAAATGTCCCACCACGTTCCGCAACGAGGTTTTACTGCCAAATTTT -ATGCAATTCCAAAATATTTTTCGACAATTTTGTTAGCTTTTCCCTTTCAA -AAAAGTTCAAAATTCTGTTCCAAAACCACACCAAAAAGTCGAAGATCCGC -AAAATCTGCACTTGAAACACTATTTGACAACCCCCGTCTCAGGCTATCAA -AAATGCATGCAGTCATATATATGTGCAGCTTGTGAAACAAAAAACGAGAG -GGATCAGGGGCTCAGTGCTCAAGGTAGATGTGCAACTCTATGAAATTGAT -CGGTTATGCATGGCAAGTAAGAGTGACAGGGAGCGAAGTATGATGATGAT -GATGATGATGGTGTGGAGAGAGCGCAACGTATGAGTTATTGAATTTTCGA -GAAAGGTTATCTTTGATGGGGGGGGGGGGGGGGGGGGGCAGTTCATGGTG -CATCGAAATATAAAAACTTTCGTGGAGATACGCTTTTTGAAGAATTTTGT -GACACCTTCTTGGTGCATCGAGACAGTTTTCGTGGCAAGACCTGATTTGG -TTGAAACTCTGAAGCCAAATCGCGCTCTACGATTTTGTGACCAGGCCAAG -GTTTTGGTGGCATGGTGCATCATAGTAAAAATTCAAATCCTGGGAAAAAA -AGCTCTATATATAATATCCAGCCATGGACCGTACCTCCGGCGTGGCCCCC -TTCTGGAGCTAAAAACTAATTTTTCTAAAACTACCGTAACCCTACAGTAT -TCCTACCGTACCACTATTGTACCACTACAGTACCCCGACTATATCCGTAC -ACTAACCCCAACTCACTATTTATCCAGAAGCCAAAATTTCACAGACTACA -AAGACTACATAGACTACAAACTATGAACACACTGAATAAGCGCTTCATAT -ATATAGTGAATGATGGTGAGATCCATGTGACATGGTGCATTGTGACAGGC -ATTTTGGGAAGGGGGCTTTGAGCACAAAACAAAATCTTTAGTTATTTTTC -CGACAATTTCCAATAAAGTGAAGTTTAACAAGGTCGTGGCGTACTTGTTT -CCAGTTTCCTCACGAGTGTTGCATATTATACCGCCAGTAATCATTGCGTT -ATCACATAGTTGACAACGGTTTGATAATGTCACAAAGTGTGGGGGTTTTG -GAAGTGGCATCAAACCAGCATACGATTATTAGGACGTGATGAACTTATTT -TACCTGAACATATTATTAGGTGGTGGAGCTGGGAGCTTAGTATTTGGGTT -TTGAAACAATGCACCATGTCCTAAAAGATGCTTTATTGCTAGGTAGGGTG -CCGCGACTTTTGTATTCATTATAACAGGTTCAGTTCCGATGCATCTGCAT -TTTTTTAATACTGTTCTTATTCTTAGCTCAATAATTCAGGCTGAGGGCCG -CAGGCCCGAACACTTTTGGAAACTGTGGGCCAGCTTTAATCCTATTCCAA -GCAAATTGTTATTCGCTCAAGCCAACTAACCAGATTTCCTCAAACTTTAA -TCGCTCATATCTCAGCTCAAAACCATAGCAGAGACTTCGTTTTTTAATCA -ATCGATCCCAAATTTTAAGGAAATCTCGAATATCCCTATCTCAGGTTTGA -GGCGAAGCCGAGAACCTGCGCAAGCTACCTTTTTGGGCATCCCCATTCCC -GAAAGGCTGGCGCGGCCCTGCCGCGCTAGTCATTTGCCAAAACGTCAAAT -TGGGTCATGTCACGATCCATAATGCCTTGAAGGGTTCTTCTGCAACAGTC -CTAAAAGAAACTTAGCACTCTGGTTGAGGTATAGATGCACCATGTCCCAA -AGGGTCCTGCCATGTTGGGACATGTCACGATGCACCATGTCCTGAAAGAT -CCACGCTCGAAAACTACATTGTTCCGAGTGTTTACCTCTATTTCAATACG -AAATTTCAGCAAATTTTCATCCAAAATCATGTCATTCTAACAAGAGCCTA -TCATGTTGACTATAGGGTCGTGACGACCTGCTCGAGTTCGCCTCGCTCTC -CTGTTATCAGAATAGCTATGCGTTAAGTACGCGATGTATTGACAGTCACG -ATTTAACGCTTCAGTTTTGTAGTTTTGCTGGAAATTTTTGAGTTTTTCGT -TTTTTCTTGGCTCAAATCGAGTTTTGCTTTTTTGACGATTAAATAATTTA -TTCAAACTTAGCGCATTTTTTGACTGATTGTGAGACATGATGCATCGTGA -CAGGGCTTAATCGTGGCGAGACCCTCTAGTACAAAATTCTTTTAAATATC -AGTAAAAGCATTATAATCCATGATTCTATACTTATTTTATGGAATTTTCA -GCCTTAAAAAAATCTGAAATTTACGATGCTAAAATCTACTCAAATTATAG -TTTCAATCCAAAATTTCTCAGAAAAACTAAAATTAGCATAAAAATGTTTT -GTCTGAAATAGCCCTAGATTCAAATATCCCTAACACCCCAAAAAACACCA -ATGTACATCTCCTCTCCGTAAATATGTAGTTTTACAACCGCCTCTCTGTT -GACTGGGAGCCATAAATGTAGATATATTATCTTTCCAGATCGCCTGCCGG -CCCCTCCCACCTGATTGTAAAACTGCTCTTTGCTGTGGCGTTTTATCGAC -TTGTTTTTCTTATATATTCCATTCTACATACCTTAACACATTTTCTTGTA -TATTTTCTATACACTTTTTTAACTATAAAAAAATGCAACTCCTTTTTCTT -CGATTTCTTTTTATGCAAATTTTTTGGCTTAAAGGTGGAGTAGCACCAGT -GGGGAAATTGTTAAAAACCACTCCTTTGGTCCGAAAAGTACCGAATATCA -TAATAAAACTTTTCAATATTTTTTTGAAATTTTTTTATTCACAGTCAAAA -AGTGACAATTACTCAGTTTTTGCCACTCATAATTTTGGAAGTCGACCAAA -ATGTTTTTTCTAGATTTTTTATAATGTAATTTTGTTTTAATTATTTGTAT -TAAAACATTGTAGGACAAGACAGGGCCGCAACATAAGATATTGCTTTGAA -TTTCCTCAAAAGCTCATATTTTTCAGAATTTTGGCAATTTGCCAAAACTT -GGTATTTAAAAATTGTTAGAGATAACTGTATTTAGACAAAACATAGAACA -TTTGTATTTCAAAATAGTTCAAAATTCTAGTTTTTGAAATTTTGCGGCCA -GACTGACCCCCACGATGCACCATGACAAATTGCAATTTTTTTTTCAAAAA -TTGTTTTCCAAAGGGGCGTGTTCCAAACATCTGACCCAAGTTTTCCCGTA -GTTCTTCTCTCCCCCAGCGGGGTAAACACTGCACTTTACGACTCCGCCCA -GTGCTTTTTTTTTCGCAGAAACTGAGAGAGAAAGAAACATCTGCGTCTCT -CTCCCCCAGTACGCTCGTTCCCGCCCCCCACCTCGATCTGCCAGACCACA -CCGACCTGATTCGAGATTCCTTTTCTTATATGTATATGTTTTTGGAGAGG -TGATCTTGTTTTTTTTGTTTCTCCTTTGGTTTTGTTCTCTATGCTCTGAA -CTTTGGTCTCCTACTTTTCTACAGTTTTTTTTTAAATATCCAAATTTTTG -AAATAGAGGGTTGATCTACATGACCCCCATGCTTAGTCTACTATAATGCT -ATATCTGATGTTCCTCCGAATGGCCTGGTAGGTGAAGGCTTTTAGCCCAG -TGAGCCGGCTTACCAAGTCTAGGACCATGGTTCTTACAACTTAAGGCCCA -AAAAAAGCAGGCATCTGGCCTAACTTCCCCCTCACTAAATCTGTAGTAAT -ATATAATTTCTATCATACTCCATCTTTTTTTTCTACCTCTTATCATGTTG -TTATTGAGCAGCAACGCCCTTATATTGTTTGGTATATATATTTGATATAA -AACCTCGTAGTAAATTTTATTTTACACAACAACATTTATTATTTACTTTT -TTCATACTATTTTTTTTTTGCAGAACGAAAAAAAAATGCTATTCACAATT -GAGCAACTGGAGCTCATCAAAAAGCTGCAGCACACCGGGATGTCATCCGA -TCAGTTGCTCAAGGCTTTCGGCGAGCTGGAAGTTCCAGAGCAGCTTCAGA -ATAACAACACAATTGCCGCAGCCCTGTACAGCCCACTCCTGGTCCAACAT -CTCACAACACCCAAATCAGAGACTCCAGTCAAACTCACCGTGCAGACAGT -GCCGACACCTGTGAAGTCAGAGCCACAATCTTCAAATTGCTCATCACCAT -TTGAGCATCCGATATGCTCGAATGCTCCGCGGCCGATTAGGAGTCAGCGA -ACGCCGATGAAGGAGATTACCACACTGGACGATCCGAATGAGCTGGAGGA -GTTTATGAAGCAGGGCGAGGAGGCGTGCATTTTGGATATGAAGACGTTCA -TCACACAGTACTCGTTGCGGCAGACTACGGTAGCAATGATGACAGGTTAG -TTCCCAAAAAAGTGTAGTGGAAGAGTTTTTTTTCTAAAATCTAGGCCGTG -ACCAGAAATAAATCAGAATACATCCCCGGCGCCTAGATTCCTAATCTCTG -CTGTTAGCCACAGTGCAATTGAGTATTACTGTAGTTGATTCCTTCTATGA -CGTCATATGAAATAAAGTTGGCTAAAGGGAAAAGGGGACTCTGGATCTTA -GGCGAGCAATTCTCTGCAGCCGGCACCAGAATCGATCCCCCGGTGCCTGG -ATATCTATCCTTCGCTGTTAGCCACTGCGATATGCCCCACCCGCGCTGAG -ATCGAACCGAGGCGTCTGAATTCCTAGGCGAAGTTGCTACCCACTGCGCC -ATGTCAATCTTCTAAATTTCCAGGAGTAAGCCAGCCGTACATTTCAAAAT -TGCTCAACGGCAACCACCGTGAACTATCGCTCCGTTGCCGTAAGAACATC -TACTGTTGGTACCTGAACTGCCGACGTCATCCCAACAAACTCGCTGCCTT -CCTCGCCGATCCGACAACTCGCCTCGAGACGAATGGAGATGGCGAGCTGA -TCCCACAACGTCGAGAACGCTACGTGTTTCGTCCAATTCTGATCCGAATG -CTCGAATCGTTCTTCACACAAACGCCATTCCCAGATCTTCCACGGCGAGT -CGAAATAGCGAATGCTTGCAATCACGTTCTGAAGATGGATAAGAAAGGTG -TTGGGTTGATGCCAAAGGAGGTGGTCAGCCCTCAAGTCGTTTCGAATTGG -TTTGCAAATAAGCGGAAGGAGTTGAGAAGAAGATCCGCTGAAGCTTCGGC -CGCCTCCACCTCGTCCGCTTCGTCTTCTGCGTCATCGACTGCTAATCATG -ATTCTGTCAGTGTGTCCAGCATGAGCCCTCGCGATGAAGAGGTGAGAGTT -TTAATTTCTCGGCCACGCTGTACTCTGGGTGGAAGAATTTTTTCTAGGTC -TTATAAGGAATCGCCCTCCGGTTTTCCCACAAGTTAAGTCATAAACATGT -ACCATCTAGAGGTTAAATTTCTGGAGTTTTATTTATTTGAGAGTGATGGT -AAACCTGTCAGTCCTTGGCAAACATGTGTCTGTTTGGTCTCAAGGTCTAG -GTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTAGGTCTTGGT -CTAGGTCTAGGTCTAGGTCTAGGTCTTGGTCTAGGTCTAGTTCTAGGTCT -AGGTCTAGGTTTAGATCTAGGTCTAAGTCTAGACACAAATTTCTAGGCCA -CGAAAATTTCTGCCGTGGCCTAGGATTTTTTAGGCCATATTCTAGGCCAT -GATCCAAAAAAAACTTTCCCTGTCTCCTCTAACCCATTTTTTTTGCAGAC -AAGCTCCCGTAACACAACCCCGGAGACAGCAATCTCCCCGTCACCAGCAG -TGTCCACTTTTGAAGTGTCCCGCCCGTCTGCCATCATCTCTGCCACGTCA -TCAACAACCTCGCCAATCTCAATTCCAGCAACAATCATTCCATCAGTATC -GCCGTCAGCTCTCGAACTTTTCGCCATGGCCCAACAGCTTGGAGTTCAGC -TTCCGGTTCCATTTCCAACATTGCCAACACACTTTTTCCCGTTTCAAATG -GCTCCGTTCTACGGGAACCCGGCTTCTATTTTGAAGTCTGAGTGAAGCAT -TTCTAATTTTCTTTTCTTCTTTTCTACACCAATATCTTTTTTCCATTTAT -TCAACTTATTCTTCATCCCATGACACGAAAACCTCAATTCTTTCATATTA -CAAACGATGCTCCGTTTCTTACGCCCTGCCCCACACACGCCCCGTCGTCC -AAAAATCAATCAATAATCGATTTTTCATAATATTTAATTTGTTTTTTTTG -TGTTTCACTGCTGTTTTAATATTTGAAAAGTACGAGTTTCTTCAAAAACA -TTTTTTGAATAATATTTGCTTCACACTCCACGCGTTTCGTAATGTATCGC -TTGCCCTGAAATTTTGTTGGAAATTCCATTTTTTGTGCAATTTTTGTTAT -TTTTCAAGCGAGAATAAATATTTTCTAGTTCTAGAATTCAATGAAATACT -TTGCAAACGCGCCCCATTGCACTTGACCGAGGGGTGAAACAAGTTCAGTG -TTTTCAAGATATTTTTTTTTAAAAACTTGAATTTGGAACAATACAAAAAT -CTGTAAAATGCAACAGTTTTCCAAATCTTGTCCACGTGGAGTACACAATA -ATTTTTCATCTATACGGAAAGATTTCAAAATTGGAATGTTAAATTATTTT -GTGGTTTCTAGGCCATGGGAAAACTAGGCCATCAAAAAAATTCCAGAGTG -ACCTGGAAGTTCTAAAACTTTGTTGAAACTTGTCCACGCGGAGTACACTG -GTAGTTTATCAATAGAGCGCAAGTAATAATCCCTTGGAATTTTCCTTTCA -CCACCCCCTCTCCATTTTATATGAGAGTTTTTTCCCTCGCAATTTCCCAC -GCTCAAGAGGGTGGCCGCCATTTTTTTTTTGAGGGGGGTCGTATCTAGAT -TTGAAACACGTCATTTATGCTCAAAATGTGCCAATTTTTATTGTTTTTGA -GTTTCTAGGCCATTTTGGTAAGTTAGGCCGCATACTGACTTTGCGACTTC -CAAGGATATGGCCTAGCTTTTTTTTCTAGGCCATATAATTTTTTGAGTTG -CAACTGTGGCCAATGTTTTTTTTGGGTTTCTATGCCACTTGTGAAAAGTT -AGGTCATAGAATAACCTTACGGTAAACGGGTCCTCACAATCAGGAATTGT -GGCCTAGTTATTTTCCTAGACCACGTTTGATTTTTGTCTTTCTAAGCCAG -GTTTGGGTCTAGCTCTAGACCTAGGTCTAGTTATAGGTTTAGGTCTATGT -CTAGGTCTAGATCTAGTTCTCTCACGTGAGAAAATTAGGCCACCTTTCCC -CCTAAACTCTATGATCTCAAAACTAAAACTACTTTCTAGAAAACTCTTCG -AAAATCATAAAACCAATTTTTTATCACTATTTTCATGCTAAAATCCAATC -AGAAATTGATCAGAAACACGCATATAAATATTACGACTATAAATTCATTT -CTTTTTTTCATTTTTCCCTCCAGAAGGCTCTTGGCGAGAAAAATCTGCAT -ATTTTTTCTACTTATATGTGTCGAGACATGTGATATTCCGGCCGGCGGTG -GCTCTGAATGAATATTCAATTGAACGAGAAATATATATTCTCTCCAGAAG -GCGTTTATATTATGTGTTGCTCCTGTTTCTGCTGTATTCGGCGTGGATTT -GGTATGCTTCTCAGTGGAGTGCAGTTGCAGCATTTTTTTTCTTCAAATTT -TGCAATACTCTCGAACTTTTTGCACTTTCAAGCCTTTTTTTGGGTTGCCT -AGAACACTAGAATTTCTGGACTATTTTGAGATTTCTAGGCCATTCTTGAG -ATTTCTAGGTCATATTGTGATTTCTAGTGCATTTTTGGGTTTCAAGGCCG -AATTGGAAGTTTTAGGCCATTTTTCGGTCACATTTTTAGGCCACTTTGAG -GATCTTGTGCCAAACTGGGATTTCTAGGCCATCATGGGATTTTTAGGCCA -ATTTCGAGTTTTCCAATCATAATATAATTTCTAGGCTATCTTGAAATTCC -TAAGCCAGTTTGGAATAATTAGGCCATCTTGGGATTTCTACGCCATTCTC -GGATTTCTAGGTTAAACTGGAAATTTTAGAATTTTGGGGTTTTAGGTCAT -ACTGCGAATTTTAGTCCACGGTTGGATTTATAGGCTATCGTGGGATATCT -AGGCCGATTATGGAATCCTAGGCCAACTTAAAATTTCTAGGCCATTTCGG -GATTTCTAGGCCATCACGCCTCCTAAAAGGCACAGACAAAGTTCAAAACC -CACCAGAAAAAAGTGTGGTGAATTAGTCAGCAACACCCCATTTTTCTTTT -CCAAAAACTAAAAAAAAAGATACCCCTGACAGATATGGGCAGAGATGGGG -GTGCGAATCCTGAAATTTCCGAATTCCAGTGGGAGCTTTTTGTGCCAGAA -AAAGTAGTGGGGGCAAGTGAGAATGTGTGTCGCCTTCCACTTTTCAAACA -CCATTTTGTCCGTTTCGCCGGCCCGAAAATAGGCTTGAAAAGCTGTGGCC -TAGAATTTTTTCTCAAAATTTTTGACGTGGAAGAATTTTAAGATTTTCGA -GGCCAAGAGGTGGCCTAGAATTCAACATTTATTGGCAATTCTTATCTAGA -TCCCGAACCCCGACCAGTCAGTTTTTAATTTCCGGTGTCTGAATTTTTAA -TTAAAAATTATTTTTGGGAGGAGCTCCTGTTTTTTTTTCGTCAAAAAATG -AAGGTGGCCTAGCTTTCTCATTTTAAGGCCACGAATTCTAGTTAATTTTT -TGTTGGCTCATTTTTTGTTTCAAAAAACGAAAGTTAGTCAAAAACTTTTC -TGCATATCAAATGCTCTTTTTGAGGTTTTTTCCTGCAAAATTTTTCTAAG -AAAATTTGAATTCCCGCCAAAATTTTTCTCAGAAAATTTGAATCGCCGCC -AAAATTTTTCTCTGAAAATTTGAATCGCCGCCAAAATTTTTCTCAGAAAA -TTTGAATTCCTGCCAAAGTTTTCACAATGGGTCTCACCACGAATGGTGAC -AGACCCCGCCCACAATTCTCAGAGACATTGGGTGTGTTTTAGACCAAAAA -AATAGTTTTTTTGACAAAAACAATTTTCCAGCAAATACTTGATCAGTTGT -CATTTGTCTGTTGAAAGTGGAAAAAATAAAACATCTTTCCTTTTTTCTGC -TTCTCCCCCTCCTCGTCCTTTTTGTGCTCAAAACTCAAATGGCTCATCTC -AATTGCATGACAAATTAGCAAAAGATGAGAGCAATTTTTCCCTGTTTCTC -TTTTTTTTCCTCCGTTTGGCTCCTCCTCATGTCTTTTTTAGTAGTTTTCA -GAGTTTTACTATTGAATGTTCAAACTGGCTAAAAAATTTTGATTTTTTTT -TCTTTTTAAACTCTTACGAAAATTTTGATATAGGTTAGAAGCCTAAAATC -GACGGCCGACAGCGTTTACATTTGTGGCCTAGACTTCCAAGCCTTGGCCA -TGGCAAAAACTTGTTTAGCCTACCTTTTCAAATAGTGGCCTAAAAACCCT -ATACTATTTCTGAACTAACTGTTTACTCAAAAGAGAAAGTTAGTGGCCTA -ACTTTCTGAATGGTGGCCTAGAAAACTCAATTTTGGCACTTTCATGACCG -GTCATCAACCTGACATTGATGGCCTAAGTTTTAATGAGTGGCCTAGAAAA -CCAAAATATGGCCATGCGCTCAGCATGATCTAACTTTCCAACTCTGCTAT -AAATTCCTTGGGGGAAACCTCGGCCATCACGGGTGGCCTAGAAAACTGAA -ATTCGGCCAAGACCCCGTAATTCATGGCCTAACCTTTTAAAAGGACAGCG -TTTGGCTTTGGTGGCCTAGTTTTTTGTGGCCTAAGTTTACAGAAAAAATC -CTCAGCCACAACCTTTACCCTATACATGAAATCACATAAAAATGTCCAAA -TATTTTCCAATTAAATTTCCAATTCTCCACCCTTAATTCTTCATTTTCTT -TTCTTCTTTTATTCCTTTTTCACTCTCTCATTCTGAAACTAATCTTTTCA -ATTCTCAGCTTCTCTTTTCTGGTGTGGCTCATTTTCACTTTGCTCCCGCC -ATTTTCAATAGGATTATCCGTGCACACACACACATGGCTCAGTGAGCAAC -ACCAACAAAAAAGAGCATATATAGATATACAACGATATCTAACTAGTTAC -ACAGGAGCTTCTGTTGTTCTTCTGTGCCCCTCCGAGCCGAGACAAACTTT -TGGAAAAGAGCAACGCTTCTGGAGCCGACATATTCGAGAAATCCCGGAGA -CAATTGAGACCACTATGAGGAAATGATGGTCGAGGAGGAAATGAGAGATG -GCGTTGCTCAAAGTGCGCGACGAATGCACCAAGTTGGTCGGTTATCAGTG -AGTTTTTGTTTTTTGTTGGCCGAAGTAGAGATAACTAGGCCACCTAGGTA -GGCTGACGATCTTCAGTTTGCAAATCCTCTTCCACCGCACTTTTTTGAGC -GATCTAGGTTTGCAAAAGGTAGGCCGCCTGGTCCACCGTACCTGTCATGA -TGGCAGAGGTCTGGGAAAGCTAGGCCACCTGTCTGAGCTGATGGTCTAAG -GTCTAAAGTTTACCAAAAACTCTTCCACCGAAACTTCTAGGGCGACCAAG -GCTTGCAGAAGCTAGGCCACCAGACTTGGCTGGTGGCCTAGAATTTTCAA -GAACTCTTCCATCGTAAATTATTAGAAAGCCGCGATAGGAAAAAGCTAGG -CCATCAAATTACCTTAGTGGCCCAGAATCTATAAAAACTCTCCCATCGTA -CTTGCAAGGACGGCTGAGCTTGGAGGAAGCTAGGCCACCAGAATAGGCCA -GTGGCCTAGAATCAACAAAAACTCTTCCACCGTACCTCCTACAATGGCCG -AGGTAGGGAAAGATGGGCGCCAGGCTAATCTAACTTTCCTAGACTGACCT -AAATGGGAGAAAACTAGGCCACCGGGTTTACGGAGTGGCCGAAAATTTAC -AGAGACATTGCCCTGACTATCTGACTGTTTTTTTAGCGAAAGAACTTTCA -TATTTTCTAGGCCAGGGGCCCCCTACGCCCCAACACAATCCAATTTTTTT -TTGCAGATTTCTAAACTCGCACATTTGTCTCTGCATATCACTCATCCAAC -TTCTCGTCTGCTGCTGGGCCGTTGCTCAGCACGTCAACTCCTACATGACG -CACAGTAAGGTGAGCCAGAGTTCATTGGAGCGAATTTGTAACCAGAGAAA -ATTCAAAACTTAAAATTCAGATCTTAAAATGTGATTTTCTGGAGGGGAGC -CTCCCGCTGGAGGCCGTGGACGCTGTAATTTTCGATATCCGACTTTTCCA -TTACCTATGGGGCATTCGAGGATGTGTGGCAGAGTATTTGGATGGTGGTG -GGTACTTTTAAGTTTCCCACGAATCTTTACATTTTTCAGGCTTCGGGCGA -CTTTTGTGGTGCGTTTCCCACTGCTTAACCCTGGTTTTCTCCATTCCGGT -CACCTTCATCTCCCATCCGAAACCCTGTCTCTTTTGGCCGCTGCTTTTTC -AGGTGAGTTGGCTGAAAAAATTTGGAAAAAAACTTTTTTTAAATTTTTTC -CGAAAGGCGCAGTGGGATTTTCCACGACTACCACTCACAACAGCATGGTT -CGAGTCCGCGTGGGTGTGAATTTTTTTTCTAGTTTTTTTTTGAAGTACGG -AAATTGTATTTAGCCTTGAAAAATTCTAAAATAAGCAAACAAAAAAATCT -CCGATCAAAAACCAAGTAATCCGTCTCCAAAAAGCGCAGCAACGTCAAAT -GGTCCCACGGGGGGCCTGAAACGACAAATTTCCTGACATTTGACGGGTTA -TCCATCCGCCACCCTCTCTTTTGAAGGAACATTGACTTTTTCCGTTGAAA -TGGATAAAAAAATTGAAAAGAATTAGATAGATTCGGGAGAATGAATATGG -TGGCCTAACGTGGTGCTTGACCCATGGCCTAGAAAACCAAAACTCGGTCA -TCACCCTGATTGAGTGCCCCTTAAGAGATTAGGCCACGTACGACGCAATC -CTAGGCCACCAATAGTTTTCTCGGCCACAGCCACCCCAAACAAAAATCTG -AACTTTCTGATCCTTTACATCTGTACCCACTGAACCGTTTGTTTATCTTT -TTACTCGCTCCACGGGAGCAGAACTTTTTTTTTGAAATTCCACAAAAGAA -TGGGACAGACACTAGTGTATTTTGTTTTTTATTCAGACATGAGCCAGACC -AGAAATAGGATTGAATCTCGGATTTCAGAGCCTGGAAAAAATCGGAAAAA -ATCGGAAAACTGTGGGAGAACTGAGTTGGGTGGTAAATTTGGCAAATTGC -CAAAATTTGGGGAAATTAACTTTTTCGGTAATCTGTAACTACAGTTTTCC -TAAAAATGTATGAACCTTTTAGTGATTCTGCATAGTTTTTCAGGTCTTTA -AAATTGAACCTACAGTACCCCGTACAGTTCAGAAGATTGCAAAATTCCAA -GTTGACCACTTTTAAAGCGTGTATCTCGGCTGATTGGGAAAGTATCGGAA -TATTTTAAAATACAAATTTATTGTTGGAAAATTTTTTTTTTACTTAAAAT -TAATTAAAATTCAGCTTTCAAAAATGAGCAATGTATTTATAGATCCCATG -CAACTTTGAAATTTTGTATATCCGTTCAGTGTAATGCTATCAAAAAATTT -TCAACTACAAAATTATAGTAAAATTTAAAACAAAGAAATTGTTAGTTGAC -AACTTTTTAATGAAATAAAGTACAACCGAGATATGAGTTCTCAAAGTTGA -GCTACTTTATCGGCAACCACAATATAAGTCGCCCCCGTACAATGCACCAT -GTGGTAGAAAATTTCGGTTTGATCTACTTAGATCTACAAAAAATGCGGGA -GAAGAGACGCAGAGTTTTCTTTGCATAGCTAAGAACGTGCTGACGTCACA -TTTTGTTGGGCAAAAAATTCCCGCACTTTTTTGTAGATCAAACCGTCGTG -GGACAAACTGGTACCTCTTCGTTTTGTTGGTATGAAAATTTTGAAACTCA -CTTCGTTTTGTTGGTATGAAAATTTTAAACTAGAAAAGCCAAAGTTGAGC -TAGGCGCTCAAATTTGGTAGCATTTACTTTTTTCAACAAAAAAATAGCTG -GCCGAGCTTTCCATTTTTACGGCCACGTTGCAATAAAAATCCAGGAGGTC -CATGTCATCAACAAAAGTGCAAGGATGTAAAACAATTACACCGAAACGTT -TGTCGGGAACTGCTTTTTCAAAAAAAAAAGGATCTCTCCGAACACATGTC -ACCCCCAGGGTTCTAGCGTCTCCCTGACCTCGCGAGCTATTTCCTTGAGA -CATATCTCTCCGAAACCTTTTGTAATGGTTGTTTCATGTTCTTCTTCATC -TTCTTCTTATTCTTCTTGCTGGGATAAGCAGTTGAAGAAAACGAAAAGAA -CACATAAAACACAGGCACACACACACACACATACACACCGTAATATCATA -TAAAAGTGCGTCTGCGTCTCCCAGAGCGCCCTGGGGGTAAGGAACGCGGG -CGCCCGCAAGGAAAAAGTGCAAAGAAATTAGAGAAAAAAGACCGGTCTCT -CACTCACTTCTCGATCCCTTTTCTTCTCTAACTATAAAAAATGTGTGGCC -TAACGAACGAAAGCGAAAAAAATCATCGAGAGAAGTAGTGAGAGAGAGAG -AGAAGAAAGAGTTTTTTTGGACGCCGCCGCAGCTGCCAAGCATCAATAAT -GACATGCTGGAGAAAAAAATTCCAAAGTTTAAATGTATTGGGGATCAGAA -GCCTAGACCATAAGCCCCTTGTAGAGTTTTCTCGGCCATAGCCTTTTTGG -TACGGTACATATACATAGAGACTTCAGATTGGGAATTGCGAATCTGTTAG -AGTAAGAATAGGCCTAAAACATTATTGGGCCTAACGGTGACGGAGACTAG -GCCTTGTTGGGAGCTTAAACTATGACATTGCCTAGAACGTTGTTCTATCT -TGGTTATGTGGTGTCGGGCTTTCATGATCAGCTCCTCTACTTTTGTCCAG -AGAAGTTTTGGACTTTTTCTATGGGTGCTTTGGGCTCTATTGCACAAATA -GGTGATCTTGCGCACAACACAACGTAGATCAAATTCTTGTCTAGGCTCTG -CAGGCTCCTGAGAGGTGTTTTGTACAAGCCCAAAGCAAAAGGATCTCAAA -ATGTTTACAGGACTTCAAGCAGAGGATTTTTCGATGATTGCCAAAAATTT -TGGAACTTTTATAGGCTTAAGCTTATGGTTATGTTTAGGCGTAGGCTTAG -GCTTAGGCGTAGGTTTAGGCTTTGGCTTAGGCCTATGCTAGGCCTAGTAC -CATAATACTATTCTTACCGCCGCGCCTGATCAAACCAAAGAGTAGGTCAA -CAACCAATATTGACTTGCACTTTTTGCACGGTTAACTATATTACGCATAT -GGCCAATTTTGTTAGGGAGCATTGATTCATGGAAAAAATTTCGGAATTTA -TGAATGTTCAATTAAACTGGACTACGACAATTATTGGGTTCAAACATTTG -AAAATTTTTTGGCCGACGTCGGAACGTCTCACTTTTTCCTGATTTTTGTA -GTTTTTCCTTTTTACCGAATTTTTAGGAATATCTGGGAATTTCTCGTTTT -CTGATTTTTTTTCAATTGTTTTTAGATCCCCCAAGCCTAAGCCTAAGCCT -AAGTTTGAGCATAAGCATAAGCCTAAGCCTATGCCTAAGCCTACGCCTCA -GCCTAAGCCAAATGCGGAGCCTAAGCCTAAGCCTAAGTCTAAGTCTAAGT -CTAAGTCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTGCCGGAGCCTAA -GTATAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTATGCCTAAGC -CTAAGCCGATGCCTAAGCCTAAGCAAGTTCCGACATTTTCGACAATTATC -TAAAAATCCTCTGCTTGAAGTCCTGAAAATCTTTAGGGATCCTCAAGTTT -CGAGTTTGTACGGAACGGCCCAAACGCCTCTTGGGAGCCTGCAGAGCCTA -GACAAGAATTTGATCTATGTTGTGTTGTGTACAAGGTCACCGGTTTGTTG -TGCATCAGAGCCCAGAGCACCCACAGAAAAAAGTCCAAGAGTGTATAGCC -TACGGTAGTCCTTGTTTAGGAGACATAGACAGTCTCTTTCTCTAACGGTT -TTTGTTTATTCTTTTTTTTTCTCCCCCTACTTTCCGACAGACATTTTCAT -CTTCATCTCCTTCTGCTGCGCGAATTGAATGGTCTATAAGTGTCTGCGTC -TCGCCGATTCGTACAGTCTATCGCTTTGAAATCGTCACCCCCAGGCAAAC -AGGACACCCGAACACACACACAACTATCCTCATTCTCAAAAAAATGGCTT -CACTGCATAAAAGTGCAGAAATTAGAGAGTATGCGGAGATTCGGAGAATC -CAGAGAGAACACACAAACACACTCGGAAACTCATATAGTTAGACCAGAAT -GATGGCTTTTTTGGAAATTTGAATTGGAAAGGGGTTTTTGAAAATTGGTT -GGAAGCATTTCAGATAGATTTACATTGAAAAAAATTAGCAGGAGCACCTT -TTCCATTTTAAAAAAATTTGTTGGCTTTAACTTTTTTCACGGATTTCCGG -CTTCCCTCATAAATTGAAATGGAAGAGTTTTTGCCGAACTAGGCCATTTT -GGCTCAGCCATATCTGGGGTAGATTTACGGCGCGTTGCGTGTCGCGTCGC -GGCTCGTTTTTAGTTGTAAAACTAAATTTATTTGTCCGTGTGGAGTACAC -AACTTTCCCACGCGTTGTCCATCTGAAGATTGTCAATGGAGCGCGAAAAA -TTCAGTGAGGAAGGCAAGAACTCCGTTTTTTTTCAATACTGAAAAGTCTA -ATATTGAATTAATAAATTATTCAAACATTTAAAAACAATCATTTTTAGTG -TTTTGAATTTTTTTTTAATTTCAAATTTTTCTTTAAAACATTAAAATTTT -AAAAACATTTCCAAATTGTTCCAAATAACATTATTGAACTCGTAAAACAA -ATTTAAAGGTGAATTTTCATTTATTTCGTTAAAAAATTACCTTTTAAAAT -TTATTTTTTCAAAAAAATCTGGATTTTTTTTCTGCGATAATATTCGAGCA -GTTTTTTTCGATTTTTTTTCTGAAATTCTGTGAAATTATTAACATTATTT -GAATTAATTATTCAAACAATTTCAAACAGAAATACAACGAGTTTTTCCAT -TTTTTATCATTTTCCAAAGTTTCAGAAAAAAATTTCGCAAAAAAAATTTA -GATTTTTCCAAAAAAATTAAATTTTTGAAAAATTCTCAAACGCACGGATT -TCTGGCTTCCTTCATAAATTGAAATGGAAGAGTTTGCCGAACTAGGCCAC -TTTGGCTCTGCCATATCTGGGGTAGATTTACGGTGCGTTGCGTGTCGCGT -CGCGGCTCGATTTTAGTTGTAAAACTGAATGTATTTGTCCGTGTGGAGTA -TACGACTTCCCCTCCGACAGGCGATTATCAATGAAGCGCGAAAAATTCAG -TGAAGAAGGCCAGAACCCAAAGTTTCACCGAAAAATTCGAAATAAAAAAT -CCTGAAAAATTTTTTAATTTTTCCATAAAAATTAAAAATTTTTAAAAAAT -TCCCAAATTGTTCCCAAGACACATTTCAGAGCAGGTTTCAAAAAATCATA -TAAATTATTTATAAGGGTAACAACACAAAATTTGGGTAACAAGAGCAACA -ATTTTTAATTAAATGTTTCATTTTTCATCAAAATTACTCAATTTTCCTGT -TTCAGCAATCGGCCTATGGTATTTGCCTCCTGGTTCTTCTTCTAGCAGCT -CTTCCAAGAATTGTTGTAGTACTTGCGTCTCCACAAGCGGCTCCGTTGAT -TCCTATTCTGTTTTATCTTGTTGGCACCGCGCTCAATTTTTTTCATGTGA -GTACTTGCTCACTTTTTTATGGTCTAAAAATTGGCGGGAAATTCAAAAAG -TTAAGAGTTTCAAAAAGATCGGCATAAAATTTAAATTGAACATTTTTGGG -GATTTTTTTGGAAAAAAAAACAAATTCGAAATTCGACCCATTTTGGCGGG -AATTCAAATTCTTTTAAAAATTTCGAAAAACATTTTTCTGCAAAAAAAAA -TTTTCATTTAAAAAAAAAACATTTTAAAAAGCAAGCTTTGCCGGGAAGAA -TTCAAAAAATGTGGCTGGGATTTTGGCGCGAAATTCAAATTATTTTAAAA -AATTTTTGAGAATTTCTTGAAAAAAAAACTGAAAATAATTTTGCGGAAAT -TTGAATTCTTTAAAAAATGCCAAAAAAAAAAGATGTTTGTGCAGAAAAAA -TTTTAATTTTTAAAAAGCAATTTTTCACGGATTTCTGGCTTCCCTCATAA -ATTGAAATGGAAGAGTCTGCCGAACTAGGCCATTTTGGCTCTGCCATATC -TGGGGTAGATTTACGGCGCGTTGCGTGTCGCGTCGCGGCTAGATTTCAGT -TGTAAAACTAAATATATTTGTCCGTGTGGAGTACACGACTTTCCCTCCGA -CAGGCGATTATCAATGAAGCGCGAAAAATGCGAAGAGGAATCTGTTCTAA -AATTAGGCGGGAAATTCAAAAAGTTCAGGGTTTCAAAAAGATCGGCGAGT -TTCAAAAATGTCAAAAATATTTTTCTGCAGAAAAATTGTCGACTTTTTAA -TAAACTTTGCCGGAAAGAACACGTGGTGTCAGAGTGTCCGGTTTGATCTA -CGTAGATCTACAAAAAATGCGGGAGTTGAGAAGCAGAGTTTTCAACTGAT -TTCGAATGGTTAAGAACGTGCTGACGTCACATTTTTTGGGCGAAAAATTC -CCGCATTTTTCGTAGATCAAACTGTAATAGGACAGCCTGACACCAAGTGG -AAGAATTCAAAAAATGTCGCTGGAATTTTGGCGCCAAATTCAAATTACCA -AACGGTATTTAATACATAGAGCTTCTCACTCAACATCTGAGCTACCGGAA -ATTAACAACCTTCACATTTTTTGGTCATTACTCACACACATGTGGTTTCT -AAGCAAGTTTCAGATACTTTTTTTTTTGTTTTTTTTTGAATTAATACTAT -TTTTTGCAAAAGTCGCTTCGGGACCCAAAAAAAAAATTCAAATTCTTTTC -AGTTATACGTGTACTGGCACTGGTATTGGCACGTGAGTGCCATGTGGAAT -TCGGTGGTCCGTGTAAAGTTCGGACAGCGGCTCGAAAACGCGAATAAGCG -AAGTCGACGGGATAAGCCGATTGTGCCGAAGGAGGAGATCGATGATGCCG -TTTTGCATTACGTGCCAGCGAATAAGCCAACTGAACAGCAGAATCATGTT -CAGCACAATCATATCAGTCAAAACGGGATTCAGCAACCAAAGGTAGGTCT -ACCTACCTGCCTATTTTCCTGCCTACTCGCCTAAGTTTGTCTAAAATCCA -ACTGCTTGTCTGTTCTGCATACCAATATGCCTAGACATACCCACATTTCT -GCTCATCTTCTAACATGCCTGCTCGCCTAACTTAATGCTGTATGCCTATG -TACTAGGTTACTGCCAGCCTGCCTACTTGCCTACCTACACAAATGCCTAT -CTGACTACATCTATATCTATGCTTCTCTATGCATAAATGCCTGCCAAAAT -GGCTAACTGCGTGTCAAAGTTCATGCATGCCTGCCTACCTGCCTACGTGC -GTACATGCCTATTTGCTTACCTAAATGATTACCTGCTTACCTACCTGTCT -ACCTGCTTAAGAGCCCTACTTATTTGCCTACCCACCTGACTGCGTGTCTC -CTCTCTTTCTGCCAATCTAGGCCTACATGTCTATCTAGGCCTATATAAAT -TCCTACCTGCCTACCTGCCTAAATACCTACTTGCCTGGCTATGTCTTCTT -ACCAACCGTTTTTTTATGCCTACGTACCTGCGCGCATGCCTACCTACGTG -CCTACCAACACCTACAAATACCTGTCCGCCTTCATCACATTTTTCACTTT -CAGGTAATCCTTCCACCACCGAACCCCTACAACACCGCGCCCACACATTA -TCGACGCCGATCCTCCACAGAAGCCCACCGCTACCACCCACCTCGGCAAC -CGAGAAGCTCGGCGCCAACCCACCACCGAGTACCGGCCGACTATCCGAGT -GACGAGGAAGACGACTATGATGATACGGAAGGAGACGACGCGGATATTGA -TGATCTACCCACACCGCCACCGCCGATTTACGCCGTCCGCCTGACCTCCG -ATTCGTGGGAGAATCAGATGAGCCGCCCGTCGGGTAGACGGCGGTTACCG -GCGACTCCGAATTTGCCGAAACATGGAGAATTGCCGCAGATATTTAATAT -TCCTCATGCTAATGTTTAATCAAATTTTTGGGGTTTTATGGGTTTTGGAT -TTTCGGAGCGGAGCTTCATTTATCGCTTTAATATTGAATCAGGGGTGGTT -TTCAATTCTGGCAATTTGCCGGTTTGCCGATTTGCCGGAAAATTTAATTT -TCGGCAAATTGCCGATTTGCTGTTTGCGGGATATCAGATTTTCCGAAAAT -GTTTAGAGGGATTTTTTATAAGACGAAAACACTAAAAACTGTGTCTTTTT -GAATTTTTTCCACTTTTTCTACATATTTTCATAGAATTTGCTTACTTTTC -AAATTGCCGATTTGCCGGAAATTTTTAATTCCGCCAATTTGCCGATTTGC -CGTAAAAAATCGTTTGCCGCCCACCCCTGTATTGAATTATCCGGAACACA -GCAACACTCTGAAATTCGAGCATTAGTTAAATGTGATATTTGAAAAGTTT -TGCAAACAAAATAATTTTCCCCAGCTTTCATCATTTTTTCTTTCAACAAA -AAAAAACCGAGTGATATTATGATTTCCAATTTGTGCTATTTTGAGTTTTA -TTTTATTTTATTTTGTTGTTTTCAATAAATAAACGAATATTTTTTGGTCA -TTTTTTGGCGCTATGAAACTAAAAAATTTCAGGTAACTTAGCGGGAAGTT -CGTTTTTTTTTCATTTTGGCAGGAAATTTCATTTTATAAAATGGCAAAAA -CTTTTCGTTAAAAGTTTTTAAATTTTGAGAAAATTGACGAGAAATTAAAA -ATTTCAAATTTTTTGGCTCTAAATTAGGATTATAATTTTCCGAAAAAAAA -TTTCCGAATTAAAATTTGGCGTCTCAGTGTGTTATTCAATTAGAAAAACC -TTCAAAATATTAAGACATTTCGGAGGCACGTGGTGTCAGAGTGTCTATGC -TCCTTTAAATGATGCATTCAAAGGCGCTTACACACCTGCACGTAATCTCT -TTTTTGTCTCAAAACAAAAGGAGCTTCAGACTCTCATATCTCTGCAACTC -TGTGTGAATAACAATTGGAGCCCCAGAGCTCCCGGCTCCACACTGCCCGT -TTCCATGGAGACACTCCGATTATTATGGGAGCCACCACTGCTCGCCGAGC -AGCAGCAGCAGCAGCCCATTGTTAACCCGATGACCAATATCTATATTTGG -GTCCGGACCGCCCGTTCCCTTCAGTTTTTTTATCCGACTATCGATGTGGA -GGCCGATGGGTTCGGTTGCTTCTATGAGATTTGTTTGGAAATTGTTGGCT -TGTTGGAGGAGTGCGATAGGATAAGGTAAGCGTGCTCTATTGATAACACG -AATTTTTGTGATTTTCGGCAACATGGGATCGTGGTTGCCCAAAGGGAAGG -AAACGCGCCCCATTGATAAAATCATTTCGCAATAGAGCGCATTTTCATCA -TTTTTTTGCAGTTTTGACGAATTCGAGACCCTCTGCGAGAATAGAATATC -GGAAGTTTATGTGGAAGCAATTTTTCAAAATGCTGTGGAACAAGGAAATG -TGAGTTTTTTTGTGATTCTGATGCTAATTTAGCAAGTGCGCTCTATCGAC -AATTATGACTTTGTGCACGTTCAAGTATTTTCTCAAAGTTTAACACAGGG -TTCTGGCCTTCCTCATTGAATTTTTCGCGCTCCGTTGACAACGGACAACG -CGTGGGAAAGTCGTGTACTCCACACGGACAAATCACATTTAGTTTTACAA -CTAAAATCGAGCCGCGACGCGACACGCAAGGCACCGTAAATCTACCCCAG -ATATGGCCTGGCCTAGTTCGGCAAAAACTCTTCCATTTCAATTTATGAGG -GAAGCCAGAAATCCGTGAAGTTTAACAAATTGTGAGGTGTAGCAAACACG -CTCAAGTGACAATTTTTACTTTATGCGTCATAAATTTTTTTCTGAAACTT -AGAAAACGCGCTCTATTGCTACTTTGAACGGAAAACGCGCTCTAATGTCA -ATTTTATTTCCAGATAAACGCCCGCCTAAAGCTTCTCACCTTCTCACTTC -TCTTCGCAGGTCTCCAACAAAAAACTAAAGATCTCACAAATTCCATCAGG -TCGGACGTGGTCTTGACACGAATTTCAAAGTATTTTGGTAAATTTGAAGA -ATAATATTTGTTATTTTTTTGTTTTCCGAACTTTACAGGCCAAATATTCA -AACTTTTGTTCCAATTAGACGTGGGCCGCCGGTTACAGGACAGAGAAATT -GTGCACGCCATTGGAAATGGGCAGGTGAGAAGTTCGGCTACAAAAACGTG -ACGCGTGGCCTAGAAAGATTTGTTTTTCCACAGCTTTTTCCACAGCTTCC -ACAGCTAACGGGATGGCCTAAAAAACTCCACGGTCGTTTAGCGATAGAGC -GCACTTGCACATTTTGGGAATCTTCTGGAAGAAAGTAAACGTCACAAAAG -GCCTAGAAATCTTTATCGTGTGTGGTTTAAGAAACAATTCTCGGCTTTGA -AATTATGGTTGCTCGGGGAAAAATGATTGTTAGAAGCCGCACGCTTGCAC -GCTTGCACAGCTTGGGAATTTTCTGGAAAAGAAGTGACGTCACTGGTGGC -CTGTAAATTTTCGCCATGTGTGAATTAACAAAACAATTATGGGCTTTGAA -ATTATCGATTTTCACGGATTTTTGGCTTCCCTCATAAATTGAAATGGAAG -AGTTTTTGCCGAACTGGGCCATTTTGGCTCGGCCATATCTGGGGTAGATT -TACGGCGCGTTGCGTGTCGCGTCGCGGCTCGATTTTAGTTGTAAAACTAA -ATTTATTTGTCCGTGTGGAGTACACAACTTTCCCACGCGTTGTCCGGCGG -GCGATTGTCAATGGAGCGCAGAAAATGCAATGAGGAAGGCCAGACCACGT -GAAAATCAATAAGTTTTTCAGCAAAAAATGAAAAATGAGGAAATTTCGTT -AATTTTAGTTTTGTTAGCAGTAGTGCGCGCTCACATAGTTCAAGAATTTT -TTTTTGAAGAAAAGTGACGTCACAGATGGCCTAGGAATCTCATCTATGAC -GTCACTTCTCTTCCACTTTATCCTATTTTCAGGGCTATGAATTCCTGGAC -ACCCTATTTGAGGGAACAGTAAAGCACAGACATGGAAACTCGAACCATCA -CGGCGTGCGCCCCCTTTCCCATATAATCCCCCAAATTCTCGAAAAAGCGA -GCAGTATATCCCTACCATTTTTGTGCAATGAAATCCGCCGACACCTTATC -AAAGACCCGTATCATATTGATGAGTTCTCAACTGACAAACCTGCTCAAAT -ATTTTCGACGGCTCGCCGAACGACACTGGCACATAATAGTCGACGGGTGG -TACACTTGCATTATATCAATCGAATTGAAGTGCTGCGGAAGGATGAATTT -GCGAATGTTCACCTGAGAATTTGTAATGATAAGATTAAGGCGTCGTTCGT -TTTTGTTCCGTTGAGGTGAGATTTTTTGGCCGAACTTTTTTTTGTTGCTT -TTTTTGAAAAATTTTTAAGAGATTTCATTTTTTTTTACAATAATAGAAAA -ATCAGAAAAAATATTCACGAAACCAATAAGTGGGCGGAGCATCAAACTGG -CACGCTCATTTTCCGTAGATCGTTTCTGCCAAAATCGAAAATTTCTTGAG -CTTTCTTGAAAAATAACGCTAAATTTAATTGTGAATTTATTATTATCTCG -AAAAAAATTATCAAACAGTCGAAAAGGGGCGGGCTTACATTTTTTAGCCC -CGCCCACTTTTAGATTTGTTTTGTTGAAAAATGTCCAAAACTGAGTTTTT -CTCGGAAAATTTGAATTCCCGCCAAATTTTTTTCCAGAAAATTTGAATTC -CCGCCAAATTTTTTCCAGAAAATTTGAATTCCCTCCAAATGTTTTTATTT -TCAGAAAATTTGAATTTCCCGTCAAAATTTTTTTCCCAGAAAATTTGAAT -TTCCCGCCAAAATTTTCCCAGAAAATTTGAATTCCCGCCAAAATGTTTTC -CAGAAAATTTGAATTCCCGCCAAAAAAAATTTTCTCAGAAAATTTGAGTT -TCCCGCCAAAAAATTTTTTTTAAAAGAAAATTTAAATTCCCGCCAAAATG -TTTTCCAGAAAATTTGAATTCCCGCCAAAATTTTTTCCAGAAAATTTGAG -TTCCCGCCAAAAATTGTTTTACTGAGAAAATTTGAATCCCCCCCCCCCCC -CCCCCCCCAAAAAATTGTTTTACTCAGAAAATTTGAATTCCCGCCAAAAA -TGTTTTTTCTAAGAAAATTTTAATTCCCGCCAAATTTTTTTTTAGAGAAA -ATTTGAATTCCAGCCAAAATGTTTTCCAGAGAATTTGAATTTCCCTCCAA -ATTTTTTTTTCTCAGAAAATTTGAATTCCCGAATTTTATTTTTGAAAATT -TGTGTGAAATTAAATTTTTGGGAATATTCATTGTGGCCTAAGTTGCTCCA -AATGGAAGAGTTTTTTAAAAATTAATTTCTCGTCCACGCGTCAATTGTAT -GCAAGAAATTCGAATATTTTCCAGATGTGAAACCGTATTCCTCGACAGAC -TTATGTACACAAAATGGATAGTTCTTGGCGCAGTACGCGGCATTGTAATT -GTTAAAAATTGTCAATCGACCCGAATTTCGGTGAGCTGCGACCAGCTGAT -TGTGCTCGATTCGAAAAATATCGAAATCTACGCCATGTCGCCGAAGAAAC -CAATAATTTTCAACAGCTCTGCGGTAACTTTTGCCCCATTTAACACGATT -TACGAGGTGAGTTCGGTGGGGCGCGTTTGCATTTATGAATTCGAAAATTT ->CHROMOSOME_II -CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC -TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA -AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG -CCTAAGCCTAAGCCTAAGCCTAAAATAGTGACTCTGGCAGTTCTCTAAAA -TAAGTGACTCTGGCAGTTCACCAAAAATTGTGACTCTGACCGTTCACCAA -AAATAGTGACTCTGACCGTTCACCAAAAATAGTGACTCTGACCGTTCACA -AAAAATAGTGACTCTGACCGTTCACCAAATATAGTGACTCTGACCGTTCA -CCAAAAATTGTGACAATGACCGTTCACCAAAAATTGTGACTCTGACCGTC -ACTATTTTTATTGAACTGCCAGAGTCACTATTTTTAGTGAACTTCCAGAG -TCACAATTTTTAGTGAACTGCCAGAGTCACTATTTTTAGTGAACTGCCAG -AGTCACTTATTTTGGTGCACTGGGGTGGGTCACGCCCCCAGTTCTCAGTT -ATGGGTACTCTGATCCACTCGGGACCCACTTTATCGTGTTCCCCGTGCCT -CATTTACCCTAGAGCTTCCTCCTTTACCTCTCCTCTCGCTATCTCTAACA -TTCCAATGGAAACTCCTATTTGAATTACCGCCACCGATGTGCCCGACGCG -ACTTACTGTTAGCCCTTGTTTTGCACAAATCTGTTGGCTTCCATATTTAA -AAGTTAATTAATGACCCAATGTTCTTTTTTTCTCTAAATCTCCACAAGAT -GTTCTGTTTTCCCTACTGGACACTATCGTTCACTGCGTCTCACCAATTCA -CATTGTCTCTACTTTACCTTTTTTGTCATAGTACACGTTCGCCAACGGTG -TCGACGGCCAAATGCTTTGGGCAGCGTTTGCTTTTTTTATAATTAGTTTT -ATTTTATTAAAACAATAGCTCTAAAGTTTACAAGTCATTTGTTATAGGCT -AAATGAGTTATGTCTAATAAGTAATTTGAACTAGATACTTCCGTGTAAGT -GACAATGTATCGGAAAAGTCCTCAAAGTGCGATGTAGAAGTTCACATGTA -CTTTGTTTGGCATGTTAGTAAAAGAGCCAGTATGCTGATTCATTTTATAT -TCTATATACTCATGTAATATGCCCATGTAAGGTTTAATTCCAAAAATATG -AGCGTGTTCTATTTTATAATATTTTACTAAAATACCTTTCAGTTAATTGC -ACTCAAATTTGTTGTTCTTCATTCTCTCGTTATGATTTAATCTTATTGCG -TCAAGGTCATTATTTTAGGTCCATTAGTTATCGATCTGAAACATGTTGTT -GTATTTTTCTATTCTTGTGAGCTCAGGACACCTCATACAACTCCAGAGAA -AATGTGTCTCATTATTCTTGTCTTTTTTCAAGATCTAATCAATTTTCTAC -ATTAACGACGTTTTTGTCGTTCTGCTTCTTTTTTTCGTTCGTTTGTCTCG -TCCATCAGCTGTCCACTCATTTCTCTCCCACTCACTAGGCAGTGCTTTGT -TTGGTTCCGATTGGCAGCTGGCTGCAGGGCCTGCATCTCTTCTATGTCTC -TCATTTACTTGCATTCTTTTCTTCGTTAATTTTTGTTATGATATTTAAAC -GGGAAGAAGAGTTTGTGGTTCTTCTTTTTATAATCACTAAAACTTTTGGA -TAAGTAACAATTTTCTGATAAAAATATTTTCACGGCGAAGAAAAAAGAAA -AAGAAGAGTAGTTTTTGCACGTTTTCATATAATTATTTTCGTTGATCAAA -TGTTCTTCTGGAGTTTTCTAATAAATTTCTTATCGACTTTTTTTCAGAAA -TTTTTCTCAACTTGTCATGTCAATGGTAAGAAATGTATCAAATCAGAGCG -AAAAATTGGAAGTAAGTTCTTTATAATTTCATTTATATACTATAAGTTTT -CTCGATCACAGGAGAAACAAAAACAACAGACAACACAAAAAACAATAAAA -CAATATTGCTCTAGTAATCAATAGTGTTGTAAAGAGGGAAGAAAATTGTT -ATCTGTGTAGCAGTCAACGTTGATTGAGATGTTGTGTTTGACTATAGAGT -TGAAAATAATAACTTCAAACTTGCAAGTCATGACTTATCAAACACTGCCG -GAACTTATTCTGGATCAAAGGAAAGTTGTCCAACTGTAGAGTCATGTTTT -TCAAAAGAAAACACAATTTTTAAGTATAAATATTTTGAAAAAGTATGTTT -TAGAAGTATGTCAAATTAAAAAAAAAATCCTTGGTTAAAAAATGATTTTT -TTGGATATATGTGTATTTTTAACTAAAAATATATACTTTACATATATATT -TTGGCGCAGTTATTTGATCTATAAATCAAACTTTTTGATAGACATTTTTT -TATATTTACAACAACTAGGGTTGTTATGAAAACGCCTATTATTCTACAAA -CTAAATTATTTTAATCATACATTCCCCACTATCTAAAAACTAATGCAATT -TTCAGATTTTGTCATGTAAATGGGTAGGATGTCTCAAATCAACAGAAGTG -TTCAAAACGGTTGAAAAGTTATTAGATCATGTTACGGCTGATCATATTCC -AGAAGTTATTGTAAACGATGACGGGTCGGAGGAAGTCGTTTGTCAGTGGG -ATTGCTGCGAAATGGGTGCCAGTCGTGGAAATCTTCAAAAAAAGGTATTT -TTAATTTAATGTGCATTTTATAATATAAATTCTTCAGAAAGAGTGGATGG -AGAATCACTTCAAAACACGTCATGTTCGCAAAGCAAAAATATTCAAATGC -TTAATTGAGGATTGCCCTGTGGTAAAGTCAAGTAGTCAGGAAATTGAAAC -CCATCTCAGAATAAGTCATCCAATAAATCCGAAAAAAGGTATTCACAATT -TGCATGATATTGTTATAATCTAATTTTCAGAGAGACTGAAAGAGTTTAAA -AGTTCTACCGACCACATCGAACCTACTCAAGCTAATAGAGTATGGACAAT -TGTGAACGGAGAGGTTCAATGGAAGACTCCACCGCGGTAAGTGTGTTTCT -TTAAAAATTACTTCCTTTTTTCAATTGTTTGAAATTAACAAGAAACCTGT -TGGAGCGTATTTCTGAACTTTTAAATCGAAAATATCATTTGCAAAAAAAC -TTGAAAATTGAGAAACTTTTTTAAAAGTGGAGTAGCGTCTGCGGGTTTTT -TTGCCCTAAATGACAGAATACATACCCAATATACCGAATATAACCGTAAT -AAAATTATGCGATTTTTATTTTTATTTTTCATGAATGTTAGGGGCAAAAA -ACCCACATGCGCTACTCCGCCTTAAGAAGAATCAGCTGTGAGCACTATCC -ACTATACATTGGAAATTTACAAATAAAATAGAGATTAAGTAATATAATTT -TTAAGGGTTAAAAAAAAGACTGTGATATACTATGATGATGGGCCGAGGTA -TGTATTTCCAACGGGATGTGCGAGATGCAACTATGATAGTGACGAATCAG -AACTGGAATCAGATGAGTTTTGGTCAGCCACAGAGATGTCAGATAATGAA -GAGTACGTTGTTTTGCAAATTGATTAAAAGTGGAGTAGCGTCAGTTAAAA -ACTCTAACATGTCTTAGGTTTTTCAAAAGTTTGGTCAAAGTTTTGGCAAA -CTGCCAACTTCTTGAAAACTTCGTTAAAAAAATTCTTGAAATGATTTGAA -AATTTGTATTATGTTATTCTCTTATTTCTGCACTATTCTATATGGCGCTA -CTATACTTTTAATTGATTTCTTGAAAGCAGTTCAATAATAATTAATTTTA -GAGTATATGTGAACTTCCGTGGAATGAACTGTATCTCAACAGGAAAGTCG -GCCAGTATGGTCCCGAGCAAACGAAGAAATTGGCCAAAAAGAGTGAAGAA -AAGGCTATCGACACAAAGAAACAATCAGAAAACTATTCGACCACCAGAGC -TGAATAAAAATAATATAGAGATAAAAGATATGAAGTAAGTCGAAATTGAC -AAACAGTGGTTTTTGTTTAAGTTTATTGCGAAATATTCAAAATTAGACAT -GTTAAAATTTTGCGAGATAATCTAAAGATTAGGTATACAGATTTTTTCAT -GTAAAGTTACATTCATCAAAATTTTTGTGTTCACCAAATTAGACAAAAAA -TGTTAGTTACACAGTATATTTATTTTTTATATCAATAAAACCTTTTTCAG -CTCAAATAACCTTGAAGAACGCAACAGAGAAGAATGCATTCAGCCTGTTT -CTGTTGAAAAGAACATCCTGCATTTTGAAAAATTCAAATCAAATCAAATT -TGCATTGTTCGGGAAAACAATAAATTTAGAGAAGGAACGAGAAGACGCAG -AAAGAATTCTGGTGAATCGGAAGACTTGAAAATTCATGAAAACTTTACTG -AAAAACGAAGACCCATTCGATCATGCAAACAAAATATAAGTTTCTATGAA -ATGGACGGGGATATAGAAGAATTTGAAGTGTTTTTCGATACTCCCACAAA -AAGCAAAAAAGTACTTCTGGATATCTACAGTGCGAAGAAAATGCCAAAAA -TTGAGGTTGAAGATTCATTAGTTAATAAGTTTCATTCAAAACGTCCATCA -AGAGCATGTCGAGTTCTTGGAAGTATGGAAGAAGTACCATTTGATGTGGA -AATAGGATATTGATTTTATAACGTGTAATTGAGTTTTGGCCAAAAAGGTA -TGGAAAGGTGGCTGTTTAGTTATATATTTTTCTATTATTTATTTGAAACA -TGCAAAATTGAAGTGAACAATAAGTGATGTTCATGGAAATTTAAACTGTT -TTATGATACTTTTTTGAGAAATTGAAAAATCTGTTCATTTTAGAAACAAT -GTCCACATGGTTCTAAGAGCTAAAATTTTTATTTTCATCCATTTAGAGTA -CTTTCTCTTTTAGAGTACGGCCCCAGAGCGATGTTAGAAACCTGAGATCG -GTCAACACAGACCGTTAATTTTGGGAAGTTGAGAAATTCGCTAGTTTCTG ->CHROMOSOME_III -CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC -TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA -AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAAAGCGCGAAATCCTATGAA -ATTTCAAGGATTTATAACTTTTTGAGTCCGAAAAGAGTCGGAAATCAGAT -AAAAATAAAATCGGGCTTTTCGACCAAAATTAGGCCTCGAAAAGTCTGAG -AAAGCACGGAATCTATGGATTCACGGCTTTTTGATTCCGAAAAGGTTCGG -AAAGAGAAGAAAATCGATAAGAATCGATAAATTTGCAGAAGTATTGCAAA -TAAATTCCGATTTTCACTAGAATTGCGTCATTTGGGCGCAGAAAATCGGG -CTTTTCGACCAAAATTAGGCCTAGAAAAGCATGAAAGGGGTCCAAATTCT -GAGATTTCGCAACAGTTTTTGGACAAGGTTATCCCGGAAATTAGCGGGAA -GCACTGAAGATCGAAAAACTGAAGATCTTGTCGTTGAGAATCGTTCAACA -GCGTCAGTTACTACTGAAAAACTGATTTTTGAGCAGAAAATCTGCCGAAA -TGTCCGAAATCGGACGAAAATCAGTGGTTTTTTCGCCAGGAACTCGTAAA -CGAGCGGGAAAAAACACTAAAATAAAATACATAATCGACGACGGCGTCGA -AAAATGGACTTTGGAGGCGATTTTGAGATAAAAATCGCCTCTCTGAGACC -GCGTCACCGCAACTCGTGCCTCCATCTGACTCAGGATCCGAATCCGGCTA -ACGAGTATACTCGAGCCGGTTCGGTCGATGCACCAATGTTGACACCCATG -TTCTTCGGGGAGTCAGACCCGATAGGTAACAAACGTGCGGCTTACTTAAT -GACGCGCGGAGGATACGGAGCTAGTACGAGCGGTGCGACTGATGATGCAT -AGGGAATAACAGTACACAAGCTTGAATTAATCCAAGTTTATTATCGAATA -AAAGGATTAATCAAAGAAAAAAGGAGGAAAGGGCGAGCTGCATTGGGAGA -CGACCTTCCTCGACGAGAGTTGTTGAAGAATTGAATGGATCGTAGGCCAG -AGGCCTATAATAATTATTGTGTGGATTTACGGGCAACGACACTCCGGAGT -AACGCTAGTTAGCGAAGGAGCGCGGTTGCATCTGAATAGCGCATATTGGC -ACGTAATTCAAATTAGAAAAATTACTAAAATGATTTAATTAATATTTTTA -ATAGAACGAATGGAATATAATCAGCAAATGGTACAAGCGGACGTCACAAC -ACATTGCTTAATAATAAATTTCCAACTGAAACCAATAGATTCAGCCTTGA -CACAACTGATCAGAAACTTGTTATACATGTTAAAATACTCGAATTCATAT -TCATCGCCACCAGAATAATTGGGTTTGAACACTCTTGCAACTTCAACTGA -GATGGTACCGTAGATCCAGAAGATGCATTGTTGGAATGTACTTCTTCCCA -AAAGGTTCTGAGATTTAATTGATTTTTAACCTGGGCCTAAAAGTCTCACT -TACGTACATTTCTAATATTTAAGGCATTTAGTGCTGAGAAGTATTCGACA -GTGGCCTCGATGTTTTCAAAGTGGAATAAATAGTGAATTGGAATAATGTT -GAAATAATGACCAAAAACTTTACATTCTTTTGATTTTTTCCACTGATCCA -TCCGAGTAAGCTGCTCAAAGTCATCGATTGTTTCAAGGCACCACAATTCA -ATACTTTTCAACTCTTGAGAATCGAAATAGGGCAGCGTAGATATAATATC -ATTGGGTGACACAAAAATAATCGATAATTCCTTCACATGAATGCATTGCT -TAGATCTGAGGATGTTCAGAAAATATGTGGTAACGTTAAGGTCTTGTTGA -GTTTGTACAACAAATTCGAATTTCCTGACACGTCCCAGTAATATTCTCAA -ATCGTTGAAAGCTAGTTGCATGAAGTTATCTCTTCTGATTACTCTCTTTC -TTCTGTGAGCCACAATCGAATTCCCGGCATTGGTGTAAATGATTTTCATT -TTATCAATCCGCATTTCAACTCGACCATTGCATACCCAAAACGAGATAGA -ATCAAAATTAATTCCATTTTGAACAACGGCAGCTCTCAGACTTTTACAAA -TTTTGAGGTGAGTGAGTCTGAAGAATAATAGCTTGGTTATGATTTTTCAA -AGTTAGGGTACCGAAATCTTGGAAATATTTTTAATTGACTCCAAATTTTC -CCCTGATTCCGAAAATCGATGTGAAAAAAATCAAAAAAAAAATTCCTGAT -TTTATATTTAAGCTTGAAATCACGCATTTCATTTGCGCCCCGGTCTCTTT -TTCAAATTCGCGCCCTAATAAATTTGCATTGGAGCGCACTTGCATCGTGT -CATTTTCTTCGTTTTTTTCATTTATTTTAGCAGAATTCAATGTTTTAAAC -CAGTTTTATTCATTTGTGGAGAGTTTTTATCGGTTTTTTTTTGACTAAAA -TGAAAAAAGGGTCCAAATGAAAATCGAGATGAGCTAAGTCAAGCTTAAAT -ATAAACCAGGGAAATTTTTTGATTTTTTTTTTCACTTTGATATTCGGAAT -CATGGGAAAGTTGGGAGTCAATTAAAAATATTTCCCAGATTTTGGTACCC -CACCTTTAAATCAAAATAAAATCAACTAACTGATCCACTGGCTTTAGCTT -TTCCAATACTTGACCAAGGATCTCTGTGGGCATATCGGAAAGAGTAGGGG -AAATGTGATCCTGGCTGTAACAATCAAATTGCCATTAACCCAGTATTTCA -ACAAAAAAAAACTCACAAATTCATATATCGCACAAAATTAATTGCCCACC -ATTTGTCAAGTTCAGCTCCACGTTCTTCAGTCAGAGCACGTCGGGCTTCT -CGGCTGATTGTTACCATTTTCAAAAGATATAATTTCTTTAACACAGAAGT -TAAATAAAATATGTCCGATAGCAAAAAGTAGATGTGAATGAATTGAAGAA -GAACTGAGAAATAGCTAAATATCTATGTCTTAATTTTCATAGAGTTTCAT -TGTCAGATACTACAATGTTACTATTGAGAAAAATGTCAAACTGATAAGAA -TAGCAGCCAGCTTAAAATGAAAATTTGATAAGAAATTGCTGTCTTAATAT -TAATTATATTGTCGTCAACAAACAGAATTTTCACTTGCTAGTTGTTAGTT -TAAATTATATTTTGATACCGAAAAGTGTTTGAAAATGGGGGGAAACTAGA -AAATAAAGTTTTCTACATATTCCATATTTTCAGAATTGATTTCAAGATAT -GTCGGAAACAAGCCAAGAAGCTCGACGTGCACTGACGGAAGAACGGGGAA -AGGTGCTTGACAAATGGTGGGCAATTAATAATTTGAGATTCATGAAATTG -TGAGTTTTTTGGAAATACTGGCTTATTGGCAATTTGATCGTTACAGTCAG -GATCCCATCTCCCCCACGCTTTCCGATATGCCCTCAGAGATTCTTGTTCA -AGTTTTTGAAAAATTTGATTCTATAGAACATTAAGTTGCTTTGACTTTTA -CAACAAAAATATTCGGTATAAAAATGTTCTGACTTATTTGTCGAAAAGTT -TGTCGAAGTCTGAAGCCCGCCGTGGAAAAAATTGAAATTCATTTTGATTC -TATTTCGTTTGAAGTATTTAATAAAAATGTTATTATGAAATTGGATGGAT -TAAAAATTCTCTACAATGATGTCGCAAATGGTGCTTCTATAGTGGCTTAC -AATAACAAGGAAGCAATGATCAAAGGAGAAAACTTCCTGAAACTAGCTTT -CAATGATTTGGGAATACTACTGGAACGTGTGAGGAAATTCAAATTTAAAA -TCTATGGAGACGATGTACATGCCATTGCCACATTTCTTTTAAATGCTCTC -AAAGCTGATCAGTGTGTTCACGTAAAGAAAGTAGTGCTTTTTTACGTGCC -ACTCATTGATATTTGCTCAATTCTCTCGTATTTTGATTCTGAAATGTTGG -AAAGAATTGACTTGCGTTGTAATGATACAAACGCTCATTTTGAACAACTT -GCTCAAAAAAAATTCCAACGAACAAAATGTGTAGAACTTTACAAACTTTT -TAATAAAGATTTCCAAATTTTTATACAGATTCACTAAATTTCCAGAGTTT -TCCCACAAACCGACACACAGACCGACCTGGTAGTGGAGAGGACAACATCT -TTATTCAATCCAGTCAGTGAAGTGGAATTAAACTGGGCTTCAAGGAAGAA -ATGGCACAACGGAAAAGGTCGGGAGAAAAACCAAAAGTCGGAAAAATATT -TTTTATTGAGATATAATTTTTTTTGGTAGAAACATTTTTCTTCGAATTTA -AATTATATTTCGCGCCAAAAATAAGATTAAAAACCAAAAAAAAATCCGAG -TGTGGAGAAGTATTTTCGAAAATATTCCTCTAATAATACCCTTTAACAAG -GGCTATAATAATGGAATTTCGGGTGCTTGAAAATGAGTTTTTTGAGATTA -GAAGTATGAATTTTTGTGTCTGGTGTTAAGTTATTTAAGTTATATTGAAT -GGAAATTTTAAAAAAATTCTGAAAAAATATTTATAATTGTTATTTGAAGC -TACTATTTCACCTGGAAACTTCTAGAATTTCCAATTTTTTTAAAAATTTT -TTAAAAATTTTTTTATTTTCAATATTTTTCACATATGATACAATTTATTA -TGAGATTTTCGGAATTTTTTAAGTGAAGTTTTTCCCTAAAGTTTTCAAAA -TTGACTCGAATTTTCTGGAATTTTTTTTTTCAAAAGAAACACAGCTTTTG -TTTAATTTCCAGTTAATTTTTAGCTTTAACATTAAAAAAAATTTCTTTCA -TTTTTAACAAAAATTCCCCTTCTTATTTTAGAATTCAAAGCCAAAAACCT -TCAAATTCAATTTTATCTAAAACCTCCTCAAATTCGAAAAAGTGTGAGAG -AGATACGCGAGCTACGAAAAAGAGCAAAAATCTGAGTTTTTGAGCACTTC ->CHROMOSOME_IV -CCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCC -TAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTA -AGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAG -AAGAGACCAAACCGAAAAATCAATTTTTTAAACGAAAAATCAATGTTTTA -AACGAAAAATCTATTTTTTAAACGAAAAATCAATTTTTTAAACGAAAAAT -CCATAAAAAATTGTTATAAAAATTCTGGAAAAAAAACTAAAAACTTAATT -TTTGCTTTGAACATTCATCTTTCGCGAAAAAAATTTCAGCAAATAAAACC -GAAAAATACAATTTTGCAAATAAAAAATCTAAATCAACAGTAAAAAACAA -AAAAGTCAAATTTCAATAGAAAAAAAAATCAAAAATCAATTTTTACTCCA -AAAATTCAACTTTTGCCAAAAACTAACCCAGAAAAATCAATTCACAAAAA -AAAACAAATAAAACTGCAACGATGTTTGTGAAAAAAATTTTCTTGATATT -TTTAACGAATTTTTGTTTAAAAAAAATGCATTTTTGGCCATAAAATTTTT -TTTTTGATTTTTTCAAACGAATTTCCCCTCAATTTTCTTGCAGATCGACG -TGGATATTGACGACCTAGATGACGATTTTCTCTCCACAAACGGAATGGAA -CGACACGGTTCAGAATTACAAGGAGAAGTGGTTTTCACTACGACGAGTAC -TGCGAATAACAATGTGAAACGAGCCGTCGAATATTTCGAAGATGATAATC -AAGATGATGCACTAACATCCACTTCATCCGGCAACAGTACACAGAAGGAA -TCGTCTCCGTTCACAGATTTTGATGATGTTCCGCCGCCACCAGTGGCTCC -AGAAACTCCGGCTCCAGCCCAAAACCGCCGAGAATCTGCGTCCCCCGAAC -GTCAATTCCTTGATGAGAGTCACCTCGGCGGAATTGGATCTCCGTTATCA -CAGAGTACAAGGCTCGATGAGACGTTTATTGAGGAATACTCTATTGAGTT -GGACACCTCTGGGAAGTATGTGTTGGGAAAAAAAATCCGAAAATTGATTG -AAAAATTCGAAAAAAAATCCAAAAAACCTTTTTTTAATGAGATTTTTTCT -GTGCAAAAATTTAAATTTAGAGCTGAAGAATGTGCACTTCTAGAAAAACT -TATTTTAAAAAATTCACATCCTTTTATCAAATTTATTAGCATATTTATAC -AAATTGATGGATAAAAATTCCAAAAAAGTTCCAGAAACAACATTTCCTCC -GCAGCTTCACCTGGTCCCAAGTCTCCATTTGACGATGATTTTACTGATAC -AGCTGCCCCGGTAGCCCCGCCACCAGCACCTACAAAAGCTGCCGAGGAAT -ATCGCCGGCAACCACATCAGAATCCGTTTGATGAGGAAGAGGAAGAAGAA -TCACAGTTTGGAGGGGGAACTCTGTCCGGTAGAGACCCATTTGATGAAGA -TGTACGTTTTTCGTAAAGTTCGGAATTTTTAGGGTATAAATTGAAAAACA -AATGGAGAAAATATGAATACCTAGATTTTTTTTTTCAAAAAATCCCAACC -CTAATATCCACAATTTTTTTTCAGTCTGGAAACTCTAACGAAAACCAGCT -CCGCGAGAAGAAGCTCCACAAAAAAGAGCAACTAGCTCACCGGCTCTCCT -CCTCTTCCGAAGAAATTGTGGAAGCCTCAATTCACGAGGATGAGCCAATT -GTGATGGCTCAAATTCCAGAGGAGAAGCCCAAACCGAAGGCTATCCCGGC -TTTTGATAACGCCTATGACGCCGACTTTGACAATTCCCCACCACTTCATC -ATTACTCGGCGGTTCATTTGGAAACTGGGCTCTCACCGCTTGAGGAGGCT -CAGAGAGCTCTCCGAGCCAACCGAGCAAGGCATAAGCCGTCGAATGTATC -GTTGGCAGAGGAGGCGAAGCTTGCTGCCAGACAGAGATACTCGAATGCAT -CGGATATTAGAAGAGAAGAGGAGGAAGAAGTGGTGGAAGAAGATCCAGCA -GTGGTAGTTCCAGTTCTACGGAAGGATCTGGAAGTTGAGGAGGCTCCGAA -ATCGGTACGACCGCCTAGATATCGGAAGTCAAGGGAAATTGAGGAACCGG -TGGTTGTTGATCGGTTTGTTGAGGAAGAAGTTGATGAGAAGGAGGATATT -GATGCGATTTTTGAGAAATATCGAAAGGTTCGTAAAGATATTTTCGAGAA -AAACGGCGTTGAAAATTTGAAAAATTTGAACTTTTTTCGAGTTAAAAAAT -TTAAACATATAGAAAAGATATGAATCTGACAAAATTTAGAGAAAATAAAA -TGTTATTCACCAAATCGCCAATTTTTCTGCATTTTTTTGTCCGTTTTACT -TTGGTAATTCTGGTAATACAAAACTAGTTTTTTTTCAAAAAAGAATTGCA -GGAAAAATATTTTAAATGTTTTTTGAGCACTTGAGCGCATGAGATAGAAA -AACGTTATTATTATGCATTCCCTCATATAAAAGTTTGTTCAATTTTTTTA -ATTAAACCCCGCTCTTTGAGAAAACTCTGGACTCTACATGGAGACTACCT -TAATACAAATTAACTCATAAATATCGGTGATTTTCAACTAGTTATTCATA -TGATGCAATTACTGATTTAATAACTTATAATTATGTGTCAATTTCAGACG -TCTGTATCCGCCGATCCAAAATCTCACACGCCGATTTTGATGGCCGACGA -GTACAAAGAACCACAGAAGCAAGGTGAGTTTAGTTCGAAAAAAAATCATA -ACACACACCAGTAGGTTTAAAAACATTGTTAGAAAATTTGAAAAAAAAAC -CAAAAACCGTCGTAAAACTACACTTTTTCTATTGAAAATAGAACAAACAA -ATCAAATATCCTACATGTAAAATTTAAATCGAGTGGAATTAAATTCTTCA -AACAAAAAGAAATCTGCATTTAATATCGATTTCTCATTCAATTGTTATGA -ATCATAAAACATGATTTTTTACGACCTCCTCTGAATTATCTACATTGTTC -TCTTTTTCATACTTTCCATATTCTAGTATCGATAGGACTAACACAATTTT -AATAGTGAGTTCGTTTTTCAAACAATTGGGATTAATTTTCAACTGAACTA -GACTGTTTCTGAACGCTCAAAACCTTCAAAATCAATGCTTCTTCAAAACG -AAAAAATTGCACACTATAAACCTCTCACTTGAAGTGGCAGCGCTCGTTTT -ATATTGAGAAAATATATATTCAAAAAAATGCTGCTGCTTCTTCAGCTTCT -CGCCGGGCGCCGCCGCCAATAGTGAGTTCGTTTTTCAAACAATTGGGATT -AATTACAAAAAAACTTAACTGCGCAATTTTTAATTGGGAAACTTTCAAAT -TTTAACCATAACTATCAATACAGCGGTATACGAAATTTTTCTTCAAAATC -GCACCGATACTGCATTTTTCCGGAAAAGGACAAAGTCGGCTAATTGCCGT -TTTTTATAATTTTTGCTCATTAAGCTTATTCCATTAAAAATACAATTCTT -GTTTAAAATTGCTGAACGGCGAATTTTGTCTACCCGTGGTGGAAATTGCC -GGTTTGTTGATTTGCCGGAAAATTTCATTTTCGGCGTGCCGATTTGCCGT -TTGCCGGATATCAATTTGCCTGAAACGTTTAGAGGAATACAACGGAAACA -TTTGAAACTGTGCCTTTTTGAAATTTTTTCCCTTTTTTTTACAATATTTT -CATAGAATTAGCTTACTTTTCAAAATAGATGTAGGAAAATTCATATGCGT -ACAATTTTGCCAATTAAAATTTGAATTCTGAAATTTACAAAAAAATGTGC -AAAACTACTATTCGCCGAAAATTTTTGGCAAGTTGCCGATTTGCCCGAAA -TTTTTATTTTCGGCAAATTGGCGCTTTGCAGTTTGCCGGAAAAAATTACA -TACACCTGTTTTCAGCCTAACTTAAAATATGATTTACTTTGAAAAATAGG -GAATTAAATTTAAATAAAATTTTCAACTGAACTAGACTGTTTCTGAACGC -TCAAAACCTTCAAAATCAATGCTTCTTCAAAACGAAAAAATTGCACACTA -TAAACCTCTCACTTGAAGTGGCAGCGCTCGTTTTATATTGAGAAAATATA -TATTCAAAAAAATGCTGCTGCTTCTTCAGCTTCTCGCCGGGCGCCGCCGC -CACATTTACCGGCCAACCCGTTCTCTGAGGTTGTCTTGTAAGGGCGTTTT -CATGTATATTCAGATTATTATGCATGAATTTCATTAATAACGGTATCCAC -CCACGTATATTTCTCTTCTTCTCTCTTTCTGTTGCGACGGGGGATGTCGA -TTGATTACGCCACGGGCGCTAGCCTATTCCGAATGCATTGAGAAATTTGA -GACCAGATTCTGGAGTTTTTGGAAGACGAATCGTCGGCAGCGGAGCTCGA -TTTTAATTTAATTTCGAGAGCACCCGCGTGCTCTCGCCTCGACACCCTCA -AACTTCTTCTTCTTCTTCTTTTCGTCGTCTTTCACTTTTTTCCTTTTTCC -TGTCCTAACCACGGCGTCTTCCTCCAATTTTCAGTTACCACGACGTCATT -AGCTATTTTTAGTCCGAGTGTGGAGCTTGAGAATTTGAGCAATTCTGATG -TGACATTCCTGTCGTTTTTAGCGCTAATTTTCCTAAAACCTTCAAAAATT -TAGAAATTCTCTATCGTCTTTCAAGAGCCTAAGTTTTTTTTTTCGAAATG -AGTTTTTTAAAATTGATCGAAATGTTTTTAAATACTGAATATTTGGGATT -CTAGATTTTTACTACAATATTTCCTTTTCAATTTTTAATTGGACAAAATT -TCAAAATGTTAAAAAAATTCTCCGAATTGAATGCTATTTTTCTAAAAAAT -TTTTTTAGTGCCTGCACCAGTTGTCGTTGCTCAGGAGTCGCCGATCTTAA -AACGAAGAAACTCTCTAGTACCATCAAGGATCAGTGGAAGGCAGTCGACG ->CHROMOSOME_V -GAATTCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT -AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA -GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCATAAGC -CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCATAAGCCTAAGCCT -AAGCCTAAGCCTAAGCCTAAGCCTAAGCATAAGCCTAAGCCTAAGCCTAA -GCCTAAGCATAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAACA -TAAGCCTAAGCCTAAGCCTAAGCCTAAAACATTTGGAAATTATTTTTGAT -CGTTTATATTCAAGTAGCAAGAAAGTGTCCTAGCGTTAAAAATAGGAAAT -TTTTCGCTCTTTCAGAACAGTATACTCATGTCTCTGTACCGACGATATTC -ATTTCAAAAATCGCAAAAAAAGTTTTTTTCAAAATACCACTACCATTAAA -ACATTTGGAAATTATTTTTGATTGTTTATATTCAAGTAGCAAGAAAGTCT -CCTAGCCTTAAAAATAGGAAATTTTTTGCTCTTTCAGACCAGTATACTCA -TGTCTCTGTACCGACGATATTCATTTCAAAAATCGCAAAAAAAGTTTTTT -TCAAAATACCACTACCATTAAAACATTTGGAAATTATTTTTGATTGTTTA -TATTCAAGTAGCAAGAAAGTCTCCTAGCCTAAAAATAGGAAATTTTTTGC -TCTTTCAGATCAGTATACTAAACATTCACGTGTGGATTAAAATTAAAAAG -GTAGTGTTAAATAATTAAAAATCATTTAGGGGGGAACGAAACCCATAAGT -ACTGTCATTTTTATCTTTTACCTTTTTTTTTACGTACGACGTTTTTCGCT -GTTTTCCCTGATACAAAATGCGTTGTTCTTGTTTATTTATGTTTTTCTTG -AAAATGTTATCAACACTGATAATCTGAAAAATTATAATTTAAAACTTAAA -CGAAGCTAAAATGTGGCTGTTATAATACAGCGACTCAATGAAAAACTCAA -AAAAAAGTTGACTTTGCACGCTATGGTTAAAAATGAATGAATTCTTGGTA -CATGGTTTTTTTTGTGATTTTTCGTTGAAAAATCCACACCGTGTCAGAGA -GAGCTGAAAATGTTCATTGAAAGCGCTAAAAAACATTTGAAAAAATGCCA -ATTTTTCCGTAAGATAATTCGATTTGAAAGTTTGAAAACTGAATAGTAAT -TGTGTACTTGCAAAGAACCTTGTTTGCTTTTTAGTTTATTTGATCTACCA -AAGATTGGGTTCACTGTCTGACCATTTGGGTCACTAATCTCATAAACCGT -CAAAACAATCCAACGTGGTACAAAGTACATCAAGTTTTTCACAAGTCCTA -TAGTTAGCTGCGCATCCCTAATAGGTATCCCCATTAATTTTTTTTTCAAG -AAGAATGGCAACACAAACACCCCTCTCTGATGACTCGTGTGTCAAAAACG -AGCTCACGGAACTCTCCTCTAGTGAAACGGTCTCGAGGATTGACGAGGCC -CCGAAATTTCATGTCAAAGCTGTCGTCGGGCGTGTTGTGATAAAACATTT -TGGTGGCCGGGATTGTGTTTGTGTTCAGTCAGAAAGACGCTATTAGGACC -TCCTCCCATCTTATTAGCTGTTTATCCTTCATCACAAGACATCTCAATAT -TGGTTCCATAGGTGTAGCTTCTTCTGCTTCTTCTTCTTCTTTTGTACCTA -CGTCATCATACATTGGTTACTGTCCTACCGAGGTTTGTTTCAAATTTGCA -CATTTAAAATGGTATACACCTTTAAAATAAACTTAGAAGTAAGGCCTTTG -GTCCCACTACAAAAAATTTACAGTAGTTTGGTTCAGACTTTTCTAAATTT -AATTAAGGTTATTTTTTATTGACAAAAAATATTTTAGTTCAAGAAATATG -TTATGTTCAGTGGGTTTCCTGTCATATACTTCTACTTACCGTATTTCCTC -TATTAGTCTTGCATGCAAGACTAATTTTCAATTGACCCGTAGGGGTGCAA -GACAAATAGGGGTGCAAGACTAATAGAGGCTGCAAGACTAATAGAGGAAA -TACGGTAGTTATACTGGCAAAAGCGATAGCATTTCGAGAGAAAAATATTC -TTAAATGTGCTCAATATGGCTGATACAGATAGGTTTTTCATTACAGACAG -GTTTTTCATTTCAATTTTAAAAAAATACCTGACAGTTTATCAAGAAAATC -CAGCACATTCCAGAGTTATTAGAGTATTTAGAAGTTTGCAAGTTCCCAAT -TTTGTCAAGGGATTTTTCAAAGTTTCTCAAACTTTCCAAAAAATGCAAAA -AAAAACATTCCAAAAGTACCAATTTTTCCAAAAAATTCCATAAATATATT -CAGTCCACCGAACGTTTTTAGATCTAACTGAGAGTTCTCCTGAAGTTTTT -CAGAGTTTGAAGGAATTTATAGAAGTTTCTGATGTTTTACAGGATTTTAC -TAAAGTTTCTCAAATTATCTATAAATGCCAAATCTTTTCAGAAAGTTTTC -AGAAAATTTCCGGAAAACCTTCAATTTTTCAAGTTTTCCAGAAGATTCTC -GATTTTTCCAAAATCGTTTCAGAATTTTCCTAATTATTCCCATATTTCCA -TCGACTTCTTATAGTTAATTTGATTTTCATCAAATTGATACAAATGAGAA -AATTTGAAATTTGATAACTCACGTTTCGATGCAAAAAGAGACGAAAGGCG -GCGTGATGCGGGCAGGATTTAGGCAGGCGGTAGGCCCTGAAACCGCGCCT -GCCTACCATTGAACCTCTAAGCTATTCAGTTGTATTTTTTGATATTCCAG -ATGCGTACCGACGTGGGTTCTATTCCATTAATGTGTATTCTGTCTACACT -AACGACTGGTGTGTTCGGATATCTTCCGACAGAAGATCTCACAAATTCGA -TAATTTCTGGAAACGGTGGTTATCCAGTTCCTCCGGACACTATTATACCG -GCCGATGGAGATGAGGAAGGTAAGTGGATCAGAAATTAATAATTATAAAT -TTTTTAGAGTAGGGTTTTCTTCTGAAATCTGATATTTTGTGAATTTTGCA -AAAAATTGGAAAAATCGACAACGAAATGCAAATTGTTTCGTTAAATGCAA -AATGGATGCGCACCTTTAAAGAGTAAAGTCTATGAAAATGCTTTTATTTG -GTATTACAGTTCTTTTCAAAGGCACACATATTTTTCCCATTTAACAAAAA -ATCGTCGTGACCTTATATCGTATTTTCGGCGCAAAAATCGGAACATTTCG -CGTCTGTATAATACCCCATTTAAAGGTTTACGACGCAATAATACAACACC -GGGTCTCGACGTGGCAAACGATTGTTTATTGATTTTCACGGGATTCTCGC -CTTTCTCATTGAATTTTCGCGCTCCATTGGCAATCGCCTGCCGGACAACG -CGTGGAAAAGTGTAGTGTACTCCACACGGACAAATCCATCGGTTTTACAA -CTAAAAACGAGCCGCGACGCGACACGCAACGCGCCGTAAACCTACACAAA -ATCTCGCAGACTCAAAATGGCCTAGTTCGGCAAACTCTGCCATTTCGATT -TATGAGGGAGGCCAGAATTCCGTGATTTTCCCATTTCTCACGGCCTCTCT -AAATTTCACGTTTTTCAAAATTCATCTTTTTCTCTCTGCTCTCTCACTCT -CTCACGTGAAATATTACTTTCTGAATAATAATTTGTGTTTAATTAAATCA -AATTTTATTGAAATAGAATTCATGATACACGATCTTGAGAAGAGCTCTGT -CCTCCAGGCTGCGAACTGGAGCGTAGAAAGTTTTCATATTGTTAAAAACT -GCAAAGAAATGTTCGATTCCTTGTTCTGACGTGTGATGCTTTCTCAAATA -TGGAATTAAATGACAGACAAGGAGATGAAGTTTCGGAGTGACTCATTATT -TCATCAGTTTCATTAGGAAAAACACTCTTTATTTATTCAAGGAACTGTTA -AAGCAAAACTTCAATTTTGTCAATCTCTTGGTCTAAATACGTTCTATCGT -TAGATAAATCTAACTATCTAACTGAAACGAGTACAACTATATTGTAACGC -AAAAAAGCTAAGCGCCATAAAACACAAGTAAAACAGGCTCCAGTAAGCCT -AAACTGTTTTTACTATAAAAAACCATTGTCATTCACCTACCTACCAAATG -CCAATATAATTGGTTGAAAAAAATTAGTTTAATCTCCTCGCAAGATTTTT -TTCTCCGAAATTTAAGATTGGGCGCTTAGTGATATCATAACTCTGCAGCC -ATCAGAAAAACTGAAATGTATTTAAACTGTAAGTTTTAATCGTTTTATGA -GGATTATTTCTTTAGTTGACAGTTTTTTGATAGCTTCTTTAGTTATTGAG -CTACGGGCTTCCAAACAAAACCAATCAAAAACCACTATAAACCACAATGT -CCTAAAAGTGAAATTACTCAGTCAATTTTTAACCAAATCACGGCATTAAT -GTCTTGATATCTTCATTGAACAATTTGTAAAAATCGTAAGGCGGTAGTTT -TTTGATAAATGTCATCGTTTTTTAGTAAAATTGCGTTAACCATTCAAAAA -TGGCCCATTTTTGGTGTTTTCAGGCCTAATTCTTGTTTTTGAAATTCCGG -AGCCAGTTTTTATCGAAAATTTTTGTGCAATGTCAAAAAATGACCGGAAA -AAAATTCTCTACAATCGTAAGGCGGTACTTTTTAAAATTTCGTTTCCATT -CTTCCCCAGGGATCCCGTAAAAAACCAATTTTTCGACTAGGTCTCACATT -TTGCCCTACAAGAGCATAGTTAATGTTATAAATTTGGATTTTTTGGTCGA -ATTTGATGAGGTAATATTCAGTTGTTTGTTTATTGTTGGAAAATCTGAAG -ATTTATCAGCGAATCGCCCGATTTCGCCAATTATGACCAAAAAACCCCTA -GTTTAGGATTTTCACGAATGGATGAGTTCATTGATACGCTTCCACGCTGT ->CHROMOSOME_X -CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT -AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA -GCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGC -CTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCT -AAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAAGCCTAA -GCCTAAGCCTAATCTGTGCTCCAAAGCCTTCGAACTGACGGACTTGTGTC -CCGAAGTCGAACTCTTGAAGTTGTCACCGAGTTGGCTAATAAGAAAGACG -CTACGTTGTCTTTTTAGTAAGTTTTCGTCGAAATTCTGGAAAAAAAATCT -GAAAAAAATGAGAAAAATTGAAGTTTCTTGTGAAAACGTGCAGCAGCCGA -CAACTAACGGGACTGGGAAAATTGAAATTTTTAACACAGTTAAAATGCGA -TGTGCGCATAGTGGGTGAAAGGCCATAATGCGCGCACCGCGTGTGGCGAC -CACCTATTATGCACCTATCGCGAACGGTTCGCGATGGGTCCATAATGTAT -CCATGATGCTTCCACTCACGAAACAAACAATTCGAAATATATATTGTTTT -TCCGCCTATTTTTTTAACATTTTATTGCAATTTTTATTGAATTTTTGATT -TTCACTGGTTTTTTTTCTTGAAATTTTGTTTCGTATGTGGTATTTTGTAA -TAATCATAATATTTTTTTCTAAATTGTGTGTCTTTTAGAGAAAACACTGC -TCTAACCAGTTGAGGCATTTAAAAACATCATTTAAACAACATGGCAAGCA -TTATTTCGTTCCTAATAAATGGAAGCATAGTCAGGATTACTGTAGTTTCA -CATGTATTTAGCCATTAAAATTGTAATCTGAGTTTTCATCGGTATTTGCG -CATACTCAGAAAATTTTGTTAAATATCTTGTCTGTTCCTGTATTTTCAAG -AGCGAAATATCGTCAAAATCAGATTATTTCGTTGAATCTGGAAATGCCCA -CTGTTCTTCATGCCTACTCGTGTCTATTTCTCATCAGCGTTATAACTCAC -CTTTTAAATAATATTGTAGAAACAAATTTTTTGCAGCTTCTCTTCGAGCA -GCAGACTTCACAAAAACTTCATCAACAAGAAAAAACGTGAAAATCTTCAA -CATCGGAATGTCTAGGTGAAGGATGTCGGAACGGGCAAGGTTTGGAGCAC -GGCTCAGCTTTTTTAGATTTTAGATTTTAATTTAGAAACACACCACCGAA -GAGGAGGAGATAAAGATGGCTCGGCTCCAGAATGCATTGAAAGTTGTTGG -ATGGTCGAATGGATTGAAAGCAATTGTAAAGAAGGAGTTACCCGGAAGCC -CTGCCAAAAAGCAAAAACCGGCATCGGTTGCGCCGAAAATTTTGGACTCC -TCGATCGGAAGAGTGAGTTTGCTGATTTTCAAAAAATAGGATGAAAGGCT -GAATAATTTGAGCTCTCAATTGCTAAAAATATACGGATGGACAAAACTAC -GATCATCATTGGTCACAAAGTTGCAGCTCCGAAAAGAGAATTCGTCTGGA -ATTCTGGAAGTTCACAAGAATGGTGAGTACTTACCTTTCAAGTGAAAATT -GAGGAAAAATTGAGAAAGAAATGTGTTGAAAGATGCAAAAAAATGACAAA -AATTCAGCTTATCCTGCTAAAATTACGCGTGAAAAAGCATATTTTGTGCT -TGAAAATCGCAAAAAAAATGCATTAGAAAAACCGATTTTATTTAGTCCTC -CTAACAAATCGATTTTTGTAGACCTGGAGTCATCCTAGCAAACGAGGCAA -CACTGGAAGAGGACGAAAAACGTTAAGATTCCGTATGAAGATGTCAGAAA -ACCGAGTTAGGAGGAACTTGGAATTAAATTTTTGAGTTTTCTTTTTTCTA -TAATTTTTTAAGCTCACTTTTTATTCTTTTTGTTGTTCTCCCACTTAGGC -CATGTTAATAAATGTGTTTTTGTTAAGAAAACTGTCTTAAATGCTCAGGA -TCAGGTTTTATTATTAAAAAAACAAACCCACAAAGCGCACATAATTTATG -TTCGCGATGCTCGCAAAATGCATCTCAAGTTCGCGATGGACGCACAATGC -GCGCGCAATGGGCATCATTTCCGGTTCCTTTTTAACACACGCGCGATCCA -CTCCGAAAGCACTATGCGCACATCGCATTTTAACTGTGAATGAAAATTTG -AAAAAAAAAACTAAATTTGAGAATTTTTGAGTTAAAAAATTCCAAATTGC -AGAGAAATAAAAAATAAAATTTTTAGAGAATATATCGAAAGAAATTCAAA -TTTTTAAGAAAAAATCCCAAAAATAAATCATTTTTCTAGAAAAAAAAAGC -AAAAAGTTCCCATTTTGCGATAAAAATCGAAAAAATCCCGATTTTTTTAC -AATTTTCTAAAAAAAAACTGAAAAAAATCCACATTTTTCAGAAAAAAACG -CTAAAATTTTAATTTTTTCTAGAAAAAAACAAAATTTTCAATAAAAAATC -CAAAAATAAAACCAAAATTAAAAAATTATAATAATTACGGGTAAAATCGT -ATGAAATCCCGTTTTTTTTTTAATCGTAATTATTTTCAATTTTTTGGTTT -TCTCCTCAAAAAAAATTGTTTTTTTTCCCATTTTTCTTTAAAAATTGAAA -GTTTTCCAATTTTTCTCGAAATATTGACTCAAAATTAGCTTTTTCTTCGA -ATTTTTAATAAAAATTTTCACTTTCGCGACCCGTTAGTTGTCGGCTGCAC -GGTTTTCTGAAAATTGAGAAATAAAATTAGAAAAGTTGCAAAATTGAAAA -AAAAAACCGCAAAAAACTGAAATTTTCTAGGCAAAAAAAAATAAAAGAAA -TCCACAAATTTTTCGATAAAAATTGAAAAAATCCAAATTTTCCTGAAAAA -AATCCCAAAAATCCAATTTTTCTACAAAAAAAACCCAAAAATCCACTCCT -TTTCGATAAAAATTTGAAAAAATTTCGATTTTTCAAGAGAAAATTCCGAT -TTTCTAGAAAAAAAACCCCAAAAAACTATAATTTTCCTTTAAAAAAAACC -CCAAAAATCCAAATTTTTGTACAAAAAATACCAAAAAATCCACATTTTTC -AATAAAAATTAGAAAAAAAAAACAATTTTTGCTGAAAAAAAACTCAAAAA -TCCAATTTTTCTACAAAAAATACAAAAAAAATCACGATTTTCCTGAAAAA -AACCCAAGAAACTATAATTTTCCTGAAAAAAAAATCCAAAAAAAAACCGG -GAAAAAAACAAAAGAAATCCAAATTTTTCGATAAAAAAATTGAAAAAATT -CCGATTTTTCAGGAATAAATTCGGGAAAAAATTCAATTTTTCTAGTAAAA -AACCCAAAAAAAACCCAATTTTTTTGCAGTTTCCGTCACTTCTTCTACCA -CCGTTTCCACAGTAATCTCATCGAAGGCTCAGGTCGCCTACTCGACAAAA -TTAATGATACTACTGCTGCCCAACAACAACTACAAACTACAAACGAACTC -GACGGCGATGGCCCAGAAATTGCAATCGCCGCGGCCAAAGCATTCCATCC -GACTGAAAAATTCGATTTGGAAATGAATGTGGACGACGATGAAATTCTGA -AAGTATTTGATATACAAGAACAAGAGCAAATTGTGATGAAAAAAATCCGA -CATTTGGAGAATTCTGACTTACATTTCGAGCGAATTCATGTGAATTTGGC -GAAAAAAGAGCGATTTTTTGACGACGTTCAGAGCTCGGAAAATGACTCAA -GCGACGAAAAACTCGCCGAAATTTGCGATTTTTTGAGCCAAAATTGCCGG -GAAATCTCGAATGCTGCGAAGCCTCCTCGAGCAACACTTGACGAATGGAT -TCAGACTGGAAAATTCGAAATACAACGTCGTCGAGAGATCCGGGCGGTTT -GCCACGTCATCAAGGCCATCGGTCAGATGGGAATTACACTTGGCGAGCTG -TGTGGAAAATTGAAAATTGCCATAGAGCAAATTGCCGGAATTTTGGCCGA -TTTGAGCGGAGACAAGAAATGGTGTCCGAGACCTTGGATTGCGCCGGAAG -GTTTTCTTTTTTTTTTAAGGGATTTTTGGGGCGAAAAATTTGGATTTGGC -TCACCACGCGCGAGCTTTGATTTAAAGGTGTTTTCGCGGTGAGACCCGGA -AATTTTATTTTTCCTAAATCTCTCTGAACCCGGTCATGATTATACTTAAA -TGAAAGCTCACGGCGAGCTGAATTCGAATACTAAGTGTATGGTTGTTTAG -CTACAGTAACCTGACACTGAATTTCGCGGCGAGACCCGAAAATCCCCAAA -AACTCTCAAAAACCGTCTTAGAATCGATCAAAATATGTCAAGATTATACT -TAAAGGAGGACTAACGGTTCGGACGATTTTGAACGTATAGACCAAAAATA -AGCTCAAATGAACGAAATTCGTAATGAAACTGCTCAAAAATTTTTCAAAA -ATTTTTTATGGCGGTTCAAAATTTTGAAAAAAATTACACTGATTTTGGCT -AAAATCACGATTTTTTCTCATTTTTCCGTGTCACATTTGTCCGAAGTTGG -TTTTTTTAGAATTATCGTCCTTTATTACATATTTTGGTAATAAATCTCAT -TTAATTTCGTCGATTAAAGTGCATTTAAAGCCGATAAATAACCAGTTTCG -ATGATTTTTGGTTACCTATCGGCTTTAAATGTACCTTAATCGATGAAATT -AAATGAGATAATCTACCAATATATGTAATAAAGGACGATACTTCCAAAAA -AGCCAACTTCGGTCAGATGTGACACGGAAAAATGGGAAAAATTCGTGATT -TTAGCCAAAATCAGTGTAATTTTTTTCAAAATTTTGAACCGCCATAAAAG -ATTTTTGAAAAATTTTTGAGCAGTTTCATTACGAAATTCATTTAAGTATA -ATCATGAGCGGGTTCAGAGAGATTTAGGAAAAATAAAATTTCCGGGTCTC ->CHROMOSOME_MtDNA -CAGTAAATAGTTTAATAAAAATATAGCATTTGGGTTGCTAAGATATTATT -ACTGATAGAATTTTTAGTTTAATTTAGAATGTATCACTTACAATGATGGG -GTTTAAAATTCTATAGTAAAAGTGTTTTTTGTTTTAGCTGTTTTAAGTAG -GATTATTAGATATATTAATATTGACCCTATAAAAAGAAGTTTTTTTCTTA -TCTTTTCACTACTTTTTAGTATACCAGTTATTTCAATGAGAATACATATT -TGGTTTTCTTACTTTATTTGTTTATTATTTTTAAGTGGTATTTTTGTTAT -TTTGGTATATTTTTCTAGTTTATCTAAAATTAATGTAGTGAAAAGTTATA -TAGCTGTGTTTTTACTTTTGTTAAGAATGTTATATTTTTCTCCCACAGTA -TTAACTTATAGAAGATATTTAGGTTTAAGAGGTTTTTATTATAGTATTTA -CTGGTTTATTTTTTGTTTTATTTTAGTATGTTTATTATTTTTTATAAATT -TTAGTAGTTATTTTTTAAATTTTTCAGGTGCTTTACGTAAAGTTTAAAAT -TATGTTTTTATTTGTTAGATTATTTATATTTATTTTTAAATGACAACGTT -TAATTTTTATTCTAATTTCTTTAGAATTTATAATGTTGAGATTATTTTTA -AAATTTTCTTATGTTTTAGGGGAAATAATGTTTTTTTATTTTATGTGTTT -TTCTGTTATTTCAAGAATCCTGGGTATGGTAGTTATAGTAGGTAATATAA -AATTTTTTGGTAGTGATAATTGTATTTTTTAGTAACAGATATAAGTTAAG -TTTAAACTATTGATCTTCAAAATCAAAAATTTATTTCTGTAGAGATAATA -GTATAAATAAGTATGTTTCTTTTTCGCAGAAATGGTTTTTTATCTTATAA -AGTTTTCTTTCAGGGAATTAAAATTTGATCATGGTTTAAGATGATTTAAA -ATGGTATTATCTAAATTTGATTTACAGAGTAGGCAATAAAAATTTACCTC -GGCAATTTATCGCTTGTAAAATACTTGTTCCAGAATAATCGGCTAGACTT -GTTAAAGCTTGTACTTTAATTGATGTTAATTATGAAATTATTATATTTTC -TTTTAGATCTATGGTAGAATTTGGATTTATATTAGTGAATTTTCATAATT -TTAAGATTTGTTGAACAAAGCAGATTAGTACCTGGTTAGACAAAAATTAA -AAGAGCAGGAGTAAAGTTGTATTTAAACTGAAAAGATATTGGCAGACATT -CTAAATTATCTTTGGAGGCTGAGTAGTAACTGAGAACCCTCATTAACTAC -TTAATTTTTTGACTCGTGTATGATCGTTTATTTTATTCTTAAGGATTATA -ATAAAAAATTTTTAATTTATTAAAATAGATATATACCCGGTTTATGATTT -AAGAAACATTTGGCCTACAATATTTTATATTATGGATTTTAGTTTTAGTT -AACTAAATGAAATTGTAAAAGACAGTAAAAAATTCTTAATGTATTTTTGA -AGATTATCTAGAAGTGGTACAAATCATCCATCAATTGCCCAAAGGGGAGT -AAGTTGTAGTAAAGTAGATTTAGGGGAACCTGAATCTAGTAATAAAACTA -TTTTTAAATATGTTTTGAAAACATGTTTTGAGGTAACTCGTAGTTTTTAA -GAGTTAGTTTAATATAGAATTGTTGACTGTTAATCAAAAGGTGTACCTCT -TAATATAAGAGTTTAGTTTAAGTTAAAACGTTAGATTGTAAATCTAAAGA -TTATTGCTCTTGATAATTTTAGTTTTACTTATAGTTATTTTAATGATGAT -TTTTATTGTTCAAAGAATCGCTTTTATTACTCTATATGAGCGTCATTTAT -TGGGAAGAAGACAAAATCGTCTAGGGCCCACCAAGGTTACATTTATGGGA -TTAGCACAAGCTTTATTGGATGGGGTTAAACTTTTAAAAAAAGAACAAAT -AACACCCTTAAATTCCTCTGAAGTATCATTTTTACTTGTACCAGGAATTT -CTTTTGTTGTAATATATTTAGAATGATTTACGTTACCATATTTTTTTGAT -TTTATTAGTTTTGAGTATTCAGTTTTATTTTTTTTATGTTTAATTGGATT -TTCTGTTTATACAACTTTAATTAGCGGTATCGTAAGAAAATCAAAATATG -GTATAATTGGGGCCATCCGTGCTAGAAGACAAAGAATTTCTTATGAAATT -GCTTTTTCTTTATATGTTTTGTGTATTATTATTCATAATAATGTTTTTAA -TTTTGTTTCAAAATTTAATTTGAGACTTTTAATTATTTACATCCCATTTT -TAATTATAGTAATTGCTGAACTTAACCGGGCGCCATTTGATTTTTCTGAA -GGTGAAAGGGAGTTAGTTAGAGGATTTAATGTGGAGTTTGCCAGAGTAGC -TTTTGTTTTATTATTTTTAAGGGAATATGGAAGATTAATTTTTTTTAGGG -TACTTTCTTCTGCTATATTTTTTAAATTTTCAATTTTTATAGCATTTAGT -ATTTTTTCATTATTAATTTTTATTCGTAGTTCATACCCTCGTTATCGTTA -TGATTTAATAATAAGTTTATTTTGATTTAAACTTTTACCAATCTCTTTAA -TTATATTGTGTTTTTACGCAGTTATTTTTTATTATTAATCAAGTTTATTT -TTTAGACATTTTTATATTTGTTTTTGTTTTACAATTTTTGTTTTATTTTA -AAGAAAGTATATTAAATACTTTAGTGAAAAAATTTCTTAATAGGTTAGTA -GGAGTATTTAGATATACAAATACTTTACCATTAAGGTCAGTAATTTCTAT -TTTTACTTTTATTGTTCTTTTAACTTGTTGTTTTGGAGGTTATTTTACTT -ACTCTTTTTGTCCTTGTGGAATGGTTGAATTTACTTTTGTTTATGCTGCT -GTAGCGTGATTAAGTACTTTGTTAACTTTTATTTCAAGAGAAAAATTTTC -AGTTTATATAAGAAAACCAGGAGACACATATTTGAAAACTCTTAGAATGC -TATTAATTGAAATCGTTAGAGAATTTTCTCGTCCACTTGCTTTAACAGTG -CGTTTAACAGTTAATATTACTGTTGGTCATTTAGTTAGAATAATGCTTTA -TCAAGGATTAGAATTAAGAATAGGTGATCAGTATATTTGATTATCAATTT -TAGCCATTATAATAGAATGTTTTGTTTTCTTCATTCAAAGTTATATTTTC -TCTCGTTTAATTTTTTTATATCTTAATGAGTAATAAAAAAAAAAAGATGT -TAACTTAAGTTTTAAAGTGCCAAACTTTTAATTTGGAAATGGTGGACCAC -ATCTTAGTTGATATAGCATAAGAAGTGCATTTGTTTTAAGCGCAAAAGAT -ATCCGTCAACTAACGAGTTCATAAAGCAAGTCTTCTAAATTTGTTCTAGG -TTAAATCCTGCTCGTTTTTGATTGTTTTTATTTCTTTATTTACCTTGTTT -TTAACATTATTAAGAATTTTGACTAATAACGTTATTGTTTGATGAAGAAT -TTTTTTATTGATAACTGTAGTTTTTATTCTATTAAATAAAAGCAGCAAGA -GATATACCAGAATTTTTAATTATTTTGTTATTCAAGAGTCTTTAGGTTTA -TTATTTCTTCTTTGTAGAGGAGGTCTATTACAATTTTTTATTATTTTATT -GAAAATTGGTGTAGCACCGCTCCACTTTTGAATTTTTAATGTAACAAATA -ACATTTTTAATTATGGGCTAATGTGGTTTTTAACATTTCAAAAATTACCA -TTTTTAACTATTTTATTACAAATTTTTTGGTTAAGATCCGTGTATATTTT -GTTATTTGGTTTATTGATTTGTTATGTTCAAATTTTTGTCATAAAAAGTT -ATAAAAATTTGTTAATTATTTCATCCACAGAGTCTTTTAATTGGATTGTT -TTGGGAGTATTTTTTTCAATGTTTAATACATTTTATTTATTTATTTATTA -CTTTGTATTAATAGTTTTATTAATTTCTAAGTTTTCTAAAACTAGGGGTT -ATAATTTTATTAATTGAGAAACAACATTAGTATTTTTAAATATTCCATTT -AGAGTTTCATTTTTTGTAAAAATTTTCTCATTGAGGGAAATTTTTAAATA -TGATAGATTCTTTACTCTATTTTTGCTTTTTACAATATTTTTATCTGTAT -TGGCATTTAGATTTTGATTAATTAACTTGAGAATGAAAAATAATGAAGAA -ACTTCAAATAATAATAAAATAAATTATTTTATTATTTTTCCGTTAATAGT -TATTTCTATTATTTAATTACTTTTCTAGTAAAATATATTATATTATCTTG -ATAAGGTAAAGTTCCAGTTGGGAGAAGTAAGATGTAAAATAGATATTACT -ATGTTTGGTTACGGTCCAAAAAGATGCACATCTTTGCGATCTAGTTTAGA -AAAAATATTTGTTTTTGGTGCAAAAGAGTTTGATTGCATTTAGTTTACTC -TTTTAGTTTATAATTAAAATATGGCCCTGAAGAGGCTAAGAATATTAGGA -GTATTGAAAATTAATAATAGATTATTAAATTTTGTTAATGGGATGTTGGT -GACATTGCCATCTAGAAAAACTTTAACATTAAGATGAAATTTTGGTAGTA -TATTGGGTATAGTTTTAATCTTTCAGATTTTAACAGGTACATTTTTAGCA -TTTTATTATACGCCCGATAGGTTAATAGCATTTTCAACAGTGCAGTATAT -TATGTATGAGGTAAATTTTGGATGAGTATTTCGAATTTTTCATTTTAATG -GGGCCAGGTTATTTTTTATTTTTTTGTATTTACATATTTTTAAAGGGTTA -TTTTTTATAAGATATCGTTTAAAAAAAGTATGAATGTCTGGTTTAACAAT -TTATTTATTAGTAATAATAGAAGCTTTTATAGGTTATGTTTTAGTTTGAG -CTCAAATAAGATTTTGAGCAGCAGTAGTTATTACTAGACTTTTAAGAGTT -ATTCCAATTTGAGGGCCAACTATTGTTACTTGAATTTGAAGAGGTTTTGG diff --git a/htslib/test/ce.fa.fai b/htslib/test/ce.fa.fai deleted file mode 100644 index 2ad2e7f..0000000 --- a/htslib/test/ce.fa.fai +++ /dev/null @@ -1,7 +0,0 @@ -CHROMOSOME_I 1009800 14 50 51 -CHROMOSOME_II 5000 1030025 50 51 -CHROMOSOME_III 5000 1035141 50 51 -CHROMOSOME_IV 5000 1040256 50 51 -CHROMOSOME_V 5000 1045370 50 51 -CHROMOSOME_X 5000 1050484 50 51 -CHROMOSOME_MtDNA 5000 1055602 50 51 diff --git a/htslib/test/compare_sam.pl b/htslib/test/compare_sam.pl deleted file mode 100755 index 6860c91..0000000 --- a/htslib/test/compare_sam.pl +++ /dev/null @@ -1,196 +0,0 @@ -#!/usr/bin/perl -w -# -# Copyright (C) 2013 Genome Research Ltd. -# -# Author: James Bonfield -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -# DEALINGS IN THE SOFTWARE. - -# Compares two SAM files to report differences. -# Optionally can skip header or ignore specific types of diff. - -use strict; -use Getopt::Long; - -my %opts; -GetOptions(\%opts, 'noqual', 'noaux', 'notemplate', 'unknownrg', 'nomd', 'template-1', 'noflag', 'Baux'); - -my ($fn1, $fn2) = @ARGV; -open(my $fd1, "<", $fn1) || die $!; -open(my $fd2, "<", $fn2) || die $!; - -# Headers -my ($c1,$c2)=(1,1); -my (@hd1, @hd2, $ln1, $ln2); -while (<$fd1>) { - if (/^@/) { - push(@hd1, $_); - } else { - $ln1 = $_; - last; - } - $c1++; -} - -while (<$fd2>) { - if (/^@/) { - push(@hd2, $_); - } else { - $ln2 = $_; - last; - } - $c2++; -} - -# FIXME: to do -#print "@hd1\n"; -#print "@hd2\n"; - -# Compare lines -while ($ln1 && $ln2) { - $ln1 =~ s/\015?\012/\n/; - $ln2 =~ s/\015?\012/\n/; - chomp($ln1); - chomp($ln2); - - # Java CRAM adds RG:Z:UNKNOWN when the read-group is absent - if (exists $opts{unknownrg}) { - $ln1 =~ s/\tRG:Z:UNKNOWN//; - $ln2 =~ s/\tRG:Z:UNKNOWN//; - } - - if (exists $opts{nomd}) { - $ln1 =~ s/\tMD:Z:[A-Z0-9^]*//; - $ln2 =~ s/\tMD:Z:[A-Z0-9^]*//; - $ln1 =~ s/\tNM:i:\d+//; - $ln2 =~ s/\tNM:i:\d+//; - } - - my @ln1 = split("\t", $ln1); - my @ln2 = split("\t", $ln2); - - # Fix BWA bug: unmapped data should have no alignments - if ($ln1[1] & 4) { $ln1[4] = 0; $ln1[5] = "*"; } - if ($ln2[1] & 4) { $ln2[4] = 0; $ln2[5] = "*"; } - - # Canonicalise floating point numbers - map {s/^(..):f:(.*)/{"$1:f:".($2+0)}/e} @ln1[11..$#ln1]; - map {s/^(..):f:(.*)/{"$1:f:".($2+0)}/e} @ln2[11..$#ln2]; - - - if (exists $opts{Baux}) { - # Turn ??:H: into ??:B:c, so we can compare - # Cramtools.jar vs htslib encodings. Probably doable with (un)pack - map {s/^(..):H:(.*)/{join(",", "$1:B:C", map {hex $_} $2=~m:..:g)}/e} @ln1[11..$#ln1]; - map {s/^(..):H:(.*)/{join(",", "$1:B:C", map {hex $_} $2=~m:..:g)}/e} @ln2[11..$#ln2]; - - # Canonicalise ??:B:? data series to be unsigned - map {s/^(..):B:c(,?)(.*)/{"$1:B:C$2".join(",",map {($_+256)&255} split(",",$3))}/e} @ln1[11..$#ln1]; - map {s/^(..):B:c(,?)(.*)/{"$1:B:C$2".join(",",map {($_+256)&255} split(",",$3))}/e} @ln2[11..$#ln2]; - - map {s/^(..):B:s(,?)(.*)/{"$1:B:S$2".join(",",map {($_+65536)&65535} split(",",$3))}/e} @ln1[11..$#ln1]; - map {s/^(..):B:s(,?)(.*)/{"$1:B:S$2".join(",",map {($_+65536)&65535} split(",",$3))}/e} @ln2[11..$#ln2]; - - map {s/^(..):B:i(,?)(.*)/{"$1:B:I$2".join(",",map {$_<0? ($_+4294967296) : $_} split(",",$3))}/e} @ln1[11..$#ln1]; - map {s/^(..):B:i(,?)(.*)/{"$1:B:I$2".join(",",map {$_<0? ($_+4294967296) : $_} split(",",$3))}/e} @ln2[11..$#ln2]; - } - - # Rationalise order of auxiliary fields - if (exists $opts{noaux}) { - @ln1 = @ln1[0..10]; - @ln2 = @ln2[0..10]; - } else { - #my @a=@ln1[11..$#ln1];print "<<<@a>>>\n"; - @ln1[11..$#ln1] = sort @ln1[11..$#ln1]; - @ln2[11..$#ln2] = sort @ln2[11..$#ln2]; - } - - if (exists $opts{noqual}) { - $ln1[10] = "*"; - $ln2[10] = "*"; - } - - if (exists $opts{notemplate}) { - @ln1[6..8] = qw/* 0 0/; - @ln2[6..8] = qw/* 0 0/; - } - - if (exists $opts{noflag}) { - $ln1[1] = 0; $ln2[1] = 0; - } - - if (exists $opts{'template-1'}) { - if (abs($ln1[8] - $ln2[8]) == 1) { - $ln1[8] = $ln2[8]; - } - } - - # Cram doesn't uppercase the reference - $ln1[9] = uc($ln1[9]); - $ln2[9] = uc($ln2[9]); - - # Cram will populate a sequence string that starts as "*" - $ln2[9] = "*" if ($ln1[9] eq "*"); - - # Fix 0 cigar fields - $ln1[5] =~ s/(\D|^)0\D/$1/g; - $ln1[5] =~ s/^$/*/g; - $ln2[5] =~ s/(\D|^)0\D/$1/g; - $ln2[5] =~ s/^$/*/g; - - # Fix 10M10M cigar to 20M - $ln1[5] =~ s/(\d+)(\D)(\d+)(\2)/$1+$3.$2/e; - $ln2[5] =~ s/(\d+)(\D)(\d+)(\2)/$1+$3.$2/e; - - if ("@ln1" ne "@ln2") { - print "Diff at lines $fn1:$c1, $fn2:$c2\n"; - my @s1 = split("","@ln1"); - my @s2 = split("","@ln2"); - my $ptr = ""; - for (my $i=0; $i < $#s1; $i++) { - if ($s1[$i] eq $s2[$i]) { - $ptr .= "-"; - } else { - last; - } - } - print "1\t@ln1\n2\t@ln2\n\t$ptr^\n\n"; - exit(1); - } - - $ln1 = <$fd1>; - $ln2 = <$fd2>; - - $c1++; $c2++; -} - -if (defined($ln1)) { - print "EOF on $fn1\n"; - exit(1); -} - -if (defined($ln2)) { - print "EOF on $fn2\n"; - exit(1); -} - -close($fd1); -close($fd2); - -exit(0); diff --git a/htslib/test/cross_validate.sh b/htslib/test/cross_validate.sh deleted file mode 100755 index 226f13f..0000000 --- a/htslib/test/cross_validate.sh +++ /dev/null @@ -1,126 +0,0 @@ -#!/bin/sh - -# -# ----------------------------------------------------------------------------- -# Author: James Bonfield. -# -# This cross validation script is designed to run the htslib test_view -# and cramtools.jar CRAM implementations to test compatibility between -# implementations. -# -# The test set may contain many dubious and ambiguous SAM cases, such as -# single base reads (is that quality "*" really meaning Q9 or no quality?). -# Some of these may fail one or the other implementations and be acceptable -# in the short-term, so to spot more important regressions we can tag -# specific cases as being known-pass or known-fail. -# ----------------------------------------------------------------------------- -# - -vers=3.0 - -cramtools_jar=$HOME/work/cram/cramtools/cramtools-$vers.jar - -test_view="./test_view -o VERSION=$vers" - -cramtools="/software/bin/java -Xmx4000m -jar $cramtools_jar" -cramtools="/software/bin/java -Xmx4000m -jar $cramtools_jar" - -run_out() { - out=$1; shift - echo "$@ > $out" - $@ > $out -} - -run() { - echo "$@" - $@ -} - - -sam_to_Ccram() { - run_out _tmp.cram $test_view -C -t $1 $2 - #run_out _tmp.cram $HOME/io_lib/trunk/build.seq3/progs/scramble -r $1 -O CRAM $2 - if [ $? != 0 ] - then - crash=`expr $crash + 1` - false - fi -} - -Ccram_to_sam() { - run_out _tmp.sam $test_view -i REFERENCE=$1 _tmp.cram - #run_out _tmp.sam $HOME/io_lib/trunk/build.seq3/progs/scramble -r $1 _tmp.cram - - if [ $? != 0 ] - then - crash=`expr $crash + 1` - false - fi -} - -sam_to_Jcram() { - run $cramtools cram -R $1 -I $2 -O _tmp.cram -n -Q --capture-all-tags - if [ $? != 0 ] - then - crash=`expr $crash + 1` - false - fi -} - -Jcram_to_sam() { - run $cramtools bam -R $1 -I _tmp.cram -O _tmp.sam - - if [ $? != 0 ] - then - crash=`expr $crash + 1` - false - fi -} - -compare_sam() { - #run ./compare_sam.pl $i _tmp.sam -nomd -notemplate -unknownrg -Baux - run ./compare_sam.pl $i _tmp.sam -nomd -Baux - if [ $? != 0 ] - then - fails=`expr $fails + 1` - false - fi -} - -trials=0 -fails=0 -crash=0 - -files=`ls -1 *#*.sam` - -# Restrict to known workers from SAM->CRAM->CRAM in cramtools -#files="auxf#values.sam c1#bounds.sam c1#noseq.sam c1#pad1.sam c1#pad2.sam c1#pad3.sam c1#unknown.sam ce#1.sam ce#2.sam ce#5b.sam ce#large_seq.sam ce#tag_depadded.sam ce#tag_padded.sam ce#unmap.sam ce#unmap1.sam ce#unmap2.sam xx#large_aux.sam xx#large_aux2.sam xx#pair.sam xx#rg.sam xx#unsorted.sam" - -for i in $files -do - r=`echo $i | sed 's/#.*/.fa/'` - echo "=== $i" - - # C to C - trials=`expr $trials + 1` - sam_to_Ccram $r $i && Ccram_to_sam $r && compare_sam $i _tmp.sam - - # Java to Java - trials=`expr $trials + 1` - sam_to_Jcram $r $i && Jcram_to_sam $r && compare_sam $i _tmp.sam - - # C to Java - trials=`expr $trials + 1` - sam_to_Ccram $r $i && Jcram_to_sam $r && compare_sam $i _tmp.sam - - # Java to C - trials=`expr $trials + 1` - sam_to_Jcram $r $i && Ccram_to_sam $r && compare_sam $i _tmp.sam -done - -# Overcounts failures as an early fail can lead to 1 or 2 more fails. -echo "" -echo ============ -echo No. tests: $trials -echo No. diffs: $fails -echo No. crash: $crash diff --git a/htslib/test/faidx.fa b/htslib/test/faidx.fa deleted file mode 100644 index 0c936ef..0000000 --- a/htslib/test/faidx.fa +++ /dev/null @@ -1,21 +0,0 @@ -> -ATGC ->trailingblank1 -AAATTTGGGCCC -TTTGGGCCCAAA -GGGCCCAAA - ->trailingblank2 with last dna line the same length -AAATTTGGGCCCAAATTTGGGCCC -TTTGGGCCCAAATTTGGGCCCAAA -GGGCCCAAATTTGGGCCCAAATTT - ->trailingblank3 with cr-lf style line endings -ACGT -A - -> foo -TGCATG -CA -> bar description -TTTTAAAA diff --git a/htslib/test/fastqs.fq b/htslib/test/fastqs.fq deleted file mode 100644 index b151e73..0000000 --- a/htslib/test/fastqs.fq +++ /dev/null @@ -1,500 +0,0 @@ -@FAKE0005_1 Original version has PHRED scores from 0 to 62 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACG -+ -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ -@FAKE0006_1 Original version has PHRED scores from 62 to 0 inclusive (in that order) -GCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA -+ -~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@ -@FAKE0005_2 Original version has PHRED scores from 0 to 62 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACG -+ -!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ -@FAKE0006_2 Original version has PHRED scores from 62 to 0 inclusive (in that order) -GCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA -+ -_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! -@FAKE0005_3 Original version has PHRED scores from 0 to 62 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACG -+ -;;>@BCEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ -@FAKE0006_3 Original version has PHRED scores from 62 to 0 inclusive (in that order) -GCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA -+ -~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJHGFECB@>;; -@FAKE0005_4 Original version has PHRED scores from 0 to 62 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACG -+ -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ -@FAKE0006_4 Original version has PHRED scores from 62 to 0 inclusive (in that order) -GCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA -+ -~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@ -@FSRRS4401BE7HA_1 [length=395] [gc=36.46] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=95] -tcagTTAAGATGGGATAATATCCTCAGATTGCGTGATGAACTTTGTTCTGGTGGAGGAGAAGGAAGTGCATTCGACGTATGCCCGTTTGTCGATATTTGtatttaaagtaatccgtcacaaatcagtgacataaatattatttagatttcgggagcaactttatttattccacaagcaggtttaaattttaaatttaaattattgcagaagactttaaattaacctcgttgtcggagtcatttgttcggttattggtcgaaagtaaccncgggaagtgccgaaaactaacaaacaaaagaagatagtgaaattttaattaaaanaaatagccaaacgtaactaactaaaacggacccgtcgaggaactgccaacggacgacacagggagtagnnn -+ -eeeccccccc`UUU^UWWeegffhhhhhhhhhhhhhhhhhhggghhhhhhhhhfgfeeeee\\\\ceeeeeeeeeeeeeec^^^YRPOSNVU\YTMMMSMRKKKRUUNNNNS[`aa```\bbeccccccccYUUUbceeee\[`a`\ZYRRRPPP[\\\XXZaWWXeeeeeeccacaccc\WWSSQRPMMKKKLKKKKKKKKPPRRMMLLLPVPPPKKKKKQQTTTPRPPQPMLLMKRRRPPKMKKRLLKKMKKLLKRTPPPQRMMLL@KKKKLLKLLLLXKKKKW\KKLKKKLKKKKLLLQUYXYTLMMPKKKKPPNNKKKK@KKPXPVLLKKKKLRMKLLKKPVKKKKLLLJPPPPRMOROOOOKKKOSSSOOORUZXUUUQMNNZV][Z@@@ -@FSRRS4401BRRTC_1 [length=145] [gc=38.62] [flows=800] [phred_min=0] [phred_max=38] [trimmed_length=74] -tcagCCAGCAATTCCGACTTAATTGTTCTTCTTCCATCATTCATCTCGACTAACAGTTCTACGATTAATGAGTTTGGCtttaatttgttgttcattattgtcacaattacactactgagactgccaaggcacncagggataggnn -+ -eeeeeeeeecccceeeefecccca`````\[SSSS__a\TTTYaaaaa__^WYW[^[WXWXW[WSSSQZ\\RKKKTPSKKKPPKKKMKKQPVVVTTTTPRKMMLLPPPTVTWMNNRSSWW][[ZZZZXXSSN@NSKKKTVWTT@@ -@FSRRS4401B64ST_1 [length=382] [gc=40.58] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=346] -tcagTTTTCTTAAATTACTTGAATCTGTTGAAGTGGATGTCCACTTTTGTATGCCAAATATGCCCAGCGTATACGATCTTGGCCACATCTCCACATAATCATCAGTCGGATGCAAAAAGCGATTAAACTAAAAATGAATGCGTTTTTAGATGAGTAAATAGGTAATACTTTGTTTAAATAATAAATGTCACAAACAGAACGCGGATTACAGTACCTGAAAATAGTTGTACTGTATCTGTGCCGGCACTTCCTCGGCCCTGAGAAGTTGTCCCGTTGTTTCCATTCGCACCATCCAATGGCCAAAGTTTGCGAAGAATCTGTTCCGTTCCATTACCAATTGTTTTTCCATGctgagactgccaaggcacacaggggataggnn -+ -hhhhbbbbh^^UUUhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhUUUUh`hhhhh^^^hhhhbbbhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhUURRRdhbdYYRRW\NLLLLKW\]]^^YQLNNNNV]bddhdhggghhhhhhhhhdZZXXPPPXXa^^^habghhhhhhggghhggghhhhhhhhhhhhhhhhhhaabbhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhfffhhhhhhhhhc^\\\chhhggghhhhhhhhhggghhhhhhhhhhggghggghhhhhhhhhhhhhhhhhhhhhh^]ZXXWW\\TLLLLM__`dfhhhhhhhhhgg^^^^dhhheeXXXZdhhaa@@ -@FSRRS4401EJ0YH_1 [length=381] [gc=48.29] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=343] -tcagTTTTTGGAGAATTCCGTCAGGGACGGCATGGCATATTTGTGGGTTCGGCACGGCGTCCTGGCCAAGAAGAAGAAGACGAATTAGCCCGTTAATTTAATGACACCTTCCCCAATTTTGCAGCAATGATTGGTTCATTCTTGGCGGTGCGTTTTTGTGCTTCGTCGAATTGTTGGCCATTTTGGTCCACCGGCCATCATCTTTACGCTATCCGACTGATTGGAAATCACCGCCTAGCATTTTGCCGAAGATTGTTGCGTTGTACGGCCATGTGCTGATTGTTTACATTGGCATTCTTGGCAATTTGTCCTTGGTCGGCTTTGACGGCAAATTTGCGGTGTTAAGTctgagactgccaaggcacacagggggatagggnn -+ -hhhh^^^^^hhhhhhhhhhhhhhggghhhhhhhhhhhhhggghhggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhggghhhhhggghhhhhhhhhhh````hh]]]]hhhhhhhhhhhhhhhhhhhhhhhhhhddhddZRRRRRcVhhhhhhhhhhhhhhhhhhhhhbb__gghhhhhhhhhhhhhhhhggghhhhhhhhhhhhhhhhhhhggghhhhhhhhhhhhhaaaahgbcbghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhggghhhggbbchhhhhhggghhbbbg\bbhhhhhhhhhfffhhhhhhgggggghhhhhhhhhhhhhhhggghhggd^^]]^dedd^NNNNNZYWOLL@@ -@FSRRS4401BK0IB_1 [length=507] [gc=49.31] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=208] -tcagTTGACCGGCGTTGTGTAACAATAATTCATTATTCTGAGACGATGCCAATGTAATCGACGGTTTATGCCCAATTATTCCCATCTATGCTTAACTGATCAAATACTATTTGCATTACGTCACGAAATTGCGCGAACACCGCCGGCCGACAATAATTTATACCGGACATACCGGAGTTGATGGTAATCGGTAAAGAGTTTTATTTAATTATntattatcnctattaattattgttancaacaatgtgcacgctntgccgcccgccgccgccgtgtcggtaggaccccggacggacccggacccggttcgggtacccgttttcgggttcccggaaccgtttttcgggtacccggttttttcggggggccccccggtaaaaaaccggggaaccccctaaaacgggtaaacgtaccgtaagggaccccctaaacgggggccccgaaaaaccgggacccaaaccggggggaaacggttaaaggggggggaagtaggngnnnnnnnnnnnn -+ -eee`__eeeeeeeeeeggaYYY_aeeeeffghghhhhhhhhhhhhhhhhhhhhhhheeeeeeeee^\a`_PPPWWOPP[[WWZ^``accb^^^cc````c`UUUc^ccc\\\\\``]^]][[[\[PPPWW[[^^^``^XTTT\`aaa__^\]]^__PPPSQYYcc`^^^ceeeeeeeeeeeeea````[[OOOOMQQ\NNNNWKLLPPPPPP@QRLLNQS@RVYUUUU[ZWQQNMMS@SUTQPPVVTTRMLMQR@QRPPQPPPQKKLKKQPP\\TLLLLLLKPQKKKKKKLKKKLPKKKKLKKPTTLLKKKKPRPPPMKKKKKKKKJJPPPMMPPMMPKKKKKKKKKJRKKKKKLLQQLLLLLNNLLLLTTNNIINLLQQLLIIKKKKIIKKKKKKMPMKIKKKKIIIKKKKKKKKKKKKKKKKKKKKKKKHKKLKKKKKKHKKKKKIINNMHKKKNNNKKKKKKKKKKKMHHRRLLLKKKKKKKKKKGOKKK@M@@@@@@@@@@@@ -@FSRRS4401ARCCB_1 [length=258] [gc=46.90] [flows=800] [phred_min=0] [phred_max=38] [trimmed_length=193] -tcagTTATTGCAGTCGTTCCGCGCCATCGCCGGTAACCGTCCGCGTGTTATTCTGTGTATCGGCCAACCTTCGTATAACTTCGTATAATGTATGCTATACGAAGTTATTACGATCTATACCGGCGAAACTCAGCCGAAAGGTCTCGCGGTAGAGCCTATGAGCTGCCCGACCGATGCATTTAAATTTCCGGGGATCGtcgctgatctgagactgccaaaggcacactagggggataggnnnnnnnnnnnnnnnnnnnn -+ -eee[WYY_ceeeeeeeffecb`````a__OOOOSU[ZUURQQRUUVUQQSRRSW[[\^^SSSTYY]`a```_[[\\a\YTTTYaac^^\acccceeebbbbbbbeebccceeeeeca``\\WWWWOOOS][[[XXUWWZWWX[WWX^aaaa`\^^^ccaaa__^^WWWWXLLLQRVVVPKKKKKKKKLLPPTQ[[OOPTW`_][[[[[SRQVVVPPKKKLLRV\\\VTKLLLLRSUUU@@@@@@@@@@@@@@@@@@@@ -@FSRRS4401CM938_1 [length=453] [gc=44.15] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=418] -tcagGTTTTAAATCGCTTTCCAAGGAATTTGAGTCTAAATCCGGTGGATCCCATCAGTACAAATGCGGCGACAAGGCCGTGAAAACACTGCTTAATTCTTTGCACTTTTTGGCCACCTTTTTGGAAATGTTGTTTTGTGTTCTCAAAATTTTCCATCTCAGAACAAACATTCCATCGGGCTGATGTTGTGGCTTTTGGCGCGCGAAGTGCTGCTACTGCGCGGCAAAATCAGTCGCCAGACCGGTTTTGTTGTGGACGACAAAGTGATCATGCCTGACTTGTACTTCTACCGCGATCCGCAAGCGCGAATTGGTCACATAGTTATAGAATTTTTGAGCCTTTTTCTTGACATAAAAAGTGTGGTTTTAAAAATTTCCTGGCAGGACCCACGCCAACGTTCAGGAATAATATCTTTTAAAAAGctgagactgccaaggcacacaggggataggn -+ -hhhhhbb]]UUUhhhhbbbhhhhhhhhggghhhhhfUUUhhhhhhhhhhggghhhhhhhhbbbhhhhhhhhhhhhhhhhhh____hhhhhhhhhhhhhggghhhh^^^\ZhhddhYYNNNNNVTSSY^haaVQQSSdWddbdab\_______gghhhhhhhhhhaaahhhhhhhhhggghhhhhhhhhhhhhbbbbhhhhhhhhhhhhhhhhhhhhhhhhhhhhUUUUcdhhgda^^c_VVVVVQQQQcWXddhhhhhhhggghhhhhhhhggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhggghhhhhhhhhhhhhhh\\^\\hhhhh^^^\ZhURcccWQLLKKKRW\\YYLLLLKKLLLJJJRROUUZ_URWOOOWNYWWX[Yafhhhhhhhhhed[^eTTOOLLLLLTYZZZY]^_b[[VXXXdddddd____ddddd@ -@FSRRS4401EQLIK_1 [length=411] [gc=34.31] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=374] -tcagTTTAATTTGGTGCTTCCTTTCAATTCCTTAGTTTAAACTTGGCACTGAAGTCTCGCATTTATAACTAGAGCCCGGATTTTAGAGGCTAAAAAGTTTTCCAGATTTCAAAATTTATTTCGAAACTATTTTTCTGATTGTGATGTGACGGATTTCTAAATTAAATCGAAATGATGTGTATTGAACTTAACAAGTGATTTTTATCAGATTTTGTCAATGAATAAATTTTAATTTAAATCTCTTTCTAACACTTTCATGATTAAAATCTAACAAAGCGCGACCAGTATGTGAGAAGAGCAAAAACAACAAAAAGTGCTAGCACTAAAGAAGGTTCGAACCCAACACATAACGTAAGAGTTACCGGGAAGAAAACCACTctgagactgccaaggcacacagggggataggnn -+ -hhh^UUU^^ggghhhhhhhhhfffhhhhhhhhhhhfffggghhhhhhhhhhhhhhhhhhhhfffhhhhhhhhhhggghhh____hhhhdhdPPPPOOLLLLQQ^\WLLLYLLLLLLLKKKKRRLLLTYRKLLLLYPaadddghhhhhhhhhhha^^`PQQOOOMMMY^\OQSfhhhhhhhhhhhhhhhhhhdbbgga\NNLKKQP^^[TLOOQ\Ueaa^YX[\PPNSSSSNNLNNVV^^fdhddgh`bbhhhggghhhhhhhbbb`hhhgggggghhhhhhhhhhhhhhhhhhhhhhddPNNLLWQQZLLLLMVVV_dhhhhhh^^^hhhhhhhhhhhggghhhhhhhhhhhhhhhhhhhhXXSQQVVVTTTT`dZhdddddhhhhh^^XVTT]_\\YRKKKKKRRRRU@@ -@FSRRS4401AOV6A_1 [length=309] [gc=22.98] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=273] -tcagTTTTCAAATTTTCCGAAATTTGCTGTTTGGTAGAAGGCAAATTATTTGATTGAATTTTGTATTTATTTAAAACAATTTATTTTAAAATAATAATTTTCCATTGACTTTTTACATTTAATTGATTTTATTATGCATTTTATATTTGTTTTCTAAATATTCGTTTGCAAACTCACGTTGAAATTGTATTAAACTCGAAATTAGAGTTTTTGAAATTAATTTTTATGTAGCATAATATTTTAAACATATTGGAATTTTATAAAACATTATATTTTTctgagactgccaaggcacacagggggataggn -+ -hhhhbbbbhZZZbbbbhhh^^^ggghhhhggghhhhhhhhhhggghhhggghhhhhhh____hehbbbhb``ZZZZdc^a__cUUSSTTTT[[[fhh]]``hhhhhhhhZZZYYhhh^^^bbbhhhZZZZheehhhhhbbbahahddcbSSSS^Saaad^dhhhbgghhZZZghhhhhhggZZZgghhhhhZZZhhhhggghhhhhh]]^^]hddaffYYPPPPNSUeaeaa^\Z\`^XVVVPPPXYd```ccacVVVV\NPPPPQQc`__aUWZZZhWgghhhhhZZZZ^]hdbbbaNNNNNZVST\@ -@FSRRS4401EG0ZW_1 [length=424] [gc=23.82] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=389] -tcagTTTTGATCTTTTAATAATGAATTTTAATGTGTTAAAATGATTGCATTGATGGCATAACCGCATTTAAATTAATTACATGAAGTGTAAGTATGAAATTTTCCTTTCCAAATTGCAAAAACTAAAATTTAAAATTTATCGTAAAAATTAACATATATTTTAAACGATTTTAAGAAACATTTGTAAATTATATTTTTGTGAAGCGTTCAAACAAAAATAAACAATAAAATATTTTTCTATTTAATAGCAAAACATTTGACGATGAAAAGGAAAATGCGGGTTTGAAAATGGGCTTTGCCATGCTATTTTCATAATAACATATTTTTATTATGAATAATAAATTTACATACAATATATACAGTCTTAAATTTATTCATAATATTTTTGAGAATctgagactgccaaggcacacaggggataggn -+ -hh`XSSSTddhh\\\]hhhhhhhhhbbbbhhghhhbbZZZZhhhhhhhhhhhhhhhhhhhhhhhhheZZUUUcchhhhhhhhhhhhhhhhhhhddXSSSQQSS__UUUbb[[acc`\LLLLLQ[KKKKUTXNNOO\\\WbhhhZ]]\\ggZZhhhhhhbb__^^^hhh____hb^UUUghccbh^a^^bb[ddPPPPPaSaccbaZ\_aVVV]NNNNL\RQR^SQRKKKN\PKKKKLYSdZ^^dhhhhhbbbbh]ZZZhhhhhhh[[__^\NNNNV\`XXXWW[[SSTThdddhhhhhhhhhhhhh[XXXghhhhhhhhhhh^^^^^hhhhhhhhhhhb`bZTTTRXdhhhhhhhhhhhhhhhhggXXXgggh`\`ddee_\MMMMM`c___ccddddehhhZZZXVVeebbb_QSSSX^ecc@ -@FSRRS4401BE7HA_2 [length=395] [gc=36.46] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=95] -tcagTTAAGATGGGATAATATCCTCAGATTGCGTGATGAACTTTGTTCTGGTGGAGGAGAAGGAAGTGCATTCGACGTATGCCCGTTTGTCGATATTTGtatttaaagtaatccgtcacaaatcagtgacataaatattatttagatttcgggagcaactttatttattccacaagcaggtttaaattttaaatttaaattattgcagaagactttaaattaacctcgttgtcggagtcatttgttcggttattggtcgaaagtaaccncgggaagtgccgaaaactaacaaacaaaagaagatagtgaaattttaattaaaanaaatagccaaacgtaactaactaaaacggacccgtcgaggaactgccaacggacgacacagggagtagnnn -+ -FFFDDDDDDDA666?688FFHGGIIIIIIIIIIIIIIIIIIHHHIIIIIIIIIGHGFFFFF====DFFFFFFFFFFFFFFD???:3104/76=:5...4.3,,,366////4<;!!! -@FSRRS4401BRRTC_2 [length=145] [gc=38.62] [flows=800] [phred_min=0] [phred_max=38] [trimmed_length=74] -tcagCCAGCAATTCCGACTTAATTGTTCTTCTTCCATCATTCATCTCGACTAACAGTTCTACGATTAATGAGTTTGGCtttaatttgttgttcattattgtcacaattacactactgagactgccaaggcacncagggataggnn -+ -FFFFFFFFFDDDDFFFFGFDDDDBAAAAA=<4444@@B=555:BBBBB@@?8:8<<;;;;9944/!/4,,,57855!! -@FSRRS4401B64ST_2 [length=382] [gc=40.58] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=346] -tcagTTTTCTTAAATTACTTGAATCTGTTGAAGTGGATGTCCACTTTTGTATGCCAAATATGCCCAGCGTATACGATCTTGGCCACATCTCCACATAATCATCAGTCGGATGCAAAAAGCGATTAAACTAAAAATGAATGCGTTTTTAGATGAGTAAATAGGTAATACTTTGTTTAAATAATAAATGTCACAAACAGAACGCGGATTACAGTACCTGAAAATAGTTGTACTGTATCTGTGCCGGCACTTCCTCGGCCCTGAGAAGTTGTCCCGTTGTTTCCATTCGCACCATCCAATGGCCAAAGTTTGCGAAGAATCTGTTCCGTTCCATTACCAATTGTTTTTCCATGctgagactgccaaggcacacaggggataggnn -+ -IIIICCCCI??666IIIIIIIIIIIIIIIIIIIIIIIIIIIIII6666IAIIIII???IIIICCCIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII66333EICE::338=/----,8=>>??:2-////7>CEEIEIHHHIIIIIIIIIE;;9911199B???IBCHIIIIIIHHHIIHHHIIIIIIIIIIIIIIIIIIBBCCIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIGGGIIIIIIIIID?===DIIIHHHIIIIIIIIIHHHIIIIIIIIIIHHHIHHHIIIIIIIIIIIIIIIIIIIIII?>;9988==5----.@@AEGIIIIIIIIIHH????EIIIFF999;EIIBB!! -@FSRRS4401EJ0YH_2 [length=381] [gc=48.29] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=343] -tcagTTTTTGGAGAATTCCGTCAGGGACGGCATGGCATATTTGTGGGTTCGGCACGGCGTCCTGGCCAAGAAGAAGAAGACGAATTAGCCCGTTAATTTAATGACACCTTCCCCAATTTTGCAGCAATGATTGGTTCATTCTTGGCGGTGCGTTTTTGTGCTTCGTCGAATTGTTGGCCATTTTGGTCCACCGGCCATCATCTTTACGCTATCCGACTGATTGGAAATCACCGCCTAGCATTTTGCCGAAGATTGTTGCGTTGTACGGCCATGTGCTGATTGTTTACATTGGCATTCTTGGCAATTTGTCCTTGGTCGGCTTTGACGGCAAATTTGCGGTGTTAAGTctgagactgccaaggcacacagggggatagggnn -+ -IIII?????IIIIIIIIIIIIIIHHHIIIIIIIIIIIIIHHHIIHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIHHHIIIIIHHHIIIIIIIIIIIAAAAII>>>>IIIIIIIIIIIIIIIIIIIIIIIIIIEEIEE;33333D7IIIIIIIIIIIIIIIIIIIIICC@@HHIIIIIIIIIIIIIIIIHHHIIIIIIIIIIIIIIIIIIIHHHIIIIIIIIIIIIIBBBBIHCDCHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIHHHIIIHHCCDIIIIIIHHHIICCCH=CCIIIIIIIIIGGGIIIIIIHHHHHHIIIIIIIIIIIIIIIHHHIIHHE??>>?EFEE?/////;:80--!! -@FSRRS4401BK0IB_2 [length=507] [gc=49.31] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=208] -tcagTTGACCGGCGTTGTGTAACAATAATTCATTATTCTGAGACGATGCCAATGTAATCGACGGTTTATGCCCAATTATTCCCATCTATGCTTAACTGATCAAATACTATTTGCATTACGTCACGAAATTGCGCGAACACCGCCGGCCGACAATAATTTATACCGGACATACCGGAGTTGATGGTAATCGGTAAAGAGTTTTATTTAATTATntattatcnctattaattattgttancaacaatgtgcacgctntgccgcccgccgccgccgtgtcggtaggaccccggacggacccggacccggttcgggtacccgttttcgggttcccggaaccgtttttcgggtacccggttttttcggggggccccccggtaaaaaaccggggaaccccctaaaacgggtaaacgtaccgtaagggaccccctaaacgggggccccgaaaaaccgggacccaaaccggggggaaacggttaaaggggggggaagtaggngnnnnnnnnnnnn -+ -FFFA@@FFFFFFFFFFHHB:::@BFFFFGGHIHIIIIIIIIIIIIIIIIIIIIIIIFFFFFFFFF?=BA@11188011<<88;?AABDDC???DDAAAADA666D?DDD=====AA>?>><<<=<11188<>?@@11142::DDA???DFFFFFFFFFFFFFBAAAA<<0000.22=////8,--111111!23--/24!37:6666<;822/..4!46521177553.-.23!231121112,,-,,211==5------,12,,,,,,-,,,-1,,,,-,,155--,,,,13111.,,,,,,,,++111..11..1,,,,,,,,,+3,,,,,--22-----//----55//**/--22--**,,,,**,,,,,,.1.,*,,,,***,,,,,,,,,,,,,,,,,,,,,,,),,-,,,,,,),,,,,**//.),,,///,,,,,,,,,,,.))33---,,,,,,,,,,(0,,,!.!!!!!!!!!!!! -@FSRRS4401ARCCB_2 [length=258] [gc=46.90] [flows=800] [phred_min=0] [phred_max=38] [trimmed_length=193] -tcagTTATTGCAGTCGTTCCGCGCCATCGCCGGTAACCGTCCGCGTGTTATTCTGTGTATCGGCCAACCTTCGTATAACTTCGTATAATGTATGCTATACGAAGTTATTACGATCTATACCGGCGAAACTCAGCCGAAAGGTCTCGCGGTAGAGCCTATGAGCTGCCCGACCGATGCATTTAAATTTCCGGGGATCGtcgctgatctgagactgccaaaggcacactagggggataggnnnnnnnnnnnnnnnnnnnn -+ -FFF<8::@DFFFFFFFGGFDCAAAAAB@@000046<;66322366762243348<<=??4445::>ABAAA@<<==B=:555:BBD??=BDDDDFFFCCCCCCCFFCDDDFFFFFDBAA==88880004><<<99688;889<889?BBBBA=???DDBBB@@??88889---237771,,,,,,,,--1152<<00158A@><<<<<43277711,,,--37===75,----34666!!!!!!!!!!!!!!!!!!!! -@FSRRS4401CM938_2 [length=453] [gc=44.15] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=418] -tcagGTTTTAAATCGCTTTCCAAGGAATTTGAGTCTAAATCCGGTGGATCCCATCAGTACAAATGCGGCGACAAGGCCGTGAAAACACTGCTTAATTCTTTGCACTTTTTGGCCACCTTTTTGGAAATGTTGTTTTGTGTTCTCAAAATTTTCCATCTCAGAACAAACATTCCATCGGGCTGATGTTGTGGCTTTTGGCGCGCGAAGTGCTGCTACTGCGCGGCAAAATCAGTCGCCAGACCGGTTTTGTTGTGGACGACAAAGTGATCATGCCTGACTTGTACTTCTACCGCGATCCGCAAGCGCGAATTGGTCACATAGTTATAGAATTTTTGAGCCTTTTTCTTGACATAAAAAGTGTGGTTTTAAAAATTTCCTGGCAGGACCCACGCCAACGTTCAGGAATAATATCTTTTAAAAAGctgagactgccaaggcacacaggggataggn -+ -IIIIICC>>666IIIICCCIIIIIIIIHHHIIIIIG666IIIIIIIIIIHHHIIIIIIIICCCIIIIIIIIIIIIIIIIII@@@@IIIIIIIIIIIIIHHHIIII???=;IIEEI:://///7544:?IBB72244E8EECEBC=@@@@@@@HHIIIIIIIIIIBBBIIIIIIIIIHHHIIIIIIIIIIIIICCCCIIIIIIIIIIIIIIIIIIIIIIIIIIII6666DEIIHEB??D@777772222D89EEIIIIIIIHHHIIIIIIIIHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIHHHIIIIIIIIIIIIIII==?==IIIII???=;I63DDD82--,,,38==::----,,---+++33066;@6380008/:889<:BGIIIIIIIIIFE?@C<<7999EEEEEE@@@@EEEEE! -@FSRRS4401EQLIK_2 [length=411] [gc=34.31] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=374] -tcagTTTAATTTGGTGCTTCCTTTCAATTCCTTAGTTTAAACTTGGCACTGAAGTCTCGCATTTATAACTAGAGCCCGGATTTTAGAGGCTAAAAAGTTTTCCAGATTTCAAAATTTATTTCGAAACTATTTTTCTGATTGTGATGTGACGGATTTCTAAATTAAATCGAAATGATGTGTATTGAACTTAACAAGTGATTTTTATCAGATTTTGTCAATGAATAAATTTTAATTTAAATCTCTTTCTAACACTTTCATGATTAAAATCTAACAAAGCGCGACCAGTATGTGAGAAGAGCAAAAACAACAAAAAGTGCTAGCACTAAAGAAGGTTCGAACCCAACACATAACGTAAGAGTTACCGGGAAGAAAACCACTctgagactgccaaggcacacagggggataggnn -+ -III?666??HHHIIIIIIIIIGGGIIIIIIIIIIIGGGHHHIIIIIIIIIIIIIIIIIIIIGGGIIIIIIIIIIHHHIII@@@@IIIIEIE111100----22?=8---:-------,,,,33---5:3,----:1BBEEEHIIIIIIIIIIIB??A122000...:?=024GIIIIIIIIIIIIIIIIIIECCHHB=//-,,21??<5-002=6FBB?:9<=11/4444//-//77??GEIEEHIACCIIIHHHIIIIIIICCCAIIIHHHHHHIIIIIIIIIIIIIIIIIIIIIIEE1//--822;----.777@EIIIIII???IIIIIIIIIIIHHHIIIIIIIIIIIIIIIIIIII994227775555AE;IEEEEEIIIII??9755>@==:3,,,,,33336!! -@FSRRS4401AOV6A_2 [length=309] [gc=22.98] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=273] -tcagTTTTCAAATTTTCCGAAATTTGCTGTTTGGTAGAAGGCAAATTATTTGATTGAATTTTGTATTTATTTAAAACAATTTATTTTAAAATAATAATTTTCCATTGACTTTTTACATTTAATTGATTTTATTATGCATTTTATATTTGTTTTCTAAATATTCGTTTGCAAACTCACGTTGAAATTGTATTAAACTCGAAATTAGAGTTTTTGAAATTAATTTTTATGTAGCATAATATTTTAAACATATTGGAATTTTATAAAACATTATATTTTTctgagactgccaaggcacacagggggataggn -+ -IIIICCCCI;;;CCCCIII???HHHIIIIHHHIIIIIIIIIIHHHIIIHHHIIIIIII@@@@IFICCCICAA;;;;ED?B@@D66445555<<>AAIIIIIIII;;;::III???CCCIII;;;;IFFIIIIICCCBIBIEEDC4444?4BBBE?EIIICHHII;;;HIIIIIIHH;;;HHIIIII;;;IIIIHHHIIIIII>>??>IEEBGG::1111/46FBFBB?=;=A?97771119:EAAADDBD7777=/111122DA@@B68;;;I8HHIIIII;;;;?>IECCCB/////;745=! -@FSRRS4401EG0ZW_2 [length=424] [gc=23.82] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=389] -tcagTTTTGATCTTTTAATAATGAATTTTAATGTGTTAAAATGATTGCATTGATGGCATAACCGCATTTAAATTAATTACATGAAGTGTAAGTATGAAATTTTCCTTTCCAAATTGCAAAAACTAAAATTTAAAATTTATCGTAAAAATTAACATATATTTTAAACGATTTTAAGAAACATTTGTAAATTATATTTTTGTGAAGCGTTCAAACAAAAATAAACAATAAAATATTTTTCTATTTAATAGCAAAACATTTGACGATGAAAAGGAAAATGCGGGTTTGAAAATGGGCTTTGCCATGCTATTTTCATAATAACATATTTTTATTATGAATAATAAATTTACATACAATATATACAGTCTTAAATTTATTCATAATATTTTTGAGAATctgagactgccaaggcacacaggggataggn -+ -IIA94445EEII===>IIIIIIIIICCCCIIHIIICC;;;;IIIIIIIIIIIIIIIIIIIIIIIIIF;;666DDIIIIIIIIIIIIIIIIIIIEE94442244@@666CC<>==HH;;IIIIIICC@@???III@@@@IC?666HIDDCI?B??CC////-=323?423,,,/=1,,,,-:4E;??EIIIIICCCCI>;;;IIIIIII<<@@?=////7=A99988<<4455IEEEIIIIIIIIIIIII<999HIIIIIIIIIII?????IIIIIIIIIIICAC;55539EIIIIIIIIIIIIIIIIHH999HHHIA=AEEFF@=.....AD@@@DDEEEEFIII;;;977FFCCC@24449?FDD! -@FSRRS4401BE7HA_3 [length=395] [gc=36.46] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=95] -tcagTTAAGATGGGATAATATCCTCAGATTGCGTGATGAACTTTGTTCTGGTGGAGGAGAAGGAAGTGCATTCGACGTATGCCCGTTTGTCGATATTTGtatttaaagtaatccgtcacaaatcagtgacataaatattatttagatttcgggagcaactttatttattccacaagcaggtttaaattttaaatttaaattattgcagaagactttaaattaacctcgttgtcggagtcatttgttcggttattggtcgaaagtaaccncgggaagtgccgaaaactaacaaacaaaagaagatagtgaaattttaattaaaanaaatagccaaacgtaactaactaaaacggacccgtcgaggaactgccaacggacgacacagggagtagnnn -+ -eeeccccccc`UUU^UWWeegffhhhhhhhhhhhhhhhhhhggghhhhhhhhhfgfeeeee\\\\ceeeeeeeeeeeeeec^^^YRPOSNVU\YTMMMSMRKKKRUUNNNNS[`aa```\bbeccccccccYUUUbceeee\[`a`\ZYRRRPPP[\\\XXZaWWXeeeeeeccacaccc\WWSSQRPMMKKKLKKKKKKKKPPRRMMLLLPVPPPKKKKKQQTTTPRPPQPMLLMKRRRPPKMKKRLLKKMKKLLKRTPPPQRMMLL;KKKKLLKLLLLXKKKKW\KKLKKKLKKKKLLLQUYXYTLMMPKKKKPPNNKKKK;KKPXPVLLKKKKLRMKLLKKPVKKKKLLLJPPPPRMOROOOOKKKOSSSOOORUZXUUUQMNNZV][Z;;; -@FSRRS4401BRRTC_3 [length=145] [gc=38.62] [flows=800] [phred_min=0] [phred_max=38] [trimmed_length=74] -tcagCCAGCAATTCCGACTTAATTGTTCTTCTTCCATCATTCATCTCGACTAACAGTTCTACGATTAATGAGTTTGGCtttaatttgttgttcattattgtcacaattacactactgagactgccaaggcacncagggataggnn -+ -eeeeeeeeecccceeeefecccca`````\[SSSS__a\TTTYaaaaa__^WYW[^[WXWXW[WSSSQZ\\RKKKTPSKKKPPKKKMKKQPVVVTTTTPRKMMLLPPPTVTWMNNRSSWW][[ZZZZXXSSN;NSKKKTVWTT;; -@FSRRS4401B64ST_3 [length=382] [gc=40.58] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=346] -tcagTTTTCTTAAATTACTTGAATCTGTTGAAGTGGATGTCCACTTTTGTATGCCAAATATGCCCAGCGTATACGATCTTGGCCACATCTCCACATAATCATCAGTCGGATGCAAAAAGCGATTAAACTAAAAATGAATGCGTTTTTAGATGAGTAAATAGGTAATACTTTGTTTAAATAATAAATGTCACAAACAGAACGCGGATTACAGTACCTGAAAATAGTTGTACTGTATCTGTGCCGGCACTTCCTCGGCCCTGAGAAGTTGTCCCGTTGTTTCCATTCGCACCATCCAATGGCCAAAGTTTGCGAAGAATCTGTTCCGTTCCATTACCAATTGTTTTTCCATGctgagactgccaaggcacacaggggataggnn -+ -hhhhbbbbh^^UUUhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhUUUUh`hhhhh^^^hhhhbbbhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhUURRRdhbdYYRRW\NLLLLKW\]]^^YQLNNNNV]bddhdhggghhhhhhhhhdZZXXPPPXXa^^^habghhhhhhggghhggghhhhhhhhhhhhhhhhhhaabbhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhfffhhhhhhhhhc^\\\chhhggghhhhhhhhhggghhhhhhhhhhggghggghhhhhhhhhhhhhhhhhhhhhh^]ZXXWW\\TLLLLM__`dfhhhhhhhhhgg^^^^dhhheeXXXZdhhaa;; -@FSRRS4401EJ0YH_3 [length=381] [gc=48.29] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=343] -tcagTTTTTGGAGAATTCCGTCAGGGACGGCATGGCATATTTGTGGGTTCGGCACGGCGTCCTGGCCAAGAAGAAGAAGACGAATTAGCCCGTTAATTTAATGACACCTTCCCCAATTTTGCAGCAATGATTGGTTCATTCTTGGCGGTGCGTTTTTGTGCTTCGTCGAATTGTTGGCCATTTTGGTCCACCGGCCATCATCTTTACGCTATCCGACTGATTGGAAATCACCGCCTAGCATTTTGCCGAAGATTGTTGCGTTGTACGGCCATGTGCTGATTGTTTACATTGGCATTCTTGGCAATTTGTCCTTGGTCGGCTTTGACGGCAAATTTGCGGTGTTAAGTctgagactgccaaggcacacagggggatagggnn -+ -hhhh^^^^^hhhhhhhhhhhhhhggghhhhhhhhhhhhhggghhggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhggghhhhhggghhhhhhhhhhh````hh]]]]hhhhhhhhhhhhhhhhhhhhhhhhhhddhddZRRRRRcVhhhhhhhhhhhhhhhhhhhhhbb__gghhhhhhhhhhhhhhhhggghhhhhhhhhhhhhhhhhhhggghhhhhhhhhhhhhaaaahgbcbghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhggghhhggbbchhhhhhggghhbbbg\bbhhhhhhhhhfffhhhhhhgggggghhhhhhhhhhhhhhhggghhggd^^]]^dedd^NNNNNZYWOLL;; -@FSRRS4401BK0IB_3 [length=507] [gc=49.31] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=208] -tcagTTGACCGGCGTTGTGTAACAATAATTCATTATTCTGAGACGATGCCAATGTAATCGACGGTTTATGCCCAATTATTCCCATCTATGCTTAACTGATCAAATACTATTTGCATTACGTCACGAAATTGCGCGAACACCGCCGGCCGACAATAATTTATACCGGACATACCGGAGTTGATGGTAATCGGTAAAGAGTTTTATTTAATTATntattatcnctattaattattgttancaacaatgtgcacgctntgccgcccgccgccgccgtgtcggtaggaccccggacggacccggacccggttcgggtacccgttttcgggttcccggaaccgtttttcgggtacccggttttttcggggggccccccggtaaaaaaccggggaaccccctaaaacgggtaaacgtaccgtaagggaccccctaaacgggggccccgaaaaaccgggacccaaaccggggggaaacggttaaaggggggggaagtaggngnnnnnnnnnnnn -+ -eee`__eeeeeeeeeeggaYYY_aeeeeffghghhhhhhhhhhhhhhhhhhhhhhheeeeeeeee^\a`_PPPWWOPP[[WWZ^``accb^^^cc````c`UUUc^ccc\\\\\``]^]][[[\[PPPWW[[^^^``^XTTT\`aaa__^\]]^__PPPSQYYcc`^^^ceeeeeeeeeeeeea````[[OOOOMQQ\NNNNWKLLPPPPPP;QRLLNQS;RVYUUUU[ZWQQNMMS;SUTQPPVVTTRMLMQR;QRPPQPPPQKKLKKQPP\\TLLLLLLKPQKKKKKKLKKKLPKKKKLKKPTTLLKKKKPRPPPMKKKKKKKKJJPPPMMPPMMPKKKKKKKKKJRKKKKKLLQQLLLLLNNLLLLTTNNHHNLLQQLLHHKKKKHHKKKKKKMPMKHKKKKHHHKKKKKKKKKKKKKKKKKKKKKKKGKKLKKKKKKGKKKKKHHNNMGKKKNNNKKKKKKKKKKKMGGRRLLLKKKKKKKKKKFOKKK;M;;;;;;;;;;;; -@FSRRS4401ARCCB_3 [length=258] [gc=46.90] [flows=800] [phred_min=0] [phred_max=38] [trimmed_length=193] -tcagTTATTGCAGTCGTTCCGCGCCATCGCCGGTAACCGTCCGCGTGTTATTCTGTGTATCGGCCAACCTTCGTATAACTTCGTATAATGTATGCTATACGAAGTTATTACGATCTATACCGGCGAAACTCAGCCGAAAGGTCTCGCGGTAGAGCCTATGAGCTGCCCGACCGATGCATTTAAATTTCCGGGGATCGtcgctgatctgagactgccaaaggcacactagggggataggnnnnnnnnnnnnnnnnnnnn -+ -eee[WYY_ceeeeeeeffecb`````a__OOOOSU[ZUURQQRUUVUQQSRRSW[[\^^SSSTYY]`a```_[[\\a\YTTTYaac^^\acccceeebbbbbbbeebccceeeeeca``\\WWWWOOOS][[[XXUWWZWWX[WWX^aaaa`\^^^ccaaa__^^WWWWXLLLQRVVVPKKKKKKKKLLPPTQ[[OOPTW`_][[[[[SRQVVVPPKKKLLRV\\\VTKLLLLRSUUU;;;;;;;;;;;;;;;;;;;; -@FSRRS4401CM938_3 [length=453] [gc=44.15] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=418] -tcagGTTTTAAATCGCTTTCCAAGGAATTTGAGTCTAAATCCGGTGGATCCCATCAGTACAAATGCGGCGACAAGGCCGTGAAAACACTGCTTAATTCTTTGCACTTTTTGGCCACCTTTTTGGAAATGTTGTTTTGTGTTCTCAAAATTTTCCATCTCAGAACAAACATTCCATCGGGCTGATGTTGTGGCTTTTGGCGCGCGAAGTGCTGCTACTGCGCGGCAAAATCAGTCGCCAGACCGGTTTTGTTGTGGACGACAAAGTGATCATGCCTGACTTGTACTTCTACCGCGATCCGCAAGCGCGAATTGGTCACATAGTTATAGAATTTTTGAGCCTTTTTCTTGACATAAAAAGTGTGGTTTTAAAAATTTCCTGGCAGGACCCACGCCAACGTTCAGGAATAATATCTTTTAAAAAGctgagactgccaaggcacacaggggataggn -+ -hhhhhbb]]UUUhhhhbbbhhhhhhhhggghhhhhfUUUhhhhhhhhhhggghhhhhhhhbbbhhhhhhhhhhhhhhhhhh____hhhhhhhhhhhhhggghhhh^^^\ZhhddhYYNNNNNVTSSY^haaVQQSSdWddbdab\_______gghhhhhhhhhhaaahhhhhhhhhggghhhhhhhhhhhhhbbbbhhhhhhhhhhhhhhhhhhhhhhhhhhhhUUUUcdhhgda^^c_VVVVVQQQQcWXddhhhhhhhggghhhhhhhhggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhggghhhhhhhhhhhhhhh\\^\\hhhhh^^^\ZhURcccWQLLKKKRW\\YYLLLLKKLLLJJJRROUUZ_URWOOOWNYWWX[Yafhhhhhhhhhed[^eTTOOLLLLLTYZZZY]^_b[[VXXXdddddd____ddddd; -@FSRRS4401EQLIK_3 [length=411] [gc=34.31] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=374] -tcagTTTAATTTGGTGCTTCCTTTCAATTCCTTAGTTTAAACTTGGCACTGAAGTCTCGCATTTATAACTAGAGCCCGGATTTTAGAGGCTAAAAAGTTTTCCAGATTTCAAAATTTATTTCGAAACTATTTTTCTGATTGTGATGTGACGGATTTCTAAATTAAATCGAAATGATGTGTATTGAACTTAACAAGTGATTTTTATCAGATTTTGTCAATGAATAAATTTTAATTTAAATCTCTTTCTAACACTTTCATGATTAAAATCTAACAAAGCGCGACCAGTATGTGAGAAGAGCAAAAACAACAAAAAGTGCTAGCACTAAAGAAGGTTCGAACCCAACACATAACGTAAGAGTTACCGGGAAGAAAACCACTctgagactgccaaggcacacagggggataggnn -+ -hhh^UUU^^ggghhhhhhhhhfffhhhhhhhhhhhfffggghhhhhhhhhhhhhhhhhhhhfffhhhhhhhhhhggghhh____hhhhdhdPPPPOOLLLLQQ^\WLLLYLLLLLLLKKKKRRLLLTYRKLLLLYPaadddghhhhhhhhhhha^^`PQQOOOMMMY^\OQSfhhhhhhhhhhhhhhhhhhdbbgga\NNLKKQP^^[TLOOQ\Ueaa^YX[\PPNSSSSNNLNNVV^^fdhddgh`bbhhhggghhhhhhhbbb`hhhgggggghhhhhhhhhhhhhhhhhhhhhhddPNNLLWQQZLLLLMVVV_dhhhhhh^^^hhhhhhhhhhhggghhhhhhhhhhhhhhhhhhhhXXSQQVVVTTTT`dZhdddddhhhhh^^XVTT]_\\YRKKKKKRRRRU;; -@FSRRS4401AOV6A_3 [length=309] [gc=22.98] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=273] -tcagTTTTCAAATTTTCCGAAATTTGCTGTTTGGTAGAAGGCAAATTATTTGATTGAATTTTGTATTTATTTAAAACAATTTATTTTAAAATAATAATTTTCCATTGACTTTTTACATTTAATTGATTTTATTATGCATTTTATATTTGTTTTCTAAATATTCGTTTGCAAACTCACGTTGAAATTGTATTAAACTCGAAATTAGAGTTTTTGAAATTAATTTTTATGTAGCATAATATTTTAAACATATTGGAATTTTATAAAACATTATATTTTTctgagactgccaaggcacacagggggataggn -+ -hhhhbbbbhZZZbbbbhhh^^^ggghhhhggghhhhhhhhhhggghhhggghhhhhhh____hehbbbhb``ZZZZdc^a__cUUSSTTTT[[[fhh]]``hhhhhhhhZZZYYhhh^^^bbbhhhZZZZheehhhhhbbbahahddcbSSSS^Saaad^dhhhbgghhZZZghhhhhhggZZZgghhhhhZZZhhhhggghhhhhh]]^^]hddaffYYPPPPNSUeaeaa^\Z\`^XVVVPPPXYd```ccacVVVV\NPPPPQQc`__aUWZZZhWgghhhhhZZZZ^]hdbbbaNNNNNZVST\; -@FSRRS4401EG0ZW_3 [length=424] [gc=23.82] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=389] -tcagTTTTGATCTTTTAATAATGAATTTTAATGTGTTAAAATGATTGCATTGATGGCATAACCGCATTTAAATTAATTACATGAAGTGTAAGTATGAAATTTTCCTTTCCAAATTGCAAAAACTAAAATTTAAAATTTATCGTAAAAATTAACATATATTTTAAACGATTTTAAGAAACATTTGTAAATTATATTTTTGTGAAGCGTTCAAACAAAAATAAACAATAAAATATTTTTCTATTTAATAGCAAAACATTTGACGATGAAAAGGAAAATGCGGGTTTGAAAATGGGCTTTGCCATGCTATTTTCATAATAACATATTTTTATTATGAATAATAAATTTACATACAATATATACAGTCTTAAATTTATTCATAATATTTTTGAGAATctgagactgccaaggcacacaggggataggn -+ -hh`XSSSTddhh\\\]hhhhhhhhhbbbbhhghhhbbZZZZhhhhhhhhhhhhhhhhhhhhhhhhheZZUUUcchhhhhhhhhhhhhhhhhhhddXSSSQQSS__UUUbb[[acc`\LLLLLQ[KKKKUTXNNOO\\\WbhhhZ]]\\ggZZhhhhhhbb__^^^hhh____hb^UUUghccbh^a^^bb[ddPPPPPaSaccbaZ\_aVVV]NNNNL\RQR^SQRKKKN\PKKKKLYSdZ^^dhhhhhbbbbh]ZZZhhhhhhh[[__^\NNNNV\`XXXWW[[SSTThdddhhhhhhhhhhhhh[XXXghhhhhhhhhhh^^^^^hhhhhhhhhhhb`bZTTTRXdhhhhhhhhhhhhhhhhggXXXgggh`\`ddee_\MMMMM`c___ccddddehhhZZZXVVeebbb_QSSSX^ecc; -@FSRRS4401BE7HA_4 [length=395] [gc=36.46] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=95] -tcagTTAAGATGGGATAATATCCTCAGATTGCGTGATGAACTTTGTTCTGGTGGAGGAGAAGGAAGTGCATTCGACGTAT -GCCCGTTTGTCGATATTTGtatttaaagtaatccgtcacaaatcagtgacataaatattatttagatttcgggagcaact -ttatttattccacaagcaggtttaaattttaaatttaaattattgcagaagactttaaattaacctcgttgtcggagtca -tttgttcggttattggtcgaaagtaaccncgggaagtgccgaaaactaacaaacaaaagaagatagtgaaattttaatta -aaanaaatagccaaacgtaactaactaaaacggacccgtcgaggaactgccaacggacgacacagggagtagnnn -+ -FFFDDDDDDDA666?688FFHGGIIIIIIIIIIIIIIIIIIHHHIIIIIIIIIGHGFFFFF====DFFFFFFFFFFFFFF -D???:3104/76=:5...4.3,,,366////4<;!!! -@FSRRS4401BRRTC_4 [length=145] [gc=38.62] [flows=800] [phred_min=0] [phred_max=38] [trimmed_length=74] -tcagCCAGCAATTCCGACTTAATTGTTCTTCTTCCATCATTCATCTCGACTAACAGTTCTACGATTAATGAGTTTGGCtt -taatttgttgttcattattgtcacaattacactactgagactgccaaggcacncagggataggnn -+ -FFFFFFFFFDDDDFFFFGFDDDDBAAAAA=<4444@@B=555:BBBBB@@?8:8<<;;;;9944/!/4,,,57855!! -@FSRRS4401B64ST_4 [length=382] [gc=40.58] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=346] -tcagTTTTCTTAAATTACTTGAATCTGTTGAAGTGGATGTCCACTTTTGTATGCCAAATATGCCCAGCGTATACGATCTT -GGCCACATCTCCACATAATCATCAGTCGGATGCAAAAAGCGATTAAACTAAAAATGAATGCGTTTTTAGATGAGTAAATA -GGTAATACTTTGTTTAAATAATAAATGTCACAAACAGAACGCGGATTACAGTACCTGAAAATAGTTGTACTGTATCTGTG -CCGGCACTTCCTCGGCCCTGAGAAGTTGTCCCGTTGTTTCCATTCGCACCATCCAATGGCCAAAGTTTGCGAAGAATCTG -TTCCGTTCCATTACCAATTGTTTTTCCATGctgagactgccaaggcacacaggggataggnn -+ -IIIICCCCI??666IIIIIIIIIIIIIIIIIIIIIIIIIIIIII6666IAIIIII???IIIICCCIIIIIIIIIIIIIII -IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII66333EICE::338=/----,8=>>??:2-////7>CEEIEIHHHII -IIIIIIIE;;9911199B???IBCHIIIIIIHHHIIHHHIIIIIIIIIIIIIIIIIIBBCCIIIIIIIIIIIIIIIIIII -IIIIIIIIIIIIIIIGGGIIIIIIIIID?===DIIIHHHIIIIIIIIIHHHIIIIIIIIIIHHHIHHHIIIIIIIIIIII -IIIIIIIIII?>;9988==5----.@@AEGIIIIIIIIIHH????EIIIFF999;EIIBB!! -@FSRRS4401EJ0YH_4 [length=381] [gc=48.29] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=343] -tcagTTTTTGGAGAATTCCGTCAGGGACGGCATGGCATATTTGTGGGTTCGGCACGGCGTCCTGGCCAAGAAGAAGAAGA -CGAATTAGCCCGTTAATTTAATGACACCTTCCCCAATTTTGCAGCAATGATTGGTTCATTCTTGGCGGTGCGTTTTTGTG -CTTCGTCGAATTGTTGGCCATTTTGGTCCACCGGCCATCATCTTTACGCTATCCGACTGATTGGAAATCACCGCCTAGCA -TTTTGCCGAAGATTGTTGCGTTGTACGGCCATGTGCTGATTGTTTACATTGGCATTCTTGGCAATTTGTCCTTGGTCGGC -TTTGACGGCAAATTTGCGGTGTTAAGTctgagactgccaaggcacacagggggatagggnn -+ -IIII?????IIIIIIIIIIIIIIHHHIIIIIIIIIIIIIHHHIIHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII -IIIIIIIIHHHIIIIIHHHIIIIIIIIIIIAAAAII>>>>IIIIIIIIIIIIIIIIIIIIIIIIIIEEIEE;33333D7I -IIIIIIIIIIIIIIIIIIIICC@@HHIIIIIIIIIIIIIIIIHHHIIIIIIIIIIIIIIIIIIIHHHIIIIIIIIIIIII -BBBBIHCDCHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIHHHIIIHHCCDIIIIIIHHHIICCCH=CCIIIIIIIII -GGGIIIIIIHHHHHHIIIIIIIIIIIIIIIHHHIIHHE??>>?EFEE?/////;:80--!! -@FSRRS4401BK0IB_4 [length=507] [gc=49.31] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=208] -tcagTTGACCGGCGTTGTGTAACAATAATTCATTATTCTGAGACGATGCCAATGTAATCGACGGTTTATGCCCAATTATT -CCCATCTATGCTTAACTGATCAAATACTATTTGCATTACGTCACGAAATTGCGCGAACACCGCCGGCCGACAATAATTTA -TACCGGACATACCGGAGTTGATGGTAATCGGTAAAGAGTTTTATTTAATTATntattatcnctattaattattgttanca -acaatgtgcacgctntgccgcccgccgccgccgtgtcggtaggaccccggacggacccggacccggttcgggtacccgtt -ttcgggttcccggaaccgtttttcgggtacccggttttttcggggggccccccggtaaaaaaccggggaaccccctaaaa -cgggtaaacgtaccgtaagggaccccctaaacgggggccccgaaaaaccgggacccaaaccggggggaaacggttaaagg -ggggggaagtaggngnnnnnnnnnnnn -+ -FFFA@@FFFFFFFFFFHHB:::@BFFFFGGHIHIIIIIIIIIIIIIIIIIIIIIIIFFFFFFFFF?=BA@11188011<< -88;?AABDDC???DDAAAADA666D?DDD=====AA>?>><<<=<11188<>?@@1114 -2::DDA???DFFFFFFFFFFFFFBAAAA<<0000.22=////8,--111111!23--/24!37:6666<;822/..4!46 -521177553.-.23!231121112,,-,,211==5------,12,,,,,,-,,,-1,,,,-,,155--,,,,13111.,, -,,,,,,++111..11..1,,,,,,,,,+3,,,,,--22-----//----55//**/--22--**,,,,**,,,,,,.1., -*,,,,***,,,,,,,,,,,,,,,,,,,,,,,),,-,,,,,,),,,,,**//.),,,///,,,,,,,,,,,.))33---,, -,,,,,,,,(0,,,!.!!!!!!!!!!!! -@FSRRS4401ARCCB_4 [length=258] [gc=46.90] [flows=800] [phred_min=0] [phred_max=38] [trimmed_length=193] -tcagTTATTGCAGTCGTTCCGCGCCATCGCCGGTAACCGTCCGCGTGTTATTCTGTGTATCGGCCAACCTTCGTATAACT -TCGTATAATGTATGCTATACGAAGTTATTACGATCTATACCGGCGAAACTCAGCCGAAAGGTCTCGCGGTAGAGCCTATG -AGCTGCCCGACCGATGCATTTAAATTTCCGGGGATCGtcgctgatctgagactgccaaaggcacactagggggataggnn -nnnnnnnnnnnnnnnnnn -+ -FFF<8::@DFFFFFFFGGFDCAAAAAB@@000046<;66322366762243348<<=??4445::>ABAAA@<<==B=:5 -55:BBD??=BDDDDFFFCCCCCCCFFCDDDFFFFFDBAA==88880004><<<99688;889<889?BBBBA=???DDBB -B@@??88889---237771,,,,,,,,--1152<<00158A@><<<<<43277711,,,--37===75,----34666!! -!!!!!!!!!!!!!!!!!! -@FSRRS4401CM938_4 [length=453] [gc=44.15] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=418] -tcagGTTTTAAATCGCTTTCCAAGGAATTTGAGTCTAAATCCGGTGGATCCCATCAGTACAAATGCGGCGACAAGGCCGT -GAAAACACTGCTTAATTCTTTGCACTTTTTGGCCACCTTTTTGGAAATGTTGTTTTGTGTTCTCAAAATTTTCCATCTCA -GAACAAACATTCCATCGGGCTGATGTTGTGGCTTTTGGCGCGCGAAGTGCTGCTACTGCGCGGCAAAATCAGTCGCCAGA -CCGGTTTTGTTGTGGACGACAAAGTGATCATGCCTGACTTGTACTTCTACCGCGATCCGCAAGCGCGAATTGGTCACATA -GTTATAGAATTTTTGAGCCTTTTTCTTGACATAAAAAGTGTGGTTTTAAAAATTTCCTGGCAGGACCCACGCCAACGTTC -AGGAATAATATCTTTTAAAAAGctgagactgccaaggcacacaggggataggn -+ -IIIIICC>>666IIIICCCIIIIIIIIHHHIIIIIG666IIIIIIIIIIHHHIIIIIIIICCCIIIIIIIIIIIIIIIII -I@@@@IIIIIIIIIIIIIHHHIIII???=;IIEEI:://///7544:?IBB72244E8EECEBC=@@@@@@@HHIIIIII -IIIIBBBIIIIIIIIIHHHIIIIIIIIIIIIICCCCIIIIIIIIIIIIIIIIIIIIIIIIIIII6666DEIIHEB??D@7 -77772222D89EEIIIIIIIHHHIIIIIIIIHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIHHHIIIIII -IIIIIIIII==?==IIIII???=;I63DDD82--,,,38==::----,,---+++33066;@6380008/:889<:BGII -IIIIIIIFE?@C<<7999EEEEEE@@@@EEEEE! -@FSRRS4401EQLIK_4 [length=411] [gc=34.31] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=374] -tcagTTTAATTTGGTGCTTCCTTTCAATTCCTTAGTTTAAACTTGGCACTGAAGTCTCGCATTTATAACTAGAGCCCGGA -TTTTAGAGGCTAAAAAGTTTTCCAGATTTCAAAATTTATTTCGAAACTATTTTTCTGATTGTGATGTGACGGATTTCTAA -ATTAAATCGAAATGATGTGTATTGAACTTAACAAGTGATTTTTATCAGATTTTGTCAATGAATAAATTTTAATTTAAATC -TCTTTCTAACACTTTCATGATTAAAATCTAACAAAGCGCGACCAGTATGTGAGAAGAGCAAAAACAACAAAAAGTGCTAG -CACTAAAGAAGGTTCGAACCCAACACATAACGTAAGAGTTACCGGGAAGAAAACCACTctgagactgccaaggcacacag -ggggataggnn -+ -III?666??HHHIIIIIIIIIGGGIIIIIIIIIIIGGGHHHIIIIIIIIIIIIIIIIIIIIGGGIIIIIIIIIIHHHIII -@@@@IIIIEIE111100----22?=8---:-------,,,,33---5:3,----:1BBEEEHIIIIIIIIIIIB??A122 -000...:?=024GIIIIIIIIIIIIIIIIIIECCHHB=//-,,21??<5-002=6FBB?:9<=11/4444//-//77??G -EIEEHIACCIIIHHHIIIIIIICCCAIIIHHHHHHIIIIIIIIIIIIIIIIIIIIIIEE1//--822;----.777@EII -IIII???IIIIIIIIIIIHHHIIIIIIIIIIIIIIIIIIII994227775555AE;IEEEEEIIIII??9755>@==:3, -,,,,33336!! -@FSRRS4401AOV6A_4 [length=309] [gc=22.98] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=273] -tcagTTTTCAAATTTTCCGAAATTTGCTGTTTGGTAGAAGGCAAATTATTTGATTGAATTTTGTATTTATTTAAAACAAT -TTATTTTAAAATAATAATTTTCCATTGACTTTTTACATTTAATTGATTTTATTATGCATTTTATATTTGTTTTCTAAATA -TTCGTTTGCAAACTCACGTTGAAATTGTATTAAACTCGAAATTAGAGTTTTTGAAATTAATTTTTATGTAGCATAATATT -TTAAACATATTGGAATTTTATAAAACATTATATTTTTctgagactgccaaggcacacagggggataggn -+ -IIIICCCCI;;;CCCCIII???HHHIIIIHHHIIIIIIIIIIHHHIIIHHHIIIIIII@@@@IFICCCICAA;;;;ED?B -@@D66445555<<>AAIIIIIIII;;;::III???CCCIII;;;;IFFIIIIICCCBIBIEEDC4444?4BBBE? -EIIICHHII;;;HIIIIIIHH;;;HHIIIII;;;IIIIHHHIIIIII>>??>IEEBGG::1111/46FBFBB?=;=A?97 -771119:EAAADDBD7777=/111122DA@@B68;;;I8HHIIIII;;;;?>IECCCB/////;745=! -@FSRRS4401EG0ZW_4 [length=424] [gc=23.82] [flows=800] [phred_min=0] [phred_max=40] [trimmed_length=389] -tcagTTTTGATCTTTTAATAATGAATTTTAATGTGTTAAAATGATTGCATTGATGGCATAACCGCATTTAAATTAATTAC -ATGAAGTGTAAGTATGAAATTTTCCTTTCCAAATTGCAAAAACTAAAATTTAAAATTTATCGTAAAAATTAACATATATT -TTAAACGATTTTAAGAAACATTTGTAAATTATATTTTTGTGAAGCGTTCAAACAAAAATAAACAATAAAATATTTTTCTA -TTTAATAGCAAAACATTTGACGATGAAAAGGAAAATGCGGGTTTGAAAATGGGCTTTGCCATGCTATTTTCATAATAACA -TATTTTTATTATGAATAATAAATTTACATACAATATATACAGTCTTAAATTTATTCATAATATTTTTGAGAATctgagac -tgccaaggcacacaggggataggn -+ -IIA94445EEII===>IIIIIIIIICCCCIIHIIICC;;;;IIIIIIIIIIIIIIIIIIIIIIIIIF;;666DDIIIIII -IIIIIIIIIIIIIEE94442244@@666CC<>==HH;;IIIIIICC -@@???III@@@@IC?666HIDDCI?B??CC////-=323?423,,,/=1,,,,-:4E -;??EIIIIICCCCI>;;;IIIIIII<<@@?=////7=A99988<<4455IEEEIIIIIIIIIIIII<999HIIIIIIIII -II?????IIIIIIIIIIICAC;55539EIIIIIIIIIIIIIIIIHH999HHHIA=AEEFF@=.....AD@@@DDEEEEFI -II;;;977FFCCC@24449?FDD! -@FAKE0007_1 Original version has lower case unambiguous DNA with PHRED scores from 0 to 40 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTA -+ -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh -@FAKE0008_1 Original version has mixed case unambiguous DNA with PHRED scores from 0 to 40 inclusive (in that order) -gTcatAGcgTcatAGcgTcatAGcgTcatAGcgTcatAGcg -+ -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh -@FAKE0009_1 Original version has lower case unambiguous DNA with PHRED scores from 0 to 40 inclusive (in that order) -tcagtcagtcagtcagtcagtcagtcagtcagtcagtcagt -+ -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh -@FAKE0010_1 Original version has mixed case ambiguous DNA and PHRED scores of 40, 30, 20, 10 (cycled) -gatcrywsmkhbvdnGATCRYWSMKHBVDN -+ -h^TJh^TJh^TJh^TJh^TJh^TJh^TJh^ -@FAKE0007_2 Original version has lower case unambiguous DNA with PHRED scores from 0 to 40 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTA -+ -!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI -@FAKE0008_2 Original version has mixed case unambiguous DNA with PHRED scores from 0 to 40 inclusive (in that order) -gTcatAGcgTcatAGcgTcatAGcgTcatAGcgTcatAGcg -+ -!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI -@FAKE0009_2 Original version has lower case unambiguous DNA with PHRED scores from 0 to 40 inclusive (in that order) -tcagtcagtcagtcagtcagtcagtcagtcagtcagtcagt -+ -!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI -@FAKE0010_2 Original version has mixed case ambiguous DNA and PHRED scores of 40, 30, 20, 10 (cycled) -gatcrywsmkhbvdnGATCRYWSMKHBVDN -+ -I?5+I?5+I?5+I?5+I?5+I?5+I?5+I? -@FAKE0007_3 Original version has lower case unambiguous DNA with PHRED scores from 0 to 40 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTA -+ -;;>@BCEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh -@FAKE0008_3 Original version has mixed case unambiguous DNA with PHRED scores from 0 to 40 inclusive (in that order) -gTcatAGcgTcatAGcgTcatAGcgTcatAGcgTcatAGcg -+ -;;>@BCEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh -@FAKE0009_3 Original version has lower case unambiguous DNA with PHRED scores from 0 to 40 inclusive (in that order) -tcagtcagtcagtcagtcagtcagtcagtcagtcagtcagt -+ -;;>@BCEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh -@FAKE0010_3 Original version has mixed case ambiguous DNA and PHRED scores of 40, 30, 20, 10 (cycled) -gatcrywsmkhbvdnGATCRYWSMKHBVDN -+ -h^TJh^TJh^TJh^TJh^TJh^TJh^TJh^ -@FAKE0007_4 Original version has lower case unambiguous DNA with PHRED scores from 0 to 40 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTA -+ -!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI -@FAKE0008_4 Original version has mixed case unambiguous DNA with PHRED scores from 0 to 40 inclusive (in that order) -gTcatAGcgTcatAGcgTcatAGcgTcatAGcgTcatAGcg -+ -!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI -@FAKE0009_4 Original version has lower case unambiguous DNA with PHRED scores from 0 to 40 inclusive (in that order) -tcagtcagtcagtcagtcagtcagtcagtcagtcagtcagt -+ -!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI -@FAKE0010_4 Original version has mixed case ambiguous DNA and PHRED scores of 40, 30, 20, 10 (cycled) -gatcrywsmkhbvdnGATCRYWSMKHBVDN -+ -I?5+I?5+I?5+I?5+I?5+I?5+I?5+I? -@FAKE0011_1 Original version has lower case unambiguous RNA with PHRED scores from 0 to 40 inclusive (in that order) -ACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUA -+ -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh -@FAKE0012_1 Original version has mixed case unambiguous RNA with PHRED scores from 0 to 40 inclusive (in that order) -gUcauAGcgUcauAGcgUcauAGcgUcauAGcgUcauAGcg -+ -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh -@FAKE0013_1 Original version has lower case unambiguous RNA with PHRED scores from 0 to 40 inclusive (in that order) -ucagucagucagucagucagucagucagucagucagucagu -+ -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh -@FAKE0014_1 Original version has mixed case ambiguous RNA with PHRED scores from 35 to 40 inclusive (cycled) -gaucrywsmkhbvdnGAUCRYWSMKHBVDN -+ -cdefghcdefghcdefghcdefghcdefgh -@FAKE0011_2 Original version has lower case unambiguous RNA with PHRED scores from 0 to 40 inclusive (in that order) -ACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUA -+ -!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI -@FAKE0012_2 Original version has mixed case unambiguous RNA with PHRED scores from 0 to 40 inclusive (in that order) -gUcauAGcgUcauAGcgUcauAGcgUcauAGcgUcauAGcg -+ -!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI -@FAKE0013_2 Original version has lower case unambiguous RNA with PHRED scores from 0 to 40 inclusive (in that order) -ucagucagucagucagucagucagucagucagucagucagu -+ -!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI -@FAKE0014_2 Original version has mixed case ambiguous RNA with PHRED scores from 35 to 40 inclusive (cycled) -gaucrywsmkhbvdnGAUCRYWSMKHBVDN -+ -DEFGHIDEFGHIDEFGHIDEFGHIDEFGHI -@FAKE0011_3 Original version has lower case unambiguous RNA with PHRED scores from 0 to 40 inclusive (in that order) -ACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUA -+ -;;>@BCEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh -@FAKE0012_3 Original version has mixed case unambiguous RNA with PHRED scores from 0 to 40 inclusive (in that order) -gUcauAGcgUcauAGcgUcauAGcgUcauAGcgUcauAGcg -+ -;;>@BCEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh -@FAKE0013_3 Original version has lower case unambiguous RNA with PHRED scores from 0 to 40 inclusive (in that order) -ucagucagucagucagucagucagucagucagucagucagu -+ -;;>@BCEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh -@FAKE0014_3 Original version has mixed case ambiguous RNA with PHRED scores from 35 to 40 inclusive (cycled) -gaucrywsmkhbvdnGAUCRYWSMKHBVDN -+ -cdefghcdefghcdefghcdefghcdefgh -@FAKE0011_4 Original version has lower case unambiguous RNA with PHRED scores from 0 to 40 inclusive (in that order) -ACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUA -+ -!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI -@FAKE0012_4 Original version has mixed case unambiguous RNA with PHRED scores from 0 to 40 inclusive (in that order) -gUcauAGcgUcauAGcgUcauAGcgUcauAGcgUcauAGcg -+ -!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI -@FAKE0013_4 Original version has lower case unambiguous RNA with PHRED scores from 0 to 40 inclusive (in that order) -ucagucagucagucagucagucagucagucagucagucagu -+ -!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI -@FAKE0014_4 Original version has mixed case ambiguous RNA with PHRED scores from 35 to 40 inclusive (cycled) -gaucrywsmkhbvdnGAUCRYWSMKHBVDN -+ -DEFGHIDEFGHIDEFGHIDEFGHIDEFGHI -@FAKE0001_1 Original version has PHRED scores from 0 to 93 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTAC -+ -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -@FAKE0002_1 Original version has PHRED scores from 93 to 0 inclusive (in that order) -CATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA -+ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@ -@FAKE0001_2 Original version has PHRED scores from 0 to 93 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTAC -+ -!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ -@FAKE0002_2 Original version has PHRED scores from 93 to 0 inclusive (in that order) -CATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA -+ -~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! -@FAKE0001_3 Original version has PHRED scores from 0 to 93 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTAC -+ -;;>@BCEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -@FAKE0002_3 Original version has PHRED scores from 93 to 0 inclusive (in that order) -CATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA -+ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJHGFECB@>;; -@FAKE0001_4 Original version has PHRED scores from 0 to 93 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTAC -+ -!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ -@FAKE0002_4 Original version has PHRED scores from 93 to 0 inclusive (in that order) -CATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA -+ -~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! -@FAKE0003_1 Original version has Solexa scores from -5 to 62 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT -+ -AABBCCDDEEFGHIJJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ -@FAKE0004_1 Original version has Solexa scores from 62 to -5 inclusive (in that order) -TGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA -+ -~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJJIHGFEEDDCCBBAA -@FAKE0003_2 Original version has Solexa scores from -5 to 62 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT -+ -""##$$%%&&'()*++,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ -@FAKE0004_2 Original version has Solexa scores from 62 to -5 inclusive (in that order) -TGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA -+ -_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,++*)('&&%%$$##"" -@FAKE0003_3 Original version has Solexa scores from -5 to 62 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT -+ -;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ -@FAKE0004_3 Original version has Solexa scores from 62 to -5 inclusive (in that order) -TGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA -+ -~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<; -@FAKE0003_4 Original version has Solexa scores from -5 to 62 inclusive (in that order) -ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT -+ -;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ -@FAKE0004_4 Original version has Solexa scores from 62 to -5 inclusive (in that order) -TGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA -+ -~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<; -@SRR014849.50939_1 EIXKN4201BA2EC length=135 -GAAATTTCAGGGCCACCTTTTTTTTGATAGAATAATGGAGAAAATTAAAAGCTGTACATATACCAATGAACAATAAATCAATACATAAAAAAGGAGAAGTTGGAACCGAAAGGGTTTGAATTCAAACCCTTTCGG -+ -Zb^Ld`N\[d`NaZ[aZc]UOKHDA[\YT[_W[aZ\aZ[Zd`SF_WeaUI[Y\[[\\\[\Z\aY`X[[aZ\aZ\d`OY[aY[[\[[e`WPJC^UZ[`X\[R]T_V_W[`[Ga\I`\H[[Q^TVa\Ia\Ic^LY\S -@SRR014849.110027_1 EIXKN4201APUB0 length=131 -CTTCAAATGATTCCGGGACTGTTGGAACCGAAAGGGTTTGAATTCAAACCCTTTTCGGTTCCAACTCGCCGTCCGAATAATCCGTTCAAAATCTTGGCCTGTCAAAACGACTTTACGACCAGAACGATCCG -+ -\aYY_[FY\T`X^Vd`OY\[[^U_V[R^T[_ZDc^La\HYYO\S[c^Ld`Nc_QAZaZaYaY`XZZ\[aZZ[aZ[aZ[aZY`Z[`ZWeaVJ\[aZaY`X[PY\eaUG[\[[d`OXTUZ[Q\\`W\\\Y_W\ -@SRR014849.203935_1 EIXKN4201B4HU6 length=144 -AACCCGTCCCATCAAAGATTTTGGTTGGAACCCGAAAGGGTTTTGAATTCAAACCCCTTTCGGTTCCAACTATTCAATTGTTTAACTTTTTTTAAATTGATGGTCTGTTGGACCATTTGTAATAATCCCCATCGGAATTTCTTT -+ -`Z_ZDVT^YB[[Xd`PZ\d`RDaZaZ`ZaZ_ZDXd`Pd`Pd`RD[aZ`ZWd`Oc_RCd`P\aZ`ZaZaZY\YaZYaY`XYd`O`X[e`WPJEAc^LaZS[YYN[Z\Y`XWLT^U\b]JW[[RZ\SYc`RD[Z\WLXM`\HYa\I -@SRR014849.50939_2 EIXKN4201BA2EC length=135 -GAAATTTCAGGGCCACCTTTTTTTTGATAGAATAATGGAGAAAATTAAAAGCTGTACATATACCAATGAACAATAAATCAATACATAAAAAAGGAGAAGTTGGAACCGAAAGGGTTTGAATTCAAACCCTTTCGG -+ -;C?-EA/=60,)%"<=:5<@85@7@8+8<<3;=4:DA3%<;=8-9.A=):B=* -@SRR014849.50939_3 EIXKN4201BA2EC length=135 -GAAATTTCAGGGCCACCTTTTTTTTGATAGAATAATGGAGAAAATTAAAAGCTGTACATATACCAATGAACAATAAATCAATACATAAAAAAGGAGAAGTTGGAACCGAAAGGGTTTGAATTCAAACCCTTTCGG -+ -Zb^Ld`N\[d`NaZ[aZc]UOKGB;[\YT[_W[aZ\aZ[Zd`SE_WeaUH[Y\[[\\\[\Z\aY`X[[aZ\aZ\d`OY[aY[[\[[e`WPJ@^UZ[`X\[R]T_V_W[`[Fa\H`\G[[Q^TVa\Ha\Hc^LY\S -@SRR014849.110027_3 EIXKN4201APUB0 length=131 -CTTCAAATGATTCCGGGACTGTTGGAACCGAAAGGGTTTGAATTCAAACCCTTTTCGGTTCCAACTCGCCGTCCGAATAATCCGTTCAAAATCTTGGCCTGTCAAAACGACTTTACGACCAGAACGATCCG -+ -\aYY_[EY\T`X^Vd`OY\[[^U_V[R^T[_ZBc^La\GYYO\S[c^Ld`Nc_Q;ZaZaYaY`XZZ\[aZZ[aZ[aZ[aZY`Z[`ZWeaVJ\[aZaY`X[PY\eaUF[\[[d`OXTUZ[Q\\`W\\\Y_W\ -@SRR014849.203935_3 EIXKN4201B4HU6 length=144 -AACCCGTCCCATCAAAGATTTTGGTTGGAACCCGAAAGGGTTTTGAATTCAAACCCCTTTCGGTTCCAACTATTCAATTGTTTAACTTTTTTTAAATTGATGGTCTGTTGGACCATTTGTAATAATCCCCATCGGAATTTCTTT -+ -`Z_ZBVT^Y>[[Xd`PZ\d`RBaZaZ`ZaZ_ZBXd`Pd`Pd`RB[aZ`ZWd`Oc_R@d`P\aZ`ZaZaZY\YaZYaY`XYd`O`X[e`WPJC;c^LaZS[YYN[Z\Y`XWLT^U\b]JW[[RZ\SYc`RB[Z\WLXM`\GYa\H diff --git a/htslib/test/fastqs_README.txt b/htslib/test/fastqs_README.txt deleted file mode 100644 index f0c6c26..0000000 --- a/htslib/test/fastqs_README.txt +++ /dev/null @@ -1,109 +0,0 @@ -This README file describes the FASTQ example files provided as supplementary -information to the open-access publication: - -P.J.A. Cock, C.J. Fields, N. Goto, M.L. Heuer and P.M. Rice (2009). The Sanger -FASTQ file format for sequences with quality scores, and the Solexa/Illumina -FASTQ variants. - -These files are provided freely and we encourage anyone writing a FASTQ parser -to use them as part of your test suite. Permission is granted to freely -distribute and modify the files. We request (but do not insist) that this -README file is included, or at least a reference to the above paper. Please -cite the above paper if appropriate. We also request (but do not insist) that -the example files are not modified, in order that they may serve as a common -reference. - -Invalid FASTQ files -=================== - -The archive contains the following sample FASTQ files with names of the form -error_NAME.fastq, which all contain errors and should be rejected (if parsed -as any of the three FASTQ variants): - -error_diff_ids.fastq -error_double_qual.fastq -error_double_seq.fastq -error_long_qual.fastq -error_no_qual.fastq -error_qual_del.fastq -error_qual_escape.fastq -error_qual_null.fastq -error_qual_space.fastq -error_qual_tab.fastq -error_qual_unit_sep.fastq -error_qual_vtab.fastq -error_short_qual.fastq -error_spaces.fastq -error_tabs.fastq -error_trunc_at_seq.fastq -error_trunc_at_plus.fastq -error_trunc_at_qual.fastq -error_trunc_in_title.fastq -error_trunc_in_seq.fastq -error_trunc_in_plus.fastq -error_trunc_in_qual.fastq - -Of these, those with names error_qual_XXX.fastq would be valid except for the -inclusion of spaces or non-printing ASCII characters outside the range allowed -in the quality string. The files named error_trunc_XXX.fastq would be valid -but for being truncated (e.g. simulating a partial copy over the network). - -The special cases of FASTQ files which would be valid as one variant, but not -another, are covered below. - -Valid FASTQ -=========== - -The archive contains the following valid sample FASTQ input files for testing: - -longreads_original_sanger.fastq -wrapping_original_sanger.fastq -illumina_full_range_original_illumina.fastq -sanger_full_range_original_sanger.fastq -solexa_full_range_original_solexa.fastq -misc_dna_original_sanger.fastq -misc_rna_original_sanger.fastq - -These all have the form NAME_original_FORMAT.fastq, where NAME is a prefix for -that example, and FORMAT is one of sanger, solexa or illumina indicating which -FASTQ variant that example is using. There are three matching files called -NAME_as_FORMAT.fastq showing how the original file should be converted into -each of the three FASTQ variants. These converted files are standardised not -to use line wrapping (so each record has exactly four lines), and omit the -optional repetition of the read titles on the plus line. - -The file longreads_original_sanger.fastq is based on real Roche 454 reads from -the Sanger Institute for the the potato cyst nematodes Globodera pallida. Ten -of the reads have been presented as FASTQ records, wrapping the sequence and -the quality lines at 80 characters. This means some of the quality lines start -with "@" or "+" characters, which may cause problems with naive parsers. Also -note that the sequence is mixed case (with upper case denoting the trimmed -region), and furthermore the free format title lines are over 100 characters -and encode assorted read information (and are repeated on the "+" lines). - -The wrapping_original_sanger.fastq is based on three real reads from the NCBI -Short Read Archive, but has been carefully edited to use line wrapping for the -quality lines (but not the sequence lines) such that the due to the occurrence -of "@" and "+" on alternating lines, the file may be misinterpreted by a -simplistic parser. While this is therefore a very artificial example, it -remains a valid FASTQ file, and is useful for testing purposes. - -The sanger_full_range_original_sanger.fastq file uses PHRED scores from 0 to -93 inclusive, covering ASCII characters from 33 (!) to 126 (~). This means it -cannot be treated as a Solexa or Illumina 1.3+ FASTQ file, and attempting to -parse it as such should raise an error. - -The solexa_full_range_original_solexa.fastq file uses Solexa scores from -5 to -62 inclusive, covering ASCII characters from 59 (;) to 126 (~). This means it -cannot be treated as a Illumina 1.3+ FASTQ file, and attempting to parse it as -such should raise an error. On the basis of the quality characters, the file -would also qualify as a valid Sanger FASTQ file. - -The illumina_full_range_original_illumina.fastq file uses PHRED scores from 0 -to 62 inclusive, covering ASCII characters from 64 (@) to 126 (~). On the -basis of the quality characters, the file would also qualify as a valid Sanger -or Solexa FASTQ file. - -The misc_dna_original_sanger.fastq and misc_rna_original_sanger.fastq files -are artificial reads using the full range of IUPAC DNA or RNA letters, -including ambiguous character codes, and both cases. diff --git a/htslib/test/fieldarith.c b/htslib/test/fieldarith.c deleted file mode 100644 index 3627a89..0000000 --- a/htslib/test/fieldarith.c +++ /dev/null @@ -1,74 +0,0 @@ -/* test/fieldarith.c -- CIGAR field arithmetic test suite. - - Copyright (C) 2013 Genome Research Ltd. - - Author: John Marshall - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include - -#include "htslib/sam.h" - -int ntests = 0; -int nfailures = 0; - -void check(const bam1_t *aln, const char *testname, const char *tag, int value) -{ - int32_t refvalue; - uint8_t *aux = bam_aux_get(aln, tag); - if (!aux) return; - ntests++; - refvalue = bam_aux2i(aux); - if (value != refvalue) { - fprintf(stderr, "%s FAIL for %s: computed %d != %d expected\n", - testname, bam_get_qname(aln), value, refvalue); - nfailures++; - } -} - -int main(int argc, char **argv) -{ - bam_hdr_t *header; - bam1_t *aln = bam_init1(); - int i; - - for (i = 1; i < argc; i++) { - samFile *in = sam_open(argv[i], "r"); - if (in == NULL) { perror(argv[1]); return 1; } - - header = sam_hdr_read(in); - while (sam_read1(in, header, aln) >= 0) { - check(aln, "cigar2qlen", "XQ", - bam_cigar2qlen(aln->core.n_cigar, bam_get_cigar(aln))); - check(aln, "cigar2rlen", "XR", - bam_cigar2rlen(aln->core.n_cigar, bam_get_cigar(aln))); - check(aln, "endpos", "XE", bam_endpos(aln)); - } - - bam_hdr_destroy(header); - sam_close(in); - } - - bam_destroy1(aln); - - return (nfailures > 0); -} diff --git a/htslib/test/fieldarith.sam b/htslib/test/fieldarith.sam deleted file mode 100644 index 180d1e8..0000000 --- a/htslib/test/fieldarith.sam +++ /dev/null @@ -1,15 +0,0 @@ -@SQ SN:one LN:1000 -@SQ SN:two LN:500 -@CO For each SAM record that has each listed aux field, performs these tests: -@CO XQ is the expected result for bam_cigar2qlen() -@CO XR is the expected result for bam_cigar2rlen() -@CO XE is the expected result for bam_endpos() -@CO (Note that these are all zero-based, while POS is one-based in SAM) -r1 0 one 50 20 8M * 0 0 ATGCATGC qqqqqqqq XQ:i:8 XR:i:8 XE:i:57 -r2 0 one 100 20 50M * 0 0 ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCAT qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq XQ:i:50 XR:i:50 XE:i:149 -unmapped 5 two 200 0 * two 200 0 ATGCATGC qqqqqqqq XQ:i:0 XR:i:0 XE:i:200 -hascigar 5 two 200 0 6M2S two 200 0 ATGCATGC qqqqqqqq XQ:i:8 XR:i:6 XE:i:200 -s1 0 one 300 20 2M * 0 0 AT qq XQ:i:2 XR:i:2 XE:i:301 -su1 4 * 0 0 * * 0 0 AT qq XQ:i:0 XR:i:0 XE:i:0 -su2 5 two 400 0 * two 400 0 AT qq XQ:i:0 XR:i:0 XE:i:400 -su3 4 one 500 0 2M * 0 0 AT qq XQ:i:2 XR:i:2 XE:i:500 diff --git a/htslib/test/formatcols.vcf b/htslib/test/formatcols.vcf deleted file mode 100644 index c46cf46..0000000 --- a/htslib/test/formatcols.vcf +++ /dev/null @@ -1,6 +0,0 @@ -##fileformat=VCFv4.3 -##FILTER= -##contig= -##FORMAT= -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT S1 S2 S3 -1 100 a A T . . . S a bbbbbbb ccccccccc diff --git a/htslib/test/formatmissing-out.vcf b/htslib/test/formatmissing-out.vcf deleted file mode 100644 index dd8d5bb..0000000 --- a/htslib/test/formatmissing-out.vcf +++ /dev/null @@ -1,6 +0,0 @@ -##fileformat=VCFv4.3 -##FILTER= -##contig= -##FORMAT= -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT S1 S2 S3 -1 100 a A T . . . . . . . diff --git a/htslib/test/formatmissing.vcf b/htslib/test/formatmissing.vcf deleted file mode 100644 index dd8d5bb..0000000 --- a/htslib/test/formatmissing.vcf +++ /dev/null @@ -1,6 +0,0 @@ -##fileformat=VCFv4.3 -##FILTER= -##contig= -##FORMAT= -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT S1 S2 S3 -1 100 a A T . . . . . . . diff --git a/htslib/test/hfile.c b/htslib/test/hfile.c deleted file mode 100644 index 7e09ba0..0000000 --- a/htslib/test/hfile.c +++ /dev/null @@ -1,283 +0,0 @@ -/* test/hfile.c -- Test cases for low-level input/output streams. - - Copyright (C) 2013-2014, 2016 Genome Research Ltd. - - Author: John Marshall - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include -#include -#include -#include - -#include - -#include "htslib/hfile.h" -#include "htslib/hts_defs.h" - -void HTS_NORETURN fail(const char *format, ...) -{ - int err = errno; - va_list args; - va_start(args, format); - vfprintf(stderr, format, args); - va_end(args); - if (err != 0) fprintf(stderr, ": %s", strerror(err)); - fprintf(stderr, "\n"); - exit(EXIT_FAILURE); -} - -void check_offset(hFILE *f, off_t off, const char *message) -{ - off_t ret = htell(f); - if (ret < 0) fail("htell(%s)", message); - if (ret == off) return; - - fprintf(stderr, "%s offset incorrect: expected %ld but got %ld\n", - message, (long)off, (long)ret); - exit(EXIT_FAILURE); -} - -char *slurp(const char *filename) -{ - char *text; - struct stat sbuf; - size_t filesize; - FILE *f = fopen(filename, "rb"); - if (f == NULL) fail("fopen(\"%s\", \"rb\")", filename); - if (fstat(fileno(f), &sbuf) != 0) fail("fstat(\"%s\")", filename); - filesize = sbuf.st_size; - - text = (char *) malloc(filesize + 1); - if (text == NULL) fail("malloc(text)"); - - if (fread(text, 1, filesize, f) != filesize) fail("fread"); - fclose(f); - - text[filesize] = '\0'; - return text; -} - -hFILE *fin = NULL; -hFILE *fout = NULL; - -void reopen(const char *infname, const char *outfname) -{ - if (fin) { if (hclose(fin) != 0) fail("hclose(input)"); } - if (fout) { if (hclose(fout) != 0) fail("hclose(output)"); } - - fin = hopen(infname, "r"); - if (fin == NULL) fail("hopen(\"%s\")", infname); - - fout = hopen(outfname, "w"); - if (fout == NULL) fail("hopen(\"%s\")", outfname); -} - -int main(void) -{ - static const int size[] = { 1, 13, 403, 999, 30000 }; - - char buffer[40000]; - char *original; - int c, i; - ssize_t n; - off_t off; - - reopen("vcf.c", "test/hfile1.tmp"); - while ((c = hgetc(fin)) != EOF) { - if (hputc(c, fout) == EOF) fail("hputc"); - } - if (herrno(fin)) { errno = herrno(fin); fail("hgetc"); } - - reopen("test/hfile1.tmp", "test/hfile2.tmp"); - if (hpeek(fin, buffer, 50) < 0) fail("hpeek"); - while ((n = hread(fin, buffer, 17)) > 0) { - if (hwrite(fout, buffer, n) != n) fail("hwrite"); - } - if (n < 0) fail("hread"); - - reopen("test/hfile2.tmp", "test/hfile3.tmp"); - while ((n = hread(fin, buffer, sizeof buffer)) > 0) { - if (hwrite(fout, buffer, n) != n) fail("hwrite"); - if (hpeek(fin, buffer, 700) < 0) fail("hpeek"); - } - if (n < 0) fail("hread"); - - reopen("test/hfile3.tmp", "test/hfile4.tmp"); - i = 0; - off = 0; - while ((n = hread(fin, buffer, size[i++ % 5])) > 0) { - off += n; - buffer[n] = '\0'; - check_offset(fin, off, "pre-peek"); - if (hputs(buffer, fout) == EOF) fail("hputs"); - if ((n = hpeek(fin, buffer, size[(i+3) % 5])) < 0) fail("hpeek"); - check_offset(fin, off, "post-peek"); - } - if (n < 0) fail("hread"); - - reopen("test/hfile4.tmp", "test/hfile5.tmp"); - while (hgets(buffer, 80, fin) != NULL) { - size_t l = strlen(buffer); - if (l > 79) fail("hgets read %zu bytes, should be < 80", l); - if (hwrite(fout, buffer, l) != l) fail("hwrite"); - } - if (herrno(fin)) fail("hgets"); - - reopen("test/hfile5.tmp", "test/hfile6.tmp"); - n = hread(fin, buffer, 200); - if (n < 0) fail("hread"); - else if (n != 200) fail("hread only got %d", (int)n); - if (hwrite(fout, buffer, 1000) != 1000) fail("hwrite"); - check_offset(fin, 200, "input/first200"); - check_offset(fout, 1000, "output/first200"); - - if (hseek(fin, 800, SEEK_CUR) < 0) fail("hseek/cur"); - check_offset(fin, 1000, "input/seek"); - for (off = 1000; (n = hread(fin, buffer, sizeof buffer)) > 0; off += n) - if (hwrite(fout, buffer, n) != n) fail("hwrite"); - if (n < 0) fail("hread"); - check_offset(fin, off, "input/eof"); - check_offset(fout, off, "output/eof"); - - if (hseek(fin, 200, SEEK_SET) < 0) fail("hseek/set"); - if (hseek(fout, 200, SEEK_SET) < 0) fail("hseek(output)"); - check_offset(fin, 200, "input/backto200"); - check_offset(fout, 200, "output/backto200"); - n = hread(fin, buffer, 800); - if (n < 0) fail("hread"); - else if (n != 800) fail("hread only got %d", (int)n); - if (hwrite(fout, buffer, 800) != 800) fail("hwrite"); - check_offset(fin, 1000, "input/wrote800"); - check_offset(fout, 1000, "output/wrote800"); - - if (hflush(fout) == EOF) fail("hflush"); - - original = slurp("vcf.c"); - for (i = 1; i <= 6; i++) { - char *text; - sprintf(buffer, "test/hfile%d.tmp", i); - text = slurp(buffer); - if (strcmp(original, text) != 0) { - fprintf(stderr, "%s differs from vcf.c\n", buffer); - return EXIT_FAILURE; - } - free(text); - } - free(original); - - if (hclose(fin) != 0) fail("hclose(input)"); - if (hclose(fout) != 0) fail("hclose(output)"); - - fout = hopen("test/hfile_chars.tmp", "w"); - if (fout == NULL) fail("hopen(\"test/hfile_chars.tmp\")"); - for (i = 0; i < 256; i++) - if (hputc(i, fout) != i) fail("chars: hputc (%d)", i); - if (hclose(fout) != 0) fail("hclose(test/hfile_chars.tmp)"); - - fin = hopen("test/hfile_chars.tmp", "r"); - if (fin == NULL) fail("hopen(\"test/hfile_chars.tmp\") for reading"); - for (i = 0; i < 256; i++) - if ((c = hgetc(fin)) != i) - fail("chars: hgetc (%d = 0x%x) returned %d = 0x%x", i, i, c, c); - if ((c = hgetc(fin)) != EOF) fail("chars: hgetc (EOF) returned %d", c); - if (hclose(fin) != 0) fail("hclose(test/hfile_chars.tmp) for reading"); - - fin = hopen("preload:test/hfile_chars.tmp", "r"); - if (fin == NULL) fail("preloading \"test/hfile_chars.tmp\" for reading"); - for (i = 0; i < 256; i++) - if ((c = hgetc(fin)) != i) - fail("preloading chars: hgetc (%d = 0x%x) returned %d = 0x%x", i, i, c, c); - if ((c = hgetc(fin)) != EOF) fail("preloading chars: hgetc (EOF) returned %d", c); - if (hclose(fin) != 0) fail("preloading hclose(test/hfile_chars.tmp) for reading"); - - char* test_string = strdup("Test string"); - fin = hopen("mem:", "r:", test_string, 12); - if (fin == NULL) fail("hopen(\"mem:\", \"r:\", ...)"); - if (hread(fin, buffer, 12) != 12) - fail("hopen('mem:', 'r') failed read"); - if(strcmp(buffer, test_string) != 0) - fail("hopen('mem:', 'r') missread '%s' != '%s'", buffer, test_string); - char* internal_buf; - size_t interval_buf_len; - if((internal_buf = hfile_mem_get_buffer(fin, &interval_buf_len)) == NULL){ - fail("hopen('mem:', 'r') failed to get internal buffer"); - } - if (hclose(fin) != 0) fail("hclose mem for reading"); - - test_string = strdup("Test string"); - fin = hopen("mem:", "wr:", test_string, 12); - if (fin == NULL) fail("hopen(\"mem:\", \"w:\", ...)"); - if (hseek(fin, -1, SEEK_END) < 0) - fail("hopen('mem:', 'wr') failed seek"); - if (hwrite(fin, " extra", 7) != 7) - fail("hopen('mem:', 'wr') failed write"); - if (hseek(fin, 0, SEEK_SET) < 0) - fail("hopen('mem:', 'wr') failed seek"); - if (hread(fin, buffer, 18) != 18) - fail("hopen('mem:', 'wr') failed read"); - if (strcmp(buffer, "Test string extra") != 0) - fail("hopen('mem:', 'wr') misswrote '%s' != '%s'", buffer, "Test string extra"); - if((internal_buf = hfile_mem_steal_buffer(fin, &interval_buf_len)) == NULL){ - fail("hopen('mem:', 'wr') failed to get internal buffer"); - } - free(internal_buf); - if (hclose(fin) != 0) fail("hclose mem for writing"); - - fin = hopen("data:,hello, world!%0A", "r"); - if (fin == NULL) fail("hopen(\"data:...\")"); - n = hread(fin, buffer, 300); - if (n < 0) fail("hread"); - buffer[n] = '\0'; - if (strcmp(buffer, "hello, world!\x0A") != 0) fail("hread result"); - if (hclose(fin) != 0) fail("hclose(\"data:...\")"); - - fin = hopen("test/xx#blank.sam", "r"); - if (fin == NULL) fail("hopen(\"test/xx#blank.sam\") for reading"); - if (hread(fin, buffer, 100) != 0) fail("test/xx#blank.sam is non-empty"); - if (hclose(fin) != 0) fail("hclose(\"test/xx#blank.sam\") for reading"); - - fin = hopen("data:,", "r"); - if (fin == NULL) fail("hopen(\"data:\") for reading"); - if (hread(fin, buffer, 100) != 0) fail("empty data: URL is non-empty"); - if (hclose(fin) != 0) fail("hclose(\"data:\") for reading"); - - fin = hopen("data:;base64," -// Wikipedia's example quote from Thomas Hobbes' Leviathan -"TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz" -"IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg" -"dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu" -"dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo" -"ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=", "r"); - if (fin == NULL) fail("hopen(\"data:;base64,...\")"); - n = hread(fin, buffer, 300); - if (n < 0) fail("hread for base64"); - buffer[n] = '\0'; - if (strcmp(buffer, "Man is distinguished, not only by his reason, but by " -"this singular passion from other animals, which is a lust of the mind, that " -"by a perseverance of delight in the continued and indefatigable generation " -"of knowledge, exceeds the short vehemence of any carnal pleasure.") != 0) - fail("hread result for base64"); - if (hclose(fin) != 0) fail("hclose(\"data:;base64,...\")"); - - return EXIT_SUCCESS; -} diff --git a/htslib/test/hts_endian.c b/htslib/test/hts_endian.c deleted file mode 100644 index f18739d..0000000 --- a/htslib/test/hts_endian.c +++ /dev/null @@ -1,512 +0,0 @@ -/* test/hts_endian.c -- hts_endian.h unit tests - - Copyright (C) 2017 Genome Research Ltd. - - Author: Rob Davies -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include -#include -#include -#include -#include -#include "htslib/hts_endian.h" - -typedef struct { - uint8_t u8[2]; - uint8_t u8_unaligned[3]; - int16_t i16; - uint16_t u16; -} Test16; - -typedef struct { - uint8_t u8[4]; - uint8_t u8_unaligned[5]; - int32_t i32; - uint32_t u32; -} Test32; - -typedef struct { - uint8_t u8[8]; - uint8_t u8_unaligned[9]; - int64_t i64; - uint64_t u64; -} Test64; - -typedef struct { - uint8_t u8[4]; - uint8_t u8_unaligned[5]; - float f; -} Test_float; - -typedef struct { - uint8_t u8[8]; - uint8_t u8_unaligned[9]; - double d; -} Test_double; - -#define T16(b0, b1, sgn, unsgn) { { b0, b1 }, { 0x00, b0, b1 }, sgn, unsgn } - -Test16 tests_16_bit[] = { - T16(0x00, 0x00, 0, 0), - T16(0x01, 0x00, 1, 1), - T16(0x00, 0x01, 256, 256), - T16(0xff, 0x7f, 32767, 32767), - T16(0x00, 0x80, -32768, 32768), - T16(0xff, 0xff, -1, 65535), -}; - -#define T32(b0, b1, b2, b3, sgn, unsgn) { \ - { b0, b1, b2, b3 }, \ - { 0x00, b0, b1, b2, b3 }, \ - sgn, unsgn \ -} - -Test32 tests_32_bit[] = { - T32(0x00, 0x00, 0x00, 0x00, 0, 0), - T32(0x01, 0x00, 0x00, 0x00, 1, 1), - T32(0x00, 0x01, 0x00, 0x00, 256, 256), - T32(0x00, 0x00, 0x01, 0x00, 65536, 65536), - T32(0xff, 0xff, 0xff, 0x7f, 2147483647, 2147483647), - // Odd coding of signed result below avoids a compiler warning - // as 2147483648 can't fit in a signed 32-bit number - T32(0x00, 0x00, 0x00, 0x80, -2147483647 - 1, 2147483648U), - T32(0xff, 0xff, 0xff, 0xff, -1, 4294967295U), -}; - -#define T64(b0, b1, b2, b3, b4, b5, b6, b7, sgn, unsgn) { \ - { b0, b1, b2, b3, b4, b5, b6, b7 }, \ - { 0x00, b0, b1, b2, b3, b4, b5, b6, b7 }, \ - sgn, unsgn \ -} - - -Test64 tests_64_bit[] = { - T64(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0), - T64(0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1, 1), - T64(0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 256, 256), - T64(0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 65536, 65536), - T64(0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 4294967296LL, 4294967296ULL), - T64(0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, - 9223372036854775807LL, 9223372036854775807ULL), - // Odd coding of signed result below avoids a compiler warning - // as 9223372036854775808 can't fit in a signed 64-bit number - T64(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - -9223372036854775807LL - 1LL, 9223372036854775808ULL), - T64(0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - -1, 18446744073709551615ULL), -}; - -#define TF(b0, b1, b2, b3, f) { { b0, b1, b2, b3 }, { 0x00, b0, b1, b2, b3}, f } - -Test_float tests_float[] = { - TF(0x00, 0x00, 0x00, 0x00, 0.0f), - TF(0x00, 0x00, 0x80, 0x3f, 1.0f), - TF(0x00, 0x00, 0x80, 0xbf, -1.0f), - TF(0x00, 0x00, 0x20, 0x41, 10.0f), - TF(0xd0, 0x0f, 0x49, 0x40, 3.14159f), - TF(0xa8, 0x0a, 0xff, 0x66, 6.022e23f), - TF(0xcd, 0x84, 0x03, 0x13, 1.66e-27f), -}; - -#define TD(b0, b1, b2, b3, b4, b5, b6, b7, d) { \ - { b0, b1, b2, b3, b4, b5, b6, b7 }, \ - { 0x00, b0, b1, b2, b3, b4, b5, b6, b7 }, \ - d \ -} - -Test_double tests_double[] = { - TD(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0.0), - TD(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 1.0), - TD(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xbf, -1.0), - TD(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 10.0), - TD(0x18, 0x2d, 0x44, 0x54, 0xfb, 0x21, 0x09, 0x40, 3.141592653589793), - TD(0x2b, 0x08, 0x0c, 0xd3, 0x85, 0xe1, 0xdf, 0x44, 6.022140858e23), - TD(0x55, 0xfa, 0x81, 0x74, 0xf7, 0x71, 0x60, 0x3a, 1.66053904e-27), -}; - -#define NELE(x) (sizeof(x)/sizeof(x[0])) - -static char * to_hex(uint8_t *buf, int len) { - static char str[64]; - int i, o; - - for (i = 0, o = 0; i < len; i++, o += 3) { - snprintf(str + o, sizeof(str) - o, "%02x ", buf[i]); - } - return str; -} - -static int t16_bit(int verbose) { - uint8_t buf[9]; - size_t i; - int errors = 0; - - for (i = 0; i < NELE(tests_16_bit); i++) { - uint16_t u16; - int16_t i16; - - if (verbose) { - fprintf(stderr, "%s %6"PRId16" %6"PRId16"\n", - to_hex(tests_16_bit[i].u8, 2), - tests_16_bit[i].i16, tests_16_bit[i].u16); - } - - u16 = le_to_u16(tests_16_bit[i].u8); - if (u16 != tests_16_bit[i].u16) { - fprintf(stderr, "Failed %s => %"PRIu16"; expected %"PRIu16"\n", - to_hex(tests_16_bit[i].u8, 2), u16, tests_16_bit[i].u16); - errors++; - } - - i16 = le_to_i16(tests_16_bit[i].u8); - if (i16 != tests_16_bit[i].i16) { - fprintf(stderr, "Failed %s => %"PRId16"; expected %"PRId16"\n", - to_hex(tests_16_bit[i].u8, 2), i16, tests_16_bit[i].i16); - errors++; - } - - u16 = le_to_u16(tests_16_bit[i].u8_unaligned + 1); - if (u16 != tests_16_bit[i].u16) { - fprintf(stderr, - "Failed unaligned %s => %"PRIu16"; expected %"PRIu16"\n", - to_hex(tests_16_bit[i].u8_unaligned + 1, 2), - u16, tests_16_bit[i].u16); - errors++; - } - - i16 = le_to_i16(tests_16_bit[i].u8_unaligned + 1); - if (i16 != tests_16_bit[i].i16) { - fprintf(stderr, - "Failed unaligned %s => %"PRId16"; expected %"PRId16"\n", - to_hex(tests_16_bit[i].u8_unaligned + 1, 2), - i16, tests_16_bit[i].i16); - errors++; - } - - u16_to_le(tests_16_bit[i].u16, buf); - if (memcmp(buf, tests_16_bit[i].u8, 2) != 0) { - fprintf(stderr, "Failed %"PRIu16" => %s; expected %s\n", - tests_16_bit[i].u16, - to_hex(buf, 2), to_hex(tests_16_bit[i].u8, 2)); - errors++; - } - - i16_to_le(tests_16_bit[i].i16, buf); - if (memcmp(buf, tests_16_bit[i].u8, 2) != 0) { - fprintf(stderr, "Failed %"PRId16" => %s; expected %s\n", - tests_16_bit[i].i16, - to_hex(buf, 2), to_hex(tests_16_bit[i].u8, 2)); - errors++; - } - - u16_to_le(tests_16_bit[i].u16, buf + 1); - if (memcmp(buf + 1, tests_16_bit[i].u8, 2) != 0) { - fprintf(stderr, "Failed unaligned %"PRIu16" => %s; expected %s\n", - tests_16_bit[i].u16, - to_hex(buf + 1, 2), to_hex(tests_16_bit[i].u8, 2)); - errors++; - } - - i16_to_le(tests_16_bit[i].i16, buf + 1); - if (memcmp(buf + 1, tests_16_bit[i].u8, 2) != 0) { - fprintf(stderr, "Failed unaligned %"PRId16" => %s; expected %s\n", - tests_16_bit[i].i16, - to_hex(buf + 1, 2), to_hex(tests_16_bit[i].u8, 2)); - errors++; - } - } - - return errors; -} - -static int t32_bit(int verbose) { - uint8_t buf[9]; - size_t i; - int errors = 0; - - for (i = 0; i < NELE(tests_32_bit); i++) { - uint32_t u32; - int32_t i32; - - if (verbose) { - fprintf(stderr, "%s %11"PRId32" %11"PRIu32"\n", - to_hex(tests_32_bit[i].u8, 4), - tests_32_bit[i].i32, tests_32_bit[i].u32); - } - - u32 = le_to_u32(tests_32_bit[i].u8); - if (u32 != tests_32_bit[i].u32) { - fprintf(stderr, "Failed %s => %"PRIu32"; expected %"PRIu32"\n", - to_hex(tests_32_bit[i].u8, 4), u32, tests_32_bit[i].u32); - errors++; - } - i32 = le_to_i32(tests_32_bit[i].u8); - if (i32 != tests_32_bit[i].i32) { - fprintf(stderr, "Failed %s => %"PRId32"; expected %"PRId32"\n", - to_hex(tests_32_bit[i].u8, 4), i32, tests_32_bit[i].i32); - errors++; - } - - u32 = le_to_u32(tests_32_bit[i].u8_unaligned + 1); - if (u32 != tests_32_bit[i].u32) { - fprintf(stderr, - "Failed unaligned %s => %"PRIu32"; expected %"PRIu32"\n", - to_hex(tests_32_bit[i].u8_unaligned + 1, 4), - u32, tests_32_bit[i].u32); - errors++; - } - i32 = le_to_i32(tests_32_bit[i].u8_unaligned + 1); - if (i32 != tests_32_bit[i].i32) { - fprintf(stderr, - "Failed unaligned %s => %"PRId32"; expected %"PRId32"\n", - to_hex(tests_32_bit[i].u8_unaligned + 1, 4), - i32, tests_32_bit[i].i32); - errors++; - } - - u32_to_le(tests_32_bit[i].u32, buf); - if (memcmp(buf, tests_32_bit[i].u8, 4) != 0) { - fprintf(stderr, "Failed %"PRIu32" => %s; expected %s\n", - tests_32_bit[i].u32, - to_hex(buf, 4), to_hex(tests_32_bit[i].u8, 4)); - errors++; - } - - i32_to_le(tests_32_bit[i].i32, buf); - if (memcmp(buf, tests_32_bit[i].u8, 4) != 0) { - fprintf(stderr, "Failed %"PRId32" => %s; expected %s\n", - tests_32_bit[i].i32, - to_hex(buf, 4), to_hex(tests_32_bit[i].u8, 4)); - errors++; - } - - u32_to_le(tests_32_bit[i].u32, buf + 1); - if (memcmp(buf + 1, tests_32_bit[i].u8, 4) != 0) { - fprintf(stderr, "Failed unaligned %"PRIu32" => %s; expected %s\n", - tests_32_bit[i].u32, - to_hex(buf + 1, 4), to_hex(tests_32_bit[i].u8, 4)); - errors++; - } - - i32_to_le(tests_32_bit[i].i32, buf + 1); - if (memcmp(buf + 1, tests_32_bit[i].u8, 4) != 0) { - fprintf(stderr, "Failed unaligned %"PRId32" => %s; expected %s\n", - tests_32_bit[i].i32, - to_hex(buf + 1, 4), to_hex(tests_32_bit[i].u8, 4)); - errors++; - } - } - - return errors; -} - -static int t64_bit(int verbose) { - uint8_t buf[9]; - size_t i; - int errors = 0; - - for (i = 0; i < NELE(tests_64_bit); i++) { - uint64_t u64; - int64_t i64; - - if (verbose) { - fprintf(stderr, "%s %20"PRId64" %20"PRIu64"\n", - to_hex(tests_64_bit[i].u8, 8), - tests_64_bit[i].i64, tests_64_bit[i].u64); - } - - u64 = le_to_u64(tests_64_bit[i].u8); - if (u64 != tests_64_bit[i].u64) { - fprintf(stderr, "Failed %s => %"PRIu64"; expected %"PRIu64"\n", - to_hex(tests_64_bit[i].u8, 8), u64, tests_64_bit[i].u64); - errors++; - } - - i64 = le_to_i64(tests_64_bit[i].u8); - if (i64 != tests_64_bit[i].i64) { - fprintf(stderr, "Failed %s => %"PRId64"; expected %"PRId64"\n", - to_hex(tests_64_bit[i].u8, 8), i64, tests_64_bit[i].i64); - errors++; - } - - u64 = le_to_u64(tests_64_bit[i].u8_unaligned + 1); - if (u64 != tests_64_bit[i].u64) { - fprintf(stderr, - "Failed unaligned %s => %"PRIu64"; expected %"PRIu64"\n", - to_hex(tests_64_bit[i].u8_unaligned + 1, 8), - u64, tests_64_bit[i].u64); - errors++; - } - - i64 = le_to_i64(tests_64_bit[i].u8_unaligned + 1); - if (i64 != tests_64_bit[i].i64) { - fprintf(stderr, - "Failed unaligned %s => %"PRId64"; expected %"PRId64"\n", - to_hex(tests_64_bit[i].u8_unaligned + 1, 8), - i64, tests_64_bit[i].i64); - errors++; - } - - u64_to_le(tests_64_bit[i].u64, buf); - if (memcmp(buf, tests_64_bit[i].u8, 8) != 0) { - fprintf(stderr, "Failed %"PRIu64" => %s; expected %s\n", - tests_64_bit[i].u64, - to_hex(buf, 8), to_hex(tests_64_bit[i].u8, 8)); - errors++; - } - - i64_to_le(tests_64_bit[i].i64, buf); - if (memcmp(buf, tests_64_bit[i].u8, 8) != 0) { - fprintf(stderr, "Failed %"PRId64" => %s; expected %s\n", - tests_64_bit[i].i64, - to_hex(buf, 8), to_hex(tests_64_bit[i].u8, 8)); - errors++; - } - - u64_to_le(tests_64_bit[i].u64, buf + 1); - if (memcmp(buf + 1, tests_64_bit[i].u8, 8) != 0) { - fprintf(stderr, "Failed unaligned %"PRIu64" => %s; expected %s\n", - tests_64_bit[i].u64, - to_hex(buf + 1, 8), to_hex(tests_64_bit[i].u8, 8)); - errors++; - } - - i64_to_le(tests_64_bit[i].i64, buf + 1); - if (memcmp(buf + 1, tests_64_bit[i].u8, 8) != 0) { - fprintf(stderr, "Failed unaligned %"PRId64" => %s; expected %s\n", - tests_64_bit[i].i64, - to_hex(buf + 1, 8), to_hex(tests_64_bit[i].u8, 8)); - errors++; - } - } - - return errors; -} - -int t_float(int verbose) { - uint8_t buf[9]; - size_t i; - int errors = 0; - - for (i = 0; i < NELE(tests_float); i++) { - float f; - - if (verbose) { - fprintf(stderr, "%s %g\n", - to_hex(tests_float[i].u8, 4), tests_float[i].f); - } - - f = le_to_float(tests_float[i].u8); - if (f != tests_float[i].f) { - fprintf(stderr, "Failed %s => %g; expected %g\n", - to_hex(tests_float[i].u8, 4), f, tests_float[i].f); - errors++; - } - - f = le_to_float(tests_float[i].u8_unaligned + 1); - if (f != tests_float[i].f) { - fprintf(stderr, "Failed unaligned %s => %g; expected %g\n", - to_hex(tests_float[i].u8_unaligned + 1, 4), - f, tests_float[i].f); - errors++; - } - - float_to_le(tests_float[i].f, buf); - if (memcmp(tests_float[i].u8, buf, 4) != 0) { - fprintf(stderr, "Failed %g => %s; expected %s\n", - tests_float[i].f, - to_hex(buf, 4), to_hex(tests_float[i].u8, 4)); - } - - float_to_le(tests_float[i].f, buf + 1); - if (memcmp(tests_float[i].u8, buf + 1, 4) != 0) { - fprintf(stderr, "Failed unaligned %g => %s; expected %s\n", - tests_float[i].f, - to_hex(buf + 1, 4), to_hex(tests_float[i].u8, 4)); - } - } - return errors; -} - -int t_double(int verbose) { - uint8_t buf[9]; - size_t i; - int errors = 0; - - for (i = 0; i < NELE(tests_double); i++) { - double f; - - if (verbose) { - fprintf(stderr, "%s %.15g\n", - to_hex(tests_double[i].u8, 8), tests_double[i].d); - } - - f = le_to_double(tests_double[i].u8); - if (f != tests_double[i].d) { - fprintf(stderr, "Failed %s => %.15g; expected %.15g\n", - to_hex(tests_double[i].u8, 8), f, tests_double[i].d); - errors++; - } - - f = le_to_double(tests_double[i].u8_unaligned + 1); - if (f != tests_double[i].d) { - fprintf(stderr, "Failed unaligned %s => %.15g; expected %.15g\n", - to_hex(tests_double[i].u8_unaligned + 1, 8), - f, tests_double[i].d); - errors++; - } - - double_to_le(tests_double[i].d, buf); - if (memcmp(tests_double[i].u8, buf, 8) != 0) { - fprintf(stderr, "Failed %.15g => %s; expected %s\n", - tests_double[i].d, - to_hex(buf, 8), to_hex(tests_double[i].u8, 8)); - } - - double_to_le(tests_double[i].d, buf + 1); - if (memcmp(tests_double[i].u8, buf + 1, 8) != 0) { - fprintf(stderr, "Failed unaligned %.15g => %s; expected %s\n", - tests_double[i].d, - to_hex(buf + 1, 8), to_hex(tests_double[i].u8, 8)); - } - } - return errors; -} - -int main(int argc, char **argv) { - int verbose = 0; - int errors = 0; - - if (argc > 1 && strcmp(argv[1], "-v") == 0) verbose = 1; - - errors += t16_bit(verbose); - errors += t32_bit(verbose); - errors += t64_bit(verbose); - errors += t_float(verbose); - errors += t_double(verbose); - if (errors) { - fprintf(stderr, "%d errors\n", errors); - return EXIT_FAILURE; - } - - return EXIT_SUCCESS; -} diff --git a/htslib/test/md#1.sam b/htslib/test/md#1.sam deleted file mode 100644 index 7e2c0c0..0000000 --- a/htslib/test/md#1.sam +++ /dev/null @@ -1,12 +0,0 @@ -@HD VN:1.0 SO:coordinate -@SQ SN:a LN:40 -x 0 a 1 255 40M * 0 0 AAAAAAAAAACCCCCCCCYNNRGGGGGGGGTTTTTTTTTT * NM:i:2 MD:Z:19N0N19 -x* 0 a 1 255 40M * 0 0 CAAAAAAAANNCCCCCCCYNNRGGGGGGGGTTTTTTTTTC * NM:i:6 MD:Z:0A8A0C8N0N18T0 -xIP 0 a 1 255 1I10M1I10M2I10M2P3I2P10M1I * 0 0 NAAAAAAAAAAGCCCCCCCCCCAAGGGGGGGGGGCCCTTTTTTTTTTN * NM:i:12 MD:Z:18Y0N0N0R18 -xIP* 0 a 1 255 1I10M1I10M2I10M2P3I2P10M1I * 0 0 NCAAAAAAAAAGCCCCCCCCCCAAGGGGGGGGGACCCATTTTTTTTCN * NM:i:16 MD:Z:0A17Y0N0N0R7G0T8T0 -xD 0 a 1 255 9M1D8M2D7M3D6M * 0 0 AAAAAAAAACCCCCCYNNRGGGGGTTTTTT * NM:i:9 MD:Z:9^A6C0C0^YN0N6^GGG6 -xD* 0 a 1 255 9M1D8M2D7M3D6M * 0 0 CAAAAAAANNCCCCCCTTGGGGGGTTTTTA * NM:i:13 MD:Z:0A7A0^A0C6C0^YN0N0R5^GGG5T0 -xN 0 a 1 255 10M20N10M * 0 0 AAAAAAAAAATTTTTTTTTT * NM:i:0 MD:Z:20 -xN* 0 a 1 255 10M20N10M * 0 0 CAAAAAAACCAATTTTTTTA * NM:i:6 MD:Z:0A7A0A0T0T7T0 -xS 0 a 11 255 5H10S20M10S5H * 0 0 AAAAAAAAAACCCCCCCCYNNRGGGGGGGGTTTTTTTTTT * NM:i:2 MD:Z:9N0N9 -xS* 0 a 11 255 5H10S20M10S5H * 0 0 CAAAATAAAACCCCCCCCYNNRGGGGGGGGTTTTATTTTC * NM:i:2 MD:Z:9N0N9 diff --git a/htslib/test/md.fa b/htslib/test/md.fa deleted file mode 100644 index 3723483..0000000 --- a/htslib/test/md.fa +++ /dev/null @@ -1,3 +0,0 @@ ->a -AAAAAAAAAACCCCCCCCYNNRGGGGGGGGTTTTTTTTTT - diff --git a/htslib/test/md.fa.fai b/htslib/test/md.fa.fai deleted file mode 100644 index 87f5585..0000000 --- a/htslib/test/md.fa.fai +++ /dev/null @@ -1 +0,0 @@ -a 40 3 40 41 diff --git a/htslib/test/noroundtrip-out.vcf b/htslib/test/noroundtrip-out.vcf deleted file mode 100644 index 5824064..0000000 --- a/htslib/test/noroundtrip-out.vcf +++ /dev/null @@ -1,9 +0,0 @@ -##fileformat=VCFv4.3 -##FILTER= -##contig= -##FORMAT= -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA1 -3 50 . A T 0 PASS . GT:GT 2,4:. -3 60 . T C 0 PASS . GT 0/1 -3 70 . G A 0 PASS . GT:GT 2,4:. -3 80 . C G 0 PASS . GT:GT 2,4:0/1 diff --git a/htslib/test/noroundtrip.vcf b/htslib/test/noroundtrip.vcf deleted file mode 100644 index c461041..0000000 --- a/htslib/test/noroundtrip.vcf +++ /dev/null @@ -1,8 +0,0 @@ -##fileformat=VCFv4.3 -##contig= -##FORMAT= -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA1 -3 50 . A T 0 PASS . GT:GT 0/1 -3 60 . T C 0 PASS . GT 0/1 -3 70 . G A 0 PASS . GT:GT 0/1:. -3 80 . C G 0 PASS . GT:GT 0/1:0/1 diff --git a/htslib/test/range.bam b/htslib/test/range.bam deleted file mode 100644 index 5cb42709613cef79ed180dae3da792ce86763c28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13337 zcmV+!H0H}6iwFb&00000{{{d;LjnNy0dY#@SZ z0b3y4HJwv55w`*MJNTx)hPB%RkWDg^%zW*9S@X}j9~CctzD$zgY=X86gZm6sOXD6M z4*tux<`jCv@&lSr3`VQm%=3Ix%oiiH+89iMVW?*nRyAnBX+5gP_~V+4#=Bk3P=0SD zaH^z2leHm$X$CCAum&*Qcn=r=RfUlxFaprxS7bYmr*hC>u>NS6s;ul$Kr+ zB{fsQ-L_n4Xycs)!2@@ zM7(9Wkhn+y8o{HLoGB{2b6i-$EX5Mq+uf4v&LtvhDpd3YYvS5U+MFd;RBKN>#qnk= z#c9%Z#(6a!+E`_9K`@LX1Hxs)1$Qn6%&q++T6O((bcbedzXr5g{9ktsiCJHwasH2{ zS&?S*^w{jv?3i*$vqL&K?Y|FP=*K3_o;K66Y#USxT^}FqF`W9pPp7?CNs_#7=lMG% zKR(|jZ?0fV-zCZ2HGRU@KW{sF<$V_JI{5YycFA=gegS*W=wprp001A02m}BC00030 z1^_}s0ssXvwS8-hBw2P=_B^_Kx~h66Vq&Ty-+6D`d*f!$jH%4Z%*v|ucqg(GIuP#2E^LC3lbn>WMdFWSVSn+4ltH53qr_%z1XaI3W?V*Y^^N*00J3-z_Nv~e}E9O zEZGMB*mybLxe--e6;ajQ)k{rxb>*W<6JMRj_nmX@iI3mv@W&6o-06%CKHG3P{_j`Zg4Sp^C%xwL+!;{tW=yY*9JDM#|XD93B@#$)IJezlZk>2XlyS|-%QecCv zuw|Lrjr77W*m%<1awT|f(8Jjq^#?k|$>8mIn7(Jo4$9Pp48yT%5`XbgbeV0=7P-_)MQGfK|;lo=W z&ggIQ(Zlr9pZefapZU}Wzx{I`zVq(1_lcJtDwWWa23v2)s!fqhf~B7=rL6f^g>v zcsc~n%N0DICV1v&@XTkARzT>L8lk8{=r@4Sy-)Zrbw0xg;o~tq_ukjP{`Ct8&5vdT z)8gc0cDi1!)`y+1(N8Go=M`R-hk*?P&);TgSZ3DRbZc`z$g;BZ^SmfFr4aN={gN?K z^R=2NhM~|E$30w{vz1tjSZE`sDvtWTpx5|$GAOOA0&wQQ;0wam0$zo;NBDmFHz3@l zj5ZHHdi3~{j~_iu9>IV*gwQ=g=w5|T=UX3t^xk`7{(kcIqC;qXKxnNWtsb5{o?kGe zoeHM!pbH&+^C$dUoiCrk^y_3A-}GCTVVc2^7KiKQ>B-S*x$3-syVLQ?LIj>yD*7Cj zX_$GQO>=spEE2B_N_w2nGLn6SQGFoBiY`lZ$${WY535DNyqQ>Mgy4TY(no5|8 zG+jl(+EO%+C&+tBD+*Oglf^{-IJ|)i)yDC^&LYZ>pP_L;7y1LYE~TdV3}_r3FIK0= zv*p4?l%fbro6>K8V>f~V3#Fco2XL}5lvdSh=s7}*zEqrzjCLsrc^)Z=ObHwyjyXz`hfUpk5R43d>C?%P^Oa{ah)rqBMC4u;WTjP1=5V#vxQvXP!Hk2_ zahLfB!YW;zc3*+>Auud#Tm^xO7N>c)y&FmKID6dt!ZhCFfTX!K&EA)HuOZg@iSQ}n|Ya~c#{*) zD@w!mfh&uw)s-nQO!ypEkN6(~3NIM@0ItQ{4$tzN$8jvJqd$saGK>~|9m%Kx)1ybN z26RqfuFONVG5xFCwK09+45ruab~-=N2sQKB{B(UxI%08na=38Dl=55h%^+1DO|DTkR{oQ6gfL$nSe}n$(Sy}blI3b_A$G7|NX0Bs*ULn->I|s zxiNh^8Pi9XjcGO`>bE>PS)4A36VDw=Ph5W{d?hJJr`At}D2Nt&;kHaY-^&V>cp?-O z&r1bca@V973c;6%j5X1^icrJYlC08>4-&@(UnVdSfHX%i&}Vir@MXiX9T*XgeREEP z&s^@|)h_pOLB=${GBVX%2ktdg7r74H@b@($Q;W-Ow@DfV$jbhLP7oYGRN@bcwy5$U}A}I(#LqVG@ zku)kqehh!a=LjEQeyfU`JnVFuxX?p|oWa3N&E`w&zhs z_i|Bg!;KBYG$GmT`5Qv%O%??e=%hzGxzc={Qj@y10D`a`dEmTc80Pd22#>EcVv!5BdKlOn7HH?jg0ClBPkp!$aQG=kuf3iTr3EUR|$>RT2%K1JK;D( zN$Y((f11qz5r@*b%>cRo-Bb%rlsu23E`=IVQnr$Wg4mFai)vIGi1xP*hp3U2-CRLn4uAUKsj$ zNZhZGqR1!)dnIaGVX{fnoUAB>DfyWf`opC83)OJ^+$HgZ=RQlh`jDi)!Y|N-;%g^DxizG@~f$<-}=J?rn33>mZdRx+&Na_Zyvy zCkm8^py0c({YY`{X3Jo4U~#$lV{1m}#M2ahM33I)OizaPfW8Os8EYsFeG|11RdD>; z8600YgX34}LcefXJW+f_iD5-@;fO57S;sRW;D;$vG{qE3;L(VF%c@Swrn+iMB*@D! zdNK%jlH}L)gNmPUK+!ILGcZhST!dvMi5yLdN#KQRvYJqZM1Mh53POh*#ui0j#n$(&AU2bWgvfE4Qq(1kQd^(XcSRr+4Ywg<_Hi0ZxqC zK0i!Xa+lh<-hZ_jYd-dJr}I}^i16%mwq75tPuHu}+`;sOnWV`k4-!FI-1n>u0+LWg z4$HDdPKk*Euk~`Tq$m(y*lv6tt8q9m;u^+sAm zp`~dr-9=%?iA~kh-7)7O$#xVA ziZ|x@8Shh_>$9(3luvb-9yb~ZZ6W!3M=EnKAqFgn*JPB^l~1e>bU)&22Kk3uQ6!!^ z3B={8N?FH_(pWuU)@wO*>j4qMN-jZ{;)^qS40)ZISvKl-|EyKGi7w;}(>DHv#Zcvp9N) z^4I+EbhbRKq_`>xfiy2HJd3_a2{o0AJg})G`cqmfg%vi~1cfcra!blVD*mObxMIgn zdy}znVlyL-KdKU+oc+naBI4D$uj{vKqBROGOR`?MpQc!hcG2yV&r{cVip$j~eZ2*x zZz5azazjWQ%~q$!i`kMy=6bev?S(CA@3JV1G*@A<3GCKxf~_n>o>Rn1EjeFiNr2lj zCzC>}Y9dENs3*QS@FBJ;in~TJffaueoRvf1mm&iT&e; z;798jiZ!cBY8GfYP%QShiZ0g+@Fz(F@)tpYNDxLDqB051FeT602IU}a<51g*Lmp*T~!8&X&iH>E#{1?P>8VFX~+m~)ksK@Yeq5qVLeK3 zu>yP$BPR+iy~<&tMicjW;LvxP&hquUozAy3`*erP)A`|Ibwt*&K5@=+)kTx%6j_cs z`37y>t(SU)7J*leP&;winFn7G8WlIFB2Zt}(l(mLLUYSbfR{v(i>|8bYqCy7R*KC8 zh)$Imach%8tFiJX%DYZ3@mV$e9F98#$F`*!PT6;{TAUJ@J8~WV=LSOn4at$uRAWG7 z7|P8#aMP9&g^Xf1FC;Mm!I`6~Lqw=UC~j~gi5Fx=3R#=81MMD%CVu~5#1GyjT(a6zTunVZc z$@nde_AIMHa++w;Hxxt;;$9a;Z^hp~QA|qESAwNY^pJ!nVT@RGqf}d?@nH)Zp#T4- z5lCC8{n5k2W9!3&yD0Yvb;YlKl zc*G;82f29^#TC;vj^Q(1jYgyAl82jTqx7%ety{Ial-$6J{4EK;&?;!eOc#*3)?4@LaFHoWS`rT&f1$p{sTIS4}IXTI)0`<(y2Y1gh zTlyh=l*MKfpre!%Fl01DXv2UfuR_)L9-=`UN&Pm$I9S~FLp!GD6O>gD2Sb>u?Om2iY5 zgAEpu&qN{j_V53m5VnTVlKKq1TMnJQjKn2jaw7gbFI zA!CQF;NRvgf(suu2Mn0rD`?RtVx76XGBf zGax|v5o=}Ad_yfIn*j#Q5n)DzVV@iK6jR6rg(6=9=M@%HoJdrH!VZk)Qo$~{HX@(C zhp~|P;nTAC`n4v*`x;rzFSpF;%}>`yCrh~5qN4uZam1flp+-oj|a22F350x2EB8&ULeGi<7ne^)1OEn0#c9O zhH4B16!g`L7!9KAWurkf{?(>9Y>B*OSY)2U98A6qk^q%Ck#3W6Qz$RorW=u}BJpxc zSDv>;ND5sW#EngnFYMQozpl!w9Sod@A|C1#;IfgE3#^~qR1DnD#!gz9C#t*{O>3s{ zr-Yi1U)@4c6-?iGuUVPs4SGWAF#_&>T?o zU47Mcvs%&k{(gMN^hj>&v7#T{-EX*7vod$9LTT~d+vHl)GuK+L9?p({)2$k(*D9QT zl5iSaa<2cr)9L(pOPzOyf%@6$(fVXr4b?x1gm6fZZpb%YAW(%8USYGa2*|!Qbur0+Kwa!Y=CMhtQ<4f23=R^nOLvvvh+uKd@Y#^uX;nvvCmt3YC;8hJ^(+C+TT ziL_O_MV}9#srC-a&C_^Ik-v7YDI^f2gO;JsMnLv*kYV2k`%}Wh&}T?AZ&MN=+pv%} z-DX}Yf-DtV(p{d9K}{(ft6}x*TG!G|KkInp_>3#|YI9C@P`R~?;uMnO04Eb-?o;ub z@f?n@Qgi%ic6BFfnSjSm6;cmY9y2zM`Rxm68HpS$Q&2LM~WEq81YvsSE(9S ze2+AP;*&eZPPx%7Ct|2fkJxr!5nXsw?~XCQug7of|9@y&{^(A#xBDeR>36m!chX!7 zoDy3fFDjS<>yeTOw**d__}d^zbC1Njp9{I!WZPPqEe^J1Hs{u6Ny?Q6h!xL{ zn?9q&r{6f4OB_qYv{l5qO1n`{qshN0yo2Xdl|nK;QFnm35CXR}t}hXSetSWPP(>~ zcHeF#!`7!KC*m78T@qC&{o6~kN_g(4UhQ-qw*)54_010tPfr%B%H_g@=un0u4CHuz zLY9Ok)P~q&CIXcx3R6Oq6wbNhAU&I~%Q-aa55C-S-Dgt{83z$6V@|ia|D2OnF6XA1 z+^CmJdG5eSa|q|^$W)C#UOPYxNdCtw7i9;Y`;Y+mkF8?$WWA=qw45J0V^U-(A%$t; z07dG1n=K}+eLn;j;O2v%$nA?T2=hRe3B5LmP-oXe%<3zJo>bpNmK>2HacIQ&U@RsR z)$1Z8^%Z9HBVX*BNOpzmaCb?oPE;^arZ3{jKE-t%kzP9(6R>ZZkluOI!gB3KPnJ?^ zcl+TMYSeJ8XM~`@l)k0(=7&h$u?r&>LqR9luD|dU zv!8hq=ERC9!1&++PtHE_39u=+AYTf1l{k6FH8X-c#KPsGYQ)cuIlLgCL$g^vTkeiw z@`#DiH(|{?6&S^(gJXE^i?`c4Fnmh>c)dQR40Uqs3d?kTIJ%wqK287;f3`_N_M);R z7fBFO94@zBLCL9b;by}NGA zr+Y)$-&MMrdNeo<6LY0m-RK;hxOHv^gD2Q=Z7=5X7*>mIJR1NZxH8IxcDvzIf=-9) zDnVEB(oNeNK27G{f&<(!izT+2*i9HstsAJ(_M8{vh)Qd8rjPQ<=aB0KK#oWtI-cJ_SH@rY8f9KKED;4ffMTay z@r-pns%H^xST-Q_9N=FgdG^{3RE|c z9Ftuv=?_F6zbI zgK%%BmDxUg_=UC^qWVPYx14K$^~vM)^Qkbw>sf zjg8~FMmbqf6-&>F@)hR@KY49|!V%neuho<_nH^q&38eR()@s)!g8SScg)(+0oNm9q{O&kE16K)6totUWXbPTaIi6?G_1bzsqh!6w$7!0LI^$jd` z)yDM27GnbAX?D%q*v<0*q$tzpRZY;;T?a0EVyc=8S9*XNXH|LN;|f&)l{am;nxHuw z!PaNzQO}GCN2s2+CWwRJPlf3Z0;b_bQMtWKjHcxP4B63YhRGB9vJwc-i_&%=)i7f1 zJr-kJJ*lA4c%;S?X$BGc=JHJ(jh8+B`WpjObA~3`8xCH-zt>~l!|f1!0g=Tf3COF<+#NkZj? z!B%Y2fFx#?hsCz=agyH4lPt__?uQ9zqsp@VLJm$H$L#-_J#x~dfLIjS-e z9@}BP#We`bwh@1JTiXN|kHM#ULRvwzJ0$RkL_deZqU^q?Pw!qQDIVT!+RS4@>3dsH zTAv;tpDf`+hxM7MYXI@E$ED!Yilrd4+LBoH2Gv|7r*0!K+c>0)6_Q8TT$_$kd$&)D zQecFu8--T02;n0d5{*(44iwVeE(V^KGxUylthCczH?WzvZk?whm!8h`CQ{ZL5fnj=sxTJ0Y)hQZ#27}f&1B-;GrK$CLA;~)ckhUuoddnI zL)O37+nt2Bquu>G_jhmahP!>S*Ea{_J-ySN+}69qjd%9;Ot*JuPwvLOU2{9UujT#S zz59D_?3w#|?{)w6y@7f|5AOE;@!(P_x?913MQXFzquDH3CX2_1kB?50+2i9!vju>; zd)b-3yTzFX_d1>Xjl4Z4aj{q)qp@&2t42^R0Fa=25L5u<*q8-1UM5zO`Q%t3Ah{N- zo;qi#@RiUOiN|9Fg`W#7PLM^&TNT_|iEtF1ja>642;SB= zWk@KBaxtsoeM&lc0bj9F)&ba79Z){o>R_8PLL(d}2cW?V1mK^z+axhaQGc_gc+*Hn zSDJ=L)Gkfv@^ei5QB*GY#C#SAly>hE7`s}Idp#bbMhlOqTVHnL@zgqwtK)uO4Jo$r zEKW4S7{<^|py=V7tjV~2%pW9f1=bC?{_pby;HNDhsjC?O@@}(=@%JeJ|E^}s?(hVI zI`bo}4LDv`5%_7a*uo2i5|~HcY@|w&wK@5kcNCwHf14-V$bzD}Iq8~joV7t=cpQc2 zN?ny0!P?DM2q$9ol-$%xojV zNx3B=LlGy;>GHYRL_8+hY<&7x71f}%iz!vppSKy|V%^>`o{!aTfW)|6TP&DtwT#2< z(c+yGuAcft#~8z?%~`kWI+$-iQwQ_$YfY4p$$zkAM!S)$De(z*^B}!{Pq@<8Vr!lgPaD3DtUJ! z`O_xwN`awcPX+`HJ(+F;ESb%>^qvVX?Zhz;i5*(im|HcigHaS0a$UnJ;%NZIQ3u_p z>Djmn%Ew&qQ3CS?13oR!gZ|NtR&ms5e7*$@)C}MK&E_i53-!UX=WIWM(>7kxQlY9m80%>ufI2z=tFjQCcSQWa3}7mJ*B!)*NC1X zD^uNx-ldQ|)V+a(*(fp8IATAPH#sd<7b5=bYc1VvO4VO!3A+Tz;re)ex+YBKRX6IX z*N>UNl=2oLGd7Ab>#dF_n7S9mCzs>8l*i|wqS);XbL~hT?uv$d+F{C!hD8Q%0W`>A z5{5KZ+-`WzC1TG~ulfEKnEw4vr}K{*jOJ*Dm=Q1GGnfg-55)GM+A^)R zB&%60mZvAj%VU?INJo)`lD;i5wjP4{Sr27UyR~It%UpzhnMiLNVwd+O3>E2x{ut+v zxs&V2ezgY^Cvz=x8oDZ>U6smRymlK5AI4 zz%kjSDAJ;yu-Ea3V$FOxt7rVKzxD)Yy|;;1kX;m;BJ;f*OjuUOJ|qggy!pwX0l^mv zsv=`Pc!wo?mQS^6<5q0B`c>cTGcnYIp4L1$O0;nw6;n8q)$t23;qSTEl-yq;>-ZBb z*0DN0S}YbYj`iw>XlRtL$mAyihqMtsE!ShP%Yeu5RpjI&4^~Ij#G`WC=OEKL6 z-Qbu5vEge^RMpJp@*D*i(C1q6Qw!U9Hf-{Z&vnub0xzL3<#U}FBbjQqFiY`nYIgv< zs`I+2sv;Je?hLrQje^CdC|fOvH&bn01GEmjH=3iU;rP-{GY!Gr{(Q@BjfQKbh_zXf zs}Pg>X+W|&#LQka5X-I9ou6(Yc{r9hM+5WZa9y2$er7a0Mxz|{qG%+E#fv?NBpL7Np;A!~C%h+0 z?Cwc)o8FLOFp@Uzc6(}HAB^%TTH-yb|kJ{3380??bHZ!DK!T{^ns( z^>V9)Pp-(x8?sEL3af5^T+Oy>ZY?=>?8GHk?c7}x>iPu7T?8pIlt@0WHn?s;_yNI$ z`)>R-j8S*a%?8i?5DCf;TWZ3D)$-_&$lUy>G8-RDm_xfsrBt5Ey;7FMc7xovYP0o9 z%2hJWaz6+%5o~gLX{d%2c!xu&qw#Q{`Y}C_eWqtBob>fxFE)Hi)AZtgth#%0qU}VZ zdD+)Qdm0G?q%_qL?op%?j^>Y0VLGi&m zhaYQQnR>;V)My~Gd&wug?)m2ka%vc3^mwQ23VQiJv7GqAo!Kz(b=%*pI@cCtD-0u`)|yj~58 zLQ4im$4kYJDP;NBbc4xgckzhHqe?SLuI2z1l+(3!Gmq8DE4RgkXHKHXjmxrIJ}?iE zzs6QqtD)T79}9&mY-@ISw7LmeNrl$rmD&+MbB5M`rPqFM%dzs~)7AWhK2c6{l^tuh zI6_~Lq(V;tmE;09OA2%Mm_Ff1Oco|2I7*vtJc#cu^3fLxoLJ{|w8Xa7Wa=W+N4`Cl+PHaIke|B_S z-F_(~En5Zwy2k{m&2jG-n_-(cF-(!$66yNzrjsu^&^_;QNjhdlKV6RJ|i{;{?>o$$<@&@wvuGv6d zqxeIwHsc@2$=_+IDm92mh&zc;CJh2`v`~n&+y>jNM^c#pO%h2khY9gotnXBrm*%d@ z#&rYfj%0zs8v#({n0MHdz~idD(gHz}s|sAP9D?78si_)gIv$OA9W!sN8M_I^$ZgfQ zBC{@5M^6xuEAG+KY1S~G8UR5?Mwd_oY59k(w+g#VPy%0ugrk=fnZhzp95uxapMoup z!YA1CUSL@)i38sT*gs(f-#dg)WN;%y*JqrKyTcET1}a{^61yWPif^mIOTCplk-{sM zd8JELzjT{}4Cf>#rLRgOi}le(6q`3ExsXQQvF*@vGXOR~ z!r~h*m!8DEl7t9(4Ow0!WS$;T7#ZwzL%kP=rc2V%-dFqg$CJI@q#ugOu9toM z-XMl1o$U=NgWQitd`{X&bB^z9Lcf3s+;~JNhHpv~&rL|QuP#VjX^iuuSu-17?b0)b zae5_;H338r99|-T2$p}PrFGW`jMpP(S!!)tPZZgn3AtVmbL8+qmX?ivy3@4WFT|s$d(zB$>#gHJ61O`kga7x8% zsIEhCb~3vO0j#s`=WaK(#aHfjI$v#>s$EeOJR$|ZI9e^7>k?b`6OYnHt`vnp0?5Zk zP$GJP6>@8>%&pC_G_y>%-o}a$hY%_BX*uW(BBFF8zlGJfnF5YC2s`1`CX{1MkK$e^ za9kpaAh|?e#O8q(ymBhyRqFA+GJV~flEaPD(5ej+#Io}o&D+}mPB!`74AA}z`!-fi`ETcoOboM3yne<*Wh$~ON+(HVs^Tmud6+y&xI83 zeTMs>XwHP^2Z7I9rI8a0F=bNn$%t=_;-mzQlz=!7P?%>eJti(3DG@ouwPk`sz~gX+!6M;B`fXse_7!h!fS$WUn`y|x8GNwCK>7;&YL zf{*Db?V1}x=tx&XVX`O11oJI@-d^PH|0c%WYA+g(v+%M#40{Mp2iT(_d8V7Z8?DD{ zL0p{N#N_HM`jxv)E`lKUQOg`=GoY0yw1o<1yNHKi=P%*osZC03lvvaVX}* zb&Iyg%9taXaNe*dkDZ2jmCt&Xvq=U4gP%vxn16)!H8G zW*m$wcGDMqoJJOGb1LF*HaNZPS|fZIQ@L#j*Pu8*IyroiFqgm9R1t96?`ye_QNuw& z(~__dTi!99Vep|$Ha`8`gh>J!t4iFxXcOX&mto+gwmPHkP9(=?>uTIBR$@0A?oO!l zZa$479q%Ns77kZ|QB~V++-(UXH&bPzF7D-cbyAowj+RaR-;8p%o)8iBya+%%Stg4M zwey;|Au(L8+#!M3_WK`QP8O|bd0twkxakH~N_bLka(Flqx~-q{@PcxxVBc*JcC9sR z5yNc);JVcj3|^+{ma++CSe{p`mX2@@p2DM=;ufLS4Ie}Fy89np3FCTs6Px>gL`FR{ jI(`5EABzYC000000RIL6LPG)o8vp|U0000000000mJfT2 diff --git a/htslib/test/range.bam.bai b/htslib/test/range.bam.bai deleted file mode 100644 index b0b74323480bb6fb3a79e861d1e2eae9b4ba52cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmZ>A^kigbU|?VZVoxCk21X#w!0;VR@rXcZuSpPjba9|^6o9N3**usz8!S=HLl;*< yF%9Atm>OjBVCH;JLp2XwToa3VFg3{L!OUS`_-hQ(0`o7rxG)y;5NgmQ(YOE})FuZ2 diff --git a/htslib/test/range.cram b/htslib/test/range.cram deleted file mode 100644 index 5be551c4772b0a770cc5b9371b25e0f3c7b335fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11182 zcmds-byStx*6^QQa;Q`V%YfNOUp18x~h)D2N)nfz?A_5sc$^wQzyv7>pQ!4 zwxQ2E{YmY|bByOE(n1XlcXFxZ_K5Fdh!|)b9E3M^EF%ZA4nF2d3dH-o?I`ypIX5Oe zwYQM2%$h6=%O|VJln{E(b#-Rv*>*5J!dpq2C^K2gr#X}{-HTN63G*X}GV7LT24!pD#=G36hVJyn<+5P;aEe zi1-@QMZZ0zyH38JIKLY=HJdfH#*Au}1W8%&yi93%vi!}e-KFm?t#W^Iy{GXNZMLu% z+?mT!(h9Dr{!~IEG-X{4GP*7$XG+VsAu`+7%`cVCu+?7x>Rj<{2vGdbc+D5sNxk~s z$g3LolbH+hnUZS`med=wotJR+UAlH({)%p>?QT-1Bz|dzY;O(Rne0*7o=HEgt_Ix` zf6t>A`PrS%la%6x^L&pY_v=HY)kPKn%!AAcJ5YX%V@~01yDvjA_0KS1|(2)O@W(P*$QSD-|0nO_Yj0%2Xd^1^zQc zS(&K-f0X@efhy{s;>Kn+f7ST6#isfU*kob=i9*w;YQQLQOm{rWzX!&UKX!qn>$tA;YHHY6`B!!C*JGdoqb7hr;kX2Z01Sac02cmH zZl(t#fJ0ya6b^yHU>XK6Bm%S>>?PPe@ErwOZ>466wO+#rMvo+77PW-JaPbMKnRt=E zbYRU@#r6~IGFDRC009Mv)UYE1fdHzia2yDP9|GahH-?eo%5#y@Z~_FlpfzxCEKRVo zgvO>22+~CR*PxlAz)WIv1K|QV;c(3}9Jw+Fa z0#Lxv5S)si>zag^5J~*Y@?S>&vIlDcwoPm+SiM*k*qS8&{Opy_?tFzH0CYFH;@8#= zE~yH@^7KT8XU$oSVQQnBCXm(l9m`V9abR-$amF=u7)PR2cE&MBcBb*UWS&Y|qn9{F z<6G<^JsfUyWW9?_HR`Oqn*tI&AY0^BSqxzqS6|<5Z#o>{i%4>Tn30Fv>W#=T}bvShiVv0IMi6NE?W} z16>n(bR4?4z^;4t{To^oDM{HY;i0oFqf~dqpB4B}-Q4?f!0;?VPu!Z~m_gDbpGFX;PT}{#(D&{jRON^4qQ_W}C!-^$x`p)?JY_(@|g=<#k8S{whCaa&%%b}^S zmMz}gZS5)F@Ig?2@e)|nnKvSL5e{SFIWJQ0w0&!XrdUP~UY}nmvwTubrBFU2WuIxI zhFD&e_DB(W9n9ywGvi$<{jQ|4;gsnn8N&eIb_zd7rQi*p>7k2wmdz@9b}Q1lOnQj8 z9p~*g0{x^BQv~C)kFqAa#WV&;R|fJP?6FfB-){N5Ho^lQb-5>{`_^QOn}WGcMl4Dm zK1Llq2mr9<%o&8kkqKN`2>>H_07#$!030YT03m=7vcU;)z$F8Ipb#h#6)8IdCo!{t zsFWQ#KZ-Ky9A-SG2s46iW&uB0V5aRVp2&9z*t2i7mLfbwWM{e_?xlUTdo)fK=a4q( zZ8ekARwfNExnj-k#2!*PPhzdL^};jugJG4(*W^pzFb4j5x%q%^{8w#Z2_SbE70FbN z-_mCvWs0-dL6@cB>z2>K>>4p>)^ST&3vf`FPZd0pmd9&wS+Th`dZ#;=AJCTu%zPrKD z3va!T%gLDt*!Pk8$BZ=(x9kM*zZu~!#)?gI1j~jym}ODr)rpM;m)3SZk#U!G6m*E+ zaGuBHTwiq`_aPVb(@QV6Z*=KexJU5nk@HgLG1ZmFgjzg8_KxsJ18r@iZnRYcj~&gP z@TQvty-mEHygL8+z~TzQ)}*<~y$ieD%dPAR`tf`b3FzgsK$@)AZ+0K*jE{XMQ;C$hgK^tG^nU(2lxB6=sSdr(X#|@t8nbj3rsiA_Jm$XN^_2_XpyGjs*x9oicusX} z)slmo+J=MIpYO>$V^z-$E!K0k--=Z*KC=3p6(muzSDC4D(yRfIi-_WE*>xZ>KcuU< zw7`+Z_*@NoEEciQdlV7zGL^E&d*sYmz>C1xCnnql?&d@vZ_?e8uuearl)h|!+|)}y zq)l>i;eZ^Hw);eaL!kQb^MLqNx(46*vq|+ZSsEM*$*S;)%uGe?JHDM&r?Pd^pTZbI zM5eRwR~?Bi^2mhY)m^6eO_-g*KM|>IW9u_+Ilq9 zJBrzsnDKd`y8vN(8g0Dxaoy%*B;_9ln(0l$20;il~I!%UJLuzYG^4Y|p4;;RPw+lad)oIq9 zC*oc6+;uHhbHX;ktyqu@x2=79wcl-x%k2u!*};%qm8HIj6~Iiatg-iH&4)ETR3Cnl_q+SI^R#Pg7RwL+T6ebXpZrh@JU zg(Q;X44e1`I`(i9U9t50+Qu4R`J|LH6vOvzZ9! z_7U7*S4k+BI%m!2eZP%DhNAmamz?6Qqq)!X44BiP@_C*Z0^Gd<;l%P;gQp_Xx{4~% z3ADt5`PN*u!Y+EO&3qpQy#xXB`Sd8NOomUnHdh-H*{;0TQ%9U`Ui= znKTY~+c{TK+3T-tG_^cvIO|ET)p~t^s(%8tAnxFzTe?)CS+nS^YjbIm=wepZs$vA; zk@WK7wo2r%3w3GjOGHKUA!&eG^=!ssbv(;+)&ZHY?lldX z8#x2E?Tl%STfTT=>W96FMk;t)`BYJcx}&|4Js&AWH8q<)k`%eAfBj(0&DC2Wl6ToF zEto%mjxyEInN#C3m?Su(Rt3QIEUJd21062y8Sjem^NhnH&EKD=dw0^8rc-C4E= zwV&>s&uYqj^O9mKUeL%?OfY=8#qIM6vyWkl9ajO&EyGf7VsU%%?kPEu&mD zHhHzB%}u1269wyKo{D)}1BY&NroQ!YEE|Xn-7LL$JH)fVN6f6%@%`DRmZBSr8wzM| zRi~*bzdW*6nSQ#$gpMBXoSQxfCwfwSfpZ1}e<96nX3Epn#Il z1Knq8UbL>87d<$t-aGrWd^@4r3!|Ow8fFe_P>Q=6X(0w3Jc-!f%;Dbab)k?&S)uAT zH_G>O&AN>a)^#BK4CAww$;kr)?%CXhx$7@6#^po6cGm&LmzOG+=ss`Ada!!Glcw)s z?>|k}_bG8D@w_U<)*e1*_57`xz4|fzq2hOip&B_`d5pa}PYX@!_^m_8J!eJ6FtdZ3 ziMx#=MjZAEaDs{#8eCjmS;+w4yUs^Stg*L4 zd2WM3pnsr`{`^Y{fQ6*qCIUo}FqF83>jlBSqgUG>s?GT1-gxx4r6g)48&h1nOlm2o zaBMbsaYxFTO~GMesxVo=rHed+MLov1?=z@*YWMX5ws|uZmfxBuB-$oYM;8wl8-aaY z;`!`|H9{=kH2^DW_@69=H5`#(h4fKuzv**vc6Wb-e}mQt!T|%_X-AIBbXbj-%h-uQ zVbHB${Y{v{W5Glnz%j>xn1i%o?aZ}XSXt@k_*GcNq9~T%=VaMk8MugJU;#R^K!aIA zFLqKA3KQ;uqM(<8M*luszA2)_PeqWh=1sb3lQxvzg{l%8{_m$}LlV5h*1122-RWd& zFdDz?MjX8!LMNYm=c?(4rsile9OF;V8H+u=;}Tpt&KA&E`qLrqFe~i~AJ=?1M=Epr zayHj;^^r`YA7vTMYS^vIb>U9S6i3f#YA;*5V@LSV=-q?&V5fiiT4GrVBAq|{u8oLvH7>Q{Kg;* zsX+#Tg#Tm^a1cL0|Bu-N=#c-x9=MTlL~)Wyqseg~AV6Xs$EL;(CbK0^rY!xh4?f5D_-~;Rv>`O z12jxOH2xhZfK1{ir}+aZ^dSE`q=5RHi;n`G^Zx`H{*^3%llv!j_+N(%RGp-DAY?E# z{d3`ylKc%a{InOl^I^B2pRnP-1P!**j;dJD@Bm%@Yc~YF#&W>=G<;ngy*u`?IDTD~ zJCL?OhSKocGaj-eLe?Z%-qw+%oOd*8s={}VBIn?47c{Kl?ncQ&sTyx-SNA$x#wxVv zOW4SsvC*7dAEaz+bkGVK$siimDx;&V#b-fhR`KzVXuHJRpk)#{4&!_+Fktk-jYoP{ zHlj}_m^Iso&vHaJt|EL%spBhGPuh^z!@-@I#=r+K0&C_NPG-%LFB~_&#>TEj=$6Q% z?iVuX^Ie{%3DhEso#(R%E=BRO{qWV*sM*Y&)IhF)~{Fc-c# zmqh(#$05qgqca^~TJv(J-A`xQ)?b z=SeM{g==1tW6`)RQPC4SuQml-@tA~-kzn~$S+-SoFM7mNAZ|$DWg%t2bmrW(be^ek+%^_aNFFGS*hvd0lkVdSXX#2ilSzbr2 z+Q*iPZ0)|QCsWx#Vx#KlvnEf(gI6_b2_v>THdl@zxQo|!yFkw1DA6Q}q$WP(E>K*+mM zf|0;u0R~9{{5!h?aQ1gsrusfb*JO$6CUT@cPdqNrau1Z(HTxJY&S0~A;{eGVtIp{{ zx8v}HL!3OGEo*%0@)ClHC2vJ1kaj}6f1@|F(%#Hp-As1D=cH3+&C9UO$VKy&^p<$e$RlBQKqU1A9JibT#&iZ_~8+MaU&s@RNN=0(#gL1 zb_w2BOs<2q{m5(2Tp|=lUaJ*lW;ni!58bd2tsOCoEUvm99&Kdwv~OARV_nn}E|*%H z$Z!)En!GwPF_gjkxYzV>sZNfV)Q#~|#mRua@*7K1gZD2f#xPr1n0n}r1u9ooEM9TA z_L_@$U3kTYr>YTtsz^v90FRU1Lv%=VpG}n@dwhU!n!9u!#_8cK7hIY7C_H7~vy4ts zWC(}$$#>5SjQEeF*vKdP_cvbV*nFUUEo!??1_FC1A{!qjYCc`!Dok{_ z&2ID2+)j1w*{r zBfQjj_|vNLb8y9h(*g9>F)*OGf*b-(9*H%pca7&=W5m$%+M%P7YP z`NM&RSV21zVlhqumHg?Z5UnigO4#F?Ip3$sioQ}(D_w!4N*bekW}ay}G(q26Hs0Xz zXA=vLc$~yy48Egp%S!ePcky(K2R|>kR*zc{j-jx~x1HrgN%&TIxKOb4-&3}40`lQV zJ08c1PI}gG0fX!JD&6`gwEQG54A15H81)uzW!JvBNuKbCsByv|iv_RsT3nPV--M&q zL_v|mskfTNoc`5#jJGIeMYqy_$Fb|Ikc6~X&uqxs^7;aM;Q;?_?^tERhzDj(fw?Rk zt}Ucqo#Mh*XmuBZE{_!(vz6~J-5;xBuO1D1b3}_@n;MJ1yOO2zeW3Ca3(d`P;}ds# z2jMvlgw}}#?ZJ{=+HpBWUiN&0UQGAWE_1lW zjaV?0AbQXBDPGD~sk-ETmorJi=lhLpIiUP_MeJ(bi~522G_{TLWqm1IFP^rEb?+vO$OyK6a3S#;-Hf-4UtcuW%ojxP%Yz2^(L${#z)N2`6eg3%=1SYzh% zteK!|4mDcTweu6+$BIgs{5rWi6NxEj`qeN@X5PdW`p*;Kl?OY@A3~QbomEcb(TU+F z8Ec#iYIH>;#@!i#`In>RzF<}$3Od0VQ@ElsJC|m1!-)^n(=9ZWaqc_%zGNroU{o0Q zdvIQ_McbVB@-vDAUhQwv%u$bz)#A!>xL({XveIY{kGmkNft-^Va@+IU?SC(f`nq{a zsLh}CB5a~@HZ;DeBZ&jXJx)7Qmiy^=`O2O2Xr#NjPjSUCbt{P?AG8H^ps<$C<2HR` zX9Yhp$ppxnbzd5NcX7Tu<`%ia))^nOwfT@Hr|v6Wb4LLkhI!74^PTMHR%*|xeUT+( zpywZ^%ds~NS$-*wNjmAs(b##?J~}Jv^Hw2!L?++f4gY=RmfT2HSagwSO+Z{~S{D=B z(ZF-f2y|F!TquQe#^>A3toBTG>x$WCUDnq$anlF)aj zAZ&tS)qdA`gvBSoh5MdCg7& zqC3hfM~W=F);p!v1OoduUR<~VuD!jXJ&u=dxj9)qHnO)>Tg*0RSJA-_7F^}=+3sZi zAl$w_ESjqLrl-J8t8;8J&siD8le{fik2LLDxE}noM zEx^DCaROag@V^w9|MZXnn5nrsqCtz3-VqG|b$hR+vHo#;6-1$^Ab&Ngiv#%2x8s0;8Nj=u@sC&m6&pMB&@Tx9_8ZjL zM~;n1iZ+Tg4~t5Oe4Y@!@4gVMkulNI^oZ}Sx2K~|oaX2_q$M zWfVMGi|6Yt(mQPA&Fku%HmF_m8%@b;ExTombx1nYRfSyV@EscVvoiv5X@{WZ>q(ah zv1S!3$0dj2|gjuE{#K_49UK?ltW$W)) z<-H#Vss#ZE$Dbqc+w?j*I+D_WtKmhjJSSF}m$3H_E+vX$_GfNl#yq=^~9^^${!=kg|<-_m%iQFPZ?00qfFUz zV!;_%6LqCmpC!tRy)%*=VKyXjHLl>{YHHri6bT=wM^%=i`(ynYxkQcX!3Ayt4q*XC z)5H#%TlN}_>Uu}JX`%5TNKyVuQaa=C1v_}-rq;27xPKB5q-)H5Qb^P>j_yz*NI;^t zqqYry0uaSNk;K2n4u4Ag19M;*$6rVS{oxNJfi3|9BYt??Kad0rg1};i{~{a$j5dG( zU?>D7POMPkt?2ydnV8rl7aTCO0!$!$V8sF5+G#xSvVo0sn8rpwEW)FzqSOD70ciss z3=WEe?SbJ7e*{{9T;bOf3Je&qf&d^wz#7ybd-yvu_+jAx zVhF%ExbiD?o0|o}*xM4#Okgmi;gg>wcb_>I9KL1x>puWOo6hHuMY}7JnhO`E92d8YIFJ!r@d-lj}YK zm>D_c{dx8^S>+*;?{*F!9P})0a8T}UZE@{NlPvC~x7FG#?xFBYjmI0(tJ4Hk<6bur zj>FzMHq`hiBu3+u4=(vJ=BuDM+S&qmX??fOhnny_9D){m@84Ly_3iahTQF?a;Nz|f zxamIR(W(M{Rg8AbeLxx9`0v93fRF|WCBh*hhfx49DjaG`N*XRMDPaa0K}}6`0lGE{ zC(0Ky8N-0FL%(2v0gx-N#X}=18E2vMz`HUDcwj@7yB)bME{x~CmZkQAc1@Cv{hQUT zZHjhn#fwIYN|%^r%;g>{3(1q*s7bNHUo@(-*;hKKy++WURPkvl2i;{zUsx!98k5Pr z85mM`S6fUxdx3k3AriXYU&=D!Z})t3i-j>f^11byOE}xFtJj1H| zz*^*5YjLuY+iRaq+EX7_`Sk~P={|SqkY};b$&*V-r+k)Ee3)HZP-$qa-uI-+`l0&@ zPyU@0PmAXhw=<&C1cM5^G^`Y3z7V+*xwA0b-Ih`-5H{g8D@)J0;j=WNw{#fztlwaa z&c}DmWGE+%>z$}O)FgAHHOl6br!JJ-N4S;ZeBqe#ho@ej%eU>r86xzyzczfonc!0R zN&EXub=w_jZ?PhTl=Q9QW1X&LoBiwXE~c0eM*UHH!wb`y{R^TE#y ziNwO%UkTszMmqL4PQ@l9%K7(iLWTe>LW(f5eU%B{78kd^kHk>36+6B^_IGk(!?+xO z(>>QRcR2U#JjwC{D9q_g7UTv)&JCRU|#SQWWl*7*V>$ zS*KZ9u@23eNf3Uq%_*G1($?z?eg&l^WuLK@X@ZvhX)gHiRo<)+O&;*l;WC hZb`DBZm5AB9tePV@Wv3l;eh8h?B7Qhi0*$U^*rY8RM@^uD^Jbi(Sv(s++- xg_eDKD_U;7n|gW1i441-0<~{8d*<3Y%&WgRtMj1OTK@({2Kn66Vbg%d0syF1CgK19 diff --git a/htslib/test/range.out b/htslib/test/range.out deleted file mode 100644 index 8733ed8..0000000 --- a/htslib/test/range.out +++ /dev/null @@ -1,17 +0,0 @@ -@HD VN:1.4 SO:coordinate -@RG ID:1 PL:ILLUMINA PU:130410_HS18_09653_A_C1JT2ACXX_4 LB:7053878 DT:2013-04-10T00:00:00+0100 SM:ERS225193 CN:SC -@SQ SN:CHROMOSOME_I LN:1009800 M5:8ede36131e0dbf3417807e48f77f3ebd UR:/ -@SQ SN:CHROMOSOME_II LN:5000 M5:8e7993f7a93158587ee897d7287948ec UR:/ -@SQ SN:CHROMOSOME_III LN:5000 M5:3adcb065e1cf74fafdbba1e8c352b323 UR:/ -@SQ SN:CHROMOSOME_IV LN:5000 M5:251af66a69ee589c9f3757340ec2de6f UR:/ -@SQ SN:CHROMOSOME_V LN:5000 M5:cf200a65fb754836dcc56b24b3170ee8 UR:/ -@SQ SN:CHROMOSOME_X LN:5000 M5:6f9368fd2192c89c613718399d2d31fc UR:/ -@SQ SN:CHROMOSOME_MtDNA LN:5000 M5:cd05857ece6411f40257a565ccfe15bb UR:/ -@PG ID:scramble PN:scramble VN:1.14.7 CL:scramble -M -I sam -s 50 -r /tmp/ce.fa - /tmp/ERR304769_subset.cram -HS18_09653:4:2112:13048:11874 99 CHROMOSOME_II 2976 60 100M = 3206 330 CTCAAGCTAATAGAGTATGGACAATTGTGAACGGAGAGGTTCAATGGAAGACTCCACCGCGGTAAGTGTGTTTCTTTAAAAATTACTTCCTTTTTTCAAT DCEFDEGGFFGGGGGGFGGGGGGHDGHI?FGGGJGGHHGECGIH?HFGEHGHHGHEHHHHGHGGGGCGHHGHGHFGGGGHHGHGGGGIIGGGIGHHHG:G X0:i:1 X1:i:0 BC:Z:GTGTGCGG XG:i:0 AM:i:37 SM:i:37 XM:i:0 XO:i:0 QT:Z::=+4AD04 XT:A:U MD:Z:100 NM:i:0 RG:Z:1 -HS18_09653:4:1204:2530:59238 83 CHROMOSOME_IV 1422 0 100M = 922 -600 ATCCGTTTGATGAGGAAGAGGAAGAAGAATCACAGTTTGGAGGGGGAACTCTGTCCGGTAGAGACCCATTTGATGAAGATGTACGTTTTTCGTAAAGTTC GHCFGHFFFGGCCFHGGFGHEHGBJGGGGFGHFFH?@GHHEGGFAGE@BEGGFBDE?F X0:i:2 X1:i:0 XA:Z:CHROMOSOME_IV,+46358,100M,0; BC:Z:GTNTGCNG XG:i:0 AM:i:0 SM:i:0 XM:i:0 XO:i:0 QT:Z:<CDDGEEFFFDHFFGDIJHEIJDGFFFIEIGIFFFFHGHFGF?BHHGGGGFGIGGHHGGFGHGFFIHGGHHEEHEDGHJHGGHBGGGFFGGEHHFHFGGG X0:i:2 X1:i:11 XG:i:1 AM:i:0 SM:i:0 XM:i:3 XO:i:1 XT:A:R MD:Z:28G29^A13C21G6 NM:i:4 RG:Z:1 -HS18_09653:4:2314:14991:85680 83 CHROMOSOME_I 1020 10 28M72S = 853 -195 TGAATATCATAGCTATAGAAACGGTAGTATTTTACTCTCTGTGGCTTCACAGTATATTTTACTCTCTGTGGCTTCACAGTATTTTTTACTCTCTGTGGCT GGCFGHHGGGDHHGEGGHGH;FGGEGEGHFHHFBHBFGCJEHD<3BGH;GEGHFEGIFEIEFFHGG8GIEFFDHFIHFFGEHBFGDGGEGBFG5GEECCD BC:Z:GTNTGCAG XG:i:0 AM:i:10 SM:i:10 XM:i:3 XO:i:0 QT:Z:==!2@A+4 XT:A:M MD:Z:8G6C9T2 NM:i:3 RG:Z:1 diff --git a/htslib/test/realn01.fa b/htslib/test/realn01.fa deleted file mode 100644 index 9188e9e..0000000 --- a/htslib/test/realn01.fa +++ /dev/null @@ -1,13 +0,0 @@ ->000000F 57093-57778 -CAGACAAACATACACCATCAGACAGCAGCACCATATTCTTTTTTTCTGCTAATTTGCTAA -TTACACAAACACAGACACTAAGAAATATTCTTCCCCTTTGGAAAATGTTTTCCACATTGA -ATCATGGTTGATTTCATTCATATTTTTTACGCTAATTAAAAAAATAAAGACTCTTTCATG -TGAAAACAGAGCTTCACAAAGTACTCTCATTCTCACCGCTAGCAGGCTGACAATCAGCAG -CAGACAGAGCATGATGTGTCTGATGGTCTGGTTGTCATCTGTCTGGGATTGAAGGCCAGG -TGGCGGCAGATCTAATGGCTGCTCAGGAGGCAGAAGAACTCTGTTGCTGCCCATCACACA -GCGCCCCACTGTGGTCTGAAGTAAAAAAGTTCATGTACTCGCATGAGAGTTATGTGTAAA -ACAGAGCTCAATTTTATTTTGTATTTATTGTGCAGTTAGAAAATAATATGATCAAATCTG -TTTGTTTACCTGTGTTGTTTGTGTGCTCCCTCTGCGTGCTGGCTATCATGTCAGGTACTG -GTCTGGACCGGAGAGAAACTGTGGATGTCTGTCAACACAACAGAAAAAGTGACTGATTAG -TTAGATGTAACTAATTTCAACTATCTAGTCTTCCTCTAAAGACCCCTACTTTAACACAAT -ACAAATTACATCTAGATATTTGTTAT diff --git a/htslib/test/realn01.fa.fai b/htslib/test/realn01.fa.fai deleted file mode 100644 index d6bd5ca..0000000 --- a/htslib/test/realn01.fa.fai +++ /dev/null @@ -1 +0,0 @@ -000000F 686 21 60 61 diff --git a/htslib/test/realn01.sam b/htslib/test/realn01.sam deleted file mode 100644 index 1f961d1..0000000 --- a/htslib/test/realn01.sam +++ /dev/null @@ -1,8 +0,0 @@ -@HD VN:1.4 SO:coordinate -@SQ SN:000000F LN:686 -@RG ID:rg SM:sample -@CO The alignment on the first read overhangs the reference by two bases -ST-E00128:308:HHVVLALXX:8:1217:16001:6565 147 000000F 532 60 6M1D117M5D28M = 195 -494 CAGGTATGGTCTGGACAGGAGAGAAACTGTGGATGTCTGTCAACACAACAGAAAAAGTGACTGATTAGTTAGATGTAACTAATTTCAACTATCTAGTCTTCCTCTAAAGACCCCTACTTTAACACAAATTACATCTAGATATTTGTTATTT 7AFAAF<)7<<7<7FA$!! MD:Z:6^C10C106^ACAAT28 PG:Z:MarkDuplicates NM:i:7 AS:i:129 XS:i:20 RG:Z:rg ZQ:Z:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QTieabT@@@@@@@@@@@@@@@@@FFHb`` -ST-E00128:308:HHVVLALXX:8:1217:16001:6566 147 000000F 532 60 6M1D117M5D26M2S = 195 -494 CAGGTATGGTCTGGACAGGAGAGAAACTGTGGATGTCTGTCAACACAACAGAAAAAGTGACTGATTAGTTAGATGTAACTAATTTCAACTATCTAGTCTTCCTCTAAAGACCCCTACTTTAACACAAATTACATCTAGATATTTGTTATTT 7AFAAF<)7<<7<7FA$AA PG:Z:MarkDuplicates RG:Z:rg ZQ:Z:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QTieabT@@@@@@@@@@@@@@@@@FFHb@@ -ST-E00128:308:HHVVLALXX:8:1217:16001:6567 147 000000F 532 60 151I = 195 -494 CAGGTATGGTCTGGACAGGAGAGAAACTGTGGATGTCTGTCAACACAACAGAAAAAGTGACTGATTAGTTAGATGTAACTAATTTCAACTATCTAGTCTTCCTCTAAAGACCCCTACTTTAACACAAATTACATCTAGATATTTGTTATTT 7AFAAF<)7<<7<7FA MD:Z:86 RG:Z:rg AM:i:29 NM:i:0 SM:i:29 MQ:i:29 XT:A:M BQ:Z:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz -ERR156632.12704932 163 17 1 29 36S64M = 195 293 TGGAGAAGGGGACAAGAGGTCCCCAACTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAATGTG BFAFGFEIGFEFHHEIDKJGHHHJIIE=@KKGGKJGIBLLMFKMDIIHJKKHFELLLKFIHMHIHHIHLKJFCHFJIJAID=JHKFGHJIHKKCH:@HD? MD:Z:64 RG:Z:rg AM:i:29 NM:i:0 SM:i:29 MQ:i:29 XT:A:M BQ:Z:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz -ERR156632.9601178 99 17 1 29 62S38M = 279 377 CTATGACAGGGAGGTCATGTGCAGGCTGGAGAAGGGGACAAGAGGTCCCCAACTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGA DEEEIIHHKIJILKHLHIKEKHHMKLKKJGKKKKLKLFIHEKIKL=KLJLKIILHKMH9LJJJJLHLHJJKJJKMLKJD>MJKLEHIGHIH=FFCHF>BE MD:Z:38 RG:Z:rg AM:i:29 NM:i:0 SM:i:29 MQ:i:29 XT:A:M BQ:Z:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz -ERR162872.21706338 99 17 1 29 10S90M = 246 344 CTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAATGTGCTCTGGGGTCTCTGGGGTCTCACCCA BHBFHDBC:CE>A8C>C>7DBA=BEDDB4=9;:@=;@D@@=B@E.3?972<>6@8=>?1$0:95%5%*1=8;0%4<228% X0:i:1 X1:i:0 XC:i:88 MD:Z:88 RG:Z:rg AM:i:37 NM:i:0 SM:i:37 MQ:i:60 XT:A:U BQ:Z:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz -ERR162875.26247502 83 17 2858 60 100M = 2581 -376 ACCCAGGGTGTCTGAAACAGATGTGGAGGTCTCGGGTGAGGCGTGGCTCAGATACAGGGAGTGGCCCACAGCTCGGCCTGTCTTTGAAAGGCCACGTGAC /;,FBHLI?CKH=BJ?FEE==DA MD:Z:4^C6C0A2T1T36G8G36 RG:Z:rg AM:i:29 NM:i:7 SM:i:29 MQ:i:29 XT:A:M BQ:Z:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz -ERR243091.881299 83 17 3491 60 100M = 3174 -416 CTCAAAAAAAAAAAAATCACACCATTTTGGCTTCAGATTGCATATCCTCCTGCAAGGATATATACGCGTGAAATTCAAGTCAATGACAAATCAGAAAAAA C5;=CAAEFDFEEEEBCI;JFIKHGHGHIIKGEKGJIGGIJG=GDIKGFIHIJEIHJFFFFDDDAI>IDJDFGFEIFGHGIFGFJFIDFGEHGGDB@A@? X0:i:1 X1:i:0 MD:Z:96G3 RG:Z:rg AM:i:37 NM:i:1 SM:i:37 MQ:i:60 XT:A:U BQ:Z:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz -ERR013140.23480670 133 17 3771 0 35M73S = 3771 0 TTCTCATCAATCCCTCATCTCTTATAACCATTTCGGTCCTTTCGGCCCTACAGCCACCTTGTTTATACTTGGTAAGACCCACACCACTCGCCAACTTACTCTACTCCC 8+7?5>09:),/%81,$,7<+?)+1+*+),3%5+)#%(4B%$&'%'/*@,)*%%&,%(/0%-&$$*$-,$3*.%/$:%$+.$*%&+.,.%%,%(%7(-.-',1*6%&$ XC:i:35 RG:Z:rg diff --git a/htslib/test/realn02.fa b/htslib/test/realn02.fa deleted file mode 100644 index 7c2ec2a..0000000 --- a/htslib/test/realn02.fa +++ /dev/null @@ -1,71 +0,0 @@ ->17 17:1-4200 -AAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAA -TGTGCTCTGGGGTCTCTGGGGTCTCACCCACGACCAACTCCCTGGGCCTGGCACCAGGGA -GCTTAACAAACATCTGTCCAGCGAATACCTGCATCCCTAGAAGTGAAGCCACCGCCCAAA -GACACGCCCATGTCCAGCTTAACCTGCATCCCTAGAAGTGAAGGCACCGCCCAAAGACAC -GCCCATGTCCAGCTTATTCTGCCCAGTTCCTCTCCAGAAAGGCTGCATGGTTGACACACA -GTGCCTGCGACAAAGCTGAATGCTATCATTTAAAAACTCCTTGCTGGTTTGAGAGGCAGA -AAATGATATCTCATAGTTGCTTTACTTTGCATATTTTAAAATTGTGACTTTCATGGCATA -AATAATACTGGTTTATTACAGAAGCACTAGAAAATGCATGTGGACAAAAGTTGGGATTAG -GAGAGAGAAATGAAGACATATGTCCACACAAAAACCTGTTCATTGCAGCTTTCTACCATC -ACCAAAAATTGCAAACAACCACACGCCCTTCAACTGGGGAACTCATCAACAACAAACTTG -TGGTTTACCCACACAATGGAAGACCACTTAGCAACAAAAAGGACCAAACTCCTGGTACAT -GCAACTGACAGATGAATCTCAAACGCATTCCTCCGTGTGAAAGAAGCCGGACTCACAGGG -CAACACACTATCTGACTGTTTCATGGGAAAGTCTGGAAACGGCAACACCATTGAGACAGA -AAACAGGTGAGTGGTTGCCTGGGGCCAGGGAACTTTCTGGGGTCATATTCTCTGTGTTGA -TTCTGGTGGTGGAAACAAGACTGTCCCAGCCTGGGTGATACAGCGAGACCCCATCTCTAC -CAAAAAATTAAAAATTAGCTGGGCATGGTGGTGCATGCCTGTAGTCCCAGCTATTCACAG -TGCTGAGGTGGGAAGATGCTTGAGCCCAGGAGTTCAAGGCTGCAATGAGCTATGATTGCG -CCACTGCACTTTGGCCTGGACAACAGAGCAAAACCCTGTCTCTAAAAAAAGAAAAGAAAA -GAAAAACTCACTGGATATGAATGATACAGGTTGAGGATCCATTATCTGAAATGCTTGGAC -CAGATGTTTTGAATTTTGGATTTTTTCATATTTTGTAATCTTTGCAGTATATTTACCAGT -TCAGCATCCCTAACTCAAAAATTCAAAAATCTGAAATCCCAAACGCGCCAATAAGCATTC -CCTTTGAGCGTCATGTCGGTGCTTGGAATGTTTGGGGTTTTGGATTTACAGCTTTGGGAC -GCTCAACCTGTACCTCAATAAACCTGATTTTAAAAAAGTTTGGGGGGATTCCCCTAAGCC -CGCCACCCGGAGACAGCGGATTTCCTTAGTTACTTACTATGCTCCTTGGCCATTTCTCTA -GGTATTGGTATATTGTGTCTGCTGTGAACTGTCCTTGGCCTGTTTGGTGACGGGTGAGGA -GCAGGGACAGAAGGGTCCTGCGTGCCCTGCCTTCACAAGCCCCTGGAAGGAAAGTTGTTT -TGGGATCTCTGCACCCTCAGCCTGGACAACTTGTGCCCATCTGGTGACCCCTCACTCAGC -CACCAGACTTCCACGACAGGCTCCAGCCTCGGCACCTTCAGCCATGGACAGTTCCGCCAG -CGTTGCCCTCTGTTCTGCTGTTTTCTCTACCAGAAGTGCCCTTCCCTCCTCACCTGACCA -CTCTGGGGAAATCCCTCAGCACCCTCCCTGAGCATACCCTACTCTGGCACAAGCCCACCC -TGCAAAGCCCCTGAGGCCCGCCCTGTGGCGTCTCTCCCTCCCTTGCTGTCAGGACAGTGG -TCCTGGCCACCGGGGCTCACGGAGCCGCCCTGTGCCGTGTACCTCTGAGCCCTCTGCACA -GTGCCTTCTGCTTGCCTGTGGCTTTGAGAAGAAACCCCTTCTGGTTATACATAAGACAGC -CAGAGAAGGGAGTTGCCCAGGGTGGCACAGCACGTTGCTGCCAGTTACTGCCATTTTCAC -GGGCATGAAATGGAGATAACAACAGGAGCGACCGCACAGGCTGCTGAGCGCGTCACACGC -AGCCATCGCGCAGCTCAGGGATATTACGTGTAACTCGACATGTCAGCGATTGTCACAGGC -ACTGCTACTCCTGGGGTTTTCCATCAAACCCTCAAGAGCTGGGCCTGGGGTCAACTTCCG -GCCTGGGGAAACTGGGGCAAGTATCACCAGAGATGAGCTTTATAAAAATAATGGTGCTAG -CTGGGCATGGTGGCTTGCACCTGTAATCCCAGCACTTTGGGAGGCCGAGCTAGGAGGATC -GTTTGAGTCCAGCAGTTTGAGACCAGCCTGGCCAATACGGCAAAACCCAGTCTCTACAAA -AAATACAAAAAACAACTAGCCAGGCGTGGTGGTGCACACCTGTAGTCCCAGCTACTCAGG -AGGCTGAGGGGGAAGGACTGCTTGAGCCCAGGAGTTTGAGGCTGCTGTGAGCTGTGATCG -CATCACTGCATTCCAGCCCGGTGACAGAGTGAGTCACTGTCTCAAAAAAGAAAGGAAGAA -ATAAAGAAAACAAATAAAAATAATAGTGCAGACAAAAGGCCTTGACCCATCTAGCTTTGG -CCCTCAGCATCAACCGCTAGATACGTCCCTCCCTTTCTTCTGGGGCACAGGTCACACTCT -CTTCCAGGTCTAGGATGCAGCTGAGGGGTGCCCCTCTTACCATCTAATCTGTGCCCTTAT -TTCCTCTGCTTTAGTGAGGAAGAGGCCCCTGGTCCATGAAGGGGCCTTTCAGAGACGGGG -ACCCCTGAGGAGCCCCGAGCAGCAGCCGTCGTGTCTCACCCAGGGTGTCTGAAACAGATG -TGGAGGTCTCGGGTGAGGCGTGGCTCAGATACAGGGAGTGGCCCACAGCTCGGCCTGTCT -TTGAAAGGCCACGTGACCTGGCCCACGGCTGGCAGGTGGGACCCAGCTGCAGGGGTCCAG -CAGCACCCACAGCAGCCACCTGTGGCAGGGAGGAGCTTGTGGTACAGTGGACAGGCCCTG -CCCAGATGGCCCCCCGCCTGCCTGTGGAAGTTGACCAGACCATCTGTCACAGCAGGTAAG -ACTCTGCTTTCTGGGCAACCCAGCAGGTGACCCTGGAATTCCTGTCCATCTGGCAGGTGG -GCATTGAAACTGGTTTAAAAATGTCACACCATAGGCCGGGCACAGTGGCTCACGCCTGTA -ATCCCAGCCCTTTGGGAGGCCAGGGTGGGTGGATCACTTGAGGTCAGGAGTTCAAGACCA -GCCTGGCCAACATGGTGAAACCCCGTCTACTAAAAATACAAAAATTAGCCTGGCGTGGTG -GCGCATGCCTGTAATCCCAGCTACTTGGGAAGCTGAGGGATGAGAACTGCTTGAACCTGG -GAGGCAGACGTTGCAGTGAGCTGAGATCACGCCACTGCACTCCAGCCTGGGCAACAGAGT -AAGACTCTGTCTCAAAAAAAAAAAAATCACACCATTTTGGCTTCAGATTGCATATCCTCC -TGCAAGGATATATACGCGTGAAATTCAAGTCAATGACAAATCAGAAGAAAAAACATATAT -ATACGCAAACCAGTATCCTACTGTGTGTGTCGTTTGTTGTGTTTTCGACAGCTGTCCGTG -TTATAATAATTCCTCTAGTTCAAATTTATTCATTTTTAACTTCATAGTACCACATTCTAC -ACACTGCCCATGTCCCCTCAAGCTTCCCCTGGCTCCTGCAACCACAAATCTACTCTCTGC -CTCTGTGGGTTGACCTATTCTGGACACGTCATAGAAATAGAGTCCTGCAACACGTGGCCG -TCTGTGTCTGGCTTCTCTCGCTTAGCATCTTGTTTCCAAGGTCCTCCCACAGTGTAGCAT -GCACCTGCTACACTCCTTCTTAGGGCTGATATTCCACGCACCTGCTACACTCCTTCTTAT -GGCTGATATTCCACGCACCTGCTACACTCCTTCTTAGGGCTGATATTCCACACACCCGCT -ACACTCCTTCTTAGGGCTGATATTCCACGCACCCGCTACACTCCTTCTTAGGGCTGATAT -TCCACGCACCTGCTACACTCCTTCTTAGGGCTGATATTCCACGCACCTGCTACACTCCTT -CTTAGGGCTGATATTCCACGCACCTGCTACACTCCTTCTTAGGGCTGATATTCCACGCAC diff --git a/htslib/test/realn02.fa.fai b/htslib/test/realn02.fa.fai deleted file mode 100644 index c211266..0000000 --- a/htslib/test/realn02.fa.fai +++ /dev/null @@ -1 +0,0 @@ -17 4200 14 60 61 diff --git a/htslib/test/realn02.sam b/htslib/test/realn02.sam deleted file mode 100644 index 42ef1f8..0000000 --- a/htslib/test/realn02.sam +++ /dev/null @@ -1,12 +0,0 @@ -@HD VN:1.0 SO:coordinate -@SQ SN:17 LN:4200 SP:Human -@RG ID:rg SM:sample -ERR013140.3521432 99 17 1 29 22S86M = 226 313 AGAGGTCCCCAACTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAATGTGCTCTGGGGTCTCTGGGGTCTCA @AEDGBHIIIIIFJGIKHGHIJJJEJKHJKJKGKLLIFHKLLCJJIDEFFHKHEHHJIIIDJEEEJEIKGJIHCGKHFKFE9BBDIAJAHF4?DE@I:DD48(86D=> MD:Z:86 RG:Z:rg AM:i:29 NM:i:0 SM:i:29 MQ:i:29 XT:A:M -ERR156632.12704932 163 17 1 29 36S64M = 195 293 TGGAGAAGGGGACAAGAGGTCCCCAACTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAATGTG BFAFGFEIGFEFHHEIDKJGHHHJIIE=@KKGGKJGIBLLMFKMDIIHJKKHFELLLKFIHMHIHHIHLKJFCHFJIJAID=JHKFGHJIHKKCH:@HD? MD:Z:64 RG:Z:rg AM:i:29 NM:i:0 SM:i:29 MQ:i:29 XT:A:M -ERR156632.9601178 99 17 1 29 62S38M = 279 377 CTATGACAGGGAGGTCATGTGCAGGCTGGAGAAGGGGACAAGAGGTCCCCAACTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGA DEEEIIHHKIJILKHLHIKEKHHMKLKKJGKKKKLKLFIHEKIKL=KLJLKIILHKMH9LJJJJLHLHJJKJJKMLKJD>MJKLEHIGHIH=FFCHF>BE MD:Z:38 RG:Z:rg AM:i:29 NM:i:0 SM:i:29 MQ:i:29 XT:A:M -ERR162872.21706338 99 17 1 29 10S90M = 246 344 CTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAATGTGCTCTGGGGTCTCTGGGGTCTCACCCA BHBFHDBC:CE>A8C>C>7DBA=BEDDB4=9;:@=;@D@@=B@E.3?972<>6@8=>?1$0:95%5%*1=8;0%4<228% X0:i:1 X1:i:0 XC:i:88 MD:Z:88 RG:Z:rg AM:i:37 NM:i:0 SM:i:37 MQ:i:60 XT:A:U -ERR162875.26247502 83 17 2858 60 100M = 2581 -376 ACCCAGGGTGTCTGAAACAGATGTGGAGGTCTCGGGTGAGGCGTGGCTCAGATACAGGGAGTGGCCCACAGCTCGGCCTGTCTTTGAAAGGCCACGTGAC /;,FBHLI?CKH=BJ?FEE==DA MD:Z:4^C6C0A2T1T36G8G36 RG:Z:rg AM:i:29 NM:i:7 SM:i:29 MQ:i:29 XT:A:M -ERR243091.881299 83 17 3491 60 100M = 3174 -416 CTCAAAAAAAAAAAAATCACACCATTTTGGCTTCAGATTGCATATCCTCCTGCAAGGATATATACGCGTGAAATTCAAGTCAATGACAAATCAGAAAAAA C5;=CAAEFDFEEEEBCI;JFIKHGHGHIIKGEKGJIGGIJG=GDIKGFIHIJEIHJFFFFDDDAI>IDJDFGFEIFGHGIFGFJFIDFGEHGGDB@A@? X0:i:1 X1:i:0 MD:Z:96G3 RG:Z:rg AM:i:37 NM:i:1 SM:i:37 MQ:i:60 XT:A:U -ERR013140.23480670 133 17 3771 0 35M73S = 3771 0 TTCTCATCAATCCCTCATCTCTTATAACCATTTCGGTCCTTTCGGCCCTACAGCCACCTTGTTTATACTTGGTAAGACCCACACCACTCGCCAACTTACTCTACTCCC 8+7?5>09:),/%81,$,7<+?)+1+*+),3%5+)#%(4B%$&'%'/*@,)*%%&,%(/0%-&$$*$-,$3*.%/$:%$+.$*%&+.,.%%,%(%7(-.-',1*6%&$ XC:i:35 RG:Z:rg diff --git a/htslib/test/realn02_exp-a.sam b/htslib/test/realn02_exp-a.sam deleted file mode 100644 index 4cc897f..0000000 --- a/htslib/test/realn02_exp-a.sam +++ /dev/null @@ -1,12 +0,0 @@ -@HD VN:1.0 SO:coordinate -@SQ SN:17 LN:4200 SP:Human -@RG ID:rg SM:sample -ERR013140.3521432 99 17 1 29 22S86M = 226 313 AGAGGTCCCCAACTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAATGTGCTCTGGGGTCTCTGGGGTCTCA @AEDGBHIIIIIFJGIKHGHIJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! MD:Z:86 RG:Z:rg AM:i:29 NM:i:0 SM:i:29 MQ:i:29 XT:A:M ZQ:Z:@@@@@@@@@@@@@@@@@@@@@@iidijgijijfjkkhegjkkbiihcdeegjgdggihhhcidddidhjfihgbfjgejedXaach`i`geS^cd_hYccSWGWUc\] -ERR156632.12704932 163 17 1 29 36S64M = 195 293 TGGAGAAGGGGACAAGAGGTCCCCAACTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAATGTG BFAFGFEIGFEFHHEIDKJGHHHJIIE=@KKGGKJG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! MD:Z:64 RG:Z:rg AM:i:29 NM:i:0 SM:i:29 MQ:i:29 XT:A:M ZQ:Z:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@hakklejlchhgijjgedkkkjehglghgghgkjiebgeihi`hc\igjefgihgjjbgY_gc^ -ERR156632.9601178 99 17 1 29 62S38M = 279 377 CTATGACAGGGAGGTCATGTGCAGGCTGGAGAAGGGGACAAGAGGTCCCCAACTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGA DEEEIIHHKIJILKHLHIKEKHHMKLKKJGKKKKLKLFIHEKIKL=KLJLKIILHKMH9LJJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! MD:Z:38 RG:Z:rg AM:i:29 NM:i:0 SM:i:29 MQ:i:29 XT:A:M ZQ:Z:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@iikgkgiijiijlkjic]lijkdghfghg\eebge]ad -ERR162872.21706338 99 17 1 29 10S90M = 246 344 CTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAATGTGCTCTGGGGTCTCTGGGGTCTCACCCA BHBFHBEEIHHHICFJIFKGHIKJHII>DBC:CE>A8C>C>7DBA=BEDDB4=9;:@=;@D@@=B@E.3?972<>6@8=>?1$0:95%5%*1=8;0%4<228% X0:i:1 X1:i:0 XC:i:88 MD:Z:88 RG:Z:rg AM:i:37 NM:i:0 SM:i:37 MQ:i:60 XT:A:U ZQ:Z:EHG@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -ERR162875.26247502 83 17 2858 60 100M = 2581 -376 ACCCAGGGTGTCTGAAACAGATGTGGAGGTCTCGGGTGAGGCGTGGCTCAGATACAGGGAGTGGCCCACAGCTCGGCCTGTCTTTGAAAGGCCACGTGAC X0:i:1 X1:i:0 MD:Z:100 RG:Z:rg AM:i:37 NM:i:0 SM:i:37 MQ:i:60 XT:A:U ZQ:Z:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@C -ERR156632.1508798 83 17 3006 29 1S4M1D95M = 2587 -518 CCCCAAGCAGCAGCCGGGGGCAGGGAGGAGCTTGTGGTACAGTGGACAGGCCCTCCCCAGATGCCCCCCCGCCTGCCTGTGGAAGTTGACCAGACCATCT /;,FBHLI?CKH=BJ?FEE==DA MD:Z:4^C6C0A2T1T36G8G36 RG:Z:rg AM:i:29 NM:i:7 SM:i:29 MQ:i:29 XT:A:M ZQ:Z:@FEIG@@@@@@A@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -ERR243091.881299 83 17 3491 60 100M = 3174 -416 CTCAAAAAAAAAAAAATCACACCATTTTGGCTTCAGATTGCATATCCTCCTGCAAGGATATATACGCGTGAAATTCAAGTCAATGACAAATCAGAAAAAA C5;=CAAEFDFEEEEBCI;JFIKHGHGHIIKGEKGJIGGIJG=GDIKGFIHIJEIHJFFFFDDDAI>IDJDFGFEIFGHGIFGFJFIDFGEH742+!!!! X0:i:1 X1:i:0 MD:Z:96G3 RG:Z:rg AM:i:37 NM:i:1 SM:i:37 MQ:i:60 XT:A:U ZQ:Z:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PSRW_`_^ -ERR013140.23480670 133 17 3771 0 35M73S = 3771 0 TTCTCATCAATCCCTCATCTCTTATAACCATTTCGGTCCTTTCGGCCCTACAGCCACCTTGTTTATACTTGGTAAGACCCACACCACTCGCCAACTTACTCTACTCCC 8+7?5>09:),/%81,$,7<+?)+1+*+),3%5+)#%(4B%$&'%'/*@,)*%%&,%(/0%-&$$*$-,$3*.%/$:%$+.$*%&+.,.%%,%(%7(-.-',1*6%&$ XC:i:35 RG:Z:rg diff --git a/htslib/test/realn02_exp-e.sam b/htslib/test/realn02_exp-e.sam deleted file mode 100644 index 2425019..0000000 --- a/htslib/test/realn02_exp-e.sam +++ /dev/null @@ -1,12 +0,0 @@ -@HD VN:1.0 SO:coordinate -@SQ SN:17 LN:4200 SP:Human -@RG ID:rg SM:sample -ERR013140.3521432 99 17 1 29 22S86M = 226 313 AGAGGTCCCCAACTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAATGTGCTCTGGGGTCTCTGGGGTCTCA @AEDGBHIIIIIFJGIKHGHIJJJEJKHJKJKGKLLIFHKLLCJJIDEFFHKHEHHJIIIDJEEEJEIKGJIHCGKHFKFE9BBDIAJAHF4?DE@I:DD48(86D=> MD:Z:86 RG:Z:rg AM:i:29 NM:i:0 SM:i:29 MQ:i:29 XT:A:M BQ:Z:@@@@@@@@@@@@@@@@@@@@@@iidijgijijfjkkhegjkkbiihcdeegjgdggihhhcidddidhjfihgbfjgejedXaach`i`geS^cd_hYccSWGWUc\] -ERR156632.12704932 163 17 1 29 36S64M = 195 293 TGGAGAAGGGGACAAGAGGTCCCCAACTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAATGTG BFAFGFEIGFEFHHEIDKJGHHHJIIE=@KKGGKJGIBLLMFKMDIIHJKKHFELLLKFIHMHIHHIHLKJFCHFJIJAID=JHKFGHJIHKKCH:@HD? MD:Z:64 RG:Z:rg AM:i:29 NM:i:0 SM:i:29 MQ:i:29 XT:A:M BQ:Z:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@hakklejlchhgijjgedkkkjehglghgghgkjiebgeihi`hc\igjefgihgjjbgY_gc^ -ERR156632.9601178 99 17 1 29 62S38M = 279 377 CTATGACAGGGAGGTCATGTGCAGGCTGGAGAAGGGGACAAGAGGTCCCCAACTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGA DEEEIIHHKIJILKHLHIKEKHHMKLKKJGKKKKLKLFIHEKIKL=KLJLKIILHKMH9LJJJJLHLHJJKJJKMLKJD>MJKLEHIGHIH=FFCHF>BE MD:Z:38 RG:Z:rg AM:i:29 NM:i:0 SM:i:29 MQ:i:29 XT:A:M BQ:Z:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@iikgkgiijiijlkjic]lijkdghfghg\eebge]ad -ERR162872.21706338 99 17 1 29 10S90M = 246 344 CTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAATGTGCTCTGGGGTCTCTGGGGTCTCACCCA BHBFHDBC:CE>A8C>C>7DBA=BEDDB4=9;:@=;@D@@=B@E.3?972<>6@8=>?1$0:95%5%*1=8;0%4<228% X0:i:1 X1:i:0 XC:i:88 MD:Z:88 RG:Z:rg AM:i:37 NM:i:0 SM:i:37 MQ:i:60 XT:A:U BQ:Z:EHG@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -ERR162875.26247502 83 17 2858 60 100M = 2581 -376 ACCCAGGGTGTCTGAAACAGATGTGGAGGTCTCGGGTGAGGCGTGGCTCAGATACAGGGAGTGGCCCACAGCTCGGCCTGTCTTTGAAAGGCCACGTGAC /;,FBHLI?CKH=BJ?FEE==DA MD:Z:4^C6C0A2T1T36G8G36 RG:Z:rg AM:i:29 NM:i:7 SM:i:29 MQ:i:29 XT:A:M BQ:Z:@FEIG@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -ERR243091.881299 83 17 3491 60 100M = 3174 -416 CTCAAAAAAAAAAAAATCACACCATTTTGGCTTCAGATTGCATATCCTCCTGCAAGGATATATACGCGTGAAATTCAAGTCAATGACAAATCAGAAAAAA C5;=CAAEFDFEEEEBCI;JFIKHGHGHIIKGEKGJIGGIJG=GDIKGFIHIJEIHJFFFFDDDAI>IDJDFGFEIFGHGIFGFJFIDFGEHGGDB@A@? X0:i:1 X1:i:0 MD:Z:96G3 RG:Z:rg AM:i:37 NM:i:1 SM:i:37 MQ:i:60 XT:A:U BQ:Z:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PSRW_`_^ -ERR013140.23480670 133 17 3771 0 35M73S = 3771 0 TTCTCATCAATCCCTCATCTCTTATAACCATTTCGGTCCTTTCGGCCCTACAGCCACCTTGTTTATACTTGGTAAGACCCACACCACTCGCCAACTTACTCTACTCCC 8+7?5>09:),/%81,$,7<+?)+1+*+),3%5+)#%(4B%$&'%'/*@,)*%%&,%(/0%-&$$*$-,$3*.%/$:%$+.$*%&+.,.%%,%(%7(-.-',1*6%&$ XC:i:35 RG:Z:rg diff --git a/htslib/test/realn02_exp.sam b/htslib/test/realn02_exp.sam deleted file mode 100644 index 7caca46..0000000 --- a/htslib/test/realn02_exp.sam +++ /dev/null @@ -1,12 +0,0 @@ -@HD VN:1.0 SO:coordinate -@SQ SN:17 LN:4200 SP:Human -@RG ID:rg SM:sample -ERR013140.3521432 99 17 1 29 22S86M = 226 313 AGAGGTCCCCAACTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAATGTGCTCTGGGGTCTCTGGGGTCTCA @AEDGBHIIIIIFJGIKHGHIJJJEJKHJKJKGKLLIFHKLLCJJIDEFFHKHEHHJIIIDJEEEJEIKGJIHCGKHFKFE9BBDIAJAHF4?DE@I:DD48(86D=> MD:Z:86 RG:Z:rg AM:i:29 NM:i:0 SM:i:29 MQ:i:29 XT:A:M BQ:Z:@@@@@@@@@@@@@@@@@@@@@@iidijgijijfjkkhegjkkbiihcdeegjgdggihhhcidddidhjfihgbfjgejedXaach`i`geS^cd_hYccSWGWUc\] -ERR156632.12704932 163 17 1 29 36S64M = 195 293 TGGAGAAGGGGACAAGAGGTCCCCAACTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAATGTG BFAFGFEIGFEFHHEIDKJGHHHJIIE=@KKGGKJGIBLLMFKMDIIHJKKHFELLLKFIHMHIHHIHLKJFCHFJIJAID=JHKFGHJIHKKCH:@HD? MD:Z:64 RG:Z:rg AM:i:29 NM:i:0 SM:i:29 MQ:i:29 XT:A:M BQ:Z:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@hakklejlchhgijjgedkkkjehglghgghgkjiebgeihi`hc\igjefgihgjjbgY_gc^ -ERR156632.9601178 99 17 1 29 62S38M = 279 377 CTATGACAGGGAGGTCATGTGCAGGCTGGAGAAGGGGACAAGAGGTCCCCAACTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGA DEEEIIHHKIJILKHLHIKEKHHMKLKKJGKKKKLKLFIHEKIKL=KLJLKIILHKMH9LJJJJLHLHJJKJJKMLKJD>MJKLEHIGHIH=FFCHF>BE MD:Z:38 RG:Z:rg AM:i:29 NM:i:0 SM:i:29 MQ:i:29 XT:A:M BQ:Z:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@iikgkgiijiijlkjic]lijkdghfghg\eebge]ad -ERR162872.21706338 99 17 1 29 10S90M = 246 344 CTTCTTTGCAAAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAATGTGCTCTGGGGTCTCTGGGGTCTCACCCA BHBFHDBC:CE>A8C>C>7DBA=BEDDB4=9;:@=;@D@@=B@E.3?972<>6@8=>?1$0:95%5%*1=8;0%4<228% X0:i:1 X1:i:0 XC:i:88 MD:Z:88 RG:Z:rg AM:i:37 NM:i:0 SM:i:37 MQ:i:60 XT:A:U BQ:Z:EHG@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -ERR162875.26247502 83 17 2858 60 100M = 2581 -376 ACCCAGGGTGTCTGAAACAGATGTGGAGGTCTCGGGTGAGGCGTGGCTCAGATACAGGGAGTGGCCCACAGCTCGGCCTGTCTTTGAAAGGCCACGTGAC /;,FBHLI?CKH=BJ?FEE==DA MD:Z:4^C6C0A2T1T36G8G36 RG:Z:rg AM:i:29 NM:i:7 SM:i:29 MQ:i:29 XT:A:M BQ:Z:@FEIG@@@@@@A@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -ERR243091.881299 83 17 3491 60 100M = 3174 -416 CTCAAAAAAAAAAAAATCACACCATTTTGGCTTCAGATTGCATATCCTCCTGCAAGGATATATACGCGTGAAATTCAAGTCAATGACAAATCAGAAAAAA C5;=CAAEFDFEEEEBCI;JFIKHGHGHIIKGEKGJIGGIJG=GDIKGFIHIJEIHJFFFFDDDAI>IDJDFGFEIFGHGIFGFJFIDFGEHGGDB@A@? X0:i:1 X1:i:0 MD:Z:96G3 RG:Z:rg AM:i:37 NM:i:1 SM:i:37 MQ:i:60 XT:A:U BQ:Z:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PSRW_`_^ -ERR013140.23480670 133 17 3771 0 35M73S = 3771 0 TTCTCATCAATCCCTCATCTCTTATAACCATTTCGGTCCTTTCGGCCCTACAGCCACCTTGTTTATACTTGGTAAGACCCACACCACTCGCCAACTTACTCTACTCCC 8+7?5>09:),/%81,$,7<+?)+1+*+),3%5+)#%(4B%$&'%'/*@,)*%%&,%(/0%-&$$*$-,$3*.%/$:%$+.$*%&+.,.%%,%(%7(-.-',1*6%&$ XC:i:35 RG:Z:rg diff --git a/htslib/test/sam.c b/htslib/test/sam.c deleted file mode 100644 index dc0681d..0000000 --- a/htslib/test/sam.c +++ /dev/null @@ -1,605 +0,0 @@ -/* test/sam.c -- SAM/BAM/CRAM API test cases. - - Copyright (C) 2014-2017 Genome Research Ltd. - - Author: John Marshall - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include -#include -#include -#include -#include -#include -#include - -// Suppress message for faidx_fetch_nseq(), which we're intentionally testing -#include "htslib/hts_defs.h" -#undef HTS_DEPRECATED -#define HTS_DEPRECATED(message) - -#include "htslib/sam.h" -#include "htslib/faidx.h" -#include "htslib/kstring.h" - -int status; - -static void HTS_FORMAT(HTS_PRINTF_FMT, 1, 2) fail(const char *fmt, ...) -{ - va_list args; - - fprintf(stderr, "Failed: "); - va_start(args, fmt); - vfprintf(stderr, fmt, args); - va_end(args); - fprintf(stderr, "\n"); - - status = EXIT_FAILURE; -} - -uint8_t *check_bam_aux_get(const bam1_t *aln, const char *tag, char type) -{ - uint8_t *p = bam_aux_get(aln, tag); - if (p) { - if (*p == type) return p; - else fail("%s field of type '%c', expected '%c'\n", tag, *p, type); - } - else fail("can't find %s field\n", tag); - - return NULL; -} - -static void check_int_B_array(bam1_t *aln, char *tag, - uint32_t nvals, int64_t *vals) { - uint8_t *p; - if ((p = check_bam_aux_get(aln, tag, 'B')) != NULL) { - uint32_t i; - - if (bam_auxB_len(p) != nvals) - fail("Wrong length reported for %s field, got %u, expected %u\n", - tag, bam_auxB_len(p), nvals); - - for (i = 0; i < nvals; i++) { - if (bam_auxB2i(p, i) != vals[i]) { - fail("Wrong value from bam_auxB2i for %s field index %u, " - "got %"PRId64" expected %"PRId64"\n", - tag, i, bam_auxB2i(p, i), vals[i]); - } - if (bam_auxB2f(p, i) != (double) vals[i]) { - fail("Wrong value from bam_auxB2f for %s field index %u, " - "got %f expected %f\n", - tag, i, bam_auxB2f(p, i), (double) vals[i]); - } - } - } -} - -#define PI 3.141592653589793 -#define E 2.718281828459045 -#define HELLO "Hello, world!" -#define NEW_HELLO "Yo, dude" -#define BEEF "DEADBEEF" - -#define str(x) #x -#define xstr(x) str(x) - -#define NELE(x) (sizeof(x)/sizeof(x[0])) - -static int test_update_int(bam1_t *aln, - const char target_id[2], int64_t target_val, - char expected_type, - const char next_id[2], int64_t next_val, - char next_type) { - uint8_t *p; - - // Try updating target - if (bam_aux_update_int(aln, target_id, target_val) < 0) { - fail("update %.2s tag", target_id); - return -1; - } - - // Check it's there and has the right type and value - p = bam_aux_get(aln, target_id); - if (!p) { - fail("find %.2s tag", target_id); - return -1; - } - if (*p != expected_type || bam_aux2i(p) != target_val) { - fail("%.2s field is %c:%"PRId64"; expected %c:%"PRId64, - target_id, *p, bam_aux2i(p), expected_type, target_val); - return -1; - } - - // If given, check that the next tag hasn't been clobbered by the - // update above. - if (!*next_id) return 0; - p = bam_aux_get(aln, next_id); - if (!p) { - fail("find %.2s tag after updating %.2s", next_id, target_id); - return -1; - } - if (*p != next_type || bam_aux2i(p) != next_val) { - fail("after updating %.2s to %"PRId64":" - " %.2s field is %c:%"PRId64"; expected %c:%"PRId64, - target_id, target_val, - next_id, *p, bam_aux2i(p), next_type, next_val); - return -1; - } - return 0; -} - -#define CHECK_ARRAY_VALS(T, GET_VAL, FMT1, FMT2) do { \ - T * vals = (T *) data; \ - uint32_t i; \ - for (i = 0; i < nitems; i++) { \ - if (GET_VAL(p, i) != vals[i]) { \ - fail("Wrong value from %s for %.2s field index %u, " \ - "got %" FMT1 " expected %" FMT2, \ - xstr(GET_VAL), target_id, i, GET_VAL(p, i), vals[i]); \ - return -1; \ - } \ - } \ -} while (0) - -static int test_update_array(bam1_t *aln, const char target_id[2], - uint8_t type, uint32_t nitems, void *data, - const char next_id[2], int64_t next_val, - char next_type) -{ - uint8_t *p; - - // Try updating target - if (bam_aux_update_array(aln, target_id, type, nitems, data) < 0) { - fail("update %2.s tag", target_id); - return -1; - } - - // Check values - p = bam_aux_get(aln, target_id); - if (!p) { - fail("find %.2s tag", target_id); - return -1; - } - switch (type) { - case 'c': - CHECK_ARRAY_VALS(int8_t, bam_auxB2i, PRId64, PRId8); break; - case 'C': - CHECK_ARRAY_VALS(uint8_t, bam_auxB2i, PRId64, PRIu8); break; - case 's': - CHECK_ARRAY_VALS(int16_t, bam_auxB2i, PRId64, PRId16); break; - case 'S': - CHECK_ARRAY_VALS(uint16_t, bam_auxB2i, PRId64, PRIu16); break; - case 'i': - CHECK_ARRAY_VALS(int32_t, bam_auxB2i, PRId64, PRId32); break; - case 'I': - CHECK_ARRAY_VALS(uint32_t, bam_auxB2i, PRId64, PRIu32); break; - case 'f': - CHECK_ARRAY_VALS(float, bam_auxB2f, "e", "e"); break; - } - - // If given, check that the next tag hasn't been clobbered by the - // update above. - if (!*next_id) return 0; - p = bam_aux_get(aln, next_id); - if (!p) { - fail("find %.2s tag after updating %.2s", next_id, target_id); - return -1; - } - if (*p != next_type || bam_aux2i(p) != next_val) { - fail("after updating %.2s:" - " %.2s field is %c:%"PRId64"; expected %c:%"PRId64, - target_id, next_id, *p, bam_aux2i(p), next_type, next_val); - return -1; - } - - return 0; -} - -static int aux_fields1(void) -{ - static const char sam[] = "data:," -"@SQ\tSN:one\tLN:1000\n" -"@SQ\tSN:two\tLN:500\n" -"r1\t0\tone\t500\t20\t8M\t*\t0\t0\tATGCATGC\tqqqqqqqq\tXA:A:k\tXi:i:37\tXf:f:" xstr(PI) "\tXd:d:" xstr(E) "\tXZ:Z:" HELLO "\tXH:H:" BEEF "\tXB:B:c,-2,0,+2\tB0:B:i,-2147483648,-1,0,1,2147483647\tB1:B:I,0,1,2147483648,4294967295\tB2:B:s,-32768,-1,0,1,32767\tB3:B:S,0,1,32768,65535\tB4:B:c,-128,-1,0,1,127\tB5:B:C,0,1,127,255\tBf:B:f,-3.14159,2.71828\tZZ:i:1000000\tF2:d:2.46801\tY1:i:-2147483648\tY2:i:-2147483647\tY3:i:-1\tY4:i:0\tY5:i:1\tY6:i:2147483647\tY7:i:2147483648\tY8:i:4294967295\n"; - - // Canonical form of the alignment record above, as output by sam_format1() - static const char r1[] = "r1\t0\tone\t500\t20\t8M\t*\t0\t0\tATGCATGC\tqqqqqqqq\tXi:i:37\tXf:f:3.14159\tXd:d:2.71828\tXZ:Z:" NEW_HELLO "\tXH:H:" BEEF "\tXB:B:c,-2,0,2\tB0:B:i,-2147483648,-1,0,1,2147483647\tB1:B:I,0,1,2147483648,4294967295\tB2:B:s,-32768,-1,0,1,32767\tB3:B:S,0,1,32768,65535\tB4:B:c,-128,-1,0,1,127\tB5:B:C,0,1,127,255\tBf:B:f,-3.14159,2.71828\tZZ:i:1000000\tF2:f:9.8765\tY1:i:-2147483648\tY2:i:-2147483647\tY3:i:-1\tY4:i:0\tY5:i:1\tY6:i:2147483647\tY7:i:2147483648\tY8:i:4294967295\tN0:i:-1234\tN1:i:1234\tN2:i:-2\tN3:i:3\tF1:f:4.5678\tN4:B:S,65535,32768,1,0\tN5:i:4242"; - - samFile *in = sam_open(sam, "r"); - bam_hdr_t *header = sam_hdr_read(in); - bam1_t *aln = bam_init1(); - uint8_t *p; - kstring_t ks = { 0, 0, NULL }; - int64_t b0vals[5] = { -2147483648LL,-1,0,1,2147483647LL }; // i - int64_t b1vals[4] = { 0,1,2147483648LL,4294967295LL }; // I - int64_t b2vals[5] = { -32768,-1,0,1,32767 }; // s - int64_t b3vals[4] = { 0,1,32768,65535 }; // S - int64_t b4vals[5] = { -128,-1,0,1,127 }; // c - int64_t b5vals[4] = { 0,1,127,255 }; // C - // NB: Floats not doubles below! - // See https://randomascii.wordpress.com/2012/06/26/doubles-are-not-floats-so-dont-compare-them/ - float bfvals[2] = { -3.14159f, 2.71828f }; - - int8_t n4v1[] = { -128, -64, -32, -16, -8, -4, -2, -1, - 0, 1, 2, 4, 8, 16, 32, 64, 127 }; - uint32_t n4v2[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1234, 5678, 1U << 31, 0 }; - int16_t n4v3[] = { -32768, -1, 0, 1, 32767 }; - float n4v4[] = { 0, 1, 2, 10, 20, 30, 1.5, -2.5 }; - uint8_t n4v5[] = { 0, 255 }; - int32_t n4v6[] = { -2147483647 - 1, 10, -1, 0, 1, 2147483647 }; - uint16_t n4v7[] = { 65535, 32768, 1, 0 }; - - int32_t ival = -1234; - uint32_t uval = 1234; - float f1 = 4.5678; - float f2 = 9.8765; - - size_t nvals, i; - - if (sam_read1(in, header, aln) >= 0) { - if ((p = check_bam_aux_get(aln, "XA", 'A')) && bam_aux2A(p) != 'k') - fail("XA field is '%c', expected 'k'", bam_aux2A(p)); - - bam_aux_del(aln,p); - if (bam_aux_get(aln,"XA")) - fail("XA field was not deleted"); - - if ((p = check_bam_aux_get(aln, "Xi", 'C')) && bam_aux2i(p) != 37) - fail("Xi field is %"PRId64", expected 37", bam_aux2i(p)); - - if ((p = check_bam_aux_get(aln, "Xf", 'f')) && fabs(bam_aux2f(p) - PI) > 1E-6) - fail("Xf field is %.12f, expected pi", bam_aux2f(p)); - - if ((p = check_bam_aux_get(aln, "Xd", 'd')) && fabs(bam_aux2f(p) - E) > 1E-6) - fail("Xf field is %.12f, expected e", bam_aux2f(p)); - - if ((p = check_bam_aux_get(aln, "XZ", 'Z')) && strcmp(bam_aux2Z(p), HELLO) != 0) - fail("XZ field is \"%s\", expected \"%s\"", bam_aux2Z(p), HELLO); - - bam_aux_update_str(aln,"XZ",strlen(NEW_HELLO)+1,NEW_HELLO); - if ((p = check_bam_aux_get(aln, "XZ", 'Z')) && strcmp(bam_aux2Z(p), NEW_HELLO) != 0) - fail("XZ field is \"%s\", expected \"%s\"", bam_aux2Z(p), NEW_HELLO); - - - if ((p = check_bam_aux_get(aln, "XH", 'H')) && strcmp(bam_aux2Z(p), BEEF) != 0) - fail("XH field is \"%s\", expected \"%s\"", bam_aux2Z(p), BEEF); - - if ((p = check_bam_aux_get(aln, "XB", 'B')) - && ! (memcmp(p, "Bc", 2) == 0 - && memcmp(p + 2, "\x03\x00\x00\x00\xfe\x00\x02", 7) == 0)) - fail("XB field is %c,..., expected c,-2,0,+2", p[1]); - - check_int_B_array(aln, "B0", NELE(b0vals), b0vals); - check_int_B_array(aln, "B1", NELE(b1vals), b1vals); - check_int_B_array(aln, "B2", NELE(b2vals), b2vals); - check_int_B_array(aln, "B3", NELE(b3vals), b3vals); - check_int_B_array(aln, "B4", NELE(b4vals), b4vals); - check_int_B_array(aln, "B5", NELE(b5vals), b5vals); - - nvals = NELE(bfvals); - if ((p = check_bam_aux_get(aln, "Bf", 'B')) != NULL) { - if (bam_auxB_len(p) != nvals) - fail("Wrong length reported for Bf field, got %d, expected %zd\n", - bam_auxB_len(p), nvals); - - for (i = 0; i < nvals; i++) { - if (bam_auxB2f(p, i) != bfvals[i]) { - fail("Wrong value from bam_auxB2f for Bf field index %zd, " - "got %f expected %f\n", - i, bam_auxB2f(p, i), bfvals[i]); - } - } - } - - if ((p = check_bam_aux_get(aln, "ZZ", 'I')) && bam_aux2i(p) != 1000000) - fail("ZZ field is %"PRId64", expected 1000000", bam_aux2i(p)); - - if ((p = bam_aux_get(aln, "Y1")) && bam_aux2i(p) != -2147483647-1) - fail("Y1 field is %"PRId64", expected -2^31", bam_aux2i(p)); - - if ((p = bam_aux_get(aln, "Y2")) && bam_aux2i(p) != -2147483647) - fail("Y2 field is %"PRId64", expected -2^31+1", bam_aux2i(p)); - - if ((p = bam_aux_get(aln, "Y3")) && bam_aux2i(p) != -1) - fail("Y3 field is %"PRId64", expected -1", bam_aux2i(p)); - - if ((p = bam_aux_get(aln, "Y4")) && bam_aux2i(p) != 0) - fail("Y4 field is %"PRId64", expected 0", bam_aux2i(p)); - - if ((p = bam_aux_get(aln, "Y5")) && bam_aux2i(p) != 1) - fail("Y5 field is %"PRId64", expected 1", bam_aux2i(p)); - - if ((p = bam_aux_get(aln, "Y6")) && bam_aux2i(p) != 2147483647) - fail("Y6 field is %"PRId64", expected 2^31-1", bam_aux2i(p)); - - if ((p = bam_aux_get(aln, "Y7")) && bam_aux2i(p) != 2147483648LL) - fail("Y7 field is %"PRId64", expected 2^31", bam_aux2i(p)); - - if ((p = bam_aux_get(aln, "Y8")) && bam_aux2i(p) != 4294967295LL) - fail("Y8 field is %"PRId64", expected 2^32-1", bam_aux2i(p)); - - // Try appending some new tags - if (bam_aux_append(aln, "N0", 'i', sizeof(ival), (uint8_t *) &ival) != 0) - fail("Failed to append N0:i tag"); - - if ((p = bam_aux_get(aln, "N0")) && bam_aux2i(p) != ival) - fail("N0 field is %"PRId64", expected %d", bam_aux2i(p), ival); - - if (bam_aux_append(aln, "N1", 'I', sizeof(uval), (uint8_t *) &uval) != 0) - fail("failed to append N1:I tag"); - - if ((p = bam_aux_get(aln, "N1")) && bam_aux2i(p) != uval) - fail("N1 field is %"PRId64", expected %u", bam_aux2i(p), uval); - - // Append tags with bam_aux_update_int() - if (bam_aux_update_int(aln, "N2", -2) < 0) - fail("failed to append N2:c tag"); - - if (bam_aux_update_int(aln, "N3", 3) < 0) - fail("failed to append N3:C tag"); - - p = bam_aux_get(aln, "N2"); - if (!p) - fail("failed to retrieve N2 tag"); - else if (*p != 'c' || bam_aux2i(p) != -2) - fail("N2 field is %c:%"PRId64", expected c:-2", *p, bam_aux2i(p)); - - p = bam_aux_get(aln, "N3"); - if (!p) - fail("failed to retrieve N3 tag"); - else if (*p != 'C' || bam_aux2i(p) != 3) - fail("N3 field is %c:%"PRId64", expected C:3", *p, bam_aux2i(p)); - - // Try changing values with bam_aux_update_int() - i = test_update_int(aln, "N2", 2, 'C', "N3", 3, 'C'); - if (i == 0) test_update_int(aln, "N2", 1234, 'S', "N3", 3, 'C'); - if (i == 0) test_update_int(aln, "N2", -1, 's', "N3", 3, 'C'); - if (i == 0) test_update_int(aln, "N2", 4294967295U, 'I', "N3", 3, 'C'); - if (i == 0) test_update_int(aln, "N2", -2, 'i', "N3", 3, 'C'); - - // Append a value with bam_aux_update_float() - if (bam_aux_update_float(aln, "F1", f1) < 0) - fail("append F1:f tag"); - - p = bam_aux_get(aln, "F1"); - if (!p) - fail("retrieve F1 tag"); - else if (*p != 'f' || bam_aux2f(p) != f1) - fail("F1 field is %c:%e, expected f:%e", *p, bam_aux2f(p), f1); - - // Change a double tag to a float - if (bam_aux_update_float(aln, "F2", f2) < 0) - fail("update F2 tag"); - - p = bam_aux_get(aln, "F2"); - if (!p) - fail("retrieve F2 tag"); - else if (*p != 'f' || bam_aux2f(p) != f2) - fail("F2 field is %c:%e, expected f:%e", *p, bam_aux2f(p), f2); - - // Check the next one is intact too - p = bam_aux_get(aln, "Y1"); - if (!p) - fail("retrieve Y1 tag"); - else if (*p != 'i' && bam_aux2i(p) != -2147483647-1) - fail("Y1 field is %"PRId64", expected -2^31", bam_aux2i(p)); - - // bam_aux_update_array tests - // append a new array - i = test_update_array(aln, "N4", 'c', NELE(n4v1), n4v1, "\0\0", 0, 0); - - // Add a sentinal to check resizes work - if (i == 0) i = test_update_int(aln, "N5", 4242, 'S', "\0\0", 0, 0); - - // alter the array tag a few times - if (i == 0) - i = test_update_array(aln, "N4", 'I', NELE(n4v2), n4v2, - "N5", 4242, 'S'); - if (i == 0) - i = test_update_array(aln, "N4", 's', NELE(n4v3), n4v3, - "N5", 4242, 'S'); - if (i == 0) - i = test_update_array(aln, "N4", 'f', NELE(n4v4), n4v4, - "N5", 4242, 'S'); - if (i == 0) - i = test_update_array(aln, "N4", 'c', NELE(n4v5), n4v5, - "N5", 4242, 'S'); - if (i == 0) - i = test_update_array(aln, "N4", 'i', NELE(n4v6), n4v6, - "N5", 4242, 'S'); - if (i == 0) - i = test_update_array(aln, "N4", 'S', NELE(n4v7), n4v7, - "N5", 4242, 'S'); - - if (sam_format1(header, aln, &ks) < 0) - fail("can't format record"); - - if (strcmp(ks.s, r1) != 0) - fail("record formatted incorrectly: \"%s\"", ks.s); - - free(ks.s); - } - else fail("can't read record"); - - bam_destroy1(aln); - bam_hdr_destroy(header); - sam_close(in); - - return 1; -} - -static void iterators1(void) -{ - hts_itr_destroy(sam_itr_queryi(NULL, HTS_IDX_REST, 0, 0)); - hts_itr_destroy(sam_itr_queryi(NULL, HTS_IDX_NONE, 0, 0)); -} - -static void copy_check_alignment(const char *infname, const char *informat, - const char *outfname, const char *outmode, const char *outref) -{ - samFile *in = sam_open(infname, "r"); - samFile *out = sam_open(outfname, outmode); - bam1_t *aln = bam_init1(); - bam_hdr_t *header = NULL; - int res; - - if (!in) { - fail("couldn't open %s", infname); - goto err; - } - if (!out) { - fail("couldn't open %s with mode %s", outfname, outmode); - goto err; - } - if (!aln) { - fail("bam_init1() failed"); - goto err; - } - - if (outref) { - if (hts_set_opt(out, CRAM_OPT_REFERENCE, outref) < 0) { - fail("setting reference %s for %s", outref, outfname); - goto err; - } - } - - header = sam_hdr_read(in); - if (!header) { - fail("reading header from %s", infname); - goto err; - } - if (sam_hdr_write(out, header) < 0) fail("writing headers to %s", outfname); - - while ((res = sam_read1(in, header, aln)) >= 0) { - int mod4 = ((intptr_t) bam_get_cigar(aln)) % 4; - if (mod4 != 0) - fail("%s CIGAR not 4-byte aligned; offset is 4k+%d for \"%s\"", - informat, mod4, bam_get_qname(aln)); - - if (sam_write1(out, header, aln) < 0) fail("writing to %s", outfname); - } - if (res < -1) { - fail("failed to read alignment from %s", infname); - } - - err: - bam_destroy1(aln); - bam_hdr_destroy(header); - if (in) sam_close(in); - if (out) sam_close(out); -} - -static void samrecord_layout(void) -{ - static const char qnames[] = "data:," -"@SQ\tSN:CHROMOSOME_II\tLN:5000\n" - "a\t0\tCHROMOSOME_II\t100\t10\t4M\t*\t0\t0\tATGC\tqqqq\n" - "bc\t0\tCHROMOSOME_II\t200\t10\t4M\t*\t0\t0\tATGC\tqqqq\n" - "def\t0\tCHROMOSOME_II\t300\t10\t4M\t*\t0\t0\tATGC\tqqqq\n" - "ghij\t0\tCHROMOSOME_II\t400\t10\t4M\t*\t0\t0\tATGC\tqqqq\n" -"klmno\t0\tCHROMOSOME_II\t500\t10\t4M\t*\t0\t0\tATGC\tqqqq\n"; - - size_t bam1_t_size, bam1_t_size2; - - bam1_t_size = 36 + sizeof (int) + 4 + sizeof (char *); -#ifndef BAM_NO_ID - bam1_t_size += 8; -#endif - bam1_t_size2 = bam1_t_size + 4; // Account for padding on some platforms - - if (sizeof (bam1_core_t) != 36) - fail("sizeof bam1_core_t is %zu, expected 36", sizeof (bam1_core_t)); - - if (sizeof (bam1_t) != bam1_t_size && sizeof (bam1_t) != bam1_t_size2) - fail("sizeof bam1_t is %zu, expected either %zu or %zu", - sizeof(bam1_t), bam1_t_size, bam1_t_size2); - - copy_check_alignment(qnames, "SAM", - "test/sam_alignment.tmp.bam", "wb", NULL); - copy_check_alignment("test/sam_alignment.tmp.bam", "BAM", - "test/sam_alignment.tmp.cram", "wc", "test/ce.fa"); - copy_check_alignment("test/sam_alignment.tmp.cram", "CRAM", - "test/sam_alignment.tmp.sam_", "w", NULL); -} - -static void faidx1(const char *filename) -{ - int n, n_exp = 0, n_fq_exp = 0; - char tmpfilename[FILENAME_MAX], line[500]; - FILE *fin, *fout; - faidx_t *fai; - - fin = fopen(filename, "rb"); - if (fin == NULL) fail("can't open %s\n", filename); - sprintf(tmpfilename, "%s.tmp", filename); - fout = fopen(tmpfilename, "wb"); - if (fout == NULL) fail("can't create temporary %s\n", tmpfilename); - while (fgets(line, sizeof line, fin)) { - if (line[0] == '>') n_exp++; - if (line[0] == '+' && line[1] == '\n') n_fq_exp++; - fputs(line, fout); - } - fclose(fin); - fclose(fout); - - if (n_exp == 0 && n_fq_exp != 0) { - // probably a fastq file - n_exp = n_fq_exp; - } - - if (fai_build(tmpfilename) < 0) fail("can't index %s", tmpfilename); - fai = fai_load(tmpfilename); - if (fai == NULL) { fail("can't load faidx file %s", tmpfilename); return; } - - n = faidx_fetch_nseq(fai); - if (n != n_exp) - fail("%s: faidx_fetch_nseq returned %d, expected %d", filename, n, n_exp); - - n = faidx_nseq(fai); - if (n != n_exp) - fail("%s: faidx_nseq returned %d, expected %d", filename, n, n_exp); - - fai_destroy(fai); -} - -static void check_enum1(void) -{ - // bgzf_compression() returns int, but enjoys this correspondence - if (no_compression != 0) fail("no_compression is %d", no_compression); - if (gzip != 1) fail("gzip is %d", gzip); - if (bgzf != 2) fail("bgzf is %d", bgzf); -} - -int main(int argc, char **argv) -{ - int i; - - status = EXIT_SUCCESS; - - aux_fields1(); - iterators1(); - samrecord_layout(); - check_enum1(); - for (i = 1; i < argc; i++) faidx1(argv[i]); - - return status; -} diff --git a/htslib/test/tabix/bed_file.Y.100200.out b/htslib/test/tabix/bed_file.Y.100200.out deleted file mode 100644 index 623b6eb..0000000 --- a/htslib/test/tabix/bed_file.Y.100200.out +++ /dev/null @@ -1 +0,0 @@ -Y 100000 100900 Y1 600 + 100000 100900 255,0,0 diff --git a/htslib/test/tabix/bed_file.bed b/htslib/test/tabix/bed_file.bed deleted file mode 100644 index 185ebf5..0000000 --- a/htslib/test/tabix/bed_file.bed +++ /dev/null @@ -1,39 +0,0 @@ -# The MIT License -# -# Copyright (c) 2017 Genome Research Ltd. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# -# Bed format information: https://genome.ucsc.edu/FAQ/FAQformat.html -# -X 1000 1100 X1 500 + 1000 1100 255,0,0 -X 1200 1300 X2 500 + 1200 1300 255,0,0 -X 1400 1500 X3 500 + 1400 1500 255,0,0 -X 1600 1700 X4 500 + 1600 1700 255,0,0 -X 1800 1900 X5 500 + 1800 1900 255,0,0 -Y 100000 100900 Y1 600 + 100000 100900 255,0,0 -Y 100200 100700 Y2 600 + 100200 100700 255,0,0 -Y 100400 100500 Y3 600 + 100400 100500 255,0,0 -Y 100600 100700 Y4 600 + 100600 100700 255,0,0 -Y 100800 100900 Y5 600 + 100800 100900 255,0,0 -Z 100000 100001 Z1 600 + 100000 100001 255,0,0 -Z 100002 100003 Z2 600 + 100002 100003 255,0,0 -Z 100004 100005 Z3 600 + 100004 100005 255,0,0 -Z 100006 100007 Z4 600 + 100006 100007 255,0,0 -Z 100008 100009 Z5 600 + 100008 100009 255,0,0 diff --git a/htslib/test/tabix/gff_file.X.2934832.2935190.out b/htslib/test/tabix/gff_file.X.2934832.2935190.out deleted file mode 100644 index c22931b..0000000 --- a/htslib/test/tabix/gff_file.X.2934832.2935190.out +++ /dev/null @@ -1,4 +0,0 @@ -X Vega exon 2934816 2935190 . - . Name=OTTHUME00001604789;Parent=OTTHUMT00000055643 -X Vega gene 2934816 2964270 . - . ID=OTTHUMG00000137358;Name=OTTHUMG00000137358;biotype=protein_coding -X Vega transcript 2934816 2964270 . - . ID=OTTHUMT00000055643;Name=OTTHUMT00000055643;Parent=OTTHUMG00000137358;biotype=protein_coding -X Vega CDS 2934832 2935190 . - . Name=OTTHUMP00000022851;Parent=OTTHUMT00000055643 diff --git a/htslib/test/tabix/gff_file.gff b/htslib/test/tabix/gff_file.gff deleted file mode 100644 index eb86185..0000000 --- a/htslib/test/tabix/gff_file.gff +++ /dev/null @@ -1,70 +0,0 @@ -##gff-version 3 -##sequence-region X 1 156040895 -# arylsulfatase E transcript ENST00000540563, Vega annotations downloaded -# from EnsEMBL and sorted into ascending chromosome order. -# -# GFF3 specification: -# https://github.com/The-Sequence-Ontology/Specifications/blob/master/gff3.md -# -X Vega exon 2934816 2935190 . - . Name=OTTHUME00001604789;Parent=OTTHUMT00000055643 -X Vega gene 2934816 2964270 . - . ID=OTTHUMG00000137358;Name=OTTHUMG00000137358;biotype=protein_coding -X Vega transcript 2934816 2964270 . - . ID=OTTHUMT00000055643;Name=OTTHUMT00000055643;Parent=OTTHUMG00000137358;biotype=protein_coding -X Vega CDS 2934832 2935190 . - . Name=OTTHUMP00000022851;Parent=OTTHUMT00000055643 -X Vega intron 2935191 2936741 . - . Name=intron00049;Parent=OTTHUMT00000055643 -X Vega CDS 2936742 2936863 . - . Name=OTTHUMP00000022851;Parent=OTTHUMT00000055643 -X Vega exon 2936742 2936863 . - 1 Name=OTTHUME00001604793;Parent=OTTHUMT00000055643 -X Vega intron 2936864 2938094 . - . Name=intron00048;Parent=OTTHUMT00000055643 -X Vega CDS 2938095 2938257 . - . Name=OTTHUMP00000022851;Parent=OTTHUMT00000055643 -X Vega exon 2938095 2938257 . - 2 Name=OTTHUME00001604790;Parent=OTTHUMT00000055643 -X Vega intron 2938258 2943064 . - . Name=intron00047;Parent=OTTHUMT00000055643 -X Vega CDS 2943065 2943199 . - . Name=OTTHUMP00000022851;Parent=OTTHUMT00000055643 -X Vega exon 2943065 2943199 . - 1 Name=OTTHUME00001604796;Parent=OTTHUMT00000055643 -X Vega intron 2943200 2945997 . - . Name=intron00046;Parent=OTTHUMT00000055643 -X Vega CDS 2945998 2946134 . - . Name=OTTHUMP00000022851;Parent=OTTHUMT00000055643 -X Vega exon 2945998 2946134 . - 1 Name=OTTHUME00001604791;Parent=OTTHUMT00000055643 -X Vega intron 2946135 2949303 . - . Name=intron00045;Parent=OTTHUMT00000055643 -X Vega CDS 2949304 2949727 . - . Name=OTTHUMP00000022851;Parent=OTTHUMT00000055643 -X Vega exon 2949304 2949727 . - 2 Name=OTTHUME00001604792;Parent=OTTHUMT00000055643 -X Vega CDS 2949623 2949727 . - . Name=OTTHUMP00000022852;Parent=OTTHUMT00000055644 -X Vega exon 2949623 2949727 . - 1 Name=OTTHUME00002367917;Parent=OTTHUMT00000055644 -X Vega transcript 2949623 2964264 . - . ID=OTTHUMT00000055644;Name=OTTHUMT00000055644;Parent=OTTHUMG00000137358;biotype=protein_coding -X Vega intron 2949728 2953142 . - . Name=intron00044;Parent=OTTHUMT00000055643 -X Vega intron 2949728 2953142 . - . Name=intron00054;Parent=OTTHUMT00000055644 -X Vega exon 2952831 2952992 . - . Name=OTTHUME00000241561;Parent=OTTHUMT00000055642 -X Vega transcript 2952831 2953228 . - . ID=OTTHUMT00000055642;Name=OTTHUMT00000055642;Parent=OTTHUMG00000137358;biotype=processed_transcript -X Vega intron 2952993 2953142 . - . Name=intron00055;Parent=OTTHUMT00000055642 -X Vega CDS 2953143 2953265 . - . Name=OTTHUMP00000022851;Parent=OTTHUMT00000055643 -X Vega CDS 2953143 2953265 . - . Name=OTTHUMP00000022852;Parent=OTTHUMT00000055644 -X Vega exon 2953143 2953228 . - . Name=OTTHUME00000241571;Parent=OTTHUMT00000055642 -X Vega exon 2953143 2953265 . - 1 Name=OTTHUME00001604788;Parent=OTTHUMT00000055643 -X Vega exon 2953143 2953265 . - 1 Name=OTTHUME00001604788;Parent=OTTHUMT00000055644 -X Vega intron 2953266 2955415 . - . Name=intron00043;Parent=OTTHUMT00000055643 -X Vega intron 2953266 2955415 . - . Name=intron00053;Parent=OTTHUMT00000055644 -X Vega CDS 2955416 2955537 . - . Name=OTTHUMP00000022851;Parent=OTTHUMT00000055643 -X Vega CDS 2955416 2955537 . - . Name=OTTHUMP00000022852;Parent=OTTHUMT00000055644 -X Vega exon 2955416 2955537 . - 1 Name=OTTHUME00001604794;Parent=OTTHUMT00000055643 -X Vega exon 2955416 2955537 . - 1 Name=OTTHUME00001604794;Parent=OTTHUMT00000055644 -X Vega intron 2955538 2958273 . - . Name=intron00042;Parent=OTTHUMT00000055643 -X Vega intron 2955538 2958273 . - . Name=intron00052;Parent=OTTHUMT00000055644 -X Vega CDS 2958274 2958435 . - . Name=OTTHUMP00000022851;Parent=OTTHUMT00000055643 -X Vega CDS 2958274 2958435 . - . Name=OTTHUMP00000022852;Parent=OTTHUMT00000055644 -X Vega exon 2958274 2958435 . - 2 Name=OTTHUME00001604795;Parent=OTTHUMT00000055643 -X Vega exon 2958274 2958435 . - 2 Name=OTTHUME00001604795;Parent=OTTHUMT00000055644 -X Vega exon 2958411 2958435 . - . Name=OTTHUME00000241567;Parent=OTTHUMT00000055641 -X Vega transcript 2958411 2964264 . - . ID=OTTHUMT00000055641;Name=OTTHUMT00000055641;Parent=OTTHUMG00000137358;biotype=processed_transcript -X Vega intron 2958436 2959602 . - . Name=intron00058;Parent=OTTHUMT00000055641 -X Vega intron 2958436 2960377 . - . Name=intron00041;Parent=OTTHUMT00000055643 -X Vega intron 2958436 2960377 . - . Name=intron00051;Parent=OTTHUMT00000055644 -X Vega exon 2959603 2959888 . - . Name=OTTHUME00000241555;Parent=OTTHUMT00000055641 -X Vega intron 2959889 2960377 . - . Name=intron00057;Parent=OTTHUMT00000055641 -X Vega CDS 2960378 2960400 . - . Name=OTTHUMP00000022851;Parent=OTTHUMT00000055643 -X Vega CDS 2960378 2960400 . - . Name=OTTHUMP00000022852;Parent=OTTHUMT00000055644 -X Vega exon 2960378 2960420 . - 2 Name=OTTHUME00001604787;Parent=OTTHUMT00000055643 -X Vega exon 2960378 2960420 . - . Name=OTTHUME00000241553;Parent=OTTHUMT00000055641 -X Vega exon 2960378 2960468 . - 2 Name=OTTHUME00000241569;Parent=OTTHUMT00000055644 -X Vega intron 2960421 2964223 . - . Name=intron00040;Parent=OTTHUMT00000055643 -X Vega intron 2960421 2964223 . - . Name=intron00056;Parent=OTTHUMT00000055641 -X Vega intron 2960469 2964223 . - . Name=intron00050;Parent=OTTHUMT00000055644 -X Vega exon 2964224 2964264 . - . Name=OTTHUME00000241556;Parent=OTTHUMT00000055641 -X Vega exon 2964224 2964264 . - . Name=OTTHUME00000241556;Parent=OTTHUMT00000055644 -X Vega exon 2964224 2964270 . - . Name=OTTHUME00001604786;Parent=OTTHUMT00000055643 diff --git a/htslib/test/tabix/large_chr.20.1.2147483647.out b/htslib/test/tabix/large_chr.20.1.2147483647.out deleted file mode 100644 index 637e62c..0000000 --- a/htslib/test/tabix/large_chr.20.1.2147483647.out +++ /dev/null @@ -1,9 +0,0 @@ -chr20 76962 . T C 999 PASS . -chr20 126310 . ACC A 999 PASS . -chr20 138125 . G T 999 PASS . -chr20 138148 . C T 999 PASS . -chr20 271225 . T TTTA,TA 999 PASS . -chr20 304568 . C T 999 PASS . -chr20 620255100 . AG T 999 PASS . -chr20 630255200 . G C 999 PASS . -chr20 2147483647 . A T 999 PASS . diff --git a/htslib/test/tabix/large_chr.vcf b/htslib/test/tabix/large_chr.vcf deleted file mode 100644 index f8a3661..0000000 --- a/htslib/test/tabix/large_chr.vcf +++ /dev/null @@ -1,18 +0,0 @@ -##fileformat=VCFv4.2 -##reference=file:///seq/references/long_chrom.fasta -##FILTER= -##contig= -##contig= -#CHROM POS ID REF ALT QUAL FILTER INFO -chr11 2343543 . A . 999 PASS . -chr11 5464562 . C T 999 PASS . -chr11 116870911 . C G 999 PASS . -chr20 76962 . T C 999 PASS . -chr20 126310 . ACC A 999 PASS . -chr20 138125 . G T 999 PASS . -chr20 138148 . C T 999 PASS . -chr20 271225 . T TTTA,TA 999 PASS . -chr20 304568 . C T 999 PASS . -chr20 620255100 . AG T 999 PASS . -chr20 630255200 . G C 999 PASS . -chr20 2147483647 . A T 999 PASS . diff --git a/htslib/test/tabix/tabix.tst b/htslib/test/tabix/tabix.tst deleted file mode 100644 index f974037..0000000 --- a/htslib/test/tabix/tabix.tst +++ /dev/null @@ -1,65 +0,0 @@ -# Copyright (C) 2017 Genome Research Ltd. -# -# Author: Robert Davies -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -# DEALINGS IN THE SOFTWARE. - -# First field: -# INIT = initialisation, not counted in testing -# P = expected to pass (zero return; expected output matches, if present) -# N = expected to return non-zero -# F = expected to fail -# -# Second field (P/N/F only): -# Filename of expected output. If '.', output is not checked -# -# Rest: -# Command to execute. $bgzip and $tabix are replaced with the path to -# bgzip and tabix. - -# TBI index on VCF -INIT $bgzip -c vcf_file.vcf > vcf_file.tbi.tmp.vcf.gz -P . $tabix -f -p vcf vcf_file.tbi.tmp.vcf.gz -P vcf_file.1.3000151.out $tabix vcf_file.tbi.tmp.vcf.gz 1:3000151-3000151 -P vcf_file.2.3199812.out $tabix vcf_file.tbi.tmp.vcf.gz 2:3199812-3199812 - -# CSI index on VCF -INIT $bgzip -c vcf_file.vcf > vcf_file.csi.tmp.vcf.gz -P . $tabix -f -C -p vcf vcf_file.csi.tmp.vcf.gz -P vcf_file.1.3000151.out $tabix vcf_file.csi.tmp.vcf.gz 1:3000151-3000151 -P vcf_file.2.3199812.out $tabix vcf_file.csi.tmp.vcf.gz 2:3199812-3199812 - -# VCF file with chromosome > 2^29-1 bases long -# TBI cannot index this file, so building the index should fail -INIT $bgzip -c large_chr.vcf > large_chr.tmp.vcf.gz -N . $tabix -f -p vcf large_chr.tmp.vcf.gz - -# CSI can handle positions > 2^29-1, so building should work -P . $tabix -f -C -p vcf large_chr.tmp.vcf.gz -P large_chr.20.1.2147483647.out $tabix large_chr.tmp.vcf.gz chr20:1-2147483647 - -# TBI index on BED -INIT $bgzip -c bed_file.bed > bed_file.tbi.tmp.bed.gz -P . $tabix -f -p bed bed_file.tbi.tmp.bed.gz -P bed_file.Y.100200.out $tabix bed_file.tbi.tmp.bed.gz Y:100200-100200 - -# TBI index on GFF3 -INIT $bgzip -c gff_file.gff > gff_file.tbi.tmp.gff.gz -P . $tabix -f -p gff gff_file.tbi.tmp.gff.gz -P gff_file.X.2934832.2935190.out $tabix gff_file.tbi.tmp.gff.gz X:2934832-2935190 diff --git a/htslib/test/tabix/test-tabix.sh b/htslib/test/tabix/test-tabix.sh deleted file mode 100755 index 4a4b045..0000000 --- a/htslib/test/tabix/test-tabix.sh +++ /dev/null @@ -1,183 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2017 Genome Research Ltd. -# -# Author: Robert Davies -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -# DEALINGS IN THE SOFTWARE. - -# Executes a single test and compares against the expected output -run_test() { - # Expected result: pass (P) / fail (F) / nonzero exit (N) - p="$1"; shift - # File with expected output (empty or '.' if none) - e="$1"; shift - # Test result - r="P" - # Why the test failed - y="" - if [ "x$test_iter" = "x" ] - then - test_iter=1 - else - test_iter=`expr $test_iter + 1` - fi - result=`eval ${@+"$@"} 2>_err.tmp > _out.tmp` - if [ $? != 0 ] - then - if [ "$p" != "N" ] - then - # Expected zero exit code, got non-zero - r="F" - y="exit_code" - else - # Expected non-zero exit code and got it - r="P" - fi - elif [ "$p" = "N" ] - then - # Expected non-zero exit code, but got zero - r="F" - y="exit_code" - elif [ "x$e" != "x" -a "$e" != "." ] - then - sed -n 's/.*/&/p' _out.tmp > _out.tmp2 - if cmp -s _out.tmp2 "$e" - then - # Output was as expected - r="P" - rm -f _out.tmp _out.tmp2 _err.tmp - else - # Output differed - r="F" - y="output" - fi - else - # Expected zero exit code and got it. - r="P" - rm -f _out.tmp _out.tmp2 _err.tmp - fi - - if [ "$r" = "F" ] - then - # Test failed - case "$p" in - [PN]) - echo "FAIL : $@" - if [ "x$e" != "x" -a "$e" != "." ] - then - keep_output="FAIL-$e.${test_iter}" - else - keep_output="FAIL.${test_iter}" - fi - mv _out.tmp "${keep_output}.out" - mv _err.tmp "${keep_output}.err" - nufail=`expr $nufail + 1` - if [ "$y" = "exit_code" ] - then - if [ "$p" != "N" ] - then - echo "Got non-zero exit code" - else - echo "Got unexpected zero exit code" - fi - echo "See ${keep_output}.{out,err} for output" - else - echo "Output differed from expected result" - echo "Compare $e ${keep_output}.out" - fi - ;; - *) - echo "XFAIL: $@" - nefail=`expr $nefail + 1` - ;; - esac - else - # Test passed - case "$p" in - "P") - echo "PASS : $@" - nepass=`expr $nepass + 1` - ;; - "N") - echo "PASS : $@ (must exit non-zero)" - nepass=`expr $nepass + 1` - ;; - *) - echo "XPASS: $@" - nupass=`expr $nupass + 1` - ;; - esac - fi -} - -tabix_test() { - nupass=0; nepass=0 - nufail=0; nefail=0 - - exec 9<"$1" - while read -r line <&9 - do - set -- $line - case $1 in - "#"*) # skip comments - ;; - "") # skip blank lines too - ;; - - "INIT") - shift - eval ${@+"$@"} > /dev/null - if [ $? != 0 ] - then - echo "INIT FAIL: $@" - return 1 - fi - ;; - - *) - p=$1;shift - o=$1;shift - run_test "$p" "$o" ${@+"$@"} - ;; - esac - done - exec 9<&- - - echo "" - echo "Expected passes: $nepass" - echo "Unexpected passes: $nupass" - echo "Expected failures: $nefail" - echo "Unexpected failures: $nufail" - if [ "$nupass" -gt 0 -o "$nufail" -gt 0 ] - then - return 1 - else - return 0 - fi -} - -echo "Testing tabix..." - -bgzip="../../bgzip" -tabix="../../tabix" - -tabix_test $@ - -exit $? diff --git a/htslib/test/tabix/vcf_file.1.3000151.out b/htslib/test/tabix/vcf_file.1.3000151.out deleted file mode 100644 index e9d5c87..0000000 --- a/htslib/test/tabix/vcf_file.1.3000151.out +++ /dev/null @@ -1 +0,0 @@ -1 3000151 . C T 59.2 PASS AN=4;AC=2 GT:DP:GQ 0/1:32:245 0/1:32:245 diff --git a/htslib/test/tabix/vcf_file.2.3199812.out b/htslib/test/tabix/vcf_file.2.3199812.out deleted file mode 100644 index be2f66e..0000000 --- a/htslib/test/tabix/vcf_file.2.3199812.out +++ /dev/null @@ -1 +0,0 @@ -2 3199812 . G GTT,GT 82.7 PASS AN=4;AC=2,2 GT:GQ:DP 1/2:322:26 1/2:322:26 diff --git a/htslib/test/tabix/vcf_file.vcf b/htslib/test/tabix/vcf_file.vcf deleted file mode 100644 index 02923ae..0000000 --- a/htslib/test/tabix/vcf_file.vcf +++ /dev/null @@ -1,36 +0,0 @@ -##fileformat=VCFv4.1 -##INFO= -##FORMAT= -##INFO= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FILTER= -##FILTER= -##contig= -##contig= -##contig= -##contig= -##reference=file:///lustre/scratch105/projects/g1k/ref/main_project/human_g1k_v37.fasta -##readme=AAAAAA -##readme=BBBBBB -##INFO= -##INFO= -##INFO= -##INFO= -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT A B -1 3000150 . C T 59.2 PASS AN=4;AC=2 GT:GQ 0/1:245 0/1:245 -1 3000151 . C T 59.2 PASS AN=4;AC=2 GT:DP:GQ 0/1:32:245 0/1:32:245 -1 3062915 id3D GTTT G 12.9 q10 DP4=1,2,3,4;AN=4;AC=2;INDEL;STR=test GT:GQ:DP:GL 0/1:409:35:-20,-5,-20 0/1:409:35:-20,-5,-20 -1 3062915 idSNP G T,C 12.6 test TEST=5;DP4=1,2,3,4;AN=3;AC=1,1 GT:TT:GQ:DP:GL 0/1:0,1:409:35:-20,-5,-20,-20,-5,-20 2:0,1:409:35:-20,-5,-20 -1 3106154 . CAAA C 342 PASS AN=4;AC=2 GT:GQ:DP 0/1:245:32 0/1:245:32 -1 3106154 . C CT 59.2 PASS AN=4;AC=2 GT:GQ:DP 0/1:245:32 0/1:245:32 -1 3157410 . GA G 90.6 q10 AN=4;AC=4 GT:GQ:DP 1/1:21:21 1/1:21:21 -1 3162006 . GAA G 60.2 PASS AN=4;AC=2 GT:GQ:DP 0/1:212:22 0/1:212:22 -1 3177144 . G T 45 PASS AN=4;AC=2 GT:GQ:DP 0/0:150:30 1/1:150:30 -1 3177144 . G . 45 PASS AN=4;AC=0 GT:GQ:DP 0/0:150:30 0/0:150:30 -1 3184885 . TAAAA TA,T 61.5 PASS AN=4;AC=2,2 GT:GQ:DP 1/2:12:10 1/2:12:10 -2 3199812 . G GTT,GT 82.7 PASS AN=4;AC=2,2 GT:GQ:DP 1/2:322:26 1/2:322:26 -3 3212016 . CTT C,CT 79 PASS AN=4;AC=2,2 GT:GQ:DP 1/2:91:26 1/2:91:26 -4 3258448 . TACACACAC T . PASS AN=4;AC=2 GT:GQ:DP 0/1:325:31 0/1:325:31 diff --git a/htslib/test/test-bcf-sr.c b/htslib/test/test-bcf-sr.c deleted file mode 100644 index ebe9390..0000000 --- a/htslib/test/test-bcf-sr.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - Copyright (C) 2017 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -/* - Test bcf synced reader allele pairing -*/ - -#include - -#include -#include -#include -#include - -void error(const char *format, ...) -{ - va_list ap; - va_start(ap, format); - vfprintf(stderr, format, ap); - va_end(ap); - exit(-1); -} - -void usage(void) -{ - fprintf(stderr, "Usage: test-bcf-sr [OPTIONS] vcf-list.txt\n"); - fprintf(stderr, "Options:\n"); - fprintf(stderr, " -p, --pair logic: snps,indels,both,snps+ref,indels+ref,both+ref,exact,some,all\n"); - fprintf(stderr, "\n"); - exit(-1); -} - -int main(int argc, char *argv[]) -{ - static struct option loptions[] = - { - {"help",no_argument,NULL,'h'}, - {"pair",required_argument,NULL,'p'}, - {NULL,0,NULL,0} - }; - - int c, pair = 0; - while ((c = getopt_long(argc, argv, "p:h", loptions, NULL)) >= 0) - { - switch (c) - { - case 'p': - if ( !strcmp(optarg,"snps") ) pair |= BCF_SR_PAIR_SNPS; - else if ( !strcmp(optarg,"snp+ref") ) pair |= BCF_SR_PAIR_SNPS|BCF_SR_PAIR_SNP_REF; - else if ( !strcmp(optarg,"snps+ref") ) pair |= BCF_SR_PAIR_SNPS|BCF_SR_PAIR_SNP_REF; - else if ( !strcmp(optarg,"indels") ) pair |= BCF_SR_PAIR_INDELS; - else if ( !strcmp(optarg,"indel+ref") ) pair |= BCF_SR_PAIR_INDELS|BCF_SR_PAIR_INDEL_REF; - else if ( !strcmp(optarg,"indels+ref") ) pair |= BCF_SR_PAIR_INDELS|BCF_SR_PAIR_INDEL_REF; - else if ( !strcmp(optarg,"both") ) pair |= BCF_SR_PAIR_BOTH; - else if ( !strcmp(optarg,"both+ref") ) pair |= BCF_SR_PAIR_BOTH_REF; - else if ( !strcmp(optarg,"any") ) pair |= BCF_SR_PAIR_ANY; - else if ( !strcmp(optarg,"all") ) pair |= BCF_SR_PAIR_ANY; - else if ( !strcmp(optarg,"some") ) pair |= BCF_SR_PAIR_SOME; - else if ( !strcmp(optarg,"exact") ) pair = BCF_SR_PAIR_EXACT; - else error("The --pair logic \"%s\" not recognised.\n", optarg); - break; - default: usage(); - } - } - if ( !pair ) pair = BCF_SR_PAIR_EXACT; - if ( optind == argc ) usage(); - - int i, j, n, nvcf; - char **vcf = hts_readlist(argv[optind], 1, &nvcf); - if ( !vcf ) error("Could not parse %s\n", argv[optind]); - - bcf_srs_t *sr = bcf_sr_init(); - bcf_sr_set_opt(sr, BCF_SR_PAIR_LOGIC, pair); - bcf_sr_set_opt(sr, BCF_SR_REQUIRE_IDX); - for (i=0; ierrnum)); - - kstring_t str = {0,0,0}; - while ( (n=bcf_sr_next_line(sr)) ) - { - for (i=0; inreaders; i++) - { - if ( !bcf_sr_has_line(sr,i) ) continue; - bcf1_t *rec = bcf_sr_get_line(sr, i); - printf("%s:%d", bcf_seqname(bcf_sr_get_header(sr,i),rec),rec->pos+1); - break; - } - - for (i=0; inreaders; i++) - { - printf("\t"); - - if ( !bcf_sr_has_line(sr,i) ) - { - printf("%s","-"); - continue; - } - - str.l = 0; - bcf1_t *rec = bcf_sr_get_line(sr, i); - kputs(rec->n_allele > 1 ? rec->d.allele[1] : ".", &str); - for (j=2; jn_allele; j++) - { - kputc(',', &str); - kputs(rec->d.allele[j], &str); - } - printf("%s",str.s); - } - printf("\n"); - } - - free(str.s); - bcf_sr_destroy(sr); - for (i=0; i Random seed\n", - " -t, --temp-dir When given, temporary files will not be removed\n", - " -v, --verbose \n", - " -h, -?, --help This help message\n", - "\n"; - exit -1; -} -sub parse_params -{ - my $opts = {}; - while (defined(my $arg=shift(@ARGV))) - { - if ( $arg eq '-t' || $arg eq '--temp-dir' ) { $$opts{keep_files}=shift(@ARGV); next } - if ( $arg eq '-v' || $arg eq '--verbose' ) { $$opts{verbose}=1; next } - if ( $arg eq '-s' || $arg eq '--seed' ) { $$opts{seed}=shift(@ARGV); next } - if ( $arg eq '-?' || $arg eq '-h' || $arg eq '--help' ) { error(); } - error("Unknown parameter \"$arg\". Run -h for help.\n"); - } - $$opts{tmp} = exists($$opts{keep_files}) ? $$opts{keep_files} : tempdir(CLEANUP=>1); - if ( $$opts{keep_files} ) { cmd("mkdir -p $$opts{keep_files}"); } - if ( !exists($$opts{seed}) ) - { - $$opts{seed} = time(); - print STDERR "Random seed is $$opts{seed}\n"; - } - srand($$opts{seed}); - return $opts; -} - -sub _cmd -{ - my ($cmd) = @_; - my $kid_io; - my @out; - my $pid = open($kid_io, "-|"); - if ( !defined $pid ) { error("Cannot fork: $!"); } - if ($pid) - { - # parent - @out = <$kid_io>; - close($kid_io); - } - else - { - # child - exec('bash', '-o','pipefail','-c', $cmd) or error("Cannot execute the command [/bin/sh -o pipefail -c $cmd]: $!"); - } - return ($? >> 8, join('',@out)); -} -sub cmd -{ - my ($cmd) = @_; - my ($ret,$out) = _cmd($cmd); - if ( $ret ) { error("The command failed [$ret]: $cmd\n", $out); } - return $out; -} - -sub save_vcf -{ - my ($opts,$vars,$fname) = @_; - open(my $fh,"| $FindBin::Bin/../bgzip -c > $fname") or error("$FindBin::Bin/../bgzip -c > $fname: !"); - print $fh qq[##fileformat=VCFv4.3\n]; - print $fh qq[##FILTER=\n]; - print $fh qq[##contig=\n]; - print $fh qq[##contig=\n]; - print $fh '#'. join("\t", qw(CHROM POS ID REF ALT QUAL FILTER INFO))."\n"; - for my $var (@$vars) - { - my @als = split(/,/,$var); - my @alts = (); - my $ref; - for my $al (@als) - { - my ($xref,$alt) = split(/>/,$al); - $ref = $xref; - push @alts,$alt; - } - print $fh join("\t", (1,100,'.',$ref,join(',',@alts),'.','.','.'))."\n"; - } - for my $var (@$vars) - { - my @als = split(/,/,$var); - my @alts = (); - my $ref; - for my $al (@als) - { - my ($xref,$alt) = split(/>/,$al); - $ref = $xref; - push @alts,$alt; - } - print $fh join("\t", (1,300,'.',$ref,join(',',@alts),'.','.','.'))."\n"; - } - for my $var (@$vars) - { - my @als = split(/,/,$var); - my @alts = (); - my $ref; - for my $al (@als) - { - my ($xref,$alt) = split(/>/,$al); - $ref = $xref; - push @alts,$alt; - } - print $fh join("\t", (2,100,'.',$ref,join(',',@alts),'.','.','.'))."\n"; - } - close($fh) or error("close failed: bgzip -c > $fname"); - cmd("$FindBin::Bin/../tabix -f $fname"); -} - -sub random_alt -{ - my ($ref,$is_snp) = @_; - my @acgt = qw(A C G T); - my $alt = $acgt[rand @acgt]; - if ( $ref eq $alt ) { return '.'; } # ref - if ( !$is_snp ) { $alt = $ref.$alt; } - return $alt; -} - -sub check_outputs -{ - my ($fname_bin,$fname_perl) = @_; - my %out = (); - open(my $fh,'<',$fname_bin) or error("$fname_bin: $!"); - while (my $line=<$fh>) - { - my ($pos,@vals) = split(/\t/,$line); - chomp($vals[-1]); - $vals[-1] =~ s/\r$//; - push @{$out{$pos}},join("\t",@vals); - } - close($fh) or error("close failed: $fname_bin"); - if ( keys %out != 3 ) { error("Expected 3 positions, found ",scalar keys %out,": $fname_bin\n"); } - my $n; - for my $pos (keys %out) - { - if ( !defined $n ) { $n = scalar @{$out{$pos}}; } - if ( @{$out{$pos}} != $n ) { error("Expected $n positions, found ",scalar keys %{$out{$pos}},"\n"); } - } - my @blines = @{$out{(keys %out)[0]}}; - - my @plines = (); - open($fh,'<',$fname_perl) or error("$fname_perl: $!"); - while (my $line=<$fh>) - { - chomp($line); - $line =~ s/\r$//; - push @plines,$line; - } - close($fh) or error("close failed: $fname_perl"); - if ( @blines != @plines ) { error("Different number of lines: ",scalar @blines," vs ",scalar @plines," in $fname_bin vs $fname_perl\n"); } - @blines = sort @blines; - @plines = sort @plines; - for (my $i=0; $i<@plines; $i++) - { - if ( $blines[$i] ne $plines[$i] ) - { - #error("Different lines in $fname_bin vs $fname_perl:\n\t$blines[$i].\nvs\n\t$plines[$i].\n"); - error("Different lines in $fname_bin vs $fname_perl:\n\t".join("\n\t",@blines)."\nvs\n\t".join("\n\t",@plines)."\n"); - } - } -} - -sub run_test -{ - my ($opts) = @_; - my @acgt = qw(A C G T); - my $ref = $acgt[rand @acgt]; - my @vcfs = (); - my $nvcf = 1 + int(rand(10)); - for (my $i=0; $i<$nvcf; $i++) - { - my %vars = (); - my $nvars = 1 + int(rand(6)); - for (my $j=0; $j<$nvars; $j++) - { - my $snp = int(rand(2)); - my $alt = random_alt($ref,$snp); - my $var = "$ref>$alt"; - if ( $alt ne '.' && !int(rand(5)) ) # create multiallelic site - { - my $alt2 = random_alt($ref,$snp); - if ( $alt2 ne '.' && $alt ne $alt2 ) - { - $var .= ",$ref>$alt2"; - } - } - $vars{$var} = 1; - } - my $ndup = 1 + int(rand(4)); - for (my $j=0; $j<$ndup; $j++) - { - my @keys = shuffle keys %vars; - push @vcfs, \@keys; - } - } - @vcfs = shuffle @vcfs; - open(my $fh,'>',"$$opts{tmp}/list.txt") or error("$$opts{tmp}/list.txt: $!"); - my %groups = (); - my @group_list = (); - for (my $i=0; $i<@vcfs; $i++) - { - my $vcf = $vcfs[$i]; - my $key = join(';',sort @$vcf); - if ( !exists($groups{$key}) ) - { - push @group_list,$key; - $groups{$key}{vars} = [@$vcf]; - $groups{$key}{key} = $key; - } - push @{$groups{$key}{vcfs}},$i; - save_vcf($opts,$vcf,"$$opts{tmp}/$i.vcf.gz"); - print $fh "$$opts{tmp}/$i.vcf.gz\n"; - } - close($fh); - - my @groups = (); - for my $group (@group_list) { push @groups, $groups{$group}; } - for my $logic (qw(snps indels both snps+ref indels+ref both+ref exact some all)) - #for my $logic (qw(snps)) - { - print STDERR "$FindBin::Bin/test-bcf-sr $$opts{tmp}/list.txt -p $logic > $$opts{tmp}/rmme.bin.out\n" unless !$$opts{verbose}; - cmd("$FindBin::Bin/test-bcf-sr $$opts{tmp}/list.txt -p $logic > $$opts{tmp}/rmme.bin.out"); - - open(my $fh,'>',"$$opts{tmp}/rmme.perl.out") or error("$$opts{tmp}/rmme.perl.out: $!"); - $$opts{fh} = $fh; - $$opts{logic} = $logic; - pair_lines($opts,\@groups); - close($fh) or error("close failed: $$opts{tmp}/rmme.perl.out"); - - check_outputs("$$opts{tmp}/rmme.bin.out","$$opts{tmp}/rmme.perl.out"); - } -} - -sub pair_lines -{ - my ($opts,$groups) = @_; - - #print 'groups: '.Dumper($groups); - - # get a list of all unique variants and their groups - my %vars = (); - my @var_list = (); - for (my $igrp=0; $igrp<@$groups; $igrp++) - { - my $grp = $$groups[$igrp]; - for (my $ivar=0; $ivar<@{$$grp{vars}}; $ivar++) - { - my $var = $$grp{vars}[$ivar]; - if ( !exists($vars{$var}) ) { push @var_list,$var; } # just to keep the order - push @{$vars{$var}}, { igrp=>$igrp, ivar=>$ivar, cnt=>scalar @{$$grp{vcfs}} }; - } - } - - # each variant has a list of groups that it is present in - my @vars = (); - for my $var (@var_list) { push @vars, $vars{$var}; } - - #print STDERR 'unique variants: '.Dumper(\@var_list); - # for (my $i=0; $i<@vars; $i++) - # { - # my $igrp = $vars[$i][0]{igrp}; - # my $jvar = $vars[$i][0]{ivar}; - # my $var = $$groups[$igrp]{vars}[$jvar]; - # print STDERR "$i: $var\n"; - # } - - # initialize variant sets - combinations of compatible variants across multiple reader groups - my @var_sets = (); - for (my $i=0; $i<@vars; $i++) { push @var_sets,[$i]; } - - my @bitmask = (); - my @pmatrix = (); - for (my $iset=0; $iset<@var_sets; $iset++) - { - $pmatrix[$iset] = [(0) x (scalar @$groups)]; - $bitmask[$iset] = 0; - } - my @max; - for (my $iset=0; $iset<@var_sets; $iset++) - { - my $tmp_max = 0; - for my $ivar (@{$var_sets[$iset]}) - { - my $var = $vars[$ivar]; - for my $grp (@$var) - { - my $igrp = $$grp{igrp}; - $pmatrix[$iset][$igrp] += $$grp{cnt}; - if ( $bitmask[$iset] & (1<<$igrp) ) { error("Uh!"); } - $bitmask[$iset] |= 1<<$igrp; - $tmp_max += $$grp{cnt}; - } - } - push @max, $tmp_max; - } - - # pair the lines - while ( @var_sets ) - { - my $imax = 0; - for (my $iset=1; $iset<@var_sets; $iset++) - { - if ( $max[$iset] > $max[$imax] ) { $imax = $iset; } - } - # if ( @var_sets == @vars ) { dump_pmatrix($groups,\@vars,\@var_sets,\@pmatrix,\@bitmask); } - - my $ipair = undef; - my $max_score = 0; - for (my $iset=0; $iset<@var_sets; $iset++) - { - if ( $bitmask[$imax] & $bitmask[$iset] ) { next; } # cannot merge - my $score = pairing_score($opts,$groups,\@vars,$var_sets[$imax],$var_sets[$iset]); - if ( $max_score < $score ) { $max_score = $score; $ipair = $iset; } - } - - # merge rows thus creating a new variant set - if ( defined $ipair && $ipair != $imax ) - { - $imax = merge_rows($groups,\@vars,\@var_sets,\@pmatrix,\@bitmask,\@max,$imax,$ipair); - next; - } - - output_row($opts,$groups,\@vars,\@var_sets,\@pmatrix,\@bitmask,\@max,$imax); - # dump_pmatrix($groups,\@vars,\@var_sets,\@pmatrix,\@bitmask); - } -} - -sub merge_rows -{ - my ($grps,$vars,$var_sets,$pmat,$bitmask,$max,$ivset,$jvset) = @_; - if ( $ivset > $jvset ) { my $tmp = $ivset; $ivset = $jvset; $jvset = $tmp; } - push @{$$var_sets[$ivset]}, @{$$var_sets[$jvset]}; - for (my $igrp=0; $igrp<@{$$pmat[$ivset]}; $igrp++) - { - $$pmat[$ivset][$igrp] += $$pmat[$jvset][$igrp]; - } - $$max[$ivset] += $$max[$jvset]; - $$bitmask[$ivset] |= $$bitmask[$jvset]; - splice(@$var_sets,$jvset,1); - splice(@$pmat,$jvset,1); - splice(@$bitmask,$jvset,1); - splice(@$max,$jvset,1); - return $ivset; -} - -sub output_row -{ - my ($opts,$grps,$vars,$var_sets,$pmat,$bitmask,$max,$ivset) = @_; - my $varset = $$var_sets[$ivset]; - my @tmp = (); - for my $grp (@$grps) - { - for my $vcf (@{$$grp{vcfs}}) { push @tmp, '-'; } - } - for my $idx (@$varset) - { - for my $var (@{$$vars[$idx]}) - { - my $igrp = $$var{igrp}; - my $jvar = $$var{ivar}; - my $str = $$grps[$igrp]{vars}[$jvar]; - $str =~ s/[^>]>//g; - for my $ivcf (@{$$grps[$igrp]{vcfs}}) { $tmp[$ivcf] = $str; } - } - } - print {$$opts{fh}} join("\t",@tmp)."\n"; - splice(@$var_sets,$ivset,1); - splice(@$pmat,$ivset,1); - splice(@$bitmask,$ivset,1); - splice(@$max,$ivset,1); -} - -sub dump_pmatrix -{ - my ($grps,$vars,$var_sets,$pmat,$bitmask) = @_; - for (my $ivset=0; $ivset<@$var_sets; $ivset++) - { - my $varset = $$var_sets[$ivset]; - my @tmp = (); - for my $ivar (@$varset) - { - my $igrp = $$vars[$ivar][0]{igrp}; - my $jvar = $$vars[$ivar][0]{ivar}; - push @tmp, $$grps[$igrp]{vars}[$jvar]; - } - printf STDERR "%-10s",join(',',@tmp); - for (my $igrp=0; $igrp<@{$$pmat[0]}; $igrp++) - { - print STDERR "\t$$pmat[$ivset][$igrp]"; - } - print STDERR "\n"; - } - print STDERR "\n"; -} - -sub var_type -{ - my ($vars) = @_; - my %type = (); - for my $var (split(/,/,$vars)) - { - my ($ref,$alt) = split(/>/,$var); - if ( $ref eq $alt or $alt eq '.' ) { $type{ref} = 1; } - elsif ( length($ref)==length($alt) && length($ref)==1 ) { $type{snp} = 1; } - else { $type{indel} = 1; } - } - return keys %type; -} -sub multi_is_subset -{ - my ($avar,$bvar) = @_; - my %avars = (); - my %bvars = (); - for my $var (split(/,/,$avar)) { $avars{$var} = 1; } - for my $var (split(/,/,$bvar)) { $bvars{$var} = 1; } - for my $var (keys %avars) - { - if ( exists($bvars{$var}) ) { return 1; } - } - for my $var (keys %bvars) - { - if ( exists($avars{$var}) ) { return 1; } - } - return 0; -} -sub multi_is_exact -{ - my ($avar,$bvar) = @_; - my %avars = (); - my %bvars = (); - for my $var (split(/,/,$avar)) { $avars{$var} = 1; } - for my $var (split(/,/,$bvar)) { $bvars{$var} = 1; } - for my $var (keys %avars) - { - if ( !exists($bvars{$var}) ) { return 0; } - } - for my $var (keys %bvars) - { - if ( !exists($avars{$var}) ) { return 0; } - } - return 1; -} -sub pairing_score -{ - my ($opts,$grps,$vars,$avset,$bvset) = @_; - - my $score = {}; - if ( $$opts{logic}=~/both/ or $$opts{logic}=~/snps/ or $$opts{logic}=~/all/ ) - { - $$score{snp}{snp} = 3; - if ( $$opts{logic}=~/ref/ or $$opts{logic}=~/all/ ) { $$score{snp}{ref} = 2; } - } - if ( $$opts{logic}=~/both/ or $$opts{logic}=~/indels/ or $$opts{logic}=~/all/ ) - { - $$score{indel}{indel} = 3; - if ( $$opts{logic}=~/ref/ or $$opts{logic}=~/all/ ) { $$score{indel}{ref} = 2; } - } - if ( $$opts{logic}=~/all/ ) - { - $$score{snp}{indel} = 1; - $$score{indel}{snp} = 1; - } - for my $a (keys %$score) - { - for my $b (keys %{$$score{$a}}) - { - $$score{$b}{$a} = $$score{$a}{$b}; - } - } - - my $max_int = 0xFFFFFFFF; - my $min = $max_int; - for my $ia (@$avset) - { - for my $ib (@$bvset) - { - my $avar = $$grps[ $$vars[$ia][0]{igrp} ]{vars}[ $$vars[$ia][0]{ivar} ]; - my $bvar = $$grps[ $$vars[$ib][0]{igrp} ]{vars}[ $$vars[$ib][0]{ivar} ]; - - if ( $avar eq $bvar ) { return $max_int; } - if ( $$opts{logic} eq 'exact' ) - { - if ( multi_is_exact($avar,$bvar) ) { return $max_int; } - next; - } - elsif ( multi_is_subset($avar,$bvar) ) { return $max_int; } - - my @atype = var_type($avar); - my @btype = var_type($bvar); - my $max = 0; - for my $a (@atype) - { - for my $b (@btype) - { - if ( !exists($$score{$a}{$b}) ) { next; } - if ( $max < $$score{$a}{$b} ) { $max = $$score{$a}{$b}; } - } - } - if ( !$max ) { return 0; } # some of the variants in the two groups are not compatible - if ( $min > $max ) { $min = $max; } - } - } - if ( $$opts{logic} eq 'exact' ) { return 0; } - - my $cnt = 0; - for my $ivar (@$avset,@$bvset) - { - my $var = $$vars[$ivar]; - for my $grp (@$var) - { - $cnt += $$grp{cnt}; - } - } - return (1<<(28+$min)) + $cnt; -} - - diff --git a/htslib/test/test-bcf-translate.c b/htslib/test/test-bcf-translate.c deleted file mode 100644 index f799c34..0000000 --- a/htslib/test/test-bcf-translate.c +++ /dev/null @@ -1,192 +0,0 @@ -/* test/test-bcf-translate.c - - Copyright (C) 2017 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include -#include -#include - -int main(int argc, char **argv) -{ - char *fname = argc>1 ? argv[1] : "/dev/null"; - htsFile *fp = hts_open(fname, "w"); - bcf_hdr_t *hdr1, *hdr2; - - hdr1 = bcf_hdr_init("w"); - hdr2 = bcf_hdr_init("w"); - - // Add two shared and two private annotations - bcf_hdr_append(hdr1, "##contig="); - bcf_hdr_append(hdr1, "##contig="); - bcf_hdr_append(hdr2, "##contig="); - bcf_hdr_append(hdr2, "##contig="); - bcf_hdr_append(hdr1, "##FILTER="); - bcf_hdr_append(hdr1, "##FILTER="); - bcf_hdr_append(hdr1, "##FILTER="); - bcf_hdr_append(hdr2, "##FILTER="); - bcf_hdr_append(hdr2, "##FILTER="); - bcf_hdr_append(hdr2, "##FILTER="); - bcf_hdr_append(hdr1, "##INFO="); - bcf_hdr_append(hdr1, "##INFO="); - bcf_hdr_append(hdr1, "##INFO="); - bcf_hdr_append(hdr2, "##INFO="); - bcf_hdr_append(hdr2, "##INFO="); - bcf_hdr_append(hdr2, "##INFO="); - bcf_hdr_append(hdr1, "##FORMAT="); - bcf_hdr_append(hdr1, "##FORMAT="); - bcf_hdr_append(hdr1, "##FORMAT="); - bcf_hdr_append(hdr2, "##FORMAT="); - bcf_hdr_append(hdr2, "##FORMAT="); - bcf_hdr_append(hdr2, "##FORMAT="); - bcf_hdr_add_sample(hdr1,"SMPL1"); - bcf_hdr_add_sample(hdr1,"SMPL2"); - bcf_hdr_add_sample(hdr2,"SMPL1"); - bcf_hdr_add_sample(hdr2,"SMPL2"); - bcf_hdr_sync(hdr1); - bcf_hdr_sync(hdr2); - - hdr2 = bcf_hdr_merge(hdr2,hdr1); - bcf_hdr_sync(hdr2); - bcf_hdr_write(fp, hdr2); - - bcf1_t *rec = bcf_init1(); - rec->rid = bcf_hdr_name2id(hdr1, "1"); - rec->pos = 0; - bcf_update_alleles_str(hdr1, rec, "G,A"); - int32_t tmpi[3]; - tmpi[0] = bcf_hdr_id2int(hdr1, BCF_DT_ID, "FLT1"); - tmpi[1] = bcf_hdr_id2int(hdr1, BCF_DT_ID, "FLT2"); - tmpi[2] = bcf_hdr_id2int(hdr1, BCF_DT_ID, "FLT3"); - bcf_update_filter(hdr1, rec, tmpi, 3); - tmpi[0] = 1; bcf_update_info_int32(hdr1, rec, "INF1", tmpi, 1); - tmpi[0] = 2; bcf_update_info_int32(hdr1, rec, "INF2", tmpi, 1); - tmpi[0] = 3; bcf_update_info_int32(hdr1, rec, "INF3", tmpi, 1); - tmpi[0] = tmpi[1] = 1; bcf_update_format_int32(hdr1, rec, "FMT1", tmpi, 2); - tmpi[0] = tmpi[1] = 2; bcf_update_format_int32(hdr1, rec, "FMT2", tmpi, 2); - tmpi[0] = tmpi[1] = 3; bcf_update_format_int32(hdr1, rec, "FMT3", tmpi, 2); - - bcf_remove_filter(hdr1, rec, bcf_hdr_id2int(hdr1, BCF_DT_ID, "FLT2"), 0); - bcf_update_info_int32(hdr1, rec, "INF2", NULL, 0); - bcf_update_format_int32(hdr1, rec, "FMT2", NULL, 0); - - bcf_translate(hdr2, hdr1, rec); - bcf_write(fp, hdr2, rec); - - // Clean - bcf_destroy1(rec); - bcf_hdr_destroy(hdr1); - bcf_hdr_destroy(hdr2); - int ret; - if ( (ret=hts_close(fp)) ) - { - fprintf(stderr,"hts_close(%s): non-zero status %d\n",fname,ret); - exit(ret); - } - return 0; -} - - - - // // Create VCF header - // kstring_t str = {0,0,0}; - // bcf_hdr_add_sample(hdr, "NA00003"); - // bcf_hdr_add_sample(hdr, NULL); // to update internal structures - // bcf_hdr_write(fp, hdr); - // // Add a record - // // 20 14370 rs6054257 G A 29 PASS NS=3;DP=14;AF=0.5;DB;H2 GT:GQ:DP:HQ 0|0:48:1:51,51 1|0:48:8:51,51 1/1:43:5:.,. - // // .. CHROM - // rec->rid = bcf_hdr_name2id(hdr, "20"); - // // .. POS - // rec->pos = 14369; - // // .. ID - // bcf_update_id(hdr, rec, "rs6054257"); - // // .. REF and ALT - // bcf_update_alleles_str(hdr, rec, "G,A"); - // // .. QUAL - // rec->qual = 29; - // // .. FILTER - // int32_t tmpi = bcf_hdr_id2int(hdr, BCF_DT_ID, "PASS"); - // bcf_update_filter(hdr, rec, &tmpi, 1); - // // .. INFO - // tmpi = 3; - // bcf_update_info_int32(hdr, rec, "NS", &tmpi, 1); - // tmpi = 14; - // bcf_update_info_int32(hdr, rec, "DP", &tmpi, 1); - // float tmpf = 0.5; - // bcf_update_info_float(hdr, rec, "AF", &tmpf, 1); - // bcf_update_info_flag(hdr, rec, "DB", NULL, 1); - // bcf_update_info_flag(hdr, rec, "H2", NULL, 1); - // // .. FORMAT - // int32_t *tmpia = (int*)malloc(bcf_hdr_nsamples(hdr)*2*sizeof(int)); - // tmpia[0] = bcf_gt_phased(0); - // tmpia[1] = bcf_gt_phased(0); - // tmpia[2] = bcf_gt_phased(1); - // tmpia[3] = bcf_gt_phased(0); - // tmpia[4] = bcf_gt_unphased(1); - // tmpia[5] = bcf_gt_unphased(1); - // bcf_update_genotypes(hdr, rec, tmpia, bcf_hdr_nsamples(hdr)*2); - // tmpia[0] = 48; - // tmpia[1] = 48; - // tmpia[2] = 43; - // bcf_update_format_int32(hdr, rec, "GQ", tmpia, bcf_hdr_nsamples(hdr)); - // tmpia[0] = 1; - // tmpia[1] = 8; - // tmpia[2] = 5; - // bcf_update_format_int32(hdr, rec, "DP", tmpia, bcf_hdr_nsamples(hdr)); - // tmpia[0] = 51; - // tmpia[1] = 51; - // tmpia[2] = 51; - // tmpia[3] = 51; - // tmpia[4] = bcf_int32_missing; - // tmpia[5] = bcf_int32_missing; - // bcf_update_format_int32(hdr, rec, "HQ", tmpia, bcf_hdr_nsamples(hdr)*2); - // char *tmp_str[] = {"String1","SomeOtherString2","YetAnotherString3"}; - // bcf_update_format_string(hdr, rec, "TS", (const char**)tmp_str, 3); - // bcf_write1(fp, hdr, rec); - // // 20 1110696 . A G,T 67 . NS=2;DP=10;AF=0.333,.;AA=T;DB GT 2 1 ./. - // bcf_clear1(rec); - // rec->rid = bcf_hdr_name2id(hdr, "20"); - // rec->pos = 1110695; - // bcf_update_alleles_str(hdr, rec, "A,G,T"); - // rec->qual = 67; - // tmpi = 2; - // bcf_update_info_int32(hdr, rec, "NS", &tmpi, 1); - // tmpi = 10; - // bcf_update_info_int32(hdr, rec, "DP", &tmpi, 1); - // float *tmpfa = (float*)malloc(2*sizeof(float)); - // tmpfa[0] = 0.333; - // bcf_float_set_missing(tmpfa[1]); - // bcf_update_info_float(hdr, rec, "AF", tmpfa, 2); - // bcf_update_info_string(hdr, rec, "AA", "T"); - // bcf_update_info_flag(hdr, rec, "DB", NULL, 1); - // tmpia[0] = bcf_gt_phased(2); - // tmpia[1] = bcf_int32_vector_end; - // tmpia[2] = bcf_gt_phased(1); - // tmpia[3] = bcf_int32_vector_end; - // tmpia[4] = bcf_gt_missing; - // tmpia[5] = bcf_gt_missing; - // bcf_update_genotypes(hdr, rec, tmpia, bcf_hdr_nsamples(hdr)*2); - // bcf_write1(fp, hdr, rec); - // free(tmpia); - // free(tmpfa); diff --git a/htslib/test/test-bcf-translate.out b/htslib/test/test-bcf-translate.out deleted file mode 100644 index e021f43..0000000 --- a/htslib/test/test-bcf-translate.out +++ /dev/null @@ -1,18 +0,0 @@ -##fileformat=VCFv4.2 -##FILTER= -##contig= -##contig= -##FILTER= -##FILTER= -##FILTER= -##INFO= -##INFO= -##INFO= -##FORMAT= -##FORMAT= -##FORMAT= -##FILTER= -##INFO= -##FORMAT= -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT SMPL1 SMPL2 -1 1 . G A 0 FLT1;FLT3 INF1=1;INF3=3 FMT1:FMT3 1:3 1:3 diff --git a/htslib/test/test-logging.pl b/htslib/test/test-logging.pl deleted file mode 100755 index 1040b0e..0000000 --- a/htslib/test/test-logging.pl +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env perl -# -# Copyright (C) 2017 Genome Research Ltd. -# -# Author: Anders Kaplan -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -# DEALINGS IN THE SOFTWARE. - -use strict; - -my $log_message_count = 0; -my $file_count = 0; -my $failure_count = 0; - -sub check_log_message -{ - my ($message, $filename, $line_num) = @_; - $log_message_count++; - - unless ($message =~ /^\"([A-Z]|%s)/) - { - print "$filename line $line_num:\n"; - print "Log message should begin with a capital letter: $message.\n"; - $failure_count++; - } - - if ($message =~ /\\n\"$/) - { - print "$filename line $line_num:\n"; - print "Log message should NOT end with a newline: $message.\n"; - $failure_count++; - } - - if ($message =~ /\.\"$/) - { - print "$filename line $line_num:\n"; - print "Log message should NOT end with a full stop: $message.\n"; - $failure_count++; - } -} - -sub check_file -{ - my ($filename) = @_; - $file_count++; - - open(my $fh, '<', $filename) or die "Could not open $filename."; - my $line_num = 1; - my $line = <$fh>; - while ($line) - { - if ($line =~ /hts_log_\w+\s*\(\s*(\"[^\"]*\")/) - { - unless ($line =~ /\\n\"\s*$/) # string constant continues on next line - { - check_log_message($1, $filename, $line_num); - } - } - - $line_num++; - $line = <$fh>; - } -} - -sub check_dir -{ - my ($path) = @_; - foreach my $filename (glob("$path/*.c")) - { - check_file($filename); - } -} - -check_dir(".."); -check_dir("../cram"); - -print "$file_count files scanned\n"; -print "$log_message_count log messages checked\n"; -print "$failure_count errors found\n"; -exit($failure_count > 0); diff --git a/htslib/test/test-regidx.c b/htslib/test/test-regidx.c deleted file mode 100644 index 30844a6..0000000 --- a/htslib/test/test-regidx.c +++ /dev/null @@ -1,118 +0,0 @@ -/* test/test-regidx.c -- Regions index test harness. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Petr Danecek - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include - -#include -#include -#include -#include -#include -#include "hts_internal.h" - -void error(const char *format, ...) -{ - va_list ap; - va_start(ap, format); - vfprintf(stderr, format, ap); - va_end(ap); - exit(-1); -} - -int custom_parse(const char *line, char **chr_beg, char **chr_end, reg_t *reg, void *payload, void *usr) -{ - // Use the standard parser for CHROM,FROM,TO - int i, ret = regidx_parse_tab(line,chr_beg,chr_end,reg,NULL,NULL); - if ( ret!=0 ) return ret; - - // Skip the fields that were parsed above - char *ss = (char*) line; - while ( *ss && isspace_c(*ss) ) ss++; - for (i=0; i<3; i++) - { - while ( *ss && !isspace_c(*ss) ) ss++; - if ( !*ss ) return -2; // wrong number of fields - while ( *ss && isspace_c(*ss) ) ss++; - } - if ( !*ss ) return -2; - - // Parse the payload - char *se = ss; - while ( *se && !isspace_c(*se) ) se++; - char **dat = (char**) payload; - *dat = (char*) malloc(se-ss+1); - memcpy(*dat,ss,se-ss+1); - (*dat)[se-ss] = 0; - return 0; -} -void custom_free(void *payload) -{ - char **dat = (char**)payload; - free(*dat); -} - -int main(int argc, char **argv) -{ - // Init index with no file name, we will insert the regions manually - regidx_t *idx = regidx_init(NULL,custom_parse,custom_free,sizeof(char*),NULL); - if ( !idx ) error("init failed\n"); - - // Insert regions - char *line; - line = "1 10000000 10000000 1:10000000-10000000"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line); - line = "1 20000000 20000001 1:20000000-20000001"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line); - line = "1 20000002 20000002 1:20000002-20000002"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line); - line = "1 30000000 30000000 1:30000000-30000000"; if ( regidx_insert(idx,line)!=0 ) error("insert failed: %s\n", line); - - // Finish initialization - regidx_insert(idx,NULL); - - // Test - regitr_t itr; - int from, to; - - from = to = 10000000; - if ( !regidx_overlap(idx,"1",from-1,to-1,&itr) ) error("query failed: 1:%d-%d\n",from,to); - if ( strcmp("1:10000000-10000000",REGITR_PAYLOAD(itr,char*)) ) error("query failed: 1:%d-%d vs %s\n", from,to,REGITR_PAYLOAD(itr,char*)); - if ( !regidx_overlap(idx,"1",from-2,to-1,&itr) ) error("query failed: 1:%d-%d\n",from-1,to); - if ( !regidx_overlap(idx,"1",from-2,to+3,&itr) ) error("query failed: 1:%d-%d\n",from-1,to+2); - if ( regidx_overlap(idx,"1",from-2,to-2,&itr) ) error("query failed: 1:%d-%d\n",from-1,to-1); - - from = to = 20000000; - if ( !regidx_overlap(idx,"1",from-1,to-1,&itr) ) error("query failed: 1:%d-%d\n",from,to); - - from = to = 20000002; - if ( !regidx_overlap(idx,"1",from-1,to-1,&itr) ) error("query failed: 1:%d-%d\n",from,to); - - from = to = 30000000; - if ( !regidx_overlap(idx,"1",from-1,to-1,&itr) ) error("query failed: 1:%d-%d\n",from,to); - - // Clean up - regidx_destroy(idx); - - return 0; -} - - diff --git a/htslib/test/test-vcf-api.c b/htslib/test/test-vcf-api.c deleted file mode 100644 index df0fa3f..0000000 --- a/htslib/test/test-vcf-api.c +++ /dev/null @@ -1,402 +0,0 @@ -/* test/test-vcf-api.c -- VCF test harness. - - Copyright (C) 2013, 2014 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include -#include -#include -#include -#include - -void write_bcf(char *fname) -{ - // Init - htsFile *fp = hts_open(fname,"wb"); - bcf_hdr_t *hdr = bcf_hdr_init("w"); - bcf1_t *rec = bcf_init1(); - - // Create VCF header - kstring_t str = {0,0,0}; - bcf_hdr_append(hdr, "##fileDate=20090805"); - bcf_hdr_append(hdr, "##FORMAT="); - bcf_hdr_append(hdr, "##INFO="); - bcf_hdr_append(hdr, "##FILTER="); - bcf_hdr_append(hdr, "##unused="); - bcf_hdr_append(hdr, "##unused=unformatted text 1"); - bcf_hdr_append(hdr, "##unused=unformatted text 2"); - bcf_hdr_append(hdr, "##contig="); - bcf_hdr_append(hdr, "##source=myImputationProgramV3.1"); - bcf_hdr_append(hdr, "##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta"); - bcf_hdr_append(hdr, "##contig="); - bcf_hdr_append(hdr, "##phasing=partial"); - bcf_hdr_append(hdr, "##INFO="); - bcf_hdr_append(hdr, "##INFO="); - bcf_hdr_append(hdr, "##INFO="); - bcf_hdr_append(hdr, "##INFO="); - bcf_hdr_append(hdr, "##INFO="); - bcf_hdr_append(hdr, "##INFO="); - bcf_hdr_append(hdr, "##FILTER="); - bcf_hdr_append(hdr, "##FILTER="); - bcf_hdr_append(hdr, "##FORMAT="); - bcf_hdr_append(hdr, "##FORMAT="); - bcf_hdr_append(hdr, "##FORMAT="); - bcf_hdr_append(hdr, "##FORMAT="); - bcf_hdr_append(hdr, "##FORMAT="); - - bcf_hdr_add_sample(hdr, "NA00001"); - bcf_hdr_add_sample(hdr, "NA00002"); - bcf_hdr_add_sample(hdr, "NA00003"); - bcf_hdr_add_sample(hdr, NULL); // to update internal structures - bcf_hdr_write(fp, hdr); - - - // Add a record - // 20 14370 rs6054257 G A 29 PASS NS=3;DP=14;AF=0.5;DB;H2 GT:GQ:DP:HQ 0|0:48:1:51,51 1|0:48:8:51,51 1/1:43:5:.,. - // .. CHROM - rec->rid = bcf_hdr_name2id(hdr, "20"); - // .. POS - rec->pos = 14369; - // .. ID - bcf_update_id(hdr, rec, "rs6054257"); - // .. REF and ALT - bcf_update_alleles_str(hdr, rec, "G,A"); - // .. QUAL - rec->qual = 29; - // .. FILTER - int32_t tmpi = bcf_hdr_id2int(hdr, BCF_DT_ID, "PASS"); - bcf_update_filter(hdr, rec, &tmpi, 1); - // .. INFO - tmpi = 3; - bcf_update_info_int32(hdr, rec, "NS", &tmpi, 1); - tmpi = 14; - bcf_update_info_int32(hdr, rec, "DP", &tmpi, 1); - float tmpf = 0.5; - bcf_update_info_float(hdr, rec, "AF", &tmpf, 1); - bcf_update_info_flag(hdr, rec, "DB", NULL, 1); - bcf_update_info_flag(hdr, rec, "H2", NULL, 1); - // .. FORMAT - int32_t *tmpia = (int*)malloc(bcf_hdr_nsamples(hdr)*2*sizeof(int)); - tmpia[0] = bcf_gt_phased(0); - tmpia[1] = bcf_gt_phased(0); - tmpia[2] = bcf_gt_phased(1); - tmpia[3] = bcf_gt_phased(0); - tmpia[4] = bcf_gt_unphased(1); - tmpia[5] = bcf_gt_unphased(1); - bcf_update_genotypes(hdr, rec, tmpia, bcf_hdr_nsamples(hdr)*2); - tmpia[0] = 48; - tmpia[1] = 48; - tmpia[2] = 43; - bcf_update_format_int32(hdr, rec, "GQ", tmpia, bcf_hdr_nsamples(hdr)); - tmpia[0] = 1; - tmpia[1] = 8; - tmpia[2] = 5; - bcf_update_format_int32(hdr, rec, "DP", tmpia, bcf_hdr_nsamples(hdr)); - tmpia[0] = 51; - tmpia[1] = 51; - tmpia[2] = 51; - tmpia[3] = 51; - tmpia[4] = bcf_int32_missing; - tmpia[5] = bcf_int32_missing; - bcf_update_format_int32(hdr, rec, "HQ", tmpia, bcf_hdr_nsamples(hdr)*2); - char *tmp_str[] = {"String1","SomeOtherString2","YetAnotherString3"}; - bcf_update_format_string(hdr, rec, "TS", (const char**)tmp_str, 3); - bcf_write1(fp, hdr, rec); - - // 20 1110696 . A G,T 67 . NS=2;DP=10;AF=0.333,.;AA=T;DB GT 2 1 ./. - bcf_clear1(rec); - rec->rid = bcf_hdr_name2id(hdr, "20"); - rec->pos = 1110695; - bcf_update_alleles_str(hdr, rec, "A,G,T"); - rec->qual = 67; - tmpi = 2; - bcf_update_info_int32(hdr, rec, "NS", &tmpi, 1); - tmpi = 10; - bcf_update_info_int32(hdr, rec, "DP", &tmpi, 1); - float *tmpfa = (float*)malloc(2*sizeof(float)); - tmpfa[0] = 0.333; - bcf_float_set_missing(tmpfa[1]); - bcf_update_info_float(hdr, rec, "AF", tmpfa, 2); - bcf_update_info_string(hdr, rec, "AA", "T"); - bcf_update_info_flag(hdr, rec, "DB", NULL, 1); - tmpia[0] = bcf_gt_phased(2); - tmpia[1] = bcf_int32_vector_end; - tmpia[2] = bcf_gt_phased(1); - tmpia[3] = bcf_int32_vector_end; - tmpia[4] = bcf_gt_missing; - tmpia[5] = bcf_gt_missing; - bcf_update_genotypes(hdr, rec, tmpia, bcf_hdr_nsamples(hdr)*2); - bcf_write1(fp, hdr, rec); - - free(tmpia); - free(tmpfa); - - // Clean - free(str.s); - bcf_destroy1(rec); - bcf_hdr_destroy(hdr); - int ret; - if ( (ret=hts_close(fp)) ) - { - fprintf(stderr,"hts_close(%s): non-zero status %d\n",fname,ret); - exit(ret); - } -} - -void bcf_to_vcf(char *fname) -{ - htsFile *fp = hts_open(fname,"rb"); - bcf_hdr_t *hdr = bcf_hdr_read(fp); - bcf1_t *rec = bcf_init1(); - - char *gz_fname = (char*) malloc(strlen(fname)+4); - snprintf(gz_fname,strlen(fname)+4,"%s.gz",fname); - htsFile *out = hts_open(gz_fname,"wg"); - - bcf_hdr_t *hdr_out = bcf_hdr_dup(hdr); - bcf_hdr_remove(hdr_out,BCF_HL_STR,"unused"); - bcf_hdr_remove(hdr_out,BCF_HL_GEN,"unused"); - bcf_hdr_remove(hdr_out,BCF_HL_FLT,"Flt"); - bcf_hdr_remove(hdr_out,BCF_HL_INFO,"UI"); - bcf_hdr_remove(hdr_out,BCF_HL_FMT,"UF"); - bcf_hdr_remove(hdr_out,BCF_HL_CTG,"Unused"); - bcf_hdr_write(out, hdr_out); - - while ( bcf_read1(fp, hdr, rec)>=0 ) - { - bcf_write1(out, hdr_out, rec); - - // Test problems caused by bcf1_sync: the data block - // may be realloced, also the unpacked structures must - // get updated. - bcf_unpack(rec, BCF_UN_STR); - bcf_update_id(hdr, rec, 0); - bcf_update_format_int32(hdr, rec, "GQ", NULL, 0); - - bcf1_t *dup = bcf_dup(rec); // force bcf1_sync call - bcf_write1(out, hdr_out, dup); - bcf_destroy1(dup); - - bcf_update_alleles_str(hdr_out, rec, "G,A"); - int32_t tmpi = 99; - bcf_update_info_int32(hdr_out, rec, "DP", &tmpi, 1); - int32_t tmpia[] = {9,9,9}; - bcf_update_format_int32(hdr_out, rec, "DP", tmpia, 3); - - bcf_write1(out, hdr_out, rec); - } - - bcf_destroy1(rec); - bcf_hdr_destroy(hdr); - bcf_hdr_destroy(hdr_out); - int ret; - if ( (ret=hts_close(fp)) ) - { - fprintf(stderr,"hts_close(%s): non-zero status %d\n",fname,ret); - exit(ret); - } - if ( (ret=hts_close(out)) ) - { - fprintf(stderr,"hts_close(%s): non-zero status %d\n",gz_fname,ret); - exit(ret); - } - - - // read gzip, write stdout - htsFile *gz_in = hts_open(gz_fname, "r"); - if ( !gz_in ) - { - fprintf(stderr,"Could not read: %s\n", gz_fname); - exit(1); - } - - kstring_t line = {0,0,0}; - while ( hts_getline(gz_in, KS_SEP_LINE, &line)>0 ) - { - kputc('\n',&line); - fwrite(line.s,1,line.l,stdout); - } - - if ( (ret=hts_close(gz_in)) ) - { - fprintf(stderr,"hts_close(%s): non-zero status %d\n",gz_fname,ret); - exit(ret); - } - free(line.s); - free(gz_fname); -} - -void iterator(const char *fname) -{ - htsFile *fp = hts_open(fname, "r"); - bcf_hdr_t *hdr = bcf_hdr_read(fp); - hts_idx_t *idx; - hts_itr_t *iter; - - bcf_index_build(fname, 0); - idx = bcf_index_load(fname); - - iter = bcf_itr_queryi(idx, bcf_hdr_name2id(hdr, "20"), 1110600, 1110800); - bcf_itr_destroy(iter); - - iter = bcf_itr_querys(idx, hdr, "20:1110600-1110800"); - bcf_itr_destroy(iter); - - hts_idx_destroy(idx); - bcf_hdr_destroy(hdr); - int ret; - if ( (ret=hts_close(fp)) ) - { - fprintf(stderr,"hts_close(%s): non-zero status %d\n",fname,ret); - exit(ret); - } -} - -void test_get_info_values(const char *fname) -{ - htsFile *fp = hts_open(fname, "r"); - bcf_hdr_t *hdr = bcf_hdr_read(fp); - bcf1_t *line = bcf_init(); - - while (bcf_read(fp, hdr, line) == 0) - { - float *afs = 0; - int count = 0; - int ret = bcf_get_info_float(hdr, line, "AF", &afs, &count); - - if (line->pos == 14369) - { - if (ret != 1 || afs[0] != 0.5f) - { - fprintf(stderr, "AF on position 14370 should be 0.5\n"); - exit(-1); - } - } - else - { - if (ret != 2 || afs[0] != 0.333f || !bcf_float_is_missing(afs[1])) - { - fprintf(stderr, "AF on position 1110696 should be 0.333, missing\n"); - exit(-1); - } - } - - free(afs); - } - - bcf_destroy(line); - bcf_hdr_destroy(hdr); - hts_close(fp); -} - -void write_format_values(const char *fname) -{ - // Init - htsFile *fp = hts_open(fname, "wb"); - bcf_hdr_t *hdr = bcf_hdr_init("w"); - bcf1_t *rec = bcf_init1(); - - // Create VCF header - bcf_hdr_append(hdr, "##contig="); - bcf_hdr_append(hdr, "##FORMAT="); - bcf_hdr_add_sample(hdr, "S"); - bcf_hdr_add_sample(hdr, NULL); // to update internal structures - bcf_hdr_write(fp, hdr); - - // Add a record - // .. FORMAT - float test[4]; - bcf_float_set_missing(test[0]); - test[1] = 47.11f; - bcf_float_set_vector_end(test[2]); - test[3] = -1.2e-13; - bcf_update_format_float(hdr, rec, "TF", test, 4); - bcf_write1(fp, hdr, rec); - - bcf_destroy1(rec); - bcf_hdr_destroy(hdr); - int ret; - if ((ret = hts_close(fp))) - { - fprintf(stderr, "hts_close(%s): non-zero status %d\n", fname, ret); - exit(ret); - } -} - -void check_format_values(const char *fname) -{ - htsFile *fp = hts_open(fname, "r"); - bcf_hdr_t *hdr = bcf_hdr_read(fp); - bcf1_t *line = bcf_init(); - - while (bcf_read(fp, hdr, line) == 0) - { - float *values = 0; - int count = 0; - int ret = bcf_get_format_float(hdr, line, "TF", &values, &count); - - // NOTE the return value from bcf_get_format_float is different from - // bcf_get_info_float in the sense that vector-end markers also count. - if (ret != 4 || - count < ret || - !bcf_float_is_missing(values[0]) || - values[1] != 47.11f || - !bcf_float_is_vector_end(values[2]) || - !bcf_float_is_vector_end(values[3])) - { - fprintf(stderr, "bcf_get_format_float didn't produce the expected output.\n"); - exit(-1); - } - - free(values); - } - - bcf_destroy(line); - bcf_hdr_destroy(hdr); - hts_close(fp); -} - -void test_get_format_values(const char *fname) -{ - write_format_values(fname); - check_format_values(fname); -} - -int main(int argc, char **argv) -{ - char *fname = argc>1 ? argv[1] : "rmme.bcf"; - - // format test. quiet unless there's a failure - test_get_format_values(fname); - - // main test. writes to stdout - write_bcf(fname); - bcf_to_vcf(fname); - iterator(fname); - - // additional tests. quiet unless there's a failure. - test_get_info_values(fname); - - return 0; -} diff --git a/htslib/test/test-vcf-api.out b/htslib/test/test-vcf-api.out deleted file mode 100644 index d3bb73e..0000000 --- a/htslib/test/test-vcf-api.out +++ /dev/null @@ -1,28 +0,0 @@ -##fileformat=VCFv4.2 -##FILTER= -##fileDate=20090805 -##unused= -##source=myImputationProgramV3.1 -##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta -##contig= -##phasing=partial -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##FILTER= -##FILTER= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA00001 NA00002 NA00003 -20 14370 rs6054257 G A 29 PASS NS=3;DP=14;AF=0.5;DB;H2 GT:GQ:DP:HQ:TS 0|0:48:1:51,51:String1 1|0:48:8:51,51:SomeOtherString2 1/1:43:5:.,.:YetAnotherString3 -20 14370 . G A 29 PASS NS=3;DP=14;AF=0.5;DB;H2 GT:DP:HQ:TS 0|0:1:51,51:String1 1|0:8:51,51:SomeOtherString2 1/1:5:.,.:YetAnotherString3 -20 14370 . G A 29 PASS NS=3;DP=99;AF=0.5;DB;H2 GT:DP:HQ:TS 0|0:9:51,51:String1 1|0:9:51,51:SomeOtherString2 1/1:9:.,.:YetAnotherString3 -20 1110696 . A G,T 67 . NS=2;DP=10;AF=0.333,.;AA=T;DB GT 2 1 ./. -20 1110696 . A G,T 67 . NS=2;DP=10;AF=0.333,.;AA=T;DB GT 2 1 ./. -20 1110696 . G A 67 . NS=2;DP=99;AF=0.333,.;AA=T;DB GT:DP 2:9 1:9 ./.:9 diff --git a/htslib/test/test-vcf-hdr-in.vcf b/htslib/test/test-vcf-hdr-in.vcf deleted file mode 100644 index 1aba1f4..0000000 --- a/htslib/test/test-vcf-hdr-in.vcf +++ /dev/null @@ -1,25 +0,0 @@ -##fileformat=VCFv4.1 -##fileDate=20150126 -##reference=hs37d5 -##phasing=partial -##FILTER= 200.0"> -##FILTER= -##FILTER= -##FILTER= -##INFO= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA00001 -1 12065947 PTV001 C T,A 29 PASS . GT:GATK:AD:DP:GQ 0/1:0/1:3,2:5:19 -1 109817590 PTV002 G T 77 PASS . GT:GATK:AD:DP:GQ 0/1:0/1:3,2:5:20 -1 153791300 PTV003 CTG C 81 PASS . GT:GATK:AD:DP:GQ 0/1:0/1:3,2:5:21 -1 156104666 PTV004 TTGAGAGCCGGCTGGCGGAT TCC 30 PASS . GT:GATK:AD:DP:GQ 0/1:0/1:3,2:5:22 -1 156108541 PTV005 G GG 31 PASS . GT:GATK:AD:DP:GQ 0/1:0/1:3,2:5:23 -1 161279695 PTV006 T C,A 32 PASS . GT:GATK:AD:DP:GQ 0/1:0/1:3,2:5:24 -1 169519049 PTV007 T . 35 PASS . GT:GATK:AD:DP:GQ 0/1:0/1:3,2:5:24 -1 226125468 PTV097 G A 99 PASS . GT:GATK:AD:DP:GQ 0/1:0/1:3,2:5:109 -16 2103394 PTV056 C T 68 PASS . GT:GATK:AD:DP:GQ 0/1:0/1:3,2:5:72 -4 31789170 PTV021 G . 77 PASS . GT:GATK:AD:DP:GQ 0/1:0/1:3,2:5:38 diff --git a/htslib/test/test-vcf-hdr.out b/htslib/test/test-vcf-hdr.out deleted file mode 100644 index 578ef39..0000000 --- a/htslib/test/test-vcf-hdr.out +++ /dev/null @@ -1,16 +0,0 @@ -##fileformat=VCFv4.1 -##FILTER= -##fileDate=20150126 -##reference=hs37d5 -##phasing=partial -##FILTER= 200.0"> -##FILTER= -##FILTER= -##FILTER= -##INFO= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA00001 diff --git a/htslib/test/test-vcf-sweep.c b/htslib/test/test-vcf-sweep.c deleted file mode 100644 index 44c2fb1..0000000 --- a/htslib/test/test-vcf-sweep.c +++ /dev/null @@ -1,114 +0,0 @@ -/* test/test-vcf-sweep.c -- VCF test harness. - - Copyright (C) 2013 Genome Research Ltd. - - Author: Petr Danecek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include -#include - -int main(int argc, char **argv) -{ - if ( argc!=2 ) - { - fprintf(stderr,"Usage: test-vcf-sweep \n"); - return 1; - } - - // Init variables. The checksum is just for this test program to output - // something and verify that all sites are read in both passes - fwd and - // bwd. - bcf_sweep_t *sw = bcf_sweep_init(argv[1]); - bcf_hdr_t *hdr = bcf_sweep_hdr(sw); - int chksum = 0; - - // First we must sweep forward and read the whole file to build an index. - // If this is undesirable, we can require the presence of a .gzi index - // which can be created with `bgzip -r` from the samtools/htslib package - bcf1_t *rec; - while ( (rec = bcf_sweep_fwd(sw)) ) chksum += rec->pos+1; - printf("fwd position chksum: %d\n", chksum); - - // Now sweep backward. - chksum = 0; - while ( (rec = bcf_sweep_bwd(sw)) ) chksum += rec->pos+1; - printf("bwd position chksum: %d\n", chksum); - - // And forward and backward again, this time summing the PL vectors - int i,j, mPLs = 0, nPLs; - int32_t *PLs = NULL; - chksum = 0; - while ( (rec = bcf_sweep_fwd(sw)) ) - { - // get copy of the PL vectors - nPLs = bcf_get_format_int32(hdr, rec, "PL", &PLs, &mPLs); - if ( !nPLs ) continue; // PL not present - - // how many values are there per sample - int nvals = nPLs / bcf_hdr_nsamples(hdr); - - int32_t *ptr = PLs; - for (i=0; i -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -# DEALINGS IN THE SOFTWARE. - -use strict; -use warnings; -use Carp; -use FindBin; -use lib "$FindBin::Bin"; -use Getopt::Long; -use File::Temp qw/ tempfile tempdir /; -use IO::Handle; - -my $opts = parse_params(); - -test_view($opts,0); -test_view($opts,4); - -test_vcf_api($opts,out=>'test-vcf-api.out'); -test_vcf_sweep($opts,out=>'test-vcf-sweep.out'); -test_vcf_various($opts); -test_bcf_sr_sort($opts); -test_command($opts,cmd=>'test-bcf-translate -',out=>'test-bcf-translate.out'); -test_convert_padded_header($opts); -test_rebgzip($opts); -test_logging($opts); -test_realn($opts); - -print "\nNumber of tests:\n"; -printf " total .. %d\n", $$opts{nok}+$$opts{nfailed}; -printf " passed .. %d\n", $$opts{nok}; -printf " failed .. %d\n", $$opts{nfailed}; -print "\n"; - -exit ($$opts{nfailed} > 0); - -#-------------------- - -sub error -{ - my (@msg) = @_; - if ( scalar @msg ) { confess @msg; } - print - "About: samtools/htslib consistency test script\n", - "Usage: test.pl [OPTIONS]\n", - "Options:\n", - " -r, --redo-outputs Recreate expected output files.\n", - " -t, --temp-dir When given, temporary files will not be removed.\n", - " -f, --fail-fast Fail-fast mode: exit as soon as a test fails.\n", - " -h, -?, --help This help message.\n", - "\n"; - exit 1; -} - -sub cygpath { - my ($path) = @_; - $path = `cygpath -m $path`; - $path =~ s/\r?\n//; - return $path -} - -sub safe_tempdir -{ - my $dir = tempdir(CLEANUP=>1); - if ($^O =~ /^msys/) { - $dir = cygpath($dir); - } - return $dir; -} - -sub parse_params -{ - my $opts = { keep_files=>0, nok=>0, nfailed=>0 }; - my $help; - Getopt::Long::Configure('bundling'); - my $ret = GetOptions ( - 't|temp-dir:s' => \$$opts{keep_files}, - 'r|redo-outputs' => \$$opts{redo_outputs}, - 'f|fail-fast' => \$$opts{fail_fast}, - 'h|?|help' => \$help - ); - if ( !$ret or $help ) { error(); } - $$opts{tmp} = $$opts{keep_files} ? $$opts{keep_files} : safe_tempdir(); - if ( $$opts{keep_files} ) { cmd("mkdir -p $$opts{keep_files}"); } - $$opts{path} = $FindBin::RealBin; - $$opts{bin} = $FindBin::RealBin; - $$opts{bin} =~ s{/test/?$}{}; - if ($^O =~ /^msys/) { - $$opts{path} = cygpath($$opts{path}); - $$opts{bin} = cygpath($$opts{bin}); - } - - return $opts; -} -sub _cmd -{ - my ($cmd) = @_; - my $kid_io; - my @out; - my $pid = open($kid_io, "-|"); - if ( !defined $pid ) { error("Cannot fork: $!"); } - if ($pid) - { - # parent - @out = <$kid_io>; - close($kid_io); - } - else - { - # Example of how to embed Valgrind into the testing framework. - # TEST_PRECMD="valgrind --leak-check=full --suppressions=$ENV{HOME}/valgrind.supp" make check - $cmd = "$ENV{TEST_PRECMD} $cmd" if exists $ENV{TEST_PRECMD}; - - # child - exec('bash', '-o','pipefail','-c', $cmd) or error("Cannot execute the command [/bin/sh -o pipefail -c $cmd]: $!"); - } - return ($? >> 8, join('',@out)); -} -sub cmd -{ - my ($cmd) = @_; - my ($ret,$out) = _cmd($cmd); - if ( $ret ) { error("The command failed [$ret]: $cmd\n", $out); } - return $out; -} -sub test_cmd -{ - my ($opts,%args) = @_; - if ( !exists($args{out}) ) - { - if ( !exists($args{in}) ) { error("FIXME: expected out or in key\n"); } - $args{out} = "$args{in}.out"; - } - my ($package, $filename, $line, $test)=caller(1); - $test =~ s/^.+:://; - - print "$test:\n"; - print "\t$args{cmd}\n"; - - my ($ret,$out) = _cmd("$args{cmd}"); - if ( $ret ) { failed($opts,$test); return; } - if ( $$opts{redo_outputs} && -e "$$opts{path}/$args{out}" ) - { - rename("$$opts{path}/$args{out}","$$opts{path}/$args{out}.old"); - open(my $fh,'>',"$$opts{path}/$args{out}") or error("$$opts{path}/$args{out}: $!"); - print $fh $out; - close($fh); - my ($ret,$out) = _cmd("cmp $$opts{path}/$args{out} $$opts{path}/$args{out}.old"); - if ( !$ret && $out eq '' ) { unlink("$$opts{path}/$args{out}.old"); } - else - { - print "\tthe expected output changed, saving:\n"; - print "\t old .. $$opts{path}/$args{out}.old\n"; - print "\t new .. $$opts{path}/$args{out}\n"; - } - } - my $exp = ''; - if ( open(my $fh,'<',"$$opts{path}/$args{out}") ) - { - my @exp = <$fh>; - $exp = join('',@exp); - $exp =~ s/\015?\012/\n/g; - close($fh); - } - elsif ( !$$opts{redo_outputs} ) { failed($opts,$test,"$$opts{path}/$args{out}: $!"); return; } - - (my $out_lf = $out) =~ s/\015?\012/\n/g; - if ( $exp ne $out_lf ) - { - open(my $fh,'>',"$$opts{path}/$args{out}.new") or error("$$opts{path}/$args{out}.new"); - print $fh $out; - close($fh); - if ( !-e "$$opts{path}/$args{out}" ) - { - rename("$$opts{path}/$args{out}.new","$$opts{path}/$args{out}") or error("rename $$opts{path}/$args{out}.new $$opts{path}/$args{out}: $!"); - print "\tthe file with expected output does not exist, creating new one:\n"; - print "\t\t$$opts{path}/$args{out}\n"; - } - else - { - failed($opts,$test,"The outputs differ:\n\t\t$$opts{path}/$args{out}\n\t\t$$opts{path}/$args{out}.new"); - } - return; - } - passed($opts,$test); -} -sub failed -{ - my ($opts,$test,$reason) = @_; - $$opts{nfailed}++; - print "\n"; - STDOUT->flush(); - if ( defined $reason ) { print STDERR "\t$reason\n"; } - print STDERR ".. failed ...\n\n"; - STDERR->flush(); - if ($$opts{fail_fast}) { - die "\n"; - } -} -sub passed -{ - my ($opts,$test) = @_; - $$opts{nok}++; - print ".. ok\n\n"; -} -sub is_file_newer -{ - my ($afile,$bfile) = @_; - my (@astat) = stat($afile) or return 0; - my (@bstat) = stat($bfile) or return 0; - if ( $astat[9]>$bstat[9] ) { return 1 } - return 0; -} - - -# The tests -------------------------- - -my $test_view_failures; -sub testv { - my ($opts, $cmd) = @_; - print " $cmd\n"; - my ($ret, $out) = _cmd($cmd); - if ($ret != 0) { - STDOUT->flush(); - print STDERR "FAILED\n$out\n"; - STDERR->flush(); - $test_view_failures++; - if ($$opts{fail_fast}) { - die "\n"; - } - } -} - -sub test_view -{ - my ($opts, $nthreads) = @_; - my $tv_args = $nthreads ? "-\@$nthreads" : ""; - - foreach my $sam (glob("*#*.sam")) { - my ($base, $ref) = ($sam =~ /((.*)#.*)\.sam/); - $ref .= ".fa"; - - my $bam = "$base.tmp.bam"; - my $cram = "$base.tmp.cram"; - - my $md = "-nomd"; - if ($sam =~ /^md/) { - $md = ""; - } - - print "test_view testing $sam, ref $ref:\n"; - $test_view_failures = 0; - - # SAM -> BAM -> SAM - testv $opts, "./test_view $tv_args -S -b $sam > $bam"; - testv $opts, "./test_view $tv_args $bam > $bam.sam_"; - testv $opts, "./compare_sam.pl $sam $bam.sam_"; - - # SAM -> BAMu -> SAM - testv $opts, "./test_view $tv_args -S -l0 -b $sam > $bam"; - testv $opts, "./test_view $tv_args $bam > $bam.sam_"; - testv $opts, "./compare_sam.pl $sam $bam.sam_"; - - # SAM -> CRAM2 -> SAM - testv $opts, "./test_view $tv_args -t $ref -S -C -o VERSION=2.1 $sam > $cram"; - testv $opts, "./test_view $tv_args -D $cram > $cram.sam_"; - testv $opts, "./compare_sam.pl $md $sam $cram.sam_"; - - # BAM -> CRAM2 -> BAM -> SAM - $cram = "$bam.cram"; - testv $opts, "./test_view $tv_args -t $ref -C -o VERSION=2.1 $bam > $cram"; - testv $opts, "./test_view $tv_args -b -D $cram > $cram.bam"; - testv $opts, "./test_view $tv_args $cram.bam > $cram.bam.sam_"; - testv $opts, "./compare_sam.pl $md $sam $cram.bam.sam_"; - - # SAM -> CRAM3u -> SAM - $cram = "$base.tmp.cram"; - testv $opts, "./test_view $tv_args -t $ref -S -l0 -C -o VERSION=3.0 $sam > $cram"; - testv $opts, "./test_view $tv_args -D $cram > $cram.sam_"; - testv $opts, "./compare_sam.pl $md $sam $cram.sam_"; - - # BAM -> CRAM3 -> BAM -> SAM - $cram = "$bam.cram"; - testv $opts, "./test_view $tv_args -t $ref -C -o VERSION=3.0 $bam > $cram"; - testv $opts, "./test_view $tv_args -b -D $cram > $cram.bam"; - testv $opts, "./test_view $tv_args $cram.bam > $cram.bam.sam_"; - testv $opts, "./compare_sam.pl $md $sam $cram.bam.sam_"; - - # CRAM3 -> CRAM2 - $cram = "$base.tmp.cram"; - testv $opts, "./test_view $tv_args -t $ref -C -o VERSION=2.1 $cram > $cram.cram"; - - # CRAM2 -> CRAM3 - testv $opts, "./test_view $tv_args -t $ref -C -o VERSION=3.0 $cram.cram > $cram"; - - # CRAM3 -> CRAM3 + multi-slice - testv $opts, "./test_view $tv_args -t $ref -C -o VERSION=3.0 -o seqs_per_slice=7 -o slices_per_container=5 $cram.cram > $cram"; - testv $opts, "./test_view $tv_args $cram > $cram.sam_"; - testv $opts, "./compare_sam.pl $md $sam $cram.sam_"; - - # Java pre-made CRAM -> SAM - my $jcram = "${base}_java.cram"; - if (-e $jcram) { - my $jsam = "${base}_java.tmp.sam_"; - testv $opts, "./test_view $tv_args -i reference=$ref $jcram > $jsam"; - testv $opts, "./compare_sam.pl -Baux $md $sam $jsam"; - } - - if ($test_view_failures == 0) - { - passed($opts, "$sam conversions"); - } - else - { - failed($opts, "$sam conversions", "$test_view_failures subtests failed"); - } - } - - # BAM and CRAM range queries on prebuilt BAM and CRAM - # The cram file has @SQ UR: set to point to an invalid location to - # force the reference to be reloaded from the one given on the - # command line and nowhere else. REF_PATH should also point to nowhere - # (currently done by the Makefile). This is to test the refseq reference - # counting and reload (Issue #654). - my $regions = "CHROMOSOME_II:2980-2980 CHROMOSOME_IV:1500-1500 CHROMOSOME_II:2980-2980 CHROMOSOME_I:1000-1100"; - testv $opts, "./test_view $tv_args -i reference=ce.fa range.cram $regions > range.tmp"; - testv $opts, "./compare_sam.pl range.tmp range.out"; - - testv $opts, "./test_view $tv_args range.bam $regions > range.tmp"; - testv $opts, "./compare_sam.pl range.tmp range.out"; -} - -sub test_vcf_api -{ - my ($opts,%args) = @_; - test_cmd($opts,%args,cmd=>"$$opts{path}/test-vcf-api $$opts{tmp}/test-vcf-api.bcf"); -} - -sub test_vcf_sweep -{ - my ($opts,%args) = @_; - test_cmd($opts,%args,cmd=>"$$opts{path}/test-vcf-sweep $$opts{tmp}/test-vcf-api.bcf"); -} - -sub test_vcf_various -{ - my ($opts, %args) = @_; - - # Excess spaces in header lines - test_cmd($opts, %args, out => "test-vcf-hdr.out", - cmd => "$$opts{bin}/htsfile -ch $$opts{path}/test-vcf-hdr-in.vcf"); - - # Various VCF parsing issues - test_cmd($opts, %args, out => "formatcols.vcf", - cmd => "$$opts{bin}/htsfile -c $$opts{path}/formatcols.vcf"); - test_cmd($opts, %args, out => "noroundtrip-out.vcf", - cmd => "$$opts{bin}/htsfile -c $$opts{path}/noroundtrip.vcf"); - test_cmd($opts, %args, out => "formatmissing-out.vcf", - cmd => "$$opts{bin}/htsfile -c $$opts{path}/formatmissing.vcf"); -} - -sub write_multiblock_bgzf { - my ($name, $frags) = @_; - - my $tmp = "$name.tmp"; - open(my $out, '>', $name) || die "Couldn't open $name $!\n"; - for (my $i = 0; $i < @$frags; $i++) { - local $/; - open(my $f, '>', $tmp) || die "Couldn't open $tmp : $!\n"; - print $f $frags->[$i]; - close($f) || die "Error writing to $tmp: $!\n"; - open(my $bgz, '-|', "$$opts{bin}/bgzip -c $tmp") - || die "Couldn't open pipe to bgzip: $!\n"; - my $compressed = <$bgz>; - close($bgz) || die "Error running bgzip\n"; - if ($i < $#$frags) { - # Strip EOF block - $compressed =~ s/\x1f\x8b\x08\x04\x00{5}\xff\x06\x00\x42\x43\x02\x00\x1b\x00\x03\x00{9}$//; - } - print $out $compressed; - } - close($out) || die "Error writing to $name: $!\n"; - unlink($tmp); -} - -sub test_rebgzip -{ - my ($opts, %args) = @_; - - # Write a file that should match the one we ship - my @frags = qw(1 22 333 4444 55555); - my $mb = "$$opts{path}/bgziptest.txt.tmp.gz"; - write_multiblock_bgzf($mb, \@frags); - - # See if it really does match - my ($ret, $out) = _cmd("cmp $mb $$opts{path}/bgziptest.txt.gz"); - - if (!$ret && $out eq '') { # If it does, use the original - test_cmd($opts, %args, out => "bgziptest.txt.gz", - cmd => "$$opts{bin}/bgzip -I $$opts{path}/bgziptest.txt.gz.gzi -c -g $$opts{path}/bgziptest.txt"); - } else { - # Otherwise index the one we just made and test that - print "test_rebgzip: Alternate zlib/deflate library detected\n"; - cmd("$$opts{bin}/bgzip -I $mb.gzi -r $mb"); - test_cmd($opts, %args, out => "bgziptest.txt.tmp.gz", - cmd => "$$opts{bin}/bgzip -I $mb.gzi -c -g $$opts{path}/bgziptest.txt"); - } -} - -sub test_convert_padded_header -{ - my ($opts, %args) = @_; - - $args{out} = "headernul.tmp.cram"; - cmd("$$opts{path}/test_view -t ce.fa -C ce#1.sam > $args{out}"); - - foreach my $nuls (0, 1, 678) { - my $nulsbam = "$$opts{tmp}/headernul$nuls.bam"; - cmd("$$opts{path}/test_view -b -Z $nuls ce#1.sam > $nulsbam"); - test_cmd($opts, %args, - cmd => "$$opts{path}/test_view -t ce.fa -C $nulsbam"); - } -} - -sub test_bcf_sr_sort -{ - my ($opts, %args) = @_; - for (my $i=0; $i<10; $i++) - { - my $seed = int(rand(time)); - my $test = 'test-bcf-sr'; - my $cmd = "$$opts{path}/test-bcf-sr.pl -t $$opts{tmp} -s $seed"; - print "$test:\n"; - print "\t$cmd\n"; - my ($ret,$out) = _cmd($cmd); - if ( $ret ) { failed($opts,$test); } - else { passed($opts,$test); } - } -} - -sub test_command -{ - my ($opts, %args) = @_; - my $cmd = "$$opts{path}/$args{cmd}"; - test_cmd($opts, %args, cmd=>$cmd); -} - -sub test_logging -{ - my ($opts) = @_; - my $test = 'test-logging'; - my $cmd = "$$opts{path}/test-logging.pl"; - print "$test:\n"; - print "\t$cmd\n"; - my ($ret,$out) = _cmd($cmd); - if ( $ret ) { failed($opts,$test); } - else { passed($opts,$test); } -} - -sub test_realn { - my ($opts) = @_; - - my $test_realn = "$$opts{path}/test_realn"; - # Calculate BAQ - test_cmd($opts, cmd => "$test_realn -f $$opts{path}/realn01.fa -i $$opts{path}/realn01.sam -o -", out => "realn01_exp.sam"); - test_cmd($opts, cmd => "$test_realn -f $$opts{path}/realn02.fa -i $$opts{path}/realn02.sam -o -", out => "realn02_exp.sam"); - - # Calculate and apply BAQ - test_cmd($opts, cmd => "$test_realn -a -f $$opts{path}/realn01.fa -i $$opts{path}/realn01.sam -o -", out => "realn01_exp-a.sam"); - test_cmd($opts, cmd => "$test_realn -a -f $$opts{path}/realn02.fa -i $$opts{path}/realn02.sam -o -", out => "realn02_exp-a.sam"); - - # Calculate extended BAQ - test_cmd($opts, cmd => "$test_realn -e -f $$opts{path}/realn01.fa -i $$opts{path}/realn01.sam -o -", out => "realn01_exp-e.sam"); - test_cmd($opts, cmd => "$test_realn -e -f $$opts{path}/realn02.fa -i $$opts{path}/realn02.sam -o -", out => "realn02_exp-e.sam"); - - # Recalculate BAQ - test_cmd($opts, cmd => "$test_realn -r -f $$opts{path}/realn02.fa -i $$opts{path}/realn02-r.sam -o -", out => "realn02_exp.sam"); - - # Apply from existing BQ tags - test_cmd($opts, cmd => "$test_realn -a -f $$opts{path}/realn02.fa -i $$opts{path}/realn02_exp.sam -o -", out => "realn02_exp-a.sam"); - - # Revert quality values (using data in ZQ tags) - test_cmd($opts, cmd => "$test_realn -f $$opts{path}/realn02.fa -i $$opts{path}/realn02_exp-a.sam -o -", out => "realn02_exp.sam"); -} diff --git a/htslib/test/test_bgzf.c b/htslib/test/test_bgzf.c deleted file mode 100644 index 93194ac..0000000 --- a/htslib/test/test_bgzf.c +++ /dev/null @@ -1,784 +0,0 @@ -/* test/test_bgzf.c -- bgzf unit tests - - Copyright (C) 2017 Genome Research Ltd - - Author: Robert Davies - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include "htslib/bgzf.h" -#include "htslib/hfile.h" -#include "hfile_internal.h" - -const char *bgzf_suffix = ".gz"; -const char *idx_suffix = ".gzi"; -const char *tmp_suffix = ".tmp"; - -#define BUFSZ 32768 - -typedef struct { - char *src_plain; - char *src_bgzf; - char *src_idx; - char *tmp_bgzf; - char *tmp_idx; - FILE *f_plain; - FILE *f_bgzf; - FILE *f_idx; - const unsigned char *text; - size_t ltext; -} Files; - -typedef enum { - USE_BGZF_OPEN, - USE_BGZF_DOPEN, - USE_BGZF_HOPEN -} Open_method; - -static FILE * try_fopen(const char *name, const char *mode) { - FILE *f = fopen(name, mode); - if (!f) { - fprintf(stderr, "Couldn't open %s : %s\n", name, strerror(errno)); - return NULL; - } - return f; -} - -static int try_fclose(FILE **file, const char *name, const char *func) { - FILE *to_close = *file; - *file = NULL; - if (fclose(to_close) != 0) { - fprintf(stderr, "%s : Error on closing %s : %s\n", - func, name, strerror(errno)); - return -1; - } - - return 0; -} - -static ssize_t try_fread(FILE *in, void *buf, size_t len, - const char *func, const char *fname) { - size_t got = fread(buf, 1, len, in); - if (got == 0 && ferror(in)) { - fprintf(stderr, "%s : Error reading from %s : %s\n", - func, fname, strerror(errno)); - return -1; - } - return got; -} - -static int try_fseek_start(FILE *f, const char *name, const char *func) { - if (0 != fseek(f, 0, SEEK_SET)) { - fprintf(stderr, "%s : Couldn't seek on %s : %s\n", - func, name, strerror(errno)); - return -1; - } - return 0; -} - -static BGZF * try_bgzf_open(const char *name, const char *mode, - const char *func) { - BGZF * bgz = bgzf_open(name, mode); - if (!bgz) { - fprintf(stderr, "%s : Couldn't bgzf_open %s with mode %s : %s\n", - func, name, mode, strerror(errno)); - return NULL; - } - return bgz; -} - -static BGZF * try_bgzf_dopen(const char *name, const char *mode, - const char *func) { - BGZF *bgz = NULL; - int fd = open(name, hfile_oflags(mode), 0666); - if (fd < 0) { - fprintf(stderr, "%s : Failed to open %s with mode %s : %s\n", - func, name, mode, strerror(errno)); - return NULL; - } - - bgz = bgzf_dopen(fd, mode); - if (!bgz) { - fprintf(stderr, "%s : bgzf_dopen failed on %s mode %s : %s\n", - func, name, mode, strerror(errno)); - close(fd); - return NULL; - } - - return bgz; -} - -static BGZF * try_bgzf_hopen(const char *name, const char *mode, - const char *func) { - hFILE *hfp = hopen(name, mode); - BGZF *bgz = NULL; - - if (!hfp) { - fprintf(stderr, "%s : hopen failed on %s mode %s : %s\n", - func, name, mode, strerror(errno)); - return NULL; - } - - bgz = bgzf_hopen(hfp, mode); - if (!bgz) { - fprintf(stderr, "%s : bgzf_hopen failed on %s mode %s : %s\n", - func, name, mode, strerror(errno)); - hclose_abruptly(hfp); - return NULL; - } - - return bgz; -} - -static int try_bgzf_close(BGZF **bgz, const char *name, const char *func) { - BGZF *to_close = *bgz; - *bgz = NULL; - if (bgzf_close(to_close) != 0) { - fprintf(stderr, "%s : bgzf_close failed on %s : %s\n", - func, name, strerror(errno)); - return -1; - } - return 0; -} - -static ssize_t try_bgzf_read(BGZF *fp, void *data, size_t length, - const char *name, const char *func) { - ssize_t got = bgzf_read(fp, data, length); - if (got < 0) { - fprintf(stderr, "%s : Error from bgzf_read %s : %s\n", - func, name, strerror(errno)); - } - return got; -} - -static ssize_t try_bgzf_write(BGZF *fp, const void *data, size_t length, - const char *name, const char *func) { - ssize_t put = bgzf_write(fp, data, length); - if (put < (ssize_t) length) { - fprintf(stderr, "%s : %s %s : %s\n", - func, put < 0 ? "Error writing to" : "Short write on", - name, strerror(errno)); - return -1; - } - - return put; -} - -static int try_bgzf_compression(BGZF *fp, int expect, - const char *name, const char *func) { - int res = bgzf_compression(fp); - if (res != expect) { - fprintf(stderr, - "%s : Unexpected result %d from bgzf_compression on %s; " - "expected %d\n", - func, res, name, expect); - return -1; - } - return 0; -} - -static int try_bgzf_mt(BGZF *bgz, int nthreads, const char *func) { - if (bgzf_mt(bgz, nthreads, 64) != 0) { - fprintf(stderr, "%s : Error from bgzf_mt : %s\n", - func, strerror(errno)); - return -1; - } - return 0; -} - -static int try_bgzf_index_build_init(BGZF *bgz, - const char *name, const char *func) { - if (bgzf_index_build_init(bgz) != 0) { - fprintf(stderr, "%s : Error from bgzf_index_build_init on %s : %s\n", - func, name, strerror(errno)); - return -1; - } - return 0; -} - -static int try_bgzf_index_load(BGZF *fp, const char *bname, const char *suffix, - const char *func) { - if (bgzf_index_load(fp, bname, suffix) != 0) { - fprintf(stderr, "%s : Couldn't bgzf_index_load %s%s : %s\n", - func, bname, suffix ? suffix : "", strerror(errno)); - return -1; - } - return 0; -} - -static int try_bgzf_index_dump(BGZF *fp, const char *bname, const char *suffix, - const char *func) { - if (bgzf_index_dump(fp, bname, suffix) != 0) { - fprintf(stderr, "%s : Couldn't bgzf_index_dump %s%s : %s\n", - func, bname, suffix ? suffix : "", strerror(errno)); - return -1; - } - return 0; -} - -static int try_bgzf_useek(BGZF *fp, long uoffset, int where, - const char *name, const char *func) { - if (bgzf_useek(fp, uoffset, where) < 0) { - fprintf(stderr, "%s : Error from bgzf_useek(%s, %ld, %d) : %s\n", - func, name, uoffset, where, strerror(errno)); - return -1; - } - return 0; -} - -static int try_bgzf_getc(BGZF *fp, size_t pos, int expected, - const char *name, const char *func) { - int c = bgzf_getc(fp); - if (c != expected) { - fprintf(stderr, - "%s : Unexpected value (%d) from bgzf_getc on %s pos %zu; " - "expected %d\n", - func, c, name, pos, expected); - return -1; - } - return c; -} - -static int compare_buffers(const unsigned char *b1, const unsigned char *b2, - size_t l1, size_t l2, - const char *name1, const char *name2, - const char *func) { - if (l1 != l2) { - fprintf(stderr, "%s : EOF on %s\n", func, l1 < l2 ? name1 : name2); - return -1; - } - if (memcmp(b1, b2, l1) != 0) { - fprintf(stderr, "%s : difference between %s and %s\n", - func, name1, name2); - return -1; - } - - return 0; -} - -static void cleanup(Files *f, int retval) { - /* Remove temp files if successful. If not, leave them for inspection */ - if (retval == EXIT_SUCCESS) { - unlink(f->tmp_bgzf); - unlink(f->tmp_idx); - } - if (f->f_plain) fclose(f->f_plain); - if (f->f_bgzf) fclose(f->f_bgzf); - if (f->f_idx) fclose(f->f_idx); - free(f->src_plain); - free((unsigned char *) f->text); -} - -static int setup(const char *src, Files *f) { - size_t len = (strlen(src) + strlen(bgzf_suffix) + strlen(idx_suffix) - + strlen(tmp_suffix) + 8); - char *mem, *text; - const unsigned int max = 50000; - unsigned int i; - size_t text_sz = max * 8 + 1; - - mem = calloc(5, len); - if (mem == NULL) { - perror(__func__); - return -1; - } - - snprintf(mem, len, "%s", src); - snprintf(mem + len * 1, len, "%s%s", src, bgzf_suffix); - snprintf(mem + len * 2, len, "%s%s%s", src, bgzf_suffix, idx_suffix); - snprintf(mem + len * 3, len, "%s%s%s", src, tmp_suffix, bgzf_suffix); - snprintf(mem + len * 4, len, "%s%s%s%s", - src, tmp_suffix, bgzf_suffix, idx_suffix); - - f->src_plain = mem; - f->src_bgzf = mem + len * 1; - f->src_idx = mem + len * 2; - f->tmp_bgzf = mem + len * 3; - f->tmp_idx = mem + len * 4; - - text = malloc(text_sz); - if (!text) { - perror(__func__); - goto fail; - } - for (i = 0; i < max; i++) snprintf(text + i*8, text_sz - i*8, "%07d\n", i); - f->text = (unsigned char *) text; - f->ltext = text_sz - 1; - - if ((f->f_plain = try_fopen(f->src_plain, "rb")) == NULL) goto fail; - if ((f->f_bgzf = try_fopen(f->src_bgzf, "rb")) == NULL) goto fail; - if ((f->f_idx = try_fopen(f->src_idx, "rb")) == NULL) goto fail; - - return 0; - - fail: - return -1; -} - -static int test_read(Files *f) { - BGZF* bgz; - ssize_t bg_got, f_got; - unsigned char bg_buf[BUFSZ], f_buf[BUFSZ]; - - bgz = try_bgzf_open(f->src_bgzf, "r", __func__); - if (!bgz) return -1; - - do { - bg_got = try_bgzf_read(bgz, bg_buf, BUFSZ, f->src_bgzf, __func__); - if (bg_got < 0) goto fail; - - f_got = try_fread(f->f_plain, f_buf, BUFSZ, __func__, f->src_plain); - if (f_got < 0) goto fail; - - if (compare_buffers(f_buf, bg_buf, f_got, bg_got, - f->src_plain, f->src_bgzf, __func__) != 0) { - goto fail; - } - } while (bg_got > 0 && f_got > 0); - - if (try_bgzf_close(&bgz, f->src_bgzf, __func__) != 0) return -1; - if (try_fseek_start(f->f_plain, f->src_plain, __func__) != 0) return -1; - - return 0; - - fail: - if (bgz) bgzf_close(bgz); - return -1; -} - -static int test_write_read(Files *f, const char *mode, Open_method method, - int nthreads, int expected_compression) { - BGZF* bgz = NULL; - ssize_t bg_put, bg_got; - size_t pos = 0; - unsigned char bg_buf[BUFSZ]; - - switch (method) { - case USE_BGZF_DOPEN: - bgz = try_bgzf_dopen(f->tmp_bgzf, mode, __func__); - break; - case USE_BGZF_HOPEN: - bgz = try_bgzf_hopen(f->tmp_bgzf, mode, __func__); - break; - default: - bgz = try_bgzf_open(f->tmp_bgzf, mode, __func__); - break; - } - if (!bgz) goto fail; - - if (nthreads > 0 && try_bgzf_mt(bgz, nthreads, __func__) != 0) goto fail; - - bg_put = try_bgzf_write(bgz, f->text, f->ltext, f->tmp_bgzf, __func__); - if (bg_put < 0) goto fail; - - if (try_bgzf_close(&bgz, f->tmp_bgzf, __func__) != 0) goto fail; - - switch (method) { - case USE_BGZF_DOPEN: - bgz = try_bgzf_dopen(f->tmp_bgzf, "r", __func__); - break; - case USE_BGZF_HOPEN: - bgz = try_bgzf_hopen(f->tmp_bgzf, "r", __func__); - break; - default: - bgz = try_bgzf_open(f->tmp_bgzf, "r", __func__); - break; - } - if (!bgz) goto fail; - - if (nthreads > 0 && try_bgzf_mt(bgz, nthreads, __func__) != 0) goto fail; - - if (try_bgzf_compression(bgz, expected_compression, - f->tmp_bgzf, __func__) != 0) { - goto fail; - } - - do { - bg_got = try_bgzf_read(bgz, bg_buf, BUFSZ, f->tmp_bgzf, __func__); - if (bg_got < 0) goto fail; - - if (pos < f->ltext && - memcmp(f->text + pos, bg_buf, - pos + bg_got < f->ltext ? bg_got : f->ltext - pos) != 0) { - fprintf(stderr, "%s : Got wrong data from %s, pos %zu\n", - __func__, f->tmp_bgzf, pos); - goto fail; - } - pos += bg_got; - } while (bg_got > 0); - - if (pos != bg_put) { - fprintf(stderr, "%s : bgzf_read got %zd bytes; expected %zd\n", - __func__, pos, bg_put); - goto fail; - } - - if (try_bgzf_close(&bgz, f->tmp_bgzf, __func__) != 0) goto fail; - - return 0; - - fail: - if (bgz) bgzf_close(bgz); - return -1; -} - -static int test_embed_eof(Files *f, const char *mode, int nthreads) { - BGZF* bgz = NULL; - ssize_t bg_put, bg_got; - size_t pos = 0, half = BUFSZ < f->ltext ? BUFSZ : f->ltext / 2; - char append_mode[16]; - unsigned char bg_buf[BUFSZ]; - - for (pos = 0; pos < sizeof(append_mode) - 1 && mode[pos] != 0; pos++) { - append_mode[pos] = mode[pos] == 'w' ? 'a' : mode[pos]; - } - append_mode[pos] ='\0'; - - // Write first half - bgz = try_bgzf_open(f->tmp_bgzf, mode, __func__); - if (!bgz) goto fail; - - if (nthreads > 0 && try_bgzf_mt(bgz, nthreads, __func__) != 0) goto fail; - - bg_put = try_bgzf_write(bgz, f->text, half, f->tmp_bgzf, __func__); - if (bg_put < 0) goto fail; - - if (try_bgzf_close(&bgz, f->tmp_bgzf, __func__) != 0) goto fail; - - - // Write second half. Append mode, so an EOF block should be in the - // middle. - bgz = try_bgzf_open(f->tmp_bgzf, append_mode, __func__); - if (!bgz) goto fail; - - if (nthreads > 0 && try_bgzf_mt(bgz, nthreads, __func__) != 0) goto fail; - - bg_put = try_bgzf_write(bgz, f->text + half, f->ltext - half, f->tmp_bgzf, - __func__); - if (bg_put < 0) goto fail; - - if (try_bgzf_close(&bgz, f->tmp_bgzf, __func__) != 0) goto fail; - - // Try reading - pos = 0; - bgz = try_bgzf_open(f->tmp_bgzf, "r", __func__); - if (!bgz) goto fail; - - if (nthreads > 0 && try_bgzf_mt(bgz, nthreads, __func__) != 0) goto fail; - - do { - bg_got = try_bgzf_read(bgz, bg_buf, BUFSZ, f->tmp_bgzf, __func__); - if (bg_got < 0) goto fail; - - if (pos < f->ltext && - memcmp(f->text + pos, bg_buf, - pos + bg_got < f->ltext ? bg_got : f->ltext - pos) != 0) { - fprintf(stderr, "%s : Got wrong data from %s, pos %zu\n", - __func__, f->tmp_bgzf, pos); - goto fail; - } - pos += bg_got; - } while (bg_got > 0); - - if (pos != f->ltext) { - fprintf(stderr, "%s : bgzf_read got %zd bytes; expected %zd\n", - __func__, pos, f->ltext); - goto fail; - } - - if (try_bgzf_close(&bgz, f->tmp_bgzf, __func__) != 0) goto fail; - - return 0; - - fail: - if (bgz) bgzf_close(bgz); - return -1; -} - -static int test_index_load_dump(Files *f) { - BGZF* bgz = NULL; - FILE *fdest = NULL; - unsigned char buf_src[BUFSZ], buf_dest[BUFSZ]; - ssize_t got_src, got_dest; - - bgz = try_bgzf_open(f->src_bgzf, "r", __func__); - if (!bgz) return -1; - - if (try_bgzf_index_load(bgz, f->src_bgzf, idx_suffix, __func__) != 0) { - goto fail; - } - - if (try_bgzf_index_dump(bgz, f->tmp_bgzf, idx_suffix, __func__) != 0) { - goto fail; - } - - fdest = try_fopen(f->tmp_idx, "r"); - do { - got_src = try_fread(f->f_idx, buf_src, BUFSZ, __func__, f->src_idx); - if (got_src < 0) goto fail; - got_dest = try_fread(fdest, buf_dest, BUFSZ, __func__, f->tmp_idx); - if (got_dest < 0) goto fail; - if (compare_buffers(buf_src, buf_dest, got_src, got_dest, - f->src_idx, f->tmp_idx, __func__) != 0) goto fail; - } while (got_src > 0 && got_dest > 0); - if (try_fclose(&fdest, f->tmp_idx, __func__) != 0) goto fail; - - if (try_bgzf_close(&bgz, f->src_bgzf, __func__) != 0) goto fail; - - return 0; - - fail: - if (fdest) fclose(fdest); - if (bgz) bgzf_close(bgz); - return -1; -} - -static int test_check_EOF(char *name, int expected) { - BGZF *bgz = try_bgzf_open(name, "r", __func__); - int eof; - if (!bgz) return -1; - eof = bgzf_check_EOF(bgz); - if (eof != expected) { - fprintf(stderr, "%s : Unexpected result %d from bgzf_check_EOF on %s; " - "expected %d\n", - __func__, eof, name, expected); - bgzf_close(bgz); - return -1; - } - - return try_bgzf_close(&bgz, name, __func__); -} - -static int test_index_seek_getc(Files *f, const char *mode, - int cache_size, int nthreads) { - BGZF* bgz = NULL; - ssize_t bg_put; - size_t i, j, iskip = f->ltext / 10; - int is_uncompressed = strchr(mode, 'u') != NULL; - - bgz = try_bgzf_open(f->tmp_bgzf, mode, __func__); - if (!bgz) goto fail; - - if (try_bgzf_index_build_init(bgz, f->tmp_bgzf, __func__) != 0) goto fail; - - if (nthreads > 0 && try_bgzf_mt(bgz, nthreads, __func__) != 0) goto fail; - - bg_put = try_bgzf_write(bgz, f->text, f->ltext, f->tmp_bgzf, __func__); - if (bg_put < 0) goto fail; - - if (!is_uncompressed) { - if (try_bgzf_index_dump(bgz, f->tmp_idx, NULL, __func__) != 0) { - goto fail; - } - } - - if (try_bgzf_close(&bgz, f->tmp_bgzf, __func__) != 0) goto fail; - - bgz = try_bgzf_open(f->tmp_bgzf, "r", __func__); - if (!bgz) goto fail; - - if (nthreads > 0 && try_bgzf_mt(bgz, nthreads, __func__) != 0) goto fail; - - if (!is_uncompressed) { - if (try_bgzf_index_load(bgz, f->tmp_bgzf, idx_suffix, __func__) != 0) { - goto fail; - } - } - - for (i = 0; i < f->ltext; i += iskip) { - if (try_bgzf_useek(bgz, i, SEEK_SET, f->tmp_bgzf, __func__) != 0) { - goto fail; - } - - for (j = 0; j < 16 && i + j < f->ltext; j++) { - if (try_bgzf_getc(bgz, i + j, f->text[i + j], - f->tmp_bgzf, __func__) < 0) goto fail; - } - } - - if (try_bgzf_useek(bgz, 0, SEEK_SET, f->tmp_bgzf, __func__) != 0) { - goto fail; - } - for (j = 0; j < 70000 && j < f->ltext; j++) { // Should force a block load - if (try_bgzf_getc(bgz, j, f->text[j], - f->tmp_bgzf, __func__) < 0) goto fail; - } - - if (cache_size > 0) { - size_t mid = f->ltext / 2; - bgzf_set_cache_size(bgz, cache_size); - - for (i = 0; i < 10; i++) { - if (try_bgzf_useek(bgz, 0, SEEK_SET, f->tmp_bgzf, __func__) != 0) { - goto fail; - } - for (j = 0; j < 64 && j < f->ltext; j++) { - if (try_bgzf_getc(bgz, j, f->text[j], - f->tmp_bgzf, __func__) < 0) goto fail; - } - - if (try_bgzf_useek(bgz, mid, SEEK_SET, - f->tmp_bgzf, __func__) != 0) { - goto fail; - } - for (j = 0; j < 64 && j + mid < f->ltext; j++) { - if (try_bgzf_getc(bgz, j + mid, f->text[j + mid], - f->tmp_bgzf, __func__) < 0) goto fail; - } - } - } - - if (try_bgzf_close(&bgz, f->tmp_bgzf, __func__) != 0) goto fail; - - return 0; - - fail: - if (bgz) bgzf_close(bgz); - return -1; -} - -static int test_bgzf_getline(Files *f, const char *mode, int nthreads) { - BGZF* bgz = NULL; - ssize_t bg_put; - size_t pos; - kstring_t str = { 0, 0, NULL }; - const char *text = (const char *) f->text; - - bgz = try_bgzf_open(f->tmp_bgzf, mode, __func__); - if (!bgz) goto fail; - - if (nthreads > 0 && try_bgzf_mt(bgz, nthreads, __func__) != 0) goto fail; - - bg_put = try_bgzf_write(bgz, f->text, f->ltext, f->tmp_bgzf, __func__); - if (bg_put < 0) goto fail; - - if (try_bgzf_close(&bgz, f->tmp_bgzf, __func__) != 0) goto fail; - - bgz = try_bgzf_open(f->tmp_bgzf, "r", __func__); - if (!bgz) goto fail; - - for (pos = 0; pos < f->ltext; ) { - const char *end = strchr(text + pos, '\n'); - size_t l = end ? end - (text + pos) : f->ltext - pos; - int res; - - if ((res = bgzf_getline(bgz, '\n', &str)) < 0) { - fprintf(stderr, "%s : %s from bgzf_getline on %s : %s\n", - __func__, res < -1 ? "Error" : "Unexpected EOF", - f->tmp_bgzf, res < -1 ? strerror(errno) : "EOF"); - goto fail; - } - - if (str.l != l || memcmp(text + pos, str.s, l) != 0) { - fprintf(stderr, - "%s : Unexpected data from bgzf_getline on %s\n" - "Expected : %.*s\n" - "Got : %.*s\n", - __func__, f->tmp_bgzf, (int) l, (char *) f->text + pos, - (int) str.l, str.s); - } - - pos += l + 1; - } - - if (try_bgzf_close(&bgz, f->tmp_bgzf, __func__) != 0) goto fail; - free(ks_release(&str)); - return 0; - - fail: - if (bgz) bgzf_close(bgz); - free(ks_release(&str)); - return -1; -} - -int main(int argc, char **argv) { - Files f = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0 }; - int retval = EXIT_FAILURE; - - if (argc != 2) { - fprintf(stderr, "Usage: %s \n", argv[0]); - return EXIT_FAILURE; - } - - if (setup(argv[1], &f) != 0) goto out; - - // Try reading an existing file - if (test_check_EOF(f.src_bgzf, 1) != 0) goto out; - if (test_read(&f) != 0) goto out; - - // Try writing some data and reading it back - if (test_write_read(&f, "wu", USE_BGZF_OPEN, 0, 0) != 0) goto out; - if (test_check_EOF(f.tmp_bgzf, 0) != 0) goto out; - if (test_write_read(&f, "w", USE_BGZF_OPEN, 0, 2) != 0) goto out; - if (test_check_EOF(f.tmp_bgzf, 1) != 0) goto out; - if (test_write_read(&f, "w0", USE_BGZF_OPEN, 0, 2) != 0) goto out; - if (test_check_EOF(f.tmp_bgzf, 1) != 0) goto out; - if (test_write_read(&f, "w1", USE_BGZF_DOPEN, 0, 2) != 0) goto out; - if (test_check_EOF(f.tmp_bgzf, 1) != 0) goto out; - if (test_write_read(&f, "w9", USE_BGZF_HOPEN, 0, 2) != 0) goto out; - if (test_check_EOF(f.tmp_bgzf, 1) != 0) goto out; - if (test_write_read(&f, "wg", USE_BGZF_OPEN, 0, 1) != 0) goto out; - if (test_check_EOF(f.tmp_bgzf, 0) != 0) goto out; - - // Try writing and reading with threads - if (test_write_read(&f, "w", USE_BGZF_OPEN, 1, 2) != 0) goto out; - if (test_check_EOF(f.tmp_bgzf, 1) != 0) goto out; - if (test_write_read(&f, "w", USE_BGZF_OPEN, 2, 2) != 0) goto out; - if (test_check_EOF(f.tmp_bgzf, 1) != 0) goto out; - - // Embedded EOF block - if (test_embed_eof(&f, "w", 0) != 0) goto out; - if (test_embed_eof(&f, "w", 1) != 0) goto out; - if (test_embed_eof(&f, "w", 2) != 0) goto out; - - // Index load and dump - if (test_index_load_dump(&f) != 0) goto out; - - // Index building on the fly and bgzf_useek - if (test_index_seek_getc(&f, "w", 1000000, 0) != 0) goto out; - - // Index building on the fly and bgzf_useek, with threads - // ** Not implemented yet ** - // if (test_index_seek_getc(&f, "w", 1000000, 1) != 0) goto out; - // if (test_index_seek_getc(&f, "w", 1000000, 2) != 0) goto out; - - // bgzf_useek on an uncompressed file - if (test_index_seek_getc(&f, "wu", 0, 0) != 0) goto out; - - // getline - if (test_bgzf_getline(&f, "w", 0) != 0) goto out; - if (test_bgzf_getline(&f, "w", 1) != 0) goto out; - if (test_bgzf_getline(&f, "w", 2) != 0) goto out; - - retval = EXIT_SUCCESS; - - out: - cleanup(&f, retval); - return retval; -} diff --git a/htslib/test/test_realn.c b/htslib/test/test_realn.c deleted file mode 100644 index 0364d76..0000000 --- a/htslib/test/test_realn.c +++ /dev/null @@ -1,169 +0,0 @@ -/* test/test_realn.c -- test sam_prob_realn() function - - Copyright (C) 2018 Genome Research Ltd. - - Author: Rob Davies - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include -#include -#include -#include -#include -#include -#include "htslib/sam.h" -#include "htslib/hts.h" -#include "htslib/faidx.h" - -void usage(const char *prog) { - fprintf(stderr, "Usage: %s -i -o -f \n", prog); -} - -int main(int argc, char **argv) { - htsFile *in = NULL; - htsFile *out = NULL; - char *in_name = "-"; - char *out_name = "-"; - char *ref_name = NULL; - char *ref_seq = NULL; - char modew[8] = "w"; - faidx_t *fai = NULL; - bam_hdr_t *hdr = NULL; - bam1_t *rec = NULL; - int c, res, last_ref = -1, ref_len = 0; - int adjust = 0, extended = 0, recalc = 0, flags = 0; - - while ((c = getopt(argc, argv, "aef:hi:o:r")) >= 0) { - switch (c) { - case 'a': adjust = 1; break; - case 'e': extended = 1; break; - case 'f': ref_name = optarg; break; - case 'h': usage(argv[0]); return EXIT_SUCCESS; - case 'i': in_name = optarg; break; - case 'o': out_name = optarg; break; - case 'r': recalc = 1; break; - default: usage(argv[0]); return EXIT_FAILURE; - } - } - - if (!ref_name) { - usage(argv[0]); - return EXIT_FAILURE; - } - - flags = (adjust ? 1 : 0) | (extended ? 2 : 0) | (recalc ? 4 : 0); - - fai = fai_load(ref_name); - if (!fai) { - fprintf(stderr, "Couldn't load reference %s\n", ref_name); - goto fail; - } - - rec = bam_init1(); - if (!rec) { - perror(NULL); - goto fail; - } - - in = hts_open(in_name, "r"); - if (!in) { - fprintf(stderr, "Couldn't open %s : %s\n", in_name, strerror(errno)); - goto fail; - } - - hdr = sam_hdr_read(in); - if (!hdr) { - fprintf(stderr, "Couldn't read header for %s\n", in_name); - goto fail; - } - - out = hts_open(out_name, modew); - if (!out) { - fprintf(stderr, "Couldn't open %s : %s\n", out_name, strerror(errno)); - goto fail; - } - - if (sam_hdr_write(out, hdr) < 0) { - fprintf(stderr, "Couldn't write header to %s : %s\n", - out_name, strerror(errno)); - goto fail; - } - - while ((res = sam_read1(in, hdr, rec)) >= 0) { - if (rec->core.tid >= hdr->n_targets) { - fprintf(stderr, "Invalid BAM reference id %d\n", rec->core.tid); - goto fail; - } - if (last_ref != rec->core.tid && rec->core.tid >= 0) { - free(ref_seq); - ref_seq = faidx_fetch_seq(fai, hdr->target_name[rec->core.tid], - 0, INT_MAX, &ref_len); - if (!ref_seq) { - fprintf(stderr, "Couldn't get reference %s\n", - hdr->target_name[rec->core.tid]); - goto fail; - } - last_ref = rec->core.tid; - } - if (rec->core.tid >= 0) { - res = sam_prob_realn(rec, ref_seq, ref_len, flags); - if (res <= -4) { - fprintf(stderr, "Error running sam_prob_realn : %s\n", - strerror(errno)); - goto fail; - } - } - if (sam_write1(out, hdr, rec) < 0) { - fprintf(stderr, "Error writing to %s\n", out_name); - goto fail; - } - } - res = hts_close(in); - in = NULL; - if (res < 0) { - fprintf(stderr, "Error closing %s\n", in_name); - goto fail; - } - - res = hts_close(out); - out = NULL; - if (res < 0) { - fprintf(stderr, "Error closing %s\n", out_name); - goto fail; - } - - bam_hdr_destroy(hdr); - bam_destroy1(rec); - free(ref_seq); - fai_destroy(fai); - - return EXIT_SUCCESS; - - fail: - if (hdr) bam_hdr_destroy(hdr); - if (rec) bam_destroy1(rec); - if (in) hts_close(in); - if (out) hts_close(out); - free(ref_seq); - fai_destroy(fai); - return EXIT_FAILURE; -} diff --git a/htslib/test/test_view.c b/htslib/test/test_view.c deleted file mode 100644 index 693b918..0000000 --- a/htslib/test/test_view.c +++ /dev/null @@ -1,322 +0,0 @@ -/* test/test_view.c -- simple view tool, purely for use in a test harness. - - Copyright (C) 2012 Broad Institute. - Copyright (C) 2013-2014 Genome Research Ltd. - - Author: Heng Li - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include -#include -#include -#include -#include -#include - -#include "cram/cram.h" - -#include "htslib/sam.h" - -enum test_op { - READ_COMPRESSED = 1, - WRITE_COMPRESSED = 2, - READ_CRAM = 4, - WRITE_CRAM = 8, - WRITE_UNCOMPRESSED = 16, -}; - -int main(int argc, char *argv[]) -{ - samFile *in; - char *fn_ref = 0; - int flag = 0, c, clevel = -1, ignore_sam_err = 0; - char moder[8]; - bam_hdr_t *h; - bam1_t *b; - htsFile *out; - char modew[800]; - int r = 0, exit_code = 0; - hts_opt *in_opts = NULL, *out_opts = NULL; - int nreads = 0; - int extra_hdr_nuls = 0; - int benchmark = 0; - int nthreads = 0; // shared pool - int multi_reg = 0; - - while ((c = getopt(argc, argv, "DSIt:i:bCul:o:N:BZ:@:M")) >= 0) { - switch (c) { - case 'D': flag |= READ_CRAM; break; - case 'S': flag |= READ_COMPRESSED; break; - case 'I': ignore_sam_err = 1; break; - case 't': fn_ref = optarg; break; - case 'i': if (hts_opt_add(&in_opts, optarg)) return 1; break; - case 'b': flag |= WRITE_COMPRESSED; break; - case 'C': flag |= WRITE_CRAM; break; - case 'u': flag |= WRITE_UNCOMPRESSED; break; // eg u-BAM not SAM - case 'l': clevel = atoi(optarg); flag |= WRITE_COMPRESSED; break; - case 'o': if (hts_opt_add(&out_opts, optarg)) return 1; break; - case 'N': nreads = atoi(optarg); break; - case 'B': benchmark = 1; break; - case 'Z': extra_hdr_nuls = atoi(optarg); break; - case 'M': multi_reg = 1; break; - case '@': nthreads = atoi(optarg); break; - } - } - if (argc == optind) { - fprintf(stderr, "Usage: test_view [-DSI] [-t fn_ref] [-i option=value] [-bC] [-l level] [-o option=value] [-N num_reads] [-B] [-Z hdr_nuls] [-@ num_threads] || [region]\n"); - fprintf(stderr, "\n"); - fprintf(stderr, "-D: read CRAM format (mode 'c')\n"); - fprintf(stderr, "-S: read compressed BCF, BAM, FAI (mode 'b')\n"); - fprintf(stderr, "-I: ignore SAM parsing errors\n"); - fprintf(stderr, "-t: fn_ref: load CRAM references from the specificed fasta file instead of @SQ headers when writing a CRAM file\n"); - fprintf(stderr, "-i: option=value: set an option for CRAM input\n"); - fprintf(stderr, "\n"); - fprintf(stderr, "-b: write compressed BCF, BAM, FAI (mode 'b')\n"); - fprintf(stderr, "-C: write CRAM format (mode 'c')\n"); - fprintf(stderr, "-l 0-9: set zlib compression level\n"); - fprintf(stderr, "-o option=value: set an option for CRAM output\n"); - fprintf(stderr, "-N: num_reads: limit the output to the first num_reads reads\n"); - fprintf(stderr, "\n"); - fprintf(stderr, "-B: enable benchmarking\n"); - fprintf(stderr, "-M: use hts_itr_multi iterator\n"); - fprintf(stderr, "-Z hdr_nuls: append specified number of null bytes to the SAM header\n"); - fprintf(stderr, "-@ num_threads: use thread pool with specified number of threads\n\n"); - fprintf(stderr, "The region list entries should be specified as 'reg:beg-end', with intervals of a region being disjunct and sorted by the starting coordinate.\n"); - return 1; - } - strcpy(moder, "r"); - if (flag & READ_CRAM) strcat(moder, "c"); - else if ((flag & READ_COMPRESSED) == 0) strcat(moder, "b"); - - in = sam_open(argv[optind], moder); - if (in == NULL) { - fprintf(stderr, "Error opening \"%s\"\n", argv[optind]); - return EXIT_FAILURE; - } - h = sam_hdr_read(in); - if (h == NULL) { - fprintf(stderr, "Couldn't read header for \"%s\"\n", argv[optind]); - return EXIT_FAILURE; - } - h->ignore_sam_err = ignore_sam_err; - if (extra_hdr_nuls) { - char *new_text = realloc(h->text, h->l_text + extra_hdr_nuls); - if (new_text == NULL) { - fprintf(stderr, "Error reallocing header text\n"); - return EXIT_FAILURE; - } - h->text = new_text; - memset(&h->text[h->l_text], 0, extra_hdr_nuls); - h->l_text += extra_hdr_nuls; - } - - b = bam_init1(); - - strcpy(modew, "w"); - if (clevel >= 0 && clevel <= 9) sprintf(modew + 1, "%d", clevel); - if (flag & WRITE_CRAM) strcat(modew, "c"); - else if (flag & WRITE_COMPRESSED) strcat(modew, "b"); - else if (flag & WRITE_UNCOMPRESSED) strcat(modew, "bu"); - out = hts_open("-", modew); - if (out == NULL) { - fprintf(stderr, "Error opening standard output\n"); - return EXIT_FAILURE; - } - - /* CRAM output */ - if (flag & WRITE_CRAM) { - int ret; - - // Parse input header and use for CRAM output - out->fp.cram->header = sam_hdr_parse_(h->text, h->l_text); - - // Create CRAM references arrays - if (fn_ref) - ret = cram_set_option(out->fp.cram, CRAM_OPT_REFERENCE, fn_ref); - else - // Attempt to fill out a cram->refs[] array from @SQ headers - ret = cram_set_option(out->fp.cram, CRAM_OPT_REFERENCE, NULL); - - if (ret != 0) - return EXIT_FAILURE; - } - - // Process any options; currently cram only. - if (hts_opt_apply(in, in_opts)) - return EXIT_FAILURE; - hts_opt_free(in_opts); - - if (hts_opt_apply(out, out_opts)) - return EXIT_FAILURE; - hts_opt_free(out_opts); - - // Create and share the thread pool - htsThreadPool p = {NULL, 0}; - if (nthreads > 0) { - p.pool = hts_tpool_init(nthreads); - if (!p.pool) { - fprintf(stderr, "Error creating thread pool\n"); - exit_code = 1; - } else { - hts_set_opt(in, HTS_OPT_THREAD_POOL, &p); - hts_set_opt(out, HTS_OPT_THREAD_POOL, &p); - } - } - - if (!benchmark && sam_hdr_write(out, h) < 0) { - fprintf(stderr, "Error writing output header.\n"); - exit_code = 1; - } - if (optind + 1 < argc && !(flag & READ_COMPRESSED)) { // BAM input and has a region - int i; - hts_idx_t *idx; - if ((idx = sam_index_load(in, argv[optind])) == 0) { - fprintf(stderr, "[E::%s] fail to load the BAM index\n", __func__); - return 1; - } - if (multi_reg) { - int reg_count = 0; - hts_reglist_t *reg_list = calloc(argc-(optind+1), sizeof(*reg_list)); - if (!reg_list) - return 1; - - // We need a public function somewhere to turn an array of region strings - // into a region list, but for testing this will suffice for now. - // Consider moving a derivation of this into htslib proper sometime. - for (i = optind + 1; i < argc; ++i) { - int j; - uint32_t beg, end; - char *cp = strrchr(argv[i], ':'); - if (cp) *cp = 0; - - for (j = 0; j < reg_count; j++) - if (strcmp(reg_list[j].reg, argv[i]) == 0) - break; - if (j == reg_count) { - reg_list[reg_count++].reg = argv[i]; - if (strcmp(".", argv[i]) == 0) { - reg_list[j].tid = HTS_IDX_START; - - } else if (strcmp("*", argv[i]) == 0) { - reg_list[j].tid = HTS_IDX_NOCOOR; - - } else { - int k; // need the header API here! - for (k = 0; k < h->n_targets; k++) - if (strcmp(h->target_name[k], argv[i]) == 0) - break; - if (k == h->n_targets) - return 1; - reg_list[j].tid = k; - reg_list[j].min_beg = h->target_len[k]; - reg_list[j].max_end = 0; - } - } - - hts_reglist_t *r = ®_list[j]; - r->intervals = realloc(r->intervals, ++r->count * sizeof(*r->intervals)); - if (!r->intervals) - return 1; - beg = 1; - end = r->tid >= 0 ? h->target_len[r->tid] : 0; - if (cp) { - *cp = 0; - // hts_parse_reg() is better, but awkward here - sscanf(cp+1, "%d-%d", &beg, &end); - } - r->intervals[r->count-1].beg = beg-1; // BED syntax - r->intervals[r->count-1].end = end; - - if (r->min_beg > beg) - r->min_beg = beg; - if (r->max_end < end) - r->max_end = end; - } - - hts_itr_multi_t *iter = sam_itr_regions(idx, h, reg_list, reg_count); - if (!iter) - return 1; - while ((r = sam_itr_multi_next(in, iter, b)) >= 0) { - if (!benchmark && sam_write1(out, h, b) < 0) { - fprintf(stderr, "Error writing output.\n"); - exit_code = 1; - break; - } - if (nreads && --nreads == 0) - break; - } - hts_itr_multi_destroy(iter); - } else { - for (i = optind + 1; i < argc; ++i) { - hts_itr_t *iter; - if ((iter = sam_itr_querys(idx, h, argv[i])) == 0) { - fprintf(stderr, "[E::%s] fail to parse region '%s'\n", __func__, argv[i]); - continue; - } - while ((r = sam_itr_next(in, iter, b)) >= 0) { - if (!benchmark && sam_write1(out, h, b) < 0) { - fprintf(stderr, "Error writing output.\n"); - exit_code = 1; - break; - } - if (nreads && --nreads == 0) - break; - } - hts_itr_destroy(iter); - } - } - hts_idx_destroy(idx); - } else while ((r = sam_read1(in, h, b)) >= 0) { - if (!benchmark && sam_write1(out, h, b) < 0) { - fprintf(stderr, "Error writing output.\n"); - exit_code = 1; - break; - } - if (nreads && --nreads == 0) - break; - } - - if (r < -1) { - fprintf(stderr, "Error parsing input.\n"); - exit_code = 1; - } - - r = sam_close(out); - if (r < 0) { - fprintf(stderr, "Error closing output.\n"); - exit_code = 1; - } - - bam_destroy1(b); - bam_hdr_destroy(h); - - r = sam_close(in); - if (r < 0) { - fprintf(stderr, "Error closing input.\n"); - exit_code = 1; - } - - if (p.pool) - hts_tpool_destroy(p.pool); - - return exit_code; -} diff --git a/htslib/test/thrash_threads1.c b/htslib/test/thrash_threads1.c deleted file mode 100644 index 8252f00..0000000 --- a/htslib/test/thrash_threads1.c +++ /dev/null @@ -1,47 +0,0 @@ -/* The MIT/Expat License - -Copyright (C) 2017 Genome Research Ltd. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - */ -// Test extreme rapid turnover of readers, to check for -// race conditions between reader thread launching and file close. - -#include - -#include -#include -#include -#include "htslib/bgzf.h" - -int main(int argc, char *argv[]) { - if (argc <= 1) { - fprintf(stderr, "Usage: thrash_threads1 input.bam\n"); - exit(1); - } - - int i; - for (i = 0; i < 10000; i++) { - printf("i=%d\n", i); - BGZF *fpin = bgzf_open(argv[1], "r"); - bgzf_mt(fpin, 2, 256); - if (bgzf_close(fpin) < 0) abort(); - } - return 0; -} diff --git a/htslib/test/thrash_threads2.c b/htslib/test/thrash_threads2.c deleted file mode 100644 index a074a79..0000000 --- a/htslib/test/thrash_threads2.c +++ /dev/null @@ -1,45 +0,0 @@ -/* The MIT/Expat License - -Copyright (C) 2017 Genome Research Ltd. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - */ -// Test extreme rapid turnover of writers, to check for -// race conditions between reader thread launching and file close. - -#include - -#include -#include -#include -#include "htslib/bgzf.h" -#include "htslib/thread_pool.h" - -int main(int argc, char *argv[]) { - int i; - for (i = 0; i < 1000; i++) { - printf("i=%d\n", i); - BGZF *fp = bgzf_open("/dev/null", "w"); - bgzf_mt(fp, 8, 256); - if (bgzf_close(fp)) - abort(); - } - - return 0; -} diff --git a/htslib/test/thrash_threads3.c b/htslib/test/thrash_threads3.c deleted file mode 100644 index b9a9f16..0000000 --- a/htslib/test/thrash_threads3.c +++ /dev/null @@ -1,50 +0,0 @@ -/* The MIT/Expat License - -Copyright (C) 2017 Genome Research Ltd. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - */ -// Simple open,read,close thrash. - -#include - -#include -#include -#include -#include "htslib/bgzf.h" - -int main(int argc, char *argv[]) { - char buf[1000000]; - int i; - - if (argc <= 1) { - fprintf(stderr, "Usage: thrash_threads3 input.bam\n"); - exit(1); - } - - for (i = 0; i < 10000; i++) { - printf("i=%d\n", i); - BGZF *fpin = bgzf_open(argv[1], "r"); - if (bgzf_read(fpin, buf, i*10) < 0) abort(); - bgzf_mt(fpin, 8, 256); - if (bgzf_read(fpin, buf, i*10) < 0) abort(); - if (bgzf_close(fpin) < 0) abort(); - } - return 0; -} diff --git a/htslib/test/thrash_threads4.c b/htslib/test/thrash_threads4.c deleted file mode 100644 index bcbff10..0000000 --- a/htslib/test/thrash_threads4.c +++ /dev/null @@ -1,68 +0,0 @@ -/* The MIT/Expat License - -Copyright (C) 2017 Genome Research Ltd. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - */ -// Spam seeks -#include - -#include -#include -#include -#include "htslib/bgzf.h" -#include "htslib/thread_pool.h" - -int main(int argc, char *argv[]) { - if (argc <= 1) { - fprintf(stderr, "Usage: thrash_threads4 input.bam\n"); - exit(1); - } - - // Find a valid seek location ~64M into the file - int i; - BGZF *fpin = bgzf_open(argv[1], "r"); - char buf[65536]; - for (i = 0; i < 1000; i++) - if (bgzf_read(fpin, buf, 65536) < 0) - abort(); - int64_t pos = bgzf_tell(fpin); - bgzf_close(fpin); - -#define N 1000 - - // Spam seeks - for (i = 0; i < 1000; i++) { - printf("i=%d\n", i); - fpin = bgzf_open(argv[1], "r"); - bgzf_mt(fpin, 8, 256); - if (bgzf_seek(fpin, pos, SEEK_SET) < 0) puts("!");//abort(); - usleep(N); - //if (bgzf_read(fpin, buf, 65536) < 0) abort(); - //write(1, buf, 65536); - if (bgzf_seek(fpin, 0LL, SEEK_SET) < 0) puts("!");//abort(); - usleep(N); - //if (bgzf_read(fpin, buf, 65536) < 0) abort(); - //write(1, buf, 65536); - if (bgzf_close(fpin)) - abort(); - } - - return 0; -} diff --git a/htslib/test/thrash_threads5.c b/htslib/test/thrash_threads5.c deleted file mode 100644 index 1fe1cd2..0000000 --- a/htslib/test/thrash_threads5.c +++ /dev/null @@ -1,66 +0,0 @@ -/* The MIT/Expat License - -Copyright (C) 2017 Genome Research Ltd. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - */ -// A basic 'zcat filename [N-threads]' - -#include - -#include -#include -#include -#include "htslib/bgzf.h" -#include "htslib/thread_pool.h" - -#define N 1000 -int main(int argc, char *argv[]) { - char buf[N]; - ssize_t l, t = 0; - - if (argc < 2 || isatty(STDOUT_FILENO)) { - fprintf(stderr, - "Usage: thrash_threads5 input.bam num_threads | md5sum\n"); - exit(1); - } - - BGZF *fpin = bgzf_open(argv[1], "r"); - hts_tpool *p = NULL; - if (argc > 2) { - p = hts_tpool_init(atoi(argv[2])); - bgzf_thread_pool(fpin, p, 0); - } - int n = rand()%(N-1)+1; - while ((l = bgzf_read(fpin, buf, n)) > 0) { - if (l != write(STDOUT_FILENO, buf, l)) abort(); - t += l; - if (l != n) { - fprintf(stderr, "expected %d bytes, got %d\n", n, (int)l); - break; - } - n = rand()%(N-1)+1; - } - fprintf(stderr, "close=%d\n", (int)bgzf_close(fpin)); - if (p) hts_tpool_destroy(p); - - fprintf(stderr, "wrote %d bytes\n", (int)t); - - return 0; -} diff --git a/htslib/test/thrash_threads6.c b/htslib/test/thrash_threads6.c deleted file mode 100644 index e4bd760..0000000 --- a/htslib/test/thrash_threads6.c +++ /dev/null @@ -1,108 +0,0 @@ -/* The MIT/Expat License - -Copyright (C) 2017 Genome Research Ltd. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - */ -// Spam seeks -#include - -#include -#include -#include -#include "htslib/bgzf.h" -#include "htslib/thread_pool.h" - -int main(int argc, char *argv[]) { - if (argc <= 1) { - fprintf(stderr, "Usage: thrash_threads4 input.bam\n"); - exit(1); - } - - // Find a valid seek location ~64M into the file - int i; - ssize_t got; - BGZF *fpin = bgzf_open(argv[1], "r"); - uint64_t upos = 0, uend = 0; - char buf[100000]; - for (i = 0; i < 100; i++) { - if ((got = bgzf_read(fpin, buf, 65536)) < 0) - abort(); - upos += got; - } - int64_t pos = bgzf_tell(fpin); - while ((got = bgzf_read(fpin, buf, 65536)) > 0) { - uend += got; - } - if (got < 0) abort(); - int64_t end = bgzf_tell(fpin); - bgzf_close(fpin); - - // Ensure input is big enough to avoid case 3,4 below going off the end - // of the file - if (uend < upos + 10000000) { - fprintf(stderr, "Please supply a bigger input file\n"); - exit(1); - } - -#define N 1000 - - // Spam random seeks & reads - for (i = 0; i < 1000; i++) { - printf("i=%d\t", i); - fpin = bgzf_open(argv[1], "r"); - int j, eof = 0, mt = 0; - for (j = 0; j < 80; j++) { - int n = rand() % 7; - putchar('0'+n); fflush(stdout); - switch (n) { - case 0: // start - if (bgzf_seek(fpin, 0LL, SEEK_SET) < 0) puts("!");//abort(); - eof = 0; - break; - case 1: // mid - if (bgzf_seek(fpin, pos, SEEK_SET) < 0) puts("!");//abort(); - eof = 0; - break; - case 2: // eof - if (bgzf_seek(fpin, end, SEEK_SET) < 0) puts("!");//abort(); - eof = 1; - break; - case 3: case 4: { - int l = rand()%(n==3?100000:100); - if (bgzf_read(fpin, buf, l) != l*(1-eof)) abort(); - break; - } - case 5: - usleep(N); - break; - case 6: - if (!mt) - bgzf_mt(fpin, 8, 256); - mt = 1; - break; - } - } - printf("\n"); - if (bgzf_close(fpin)) - abort(); - } - - return 0; -} diff --git a/htslib/test/thread_pool.md b/htslib/test/thread_pool.md deleted file mode 100644 index 1a596c9..0000000 --- a/htslib/test/thread_pool.md +++ /dev/null @@ -1,58 +0,0 @@ -Thread pool tests -================= -The thread_pool.c file has a built-in test program which is enabled when compiling with TEST_MAIN defined. The test program can be run in four different modes by giving a command-line parameter: unordered, ordered1, ordered2, and pipe. The modes and their expected outputs are described below. - -unordered ---------- -Dispatches TASK_SIZE (=1000) jobs to the thread pool and waits for them to finish. The job index (0..TASK_SIZE-1) is passed as a parameter. The job function is doit_square_u, which sleeps for a while and then prints the square of its input parameter to stdout. - -Expected output when n = 1: -``` -RESULT: 0 -... -RESULT: 998001 -``` - -Expected output when n > 1: same, but in jumbled up order. - -ordered1 --------- -Dispatches TASK_SIZE (=1000) jobs to the thread pool in non-blocking mode. Results are returned on the result queue and are pulled in order. The job index (0..TASK_SIZE-1) is passed as a parameter. The job function is doit_square, which sleeps for a while and then returns the square of its input parameter as a result. Some of the jobs take way longer than the others to finish. - -The expected output is the results printed in order, regardless of n. - -ordered2 --------- -Starts a dispatcher thread which dispatches jobs to the thread pool. After all regular jobs have been dispatched, a sentinel job follows where the input parameter is set to -1, which receives special handling in doit_square to return the -1 as the result. - -Results are consumed on the main thread using hts_tpool_next_result_wait, until the end-of-job marker is found. - -The expected output is the results printed in order, regardless of n. - -pipe ----- -This program uses one thread pool (hts_tpool) and three queues (hts_tpool_process) shared across threads using a pipe_opt struct. There are four threads: input, stage1to2, stage2to3, and output. - -The input thread (pipe_input_thread procedure) dispatches jobs to the thread pool with the job number (1..TASK_SIZE) and an end-of-job flag as parameters. The jobs are executed by the pipe_stage1 procedure, which multiplies by 256 and sleeps for a short while. - -The stage1to2 thread (pipe_stage1to2 procedure) pulls results from the first queue (q1) and passes them to new jobs in the thread pool. These jobs are executed by the pipe_stage2 procedure, which does the same as pipe_stage1, only slower. - -The stage2to3 thread is similar to the stage1to2 thread. It pulls from the second queue and dispatches new jobs to be executed by the pipe_stage3 procedure. pipe_stage3 is similar to pipe_stage1. - -The output thread pulls from the third queue. - -Expected output: -``` -I 00000001 -1 00000100 -2 00010000 -O 01000000 -... -I 000003e8 -1 0003e800 -2 03e80000 -O e8000000 -``` -...but not in order, because the input queues might be served in any order. - -However, if only the lines from the output thread are printed, they should be in order regardless of the number of threads. diff --git a/htslib/test/xx#blank.sam b/htslib/test/xx#blank.sam deleted file mode 100644 index e69de29..0000000 diff --git a/htslib/test/xx#large_aux.sam b/htslib/test/xx#large_aux.sam deleted file mode 100644 index 93fb8cf..0000000 --- a/htslib/test/xx#large_aux.sam +++ /dev/null @@ -1,4 +0,0 @@ -@SQ SN:xx LN:20 -a1 16 xx 1 1 10M * 0 0 AAAAAAAAAA * aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1 af:i:1 ag:i:1 ah:i:1 ai:i:1 aj:i:1 ak:i:1 al:i:1 am:i:1 an:i:1 ao:i:1 ap:i:1 aq:i:1 ar:i:1 as:i:1 at:i:1 au:i:1 av:i:1 aw:i:1 ax:i:1 ay:i:1 az:i:1 ba:i:1 bb:i:1 bc:i:1 bd:i:1 be:i:1 bf:i:1 bg:i:1 bh:i:1 bi:i:1 bj:i:1 bk:i:1 bl:i:1 bm:i:1 bn:i:1 bo:i:1 bp:i:1 bq:i:1 br:i:1 bs:i:1 bt:i:1 bu:i:1 bv:i:1 bw:i:1 bx:i:1 by:i:1 bz:i:1 ca:i:1 cb:i:1 cc:i:1 cd:i:1 ce:i:1 cf:i:1 cg:i:1 ch:i:1 ci:i:1 cj:i:1 ck:i:1 cl:i:1 cm:i:1 cn:i:1 co:i:1 cp:i:1 cq:i:1 cr:i:1 cs:i:1 ct:i:1 cu:i:1 cv:i:1 cw:i:1 cx:i:1 cy:i:1 cz:i:1 da:i:1 db:i:1 dc:i:1 dd:i:1 de:i:1 df:i:1 dg:i:1 dh:i:1 di:i:1 dj:i:1 dk:i:1 dl:i:1 dm:i:1 dn:i:1 do:i:1 dp:i:1 dq:i:1 dr:i:1 ds:i:1 dt:i:1 du:i:1 dv:i:1 dw:i:1 dx:i:1 dy:i:1 dz:i:1 ea:i:1 eb:i:1 ec:i:1 ed:i:1 ee:i:1 ef:i:1 eg:i:1 eh:i:1 ei:i:1 ej:i:1 ek:i:1 el:i:1 em:i:1 en:i:1 eo:i:1 ep:i:1 eq:i:1 er:i:1 es:i:1 et:i:1 eu:i:1 ev:i:1 ew:i:1 ex:i:1 ey:i:1 ez:i:1 fa:i:1 fb:i:1 fc:i:1 fd:i:1 fe:i:1 ff:i:1 fg:i:1 fh:i:1 fi:i:1 fj:i:1 fk:i:1 fl:i:1 fm:i:1 fn:i:1 fo:i:1 fp:i:1 fq:i:1 fr:i:1 fs:i:1 ft:i:1 fu:i:1 fv:i:1 fw:i:1 fx:i:1 fy:i:1 fz:i:1 ga:i:1 gb:i:1 gc:i:1 gd:i:1 ge:i:1 gf:i:1 gg:i:1 gh:i:1 gi:i:1 gj:i:1 gk:i:1 gl:i:1 gm:i:1 gn:i:1 go:i:1 gp:i:1 gq:i:1 gr:i:1 gs:i:1 gt:i:1 gu:i:1 gv:i:1 gw:i:1 gx:i:1 gy:i:1 gz:i:1 ha:i:1 hb:i:1 hc:i:1 hd:i:1 he:i:1 hf:i:1 hg:i:1 hh:i:1 hi:i:1 hj:i:1 hk:i:1 hl:i:1 hm:i:1 hn:i:1 ho:i:1 hp:i:1 hq:i:1 hr:i:1 hs:i:1 ht:i:1 hu:i:1 hv:i:1 hw:i:1 hx:i:1 hy:i:1 hz:i:1 ia:i:1 ib:i:1 ic:i:1 id:i:1 ie:i:1 if:i:1 ig:i:1 ih:i:1 ii:i:1 ij:i:1 ik:i:1 il:i:1 im:i:1 in:i:1 io:i:1 ip:i:1 iq:i:1 ir:i:1 is:i:1 it:i:1 iu:i:1 iv:i:1 iw:i:1 ix:i:1 iy:i:1 iz:i:1 ja:i:1 jb:i:1 jc:i:1 jd:i:1 je:i:1 jf:i:1 jg:i:1 jh:i:1 ji:i:1 jj:i:1 jk:i:1 jl:i:1 jm:i:1 jn:i:1 jo:i:1 jp:i:1 jq:i:1 jr:i:1 js:i:1 jt:i:1 ju:i:1 -a2 16 xx 1 1 10M * 0 0 AAAAAAAAAA * aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1 af:i:1 ag:i:1 ah:i:1 ai:i:1 aj:i:1 ak:i:1 al:i:1 am:i:1 an:i:1 ao:i:1 ap:i:1 aq:i:1 ar:i:1 as:i:1 at:i:1 au:i:1 av:i:1 aw:i:1 ax:i:1 ay:i:1 az:i:1 ba:i:1 bb:i:1 bc:i:1 bd:i:1 be:i:1 bf:i:1 bg:i:1 bh:i:1 bi:i:1 bj:i:1 bk:i:1 bl:i:1 bm:i:1 bn:i:1 bo:i:1 bp:i:1 bq:i:1 br:i:1 bs:i:1 bt:i:1 bu:i:1 bv:i:1 bw:i:1 bx:i:1 by:i:1 bz:i:1 ca:i:1 cb:i:1 cc:i:1 cd:i:1 ce:i:1 cf:i:1 cg:i:1 ch:i:1 ci:i:1 cj:i:1 ck:i:1 cl:i:1 cm:i:1 cn:i:1 co:i:1 cp:i:1 cq:i:1 cr:i:1 cs:i:1 ct:i:1 cu:i:1 cv:i:1 cw:i:1 cx:i:1 cy:i:1 cz:i:1 da:i:1 db:i:1 dc:i:1 dd:i:1 de:i:1 df:i:1 dg:i:1 dh:i:1 di:i:1 dj:i:1 dk:i:1 dl:i:1 dm:i:1 dn:i:1 do:i:1 dp:i:1 dq:i:1 dr:i:1 ds:i:1 dt:i:1 du:i:1 dv:i:1 dw:i:1 dx:i:1 dy:i:1 dz:i:1 ea:i:1 eb:i:1 ec:i:1 ed:i:1 ee:i:1 ef:i:1 eg:i:1 eh:i:1 ei:i:1 ej:i:1 ek:i:1 el:i:1 em:i:1 en:i:1 eo:i:1 ep:i:1 eq:i:1 er:i:1 es:i:1 et:i:1 eu:i:1 ev:i:1 ew:i:1 ex:i:1 ey:i:1 ez:i:1 fa:i:1 fb:i:1 fc:i:1 fd:i:1 fe:i:1 ff:i:1 fg:i:1 fh:i:1 fi:i:1 fj:i:1 fk:i:1 fl:i:1 fm:i:1 fn:i:1 fo:i:1 fp:i:1 fq:i:1 fr:i:1 fs:i:1 ft:i:1 fu:i:1 fv:i:1 fw:i:1 fx:i:1 fy:i:1 fz:i:1 ga:i:1 gb:i:1 gc:i:1 gd:i:1 ge:i:1 gf:i:1 gg:i:1 gh:i:1 gi:i:1 gj:i:1 gk:i:1 gl:i:1 gm:i:1 gn:i:1 go:i:1 gp:i:1 gq:i:1 gr:i:1 gs:i:1 gt:i:1 gu:i:1 gv:i:1 gw:i:1 gx:i:1 gy:i:1 gz:i:1 ha:i:1 hb:i:1 hc:i:1 hd:i:1 he:i:1 hf:i:1 hg:i:1 hh:i:1 hi:i:1 hj:i:1 hk:i:1 hl:i:1 hm:i:1 hn:i:1 ho:i:1 hp:i:1 hq:i:1 hr:i:1 hs:i:1 ht:i:1 hu:i:1 hv:i:1 hw:i:1 hx:i:1 hy:i:1 hz:i:1 ia:i:1 ib:i:1 ic:i:1 id:i:1 ie:i:1 if:i:1 ig:i:1 ih:i:1 ii:i:1 ij:i:1 ik:i:1 il:i:1 im:i:1 in:i:1 io:i:1 ip:i:1 iq:i:1 ir:i:1 is:i:1 it:i:1 iu:i:1 iv:i:1 iw:i:1 ix:i:1 iy:i:1 iz:i:1 ja:i:1 jb:i:1 jc:i:1 jd:i:1 je:i:1 jf:i:1 jg:i:1 jh:i:1 ji:i:1 jj:i:1 jk:i:1 jl:i:1 jm:i:1 jn:i:1 jo:i:1 jp:i:1 jq:i:1 jr:i:1 js:i:1 jt:i:1 ju:i:1 Aa:i:1 Ab:i:1 Ac:i:1 Ad:i:1 Ae:i:1 Af:i:1 Ag:i:1 Ah:i:1 Ai:i:1 Aj:i:1 Ak:i:1 Al:i:1 Am:i:1 An:i:1 Ao:i:1 Ap:i:1 Aq:i:1 Ar:i:1 As:i:1 At:i:1 Au:i:1 Av:i:1 Aw:i:1 Ax:i:1 Ay:i:1 Az:i:1 Ba:i:1 Bb:i:1 Bc:i:1 Bd:i:1 Be:i:1 Bf:i:1 Bg:i:1 Bh:i:1 Bi:i:1 Bj:i:1 Bk:i:1 Bl:i:1 Bm:i:1 Bn:i:1 Bo:i:1 Bp:i:1 Bq:i:1 Br:i:1 Bs:i:1 Bt:i:1 Bu:i:1 Bv:i:1 Bw:i:1 Bx:i:1 By:i:1 Bz:i:1 Ca:i:1 Cb:i:1 Cc:i:1 Cd:i:1 Ce:i:1 Cf:i:1 Cg:i:1 Ch:i:1 Ci:i:1 Cj:i:1 Ck:i:1 Cl:i:1 Cm:i:1 Cn:i:1 Co:i:1 Cp:i:1 Cq:i:1 Cr:i:1 Cs:i:1 Ct:i:1 Cu:i:1 Cv:i:1 Cw:i:1 Cx:i:1 Cy:i:1 Cz:i:1 Da:i:1 Db:i:1 Dc:i:1 Dd:i:1 De:i:1 Df:i:1 Dg:i:1 Dh:i:1 Di:i:1 Dj:i:1 Dk:i:1 Dl:i:1 Dm:i:1 Dn:i:1 Do:i:1 Dp:i:1 Dq:i:1 Dr:i:1 Ds:i:1 Dt:i:1 Du:i:1 Dv:i:1 Dw:i:1 Dx:i:1 Dy:i:1 Dz:i:1 Ea:i:1 Eb:i:1 Ec:i:1 Ed:i:1 Ee:i:1 Ef:i:1 Eg:i:1 Eh:i:1 Ei:i:1 Ej:i:1 Ek:i:1 El:i:1 Em:i:1 En:i:1 Eo:i:1 Ep:i:1 Eq:i:1 Er:i:1 Es:i:1 Et:i:1 Eu:i:1 Ev:i:1 Ew:i:1 Ex:i:1 Ey:i:1 Ez:i:1 Fa:i:1 Fb:i:1 Fc:i:1 Fd:i:1 Fe:i:1 Ff:i:1 Fg:i:1 Fh:i:1 Fi:i:1 Fj:i:1 Fk:i:1 Fl:i:1 Fm:i:1 Fn:i:1 Fo:i:1 Fp:i:1 Fq:i:1 Fr:i:1 Fs:i:1 Ft:i:1 Fu:i:1 Fv:i:1 Fw:i:1 Fx:i:1 Fy:i:1 Fz:i:1 Ga:i:1 Gb:i:1 Gc:i:1 Gd:i:1 Ge:i:1 Gf:i:1 Gg:i:1 Gh:i:1 Gi:i:1 Gj:i:1 Gk:i:1 Gl:i:1 Gm:i:1 Gn:i:1 Go:i:1 Gp:i:1 Gq:i:1 Gr:i:1 Gs:i:1 Gt:i:1 Gu:i:1 Gv:i:1 Gw:i:1 Gx:i:1 Gy:i:1 Gz:i:1 Ha:i:1 Hb:i:1 Hc:i:1 Hd:i:1 He:i:1 Hf:i:1 Hg:i:1 Hh:i:1 Hi:i:1 Hj:i:1 Hk:i:1 Hl:i:1 Hm:i:1 Hn:i:1 Ho:i:1 Hp:i:1 Hq:i:1 Hr:i:1 Hs:i:1 Ht:i:1 Hu:i:1 Hv:i:1 Hw:i:1 Hx:i:1 Hy:i:1 Hz:i:1 Ia:i:1 Ib:i:1 Ic:i:1 Id:i:1 Ie:i:1 If:i:1 Ig:i:1 Ih:i:1 Ii:i:1 Ij:i:1 Ik:i:1 Il:i:1 Im:i:1 In:i:1 Io:i:1 Ip:i:1 Iq:i:1 Ir:i:1 Is:i:1 It:i:1 Iu:i:1 Iv:i:1 Iw:i:1 Ix:i:1 Iy:i:1 Iz:i:1 Ja:i:1 Jb:i:1 Jc:i:1 Jd:i:1 Je:i:1 Jf:i:1 Jg:i:1 Jh:i:1 Ji:i:1 Jj:i:1 Jk:i:1 Jl:i:1 Jm:i:1 Jn:i:1 Jo:i:1 Jp:i:1 Jq:i:1 Jr:i:1 Js:i:1 Jt:i:1 Ju:i:1 -b1 16 xx 1 1 10M * 0 0 AAAAAAAAAA * ZZ:Z:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""####################################################################################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----------------------------------------------------------------------------------------------------....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<====================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz diff --git a/htslib/test/xx#large_aux2.sam b/htslib/test/xx#large_aux2.sam deleted file mode 100644 index 9e338ed..0000000 --- a/htslib/test/xx#large_aux2.sam +++ /dev/null @@ -1,11 +0,0 @@ -@SQ SN:xx LN:20 -a1 0 xx 1 1 1M * 0 0 A # aa:i:1 -a2 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 -a3 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1 -a4 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1 ad:i:1 -a5 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1 -a6 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1 af:i:1 -a7 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1 af:i:1 ag:i:1 -a8 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1 af:i:1 ag:i:1 ah:i:1 -a9 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1 af:i:1 ag:i:1 ah:i:1 ai:i:1 -aA 0 xx 1 1 1M * 0 0 A # aa:i:1 ab:i:1 ac:i:1 ad:i:1 ae:i:1 af:i:1 ag:i:1 ah:i:1 ai:i:1 aj:i:1 diff --git a/htslib/test/xx#large_aux_java.cram b/htslib/test/xx#large_aux_java.cram deleted file mode 100644 index ceafd2fd28c9c06b2ae3d4c1d7e23dc30715a275..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22668 zcmeIaX&{wr|M$JjQz^NKw+J;m#8RGtR{hz1vyk9)etLN2oU#=^^qwls?`fiuc`S~5~%XXvn1_4T3 z+|poLWB|jD79FP-MGK+8n}p!+_rKrxD5q7^OW?2@{-eN0p{#SX6Z3I3Gt^rpzRuG_ z%+u8@E>6tF)oi7K*oM_+YgW^ktBg!n)99;K8`2CJCTk3tCdSBsX}p?lWMs$?U*}F0 zbFwot5VLhLW7A@2s`{bKDE;UtMr73QlOJ239ptYc8x|R)k0NOy|9Qs=3k!}SPP!}g z4D{HvNY&pTpsK5jXyKgbNQN#gI9QiM3y4zH4OP|kP}SY2%3(xtqV(xB4oyEUPLD}b z)ph#cv;X~fuBz+y|MZvret)idzkfk7cUQCD^FN=|?B~4gCMN zftuHL`HQ{a_s1tLKv5CrEB`q4Ua=9rN0bkg5A0naw9%E%+MRFXMn2CCO26N{>@sI4 zTeohd&}fL}k7x+d=!nKZG$x`2AQ}tN0uhakXhDb;jA$W<7K&(L@IPlni$JtUM2kW+ z4x&XPS`4DaB3c}x#Uok*@~0txf8>vlKOOlqkUtao2OxhI@()D*Y~&w={DYBy2=Wg_ z{$a>J9Qj8e|48H?h5R|lKN|VRApcn8ABX(ok$(bwPVhqL_ZuA{20~1P0uW*$6o?QT zp&*2U5eh*l6rnJL!V!uHBMLD%h!Kq#F^Cb1 z7;%UZj~EGvNkdHk-@iX59Wfb*$wbTm#AG36AY!r+GYBz*5iMgcJ>AQlD0p@4W4kbqb;#Pa{$I*X2248&q0RsdqL z5GxR|*oYN`Siy)Df>@!56^2;hh!ufYk%$$ASRBNPMywdbibbqA#EM6(1QbX^f&Rb$ z0S3}hAOi(5QD6WHWTC)76v#$_K`1a71%{x&P!t%30>e>Y1PY8qfl(-sg94*bU%pCjo3km9gNr^h#iX9VTc`$*b#^w ziP%wy%|YyFM6sqJYky>okTo4yGmteCSqC6%7P1aR)@)=Qgsg*+bqKN!Mb=@+IviO? zAnQnE9fhnp$T}KX#~|xiWF3dBr1Rxt0vI#^sY-AIJ zY=V(Z2(k%9Hetvn9N9!5n@D66g={#;CK}nqAe&fZ6NhZ#kxc@!r6F5?WQ&k39oaIF zEfd)WAX^r)4MetVWE+HRgOP0rvJFMHVaPTd*+wASNMsv@Y&pm_8rjAm+gM~9hiv1K zZ342RAv=F$hmai|*)fnE6WIkII~KAFM0RXs7liDBkzEL~3q^Ke$Sxe&MIgIKWEX|( zILIy<*~K8cSY#K6?BbDK0CW106XqkOLDr1Rw_% zatK5YY~&Dx9D>3yP7LJ4L{0(7iG`d3krNv^1tF(k z1og`5MCGaESvA?IM^9Dm)}PlYd$`Tm#e_u+0n^uT}*4E(?V5DWytfDjA} z!2l5q6v2QI3>?7#5)354fD#NW!2lBsG{Jxq3_QUA6bwYcfD{Z&!2lHuRKb813|zqg z77S#;fEEmF!2lNwbisfZ41B==7z~8LfEWyn!2lTyl)-=*44lCL8VsbtfEo;}!2lZ! zw84NI47|Yr91O(4fE*0W!2lf$)WLuq4BWv09t`BcfF2C&!2ll&^ud514E(_WAPfY; zfFKME!T=!*6vBWZ3>?A$A`B$LfFcYm!T=)-G{S%*3_QXBBn(8tfFuk|!T==bi#lq41B@>C=7(cfG7-%!T>1@l)`{144lFMDh#B;fGP~E z!T>7_w8DTZ47|bsEDXfLfGiBm!T>D{)WU!*4BWy1E)3+tfG!N|!T>J}^umBI4E(|X zFbo94fG`XU!vHZ16vKcq3>?D%GE9YE2T+EAWf)+Ffo2$RhJj}ofQEr+7?6g6X&9h} zfod4AhJkAsz=nZr7|@1+Z5ZH&fo>S^hJkMw0EdBa7!ZenaTp+nfpQoyhkhhk0EmHr7!Zhoffyi&fr1z?h=GF`K!|~a7*L3Tg&1Infrc1xh=GR~fQW&J7?6m8 zi5Q@Wfr=Qgh=Ge3z=(m27|@7;jTqpFfsPpPh=Gq70EvN+7!Zkpkr*I}fsz<7iGhxL9j3g z76viGpfeaG1cN$Yc;LtIn2zD$8iQ$JP%R9ug+aD3*cJxe!r)sNgbRalVNfm%&V@m` zFjyA`?ZV()7{m*Md0|j54DN+NzA)Gq2K~a|Ul;@ogMndCFboccLBcRt7zPc);9(d< z41+20g>zXBY$xgP~ziGz^Z0LDDc-8U{_n;At2{4TGs+P&Ev$hC$Xa*ct|1!{BQe zgbjnSVNf;<&W1tSFjyM~ZNuPg7{m>OxnWQ@4DN5{1Ag6VlYGuiip7xF-Rf?OT?gw z7(5Y!C}J?h)LF6rzL6UcCI96AfU~OuJRWXzfd@u$KFUU_fGFSW?>9cm1`o*KA#tOt zpctI^`6zsR{I2jsDc}Ws~ZQ-+Ww}W>_rvK*wRZy6Z zPYC||`$3gBBhr~pIx|RTCg~hNI5_ItP)?!K8Bt=^RQrhmp?Vq;mx697#Gy zk15qGyQg0v*e{v8A z;!Nrdgo4OPy@6m5IjJ`g4k9P@1_DClq~1VCh@8|L2nvytdIMo0a#C*~Fhox34TOfs zNxgyK5ILzg5FR2Y^#%e&J7w-$Vt6{ zXc0N7HxMr(C-nv*M&zX4K+K4o)EkHzk&}7@aU*h4Zy<6+PU;QB?oSSaN1RE$f$$MI zsW%WnA}93*LP+GK-artEoYWf#BaxGO1A!!RQg0xXL{91r1e3@~y@7BNIjJ`gP$DPw z20}{Yq~1VKiJa6M2_i5Md%G^#)>0 zJ3Dj$Vt6{c>l>kz=<=dHxP0nC-nw`PUNKC zK-h_#)Efvqk&}7@p(k=uZy@+YPU;PWpU6qQ!2*EDNxi{BfXGR`!GeIuNxi|sfXGR` z!2*HENxi{B;ZF{W1>#KV4HgYVPU;O74@6Gt4HgkZPU;O76GTqx4HgwdPU;O77er3# z4Hg+hPU;O78$?d(4Hg|lPU;O7A4E>-4Hh9pPU;O7BY$#OkPv55Z?G^Sa#C-wKp}Ec zZ?I4ya#C-wU?Fl+Z?JG7a#C-wfFW{HZ?KRda#C-wpdoTnZ?Lc-a#C-wz#(!{Z?MoI za#C-w;30BSZ?N$Blf&YNIFovVMG%pbdV|Ffk&}9ZMG=vcdV|Fgk&}9ZMG}#ddV|Fh zk&}9ZMH7*edV|Fik&}9ZMHG>fdV|H3;2b`|-wUe$dH;J&_2(mDT}7NpZNU19$VqL$ zI*Z6jZNPeq$VqL$x{Jt3ZNU1A$VqL$I*iCkZNPer$VqL$x{Sz4ZNU1B$VqL$I*rIl zUq!H9BXZJL5v<$(rbs}*l^#qa6c^#qsIe^#q;Ug^#r5gi^#rNsk^#(D_iSep_#sW(`o5;>_iSgR5_sW(`&5;>_i zSi2HAsW(`|5;>_iSj!SQsW({D5;>_iSlbdgsW({T5;>_iSnCowsW({j{>fq8OPoo) z!TOiTNxi{3n8-=J!Frg;Nxi|kn8-=J!TOlUNxi{3naD}K!FrjO@ZJ4c6>LPU;QT?nF-N4c72~a#+U` zXHsvlo+olrZ?LW>a#C-wz9({0Z?MiMa#C-w-Y0TWZ?Ntsa#C-w{wH!$Z*Uzzk&}9Z>jNSu^#<1oe{#51AkL)T;F^KRNxi|f1Cf(@gKG#PC-nx`5=2hw z4X!DOoYWg!TM#*^H@LJ6?* z{^W37LYzsx!SxA|lX`>e6e1_}2G=V@PU;P=TZo+08(hB-IjJ|ejv;bVZ*Vl`8{^#<2FL{91ru6zFEaP32!Nxi`}5RsF5gKHroC-nx`L_|*N z4X%xdoYWg!BM~{NH@H?Ja#C+_%|zs+-r(Aa$Vt7yH58GPdV_1J|2wxIiqNI-Q&NRf zh5z#>fJH?paBCna^xF#lb59}Lx*{}9vpJ$KR)zUI^u#6`LmRXZ{RA(`gbA%aOV9t0UdP7H2L1jwB0?f7 zo_hXYXZR_l!^C(YMF_599!HdEe-QlrA^Yw&HweN_3#GAwzmZRnUr~5*mgw(~g}3#q zTvj<72~s}Vt#=WIpQqS={VXUbuvnN+7Jl|Sp-{N9@J=-4&kuh26pGK^OCg1niR^J8*?cXwcV72jM?_xa8l#)mQb`QOExdz@|MD3DVL`XL!Hah zfT6+VX~NLt^0Z)Rae3M>w7I-xFqUz7Ixuv&yyY;Kb9pOZtl;u=Vd!#sdNB03Jbf7Y zT%G|811`@Hh9Q?{1jC5STM1(&m$wSWDlTs|jMZG8F$`laZw-t!T%HLG6E4pbhAEe4 z2E&ZYTMJ_?muC*coXfL-VZr5D!m#A>tYBDidFx=TDic`O(#E-w&9AeYC6!RGRUU<7e_!7zfkybu^6TwW-QP%bYF zMi`eD4kMh)i+~Zq7#uDy8b&mi7Xu@P%Zr5(%jLzvh~x6&VZ?KJ z2{0&pYT60hr<7A_@FjcW6ufJ{@%xMS=OcwRfBmygBIRFuiDr~4a4Ts_f3yo$M z`3>H$?-M!mwntCe=G&!Q6^AXmYu1*wpDU>p*copmetPce_WnD__V4I|WM|$c$5g8Aw!{LPqepJ8_}QN19cJ!9Rq&6H9mCt5Ilbo=R7~)j zzR6aJ+B#YwkTYa?V)a!o!_oF)mwk##?54(@n%}M|Zg|POU}744XvxyA@(1|^TKC)? z&fqmYG*v!zHZPtULQ7tdv+K*xvzFT_hi@u1HM+V~?CbK4r>Vct3H^Rf+_&NL-BsCY zs`FVhx>|=@>Q}2QbfSLN>|Usq>iqokiSxtswaW^t)2?p)>|x}uw@r&<-`cW_|q?aw+C0&3fQWJR}-{}mn7+E!VWkvTkOsui(2PexFm_Wq0KuEk1v zmV@bcZ{|9bxW#DzL(M>HEv+Eee@ znV)DA@L&7k7EV)W@Acq(p4hgvJ^Om}*U^_@^M;a@jIUljG1hKbpQR`wpLp$v zKr*ww%{RC~g#Ok3)j6R>=E8$TioPG~wrC~UuwTp$COnuNq(@sNR4l5kXKPnICW`Q z)}!jZ+^t_N!NX6!+g#<{zqg-*-Cqs}yD{!`uJM@s5HLM=cyZ~zwQffm3-T33x4eHT zxhgRt>gU*aa=N~BztjPP@~(Gx{R{_W*<6FEwj{};<<b_j>NI=!`bE_V2Yl#nQusUOs`KviN@~V&dlcHZY z&abPE&usfTUq7y-+x6{tN98Z4-xf+Q5OeUkINj8de97;g?QRLX!0^%I=8m)47gUEQ zETl*3-2|3D58cC(UT0#nb=u&e}Ze8WSqWT zB!zSDasj_VqD6J-&xG8xcM=H`s}fZwlGpU*pX&D6x+Nj_>75uo$Ip*aBI+w^LijS} zMk_RwmHi!Aiw-_L6m+S_raGFY=ajhrhxh4$p6bSTLKQQ=4#=%Zjxv$4yZm~N?qUb_ zE-UlM+?s>0=Wgg1Xi)56UE(zNRWUsUe)X&rc=9F5o~Kx8&Uv!jaNwO=<(*FoJ13W_ z%FcC~%-^>&LATLLW}}FLg>QxB`gZ$E72k(rBSV}ePttFeeyml>T8=V!CQg;U-cfT4 zN<}iB<{sKcKmTuW)zPvY*b;;T6Frhi`^sJQDexhzY*PLCxcA;pA zLqpxg19=()1_usWsdNrZmQ-gPJ1lc>X-i?Sv-5n$cWcAbB}&>CT3nli?OY=ffG6A8(rqyz~0_@xj-I;59#XH(uD6QHk1Sjmv)t*_eZ!tR?JH7cPJ9~Kzx-6mL(vi0nL-X<=85Ut z9brdWs|Q}6<8zHV|Dtozk0mD*L?3LasGM5<*9ug0@69@`a;b~|lm|AjRR30!?E6}4 z;NzB~`XSg!@73u16wl4wHAQ6)F?x{s|IuLHN}IRn^S=N!b;b65M*mWRx9}EV@Je*YD#6$9B&f zkxaPbQQG=VB`aR!HZP~C&o^(zc9S+2fB zxAwYFe#oem#nFRQ*PH{{rHvazJ((Zsa;0u+Tvlp4_-1~?Kw821jM`DDgT|t~;4$SF z45!Z@PJfTOebIA=3b)z7m~VSqv#;W|{vwgy6(4838=klQ+vSTZj;g0U6NIBDj;N0t$nmj7Oi%66i&W#glv+2wyE<&PJ=i;5U=jB(af^KW_Heg6 z|a@3+U2kE@bIP0YnVGf^6zlocl zUXYg^m4E-svrFl@d&dg(J(H@2&-*VsbSC&wpUcSU$-g~XjG9!2Ece`g@>ry=WZPmf zUZH`UWRm_>O;i1@@#tGgm#-L*!B3f<^We^gUMWD6YHhT zOVYFY4}LslxX1TXIIry0>S)S-m47aNU!|&`6Qvu5XX_=0JDgr>hj;I-)^ZLGZ99*?Yb?{ZQn|XF-fJYW z|MTL?IcGW}&6*=-dX&XPn3CL7T;5bx@_k0;@p{X6#kc>a9k)68;<-xV zmRl8TuM~-v?2>YeSC#9Sn|E~lPG#1e-i!C#E{pfIQfOvq>#=J?6GB$XY6qJ0 zHH&uqd@9U$_GMIA&4Gfjq|We-I$6I=HYFPD+xzO>bq|Y|UM)eEqg$&I-6zL6@5Y9V zG3q}Dxms!78S6cF{!~az z-77Dhn0VIV$bpB~+nqbNnvW;&`+pH_!_QPCdV4qBpAf&Ols&ESXjD#qbf_(+=PGCQ z;r4y=JrtLE$u??Fox2v*=fSiTdKl~*x%X@HvU9@h{S!u2FUQZHQ;1K;t;e4D85q)+ z8GX^b^*s8-9IcxQi@Q(9T)WROy;)tt&E|gNJ4SI>=5*Jw)UV&QvNo>CXt%)Q)!|e8 zD2vZUZ2VA-^h4{mSlJ&=d~)?$6oa3fu&|-`D&8CPtZ_dO*yLuf>9J<|q-(%n{p{k9 z3;J#e^fmdW`aj-ZG*3y4bDux9_Ic&*8H)a`e*zAq@Q%GZAHRNJ({clYfS8?<8|y{~ z%+3sOz8t#OvuB%f-=~g}uFz_I$wYp)OKs6zQZG5Lr&G%=wj-(d_X`v{>XtQliiy2= z7SF87(RqGH09ia{O~?v7qlhn8DL5HXR9%=mSu8kQ-lq^_HkH$Ob0qJg*|`K&y%rJt z$Z9HQ&E#w0W3G?AMr1ZJ{G7I@-&kxg-_G>o`IrjjhVGiK3uD%Fday8UYg*nhV5Nxw$v?Jp?LmT@ZFJZE6h7QS`;N0-$- zh<1v&#_(IAw4(NX(A?c&>=WVdJiW8FM3;`2AAkQ)O*cZeTsBYcprc=~Z$g zRtT!QuS%l2d1qFyagm%1NS|<7tlnni*75jpzR`@=d%E<8#OQltW0kFW`oogx2O>hG z-U*%(ANW!iX`nQ$E}7oQ8E~kV;D~lD>oNbltglMavJ*ke!5`ZHDDFf?fhBM zoN}*|+#!`c?RST{l*k*&`bIIcmj^fJ@Jk3uW;^EGTwmWJ?sIa{=cm(q(=lu~IkCxZ9=HH{5C+{!H^u`LDZsCe&MV)`$*7$Jm*N@?HmE5)E z3F`|~tunXtt?F6j)AHbFa9@AA-l3CHDUyX{T*nl;fodARL(g4yG3GIxG8SOleI zt(Op5{bfiv_Ajx+lB+v~OJDRJ&dQXR=8dOk_}-7$TTuLF)6+cWR(kzOjVjaOFWE-* z3ms`DHa|C?Il9Dven`mI>5Y}gheYbwD%EUCOsD9=Mp~WN(P9mn?D2!DvH1fY#k(@P z7jh47naB=i*S0cjgKJOw<>X&Hx!agqb!!_RdJ*IM^~u=rk8gk28I?TFEjH)$8ePtM ze0ar_MC%t!`wzigy68oC}%zVG@-jq2TJ%yI|o)5}tKl61s+gXR=ax+Q&ZzXl(rVO8y zJ(W)0B6H^)UYyY~Y_KivtA4T6Y5g685x1(EEe(wIQ*W+m-jHWndDgq=`y7GX4y6ZG z30p&srI+t{cDpE|)d`NXhvewDiHBgN3*-5R~-2U@y1Yf>NAls#)qe12tC z-qQFWzpG`_#U$;dK=)`_5t*QUMz`MUlz5fn&f1t^kDmM5rW>DDf6EmQ&3eKAJ^c*Z zN=$T?o)Bzv$bE8+EVuphR_dgyFE6q)wp!vu^yTwg66!maYkl5ZWD(G$bt-`V&!w~% ztjf}dlFyKv1|vv1Xf&G?)k~ckTI~LKqTJn;ZdWaLjd#W0u}qr(Xrx?g zeP^1Q!gG$gyh7>qvzI4EA9~vz>{MtvkWkjSK~yUBgGz$*%}xAvjTg@iHfWd(otGax zAQjVH%UgZo!kN8=1Mp6@e?t2cTcBjT#XpR}-DF?-3ar(Kg``6yY)W1Udm}| z(k)#6_Rr}ZS zOD79rt~@QS%hWG9)7$s>kZ!u-Hf7c09Zhx5t3U9+u86+fCCV{f>sEGy)*&^uW?aE@ z-kpXO@7-QR$hFoyc!=(dt{QqA(x)siQSP}saeG$8Df~0{LB!eNIXi1&>=!3B4j1ZN z)N0(M>d?3s3w`v+i7{>wj!50+r5qi&N86`Ot-t?dd)cDe=&;aS?emv7!m6F0-W$$e z`<*V8BovkRYFn1cll8`7&saL%$^Iu#`y{pn)^@ZS?XJ^X9lrk{%KE7#HtruT{qVU+tgN6cpWKcL#o+pU z3!B+a#d}&oHSV6SO>T8hJ=TP1xCUJMI=lFry1pCt)S7(zn?K%H!Cq$3(84jNq$M@R zFZD0}s5oGN2j4YBy&4!QH8)r)xI{Ad+J%9WXB#+k0}6UVSNrsR7U=A9EuJTNHMQrG zjYOW*ZWeX=&Aftk|DQMC``t^b<63x#sfR?wE1cY}voY};dKS|e$A(QKFdiLA(yyQ7l zT6PBCt}E%ymS^Xv-}Ji9a8=pb+cm7Mp?>4&yzenbjx=nR=vb+iBcwcYKV-+ z?SDKN{FE!#@?ib5Yi^mEokKnIr4BzRE-jIFndragn0HdyYql_L=euidBM&ugQ`tQa zbXT@MQI;>gz0M@h_W93n^Ss-Ow&*_TKl)?hf%k@pYqMWhC^^r2A9TMojO}dw&a*LS zOLWpe`SJ5t)pXU0%Vi~#4m$cglRUc&o6hmnT_I?ow<^hZmv^Rnql=`*xAcj(Th!YY zp6z%X;%hXs;WS++Au3v5%cOE!gVQiYJt1P@0XM<5HKSj$V-_l@F~ZW9bjmtJJC=!F zd7xm<8)R0+Ew4gFG1n9N_InSZHSbLN9rv!#GI`yZc2sna$sCm!J9dY&K$vCaE#H6l zwHLju`s{s7s{QLV&ez8a`R6IzX*Je8+%l%M&pYdhSgqTl%byaZhTbP%39j+oG3iA& zPiCH4Sh&M&ax^a`%ToLL>n8ir*Q{0h*628yo)zS@X#CX6MP++OPEm5&1|I!;aoy1o z=em+Ko%Jfw)wrFpGShxV#sTWwnZo1~TPhEG|FglTlz;c>_mhh!A`~^+@~*xg_H*2m zCb2zdSZ^q4je2ae95ws0LbZ49{YmQsPhGxFDjDrJwRt?JFT-oew&)Kz^?GC3UP5^~ z%H8Qn%FYVQhc;*Fk8m7`B|yDezV*3i^|Tl zli#-&xpl1E*pV=|fR#RH+Wxxj9bZ45Q&ya|*}ZLRH#2{P>K@@;^zORUa&9^;x`O%R z?yh&m2YP!;?W7eMQ+K0|;|qD}wU>Sx{P;S?R&(;Qq&@BMoB6U#c>0UMxiF>XquM`p zTBJN{Ze*@a{8sfq{;a42|5;<0!N^(5L5Zhc|DJzY?ACEW$$f9< z&b+29MLl}r1@RZJ4!J+HkS}x%Y8_Uu%E(X~GqpOtJ8yN1K25~YbC;uro@H0b-J8?y zC9Zz8iCykgBlRGkp6@RUOB=q7xq7SZq3)cCdzIQUuP|}pn(!lzc<$U&dt*C1P?4HQ;sk8fj=}6OT?V(PajXtUV{5{gQKg!wh zi!L7QKe=j1L1O=bUQ>(Oecx`KocYIi{*tS$3wOvo=a!!sX_yhLKX-fWMv-2-AG9q4 ziEO-Cy3hadjGz6j?DF;ZEYDmDGb)xSI+a*mQBM8xh%H`X7W;S4p#Al}h|SquEwcQQ zOU*CqU8>uVBegQVaC+7yzdc-{^}W-%*1DQQ@nWSHx$)&0d^(XK-(%e*F9I-}u;;y}?+7nUVTRJUiO_+-L2&*yes4G+8zn(;YUb zEp7o$XM3=$a%)E7jM@&S(2Uga#8XR*xc+pZ)N2)Afyn@ zZhAXa_o7>>EAdR_@~9+->^Xb>PLhA~LGWRjf==@02YWP_EvY_qv*h8R6uIXKC&cGE zJ>=}$d3{-<)qY!1g>V5$7kTHX(EYdKlVdcZ`h)lCmwTUS@VoB*nmx08rmdr%Qodz; zlgkVCeM^}=ON6<6dV)3M8Lu;|9Wx81DZ$@|3Kz8&-?z|f*9bqT$UUxAe@`NO#N1b8 z-1WX}_!qf~ww0UmB`cac1=J})qCQ2ghBA3ipX4vq_$l@2YmtJvx}0D3sj9*+Hy_LA zYK7(K51D8WCj}24GXC|Y??<)sB>u`XiYnP{S^C}NvEb?HZPymi3eR4oCIuv4FkNj+ zixvpHai!Qi^=6O6g|*o%i_-LYZXwk_L*3Hut#f#2G5z9Oh|9i%C(~6nB*ywM;#6uW zH`QCtdnfJG)aHJC%TC|cA;xLAafrXL-nx2tfR>eNQg$TRny1j0uIaz@W0aYiZ-vjw z)%%-#+-*ggua}!lQkQk#=PNZ-Yi8;1Qa>Jck&(Mwy|=|{u7->5_IYB-5=V}%cU@T% z9HhQa7ljV zR+_)8@DGVB+u~k5$5P=3gACQ(EyraeuBp5AbQ&n%kYabQE4AFW!ev?aRY!w_zl_x6NT((yO6tmwH7WBK&aAsQX8AmD^S^l_%_nt@wkH1A;C1B6*IM0O^Lp}C zOE+5NS?9V|2E8b~IB>>O{Hka!tvKZJu_Ti>LeD;?9mG3o|JA)?jP!KJgm)!6MKvma zFZdSe8NMaF`PbQq?FPPaitkQGh`x-X3R#*2dndl5ASVs8M+wn&kKD>CB}R`MU07J} zVHc)6GgtP>ji|D(D>w@FM|7E{m{XND&AOhU@^EM_^{2^Mm%S@qH6?ax@(%0~X?Bj; zcxT*MJoQVZuF|u81tGmvW1qyOB6d%6+IGqDpLo*N+V+goa@lsDcf8@!+VoiMPc5}k z?>)LLYu@YldPU|mv+UBAnbKf=bY-dFV%^oPJ9(ew!1!cxJi`Hr?dLd>C_F@6VhWp z+U$bshX)TnNgJ}J4kK_d`ATC4>i2)R*R7kNyqo)|#N>&L z{`kC7w~ryy8x-5pI=;Lt`b#!-UfbJFTEC- zQ>b?Lvo_82J6TlSTCDLT+LWKBS253|zsAiWj61Tt(wW~%X_ZRTy5NGhHqDkhbQ-<* zBIJw9R_G{&9qHM*@x>NJlRNDf_ElFLy8dguyjRJp*3l}}4EO$RvwR#=?p(vXzNTNa zFD#2)&N{P}x`G)u4Strpz9|dpDxwst8$a^;E_$@D;d)7=+98#jGYRedEf?(l7apK4 z*BnnCOZ{;8@`)Uun6>zHc3Qy1c8}9->f2<8Gp>)PNxb}f_+)b2nwMAkZqrk>re7NHdtdfnR83F)qzhN-^BD|an?k?HAt zni`v2``|-+@5h9&#GFSZ;#`@O>+z+BCJKtC_3cE{q`K9LvbWyZs46U6;61W*T6=H! zowYOKPWx@?X6xJcY#z8Oq3fQs$2)kp)wzEkZLZMH$=tQ~n^W(o@G0pOQQ^C9vaVft ze&z2=ywGJ|Czp5cXv+Ur(8d1bywbX%yn=s!v?xA$tohXYlN?+7dVOqRa@Fd*7H!ch zUrv}u?|D%r`{@=s5PH2YF~9-kbrtouy%y67y!a-qFJ8&yWJjglq^GEW>a+Q`q;kUA zR|!x)FK0Ek&v~}->wXohdAo{=jpt1M9NSu6nAK-i<+kdkZQ_JkTk;ycLEorHo%EzN zSBipAKzUO;g-{x z{(SzPHvQt5Pz4ufXD`FbUrIjv1ngt0Gz(g#EN{kfdRo~0pEvy78uZu77KeOs@9EE% zYO`w6&Fu^h3{L8|k|bLiVS272A#`13H%@3l@gFlD%`%eeX e!}e|taE3pSCe+yL218i*_x~dSA7vErt^Z%Yldkgs diff --git a/htslib/test/xx#minimal.sam b/htslib/test/xx#minimal.sam deleted file mode 100644 index eb72140..0000000 --- a/htslib/test/xx#minimal.sam +++ /dev/null @@ -1,10 +0,0 @@ -@SQ SN:xx LN:20 -@SQ SN:yy LN:20 -a0 16 xx 4 1 10H * 0 0 * * -a1 16 xx 4 1 5H0M5H * 0 0 * * -a2 16 xx 4 1 5H0I10M0D5H * 0 0 * * -A0 16 yy 4 1 0H * 0 0 * * -A1 16 yy 4 1 0I * 0 0 * * -A2 16 yy 4 1 0D * 0 0 * * -A3 16 yy 4 1 0M * 0 0 * * -A4 16 yy 4 1 0P * 0 0 * * diff --git a/htslib/test/xx#pair.sam b/htslib/test/xx#pair.sam deleted file mode 100644 index aa8c77b..0000000 --- a/htslib/test/xx#pair.sam +++ /dev/null @@ -1,7 +0,0 @@ -@SQ SN:xx LN:20 -a1 99 xx 1 1 10M = 11 20 AAAAAAAAAA ********** -b1 99 xx 1 1 10M = 11 20 AAAAAAAAAA ********** -c1 99 xx 1 1 10M = 11 20 AAAAAAAAAA ********** -a1 147 xx 11 1 10M = 1 -20 TTTTTTTTTT ********** -b1 147 xx 11 1 10M = 1 -20 TTTTTTTTTT ********** -c1 147 xx 11 1 10M = 1 -20 TTTTTTTTTT ********** diff --git a/htslib/test/xx#repeated.sam b/htslib/test/xx#repeated.sam deleted file mode 100644 index 88fc3d6..0000000 --- a/htslib/test/xx#repeated.sam +++ /dev/null @@ -1,7 +0,0 @@ -@SQ SN:xx LN:20 -S 67 xx 1 1 10M = 11 20 AAAAAAAAAA ********** -S 131 xx 11 1 10M = 1 -20 TTTTTTTTTT ********** -S 67 xx 1 1 10M = 11 20 AAAAAAAAAA ********** -S 131 xx 11 1 10M = 1 -20 TTTTTTTTTT ********** -S 67 xx 1 1 10M = 11 20 AAAAAAAAAA ********** -S 131 xx 11 1 10M = 1 -20 TTTTTTTTTT ********** diff --git a/htslib/test/xx#rg.sam b/htslib/test/xx#rg.sam deleted file mode 100644 index 2d7efbc..0000000 --- a/htslib/test/xx#rg.sam +++ /dev/null @@ -1,13 +0,0 @@ -@HD VN:1.4 SO:coordinate -@SQ SN:xx LN:20 AS:? SP:? UR:? M5:bbf4de6d8497a119dda6e074521643dc -@RG ID:x1 SM:x1 -@RG ID:x2 SM:x2 LB:x PG:foo:bar PI:1111 -@PG ID:emacs PN:emacs VN:23.1.1 -@CO also test -@CO other headers -a1 16 xx 1 1 10M * 0 0 AAAAAAAAAA ********** RG:Z:x1 -b1 16 xx 1 1 10M * 0 0 AAAAAAAAAA ********** RG:Z:x2 -c1 16 xx 1 1 10M * 0 0 AAAAAAAAAA ********** -a2 16 xx 11 1 10M * 0 0 TTTTTTTTTT ********** RG:Z:x1 -b2 16 xx 11 1 10M * 0 0 TTTTTTTTTT ********** RG:Z:x2 -c2 16 xx 11 1 10M * 0 0 TTTTTTTTTT ********** diff --git a/htslib/test/xx#tlen.sam b/htslib/test/xx#tlen.sam deleted file mode 100644 index 4b2f70e..0000000 --- a/htslib/test/xx#tlen.sam +++ /dev/null @@ -1,34 +0,0 @@ -@CO xx has been encoded using the SAM spec; leftmost to rightmost -@CO yy has been encoded using bwa/picard methods; 5' to 3' -@CO -@CO 00000000011111111112 -@CO 12345678901234567890 -@CO AAAAAAAAAATTTTTTTTTT -@CO 1>>>> <<<<2 x1 -@CO -@CO 1>>>> x2 -@CO <<<<2 -@CO -@CO 1>>>> x3 (7..15 vs 10..11) -@CO <<<<2 -@CO -@CO <<<<2 1>>>> x4 (1..20 vs 16..5) -@CO -@SQ SN:xx LN:20 -@SQ SN:yy LN:20 -x1 99 xx 1 1 5M = 16 20 AAAAA ***** -x1 147 xx 16 1 5M = 1 -20 TTTTT ***** -x2 99 xx 7 1 5M = 10 8 AAAAT ***** -x2 147 xx 10 1 5M = 7 -8 ATTTT ***** -x3 147 xx 7 1 5M = 10 8 AAAAT ***** -x3 99 xx 10 1 5M = 7 -8 ATTTT ***** -x4 147 xx 1 1 5M = 16 20 AAAAA ***** -x4 99 xx 16 1 5M = 1 -20 TTTTT ***** -y1 99 yy 1 1 5M = 16 20 AAAAA ***** -y1 147 yy 16 1 5M = 1 -20 TTTTT ***** -y2 99 yy 7 1 5M = 10 8 AAAAT ***** -y2 147 yy 10 1 5M = 7 -8 ATTTT ***** -y3 147 yy 7 1 5M = 10 -2 AAAAT ***** -y3 99 yy 10 1 5M = 7 2 ATTTT ***** -y4 147 yy 1 1 5M = 16 10 AAAAA ***** -y4 99 yy 16 1 5M = 1 -10 TTTTT ***** diff --git a/htslib/test/xx#tlen2.sam b/htslib/test/xx#tlen2.sam deleted file mode 100644 index b02989e..0000000 --- a/htslib/test/xx#tlen2.sam +++ /dev/null @@ -1,36 +0,0 @@ -@CO As per xx#tlen.sam but every read is unsorted with partner -@CO -@CO xx has been encoded using the SAM spec; leftmost to rightmost -@CO yy has been encoded using bwa/picard methods; 5' to 3' -@CO -@CO 00000000011111111112 -@CO 12345678901234567890 -@CO AAAAAAAAAATTTTTTTTTT -@CO 1>>>> <<<<2 x1 -@CO -@CO 1>>>> x2 -@CO <<<<2 -@CO -@CO 1>>>> x3 (7..15 vs 10..11) -@CO <<<<2 -@CO -@CO <<<<2 1>>>> x4 (1..20 vs 16..5) -@CO -@SQ SN:xx LN:20 -@SQ SN:yy LN:20 -x1 147 xx 16 1 5M = 1 -20 TTTTT ***** -x1 99 xx 1 1 5M = 16 20 AAAAA ***** -x2 147 xx 10 1 5M = 7 -8 ATTTT ***** -x2 99 xx 7 1 5M = 10 8 AAAAT ***** -x3 99 xx 10 1 5M = 7 -8 ATTTT ***** -x3 147 xx 7 1 5M = 10 8 AAAAT ***** -x4 99 xx 16 1 5M = 1 -20 TTTTT ***** -x4 147 xx 1 1 5M = 16 20 AAAAA ***** -y1 147 yy 16 1 5M = 1 -20 TTTTT ***** -y1 99 yy 1 1 5M = 16 20 AAAAA ***** -y2 147 yy 10 1 5M = 7 -8 ATTTT ***** -y2 99 yy 7 1 5M = 10 8 AAAAT ***** -y3 99 yy 10 1 5M = 7 2 ATTTT ***** -y3 147 yy 7 1 5M = 10 -2 AAAAT ***** -y4 99 yy 16 1 5M = 1 -10 TTTTT ***** -y4 147 yy 1 1 5M = 16 10 AAAAA ***** diff --git a/htslib/test/xx#triplet.sam b/htslib/test/xx#triplet.sam deleted file mode 100644 index 1255725..0000000 --- a/htslib/test/xx#triplet.sam +++ /dev/null @@ -1,7 +0,0 @@ -@SQ SN:xx LN:20 -@SQ SN:yy LN:20 -a1 67 xx 1 1 10M = 6 20 AAAAAAAAAA ********** -a1 35 xx 6 1 10M = 11 -20 AAAAATTTTT ********** -a1 147 xx 11 1 10M = 1 -20 TTTTTTTTTT ********** -a1 67 yy 1 1 10M = 6 15 AAAAAAAAAA ********** -a1 3 yy 6 1 10M = 1 -15 AAAAATTTTT ********** diff --git a/htslib/test/xx#unsorted.sam b/htslib/test/xx#unsorted.sam deleted file mode 100644 index 05887a3..0000000 --- a/htslib/test/xx#unsorted.sam +++ /dev/null @@ -1,8 +0,0 @@ -@SQ SN:xx LN:20 -@SQ SN:yy LN:20 -b1 147 yy 11 1 10M = 1 -20 TTTTTTTTTT ********** -a1 147 xx 11 1 10M = 1 -20 TTTTTTTTTT ********** -a1 99 xx 1 1 10M = 11 20 AAAAAAAAAA ********** -b1 99 yy 1 1 10M = 11 20 AAAAAAAAAA ********** -c1 99 xx 1 1 10M = 11 20 AAAAAAAAAA ********** -c1 147 xx 11 1 10M = 1 -20 TTTTTTTTTT ********** diff --git a/htslib/test/xx.fa b/htslib/test/xx.fa deleted file mode 100644 index a233f7d..0000000 --- a/htslib/test/xx.fa +++ /dev/null @@ -1,5 +0,0 @@ ->xx -AAAAAAAAAATTTTTTTTTT ->yy -AAAAAAAAAATTTTTTTTTT - diff --git a/htslib/test/xx.fa.fai b/htslib/test/xx.fa.fai deleted file mode 100644 index 97b1a3b..0000000 --- a/htslib/test/xx.fa.fai +++ /dev/null @@ -1,2 +0,0 @@ -xx 20 4 20 21 -yy 20 29 20 21 diff --git a/htslib/vcf.5 b/htslib/vcf.5 deleted file mode 100644 index 47e833a..0000000 --- a/htslib/vcf.5 +++ /dev/null @@ -1,120 +0,0 @@ -'\" t -.TH vcf 5 "August 2013" "htslib" "Bioinformatics formats" -.SH NAME -vcf \- Variant Call Format -.\" -.\" Copyright (C) 2011 Broad Institute. -.\" Copyright (C) 2013 Genome Research Ltd. -.\" -.\" Author: Heng Li -.\" -.\" Permission is hereby granted, free of charge, to any person obtaining a -.\" copy of this software and associated documentation files (the "Software"), -.\" to deal in the Software without restriction, including without limitation -.\" the rights to use, copy, modify, merge, publish, distribute, sublicense, -.\" and/or sell copies of the Software, and to permit persons to whom the -.\" Software is furnished to do so, subject to the following conditions: -.\" -.\" The above copyright notice and this permission notice shall be included in -.\" all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -.\" DEALINGS IN THE SOFTWARE. -.\" -.SH DESCRIPTION -The Variant Call Format (VCF) is a TAB-delimited format with each data line -consisting of the following fields: -.TS -nlbl. -1 CHROM CHROMosome name -2 POS the left-most POSition of the variant -3 ID unique variant IDentifier -4 REF the REFerence allele -5 ALT the ALTernate allele(s) (comma-separated) -6 QUAL variant/reference QUALity -7 FILTER FILTERs applied -8 INFO INFOrmation related to the variant (semicolon-separated) -9 FORMAT FORMAT of the genotype fields (optional; colon-separated) -10+ SAMPLE SAMPLE genotypes and per-sample information (optional) -.TE -.P -The following table gives the \fBINFO\fP tags used by samtools and bcftools. -.TP -.B AF1 -Max-likelihood estimate of the site allele frequency (AF) of the first ALT allele -(double) -.TP -.B DP -Raw read depth (without quality filtering) -(int) -.TP -.B DP4 -# high-quality reference forward bases, ref reverse, alternate for and alt rev bases -(int[4]) -.TP -.B FQ -Consensus quality. Positive: sample genotypes different; negative: otherwise -(int) -.TP -.B MQ -Root-Mean-Square mapping quality of covering reads -(int) -.TP -.B PC2 -Phred probability of AF in group1 samples being larger (,smaller) than in group2 -(int[2]) -.TP -.B PCHI2 -Posterior weighted chi^2 P-value between group1 and group2 samples -(double) -.TP -.B PV4 -P-value for strand bias, baseQ bias, mapQ bias and tail distance bias -(double[4]) -.TP -.B QCHI2 -Phred-scaled PCHI2 -(int) -.TP -.B RP -# permutations yielding a smaller PCHI2 -(int) -.TP -.B CLR -Phred log ratio of genotype likelihoods with and without the trio/pair constraint -(int) -.TP -.B UGT -Most probable genotype configuration without the trio constraint -(string) -.TP -.B CGT -Most probable configuration with the trio constraint -(string) -.TP -.B VDB -Tests variant positions within reads. Intended for filtering RNA-seq artifacts around splice sites -(float) -.TP -.B RPB -Mann-Whitney rank-sum test for tail distance bias -(float) -.TP -.B HWE -Hardy-Weinberg equilibrium test (Wigginton et al) -(float) -.P -.SH SEE ALSO -.TP -https://github.com/samtools/hts-specs -The full VCF/BCF file format specification -.TP -.I A note on exact tests of Hardy-Weinberg equilibrium -Wigginton JE et al -PMID:15789306 -.\" (http://www.ncbi.nlm.nih.gov/pubmed/15789306) diff --git a/htslib/version.sh b/htslib/version.sh deleted file mode 100755 index 3b3a8c5..0000000 --- a/htslib/version.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh - -# Master version, for use in tarballs or non-git source copies -VERSION=1.9 - -# If we have a git clone, then check against the current tag -if [ -e .git ] -then - # If we ever get to 10.x this will need to be more liberal - VERSION=`git describe --match '[0-9].[0-9]*' --dirty` -fi - -# Numeric version is for use in .dylib or .so libraries -# -# Follows the same logic from the Makefile commit c2e93911 -# as non-numeric versions get bumped to patch level 255 to indicate -# an unknown value. -if [ "$1" = "numeric" ] -then - v1=`expr "$VERSION" : '\([0-9]*\)'` - v2=`expr "$VERSION" : '[0-9]*.\([0-9]*\)'` - v3=`expr "$VERSION" : '[0-9]*.[0-9]*.\([0-9]*\)'` - if [ -z "`expr "$VERSION" : '^\([0-9.]*\)$'`" ] - then - VERSION="$v1.$v2.255" - else - VERSION="$v1.$v2${v3:+.}$v3" - fi -fi - -echo $VERSION diff --git a/samtools/misc/ace2sam.c b/samtools/misc/ace2sam.c deleted file mode 100644 index 19727eb..0000000 --- a/samtools/misc/ace2sam.c +++ /dev/null @@ -1,254 +0,0 @@ -/* The MIT License - - Copyright (c) 2011 Heng Li - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -*/ - -#include - -#include -#include -#include -#include -#include -#include "htslib/kstring.h" -#include "htslib/kseq.h" -KSTREAM_INIT(gzFile, gzread, 16384) - -#define N_TMPSTR 5 -#define LINE_LEN 60 - -// append a CIGAR operation plus length -#define write_cigar(_c, _n, _m, _v) do { \ - if (_n == _m) { \ - _m = _m? _m<<1 : 4; \ - _c = realloc(_c, _m * sizeof(unsigned)); \ - } \ - _c[_n++] = (_v); \ - } while (0) - -// a fatal error -static void fatal(const char *msg) -{ - fprintf(stderr, "E %s\n", msg); - exit(1); -} -// remove pads -static void remove_pads(const kstring_t *src, kstring_t *dst) -{ - int i, j; - dst->l = 0; - kputsn(src->s, src->l, dst); - for (i = j = 0; i < dst->l; ++i) - if (dst->s[i] != '*') dst->s[j++] = dst->s[i]; - dst->s[j] = 0; - dst->l = j; -} - -int main(int argc, char *argv[]) -{ - gzFile fp; - kstream_t *ks; - kstring_t s, t[N_TMPSTR]; - int dret, i, k, af_n, af_max, af_i, c, is_padded = 0, write_cns = 0, *p2u = 0; - long m_cigar = 0, n_cigar = 0; - unsigned *af, *cigar = 0; - - while ((c = getopt(argc, argv, "pc")) >= 0) { - switch (c) { - case 'p': is_padded = 1; break; - case 'c': write_cns = 1; break; - } - } - if (argc == optind) { - fprintf(stderr, "\nUsage: ace2sam [-pc] \n\n"); - fprintf(stderr, "Options: -p output padded SAM\n"); - fprintf(stderr, " -c write the contig sequence in SAM\n\n"); - fprintf(stderr, "Notes: 1. Fields must appear in the following order: (CO->[BQ]->(AF)->(RD->QA))\n"); - fprintf(stderr, " 2. The order of reads in AF and in RD must be identical\n"); - fprintf(stderr, " 3. Except in BQ, words and numbers must be separated by a single SPACE or TAB\n"); - fprintf(stderr, " 4. This program writes the headerless SAM to stdout and header to stderr\n\n"); - return 1; - } - - s.l = s.m = 0; s.s = 0; - af_n = af_max = af_i = 0; af = 0; - for (i = 0; i < N_TMPSTR; ++i) t[i].l = t[i].m = 0, t[i].s = 0; - fp = strcmp(argv[1], "-")? gzopen(argv[optind], "r") : gzdopen(fileno(stdin), "r"); - ks = ks_init(fp); - while (ks_getuntil(ks, 0, &s, &dret) >= 0) { - if (strcmp(s.s, "CO") == 0) { // contig sequence - kstring_t *cns; - t[0].l = t[1].l = t[2].l = t[3].l = t[4].l = 0; // 0: name; 1: padded ctg; 2: unpadded ctg/padded read; 3: unpadded read; 4: SAM line - af_n = af_i = 0; // reset the af array - ks_getuntil(ks, 0, &s, &dret); kputs(s.s, &t[0]); // contig name - ks_getuntil(ks, '\n', &s, &dret); // read the whole line - while (ks_getuntil(ks, '\n', &s, &dret) >= 0 && s.l > 0) kputsn(s.s, s.l, &t[1]); // read the padded consensus sequence - remove_pads(&t[1], &t[2]); // construct the unpadded sequence - // compute the array for mapping padded positions to unpadded positions - p2u = realloc(p2u, t[1].m * sizeof(int)); - for (i = k = 0; i < t[1].l; ++i) { - p2u[i] = k; - if (t[1].s[i] != '*') ++k; - } - // write out the SAM header and contig sequences - fprintf(stderr, "H @SQ\tSN:%s\tLN:%llu\n", t[0].s, (unsigned long long)(t[is_padded?1:2].l)); // The SAM header line - cns = &t[is_padded?1:2]; - fprintf(stderr, "S >%s\n", t[0].s); - for (i = 0; i < cns->l; i += LINE_LEN) { - fputs("S ", stderr); - for (k = 0; k < LINE_LEN && i + k < cns->l; ++k) - fputc(cns->s[i + k], stderr); - fputc('\n', stderr); - } - -#define __padded2cigar(sp) do { \ - int i, l_M = 0, l_D = 0; \ - for (i = 0; i < sp.l; ++i) { \ - if (sp.s[i] == '*') { \ - if (l_M) write_cigar(cigar, n_cigar, m_cigar, l_M<<4); \ - ++l_D; l_M = 0; \ - } else { \ - if (l_D) write_cigar(cigar, n_cigar, m_cigar, l_D<<4 | 2); \ - ++l_M; l_D = 0; \ - } \ - } \ - if (l_M) write_cigar(cigar, n_cigar, m_cigar, l_M<<4); \ - else write_cigar(cigar, n_cigar, m_cigar, l_D<<4 | 2); \ - } while (0) - - if (write_cns) { // write the consensus SAM line (dummy read) - n_cigar = 0; - if (is_padded) __padded2cigar(t[1]); - else write_cigar(cigar, n_cigar, m_cigar, t[2].l<<4); - kputsn(t[0].s, t[0].l, &t[4]); kputs("\t516\t", &t[4]); kputsn(t[0].s, t[0].l, &t[4]); kputs("\t1\t60\t", &t[4]); - for (i = 0; i < n_cigar; ++i) { - kputw(cigar[i]>>4, &t[4]); kputc("MIDNSHP=X"[cigar[i]&0xf], &t[4]); - } - kputs("\t*\t0\t0\t", &t[4]); kputsn(t[2].s, t[2].l, &t[4]); kputs("\t*", &t[4]); - } - } else if (strcmp(s.s, "BQ") == 0) { // contig quality - if (t[0].l == 0) fatal("come to 'BQ' before reading 'CO'"); - if (dret != '\n') ks_getuntil(ks, '\n', &s, &dret); // read the entire "BQ" line - if (write_cns) t[4].s[--t[4].l] = 0; // remove the trailing "*" - for (i = 0; i < t[2].l; ++i) { // read the consensus quality - int q; - if (ks_getuntil(ks, 0, &s, &dret) < 0) fprintf(stderr, "E truncated contig quality\n"); - if (s.l) { - q = atoi(s.s) + 33; - if (q > 126) q = 126; - if (write_cns) kputc(q, &t[4]); - } else --i; - } - if (dret != '\n') ks_getuntil(ks, '\n', &s, &dret); - ks_getuntil(ks, '\n', &s, &dret); // skip the empty line - if (write_cns) { - if (t[4].l) puts(t[4].s); - t[4].l = 0; - } - } else if (strcmp(s.s, "AF") == 0) { // padded read position - int reversed, neg, pos; - if (t[0].l == 0) fatal("come to 'AF' before reading 'CO'"); - if (write_cns) { - if (t[4].l) puts(t[4].s); - t[4].l = 0; - } - ks_getuntil(ks, 0, &s, &dret); // read name - ks_getuntil(ks, 0, &s, &dret); reversed = s.s[0] == 'C'? 1 : 0; // strand - ks_getuntil(ks, 0, &s, &dret); pos = atoi(s.s); neg = pos < 0? 1 : 0; pos = pos < 0? -pos : pos; // position - if (af_n == af_max) { // double the af array - af_max = af_max? af_max<<1 : 4; - af = realloc(af, af_max * sizeof(unsigned)); - } - af[af_n++] = pos << 2 | neg << 1 | reversed; // keep the placement information - } else if (strcmp(s.s, "RD") == 0) { // read sequence - if (af_i >= af_n) fatal("more 'RD' records than 'AF'"); - t[2].l = t[3].l = t[4].l = 0; - ks_getuntil(ks, 0, &t[4], &dret); // QNAME - if (dret != '\n') ks_getuntil(ks, '\n', &s, &dret); // read the entire RD line - while (ks_getuntil(ks, '\n', &s, &dret) >= 0 && s.l > 0) kputs(s.s, &t[2]); // read the read sequence - } else if (strcmp(s.s, "QA") == 0) { // clipping - if (af_i >= af_n) fatal("more 'QA' records than 'AF'"); - int beg, end, pos, op; - ks_getuntil(ks, 0, &s, &dret); ks_getuntil(ks, 0, &s, &dret); // skip quality clipping - ks_getuntil(ks, 0, &s, &dret); beg = atoi(s.s) - 1; // align clipping start - ks_getuntil(ks, 0, &s, &dret); end = atoi(s.s); // clipping end - if (dret != '\n') ks_getuntil(ks, '\n', &s, &dret); - // compute 1-based POS - pos = af[af_i]>>2; // retrieve the position information - if (af[af_i]>>1&1) pos = -pos; - pos += beg; // now pos is the true padded position - // generate CIGAR - remove_pads(&t[2], &t[3]); // backup the unpadded read sequence - n_cigar = 0; - if (beg) write_cigar(cigar, n_cigar, m_cigar, beg<<4|4); - if (is_padded) { - __padded2cigar(t[2]); - if (beg && n_cigar > 1) cigar[1] -= beg<<4; // fix the left-hand CIGAR - if (end < t[2].l && n_cigar) cigar[n_cigar-1] -= (t[2].l - end)<<4; // fix the right-hand CIGAR - } else { - // generate flattened CIGAR string - for (i = beg, k = pos - 1; i < end; ++i, ++k) - t[2].s[i] = t[2].s[i] != '*'? (t[1].s[k] != '*'? 0 : 1) : (t[1].s[k] != '*'? 2 : 6); - // generate the proper CIGAR - for (i = beg + 1, k = 1, op = t[2].s[beg]; i < end; ++i) { - if (op != t[2].s[i]) { - write_cigar(cigar, n_cigar, m_cigar, k<<4|op); - op = t[2].s[i]; k = 1; - } else ++k; - } - write_cigar(cigar, n_cigar, m_cigar, k<<4|op); - // remove unnecessary "P" and possibly merge adjacent operations - for (i = 2; i < n_cigar; ++i) { - if ((cigar[i]&0xf) != 1 && (cigar[i-1]&0xf) == 6 && (cigar[i-2]&0xf) != 1) { - cigar[i-1] = 0; - if ((cigar[i]&0xf) == (cigar[i-2]&0xf)) // merge operations - cigar[i] += cigar[i-2], cigar[i-2] = 0; - } - } - for (i = k = 0; i < n_cigar; ++i) // squeeze out dumb operations - if (cigar[i]) cigar[k++] = cigar[i]; - n_cigar = k; - } - if (end < t[2].l) write_cigar(cigar, n_cigar, m_cigar, (t[2].l - end)<<4|4); - // write the SAM line for the read - kputc('\t', &t[4]); // QNAME has already been written - kputw((af[af_i]&1)? 16 : 0, &t[4]); kputc('\t', &t[4]); // FLAG - kputsn(t[0].s, t[0].l, &t[4]); kputc('\t', &t[4]); // RNAME - kputw(is_padded? pos : p2u[pos-1]+1, &t[4]); // POS - kputs("\t60\t", &t[4]); // MAPQ - for (i = 0; i < n_cigar; ++i) { // CIGAR - kputw(cigar[i]>>4, &t[4]); kputc("MIDNSHP=X"[cigar[i]&0xf], &t[4]); - } - kputs("\t*\t0\t0\t", &t[4]); // empty MRNM, MPOS and TLEN - kputsn(t[3].s, t[3].l, &t[4]); // unpadded SEQ - kputs("\t*", &t[4]); // QUAL - puts(t[4].s); // print to stdout - ++af_i; - } else if (dret != '\n') ks_getuntil(ks, '\n', &s, &dret); - } - ks_destroy(ks); - gzclose(fp); - free(af); free(s.s); free(cigar); free(p2u); - for (i = 0; i < N_TMPSTR; ++i) free(t[i].s); - return 0; -} diff --git a/samtools/misc/ace2sam.c.pysam.c b/samtools/misc/ace2sam.c.pysam.c deleted file mode 100644 index ee8ef5e..0000000 --- a/samtools/misc/ace2sam.c.pysam.c +++ /dev/null @@ -1,256 +0,0 @@ -#include "samtools.pysam.h" - -/* The MIT License - - Copyright (c) 2011 Heng Li - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -*/ - -#include - -#include -#include -#include -#include -#include -#include "htslib/kstring.h" -#include "htslib/kseq.h" -KSTREAM_INIT(gzFile, gzread, 16384) - -#define N_TMPSTR 5 -#define LINE_LEN 60 - -// append a CIGAR operation plus length -#define write_cigar(_c, _n, _m, _v) do { \ - if (_n == _m) { \ - _m = _m? _m<<1 : 4; \ - _c = realloc(_c, _m * sizeof(unsigned)); \ - } \ - _c[_n++] = (_v); \ - } while (0) - -// a fatal error -static void fatal(const char *msg) -{ - fprintf(samtools_stderr, "E %s\n", msg); - exit(1); -} -// remove pads -static void remove_pads(const kstring_t *src, kstring_t *dst) -{ - int i, j; - dst->l = 0; - kputsn(src->s, src->l, dst); - for (i = j = 0; i < dst->l; ++i) - if (dst->s[i] != '*') dst->s[j++] = dst->s[i]; - dst->s[j] = 0; - dst->l = j; -} - -int samtools_ace2sam_main(int argc, char *argv[]) -{ - gzFile fp; - kstream_t *ks; - kstring_t s, t[N_TMPSTR]; - int dret, i, k, af_n, af_max, af_i, c, is_padded = 0, write_cns = 0, *p2u = 0; - long m_cigar = 0, n_cigar = 0; - unsigned *af, *cigar = 0; - - while ((c = getopt(argc, argv, "pc")) >= 0) { - switch (c) { - case 'p': is_padded = 1; break; - case 'c': write_cns = 1; break; - } - } - if (argc == optind) { - fprintf(samtools_stderr, "\nUsage: ace2sam [-pc] \n\n"); - fprintf(samtools_stderr, "Options: -p output padded SAM\n"); - fprintf(samtools_stderr, " -c write the contig sequence in SAM\n\n"); - fprintf(samtools_stderr, "Notes: 1. Fields must appear in the following order: (CO->[BQ]->(AF)->(RD->QA))\n"); - fprintf(samtools_stderr, " 2. The order of reads in AF and in RD must be identical\n"); - fprintf(samtools_stderr, " 3. Except in BQ, words and numbers must be separated by a single SPACE or TAB\n"); - fprintf(samtools_stderr, " 4. This program writes the headerless SAM to samtools_stdout and header to samtools_stderr\n\n"); - return 1; - } - - s.l = s.m = 0; s.s = 0; - af_n = af_max = af_i = 0; af = 0; - for (i = 0; i < N_TMPSTR; ++i) t[i].l = t[i].m = 0, t[i].s = 0; - fp = strcmp(argv[1], "-")? gzopen(argv[optind], "r") : gzdopen(fileno(stdin), "r"); - ks = ks_init(fp); - while (ks_getuntil(ks, 0, &s, &dret) >= 0) { - if (strcmp(s.s, "CO") == 0) { // contig sequence - kstring_t *cns; - t[0].l = t[1].l = t[2].l = t[3].l = t[4].l = 0; // 0: name; 1: padded ctg; 2: unpadded ctg/padded read; 3: unpadded read; 4: SAM line - af_n = af_i = 0; // reset the af array - ks_getuntil(ks, 0, &s, &dret); kputs(s.s, &t[0]); // contig name - ks_getuntil(ks, '\n', &s, &dret); // read the whole line - while (ks_getuntil(ks, '\n', &s, &dret) >= 0 && s.l > 0) kputsn(s.s, s.l, &t[1]); // read the padded consensus sequence - remove_pads(&t[1], &t[2]); // construct the unpadded sequence - // compute the array for mapping padded positions to unpadded positions - p2u = realloc(p2u, t[1].m * sizeof(int)); - for (i = k = 0; i < t[1].l; ++i) { - p2u[i] = k; - if (t[1].s[i] != '*') ++k; - } - // write out the SAM header and contig sequences - fprintf(samtools_stderr, "H @SQ\tSN:%s\tLN:%llu\n", t[0].s, (unsigned long long)(t[is_padded?1:2].l)); // The SAM header line - cns = &t[is_padded?1:2]; - fprintf(samtools_stderr, "S >%s\n", t[0].s); - for (i = 0; i < cns->l; i += LINE_LEN) { - fputs("S ", samtools_stderr); - for (k = 0; k < LINE_LEN && i + k < cns->l; ++k) - fputc(cns->s[i + k], samtools_stderr); - fputc('\n', samtools_stderr); - } - -#define __padded2cigar(sp) do { \ - int i, l_M = 0, l_D = 0; \ - for (i = 0; i < sp.l; ++i) { \ - if (sp.s[i] == '*') { \ - if (l_M) write_cigar(cigar, n_cigar, m_cigar, l_M<<4); \ - ++l_D; l_M = 0; \ - } else { \ - if (l_D) write_cigar(cigar, n_cigar, m_cigar, l_D<<4 | 2); \ - ++l_M; l_D = 0; \ - } \ - } \ - if (l_M) write_cigar(cigar, n_cigar, m_cigar, l_M<<4); \ - else write_cigar(cigar, n_cigar, m_cigar, l_D<<4 | 2); \ - } while (0) - - if (write_cns) { // write the consensus SAM line (dummy read) - n_cigar = 0; - if (is_padded) __padded2cigar(t[1]); - else write_cigar(cigar, n_cigar, m_cigar, t[2].l<<4); - kputsn(t[0].s, t[0].l, &t[4]); kputs("\t516\t", &t[4]); kputsn(t[0].s, t[0].l, &t[4]); kputs("\t1\t60\t", &t[4]); - for (i = 0; i < n_cigar; ++i) { - kputw(cigar[i]>>4, &t[4]); kputc("MIDNSHP=X"[cigar[i]&0xf], &t[4]); - } - kputs("\t*\t0\t0\t", &t[4]); kputsn(t[2].s, t[2].l, &t[4]); kputs("\t*", &t[4]); - } - } else if (strcmp(s.s, "BQ") == 0) { // contig quality - if (t[0].l == 0) fatal("come to 'BQ' before reading 'CO'"); - if (dret != '\n') ks_getuntil(ks, '\n', &s, &dret); // read the entire "BQ" line - if (write_cns) t[4].s[--t[4].l] = 0; // remove the trailing "*" - for (i = 0; i < t[2].l; ++i) { // read the consensus quality - int q; - if (ks_getuntil(ks, 0, &s, &dret) < 0) fprintf(samtools_stderr, "E truncated contig quality\n"); - if (s.l) { - q = atoi(s.s) + 33; - if (q > 126) q = 126; - if (write_cns) kputc(q, &t[4]); - } else --i; - } - if (dret != '\n') ks_getuntil(ks, '\n', &s, &dret); - ks_getuntil(ks, '\n', &s, &dret); // skip the empty line - if (write_cns) { - if (t[4].l) samtools_puts(t[4].s); - t[4].l = 0; - } - } else if (strcmp(s.s, "AF") == 0) { // padded read position - int reversed, neg, pos; - if (t[0].l == 0) fatal("come to 'AF' before reading 'CO'"); - if (write_cns) { - if (t[4].l) samtools_puts(t[4].s); - t[4].l = 0; - } - ks_getuntil(ks, 0, &s, &dret); // read name - ks_getuntil(ks, 0, &s, &dret); reversed = s.s[0] == 'C'? 1 : 0; // strand - ks_getuntil(ks, 0, &s, &dret); pos = atoi(s.s); neg = pos < 0? 1 : 0; pos = pos < 0? -pos : pos; // position - if (af_n == af_max) { // double the af array - af_max = af_max? af_max<<1 : 4; - af = realloc(af, af_max * sizeof(unsigned)); - } - af[af_n++] = pos << 2 | neg << 1 | reversed; // keep the placement information - } else if (strcmp(s.s, "RD") == 0) { // read sequence - if (af_i >= af_n) fatal("more 'RD' records than 'AF'"); - t[2].l = t[3].l = t[4].l = 0; - ks_getuntil(ks, 0, &t[4], &dret); // QNAME - if (dret != '\n') ks_getuntil(ks, '\n', &s, &dret); // read the entire RD line - while (ks_getuntil(ks, '\n', &s, &dret) >= 0 && s.l > 0) kputs(s.s, &t[2]); // read the read sequence - } else if (strcmp(s.s, "QA") == 0) { // clipping - if (af_i >= af_n) fatal("more 'QA' records than 'AF'"); - int beg, end, pos, op; - ks_getuntil(ks, 0, &s, &dret); ks_getuntil(ks, 0, &s, &dret); // skip quality clipping - ks_getuntil(ks, 0, &s, &dret); beg = atoi(s.s) - 1; // align clipping start - ks_getuntil(ks, 0, &s, &dret); end = atoi(s.s); // clipping end - if (dret != '\n') ks_getuntil(ks, '\n', &s, &dret); - // compute 1-based POS - pos = af[af_i]>>2; // retrieve the position information - if (af[af_i]>>1&1) pos = -pos; - pos += beg; // now pos is the true padded position - // generate CIGAR - remove_pads(&t[2], &t[3]); // backup the unpadded read sequence - n_cigar = 0; - if (beg) write_cigar(cigar, n_cigar, m_cigar, beg<<4|4); - if (is_padded) { - __padded2cigar(t[2]); - if (beg && n_cigar > 1) cigar[1] -= beg<<4; // fix the left-hand CIGAR - if (end < t[2].l && n_cigar) cigar[n_cigar-1] -= (t[2].l - end)<<4; // fix the right-hand CIGAR - } else { - // generate flattened CIGAR string - for (i = beg, k = pos - 1; i < end; ++i, ++k) - t[2].s[i] = t[2].s[i] != '*'? (t[1].s[k] != '*'? 0 : 1) : (t[1].s[k] != '*'? 2 : 6); - // generate the proper CIGAR - for (i = beg + 1, k = 1, op = t[2].s[beg]; i < end; ++i) { - if (op != t[2].s[i]) { - write_cigar(cigar, n_cigar, m_cigar, k<<4|op); - op = t[2].s[i]; k = 1; - } else ++k; - } - write_cigar(cigar, n_cigar, m_cigar, k<<4|op); - // remove unnecessary "P" and possibly merge adjacent operations - for (i = 2; i < n_cigar; ++i) { - if ((cigar[i]&0xf) != 1 && (cigar[i-1]&0xf) == 6 && (cigar[i-2]&0xf) != 1) { - cigar[i-1] = 0; - if ((cigar[i]&0xf) == (cigar[i-2]&0xf)) // merge operations - cigar[i] += cigar[i-2], cigar[i-2] = 0; - } - } - for (i = k = 0; i < n_cigar; ++i) // squeeze out dumb operations - if (cigar[i]) cigar[k++] = cigar[i]; - n_cigar = k; - } - if (end < t[2].l) write_cigar(cigar, n_cigar, m_cigar, (t[2].l - end)<<4|4); - // write the SAM line for the read - kputc('\t', &t[4]); // QNAME has already been written - kputw((af[af_i]&1)? 16 : 0, &t[4]); kputc('\t', &t[4]); // FLAG - kputsn(t[0].s, t[0].l, &t[4]); kputc('\t', &t[4]); // RNAME - kputw(is_padded? pos : p2u[pos-1]+1, &t[4]); // POS - kputs("\t60\t", &t[4]); // MAPQ - for (i = 0; i < n_cigar; ++i) { // CIGAR - kputw(cigar[i]>>4, &t[4]); kputc("MIDNSHP=X"[cigar[i]&0xf], &t[4]); - } - kputs("\t*\t0\t0\t", &t[4]); // empty MRNM, MPOS and TLEN - kputsn(t[3].s, t[3].l, &t[4]); // unpadded SEQ - kputs("\t*", &t[4]); // QUAL - samtools_puts(t[4].s); // print to samtools_stdout - ++af_i; - } else if (dret != '\n') ks_getuntil(ks, '\n', &s, &dret); - } - ks_destroy(ks); - gzclose(fp); - free(af); free(s.s); free(cigar); free(p2u); - for (i = 0; i < N_TMPSTR; ++i) free(t[i].s); - return 0; -} diff --git a/samtools/test/merge/test_bam_translate.c b/samtools/test/merge/test_bam_translate.c deleted file mode 100644 index 6ed561e..0000000 --- a/samtools/test/merge/test_bam_translate.c +++ /dev/null @@ -1,598 +0,0 @@ -/* test/merge/test_bam_translate.c -- header merging test harness. - - Copyright (C) 2013, 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_sort.c" -#include "../test.h" -#include -#include -#include -#include -#include - -void dump_read(bam1_t* b) { - printf("->core.tid:(%d)\n", b->core.tid); - printf("->core.pos:(%d)\n", b->core.pos); - printf("->core.bin:(%d)\n", b->core.bin); - printf("->core.qual:(%d)\n", b->core.qual); - printf("->core.l_qname:(%d)\n", b->core.l_qname); - printf("->core.flag:(%d)\n", b->core.flag); - printf("->core.n_cigar:(%d)\n", b->core.n_cigar); - printf("->core.l_qseq:(%d)\n", b->core.l_qseq); - printf("->core.mtid:(%d)\n", b->core.mtid); - printf("->core.mpos:(%d)\n", b->core.mpos); - printf("->core.isize:(%d)\n", b->core.isize); - if (b->data) { - printf("->data:"); - int i; - for (i = 0; i < b->l_data; ++i) { - printf("%x ", b->data[i]); - } - printf("\n"); - } - if (b->core.l_qname) { - printf("qname: %s\n",bam_get_qname(b)); - } - if (b->core.l_qseq) { - printf("qseq:"); - int i; - for (i = 0; i < b->core.l_qseq; ++i) { - printf("%c",seq_nt16_str[seq_nt16_table[bam_seqi(bam_get_seq(b),i)]]); - } - printf("\n"); - printf("qual:"); - for (i = 0; i < b->core.l_qseq; ++i) { - printf("%c",bam_get_qual(b)[i]); - } - printf("\n"); - - } - - if (bam_get_l_aux(b)) { - int i = 0; - uint8_t* aux = bam_get_aux(b); - - while (i < bam_get_l_aux(b)) { - printf("%.2s:%c:",aux+i,*(aux+i+2)); - i += 2; - switch (*(aux+i)) { - case 'Z': - while (*(aux+1+i) != '\0') { putc(*(aux+1+i), stdout); ++i; } - break; - } - putc('\n',stdout); - ++i;++i; - } - } - printf("\n"); -} - -void trans_tbl_test_init(trans_tbl_t* tbl, int32_t n_targets) -{ - tbl->tid_trans = (int*)calloc(n_targets, sizeof(int32_t)); - tbl->rg_trans = kh_init(c2c); - tbl->pg_trans = kh_init(c2c); -} - -void setup_test_1(bam1_t** b_in, trans_tbl_t* tbl) { - bam1_t* b; - - b = bam_init1(); - trans_tbl_test_init(tbl, 4); - - tbl->tid_trans[0] = 5; - tbl->tid_trans[1] = 6; - tbl->tid_trans[2] = 7; - tbl->tid_trans[3] = 8; - - - b->core.tid = 0; - b->core.pos = 1334; - b->core.bin = 0; - b->core.qual = 10; - b->core.l_qname = 10; - b->core.flag = 0; - b->core.n_cigar = 1; - b->core.l_qseq = 10; - b->core.mtid = -1; - b->core.mpos = 0; - b->core.isize = -1; - size_t data_len = 10 + 4 + 5 + 10 + 0; - b->data = (uint8_t*)malloc(data_len); - memcpy(b->data, - "123456789\0" // q_name - "\x00\x00\x00\xA0" // cigar - "\x00\x00\x00\x00\x00" // qseq - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" // qual - "" // aux - , data_len - ); - b->m_data = b->l_data = data_len; - - *b_in = b; -} - -void setup_test_2(bam1_t** b_in, trans_tbl_t* tbl) { - bam1_t* b; - - b = bam_init1(); - trans_tbl_test_init(tbl, 4); - - tbl->tid_trans[0] = 5; - tbl->tid_trans[1] = 6; - tbl->tid_trans[2] = 7; - tbl->tid_trans[3] = 8; - int in_there = 0; - khiter_t iter = kh_put(c2c, tbl->rg_trans, strdup("hello"), &in_there); - kh_value(tbl->rg_trans, iter) = strdup("goodbye"); - - b->core.tid = 0; - b->core.pos = 1334; - b->core.bin = 0; - b->core.qual = 10; - b->core.l_qname = 10; - b->core.flag = 0; - b->core.n_cigar = 1; - b->core.l_qseq = 10; - b->core.mtid = -1; - b->core.mpos = 0; - b->core.isize = -1; - size_t data_len = 10 + 4 + 5 + 10 + 9; - b->data = (uint8_t*)malloc(data_len); - memcpy(b->data, - "123456789\0" // q_name - "\x00\x00\x00\xA0" // cigar - "\x00\x00\x00\x00\x00" // qseq - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" // qual - "RGZhello\0" // aux - , data_len - ); - b->m_data = b->l_data = data_len; - - *b_in = b; -} - -void setup_test_3(bam1_t** b_in, trans_tbl_t* tbl) { - bam1_t* b; - - b = bam_init1(); - trans_tbl_test_init(tbl, 4); - - tbl->tid_trans[0] = 5; - tbl->tid_trans[1] = 6; - tbl->tid_trans[2] = 7; - tbl->tid_trans[3] = 8; - int in_there = 0; - khiter_t iter = kh_put(c2c, tbl->pg_trans, strdup("hello"), &in_there); - kh_value(tbl->pg_trans,iter) = strdup("goodbye"); - - - b->core.tid = 0; - b->core.pos = 1334; - b->core.bin = 0; - b->core.qual = 10; - b->core.l_qname = 10; - b->core.flag = 0; - b->core.n_cigar = 1; - b->core.l_qseq = 10; - b->core.mtid = -1; - b->core.mpos = 0; - b->core.isize = -1; - size_t data_len = 10 + 4 + 5 + 10 + 9; - b->data = (uint8_t*)malloc(data_len); - memcpy(b->data, - "123456789\0" // q_name - "\x00\x00\x00\xA0" // cigar - "\x00\x00\x00\x00\x00" // qseq - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" // qual - "PGZhello\0" // aux - , data_len - ); - b->m_data = b->l_data = data_len; - - *b_in = b; -} - -void setup_test_4(bam1_t** b_in, trans_tbl_t* tbl) { - bam1_t* b; - - b = bam_init1(); - trans_tbl_test_init(tbl, 4); - - tbl->tid_trans[0] = 5; - tbl->tid_trans[1] = 6; - tbl->tid_trans[2] = 7; - tbl->tid_trans[3] = 8; - - b->core.tid = 0; - b->core.pos = 1334; - b->core.bin = 0; - b->core.qual = 10; - b->core.l_qname = 10; - b->core.flag = 0; - b->core.n_cigar = 1; - b->core.l_qseq = 10; - b->core.mtid = -1; - b->core.mpos = 0; - b->core.isize = -1; - size_t data_len = 10 + 4 + 5 + 10 + 12; - b->data = (uint8_t*)malloc(data_len); - memcpy(b->data, - "123456789\0" // q_name - "\x00\x00\x00\xA0" // cigar - "\x00\x00\x00\x00\x00" // qseq - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" // qual - "RGZrg4hello\0" // aux - , data_len - ); - b->m_data = b->l_data = data_len; - - *b_in = b; -} - -void setup_test_5(bam1_t** b_in, trans_tbl_t* tbl) { - bam1_t* b; - - b = bam_init1(); - trans_tbl_test_init(tbl, 4); - - tbl->tid_trans[0] = 5; - tbl->tid_trans[1] = 6; - tbl->tid_trans[2] = 7; - tbl->tid_trans[3] = 8; - - - b->core.tid = 0; - b->core.pos = 1334; - b->core.bin = 0; - b->core.qual = 10; - b->core.l_qname = 10; - b->core.flag = 0; - b->core.n_cigar = 1; - b->core.l_qseq = 10; - b->core.mtid = -1; - b->core.mpos = 0; - b->core.isize = -1; - size_t data_len = 10 + 4 + 5 + 10 + 12; - b->data = (uint8_t*)malloc(data_len); - memcpy(b->data, - "123456789\0" // q_name - "\x00\x00\x00\xA0" // cigar - "\x00\x00\x00\x00\x00" // qseq - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" // qual - "PGZpg5hello\0" // aux - , data_len - ); - b->m_data = b->l_data = data_len; - - *b_in = b; -} - -void setup_test_6(bam1_t** b_in, trans_tbl_t* tbl) { - bam1_t* b; - - b = bam_init1(); - trans_tbl_test_init(tbl, 4); - - tbl->tid_trans[0] = 5; - tbl->tid_trans[1] = 6; - tbl->tid_trans[2] = 7; - tbl->tid_trans[3] = 8; - int in_there = 0; - khiter_t iter_rg = kh_put(c2c, tbl->rg_trans, strdup("hello"), &in_there); - kh_value(tbl->rg_trans, iter_rg) = strdup("goodbye"); - khiter_t iter_pg = kh_put(c2c, tbl->pg_trans, strdup("quail"), &in_there); - kh_value(tbl->pg_trans, iter_pg) = strdup("bird"); - - - b->core.tid = 0; - b->core.pos = 1334; - b->core.bin = 0; - b->core.qual = 10; - b->core.l_qname = 10; - b->core.flag = 0; - b->core.n_cigar = 1; - b->core.l_qseq = 10; - b->core.mtid = -1; - b->core.mpos = 0; - b->core.isize = -1; - size_t data_len = 10 + 4 + 5 + 10 + 18; - b->data = (uint8_t*)malloc(data_len); - memcpy(b->data, - "123456789\0" // q_name - "\x00\x00\x00\xA0" // cigar - "\x00\x00\x00\x00\x00" // qseq - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" // qual - "RGZhello\0PGZquail\0" // aux - , data_len - ); - b->m_data = b->l_data = data_len; - - *b_in = b; -} - - -int main(int argc, char**argv) -{ - // test state - const int NUM_TESTS = 6; - int verbose = 0; - int success = 0; - int failure = 0; - - int getopt_char; - while ((getopt_char = getopt(argc, argv, "v")) != -1) { - switch (getopt_char) { - case 'v': - ++verbose; - break; - default: - break; - } - } - - bam1_t* b; - - // Setup stderr redirect - kstring_t res = { 0, 0, NULL }; - FILE* orig_stderr = fdopen(dup(STDERR_FILENO), "a"); // Save stderr - char* tempfname = (optind < argc)? argv[optind] : "test_bam_translate.tmp"; - FILE* check = NULL; - - // setup - if (verbose) printf("BEGIN test 1\n"); // TID test - trans_tbl_t tbl1; - setup_test_1(&b,&tbl1); - if (verbose > 1) { - printf("b\n"); - dump_read(b); - } - if (verbose) printf("RUN test 1\n"); - - // test - xfreopen(tempfname, "w", stderr); // Redirect stderr to pipe - bam_translate(b, &tbl1); - fclose(stderr); - - if (verbose) printf("END RUN test 1\n"); - if (verbose > 1) { - printf("b\n"); - dump_read(b); - } - - // check result - check = fopen(tempfname, "r"); - res.l = 0; - if (kgetline(&res, (kgets_func *)fgets, check) < 0 && - (feof(check) || res.l == 0) ) { - ++success; - } else { - ++failure; - if (verbose) printf("FAIL test 1\n"); - } - fclose(check); - - // teardown - bam_destroy1(b); - trans_tbl_destroy(&tbl1); - if (verbose) printf("END test 1\n"); - - // setup - if (verbose) printf("BEGIN test 2\n"); // RG exists and translate test - trans_tbl_t tbl2; - setup_test_2(&b,&tbl2); - if (verbose > 1) { - printf("b\n"); - dump_read(b); - } - if (verbose) printf("RUN test 2\n"); - - // test - xfreopen(tempfname, "w", stderr); // Redirect stderr to pipe - bam_translate(b, &tbl2); - fclose(stderr); - - if (verbose) printf("END RUN test 2\n"); - if (verbose > 1) { - printf("b\n"); - dump_read(b); - } - - // check result - check = fopen(tempfname, "r"); - res.l = 0; - if (kgetline(&res, (kgets_func *)fgets, check) < 0 && - (feof(check) || res.l == 0) ) { - ++success; - } else { - ++failure; - if (verbose) printf("FAIL test 2\n"); - } - fclose(check); - - // teardown - bam_destroy1(b); - trans_tbl_destroy(&tbl2); - if (verbose) printf("END test 2\n"); - - if (verbose) printf("BEGIN test 3\n"); // PG exists and translate test - // setup - trans_tbl_t tbl3; - setup_test_3(&b,&tbl3); - if (verbose > 1) { - printf("b\n"); - dump_read(b); - } - if (verbose) printf("RUN test 3\n"); - - // test - xfreopen(tempfname, "w", stderr); // Redirect stderr to pipe - bam_translate(b, &tbl3); - fclose(stderr); - - if (verbose) printf("END RUN test 3\n"); - if (verbose > 1) { - printf("b\n"); - dump_read(b); - } - - // check result - check = fopen(tempfname, "r"); - res.l = 0; - if (kgetline(&res, (kgets_func *)fgets, check) < 0 && - (feof(check) || res.l == 0)) { - ++success; - } else { - ++failure; - if (verbose) printf("FAIL test 3\n"); - } - fclose(check); - - // teardown - bam_destroy1(b); - trans_tbl_destroy(&tbl3); - if (verbose) printf("END test 3\n"); - - if (verbose) printf("BEGIN test 4\n"); // RG test non-existent - // setup - trans_tbl_t tbl4; - setup_test_4(&b,&tbl4); - if (verbose > 1) { - printf("b\n"); - dump_read(b); - } - if (verbose) printf("RUN test 4\n"); - - // test - xfreopen(tempfname, "w", stderr); // Redirect stderr to pipe - bam_translate(b, &tbl4); - fclose(stderr); - - if (verbose) printf("END RUN test 4\n"); - if (verbose > 1) { - printf("b\n"); - dump_read(b); - } - // check result - check = fopen(tempfname, "r"); - res.l = 0; - if (kgetline(&res, (kgets_func *)fgets, check) >= 0 && - strcmp("[bam_translate] RG tag \"rg4hello\" on read \"123456789\" encountered with no corresponding entry in header, tag lost. Unknown tags are only reported once per input file for each tag ID.",res.s) == 0) { - ++success; - } else { - ++failure; - if (verbose) printf("FAIL test 4\n"); - } - fclose(check); - - // teardown - bam_destroy1(b); - trans_tbl_destroy(&tbl4); - if (verbose) printf("END test 4\n"); - - if (verbose) printf("BEGIN test 5\n"); // PG test non-existent - // setup - trans_tbl_t tbl5; - setup_test_5(&b,&tbl5); - if (verbose > 1) { - printf("b\n"); - dump_read(b); - printf("RUN test 5\n"); - } - // test - xfreopen(tempfname, "w", stderr); // Redirect stderr to pipe - bam_translate(b, &tbl5); - fclose(stderr); - - if (verbose) printf("END RUN test 5\n"); - if (verbose > 1) { - printf("b\n"); - dump_read(b); - } - - // check result - check = fopen(tempfname, "r"); - res.l = 0; - if (kgetline(&res, (kgets_func *)fgets, check) >= 0 && - strcmp("[bam_translate] PG tag \"pg5hello\" on read \"123456789\" encountered with no corresponding entry in header, tag lost. Unknown tags are only reported once per input file for each tag ID.",res.s) == 0) { - ++success; - } else { - ++failure; - if (verbose) printf("FAIL test 5\n"); - } - fclose(check); - - // teardown - bam_destroy1(b); - trans_tbl_destroy(&tbl5); - if (verbose) printf("END test 5\n"); - - if (verbose) printf("BEGIN test 6\n"); // RG and PG exists and translate test - // setup - trans_tbl_t tbl6; - setup_test_6(&b,&tbl6); - if (verbose > 1) { - printf("b\n"); - dump_read(b); - } - if (verbose) printf("RUN test 6\n"); - - // test - xfreopen(tempfname, "w", stderr); // Redirect stderr to pipe - bam_translate(b, &tbl6); - fclose(stderr); - - if (verbose) printf("END RUN test 6\n"); - if (verbose > 1) { - printf("b\n"); - dump_read(b); - } - - // check result - check = fopen(tempfname, "r"); - res.l = 0; - if (kgetline(&res, (kgets_func *)fgets, check) < 0 && - (feof(check) || res.l == 0) ) { - ++success; - } else { - ++failure; - if (verbose) printf("FAIL test 6\n"); - } - fclose(check); - - // teardown - bam_destroy1(b); - trans_tbl_destroy(&tbl6); - if (verbose) printf("END test 6\n"); - - // Cleanup - free(res.s); - remove(tempfname); - if (failure > 0) - fprintf(orig_stderr, "%d failures %d successes\n", failure, success); - fclose(orig_stderr); - - return (success == NUM_TESTS)? EXIT_SUCCESS : EXIT_FAILURE; -} diff --git a/samtools/test/merge/test_bam_translate.c.pysam.c b/samtools/test/merge/test_bam_translate.c.pysam.c deleted file mode 100644 index 21db13c..0000000 --- a/samtools/test/merge/test_bam_translate.c.pysam.c +++ /dev/null @@ -1,600 +0,0 @@ -#include "samtools.pysam.h" - -/* test/merge/test_bam_translate.c -- header merging test harness. - - Copyright (C) 2013, 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_sort.c" -#include "../test.h" -#include -#include -#include -#include -#include - -void dump_read(bam1_t* b) { - fprintf(samtools_stdout, "->core.tid:(%d)\n", b->core.tid); - fprintf(samtools_stdout, "->core.pos:(%d)\n", b->core.pos); - fprintf(samtools_stdout, "->core.bin:(%d)\n", b->core.bin); - fprintf(samtools_stdout, "->core.qual:(%d)\n", b->core.qual); - fprintf(samtools_stdout, "->core.l_qname:(%d)\n", b->core.l_qname); - fprintf(samtools_stdout, "->core.flag:(%d)\n", b->core.flag); - fprintf(samtools_stdout, "->core.n_cigar:(%d)\n", b->core.n_cigar); - fprintf(samtools_stdout, "->core.l_qseq:(%d)\n", b->core.l_qseq); - fprintf(samtools_stdout, "->core.mtid:(%d)\n", b->core.mtid); - fprintf(samtools_stdout, "->core.mpos:(%d)\n", b->core.mpos); - fprintf(samtools_stdout, "->core.isize:(%d)\n", b->core.isize); - if (b->data) { - fprintf(samtools_stdout, "->data:"); - int i; - for (i = 0; i < b->l_data; ++i) { - fprintf(samtools_stdout, "%x ", b->data[i]); - } - fprintf(samtools_stdout, "\n"); - } - if (b->core.l_qname) { - fprintf(samtools_stdout, "qname: %s\n",bam_get_qname(b)); - } - if (b->core.l_qseq) { - fprintf(samtools_stdout, "qseq:"); - int i; - for (i = 0; i < b->core.l_qseq; ++i) { - fprintf(samtools_stdout, "%c",seq_nt16_str[seq_nt16_table[bam_seqi(bam_get_seq(b),i)]]); - } - fprintf(samtools_stdout, "\n"); - fprintf(samtools_stdout, "qual:"); - for (i = 0; i < b->core.l_qseq; ++i) { - fprintf(samtools_stdout, "%c",bam_get_qual(b)[i]); - } - fprintf(samtools_stdout, "\n"); - - } - - if (bam_get_l_aux(b)) { - int i = 0; - uint8_t* aux = bam_get_aux(b); - - while (i < bam_get_l_aux(b)) { - fprintf(samtools_stdout, "%.2s:%c:",aux+i,*(aux+i+2)); - i += 2; - switch (*(aux+i)) { - case 'Z': - while (*(aux+1+i) != '\0') { putc(*(aux+1+i), samtools_stdout); ++i; } - break; - } - putc('\n',samtools_stdout); - ++i;++i; - } - } - fprintf(samtools_stdout, "\n"); -} - -void trans_tbl_test_init(trans_tbl_t* tbl, int32_t n_targets) -{ - tbl->tid_trans = (int*)calloc(n_targets, sizeof(int32_t)); - tbl->rg_trans = kh_init(c2c); - tbl->pg_trans = kh_init(c2c); -} - -void setup_test_1(bam1_t** b_in, trans_tbl_t* tbl) { - bam1_t* b; - - b = bam_init1(); - trans_tbl_test_init(tbl, 4); - - tbl->tid_trans[0] = 5; - tbl->tid_trans[1] = 6; - tbl->tid_trans[2] = 7; - tbl->tid_trans[3] = 8; - - - b->core.tid = 0; - b->core.pos = 1334; - b->core.bin = 0; - b->core.qual = 10; - b->core.l_qname = 10; - b->core.flag = 0; - b->core.n_cigar = 1; - b->core.l_qseq = 10; - b->core.mtid = -1; - b->core.mpos = 0; - b->core.isize = -1; - size_t data_len = 10 + 4 + 5 + 10 + 0; - b->data = (uint8_t*)malloc(data_len); - memcpy(b->data, - "123456789\0" // q_name - "\x00\x00\x00\xA0" // cigar - "\x00\x00\x00\x00\x00" // qseq - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" // qual - "" // aux - , data_len - ); - b->m_data = b->l_data = data_len; - - *b_in = b; -} - -void setup_test_2(bam1_t** b_in, trans_tbl_t* tbl) { - bam1_t* b; - - b = bam_init1(); - trans_tbl_test_init(tbl, 4); - - tbl->tid_trans[0] = 5; - tbl->tid_trans[1] = 6; - tbl->tid_trans[2] = 7; - tbl->tid_trans[3] = 8; - int in_there = 0; - khiter_t iter = kh_put(c2c, tbl->rg_trans, strdup("hello"), &in_there); - kh_value(tbl->rg_trans, iter) = strdup("goodbye"); - - b->core.tid = 0; - b->core.pos = 1334; - b->core.bin = 0; - b->core.qual = 10; - b->core.l_qname = 10; - b->core.flag = 0; - b->core.n_cigar = 1; - b->core.l_qseq = 10; - b->core.mtid = -1; - b->core.mpos = 0; - b->core.isize = -1; - size_t data_len = 10 + 4 + 5 + 10 + 9; - b->data = (uint8_t*)malloc(data_len); - memcpy(b->data, - "123456789\0" // q_name - "\x00\x00\x00\xA0" // cigar - "\x00\x00\x00\x00\x00" // qseq - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" // qual - "RGZhello\0" // aux - , data_len - ); - b->m_data = b->l_data = data_len; - - *b_in = b; -} - -void setup_test_3(bam1_t** b_in, trans_tbl_t* tbl) { - bam1_t* b; - - b = bam_init1(); - trans_tbl_test_init(tbl, 4); - - tbl->tid_trans[0] = 5; - tbl->tid_trans[1] = 6; - tbl->tid_trans[2] = 7; - tbl->tid_trans[3] = 8; - int in_there = 0; - khiter_t iter = kh_put(c2c, tbl->pg_trans, strdup("hello"), &in_there); - kh_value(tbl->pg_trans,iter) = strdup("goodbye"); - - - b->core.tid = 0; - b->core.pos = 1334; - b->core.bin = 0; - b->core.qual = 10; - b->core.l_qname = 10; - b->core.flag = 0; - b->core.n_cigar = 1; - b->core.l_qseq = 10; - b->core.mtid = -1; - b->core.mpos = 0; - b->core.isize = -1; - size_t data_len = 10 + 4 + 5 + 10 + 9; - b->data = (uint8_t*)malloc(data_len); - memcpy(b->data, - "123456789\0" // q_name - "\x00\x00\x00\xA0" // cigar - "\x00\x00\x00\x00\x00" // qseq - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" // qual - "PGZhello\0" // aux - , data_len - ); - b->m_data = b->l_data = data_len; - - *b_in = b; -} - -void setup_test_4(bam1_t** b_in, trans_tbl_t* tbl) { - bam1_t* b; - - b = bam_init1(); - trans_tbl_test_init(tbl, 4); - - tbl->tid_trans[0] = 5; - tbl->tid_trans[1] = 6; - tbl->tid_trans[2] = 7; - tbl->tid_trans[3] = 8; - - b->core.tid = 0; - b->core.pos = 1334; - b->core.bin = 0; - b->core.qual = 10; - b->core.l_qname = 10; - b->core.flag = 0; - b->core.n_cigar = 1; - b->core.l_qseq = 10; - b->core.mtid = -1; - b->core.mpos = 0; - b->core.isize = -1; - size_t data_len = 10 + 4 + 5 + 10 + 12; - b->data = (uint8_t*)malloc(data_len); - memcpy(b->data, - "123456789\0" // q_name - "\x00\x00\x00\xA0" // cigar - "\x00\x00\x00\x00\x00" // qseq - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" // qual - "RGZrg4hello\0" // aux - , data_len - ); - b->m_data = b->l_data = data_len; - - *b_in = b; -} - -void setup_test_5(bam1_t** b_in, trans_tbl_t* tbl) { - bam1_t* b; - - b = bam_init1(); - trans_tbl_test_init(tbl, 4); - - tbl->tid_trans[0] = 5; - tbl->tid_trans[1] = 6; - tbl->tid_trans[2] = 7; - tbl->tid_trans[3] = 8; - - - b->core.tid = 0; - b->core.pos = 1334; - b->core.bin = 0; - b->core.qual = 10; - b->core.l_qname = 10; - b->core.flag = 0; - b->core.n_cigar = 1; - b->core.l_qseq = 10; - b->core.mtid = -1; - b->core.mpos = 0; - b->core.isize = -1; - size_t data_len = 10 + 4 + 5 + 10 + 12; - b->data = (uint8_t*)malloc(data_len); - memcpy(b->data, - "123456789\0" // q_name - "\x00\x00\x00\xA0" // cigar - "\x00\x00\x00\x00\x00" // qseq - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" // qual - "PGZpg5hello\0" // aux - , data_len - ); - b->m_data = b->l_data = data_len; - - *b_in = b; -} - -void setup_test_6(bam1_t** b_in, trans_tbl_t* tbl) { - bam1_t* b; - - b = bam_init1(); - trans_tbl_test_init(tbl, 4); - - tbl->tid_trans[0] = 5; - tbl->tid_trans[1] = 6; - tbl->tid_trans[2] = 7; - tbl->tid_trans[3] = 8; - int in_there = 0; - khiter_t iter_rg = kh_put(c2c, tbl->rg_trans, strdup("hello"), &in_there); - kh_value(tbl->rg_trans, iter_rg) = strdup("goodbye"); - khiter_t iter_pg = kh_put(c2c, tbl->pg_trans, strdup("quail"), &in_there); - kh_value(tbl->pg_trans, iter_pg) = strdup("bird"); - - - b->core.tid = 0; - b->core.pos = 1334; - b->core.bin = 0; - b->core.qual = 10; - b->core.l_qname = 10; - b->core.flag = 0; - b->core.n_cigar = 1; - b->core.l_qseq = 10; - b->core.mtid = -1; - b->core.mpos = 0; - b->core.isize = -1; - size_t data_len = 10 + 4 + 5 + 10 + 18; - b->data = (uint8_t*)malloc(data_len); - memcpy(b->data, - "123456789\0" // q_name - "\x00\x00\x00\xA0" // cigar - "\x00\x00\x00\x00\x00" // qseq - "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" // qual - "RGZhello\0PGZquail\0" // aux - , data_len - ); - b->m_data = b->l_data = data_len; - - *b_in = b; -} - - -int samtools_test_bam_translate_main(int argc, char**argv) -{ - // test state - const int NUM_TESTS = 6; - int verbose = 0; - int success = 0; - int failure = 0; - - int getopt_char; - while ((getopt_char = getopt(argc, argv, "v")) != -1) { - switch (getopt_char) { - case 'v': - ++verbose; - break; - default: - break; - } - } - - bam1_t* b; - - // Setup samtools_stderr redirect - kstring_t res = { 0, 0, NULL }; - FILE* orig_samtools_stderr = fdopen(dup(STDERR_FILENO), "a"); // Save samtools_stderr - char* tempfname = (optind < argc)? argv[optind] : "test_bam_translate.tmp"; - FILE* check = NULL; - - // setup - if (verbose) fprintf(samtools_stdout, "BEGIN test 1\n"); // TID test - trans_tbl_t tbl1; - setup_test_1(&b,&tbl1); - if (verbose > 1) { - fprintf(samtools_stdout, "b\n"); - dump_read(b); - } - if (verbose) fprintf(samtools_stdout, "RUN test 1\n"); - - // test - xfreopen(tempfname, "w", samtools_stderr); // Redirect samtools_stderr to pipe - bam_translate(b, &tbl1); - fclose(samtools_stderr); - - if (verbose) fprintf(samtools_stdout, "END RUN test 1\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "b\n"); - dump_read(b); - } - - // check result - check = fopen(tempfname, "r"); - res.l = 0; - if (kgetline(&res, (kgets_func *)fgets, check) < 0 && - (feof(check) || res.l == 0) ) { - ++success; - } else { - ++failure; - if (verbose) fprintf(samtools_stdout, "FAIL test 1\n"); - } - fclose(check); - - // teardown - bam_destroy1(b); - trans_tbl_destroy(&tbl1); - if (verbose) fprintf(samtools_stdout, "END test 1\n"); - - // setup - if (verbose) fprintf(samtools_stdout, "BEGIN test 2\n"); // RG exists and translate test - trans_tbl_t tbl2; - setup_test_2(&b,&tbl2); - if (verbose > 1) { - fprintf(samtools_stdout, "b\n"); - dump_read(b); - } - if (verbose) fprintf(samtools_stdout, "RUN test 2\n"); - - // test - xfreopen(tempfname, "w", samtools_stderr); // Redirect samtools_stderr to pipe - bam_translate(b, &tbl2); - fclose(samtools_stderr); - - if (verbose) fprintf(samtools_stdout, "END RUN test 2\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "b\n"); - dump_read(b); - } - - // check result - check = fopen(tempfname, "r"); - res.l = 0; - if (kgetline(&res, (kgets_func *)fgets, check) < 0 && - (feof(check) || res.l == 0) ) { - ++success; - } else { - ++failure; - if (verbose) fprintf(samtools_stdout, "FAIL test 2\n"); - } - fclose(check); - - // teardown - bam_destroy1(b); - trans_tbl_destroy(&tbl2); - if (verbose) fprintf(samtools_stdout, "END test 2\n"); - - if (verbose) fprintf(samtools_stdout, "BEGIN test 3\n"); // PG exists and translate test - // setup - trans_tbl_t tbl3; - setup_test_3(&b,&tbl3); - if (verbose > 1) { - fprintf(samtools_stdout, "b\n"); - dump_read(b); - } - if (verbose) fprintf(samtools_stdout, "RUN test 3\n"); - - // test - xfreopen(tempfname, "w", samtools_stderr); // Redirect samtools_stderr to pipe - bam_translate(b, &tbl3); - fclose(samtools_stderr); - - if (verbose) fprintf(samtools_stdout, "END RUN test 3\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "b\n"); - dump_read(b); - } - - // check result - check = fopen(tempfname, "r"); - res.l = 0; - if (kgetline(&res, (kgets_func *)fgets, check) < 0 && - (feof(check) || res.l == 0)) { - ++success; - } else { - ++failure; - if (verbose) fprintf(samtools_stdout, "FAIL test 3\n"); - } - fclose(check); - - // teardown - bam_destroy1(b); - trans_tbl_destroy(&tbl3); - if (verbose) fprintf(samtools_stdout, "END test 3\n"); - - if (verbose) fprintf(samtools_stdout, "BEGIN test 4\n"); // RG test non-existent - // setup - trans_tbl_t tbl4; - setup_test_4(&b,&tbl4); - if (verbose > 1) { - fprintf(samtools_stdout, "b\n"); - dump_read(b); - } - if (verbose) fprintf(samtools_stdout, "RUN test 4\n"); - - // test - xfreopen(tempfname, "w", samtools_stderr); // Redirect samtools_stderr to pipe - bam_translate(b, &tbl4); - fclose(samtools_stderr); - - if (verbose) fprintf(samtools_stdout, "END RUN test 4\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "b\n"); - dump_read(b); - } - // check result - check = fopen(tempfname, "r"); - res.l = 0; - if (kgetline(&res, (kgets_func *)fgets, check) >= 0 && - strcmp("[bam_translate] RG tag \"rg4hello\" on read \"123456789\" encountered with no corresponding entry in header, tag lost. Unknown tags are only reported once per input file for each tag ID.",res.s) == 0) { - ++success; - } else { - ++failure; - if (verbose) fprintf(samtools_stdout, "FAIL test 4\n"); - } - fclose(check); - - // teardown - bam_destroy1(b); - trans_tbl_destroy(&tbl4); - if (verbose) fprintf(samtools_stdout, "END test 4\n"); - - if (verbose) fprintf(samtools_stdout, "BEGIN test 5\n"); // PG test non-existent - // setup - trans_tbl_t tbl5; - setup_test_5(&b,&tbl5); - if (verbose > 1) { - fprintf(samtools_stdout, "b\n"); - dump_read(b); - fprintf(samtools_stdout, "RUN test 5\n"); - } - // test - xfreopen(tempfname, "w", samtools_stderr); // Redirect samtools_stderr to pipe - bam_translate(b, &tbl5); - fclose(samtools_stderr); - - if (verbose) fprintf(samtools_stdout, "END RUN test 5\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "b\n"); - dump_read(b); - } - - // check result - check = fopen(tempfname, "r"); - res.l = 0; - if (kgetline(&res, (kgets_func *)fgets, check) >= 0 && - strcmp("[bam_translate] PG tag \"pg5hello\" on read \"123456789\" encountered with no corresponding entry in header, tag lost. Unknown tags are only reported once per input file for each tag ID.",res.s) == 0) { - ++success; - } else { - ++failure; - if (verbose) fprintf(samtools_stdout, "FAIL test 5\n"); - } - fclose(check); - - // teardown - bam_destroy1(b); - trans_tbl_destroy(&tbl5); - if (verbose) fprintf(samtools_stdout, "END test 5\n"); - - if (verbose) fprintf(samtools_stdout, "BEGIN test 6\n"); // RG and PG exists and translate test - // setup - trans_tbl_t tbl6; - setup_test_6(&b,&tbl6); - if (verbose > 1) { - fprintf(samtools_stdout, "b\n"); - dump_read(b); - } - if (verbose) fprintf(samtools_stdout, "RUN test 6\n"); - - // test - xfreopen(tempfname, "w", samtools_stderr); // Redirect samtools_stderr to pipe - bam_translate(b, &tbl6); - fclose(samtools_stderr); - - if (verbose) fprintf(samtools_stdout, "END RUN test 6\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "b\n"); - dump_read(b); - } - - // check result - check = fopen(tempfname, "r"); - res.l = 0; - if (kgetline(&res, (kgets_func *)fgets, check) < 0 && - (feof(check) || res.l == 0) ) { - ++success; - } else { - ++failure; - if (verbose) fprintf(samtools_stdout, "FAIL test 6\n"); - } - fclose(check); - - // teardown - bam_destroy1(b); - trans_tbl_destroy(&tbl6); - if (verbose) fprintf(samtools_stdout, "END test 6\n"); - - // Cleanup - free(res.s); - remove(tempfname); - if (failure > 0) - fprintf(orig_samtools_stderr, "%d failures %d successes\n", failure, success); - fclose(orig_samtools_stderr); - - return (success == NUM_TESTS)? EXIT_SUCCESS : EXIT_FAILURE; -} diff --git a/samtools/test/merge/test_rtrans_build.c b/samtools/test/merge/test_rtrans_build.c deleted file mode 100644 index 0f23b48..0000000 --- a/samtools/test/merge/test_rtrans_build.c +++ /dev/null @@ -1,120 +0,0 @@ -/* test/merge/test_rtrans_build.c -- header translation test harness. - - Copyright (C) 2013, 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_sort.c" - -void dump_rtrans(int* rtrans, int n, int n_targets) { - printf("->n_targets:(%d)\n", n_targets); - int i, j; - for (i = 0; i < n; ++i) { - fprintf(stderr, "%d",rtrans[i*n_targets+0]); - for (j = 1; j < n_targets; ++j) - fprintf(stderr, "\t%d",rtrans[i*n_targets+j]); - fprintf(stderr, "\n"); - } -} - -void setup_test_1(trans_tbl_t* tbl) { - tbl[0].n_targets = 2; - tbl[0].tid_trans = calloc(sizeof(int), 2); - tbl[0].tid_trans[0] = 0; - tbl[0].tid_trans[1] = 1; - tbl[0].rg_trans = kh_init(c2c); - tbl[0].pg_trans = kh_init(c2c); - - tbl[1].n_targets = 2; - tbl[1].tid_trans = calloc(sizeof(int), 2); - tbl[1].tid_trans[0] = 1; - tbl[1].tid_trans[1] = 2; - tbl[1].rg_trans = kh_init(c2c); - tbl[1].pg_trans = kh_init(c2c); -} - -bool check_test_1(trans_tbl_t* tbl, int* rtrans) { - // Check input is unchanged - - // Check output - - return true; -} - - -int main(int argc, char**argv) -{ - const int NUM_TESTS = 1; - int verbose = 0; - int success = 0; - int failure = 0; - int getopt_char; - while ((getopt_char = getopt(argc, argv, "v")) != -1) { - switch (getopt_char) { - case 'v': - ++verbose; - break; - default: - break; - } - } - const long GIMMICK_SEED = 0x1234330e; - srand48(GIMMICK_SEED); - - if (verbose) printf("BEGIN test 1\n"); - // setup - trans_tbl_t tbl_1[2]; - int n_targets_1 = 3; - int n_1 = 2; - int* rtrans_1 = NULL; - setup_test_1(&tbl_1[0]); - // test - if (verbose > 1) { - // dump_trans_tid - } - if (verbose) printf("RUN test 1\n"); - rtrans_1 = rtrans_build(n_1, n_targets_1, &tbl_1[0]); - if (verbose) printf("END RUN test 1\n"); - if (verbose > 1) { - printf("rtrans\n"); - dump_rtrans(rtrans_1, n_1, n_targets_1); - } - if (check_test_1(&tbl_1[0], rtrans_1)) { - ++success; - } else { - ++failure; - if (verbose) printf("FAIL test 1\n"); - } - // teardown - trans_tbl_destroy(&tbl_1[0]); - trans_tbl_destroy(&tbl_1[1]); - free(rtrans_1); - if (verbose) printf("END test 1\n"); - - if (success == NUM_TESTS) { - return 0; - } else { - fprintf(stderr, "%d failures %d successes\n", failure, success); - return 1; - } -} diff --git a/samtools/test/merge/test_rtrans_build.c.pysam.c b/samtools/test/merge/test_rtrans_build.c.pysam.c deleted file mode 100644 index 5ba47e7..0000000 --- a/samtools/test/merge/test_rtrans_build.c.pysam.c +++ /dev/null @@ -1,122 +0,0 @@ -#include "samtools.pysam.h" - -/* test/merge/test_rtrans_build.c -- header translation test harness. - - Copyright (C) 2013, 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_sort.c" - -void dump_rtrans(int* rtrans, int n, int n_targets) { - fprintf(samtools_stdout, "->n_targets:(%d)\n", n_targets); - int i, j; - for (i = 0; i < n; ++i) { - fprintf(samtools_stderr, "%d",rtrans[i*n_targets+0]); - for (j = 1; j < n_targets; ++j) - fprintf(samtools_stderr, "\t%d",rtrans[i*n_targets+j]); - fprintf(samtools_stderr, "\n"); - } -} - -void setup_test_1(trans_tbl_t* tbl) { - tbl[0].n_targets = 2; - tbl[0].tid_trans = calloc(sizeof(int), 2); - tbl[0].tid_trans[0] = 0; - tbl[0].tid_trans[1] = 1; - tbl[0].rg_trans = kh_init(c2c); - tbl[0].pg_trans = kh_init(c2c); - - tbl[1].n_targets = 2; - tbl[1].tid_trans = calloc(sizeof(int), 2); - tbl[1].tid_trans[0] = 1; - tbl[1].tid_trans[1] = 2; - tbl[1].rg_trans = kh_init(c2c); - tbl[1].pg_trans = kh_init(c2c); -} - -bool check_test_1(trans_tbl_t* tbl, int* rtrans) { - // Check input is unchanged - - // Check output - - return true; -} - - -int samtools_test_rtrans_build_main(int argc, char**argv) -{ - const int NUM_TESTS = 1; - int verbose = 0; - int success = 0; - int failure = 0; - int getopt_char; - while ((getopt_char = getopt(argc, argv, "v")) != -1) { - switch (getopt_char) { - case 'v': - ++verbose; - break; - default: - break; - } - } - const long GIMMICK_SEED = 0x1234330e; - srand48(GIMMICK_SEED); - - if (verbose) fprintf(samtools_stdout, "BEGIN test 1\n"); - // setup - trans_tbl_t tbl_1[2]; - int n_targets_1 = 3; - int n_1 = 2; - int* rtrans_1 = NULL; - setup_test_1(&tbl_1[0]); - // test - if (verbose > 1) { - // dump_trans_tid - } - if (verbose) fprintf(samtools_stdout, "RUN test 1\n"); - rtrans_1 = rtrans_build(n_1, n_targets_1, &tbl_1[0]); - if (verbose) fprintf(samtools_stdout, "END RUN test 1\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "rtrans\n"); - dump_rtrans(rtrans_1, n_1, n_targets_1); - } - if (check_test_1(&tbl_1[0], rtrans_1)) { - ++success; - } else { - ++failure; - if (verbose) fprintf(samtools_stdout, "FAIL test 1\n"); - } - // teardown - trans_tbl_destroy(&tbl_1[0]); - trans_tbl_destroy(&tbl_1[1]); - free(rtrans_1); - if (verbose) fprintf(samtools_stdout, "END test 1\n"); - - if (success == NUM_TESTS) { - return 0; - } else { - fprintf(samtools_stderr, "%d failures %d successes\n", failure, success); - return 1; - } -} diff --git a/samtools/test/merge/test_trans_tbl_init.c b/samtools/test/merge/test_trans_tbl_init.c deleted file mode 100644 index d557932..0000000 --- a/samtools/test/merge/test_trans_tbl_init.c +++ /dev/null @@ -1,576 +0,0 @@ -/* test/merge/test_trans_tbl_init.c -- merge test harness. - - Copyright (C) 2013, 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_sort.c" -#include -#include - -typedef struct refseq_info { - const char *name; - uint32_t len; -} refseq_info_t; - -void dump_header(bam_hdr_t* hdr) { - printf("->n_targets:(%d)\n", hdr->n_targets); - int i; - for (i = 0; i < hdr->n_targets; ++i) { - printf("->target_name[%d]:(%s)\n",i,hdr->target_name[i]); - printf("->target_len[%d]:(%d)\n",i,hdr->target_len[i]); - } - - printf("->text:("); - fwrite((void*)hdr->text, (size_t) hdr->l_text, 1, stdout); - printf(")\n"); -} - -static int populate_merged_header(bam_hdr_t *hdr, merged_header_t *merged_hdr) { - trans_tbl_t dummy; - int res; - res = trans_tbl_init(merged_hdr, hdr, &dummy, 0, 0, 1, NULL); - trans_tbl_destroy(&dummy); - return res; -} - -/* - * Populate merged_hdr with data from bam0_header_text and bam0_refseqs. - * Return bam_hdr_t based on the content in bam1_header_text and bam1_refseqs. - */ - -bam_hdr_t * setup_test(const char *bam0_header_text, - const refseq_info_t *bam0_refseqs, - int32_t bam0_n_refseqs, - const char *bam1_header_text, - const refseq_info_t *bam1_refseqs, - int32_t bam1_n_refseqs, - merged_header_t *merged_hdr) { - bam_hdr_t* bam0 = NULL; - bam_hdr_t* bam1 = NULL; - int32_t i; - - bam0 = bam_hdr_init(); - bam0->text = strdup(bam0_header_text); - if (!bam0->text) goto fail; - bam0->l_text = strlen(bam0_header_text); - bam0->n_targets = 1; - bam0->target_name = (char**)calloc(bam0_n_refseqs, sizeof(char*)); - bam0->target_len = (uint32_t*)calloc(bam0_n_refseqs, sizeof(uint32_t)); - for (i = 0; i < bam0_n_refseqs; i++) { - bam0->target_name[i] = strdup(bam0_refseqs[i].name); - if (!bam0->target_name[i]) goto fail; - bam0->target_len[i] = bam0_refseqs[i].len; - } - - if (populate_merged_header(bam0, merged_hdr)) goto fail; - - bam1 = bam_hdr_init(); - if (!bam1) goto fail; - bam1->text = strdup(bam1_header_text); - if (!bam1->text) goto fail; - bam1->l_text = strlen(bam1_header_text); - bam1->n_targets = bam1_n_refseqs; - bam1->target_name = (char**)calloc(bam1_n_refseqs, sizeof(char*)); - bam1->target_len = (uint32_t*)calloc(bam1_n_refseqs, sizeof(uint32_t)); - for (i = 0; i < bam1_n_refseqs; i++) { - bam1->target_name[i] = strdup(bam1_refseqs[i].name); - if (!bam1->target_name[i]) goto fail; - bam1->target_len[i] = bam1_refseqs[i].len; - } - - bam_hdr_destroy(bam0); - return bam1; - - fail: - bam_hdr_destroy(bam1); - bam_hdr_destroy(bam0); - return NULL; -} - -#define NELE(x) (sizeof((x)) / sizeof((x)[0])) - -static const char init_text[] = - "@HD\tVN:1.4\tSO:unknown\n" - "@SQ\tSN:fish\tLN:133\tSP:frog"; - -static const refseq_info_t init_refs[1] = { - { "fish", 133 } -}; - -static const char test_1_trans_text[] = -"@HD\tVN:1.4\tSO:unknown\n" -"@SQ\tSN:fish\tLN:133\n"; - -static const refseq_info_t test_1_refs[1] = { - { "fish", 133 } -}; - -bam_hdr_t * setup_test_1(merged_header_t *merged_hdr) { - return setup_test(init_text, init_refs, NELE(init_refs), - test_1_trans_text, test_1_refs, NELE(test_1_refs), - merged_hdr); -} - -bool check_test_1(bam_hdr_t* translate, bam_hdr_t* out, trans_tbl_t* tbl) { - // Check input is unchanged - if ( - strncmp(test_1_trans_text, translate->text, translate->l_text) - || translate->l_text != strlen( test_1_trans_text) - || translate->n_targets != 1 - ) return false; - - // Check output header - const char out_regex[] = - "^@HD\tVN:1.4\tSO:unknown\n" - "@SQ\tSN:fish\tLN:133\tSP:frog\n$"; - - regex_t check_regex; - regcomp(&check_regex, out_regex, REG_EXTENDED|REG_NOSUB); - - if ( regexec(&check_regex, out->text, 0, NULL, 0) != 0 || out->n_targets != 1 ) return false; - - regfree(&check_regex); - - // Check output tbl - if (tbl[0].n_targets != 1 || tbl[0].tid_trans[0] != 0 || tbl[0].lost_coord_sort) return false; - - return true; -} - -static const char test_2_trans_text[] = -"@HD\tVN:1.4\tSO:unknown\n" -"@SQ\tSN:donkey\tLN:133\n" -"@SQ\tSN:fish\tLN:133"; - -static const refseq_info_t test_2_refs[2] = { - { "donkey", 133 }, - { "fish", 133 } -}; - -bam_hdr_t * setup_test_2(merged_header_t *merged_hdr) { - return setup_test(init_text, init_refs, NELE(init_refs), - test_2_trans_text, test_2_refs, NELE(test_2_refs), - merged_hdr); -} - -bool check_test_2(bam_hdr_t* translate, bam_hdr_t* out, trans_tbl_t* tbl) { - // Check input is unchanged - if ( - strncmp(test_2_trans_text, translate->text, translate->l_text) - || translate->l_text != strlen(test_2_trans_text) - || translate->n_targets != 2 - ) return false; - - // Check output header - const char out_regex[] = - "^@HD\tVN:1.4\tSO:unknown\n" - "@SQ\tSN:fish\tLN:133\tSP:frog\n" - "@SQ\tSN:donkey\tLN:133\n$"; - - regex_t check_regex; - regcomp(&check_regex, out_regex, REG_EXTENDED|REG_NOSUB); - - if ( regexec(&check_regex, out->text, 0, NULL, 0) != 0 || out->n_targets != 2 ) return false; - - regfree(&check_regex); - - // Check output tbl - if (tbl[0].n_targets != 2 || tbl[0].tid_trans[0] != 1 || tbl[0].tid_trans[1] != 0) return false; - - return true; -} - -static const char test_3_trans_text[] = -"@HD\tVN:1.4\tSO:unknown\n" -"@SQ\tSN:donkey\tLN:133\n" -"@SQ\tSN:fish\tLN:133\n" -"@RG\tID:fish\tPU:trans\n"; - -static const refseq_info_t test_3_refs[2] = { - { "donkey", 133 }, - { "fish", 133 } -}; - -bam_hdr_t * setup_test_3(merged_header_t *merged_hdr) { - return setup_test(init_text, init_refs, NELE(init_refs), - test_3_trans_text, test_3_refs, NELE(test_3_refs), - merged_hdr); -} - -bool check_test_3(bam_hdr_t* translate, bam_hdr_t* out, trans_tbl_t* tbl) { - // Check input is unchanged - if ( - strncmp(test_3_trans_text, translate->text, translate->l_text) - || translate->l_text != strlen(test_3_trans_text) - || translate->n_targets != 2 - ) return false; - return true; -} - -static const char test_4_trans_text[] = -"@HD\tVN:1.4\tSO:unknown\n" -"@SQ\tSN:donkey\tLN:133\n" -"@SQ\tSN:fish\tLN:133\n" -"@RG\tID:fish\tPU:trans\n"; - -static const refseq_info_t test_4_refs[2] = { - { "donkey", 133 }, - { "fish", 133 } -}; - -bam_hdr_t * setup_test_4(merged_header_t *merged_hdr) { - const char* t4_init_text = - "@HD\tVN:1.4\tSO:unknown\n" - "@SQ\tSN:fish\tLN:133\tSP:frog\n" - "@RG\tID:fish\tPU:out\n"; - - return setup_test(t4_init_text, init_refs, NELE(init_refs), - test_4_trans_text, test_4_refs, NELE(test_4_refs), - merged_hdr); -} - -bool check_test_4(bam_hdr_t* translate, bam_hdr_t* out, trans_tbl_t* tbl) { - // Check input is unchanged - if ( - strncmp(test_4_trans_text, translate->text, translate->l_text) - || translate->l_text != strlen(test_4_trans_text) - || translate->n_targets != 2 - ) return false; - return true; -} - -static const char test_5_trans_text[] = -"@HD\tVN:1.4\tSO:unknown\n" -"@SQ\tSN:donkey\tLN:133\n" -"@SQ\tSN:fish\tLN:133\n" -"@RG\tID:fish\tPU:trans\n" -"@PG\tXX:dummy\tID:fish\tDS:trans\n" -"@PG\tPP:fish\tID:hook\tDS:trans\n"; - -static const refseq_info_t test_5_refs[2] = { - { "donkey", 133 }, - { "fish", 133 } -}; - -bam_hdr_t * setup_test_5(merged_header_t *merged_hdr) { - const char* t5_init_text = - "@HD\tVN:1.4\tSO:unknown\n" - "@SQ\tSN:fish\tLN:133\tSP:frog\n" - "@RG\tID:fish\tPU:out\n" - "@PG\tXX:dummyx\tID:fish\tDS:out\n" - "@PG\tPP:fish\tID:hook\tDS:out\n"; - - return setup_test(t5_init_text, init_refs, NELE(init_refs), - test_5_trans_text, test_5_refs, NELE(test_5_refs), - merged_hdr); -} - -bool check_test_5(bam_hdr_t* translate, bam_hdr_t* out, trans_tbl_t* tbl) { - // Check input is unchanged - if ( - strncmp(test_5_trans_text, translate->text, translate->l_text) - || translate->l_text != strlen(test_5_trans_text) - || translate->n_targets != 2 - ) return false; - return true; -} - -static const char test_6_trans_text[] = -"@HD\tVN:1.4\tSO:unknown\n" -"@SQ\tSN:donkey\tLN:133\n" -"@SQ\tSN:fish\tLN:133\n" -"@RG\tID:fish\tPU:trans\n" -"@PG\tXX:dummy\tID:fish\tDS:trans\n" -"@PG\tPP:fish\tID:hook\tDS:trans\n"; - -static const refseq_info_t test_6_refs[2] = { - { "donkey", 133 }, - { "fish", 133 } -}; - -bam_hdr_t * setup_test_6(merged_header_t *merged_hdr) { - return setup_test(init_text, init_refs, NELE(init_refs), - test_6_trans_text, test_6_refs, NELE(test_6_refs), - merged_hdr); -} - -bool check_test_6(bam_hdr_t* translate, bam_hdr_t* out, trans_tbl_t* tbl) { - // Check input is unchanged - if ( - strncmp(test_6_trans_text, translate->text, translate->l_text) - || translate->l_text != strlen(test_5_trans_text) - || translate->n_targets != 2 - ) return false; - return true; -} - -int main(int argc, char**argv) -{ - const int NUM_TESTS = 6; - int verbose = 0; - int success = 0; - int failure = 0; - int getopt_char; - while ((getopt_char = getopt(argc, argv, "v")) != -1) { - switch (getopt_char) { - case 'v': - ++verbose; - break; - default: - break; - } - } - - // Set the seed to a fixed value so that calls to lrand48 within functions return predictable values - const long GIMMICK_SEED = 0x1234330e; - srand48(GIMMICK_SEED); - - bam_hdr_t* out; - bam_hdr_t* translate; - - if (verbose) printf("BEGIN test 1\n"); - // setup - trans_tbl_t tbl_1; - merged_header_t *merged_hdr = init_merged_header(); - translate = setup_test_1(merged_hdr); - assert(translate); - // test - if (verbose > 1) { - printf("translate\n"); - dump_header(translate); - } - if (verbose) printf("RUN test 1\n"); - trans_tbl_init(merged_hdr, translate, &tbl_1, false, false, true, NULL); - out = finish_merged_header(merged_hdr); - free_merged_header(merged_hdr); - if (verbose) printf("END RUN test 1\n"); - if (verbose > 1) { - printf("translate\n"); - dump_header(translate); - printf("out\n"); - dump_header(out); - } - if (check_test_1(translate, out, &tbl_1)) { - if (verbose) printf("Test 1 : PASS\n"); - ++success; - } else { - if (verbose) printf("Test 1 : FAIL\n"); - fprintf(stderr, "Test 1 : FAIL\n"); - ++failure; - } - // teardown - bam_hdr_destroy(translate); - bam_hdr_destroy(out); - trans_tbl_destroy(&tbl_1); - if (verbose) printf("END test 1\n"); - - // test - if (verbose) printf("BEGIN test 2\n"); - // reinit - trans_tbl_t tbl_2; - - merged_hdr = init_merged_header(); - translate = setup_test_2(merged_hdr); - assert(translate); - if (verbose > 1) { - printf("translate\n"); - dump_header(translate); - } - if (verbose) printf("RUN test 2\n"); - trans_tbl_init(merged_hdr, translate, &tbl_2, false, false, true, NULL); - out = finish_merged_header(merged_hdr); - free_merged_header(merged_hdr); - if (verbose) printf("END RUN test 2\n"); - if (verbose > 1) { - printf("translate\n"); - dump_header(translate); - printf("out\n"); - dump_header(out); - } - if (check_test_2(translate, out, &tbl_2)) { - if (verbose) printf("Test 2 : PASS\n"); - ++success; - } else { - if (verbose) printf("Test 2 : FAIL\n"); - fprintf(stderr, "Test 2 : FAIL\n"); - ++failure; - } - // teardown - bam_hdr_destroy(translate); - bam_hdr_destroy(out); - trans_tbl_destroy(&tbl_2); - if (verbose) printf("END test 2\n"); - - // test - if (verbose) printf("BEGIN test 3\n"); - // reinit - trans_tbl_t tbl_3; - merged_hdr = init_merged_header(); - translate = setup_test_3(merged_hdr); - assert(translate); - if (verbose > 1) { - printf("translate\n"); - dump_header(translate); - } - if (verbose) printf("RUN test 3\n"); - trans_tbl_init(merged_hdr, translate, &tbl_3, false, false, true, NULL); - out = finish_merged_header(merged_hdr); - free_merged_header(merged_hdr); - if (verbose) printf("END RUN test 3\n"); - if (verbose > 1) { - printf("translate\n"); - dump_header(translate); - printf("out\n"); - dump_header(out); - } - if (check_test_3(translate, out, &tbl_3)) { - if (verbose) printf("Test 3 : PASS\n"); - ++success; - } else { - if (verbose) printf("Test 3 : FAIL\n"); - fprintf(stderr, "Test 3 : FAIL\n"); - ++failure; - } - // teardown - bam_hdr_destroy(translate); - bam_hdr_destroy(out); - trans_tbl_destroy(&tbl_3); - if (verbose) printf("END test 3\n"); - - // test - if (verbose) printf("BEGIN test 4\n"); - // reinit - trans_tbl_t tbl_4; - merged_hdr = init_merged_header(); - translate = setup_test_4(merged_hdr); - assert(translate); - if (verbose > 1) { - printf("translate\n"); - dump_header(translate); - } - if (verbose) printf("RUN test 4\n"); - trans_tbl_init(merged_hdr, translate, &tbl_4, false, false, true, NULL); - out = finish_merged_header(merged_hdr); - free_merged_header(merged_hdr); - if (verbose) printf("END RUN test 4\n"); - if (verbose > 1) { - printf("translate\n"); - dump_header(translate); - printf("out\n"); - dump_header(out); - } - if (check_test_4(translate, out, &tbl_4)) { - if (verbose) printf("Test 4 : PASS\n"); - ++success; - } else { - if (verbose) printf("Test 4 : FAIL\n"); - fprintf(stderr, "Test 4 : FAIL\n"); - ++failure; - } - // teardown - bam_hdr_destroy(translate); - bam_hdr_destroy(out); - trans_tbl_destroy(&tbl_4); - if (verbose) printf("END test 4\n"); - - // test - if (verbose) printf("BEGIN test 5\n"); - // reinit - trans_tbl_t tbl_5; - merged_hdr = init_merged_header(); - translate = setup_test_5(merged_hdr); - assert(translate); - if (verbose > 1) { - - printf("translate\n"); - dump_header(translate); - } - if (verbose) printf("RUN test 5\n"); - trans_tbl_init(merged_hdr, translate, &tbl_5, false, false, true, NULL); - out = finish_merged_header(merged_hdr); - free_merged_header(merged_hdr); - if (verbose) printf("END RUN test 5\n"); - if (verbose > 1) { - printf("translate\n"); - dump_header(translate); - printf("out\n"); - dump_header(out); - } - if (check_test_5(translate, out, &tbl_5)) { - if (verbose) printf("Test 5 : PASS\n"); - ++success; - } else { - if (verbose) printf("Test 5 : FAIL\n"); - fprintf(stderr, "Test 5 : FAIL\n"); - ++failure; - } - // teardown - bam_hdr_destroy(translate); - bam_hdr_destroy(out); - trans_tbl_destroy(&tbl_5); - if (verbose) printf("END test 5\n"); - - // test - if (verbose) printf("BEGIN test 6\n"); - // reinit - trans_tbl_t tbl_6; - merged_hdr = init_merged_header(); - translate = setup_test_6(merged_hdr); - assert(translate); - if (verbose > 1) { - printf("translate\n"); - dump_header(translate); - } - if (verbose) printf("RUN test 6\n"); - trans_tbl_init(merged_hdr, translate, &tbl_6, false, false, true, "filename"); - out = finish_merged_header(merged_hdr); - free_merged_header(merged_hdr); - if (verbose) printf("END RUN test 6\n"); - if (verbose > 1) { - printf("translate\n"); - dump_header(translate); - printf("out\n"); - dump_header(out); - } - if (check_test_6(translate, out, &tbl_6)) { - if (verbose) printf("Test 6 : PASS\n"); - ++success; - } else { - if (verbose) printf("Test 6 : FAIL\n"); - fprintf(stderr, "Test 6 : FAIL\n"); - ++failure; - } - // teardown - bam_hdr_destroy(translate); - bam_hdr_destroy(out); - trans_tbl_destroy(&tbl_6); - if (verbose) printf("END test 6\n"); - - if (success == NUM_TESTS) { - return 0; - } else { - fprintf(stderr, "%d failures %d successes\n", failure, success); - return 1; - } -} diff --git a/samtools/test/merge/test_trans_tbl_init.c.pysam.c b/samtools/test/merge/test_trans_tbl_init.c.pysam.c deleted file mode 100644 index f3abf71..0000000 --- a/samtools/test/merge/test_trans_tbl_init.c.pysam.c +++ /dev/null @@ -1,578 +0,0 @@ -#include "samtools.pysam.h" - -/* test/merge/test_trans_tbl_init.c -- merge test harness. - - Copyright (C) 2013, 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_sort.c" -#include -#include - -typedef struct refseq_info { - const char *name; - uint32_t len; -} refseq_info_t; - -void dump_header(bam_hdr_t* hdr) { - fprintf(samtools_stdout, "->n_targets:(%d)\n", hdr->n_targets); - int i; - for (i = 0; i < hdr->n_targets; ++i) { - fprintf(samtools_stdout, "->target_name[%d]:(%s)\n",i,hdr->target_name[i]); - fprintf(samtools_stdout, "->target_len[%d]:(%d)\n",i,hdr->target_len[i]); - } - - fprintf(samtools_stdout, "->text:("); - fwrite((void*)hdr->text, (size_t) hdr->l_text, 1, samtools_stdout); - fprintf(samtools_stdout, ")\n"); -} - -static int populate_merged_header(bam_hdr_t *hdr, merged_header_t *merged_hdr) { - trans_tbl_t dummy; - int res; - res = trans_tbl_init(merged_hdr, hdr, &dummy, 0, 0, 1, NULL); - trans_tbl_destroy(&dummy); - return res; -} - -/* - * Populate merged_hdr with data from bam0_header_text and bam0_refseqs. - * Return bam_hdr_t based on the content in bam1_header_text and bam1_refseqs. - */ - -bam_hdr_t * setup_test(const char *bam0_header_text, - const refseq_info_t *bam0_refseqs, - int32_t bam0_n_refseqs, - const char *bam1_header_text, - const refseq_info_t *bam1_refseqs, - int32_t bam1_n_refseqs, - merged_header_t *merged_hdr) { - bam_hdr_t* bam0 = NULL; - bam_hdr_t* bam1 = NULL; - int32_t i; - - bam0 = bam_hdr_init(); - bam0->text = strdup(bam0_header_text); - if (!bam0->text) goto fail; - bam0->l_text = strlen(bam0_header_text); - bam0->n_targets = 1; - bam0->target_name = (char**)calloc(bam0_n_refseqs, sizeof(char*)); - bam0->target_len = (uint32_t*)calloc(bam0_n_refseqs, sizeof(uint32_t)); - for (i = 0; i < bam0_n_refseqs; i++) { - bam0->target_name[i] = strdup(bam0_refseqs[i].name); - if (!bam0->target_name[i]) goto fail; - bam0->target_len[i] = bam0_refseqs[i].len; - } - - if (populate_merged_header(bam0, merged_hdr)) goto fail; - - bam1 = bam_hdr_init(); - if (!bam1) goto fail; - bam1->text = strdup(bam1_header_text); - if (!bam1->text) goto fail; - bam1->l_text = strlen(bam1_header_text); - bam1->n_targets = bam1_n_refseqs; - bam1->target_name = (char**)calloc(bam1_n_refseqs, sizeof(char*)); - bam1->target_len = (uint32_t*)calloc(bam1_n_refseqs, sizeof(uint32_t)); - for (i = 0; i < bam1_n_refseqs; i++) { - bam1->target_name[i] = strdup(bam1_refseqs[i].name); - if (!bam1->target_name[i]) goto fail; - bam1->target_len[i] = bam1_refseqs[i].len; - } - - bam_hdr_destroy(bam0); - return bam1; - - fail: - bam_hdr_destroy(bam1); - bam_hdr_destroy(bam0); - return NULL; -} - -#define NELE(x) (sizeof((x)) / sizeof((x)[0])) - -static const char init_text[] = - "@HD\tVN:1.4\tSO:unknown\n" - "@SQ\tSN:fish\tLN:133\tSP:frog"; - -static const refseq_info_t init_refs[1] = { - { "fish", 133 } -}; - -static const char test_1_trans_text[] = -"@HD\tVN:1.4\tSO:unknown\n" -"@SQ\tSN:fish\tLN:133\n"; - -static const refseq_info_t test_1_refs[1] = { - { "fish", 133 } -}; - -bam_hdr_t * setup_test_1(merged_header_t *merged_hdr) { - return setup_test(init_text, init_refs, NELE(init_refs), - test_1_trans_text, test_1_refs, NELE(test_1_refs), - merged_hdr); -} - -bool check_test_1(bam_hdr_t* translate, bam_hdr_t* out, trans_tbl_t* tbl) { - // Check input is unchanged - if ( - strncmp(test_1_trans_text, translate->text, translate->l_text) - || translate->l_text != strlen( test_1_trans_text) - || translate->n_targets != 1 - ) return false; - - // Check output header - const char out_regex[] = - "^@HD\tVN:1.4\tSO:unknown\n" - "@SQ\tSN:fish\tLN:133\tSP:frog\n$"; - - regex_t check_regex; - regcomp(&check_regex, out_regex, REG_EXTENDED|REG_NOSUB); - - if ( regexec(&check_regex, out->text, 0, NULL, 0) != 0 || out->n_targets != 1 ) return false; - - regfree(&check_regex); - - // Check output tbl - if (tbl[0].n_targets != 1 || tbl[0].tid_trans[0] != 0 || tbl[0].lost_coord_sort) return false; - - return true; -} - -static const char test_2_trans_text[] = -"@HD\tVN:1.4\tSO:unknown\n" -"@SQ\tSN:donkey\tLN:133\n" -"@SQ\tSN:fish\tLN:133"; - -static const refseq_info_t test_2_refs[2] = { - { "donkey", 133 }, - { "fish", 133 } -}; - -bam_hdr_t * setup_test_2(merged_header_t *merged_hdr) { - return setup_test(init_text, init_refs, NELE(init_refs), - test_2_trans_text, test_2_refs, NELE(test_2_refs), - merged_hdr); -} - -bool check_test_2(bam_hdr_t* translate, bam_hdr_t* out, trans_tbl_t* tbl) { - // Check input is unchanged - if ( - strncmp(test_2_trans_text, translate->text, translate->l_text) - || translate->l_text != strlen(test_2_trans_text) - || translate->n_targets != 2 - ) return false; - - // Check output header - const char out_regex[] = - "^@HD\tVN:1.4\tSO:unknown\n" - "@SQ\tSN:fish\tLN:133\tSP:frog\n" - "@SQ\tSN:donkey\tLN:133\n$"; - - regex_t check_regex; - regcomp(&check_regex, out_regex, REG_EXTENDED|REG_NOSUB); - - if ( regexec(&check_regex, out->text, 0, NULL, 0) != 0 || out->n_targets != 2 ) return false; - - regfree(&check_regex); - - // Check output tbl - if (tbl[0].n_targets != 2 || tbl[0].tid_trans[0] != 1 || tbl[0].tid_trans[1] != 0) return false; - - return true; -} - -static const char test_3_trans_text[] = -"@HD\tVN:1.4\tSO:unknown\n" -"@SQ\tSN:donkey\tLN:133\n" -"@SQ\tSN:fish\tLN:133\n" -"@RG\tID:fish\tPU:trans\n"; - -static const refseq_info_t test_3_refs[2] = { - { "donkey", 133 }, - { "fish", 133 } -}; - -bam_hdr_t * setup_test_3(merged_header_t *merged_hdr) { - return setup_test(init_text, init_refs, NELE(init_refs), - test_3_trans_text, test_3_refs, NELE(test_3_refs), - merged_hdr); -} - -bool check_test_3(bam_hdr_t* translate, bam_hdr_t* out, trans_tbl_t* tbl) { - // Check input is unchanged - if ( - strncmp(test_3_trans_text, translate->text, translate->l_text) - || translate->l_text != strlen(test_3_trans_text) - || translate->n_targets != 2 - ) return false; - return true; -} - -static const char test_4_trans_text[] = -"@HD\tVN:1.4\tSO:unknown\n" -"@SQ\tSN:donkey\tLN:133\n" -"@SQ\tSN:fish\tLN:133\n" -"@RG\tID:fish\tPU:trans\n"; - -static const refseq_info_t test_4_refs[2] = { - { "donkey", 133 }, - { "fish", 133 } -}; - -bam_hdr_t * setup_test_4(merged_header_t *merged_hdr) { - const char* t4_init_text = - "@HD\tVN:1.4\tSO:unknown\n" - "@SQ\tSN:fish\tLN:133\tSP:frog\n" - "@RG\tID:fish\tPU:out\n"; - - return setup_test(t4_init_text, init_refs, NELE(init_refs), - test_4_trans_text, test_4_refs, NELE(test_4_refs), - merged_hdr); -} - -bool check_test_4(bam_hdr_t* translate, bam_hdr_t* out, trans_tbl_t* tbl) { - // Check input is unchanged - if ( - strncmp(test_4_trans_text, translate->text, translate->l_text) - || translate->l_text != strlen(test_4_trans_text) - || translate->n_targets != 2 - ) return false; - return true; -} - -static const char test_5_trans_text[] = -"@HD\tVN:1.4\tSO:unknown\n" -"@SQ\tSN:donkey\tLN:133\n" -"@SQ\tSN:fish\tLN:133\n" -"@RG\tID:fish\tPU:trans\n" -"@PG\tXX:dummy\tID:fish\tDS:trans\n" -"@PG\tPP:fish\tID:hook\tDS:trans\n"; - -static const refseq_info_t test_5_refs[2] = { - { "donkey", 133 }, - { "fish", 133 } -}; - -bam_hdr_t * setup_test_5(merged_header_t *merged_hdr) { - const char* t5_init_text = - "@HD\tVN:1.4\tSO:unknown\n" - "@SQ\tSN:fish\tLN:133\tSP:frog\n" - "@RG\tID:fish\tPU:out\n" - "@PG\tXX:dummyx\tID:fish\tDS:out\n" - "@PG\tPP:fish\tID:hook\tDS:out\n"; - - return setup_test(t5_init_text, init_refs, NELE(init_refs), - test_5_trans_text, test_5_refs, NELE(test_5_refs), - merged_hdr); -} - -bool check_test_5(bam_hdr_t* translate, bam_hdr_t* out, trans_tbl_t* tbl) { - // Check input is unchanged - if ( - strncmp(test_5_trans_text, translate->text, translate->l_text) - || translate->l_text != strlen(test_5_trans_text) - || translate->n_targets != 2 - ) return false; - return true; -} - -static const char test_6_trans_text[] = -"@HD\tVN:1.4\tSO:unknown\n" -"@SQ\tSN:donkey\tLN:133\n" -"@SQ\tSN:fish\tLN:133\n" -"@RG\tID:fish\tPU:trans\n" -"@PG\tXX:dummy\tID:fish\tDS:trans\n" -"@PG\tPP:fish\tID:hook\tDS:trans\n"; - -static const refseq_info_t test_6_refs[2] = { - { "donkey", 133 }, - { "fish", 133 } -}; - -bam_hdr_t * setup_test_6(merged_header_t *merged_hdr) { - return setup_test(init_text, init_refs, NELE(init_refs), - test_6_trans_text, test_6_refs, NELE(test_6_refs), - merged_hdr); -} - -bool check_test_6(bam_hdr_t* translate, bam_hdr_t* out, trans_tbl_t* tbl) { - // Check input is unchanged - if ( - strncmp(test_6_trans_text, translate->text, translate->l_text) - || translate->l_text != strlen(test_5_trans_text) - || translate->n_targets != 2 - ) return false; - return true; -} - -int samtools_test_trans_tbl_init_main(int argc, char**argv) -{ - const int NUM_TESTS = 6; - int verbose = 0; - int success = 0; - int failure = 0; - int getopt_char; - while ((getopt_char = getopt(argc, argv, "v")) != -1) { - switch (getopt_char) { - case 'v': - ++verbose; - break; - default: - break; - } - } - - // Set the seed to a fixed value so that calls to lrand48 within functions return predictable values - const long GIMMICK_SEED = 0x1234330e; - srand48(GIMMICK_SEED); - - bam_hdr_t* out; - bam_hdr_t* translate; - - if (verbose) fprintf(samtools_stdout, "BEGIN test 1\n"); - // setup - trans_tbl_t tbl_1; - merged_header_t *merged_hdr = init_merged_header(); - translate = setup_test_1(merged_hdr); - assert(translate); - // test - if (verbose > 1) { - fprintf(samtools_stdout, "translate\n"); - dump_header(translate); - } - if (verbose) fprintf(samtools_stdout, "RUN test 1\n"); - trans_tbl_init(merged_hdr, translate, &tbl_1, false, false, true, NULL); - out = finish_merged_header(merged_hdr); - free_merged_header(merged_hdr); - if (verbose) fprintf(samtools_stdout, "END RUN test 1\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "translate\n"); - dump_header(translate); - fprintf(samtools_stdout, "out\n"); - dump_header(out); - } - if (check_test_1(translate, out, &tbl_1)) { - if (verbose) fprintf(samtools_stdout, "Test 1 : PASS\n"); - ++success; - } else { - if (verbose) fprintf(samtools_stdout, "Test 1 : FAIL\n"); - fprintf(samtools_stderr, "Test 1 : FAIL\n"); - ++failure; - } - // teardown - bam_hdr_destroy(translate); - bam_hdr_destroy(out); - trans_tbl_destroy(&tbl_1); - if (verbose) fprintf(samtools_stdout, "END test 1\n"); - - // test - if (verbose) fprintf(samtools_stdout, "BEGIN test 2\n"); - // reinit - trans_tbl_t tbl_2; - - merged_hdr = init_merged_header(); - translate = setup_test_2(merged_hdr); - assert(translate); - if (verbose > 1) { - fprintf(samtools_stdout, "translate\n"); - dump_header(translate); - } - if (verbose) fprintf(samtools_stdout, "RUN test 2\n"); - trans_tbl_init(merged_hdr, translate, &tbl_2, false, false, true, NULL); - out = finish_merged_header(merged_hdr); - free_merged_header(merged_hdr); - if (verbose) fprintf(samtools_stdout, "END RUN test 2\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "translate\n"); - dump_header(translate); - fprintf(samtools_stdout, "out\n"); - dump_header(out); - } - if (check_test_2(translate, out, &tbl_2)) { - if (verbose) fprintf(samtools_stdout, "Test 2 : PASS\n"); - ++success; - } else { - if (verbose) fprintf(samtools_stdout, "Test 2 : FAIL\n"); - fprintf(samtools_stderr, "Test 2 : FAIL\n"); - ++failure; - } - // teardown - bam_hdr_destroy(translate); - bam_hdr_destroy(out); - trans_tbl_destroy(&tbl_2); - if (verbose) fprintf(samtools_stdout, "END test 2\n"); - - // test - if (verbose) fprintf(samtools_stdout, "BEGIN test 3\n"); - // reinit - trans_tbl_t tbl_3; - merged_hdr = init_merged_header(); - translate = setup_test_3(merged_hdr); - assert(translate); - if (verbose > 1) { - fprintf(samtools_stdout, "translate\n"); - dump_header(translate); - } - if (verbose) fprintf(samtools_stdout, "RUN test 3\n"); - trans_tbl_init(merged_hdr, translate, &tbl_3, false, false, true, NULL); - out = finish_merged_header(merged_hdr); - free_merged_header(merged_hdr); - if (verbose) fprintf(samtools_stdout, "END RUN test 3\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "translate\n"); - dump_header(translate); - fprintf(samtools_stdout, "out\n"); - dump_header(out); - } - if (check_test_3(translate, out, &tbl_3)) { - if (verbose) fprintf(samtools_stdout, "Test 3 : PASS\n"); - ++success; - } else { - if (verbose) fprintf(samtools_stdout, "Test 3 : FAIL\n"); - fprintf(samtools_stderr, "Test 3 : FAIL\n"); - ++failure; - } - // teardown - bam_hdr_destroy(translate); - bam_hdr_destroy(out); - trans_tbl_destroy(&tbl_3); - if (verbose) fprintf(samtools_stdout, "END test 3\n"); - - // test - if (verbose) fprintf(samtools_stdout, "BEGIN test 4\n"); - // reinit - trans_tbl_t tbl_4; - merged_hdr = init_merged_header(); - translate = setup_test_4(merged_hdr); - assert(translate); - if (verbose > 1) { - fprintf(samtools_stdout, "translate\n"); - dump_header(translate); - } - if (verbose) fprintf(samtools_stdout, "RUN test 4\n"); - trans_tbl_init(merged_hdr, translate, &tbl_4, false, false, true, NULL); - out = finish_merged_header(merged_hdr); - free_merged_header(merged_hdr); - if (verbose) fprintf(samtools_stdout, "END RUN test 4\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "translate\n"); - dump_header(translate); - fprintf(samtools_stdout, "out\n"); - dump_header(out); - } - if (check_test_4(translate, out, &tbl_4)) { - if (verbose) fprintf(samtools_stdout, "Test 4 : PASS\n"); - ++success; - } else { - if (verbose) fprintf(samtools_stdout, "Test 4 : FAIL\n"); - fprintf(samtools_stderr, "Test 4 : FAIL\n"); - ++failure; - } - // teardown - bam_hdr_destroy(translate); - bam_hdr_destroy(out); - trans_tbl_destroy(&tbl_4); - if (verbose) fprintf(samtools_stdout, "END test 4\n"); - - // test - if (verbose) fprintf(samtools_stdout, "BEGIN test 5\n"); - // reinit - trans_tbl_t tbl_5; - merged_hdr = init_merged_header(); - translate = setup_test_5(merged_hdr); - assert(translate); - if (verbose > 1) { - - fprintf(samtools_stdout, "translate\n"); - dump_header(translate); - } - if (verbose) fprintf(samtools_stdout, "RUN test 5\n"); - trans_tbl_init(merged_hdr, translate, &tbl_5, false, false, true, NULL); - out = finish_merged_header(merged_hdr); - free_merged_header(merged_hdr); - if (verbose) fprintf(samtools_stdout, "END RUN test 5\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "translate\n"); - dump_header(translate); - fprintf(samtools_stdout, "out\n"); - dump_header(out); - } - if (check_test_5(translate, out, &tbl_5)) { - if (verbose) fprintf(samtools_stdout, "Test 5 : PASS\n"); - ++success; - } else { - if (verbose) fprintf(samtools_stdout, "Test 5 : FAIL\n"); - fprintf(samtools_stderr, "Test 5 : FAIL\n"); - ++failure; - } - // teardown - bam_hdr_destroy(translate); - bam_hdr_destroy(out); - trans_tbl_destroy(&tbl_5); - if (verbose) fprintf(samtools_stdout, "END test 5\n"); - - // test - if (verbose) fprintf(samtools_stdout, "BEGIN test 6\n"); - // reinit - trans_tbl_t tbl_6; - merged_hdr = init_merged_header(); - translate = setup_test_6(merged_hdr); - assert(translate); - if (verbose > 1) { - fprintf(samtools_stdout, "translate\n"); - dump_header(translate); - } - if (verbose) fprintf(samtools_stdout, "RUN test 6\n"); - trans_tbl_init(merged_hdr, translate, &tbl_6, false, false, true, "filename"); - out = finish_merged_header(merged_hdr); - free_merged_header(merged_hdr); - if (verbose) fprintf(samtools_stdout, "END RUN test 6\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "translate\n"); - dump_header(translate); - fprintf(samtools_stdout, "out\n"); - dump_header(out); - } - if (check_test_6(translate, out, &tbl_6)) { - if (verbose) fprintf(samtools_stdout, "Test 6 : PASS\n"); - ++success; - } else { - if (verbose) fprintf(samtools_stdout, "Test 6 : FAIL\n"); - fprintf(samtools_stderr, "Test 6 : FAIL\n"); - ++failure; - } - // teardown - bam_hdr_destroy(translate); - bam_hdr_destroy(out); - trans_tbl_destroy(&tbl_6); - if (verbose) fprintf(samtools_stdout, "END test 6\n"); - - if (success == NUM_TESTS) { - return 0; - } else { - fprintf(samtools_stderr, "%d failures %d successes\n", failure, success); - return 1; - } -} diff --git a/samtools/test/split/test_count_rg.c b/samtools/test/split/test_count_rg.c deleted file mode 100644 index 4038f97..0000000 --- a/samtools/test/split/test_count_rg.c +++ /dev/null @@ -1,125 +0,0 @@ -/* test/split/test_count_rg.c -- split test cases. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_split.c" -#include "../test.h" -#include -#include - -void setup_test_1(bam_hdr_t** hdr_in) -{ - *hdr_in = bam_hdr_init(); - const char *test1 = - "@HD\tVN:1.4\n" - "@SQ\tSN:blah\n" - "@RG\tID:fish\n"; - (*hdr_in)->text = strdup(test1); - (*hdr_in)->l_text = strlen(test1); -} - -int main(int argc, char**argv) -{ - // test state - const int NUM_TESTS = 1; - int verbose = 0; - int success = 0; - int failure = 0; - - int getopt_char; - while ((getopt_char = getopt(argc, argv, "v")) != -1) { - switch (getopt_char) { - case 'v': - ++verbose; - break; - default: - printf( - "usage: test_count_rg [-v]\n\n" - " -v verbose output\n" - ); - break; - } - } - - - // Setup stderr redirect - kstring_t res = { 0, 0, NULL }; - FILE* orig_stderr = fdopen(dup(STDERR_FILENO), "a"); // Save stderr - char* tempfname = (optind < argc)? argv[optind] : "test_count_rg.tmp"; - FILE* check = NULL; - - // setup - if (verbose) printf("BEGIN test 1\n"); // TID test - bam_hdr_t* hdr1; - size_t count; - char** output; - setup_test_1(&hdr1); - if (verbose > 1) { - printf("hdr1\n"); - dump_hdr(hdr1); - } - if (verbose) printf("RUN test 1\n"); - - // test - xfreopen(tempfname, "w", stderr); // Redirect stderr to pipe - bool result_1 = count_RG(hdr1, &count, &output); - fclose(stderr); - - if (verbose) printf("END RUN test 1\n"); - if (verbose > 1) { - printf("b\n"); - dump_hdr(hdr1); - } - - // check result - check = fopen(tempfname, "r"); - if (result_1 && count == 1 && !strcmp(output[0], "fish") - && kgetline(&res, (kgets_func *)fgets, check) < 0 - && (feof(check) || res.l == 0)) { - ++success; - } else { - ++failure; - if (verbose) printf("FAIL test 1\n"); - } - fclose(check); - - // teardown - int i; - for (i = 0; i < count; i++){ - free(output[i]); - } - free(output); - bam_hdr_destroy(hdr1); - if (verbose) printf("END test 1\n"); - - // Cleanup - free(res.s); - remove(tempfname); - if (failure > 0) - fprintf(orig_stderr, "%d failures %d successes\n", failure, success); - fclose(orig_stderr); - - return (success == NUM_TESTS)? EXIT_SUCCESS : EXIT_FAILURE; -} diff --git a/samtools/test/split/test_count_rg.c.pysam.c b/samtools/test/split/test_count_rg.c.pysam.c deleted file mode 100644 index c6f7fef..0000000 --- a/samtools/test/split/test_count_rg.c.pysam.c +++ /dev/null @@ -1,127 +0,0 @@ -#include "samtools.pysam.h" - -/* test/split/test_count_rg.c -- split test cases. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_split.c" -#include "../test.h" -#include -#include - -void setup_test_1(bam_hdr_t** hdr_in) -{ - *hdr_in = bam_hdr_init(); - const char *test1 = - "@HD\tVN:1.4\n" - "@SQ\tSN:blah\n" - "@RG\tID:fish\n"; - (*hdr_in)->text = strdup(test1); - (*hdr_in)->l_text = strlen(test1); -} - -int samtools_test_count_rg_main(int argc, char**argv) -{ - // test state - const int NUM_TESTS = 1; - int verbose = 0; - int success = 0; - int failure = 0; - - int getopt_char; - while ((getopt_char = getopt(argc, argv, "v")) != -1) { - switch (getopt_char) { - case 'v': - ++verbose; - break; - default: - fprintf(samtools_stdout, - "usage: test_count_rg [-v]\n\n" - " -v verbose output\n" - ); - break; - } - } - - - // Setup samtools_stderr redirect - kstring_t res = { 0, 0, NULL }; - FILE* orig_samtools_stderr = fdopen(dup(STDERR_FILENO), "a"); // Save samtools_stderr - char* tempfname = (optind < argc)? argv[optind] : "test_count_rg.tmp"; - FILE* check = NULL; - - // setup - if (verbose) fprintf(samtools_stdout, "BEGIN test 1\n"); // TID test - bam_hdr_t* hdr1; - size_t count; - char** output; - setup_test_1(&hdr1); - if (verbose > 1) { - fprintf(samtools_stdout, "hdr1\n"); - dump_hdr(hdr1); - } - if (verbose) fprintf(samtools_stdout, "RUN test 1\n"); - - // test - xfreopen(tempfname, "w", samtools_stderr); // Redirect samtools_stderr to pipe - bool result_1 = count_RG(hdr1, &count, &output); - fclose(samtools_stderr); - - if (verbose) fprintf(samtools_stdout, "END RUN test 1\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "b\n"); - dump_hdr(hdr1); - } - - // check result - check = fopen(tempfname, "r"); - if (result_1 && count == 1 && !strcmp(output[0], "fish") - && kgetline(&res, (kgets_func *)fgets, check) < 0 - && (feof(check) || res.l == 0)) { - ++success; - } else { - ++failure; - if (verbose) fprintf(samtools_stdout, "FAIL test 1\n"); - } - fclose(check); - - // teardown - int i; - for (i = 0; i < count; i++){ - free(output[i]); - } - free(output); - bam_hdr_destroy(hdr1); - if (verbose) fprintf(samtools_stdout, "END test 1\n"); - - // Cleanup - free(res.s); - remove(tempfname); - if (failure > 0) - fprintf(orig_samtools_stderr, "%d failures %d successes\n", failure, success); - fclose(orig_samtools_stderr); - - return (success == NUM_TESTS)? EXIT_SUCCESS : EXIT_FAILURE; -} diff --git a/samtools/test/split/test_expand_format_string.c b/samtools/test/split/test_expand_format_string.c deleted file mode 100644 index 7c90b62..0000000 --- a/samtools/test/split/test_expand_format_string.c +++ /dev/null @@ -1,125 +0,0 @@ -/* test/split/test_expand_format_string.c -- split format string test cases. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_split.c" -#include "../test.h" -#include -#include - -void setup_test_1(bam_hdr_t** hdr_in) -{ - *hdr_in = bam_hdr_init(); - const char *test1 = - "@HD\tVN:1.4\n" - "@SQ\tSN:blah\n" - "@RG\tID:fish\n"; - (*hdr_in)->text = strdup(test1); - (*hdr_in)->l_text = strlen(test1); -} - -int main(int argc, char**argv) -{ - // test state - const int NUM_TESTS = 1; - int verbose = 0; - int success = 0; - int failure = 0; - - int getopt_char; - while ((getopt_char = getopt(argc, argv, "v")) != -1) { - switch (getopt_char) { - case 'v': - ++verbose; - break; - default: - printf( - "usage: test_expand_format_string [-v]\n\n" - " -v verbose output\n" - ); - break; - } - } - - - // Setup stderr redirect - kstring_t res = { 0, 0, NULL }; - FILE* orig_stderr = fdopen(dup(STDERR_FILENO), "a"); // Save stderr - char* tempfname = (optind < argc)? argv[optind] : "test_expand_format_string.tmp"; - FILE* check = NULL; - - // setup - if (verbose) printf("BEGIN test 1\n"); // default format string test - const char* format_string_1 = "%*_%#.bam"; - const char* basename_1 = "basename"; - const char* rg_id_1 = "1#2.3"; - const int rg_idx_1 = 4; - if (verbose > 1) { - printf("format_string:%s\n" - "basename:%s\n" - "rg_id:%s\n" - "rg_idx:%d\n", format_string_1, basename_1, rg_id_1, rg_idx_1); - } - if (verbose) printf("RUN test 1\n"); - - // test - xfreopen(tempfname, "w", stderr); // Redirect stderr to pipe - char* output_1 = expand_format_string(format_string_1, basename_1, rg_id_1, rg_idx_1, NULL); - fclose(stderr); - - if (verbose) printf("END RUN test 1\n"); - if (verbose > 1) { - printf("format_string:%s\n" - "basename:%s\n" - "rg_id:%s\n" - "rg_idx:%d\n", format_string_1, basename_1, rg_id_1, rg_idx_1); - } - - // check result - res.l = 0; - check = fopen(tempfname, "r"); - if (output_1 != NULL && !strcmp(output_1, "basename_4.bam") - && kgetline(&res, (kgets_func *)fgets, check) < 0 - && (feof(check) || res.l == 0)) { - ++success; - } else { - ++failure; - if (verbose) printf("FAIL test 1\n"); - } - fclose(check); - - // teardown - free(output_1); - if (verbose) printf("END test 1\n"); - - // Cleanup test harness - free(res.s); - remove(tempfname); - if (failure > 0) - fprintf(orig_stderr, "%d failures %d successes\n", failure, success); - fclose(orig_stderr); - - return (success == NUM_TESTS)? EXIT_SUCCESS : EXIT_FAILURE; -} diff --git a/samtools/test/split/test_expand_format_string.c.pysam.c b/samtools/test/split/test_expand_format_string.c.pysam.c deleted file mode 100644 index 1583818..0000000 --- a/samtools/test/split/test_expand_format_string.c.pysam.c +++ /dev/null @@ -1,127 +0,0 @@ -#include "samtools.pysam.h" - -/* test/split/test_expand_format_string.c -- split format string test cases. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_split.c" -#include "../test.h" -#include -#include - -void setup_test_1(bam_hdr_t** hdr_in) -{ - *hdr_in = bam_hdr_init(); - const char *test1 = - "@HD\tVN:1.4\n" - "@SQ\tSN:blah\n" - "@RG\tID:fish\n"; - (*hdr_in)->text = strdup(test1); - (*hdr_in)->l_text = strlen(test1); -} - -int samtools_test_expand_format_string_main(int argc, char**argv) -{ - // test state - const int NUM_TESTS = 1; - int verbose = 0; - int success = 0; - int failure = 0; - - int getopt_char; - while ((getopt_char = getopt(argc, argv, "v")) != -1) { - switch (getopt_char) { - case 'v': - ++verbose; - break; - default: - fprintf(samtools_stdout, - "usage: test_expand_format_string [-v]\n\n" - " -v verbose output\n" - ); - break; - } - } - - - // Setup samtools_stderr redirect - kstring_t res = { 0, 0, NULL }; - FILE* orig_samtools_stderr = fdopen(dup(STDERR_FILENO), "a"); // Save samtools_stderr - char* tempfname = (optind < argc)? argv[optind] : "test_expand_format_string.tmp"; - FILE* check = NULL; - - // setup - if (verbose) fprintf(samtools_stdout, "BEGIN test 1\n"); // default format string test - const char* format_string_1 = "%*_%#.bam"; - const char* basename_1 = "basename"; - const char* rg_id_1 = "1#2.3"; - const int rg_idx_1 = 4; - if (verbose > 1) { - fprintf(samtools_stdout, "format_string:%s\n" - "basename:%s\n" - "rg_id:%s\n" - "rg_idx:%d\n", format_string_1, basename_1, rg_id_1, rg_idx_1); - } - if (verbose) fprintf(samtools_stdout, "RUN test 1\n"); - - // test - xfreopen(tempfname, "w", samtools_stderr); // Redirect samtools_stderr to pipe - char* output_1 = expand_format_string(format_string_1, basename_1, rg_id_1, rg_idx_1, NULL); - fclose(samtools_stderr); - - if (verbose) fprintf(samtools_stdout, "END RUN test 1\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "format_string:%s\n" - "basename:%s\n" - "rg_id:%s\n" - "rg_idx:%d\n", format_string_1, basename_1, rg_id_1, rg_idx_1); - } - - // check result - res.l = 0; - check = fopen(tempfname, "r"); - if (output_1 != NULL && !strcmp(output_1, "basename_4.bam") - && kgetline(&res, (kgets_func *)fgets, check) < 0 - && (feof(check) || res.l == 0)) { - ++success; - } else { - ++failure; - if (verbose) fprintf(samtools_stdout, "FAIL test 1\n"); - } - fclose(check); - - // teardown - free(output_1); - if (verbose) fprintf(samtools_stdout, "END test 1\n"); - - // Cleanup test harness - free(res.s); - remove(tempfname); - if (failure > 0) - fprintf(orig_samtools_stderr, "%d failures %d successes\n", failure, success); - fclose(orig_samtools_stderr); - - return (success == NUM_TESTS)? EXIT_SUCCESS : EXIT_FAILURE; -} diff --git a/samtools/test/split/test_filter_header_rg.c b/samtools/test/split/test_filter_header_rg.c deleted file mode 100644 index cccf0e9..0000000 --- a/samtools/test/split/test_filter_header_rg.c +++ /dev/null @@ -1,199 +0,0 @@ -/* test/split/test_filter_header_rg.c -- split test cases. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_split.c" -#include "../test.h" -#include - -void setup_test_1(bam_hdr_t** hdr_in) -{ - *hdr_in = bam_hdr_init(); - const char *test1 = - "@HD\tVN:1.4\n" - "@SQ\tSN:blah\n" - "@RG\tID:fish\n"; - (*hdr_in)->text = strdup(test1); - (*hdr_in)->l_text = strlen(test1); -} - -bool check_test_1(const bam_hdr_t* hdr) { - const char *test1_res = - "@HD\tVN:1.4\n" - "@SQ\tSN:blah\n" - "@PG\tID:samtools\tPN:samtools\tVN:x.y.test\tCL:test_filter_header_rg foo bar baz\n"; - - if (strcmp(hdr->text, test1_res)) { - return false; - } - return true; -} - -void setup_test_2(bam_hdr_t** hdr_in) -{ - *hdr_in = bam_hdr_init(); - const char *test2 = - "@HD\tVN:1.4\n" - "@SQ\tSN:blah\n" - "@RG\tID:fish\n"; - (*hdr_in)->text = strdup(test2); - (*hdr_in)->l_text = strlen(test2); -} - -bool check_test_2(const bam_hdr_t* hdr) { - const char *test2_res = - "@HD\tVN:1.4\n" - "@SQ\tSN:blah\n" - "@RG\tID:fish\n" - "@PG\tID:samtools\tPN:samtools\tVN:x.y.test\tCL:test_filter_header_rg foo bar baz\n"; - - if (strcmp(hdr->text, test2_res)) { - return false; - } - return true; -} - -int main(int argc, char *argv[]) -{ - // test state - const int NUM_TESTS = 2; - int verbose = 0; - int success = 0; - int failure = 0; - - int getopt_char; - char *test_argv[] = { "test_filter_header_rg", "foo\tbar", "baz" }; - char *arg_list = stringify_argv(3, test_argv); - while ((getopt_char = getopt(argc, argv, "v")) != -1) { - switch (getopt_char) { - case 'v': - ++verbose; - break; - default: - printf( - "usage: test_filter_header_rg [-v]\n\n" - " -v verbose output\n" - ); - break; - } - } - - - // Setup stderr redirect - kstring_t res = { 0, 0, NULL }; - FILE* orig_stderr = fdopen(dup(STDERR_FILENO), "a"); // Save stderr - char* tempfname = (optind < argc)? argv[optind] : "test_count_rg.tmp"; - FILE* check = NULL; - - // setup - if (verbose) printf("BEGIN test 1\n"); // test eliminating a tag that isn't there - bam_hdr_t* hdr1; - const char* id_to_keep_1 = "1#2.3"; - setup_test_1(&hdr1); - if (verbose > 1) { - printf("hdr1\n"); - dump_hdr(hdr1); - } - if (verbose) printf("RUN test 1\n"); - - // test - xfreopen(tempfname, "w", stderr); // Redirect stderr to pipe - bool result_1 = filter_header_rg(hdr1, id_to_keep_1, arg_list); - fclose(stderr); - - if (verbose) printf("END RUN test 1\n"); - if (verbose > 1) { - printf("hdr1\n"); - dump_hdr(hdr1); - } - - // check result - res.l = 0; - check = fopen(tempfname, "r"); - if ( result_1 - && check_test_1(hdr1) - && kgetline(&res, (kgets_func *)fgets, check) < 0 - && (feof(check) || res.l == 0)) { - ++success; - } else { - ++failure; - if (verbose) printf("FAIL test 1\n"); - } - fclose(check); - - // teardown - bam_hdr_destroy(hdr1); - if (verbose) printf("END test 1\n"); - - if (verbose) printf("BEGIN test 2\n"); // test eliminating a tag that is there - bam_hdr_t* hdr2; - const char* id_to_keep_2 = "fish"; - setup_test_2(&hdr2); - if (verbose > 1) { - printf("hdr2\n"); - dump_hdr(hdr2); - } - if (verbose) printf("RUN test 2\n"); - - // test - xfreopen(tempfname, "w", stderr); // Redirect stderr to pipe - bool result_2 = filter_header_rg(hdr2, id_to_keep_2, arg_list); - fclose(stderr); - - if (verbose) printf("END RUN test 2\n"); - if (verbose > 1) { - printf("hdr2\n"); - dump_hdr(hdr2); - } - - // check result - res.l = 0; - check = fopen(tempfname, "r"); - if ( result_2 - && check_test_2(hdr2) - && kgetline(&res, (kgets_func *)fgets, check) < 0 - && (feof(check) || res.l == 0)) { - ++success; - } else { - ++failure; - if (verbose) printf("FAIL test 2\n"); - } - fclose(check); - - // teardown - bam_hdr_destroy(hdr2); - if (verbose) printf("END test 2\n"); - - - // Cleanup - free(res.s); - free(arg_list); - remove(tempfname); - if (failure > 0) - fprintf(orig_stderr, "%d failures %d successes\n", failure, success); - fclose(orig_stderr); - - return (success == NUM_TESTS)? EXIT_SUCCESS : EXIT_FAILURE; -} diff --git a/samtools/test/split/test_filter_header_rg.c.pysam.c b/samtools/test/split/test_filter_header_rg.c.pysam.c deleted file mode 100644 index 18e3adf..0000000 --- a/samtools/test/split/test_filter_header_rg.c.pysam.c +++ /dev/null @@ -1,201 +0,0 @@ -#include "samtools.pysam.h" - -/* test/split/test_filter_header_rg.c -- split test cases. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_split.c" -#include "../test.h" -#include - -void setup_test_1(bam_hdr_t** hdr_in) -{ - *hdr_in = bam_hdr_init(); - const char *test1 = - "@HD\tVN:1.4\n" - "@SQ\tSN:blah\n" - "@RG\tID:fish\n"; - (*hdr_in)->text = strdup(test1); - (*hdr_in)->l_text = strlen(test1); -} - -bool check_test_1(const bam_hdr_t* hdr) { - const char *test1_res = - "@HD\tVN:1.4\n" - "@SQ\tSN:blah\n" - "@PG\tID:samtools\tPN:samtools\tVN:x.y.test\tCL:test_filter_header_rg foo bar baz\n"; - - if (strcmp(hdr->text, test1_res)) { - return false; - } - return true; -} - -void setup_test_2(bam_hdr_t** hdr_in) -{ - *hdr_in = bam_hdr_init(); - const char *test2 = - "@HD\tVN:1.4\n" - "@SQ\tSN:blah\n" - "@RG\tID:fish\n"; - (*hdr_in)->text = strdup(test2); - (*hdr_in)->l_text = strlen(test2); -} - -bool check_test_2(const bam_hdr_t* hdr) { - const char *test2_res = - "@HD\tVN:1.4\n" - "@SQ\tSN:blah\n" - "@RG\tID:fish\n" - "@PG\tID:samtools\tPN:samtools\tVN:x.y.test\tCL:test_filter_header_rg foo bar baz\n"; - - if (strcmp(hdr->text, test2_res)) { - return false; - } - return true; -} - -int samtools_test_filter_header_rg_main(int argc, char *argv[]) -{ - // test state - const int NUM_TESTS = 2; - int verbose = 0; - int success = 0; - int failure = 0; - - int getopt_char; - char *test_argv[] = { "test_filter_header_rg", "foo\tbar", "baz" }; - char *arg_list = stringify_argv(3, test_argv); - while ((getopt_char = getopt(argc, argv, "v")) != -1) { - switch (getopt_char) { - case 'v': - ++verbose; - break; - default: - fprintf(samtools_stdout, - "usage: test_filter_header_rg [-v]\n\n" - " -v verbose output\n" - ); - break; - } - } - - - // Setup samtools_stderr redirect - kstring_t res = { 0, 0, NULL }; - FILE* orig_samtools_stderr = fdopen(dup(STDERR_FILENO), "a"); // Save samtools_stderr - char* tempfname = (optind < argc)? argv[optind] : "test_count_rg.tmp"; - FILE* check = NULL; - - // setup - if (verbose) fprintf(samtools_stdout, "BEGIN test 1\n"); // test eliminating a tag that isn't there - bam_hdr_t* hdr1; - const char* id_to_keep_1 = "1#2.3"; - setup_test_1(&hdr1); - if (verbose > 1) { - fprintf(samtools_stdout, "hdr1\n"); - dump_hdr(hdr1); - } - if (verbose) fprintf(samtools_stdout, "RUN test 1\n"); - - // test - xfreopen(tempfname, "w", samtools_stderr); // Redirect samtools_stderr to pipe - bool result_1 = filter_header_rg(hdr1, id_to_keep_1, arg_list); - fclose(samtools_stderr); - - if (verbose) fprintf(samtools_stdout, "END RUN test 1\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "hdr1\n"); - dump_hdr(hdr1); - } - - // check result - res.l = 0; - check = fopen(tempfname, "r"); - if ( result_1 - && check_test_1(hdr1) - && kgetline(&res, (kgets_func *)fgets, check) < 0 - && (feof(check) || res.l == 0)) { - ++success; - } else { - ++failure; - if (verbose) fprintf(samtools_stdout, "FAIL test 1\n"); - } - fclose(check); - - // teardown - bam_hdr_destroy(hdr1); - if (verbose) fprintf(samtools_stdout, "END test 1\n"); - - if (verbose) fprintf(samtools_stdout, "BEGIN test 2\n"); // test eliminating a tag that is there - bam_hdr_t* hdr2; - const char* id_to_keep_2 = "fish"; - setup_test_2(&hdr2); - if (verbose > 1) { - fprintf(samtools_stdout, "hdr2\n"); - dump_hdr(hdr2); - } - if (verbose) fprintf(samtools_stdout, "RUN test 2\n"); - - // test - xfreopen(tempfname, "w", samtools_stderr); // Redirect samtools_stderr to pipe - bool result_2 = filter_header_rg(hdr2, id_to_keep_2, arg_list); - fclose(samtools_stderr); - - if (verbose) fprintf(samtools_stdout, "END RUN test 2\n"); - if (verbose > 1) { - fprintf(samtools_stdout, "hdr2\n"); - dump_hdr(hdr2); - } - - // check result - res.l = 0; - check = fopen(tempfname, "r"); - if ( result_2 - && check_test_2(hdr2) - && kgetline(&res, (kgets_func *)fgets, check) < 0 - && (feof(check) || res.l == 0)) { - ++success; - } else { - ++failure; - if (verbose) fprintf(samtools_stdout, "FAIL test 2\n"); - } - fclose(check); - - // teardown - bam_hdr_destroy(hdr2); - if (verbose) fprintf(samtools_stdout, "END test 2\n"); - - - // Cleanup - free(res.s); - free(arg_list); - remove(tempfname); - if (failure > 0) - fprintf(orig_samtools_stderr, "%d failures %d successes\n", failure, success); - fclose(orig_samtools_stderr); - - return (success == NUM_TESTS)? EXIT_SUCCESS : EXIT_FAILURE; -} diff --git a/samtools/test/split/test_parse_args.c b/samtools/test/split/test_parse_args.c deleted file mode 100644 index 85a196a..0000000 --- a/samtools/test/split/test_parse_args.c +++ /dev/null @@ -1,217 +0,0 @@ -/* test/split/test_parse_args.c -- split test cases. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_split.c" -#include "../test.h" -#include -#include - -void setup_test_1(int* argc, char*** argv) -{ - *argc = 1; - *argv = (char**)calloc(sizeof(char*), 1); - (*argv)[0] = strdup("prog_name"); -} - -bool check_test_1(const parsed_opts_t* opts) { - if ( opts->merged_input_name != NULL - || opts->unaccounted_header_name != NULL - || opts->unaccounted_name != NULL - || strcmp(opts->output_format_string,"%*_%#.%.") - || opts->verbose == true ) - return false; - return true; -} - -void setup_test_2(int* argc, char*** argv) -{ - *argc = 2; - *argv = (char**)calloc(sizeof(char*), 2); - (*argv)[0] = strdup("prog_name"); - (*argv)[1] = strdup("merged.bam"); -} - -bool check_test_2(const parsed_opts_t* opts) { - if ( opts->merged_input_name == NULL - || strcmp(opts->merged_input_name, "merged.bam") - || opts->unaccounted_header_name != NULL - || opts->unaccounted_name != NULL - || strcmp(opts->output_format_string,"%*_%#.%.") - || opts->verbose == true ) - return false; - return true; -} - -int main(int argc, char**argv) -{ - // test state - const int NUM_TESTS = 2; - int verbose = 0; - int success = 0; - int failure = 0; - - int getopt_char; - while ((getopt_char = getopt(argc, argv, "v")) != -1) { - switch (getopt_char) { - case 'v': - ++verbose; - break; - default: - printf( - "usage: test_parse_args [-v]\n\n" - " -v verbose output\n" - ); - break; - } - } - - // Setup stdout and stderr redirect - kstring_t res_stdout = { 0, 0, NULL }; - kstring_t res_stderr = { 0, 0, NULL }; - FILE* orig_stdout = fdopen(dup(STDOUT_FILENO), "a"); // Save stderr - FILE* orig_stderr = fdopen(dup(STDERR_FILENO), "a"); // Save stderr - char* tempfname_stdout = (optind < argc)? argv[optind] : "test_parse_args.tmp.o"; - char* tempfname_stderr = (optind < argc)? argv[optind] : "test_parse_args.tmp.e"; - FILE* check_stdout = NULL; - FILE* check_stderr = NULL; - - // Cleanup getopt - optind = 1; - - // setup - if (verbose) fprintf(orig_stdout,"BEGIN test 1\n"); // test eliminating a tag that isn't there - int argc_1; - char** argv_1; - setup_test_1(&argc_1, &argv_1); - if (verbose > 1) { - fprintf(orig_stdout, "argc: %d\n", argc_1); - } - if (verbose) fprintf(orig_stdout,"RUN test 1\n"); - - // test - xfreopen(tempfname_stdout, "w", stdout); // Redirect stdout to pipe - xfreopen(tempfname_stderr, "w", stderr); // Redirect stderr to pipe - parsed_opts_t* result_1 = parse_args(argc_1, argv_1); - fclose(stdout); - fclose(stderr); - - if (verbose) fprintf(orig_stdout, "END RUN test 1\n"); - if (verbose > 1) { - fprintf(orig_stdout, "argc: %d\n", argc_1); - } - - // check result - res_stdout.l = res_stderr.l = 0; - check_stdout = fopen(tempfname_stdout, "r"); - check_stderr = fopen(tempfname_stderr, "r"); - if ( !result_1 - && kgetline(&res_stdout, (kgets_func *)fgets, check_stdout) >= 0 - && !feof(check_stdout) - && res_stdout.l > 0 - && kgetline(&res_stderr, (kgets_func *)fgets, check_stderr) < 0 - && (feof(check_stderr) || res_stderr.l == 0)) { - ++success; - } else { - ++failure; - if (verbose) fprintf(orig_stdout, "FAIL test 1\n"); - } - fclose(check_stderr); - fclose(check_stdout); - - // teardown - cleanup_opts(result_1); - int i = 0; - for (i = 0; i < argc_1; ++i) { - free(argv_1[i]); - } - free(argv_1); - if (verbose) fprintf(orig_stdout, "END test 1\n"); - - // Cleanup getopt - optind = 1; - - if (verbose) fprintf(orig_stdout, "BEGIN test 2\n"); // test eliminating a tag that is there - int argc_2; - char** argv_2; - setup_test_2(&argc_2, &argv_2); - if (verbose > 1) { - fprintf(orig_stdout, "argc: %d\n", argc_2); - } - if (verbose) fprintf(orig_stdout, "RUN test 2\n"); - - // test - xfreopen(tempfname_stdout, "w", stdout); // Redirect stdout to pipe - xfreopen(tempfname_stderr, "w", stderr); // Redirect stderr to pipe - parsed_opts_t* result_2 = parse_args(argc_2, argv_2); - fclose(stdout); - fclose(stderr); - - if (verbose) fprintf(orig_stdout, "END RUN test 2\n"); - if (verbose > 1) { - fprintf(orig_stdout, "argc: %d\n", argc_2); - } - - // check result - res_stdout.l = res_stderr.l = 0; - check_stdout = fopen(tempfname_stdout, "r"); - check_stderr = fopen(tempfname_stderr, "r"); - if ( result_2 - && check_test_2(result_2) - && kgetline(&res_stdout, (kgets_func *)fgets, check_stdout) < 0 - && (feof(check_stdout) || res_stdout.l == 0) - && kgetline(&res_stderr, (kgets_func *)fgets, check_stderr) < 0 - && (feof(check_stderr) || res_stderr.l == 0)) { - ++success; - } else { - ++failure; - if (verbose) fprintf(orig_stdout, "FAIL test 2\n"); - } - fclose(check_stdout); - fclose(check_stderr); - - // teardown - cleanup_opts(result_2); - int j = 0; - for (j = 0; j < argc_2; ++j) { - free(argv_2[j]); - } - free(argv_2); - - if (verbose) fprintf(orig_stdout, "END test 2\n"); - - - // Cleanup - free(res_stdout.s); - free(res_stderr.s); - remove(tempfname_stdout); - remove(tempfname_stderr); - fclose(orig_stdout); - if (failure > 0) - fprintf(orig_stderr, "%d failures %d successes\n", failure, success); - fclose(orig_stderr); - - return (success == NUM_TESTS)? EXIT_SUCCESS : EXIT_FAILURE; -} diff --git a/samtools/test/split/test_parse_args.c.pysam.c b/samtools/test/split/test_parse_args.c.pysam.c deleted file mode 100644 index 01d9bcb..0000000 --- a/samtools/test/split/test_parse_args.c.pysam.c +++ /dev/null @@ -1,219 +0,0 @@ -#include "samtools.pysam.h" - -/* test/split/test_parse_args.c -- split test cases. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_split.c" -#include "../test.h" -#include -#include - -void setup_test_1(int* argc, char*** argv) -{ - *argc = 1; - *argv = (char**)calloc(sizeof(char*), 1); - (*argv)[0] = strdup("prog_name"); -} - -bool check_test_1(const parsed_opts_t* opts) { - if ( opts->merged_input_name != NULL - || opts->unaccounted_header_name != NULL - || opts->unaccounted_name != NULL - || strcmp(opts->output_format_string,"%*_%#.%.") - || opts->verbose == true ) - return false; - return true; -} - -void setup_test_2(int* argc, char*** argv) -{ - *argc = 2; - *argv = (char**)calloc(sizeof(char*), 2); - (*argv)[0] = strdup("prog_name"); - (*argv)[1] = strdup("merged.bam"); -} - -bool check_test_2(const parsed_opts_t* opts) { - if ( opts->merged_input_name == NULL - || strcmp(opts->merged_input_name, "merged.bam") - || opts->unaccounted_header_name != NULL - || opts->unaccounted_name != NULL - || strcmp(opts->output_format_string,"%*_%#.%.") - || opts->verbose == true ) - return false; - return true; -} - -int samtools_test_parse_args_main(int argc, char**argv) -{ - // test state - const int NUM_TESTS = 2; - int verbose = 0; - int success = 0; - int failure = 0; - - int getopt_char; - while ((getopt_char = getopt(argc, argv, "v")) != -1) { - switch (getopt_char) { - case 'v': - ++verbose; - break; - default: - fprintf(samtools_stdout, - "usage: test_parse_args [-v]\n\n" - " -v verbose output\n" - ); - break; - } - } - - // Setup samtools_stdout and samtools_stderr redirect - kstring_t res_samtools_stdout = { 0, 0, NULL }; - kstring_t res_samtools_stderr = { 0, 0, NULL }; - FILE* orig_samtools_stdout = fdopen(dup(STDOUT_FILENO), "a"); // Save samtools_stderr - FILE* orig_samtools_stderr = fdopen(dup(STDERR_FILENO), "a"); // Save samtools_stderr - char* tempfname_samtools_stdout = (optind < argc)? argv[optind] : "test_parse_args.tmp.o"; - char* tempfname_samtools_stderr = (optind < argc)? argv[optind] : "test_parse_args.tmp.e"; - FILE* check_samtools_stdout = NULL; - FILE* check_samtools_stderr = NULL; - - // Cleanup getopt - optind = 1; - - // setup - if (verbose) fprintf(orig_samtools_stdout,"BEGIN test 1\n"); // test eliminating a tag that isn't there - int argc_1; - char** argv_1; - setup_test_1(&argc_1, &argv_1); - if (verbose > 1) { - fprintf(orig_samtools_stdout, "argc: %d\n", argc_1); - } - if (verbose) fprintf(orig_samtools_stdout,"RUN test 1\n"); - - // test - xfreopen(tempfname_samtools_stdout, "w", samtools_stdout); // Redirect samtools_stdout to pipe - xfreopen(tempfname_samtools_stderr, "w", samtools_stderr); // Redirect samtools_stderr to pipe - parsed_opts_t* result_1 = parse_args(argc_1, argv_1); - fclose(samtools_stdout); - fclose(samtools_stderr); - - if (verbose) fprintf(orig_samtools_stdout, "END RUN test 1\n"); - if (verbose > 1) { - fprintf(orig_samtools_stdout, "argc: %d\n", argc_1); - } - - // check result - res_samtools_stdout.l = res_samtools_stderr.l = 0; - check_samtools_stdout = fopen(tempfname_samtools_stdout, "r"); - check_samtools_stderr = fopen(tempfname_samtools_stderr, "r"); - if ( !result_1 - && kgetline(&res_samtools_stdout, (kgets_func *)fgets, check_samtools_stdout) >= 0 - && !feof(check_samtools_stdout) - && res_samtools_stdout.l > 0 - && kgetline(&res_samtools_stderr, (kgets_func *)fgets, check_samtools_stderr) < 0 - && (feof(check_samtools_stderr) || res_samtools_stderr.l == 0)) { - ++success; - } else { - ++failure; - if (verbose) fprintf(orig_samtools_stdout, "FAIL test 1\n"); - } - fclose(check_samtools_stderr); - fclose(check_samtools_stdout); - - // teardown - cleanup_opts(result_1); - int i = 0; - for (i = 0; i < argc_1; ++i) { - free(argv_1[i]); - } - free(argv_1); - if (verbose) fprintf(orig_samtools_stdout, "END test 1\n"); - - // Cleanup getopt - optind = 1; - - if (verbose) fprintf(orig_samtools_stdout, "BEGIN test 2\n"); // test eliminating a tag that is there - int argc_2; - char** argv_2; - setup_test_2(&argc_2, &argv_2); - if (verbose > 1) { - fprintf(orig_samtools_stdout, "argc: %d\n", argc_2); - } - if (verbose) fprintf(orig_samtools_stdout, "RUN test 2\n"); - - // test - xfreopen(tempfname_samtools_stdout, "w", samtools_stdout); // Redirect samtools_stdout to pipe - xfreopen(tempfname_samtools_stderr, "w", samtools_stderr); // Redirect samtools_stderr to pipe - parsed_opts_t* result_2 = parse_args(argc_2, argv_2); - fclose(samtools_stdout); - fclose(samtools_stderr); - - if (verbose) fprintf(orig_samtools_stdout, "END RUN test 2\n"); - if (verbose > 1) { - fprintf(orig_samtools_stdout, "argc: %d\n", argc_2); - } - - // check result - res_samtools_stdout.l = res_samtools_stderr.l = 0; - check_samtools_stdout = fopen(tempfname_samtools_stdout, "r"); - check_samtools_stderr = fopen(tempfname_samtools_stderr, "r"); - if ( result_2 - && check_test_2(result_2) - && kgetline(&res_samtools_stdout, (kgets_func *)fgets, check_samtools_stdout) < 0 - && (feof(check_samtools_stdout) || res_samtools_stdout.l == 0) - && kgetline(&res_samtools_stderr, (kgets_func *)fgets, check_samtools_stderr) < 0 - && (feof(check_samtools_stderr) || res_samtools_stderr.l == 0)) { - ++success; - } else { - ++failure; - if (verbose) fprintf(orig_samtools_stdout, "FAIL test 2\n"); - } - fclose(check_samtools_stdout); - fclose(check_samtools_stderr); - - // teardown - cleanup_opts(result_2); - int j = 0; - for (j = 0; j < argc_2; ++j) { - free(argv_2[j]); - } - free(argv_2); - - if (verbose) fprintf(orig_samtools_stdout, "END test 2\n"); - - - // Cleanup - free(res_samtools_stdout.s); - free(res_samtools_stderr.s); - remove(tempfname_samtools_stdout); - remove(tempfname_samtools_stderr); - fclose(orig_samtools_stdout); - if (failure > 0) - fprintf(orig_samtools_stderr, "%d failures %d successes\n", failure, success); - fclose(orig_samtools_stderr); - - return (success == NUM_TESTS)? EXIT_SUCCESS : EXIT_FAILURE; -} diff --git a/samtools/test/test.c b/samtools/test/test.c deleted file mode 100644 index fb0b549..0000000 --- a/samtools/test/test.c +++ /dev/null @@ -1,61 +0,0 @@ -/* test/test.c -- test harness utility routines. - - Copyright (C) 2014, 2016 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include -#include -#include -#include -#include - -#include "test.h" - -void xfreopen(const char *path, const char *mode, FILE *stream) -{ - if (freopen(path, mode, stream) == NULL) { - fprintf(stderr, __FILE__": error reopening %s: %s\n", - path, strerror(errno)); - exit(2); - } -} - -void dump_hdr(const bam_hdr_t* hdr) -{ - printf("n_targets: %d\n", hdr->n_targets); - printf("ignore_sam_err: %d\n", hdr->ignore_sam_err); - printf("l_text: %u\n", hdr->l_text); - printf("idx\ttarget_len\ttarget_name:\n"); - int32_t target; - for (target = 0; target < hdr->n_targets; ++target) { - printf("%d\t%u\t\"%s\"\n", target, hdr->target_len[target], hdr->target_name[target]); - } - printf("text: \"%s\"\n", hdr->text); -} - -// For tests, just return a constant that can be embedded in expected output. -const char *samtools_version(void) -{ - return "x.y.test"; -} diff --git a/samtools/test/test.c.pysam.c b/samtools/test/test.c.pysam.c deleted file mode 100644 index cd41889..0000000 --- a/samtools/test/test.c.pysam.c +++ /dev/null @@ -1,63 +0,0 @@ -#include "samtools.pysam.h" - -/* test/test.c -- test harness utility routines. - - Copyright (C) 2014, 2016 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include -#include -#include -#include -#include - -#include "test.h" - -void xfreopen(const char *path, const char *mode, FILE *stream) -{ - if (freopen(path, mode, stream) == NULL) { - fprintf(samtools_stderr, __FILE__": error reopening %s: %s\n", - path, strerror(errno)); - exit(2); - } -} - -void dump_hdr(const bam_hdr_t* hdr) -{ - fprintf(samtools_stdout, "n_targets: %d\n", hdr->n_targets); - fprintf(samtools_stdout, "ignore_sam_err: %d\n", hdr->ignore_sam_err); - fprintf(samtools_stdout, "l_text: %u\n", hdr->l_text); - fprintf(samtools_stdout, "idx\ttarget_len\ttarget_name:\n"); - int32_t target; - for (target = 0; target < hdr->n_targets; ++target) { - fprintf(samtools_stdout, "%d\t%u\t\"%s\"\n", target, hdr->target_len[target], hdr->target_name[target]); - } - fprintf(samtools_stdout, "text: \"%s\"\n", hdr->text); -} - -// For tests, just return a constant that can be embedded in expected output. -const char *samtools_version(void) -{ - return "x.y.test"; -} diff --git a/samtools/test/test.h b/samtools/test/test.h deleted file mode 100644 index 610b155..0000000 --- a/samtools/test/test.h +++ /dev/null @@ -1,35 +0,0 @@ -/* test/test.h -- test harness utility routines. - - Copyright (C) 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#ifndef TEST_H -#define TEST_H - -#include -#include - -void xfreopen(const char *path, const char *mode, FILE *stream); - -void dump_hdr(const bam_hdr_t* hdr); - -#endif diff --git a/samtools/test/tview/test_get_rg_sample.c b/samtools/test/tview/test_get_rg_sample.c deleted file mode 100644 index 3db9da2..0000000 --- a/samtools/test/tview/test_get_rg_sample.c +++ /dev/null @@ -1,83 +0,0 @@ -/* test/tview/test_get_rg_sample.c -- tview test cases. - - Copyright (C) 2013, 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_tview.c" -#include - -const char header_1[] = -"@HD VN:1.4 SO:undefined\n" -"@SQ SN:dummy\n" -"@RG ID:blah SM:po\n"; - -void setup_test_1(char** header) -{ - *header = strdup(header_1); -} - -khash_t(kh_rg)* run_test_1(char* header) -{ - khash_t(kh_rg)* test_result = get_rg_sample(header,"po"); - return test_result; -} - -bool check_test_1(khash_t(kh_rg)* test_result, char* header) -{ - if (strcmp(header_1, header)) return false; - // test blah is in there - if (kh_get(kh_rg, test_result, "blah") == kh_end(test_result)) - { - return false; - } - return true; -} - -void teardown_1(khash_t(kh_rg)* test_result, char* header) -{ - free(header); -} - -int main(int argc, char** argv) -{ - const int NUM_TESTS = 1; - int success = 0; - int failure = 0; - - char* test_header_1; - setup_test_1(&test_header_1); - khash_t(kh_rg)* test_result_1 = run_test_1(test_header_1); - if (!check_test_1(test_result_1, test_header_1)) - failure++; - else - success++; - teardown_1(test_result_1, test_header_1); - - if (success == NUM_TESTS) { - return 0; - } else { - fprintf(stderr, "%d failures %d successes\n", failure, success); - return 1; - } -} diff --git a/samtools/test/tview/test_get_rg_sample.c.pysam.c b/samtools/test/tview/test_get_rg_sample.c.pysam.c deleted file mode 100644 index 0256876..0000000 --- a/samtools/test/tview/test_get_rg_sample.c.pysam.c +++ /dev/null @@ -1,85 +0,0 @@ -#include "samtools.pysam.h" - -/* test/tview/test_get_rg_sample.c -- tview test cases. - - Copyright (C) 2013, 2014 Genome Research Ltd. - - Author: Martin O. Pollard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. */ - -#include - -#include "../../bam_tview.c" -#include - -const char header_1[] = -"@HD VN:1.4 SO:undefined\n" -"@SQ SN:dummy\n" -"@RG ID:blah SM:po\n"; - -void setup_test_1(char** header) -{ - *header = strdup(header_1); -} - -khash_t(kh_rg)* run_test_1(char* header) -{ - khash_t(kh_rg)* test_result = get_rg_sample(header,"po"); - return test_result; -} - -bool check_test_1(khash_t(kh_rg)* test_result, char* header) -{ - if (strcmp(header_1, header)) return false; - // test blah is in there - if (kh_get(kh_rg, test_result, "blah") == kh_end(test_result)) - { - return false; - } - return true; -} - -void teardown_1(khash_t(kh_rg)* test_result, char* header) -{ - free(header); -} - -int samtools_test_get_rg_sample_main(int argc, char** argv) -{ - const int NUM_TESTS = 1; - int success = 0; - int failure = 0; - - char* test_header_1; - setup_test_1(&test_header_1); - khash_t(kh_rg)* test_result_1 = run_test_1(test_header_1); - if (!check_test_1(test_result_1, test_header_1)) - failure++; - else - success++; - teardown_1(test_result_1, test_header_1); - - if (success == NUM_TESTS) { - return 0; - } else { - fprintf(samtools_stderr, "%d failures %d successes\n", failure, success); - return 1; - } -} From ab19dda958cb2a2bd7f3a59b368f765d4efd8655 Mon Sep 17 00:00:00 2001 From: Kevin Jacobs Date: Mon, 16 Mar 2020 12:19:07 -0400 Subject: [PATCH 23/23] Ensure variant records are unpacked before copying --- pysam/bcftools.py | 24 ------------------------ pysam/libcbcf.pyx | 5 ++++- pysam/samtools.py | 46 ---------------------------------------------- 3 files changed, 4 insertions(+), 71 deletions(-) delete mode 100644 pysam/bcftools.py delete mode 100644 pysam/samtools.py diff --git a/pysam/bcftools.py b/pysam/bcftools.py deleted file mode 100644 index 9f4ce0e..0000000 --- a/pysam/bcftools.py +++ /dev/null @@ -1,24 +0,0 @@ -from pysam.utils import PysamDispatcher - -BCFTOOLS_DISPATCH = [ - "index", - "annotate", - "concat", - "isec", - "merge", - "norm", - "plugin", - "query", - "reheader", - "view", - "call", - "consensus", - "cnv", - "filter", - "gtcheck", - "roh", - "stats"] - -# instantiate bcftools commands as python functions -for cmd in BCFTOOLS_DISPATCH: - globals()[cmd] = PysamDispatcher("bcftools", cmd, None) diff --git a/pysam/libcbcf.pyx b/pysam/libcbcf.pyx index 93bafcb..46056c5 100644 --- a/pysam/libcbcf.pyx +++ b/pysam/libcbcf.pyx @@ -2988,7 +2988,10 @@ cdef class VariantRecord(object): def copy(self): """return a copy of this VariantRecord object""" - return makeVariantRecord(self.header, bcf_dup(self.ptr)) + cdef bcf1_t r = bcf_dup(self.ptr) + if bcf_unpack(r, BCF_UN_ALL) < 0: + raise ValueError('Error unpacking VariantRecord') + return makeVariantRecord(self.header, r) def translate(self, VariantHeader dst_header): if dst_header is None: diff --git a/pysam/samtools.py b/pysam/samtools.py deleted file mode 100644 index da3044d..0000000 --- a/pysam/samtools.py +++ /dev/null @@ -1,46 +0,0 @@ -from pysam.utils import PysamDispatcher - -# samtools command line options to export in python -# -# import is a python reserved word. -SAMTOOLS_DISPATCH = { - # samtools 'documented' commands - "view": ("view", None), - "sort": ("sort", None), - "mpileup": ("mpileup", None), - "depth": ("depth", None), - "faidx": ("faidx", None), - "tview": ("tview", None), - "index": ("index", None), - "idxstats": ("idxstats", None), - "fixmate": ("fixmate", None), - "flagstat": ("flagstat", None), - "calmd": ("calmd", None), - "merge": ("merge", None), - "rmdup": ("rmdup", None), - "reheader": ("reheader", None), - "cat": ("cat", None), - "targetcut": ("targetcut", None), - "phase": ("phase", None), - "samimport": ("import", None), - "bam2fq": ("bam2fq", None), - "dict": ("dict", None), - "addreplacerg": ("addreplacerg", None), - "pad2unpad": ("pad2unpad", None), - "depad": ("pad2unpad", None), - "bedcov": ("bedcov", None), - "bamshuf": ("bamshuf", None), - "collate": ("collate", None), - "stats": ("stats", None), - "fasta": ("fasta", None), - "fastq": ("fastq", None), - "quickcheck": ("quickcheck", None), - "split": ("split", None), -} - -# instantiate samtools commands as python functions -for key, options in SAMTOOLS_DISPATCH.items(): - cmd, parser = options - globals()[key] = PysamDispatcher("samtools", cmd, parser) - -__all__ = list(SAMTOOLS_DISPATCH)